OpenGroupware Coils / News: Recent posts

New Egg [0.1.49rc81] and WMOGAG edition uploaded

A new version and a new edition of WMOGAG for Coils has been uploaded. Packages are available both here and via PyPI.

New features included:
- Reduced number of database connections used; more components close their connections at idle.
- Document Special Processing has been implemented; creation or revision of a document can invoke a workflow process.
- Support for setting EDDP related object properties on a document folder via WebDAV PROPSET.
- Document MIME-Type rewriting.
- EDDP PDF page bursting feature has been refactored. Several potential bugs fixed and the code is much less scary.
- task::get-todo-list now matches the return results of Legacy regarding inclusion of completed tasks
- OIE's sendMailAction now allows for deferred sending, so multiple attachments can be sent with a message.
- BLOBManager correctly handles path-already-exist instances that can occur when the server is busy processing documents.

Posted by Adam Tauno Williams 2014-04-22 Labels: release

WMOGAG 0.1.49rc69 Uploaded

A new edition of WMOGAG Coils has been uploaded to files. This edition, in addition to many other fixes and additions, provides in-depth documentation of event driven documentation features as well as CUPS integration. Using this edition you can easily:
- Automatically assign uploaded documents to collections.
- Automatically unassign modified documents from collections.
- Automatically file copies of created or modified documents.
- Automatically page-burst multiple page PDF documents into multiple single page documents.
- Print directly from clients into OpenGroupware folders, creating new documents.

Posted by Adam Tauno Williams 2013-11-29 Labels: wmogag

OpenGroupware Coils 0.1.49rc33 Uploaded

Release date: 01-April-2013

  • A documents extension and abstract values are exposes as eponymous WebDAV properties in the Coils' namespace.
  • A document's abstract can be set/updated via WebDAV PROPPATCH
  • ENHANCEMENT: Allow mimetype of getObjectPropertyAction to be set via parameter, and allow for defaults if the property does not exist.
  • Several additional label substitution values: INITDATE, WEEKAGO, FORTNIGHTAGO, and MONTHAGO.
  • New sshDeleteFiles OIE action; allows deletion of remote via via SFTP.
  • [AttachFS] support for update of document's by objectId. A full set of [AttachFS] examples is now available in the project wiki.
  • FLAGS implemented on the Omphalos representation of [Project] entities.
  • Omphalos [Project] representations include parentProjectName and parentProjectNumber attribues if the Project has a parent. This facilitates the create of client interfaces representing project hierarchies.
  • At a detail level of 1,024 Omphalos representations of a Project includes a childProjectObjectIds attribute which is an array of child project object ids.
  • A parent / children relation has been added to the SQLAlchemy ORM for Project entities.
  • System Administrators and Workflow Administrators can now delete any Route entity regardless of ownership or permissions.
  • Provisioning scheme for resource objects in Project 7,000 is now complete.
  • Wiki support for serving JavaScript resources.
  • Wiki now provides a CSS resource for styling, this is automatically created in Project 7,000 by the coils-fix-provision7000 tool.
  • Wiki Query Tables now return more than the default 150 search results.
  • A 'root' Wiki document is now provisioned in Project 7,0000 by the coils-fix-provision7000 tool.
  • Wiki supports entity relative links "." and ".." for project and folder links.
  • Markdown "TOC" (Table of Contents) extensions enabled in the Wiki bundle.
  • Support for document deletion completed in the zOGI API.
  • A user-agent has been defined for the WebDAV client cadaver. Includes work-around for escaped/unescaped hrefs issue.
  • assignment entities may now be putObject'd and deleteObject'd in the zOGI API
  • team::delete Logic command now supports deletion by objectId. Only system administrators may delete teams.
  • Team entitues may now be created via zOGI putObject.
  • DELETE support implemented in [AttachFS]
  • Implementation of the HTTP redirector protocol at /redirect or /r. Redirector map is provisioned in Project 7,0000 by coils-fix-provision7000.
  • Document project id, company id, and folder id are now exposed as WebDAV properties.
  • New OIE actions setObjectPropertyAction and getObjectPropertyAction.
  • The object property "{}disableStateVersioning" on an OIE process will disable state versioning for that process. This discards some, rarely useful, auditing information in exchange for a reductuion in I/O.
  • BUGFIX in OIE xPathAction relating to XML having no support for default namespaces in XPath statements.
  • OIE Processes now inherit copies of a Route's object properties upon creation.
  • BUGFIX in OIE ldapSearchAction which could cause large LDAP search results to be incorrected paged, and thus truncated.
  • BUGFIX in coils-fix-clean-message-folder tool where the tool failed on some versions of Python.
  • BUGFIX when using a divisor to read a floating-point value voa SimpleFixedFieldFormat
  • [SMTP listener](SMTPListener] can now deliver content to [Project] folders.
  • OIE xlsToXmlAction now renders all element names in lower case.
Posted by Adam Tauno Williams 2013-04-01

OpenGroupware Coils 0.1.49rc27 Uploaded to SF & PyPI

A new package for OpenGroupware Coils (0.1.49rc27) has been uploaded to SourceForge and PyPI.


  • WebDAV support for Location header disabled for GNOME's Evolution. This corrects issues with updating contacts.
  • Important fix regarding XSLT transforms and Unicode code-pages.
  • Omphalos XML rendering will generate an administrative notice if an entity cannot be translated to the output code page.
  • Actions can now declare the Unicode code-page of their results.
  • BUGFIX in document access manager for dealing with a NULL permissions string.
  • New listCompaniesAction OIE renders an XML document of all enterprises in a specified security context and their related contacts; user must possess the requested security context and have the Data Manager role (administrators may perform the operation for any security context). OIE action performs the document generation using a generator on the database connection to minize resource utilization.
  • New OGO_DATA_MANAGER_ROLE role. This role allows some operations, such as server-wide sync or bulk data import/export to be restricted to a subset of users, in addition to object permissions. Users belonging to the team which is named by the OGoDataManagersTeam server default will posess this role.
  • BUGFIX missing foreign key between document and document versions corrected in the SQLAlchemy data model. This resulted in a significant performance improvement for some document operations.
Posted by Adam Tauno Williams 2013-02-27 Labels: release

OpenGroupware Coils 0.1.49rc25 Uploaded to PyPI & SF


  • Support for specification of target tableName in sqlInsertAction via parameter which overrides tableName provided in the ResultSet element of the input message. Label substitution support for this value.
  • Rendering of records read via a SimpleFixedFieldFormat to StandardXML is now performed using ElementFlow.
  • BUGFIX: BLOBManager now correctly sets the max core size of scratch files again.
  • Archived tasks are not included by default in the _TASK keyof the Omphalos representation of a project. Set the server default "OmphalosIncludeArchivedProjectTasks" to "YES" to revert to the previous behavior of including archived tasks.
  • Documents can now be uploaded using AttachFS via a Task.
  • Support for INBOXing documents uploaded to Projects via a related entity has been implemented.
  • BUGFIX: Content-Length header of a 201 response from AttachFS is always zero.
  • Every task created is now assigned a UID if the client did not provide one.
  • Added get_anchor API call to zOGI; this allows retrieval of collection CTAG values via zOGI.
  • BUGFIX: The ".ctag" REST key on a Teams collection was not available.
  • The coils-fix-nocomplete-tasks tool now includes archived tasks.
Posted by Adam Tauno Williams 2013-02-20 Labels: release

Authentication Documentation

A wiki page has been created for documenting the configuration of authentication with OpenGroupware Coils.

Posted by Adam Tauno Williams 2013-02-14

Development Update, 2013-02-12

Some new tickets have been added to the dangling-fruit, aka "these should be
easy", list

  • Egg version has been bumped to 0.1.49rc24

Changes have been merged into default branch

  • AttachFS allows put'ing a document to a Task entity.

    Where OGo#13871405 is a Task this will create/update the file named 
    "cert.pem" in the root folder of the project this task is assigned
    to. It will also, automatically, generate an object link from the
    task to this new or updated file.
    curl -u adam -T cacert.pem \
    If the Task is not assigned to a project an exception will be raised.
    For storing arbitrary content on arbitrary tasks use attachment mode.... [read more](/p/coils/news/2013/02/development-update-2013-02-12/)
Posted by Adam Tauno Williams 2013-02-12

Release 0.1.49rc19

Whats new

  • The cursor factory method OIE SQL connection objects now accepts parameters and passed them on to the underlying DBAPI driver.
  • AttachFS does not reveal the type of an inaccessible entity if that entity is requested by id.
  • New SSHGetFilesIntoZipFileAction OIE action that requests a list of files from a host via SFTP and stashes those files into a ZIP archive.
  • New AppendToZIPFileAction OIE action that stashes a message as a file into a ZIP archive.
  • New messageToDocumentAction OIE action which stores the contents of a workflow message into a project document.
  • New coils-fix-unuided-contacts tool to generate CardDAV UID values for any Contant entity without a UID.
  • New coils-fix-clean-process tool which cleans up any unreferenced process markup from the process folder.
  • New coils-fix-clean-shelve-folder which cleans up any unreferenced shelves from the shelve folder.
  • Logic command process::get can retrieve processes by their GUID identity.
  • Table and footnote extensions enabled in the Wiki protocol bundle.
  • A ".ps" request to the /dav/Workflow folder now presents cancelled processes (status=X) with a state of "cancelled". [tickets:#107]
  • Logic command account::new supports setting a template user id and enforces requirement for a login string.
Posted by Adam Tauno Williams 2013-01-16

Release 0.1.49rc18

Release date: 07-January-2013

  • Tweak to the binding of vCard TEL elements to telephone types
  • Return a 404 (No Such Path) rather than a 500 (Generic) response for a request to AttachFS for unavailable content.
Posted by Adam Tauno Williams 2013-01-07

Release 0.1.49rc17

Release date: 02-January-2013

  • Significant performance improvement in authenticator.
  • Wiki protocol bundle is now nearly complete
  • Pages are correctly encapsulated in a HTML body / DOCTYPE.
  • Wiki extensions use an entity cache.
  • "project_id" added to Task entity keymap
  • Added the coils-fix-delete-emtpy-enterprise-projects tool.
  • Added the coils-fix-clean-message-folder tool.
  • coils-dependency-check now checks for the availability of markdown and argparse modules
Posted by Adam Tauno Williams 2013-01-07

Project Roadmap Page

A new page has been added to the developer wiki for creating the project roadmap.

Posted by Adam Tauno Williams 2012-11-20

Client List Page

Ahead of preparing for the 0.1.50 release a wiki page is under development for recording clients that been testes, need to be tested, known client bugs, etc... WebDAV (and CardDAV/CalDAV clients) vary greatly in quality so real testing is always necessary. Notes regarding per-client testing will be posted to these wiki pages.

Posted by Adam Tauno Williams 2012-11-20

Using the workflow scheduler

A new article on using the workflow scheduler has been published on the BLOG.

Posted by Adam Tauno Williams 2012-11-09

OpenGroupware Coils 0.1.49rc4 Released.

OpenGroupware Coils 0.1.49rc4 has been uploaded to SourceForge and PyPI.

This release fixes an important bug found in 0.1.49rc3 regarding OIE Tables. If you use OIE look-up tables with 0.1.49rc3 you should update to this RC.

Posted by Adam Tauno Williams 2012-11-09

OpenGroupware Coils 0.1.49rc3 Released.

OpenGroupware Coils 0.1.49rc3 has been uploaded to SourceForge and PyPI.

Changes since 0.1.49rc0

  • Built-in label substitutions supported in the input values of XATTR attributes on scheduler entries.
    • For example you can specify an XATTR value of "$TODAY;" and when the process is created by the scheduler the value of that XATTR will be replaced with the current date.
  • If the component cannot bind to the AMQ bus a much more informative error message is generated.
    • Modules can be loaded or banned using environment variables.
    • COILS_EXTRA_MODULES : A CSV value nameing additional modules to be loaded and scanned for Logic operations and service components.
    • COILS_BANNED_MODULES : A CSV value nameing additional modules which should not be loaded.
  • Starting of service components can be banned using the environment variable COILS_BANNED_SERVICES.
  • The developmnt tool coils-ping-service has been added to the distribution package. This tool allows adminstrators to test if a component is available on the AMQ bus.
  • Context identity UUID and packet identity UUID are now hex encoded UUID values; these provide the same level of identity in a shorter string.
  • Workflow scheduler entries can be created via HTTP PUT.
  • now provides a utility function to parse date & datetime values into UTC datetimes.
    • Use
  • For Contact and Enterprise entity decoding from Omphalos supports in-line [implicit] company values.
    • If a value dictionary contains a key that corresponds to a defined company value, such as "email1", the value will be automatically mapped to the entities "email1" company value.
  • All components operate in UTC, regardless of the system's timezone.
  • Workflow scheduler now supports specifying the priority of processes to be created from a scheduler entry.
  • Priority of a created process is limited by the current context.
    • A higher priority process will be run before a lower priority process. With this change any use can create a proces with a process of less than 250 (mostly proceses default to a priority of 201 if no priority is specified). If the user has either the workflow administrator or system adminstrator role a process priorities may be as high as 499. If a context attempts to create a process with priority beyond its limit the process will be created with the highest priority available to that context.
  • Additional built-in label substitution values:
    • TODAY - The current date, functionally this is equivalent to the existing $DATE; built-in but is derived from a date value rather than from a date-time.
    • YESTERDAY - The date of the previous day.
    • TOMORROW - The date of the following day.
    • All built-in label substitution values are now covered by unit tests.
  • Completed implementation of the OIE translateAction which allows values to be used to perform look-ups in OIE tables and storing the result into a workflow message.
  • Table lookups can cache the results of multi-input value look-ups.... read more
Posted by Adam Tauno Williams 2012-11-08

OpenGroupare Coils 0.1.48

After a long series of RC releases 0.1.48 is here. 0.1.48 provides a significant improvement in feature completeness and stability. The list of changes is simply to extensive to enumerate, and most are not immediately visible. Highlights are:

  • SQLAlchemy version increased to 0.7.4
  • OIE Tables and Formats can now be deleted via WebDAV
  • OIE now provides a rmlToPDFAction if the z3c.rml module is available; this allows very complex PDFs to be generated from RML (an XML dialect) - so you can transform you data into documents using XSLT stylesheets.
  • Support for None/Null values in XML-RPC responses can be enabled based on user-agent.
  • SQL Operation Filtering
  • Vista support of a "vacuum" event to clean out expired search vectors.
  • YAML documents edited via WebDAV provide a more consistent format.
  • Support of "ps" operation via zOGI (used by snurtle)
  • Reliability of "associative mode" for simple clients improved and support for associative mode via Legacy proxy added.... read more
Posted by Adam Tauno Williams 2012-10-16 Labels: 0.1.48

OpenGroupware 0.1.47rc61

OpenGroupware Coils 0.1.47rc61 has been uploaded to SourceForge and to PyPI.

  • Code has been restructured to be more in keeping with Python 'standard form'.
  • OIE now provides a rmlToPDFAction if the z3c.rml module is available; this allows very complex PDFs to be generated from RML (an XML dialect) - so you can transform you data into documents using XSLT stylesheets.
  • Makefile deployment has been improved. "make run" should no longer reset your developer instance to default settings [removing your setting customizations].
  • OIE Tables and Formats can now be deleted via WebDAV
  • Omphalos decoding is more durable; it will recognize that it needs to decode tuples like it does lists.
  • Omphalos associativeLists [for associative list clients] feature will more reliably flatten Omphalos data from associative list clients.
  • Search commands will always enable the use of labels on queries, so that SQLalchemy will be less whiny.
  • Support for None/Null values in XML-RPC responses can be enabled based on user-agent.
  • OIE process manager now stores the name of the context [the login value] in the process data structure. This allows clients like snurtle to provide a more meaningful "ps" operation.
  • XML representation of a long is now supported. longs are integers.
  • Error messages in OIE SSH actions improved.
  • coils-vista-index provides a "vacuum" operation to purge the Vista index of entries for deleted or expired objects.
  • vista::search supports an include_workflow parameter which will add workflow related results to the search results [primarily routes].
  • ORM can now deal with task actions that have no history info [comment] record.
  • Numerous other bug fixes. ... read more
Posted by Adam Tauno Williams 2012-10-12 Labels: upload rc-release

OpenGroupware 0.1.47rc35

A new release candidate has been uploaded to SourceForge and PyPI.

Includes improvements to the Vista indexing of contacts and enterprises - most notably a fully numeric version of phone numbers is always indexed, and the phone numbers, city, postal code, and names of a contact's enterprises, and an enterprise's contacts, are also indexed in relation to the contact/enterprise.

The new coils-test-sql command line tool provides and easy way for workflow managers to test SQL connections defined via the OIESQLSources default; much like the way coils-test-dsa can be used to test OIELDAPSources.

Posted by Adam Tauno Williams 2012-08-30 Labels: release-candidate upload

OpenGroupware 0.1.47rc18

OpenGroupware 0.1.47rc18 package has been uploaded to SourceForge and to PyPI.


There is a schema change to "lock" table required for this upgrade:


The data field of the lock table is now a PickeledData type so we can store whatever the client sends as the D:owner attribute. The addition of the operations table facilitates the server supporting more sophisticated lock types beyond WebDAV's "write" lock.... read more

Posted by Adam Tauno Williams 2012-07-19

Project upgraded on SourceForge

The project on SourceForge has been upgraded. This means that the developer repository URLs have changed! So checkout from the new repos before doing any more commits.

Posted by Adam Tauno Williams 2012-05-14

Association Changes

Address, CompanyValue, and Telephone relations are now SQLAlchemy MappedCollections; this significantly simplifies processing of the complex Contact and Enterprise entities. Omphalos, Logic, and VCard processing should now all be updated to the new form of associations. All Note relations are now also handled in the same manner and note handling has been re-implemented.

Posted by Adam Tauno Williams 2012-05-14

SQLAlchemy Required Version Increased

The required version of SQLAlchemy for the default branch is now 0.7.4. The heavier use of association proxies introduced in recent commits makes this necessary; they remote a fair amount of code and even eliminate some Logic commands entirely.

The default branch is now tagged as 0.1.47rc3. The release of 0.1.47 is expected this week-end.

Posted by Adam Tauno Williams 2012-05-11

0.1.47 Coming...

A new release 0.1.47 will be coming soon. The biggest change in this release is the improved workflow scheduler. The APScheduler component has been upgraded to the 2.x component and now persists jobs in the backend database. The scheduler also supports using attachments for scheduled process input and generates more informative administrative notices in case of a problem. Numerous other bug fixes and better ORM performance as the code continues to exploit more of the power proved by the underlying SQLAlchemy module.

Posted by Adam Tauno Williams 2012-03-31

0.1.46 Released

OpenGroupware Coils 0.1.46 uploaded to PyPI and SourceForge. New support for extended XSLT, smarter user-agent management, and improved document management. Several new OIE actions for integration with CIFS and FTP file services.

Posted by Adam Tauno Williams 2012-01-26

Introducing Vista Search

In the latest 0.1.45rc is the new Vista search module. Read about it at This is fast full-text search of your groupware entities.

Posted by Adam Tauno Williams 2012-01-06