Skip to main content

Cookie control banner

Necessary Cookies
These cookies are necessary for this website to function correctly. They are set when you perform certain actions on the site, such as creating an account, logging in, changing your privacy preferences or submitting a form. You can block these cookies in your browser, but this will stop parts of the site from working properly.
Functional Cookies
These cookies allow the website to provide extra functionality and more personalised experiences. They may be set by us or by third party providers whose services we have added to our pages. If you choose not to allow these cookies, these services may not work correctly.
Analytical Cookies
These cookies record anonymous data on how visitors use our website to help us monitor how well our website works. This data includes how many people have looked at specific pages, how long visitors stay on the site, and what devices they use. We use this data to identify changes that we could make to improve your experience and make our website more efficient.
Marketing Cookies
We set some cookies so you are shown more relevant marketing content. These include cookies from third-party advertising networks to show you different adverts on their services if you have previously visited our site. If you choose not to allow these cookies, you may experience less relevant advertising on other sites.
Browse Documentation
HTTP - Management

Workflow definition overview

Created by c.neale, last modified by zengenti on 11 Oct 2021

A workflow definition defines the life cycle for entries. Every content type is assigned a workflow. All entries created for that content type will then follow the life cycle defined in that workflow definition.

Contensis supports two predefined workflow definitions contensisEntryBasic and contensisEntryApproval as outlined in our key concept article. These cannot be modified, but additional custom workflows can be defined.

A workflow definition consists of a collection of states which an entry assigned to that workflow may have e.g. draft, awaitingApproval, declined. Each state consists of a collection of events, which define the allowed transitions from that state to other (or the same) states. The events are grouped into event groups, which group functionally similar transitions between states e.g. save, approveDecline, submitRevoke.

To publish an entry with a custom workflow, one or more events on one or more states must transition to the sysWorkflow state, which is a system state. Once the entry is in this state, it will either be published immediately, or if a publishing schedule is set for the entry, scheduled for publishing.

Custom workflows are project-specific, each one only applies to one project, not all projects in a Contensis instance.


NameData typeData formatDescription
idstringA unique workflow definition identifier.
uuidstringuuidThe workflow definition identifier as a 128 bit GUID.
projectIdstringThe project identifier, e.g. "movieDb". Found in the project overview screen of the management console.
nameobjectlocalized valueThe friendly name given to the workflow definition.
descriptionobjectlocalized valueThe description text given to the workflow definition.
statesobject[...]A collection of states that an entry with the workflow definition may have.
eventGroupobject[...]event groupA collection of event groups for events within the states.
isSystembooleanIndicates whether the workflow definition is predefined and read only (true) or a custom definition (false).
versionobjectversionVersion information about the workflow definition.


This example shows a custom approval workflow definition.

{ "uuid": "e7d8611a-88d6-44b3-8910-c894f1d6a42a", "id": "CustomEntryApproval", "projectId": "website", "name": { "en-GB": "Custom Approval workflow" }, "description": { "en-GB": "A custom workflow for entries with approval" }, "states": [ { "id": "draft", "name": { "en-GB": "Draft" }, "events": [ { "id": "submit", "name": { "en-GB": "Send for approval" }, "auditText": { "en-GB": "Sent for approval" }, "description": { "en-GB": "Send the entry for approval" }, "transitionTo": "awaitingApproval", "color": "green", "groupId": "submitRevoke", "uiAction": "navigateToEntryListing", "validate": true, "parameters": [ { "id": "message", "name": { "en-GB": "Add an optional message for the approver" }, "dataType": "string", "dataFormat": null, "description": { "en-GB": "The message included with the entry submission" }, "default": null, "validations": {}, "editor": { "id": "multiline", "instructions": { "en-GB": "Optionally include a message to let an approver understand your changes" }, "properties": null } } ] } ], "color": "cobalt", "uiEditorView": "default" }, { "id": "awaitingApproval", "name": { "en-GB": "Awaiting approval" }, "events": [ { "id": "revoke", "name": { "en-GB": "Revoke and edit" }, "auditText": { "en-GB": "Revoked" }, "description": { "en-GB": "Revoke the entry submission" }, "transitionTo": "draft", "color": "white", "groupId": "submitRevoke", "uiAction": "none", "validate": false, "parameters": [] }, { "id": "decline", "name": { "en-GB": "Decline" }, "auditText": { "en-GB": "Declined" }, "description": { "en-GB": "Decline the entry for approval" }, "transitionTo": "declined", "color": "red", "groupId": "approveDecline", "uiAction": "navigateToEntryListing", "validate": false, "parameters": [ { "id": "message", "name": { "en-GB": "Add a message to explain to the author why this content is being declined" }, "dataType": "string", "dataFormat": null, "description": { "en-GB": "The decline reason" }, "default": null, "validations": { "required": { "message": { "en-GB": "The decline reason is required" } } }, "editor": { "id": "multiline", "instructions": { "en-GB": "Include a message to let an approver know your changes" }, "properties": null } } ] }, { "id": "approve", "name": { "en-GB": "Approve" }, "auditText": { "en-GB": "Approved" }, "description": { "en-GB": "Approve the entry changes for publishing" }, "transitionTo": "sysWorkflow", "color": "green", "groupId": "approveDecline", "uiAction": "navigateToEntryListing", "validate": false, "parameters": [], "invokableWhen": [ { "field": "isScheduledForPublish()", "equalTo": false } ] }, { "id": "scheduledApprove", "name": { "en-GB": "Approve and schedule" }, "auditText": { "en-GB": "Approved and scheduled" }, "description": { "en-GB": "Approve the entry changes for publishing" }, "transitionTo": "sysWorkflow", "color": "green", "groupId": "approveDecline", "uiAction": "navigateToEntryListing", "validate": false, "parameters": [], "invokableWhen": [ { "field": "isScheduledForPublish()", "equalTo": true } ] } ], "color": "yellow", "uiEditorView": "previousPublishedVersionCompare", "allowUpdates": false }, { "id": "declined", "name": { "en-GB": "Declined" }, "events": [ { "id": "submit", "name": { "en-GB": "Re-submit" }, "auditText": { "en-GB": "Re-submitted for approval" }, "description": { "en-GB": "Re-submit the entry for approval" }, "transitionTo": "awaitingApproval", "color": "green", "groupId": "submitRevoke", "uiAction": "navigateToEntryListing", "validate": true, "parameters": [ { "id": "message", "name": { "en-GB": "Message" }, "dataType": "string", "dataFormat": null, "description": { "en-GB": "The message included with the entry re-submission" }, "default": null, "validations": {}, "editor": { "id": "multiline", "instructions": { "en-GB": "Include a message to let an approver understand the reasons for the re-submisson" }, "properties": null } } ] } ], "color": "red", "uiEditorView": "default" } ], "eventGroups": [ { "id": "submitRevoke", "name": { "en-GB": "Submit / revoke" } }, { "id": "approveDecline", "name": { "en-GB": "Approve / decline" } } ], "isSystem": true, "version": { "createdBy": "", "created": "0001-01-01T00:00:00", "modifiedBy": "", "modified": "0001-01-01T00:00:00", "publishedBy": null, "published": null, "versionNo": "0.1" } }