Pular para o conteúdo principal

Transitions

What is a Transition?

A transition defines a path that moves a document from one stage to another within the same workflow. For example, "Submit for Review" might move a document from Draft to In Review.

Transitions are the core mechanism for controlling how and when documents progress through their lifecycle.


Properties

PropertyDescription
NameThe display name shown to users (e.g. "Approve", "Reject").
From StageThe stage the document must be in to execute this transition.
To StageThe stage the document will move to after execution.
OrderDisplay order in the UI when multiple transitions are available.
IconAn optional icon displayed next to the transition button.
Is DefaultWhether this is the default transition (pre-selected in the UI).
Request ConfirmationIf enabled, shows a confirmation dialog before executing.
Message TextCustom message shown in the confirmation dialog.
Comment RequiredThe user must enter a comment to execute the transition.
Hours RequiredThe user must log hours before executing the transition.
File Upload RequiredThe user must upload a file before executing the transition.
File Upload FolderThe target folder for required file uploads.
User Must Be In TeamOnly users who are in the document's team can execute the transition.
Must Send NotificationA notification is sent when the transition executes.

Transition Roles

Transitions can be restricted by security role. Only users who have one of the allowed roles can execute the transition.

PropertyDescription
RoleThe security role allowed to execute the transition.
Check LimitsIf enabled, the role is only valid within a value range.
Start Value / End ValueThe value range for limit-based restrictions (e.g. approval amount limits).
Example

You can set up a transition "Approve" that is only available to users with the "Manager" role, and a separate "Approve (Senior)" transition for amounts above €50,000 that requires the "Director" role with appropriate limit values.


Transition Motives

A motive is a reason the user must select when executing a transition. Motives are typically used for rejections or cancellations to capture structured feedback.

PropertyDescription
DescriptionThe motive text shown to the user (e.g. "Budget exceeded", "Client request").
ActiveWhether this motive is currently available for selection.

Transition Custom Actions

Custom actions are scripts or plugins that execute when a transition fires. They extend the workflow with custom business logic beyond the built-in action types.


Validation Query

A transition can have a validation query that checks whether the transition is allowed to proceed. The query receives the current document's ID and must return 1 if the transition can be executed.

This is useful for enforcing business rules that go beyond simple role and stage checks.

ParameterTypeDescription
CurrentDocumentIdUniqueidentifierThe ID of the document attempting the transition.

The query should return 1 if valid. If invalid, it can return a message explaining why the transition was blocked.

observação

Configure the validation query in the Validate Query Name field of the transition.


Transition Actions

Actions are automated operations that fire when a transition executes. Each action has a type that determines what it does. A transition can have multiple actions that run in sequence.

How to Use

When configuring a transition action:

  1. Select the Action Type from the list below
  2. Some actions require an Options value (typically a query name)
  3. The action fires automatically when the transition executes

Data-Source Actions

These actions execute a query and use the results to perform operations. Configure them by setting the Options field to the name of your query.

Block / Unblock Documents

Blocks or unblocks a list of documents returned by a query.

Action Types: BlockDocuments, UnblockDocuments, Block, Unblock, BlockChildren, UnblockChildren

Query ParameterTypeDescription
CurrentDocumentIdUniqueidentifierThe ID of the document executing the transition.

Change Documents Stage

Changes the stage of documents returned by a query to a specified target stage.

Action Types: ChangeDocumentsStage, ChangeChildTaskStage, ChangeJobsStage, ChangeProjectStage, ChangeProjectsStage, ChangeEstimatesStage, ChangePurchaseOrderStage, ChangeBillStage, ChangeRelatedEstimateStage, SetChildrenStage, SetParentStage, UpdateParentStage

The query must return these columns:

ColumnTypeDescription
DocumentTypeNameStringThe document type (e.g. "Deliverable", "Project").
DocumentIdUniqueidentifierThe ID of the document to update.
WorkflowStageIdUniqueidentifierThe target stage ID.
SQL Example — Cancel child deliverables when parent is cancelled
SELECT 'Deliverable' AS DocumentTypeName,
sd.Oid AS DocumentId,
ws.Oid AS WorkflowStageId
FROM Deliverable d
JOIN WorkflowState dws ON dws.Oid = d.WorkflowState
JOIN Deliverable sd ON sd.Parent = d.Oid
JOIN WorkflowState sdws ON sdws.Oid = sd.WorkflowState
JOIN Document doc ON doc.TypeName = 'Skill.Module.BusinessObjects.Deliverable'
JOIN WorkflowState ws ON ws.Document = doc.Oid AND ws.Name = 'Cancelled'
WHERE d.Oid = @CurrentDocumentId
AND sdws.Name NOT IN ('Delivered', 'Completed', 'Cancelled')

Assign Team

Assigns users to teams on the current document based on query results.

Action Types: AssignTeam, Assign, RequiredAssign, AssignDepartmentTeam, AssignJobTypeTeam, AssignCreatedByTeam, AssignCommercialClientProjectManagerTeam, AssignTeamFromClientMarkets, AssignTeamFromClientBrands, AssignAdminResponsible

Query ParameterTypeRequiredDescription
CurrentDocumentIdUniqueidentifierYesThe document executing the transition.
CurrentUserIdUniqueidentifierNoThe user triggering the transition.

The query must return:

ColumnTypeDescription
UserIdUniqueidentifierThe user to assign.
TeamIdUniqueidentifierThe assignment type (team) to place the user in.

All Action Types Reference

Below is the complete list of action types available for transitions, organized by category.

Options Conventions
  • Multiple values are separated by semicolons (;)
  • Stage names, team names, and query names are case-sensitive
  • A dash (—) in the Options column means no configuration is needed

Stage & Status Changes

Action TypeDescriptionOptions
CompleteStateMarks the current state as complete.
ChangeDependentTaskStatusToChanges the status of dependent tasks.StageName — target stage name. Defaults to Ready if empty.
ChangeChildTaskStageChanges the stage of child tasks.— (uses the transition's target stage)
ChangeJobsStageChanges the stage of related jobs.ToStageName;IgnoreStage1;IgnoreStage2;... — first value is the target stage; remaining values are stages to skip. Required.
ChangeProjectStageChanges the stage of the parent project.StageName — target project stage.
ChangeProjectsStageChanges the stage of multiple projects.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage.
ChangeEstimatesStageChanges the stage of related estimates.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage.
ChangePurchaseOrderStageChanges the stage of related purchase orders.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage.
ChangeBillStageChanges the stage of related bills.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage. Required.
UpdateParentStageUpdates the parent document's stage.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage. Required.
ChildrenStageInValidation only — blocks the transition if any child is NOT in one of the listed stages.StageName1;StageName2;... — allowed stage names. Required.
SetChildrenStageSets all children to a specific stage.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage. Required.
SetParentStageSets the parent document to a specific stage.ToStageName;IgnoreStage1;IgnoreStage2;... — same pattern as ChangeJobsStage.
ChangeDocumentsStageChanges the stage of documents returned by a query.QueryName1;QueryName2;... — semicolon-separated query names. Each query must return DocumentTypeName, DocumentId, ToWorkflowStageName.
ChangeRelatedEstimateStageChanges the stage of the related estimate.ExternalId — the ExternalId on the stage transition to match.
ChangeRelatedQuoteStatusChanges the status of related quotes.true or falsetrue approves, false disapproves quote items.
ChangeEstimateExternalStatusToUpdates the external status of an estimate.StatusValue — the external status value to set.
ChangeDeliverableExternalStatusToUpdates the external status of a deliverable.StatusValue — the external status value to set.
ChangeDeliverableOrEstimateExternalStatusToUpdates the external status of a deliverable or estimate.StatusValue — the external status value to set.

Team & Assignment

Action TypeDescriptionOptions
AssignAssigns users to teams (handled in the UI).
RequiredAssignValidates that team assignments exist — blocks the transition if not.
AssignAdminResponsibleAssigns the admin responsible user.TeamName1;TeamName2;... — teams to assign admin responsibles into.
UpdateProjectAssignmentsSynchronizes project team assignments.
CopyTeamFromRequestCopies the team from the linked request.TeamName1;TeamName2;... — team names to copy. Required.
CopyTeamFromParentCopies the team from the parent document.TeamName1;TeamName2;... — team names to copy. Required.
AssignTeamFromClientMarketsAssigns teams based on client market configuration.ColumnName;TeamName1;TeamName2;... — first value is the column name on the client markets table; remaining are team names. Required.
CopyFromTeamToTeamCopies members from one team to another.FromTeam;ToTeam;RemoveFrom;RemoveTo — first two required; RemoveFrom / RemoveTo are optional booleans (true/false).
MoveFromTeamToTeamMoves members from one team to another.FromTeam;ToTeam — both required.
RemoveTeamRemoves all members from a team.TeamName — the team to clear. Required.
CopyTeamToFinancialCreatedDocumentsCopies the team to newly created financial documents.FromTeam;ToTeam — used as companion to Invoice/InvoiceJob.
CopyTeamToCreatedPurchaseOrdersCopies the team to newly created purchase orders.FromTeam;ToTeam — used as companion to Buy.
AssignTeamFromClientBrandsAssigns teams based on client brand configuration.ColumnName;TeamName1;TeamName2;... — same pattern as AssignTeamFromClientMarkets. Required.
AssignTeamAssigns users to teams via query (data-source action).QueryName1;QueryName2;... — queries must return UserId, TeamId.
CopyFromTeamToTeamByQueryCopies team members using a query to determine source/target.QueryName;FromTeam;ToTeam;RemoveFrom;RemoveTo — QueryName and FromTeam required; ToTeam, RemoveFrom (bool), RemoveTo (bool) optional.
AssignDepartmentTeamAuto-assigns the department's default team.QueryName;TeamName1;TeamName2;... — query returning UserId, TeamId, plus optional team names.
AssignJobTypeTeamAuto-assigns the job type's default team.QueryName;TeamName1;TeamName2;... — same as AssignDepartmentTeam.
AssignCreatedByTeamAssigns the document creator to a team.QueryName;TeamName1;TeamName2;... — same as AssignDepartmentTeam.
AssignCommercialClientProjectManagerTeamAssigns the commercial client's project manager.QueryName;TeamName1;TeamName2;... — same as AssignDepartmentTeam.

Block & Unblock

Action TypeDescriptionOptions
BlockBlocks the current document.type1;type2;... — block types: document, team, workflow, comment. Defaults to document if empty.
UnblockUnblocks the current document.type1;type2;... — same as Block.
BlockChildrenBlocks all child documents.type1;type2;... — same as Block.
UnblockChildrenUnblocks all child documents.type1;type2;... — same as Block.
BlockDocumentsBlocks documents returned by a query.QueryName;type1;type2;... — first value is the query name; remaining are block types. Defaults to document if no types specified.
UnblockDocumentsUnblocks documents returned by a query.QueryName;type1;type2;... — same as BlockDocuments.

Estimates & Financial

Action TypeDescriptionOptions
CreateEstimateCreates an estimate from the current document.
BuyTriggers a buy/purchase operation.CancelWorkflowStageName — stage name for cancelling existing POs before re-purchasing. Optional.
InvoiceTriggers an invoice generation.
InvoiceJobGenerates an invoice for a specific job.CanInvoiceQueryName;InvoiceSeveral — optional query name to validate; InvoiceSeveral is a boolean to allow multiple invoices.
CreditCreates a credit note.
ApproveItemsApproves estimate line items.
DisapproveItemsRejects (disapproves) estimate line items.
SynchronizeEstimateStageAndHistorySyncs the estimate stage with its history.
CreateEstimateVersionCreates a new version of the estimate.
CloseProjectEstimatesCloses all estimates under the project.
EstimateMergeMerges multiple estimates.DeleteOnCancel;IgnoreStage1;... — first element can be DeleteOnCancel (case-insensitive) or a stage name; remaining are stages to ignore. Optional.
EstimateUnmergeReverses an estimate merge.
CreateEstimatesFromRequestCreates estimates from a request document.QueryName;UpdateValuesQueryName — first = query name (defaults to CreateEstimatesFromRequest); second = optional query for updating field values.
ExceedsBudgetChecks if the document exceeds the budget.QueryName;RoleName — query returning a boolean + error message; optional role name for permission bypass.
UpdateRealPlannedCostRecalculates real vs. planned costs.

Planned Hours & Workloads

Action TypeDescriptionOptions
CreatePlannedHoursFromEstimateItemDetailsCreates planned hours from estimate items.
DeletePlannedHoursFromEstimateItemDetailsRemoves planned hours from estimate items.
CreatePlannedCostsFromEstimateItemDetailsCreates planned costs from estimate items.
DeletePlannedCostsFromEstimateItemDetailsRemoves planned costs from estimate items.
CreatePlannedDeliverablesCreates planned deliverables from the estimate.JobSubjectAs — controls the job subject format. Defaults to EstimateItemDescription if empty.
AddHoursToTimesheetAdds hours to the user's timesheet.FromWorkflowStateName — the workflow stage name to calculate hours from. Required.
CreatePlannedHoursDeliverableFromEstimateItemDetailsCreates deliverable-level planned hours.
DeletePlannedHoursDeliverableFromEstimateItemDetailsRemoves deliverable-level planned hours.
DeleteDailyWorkloadsDeletes daily workload entries.
CreateJobPlannedHoursFromEstimateItemDetailsCreates job-level planned hours from estimate items.
DeleteJobPlannedHoursFromEstimateItemDetailsRemoves job-level planned hours from estimate items.

User Interaction & Popups

Action TypeDescriptionOptions
RequestMotiveShows a motive selection popup.MotiveId1;MotiveId2;... — (optional) restricts selectable motives to the listed IDs. If empty, all motives are available.
RequestReferencePrompts the user to enter a reference.
RequestMotiveWithRequestedDateShows a motive popup that also asks for a requested date.
RequestCommentPrompts the user to enter a comment.
RequestFlaggedAssignmentPrompts for a flagged assignment selection.AssignmentType1;AssignmentType2;... — (optional) restricts selectable assignment types.
RemoveFlaggedAssignmentsRemoves existing flagged assignments.
RequestClientUserFieldsShows a popup with client-specific user fields.FieldName1;FieldName2;... — list user field names to make them required in the popup. If empty, all user fields are optional.
RequestUserFieldsShows a popup with user-defined fields.FieldName1;FieldName2;... — list user field names to make them required in the popup. If empty, all user fields are optional.

Document & Field Management

Action TypeDescriptionOptions
CreateVersionCreates a new version of the document.IncrementParent — if set to IncrementParent on estimates, versions the parent estimate instead. Optional.
FileUploadTriggers a file upload dialog.
ReturnedMarks the document as returned.
RequestCreates a request from the current document.
ActivateDocumentActivates a deactivated document.
CanceledMarks the document as cancelled.
ResetUserFieldsResets all user-defined fields to their defaults.
ChangeClassificationChanges the document's classification.ClassificationName — the target classification name. Required.
SyncApprovalStatusSynchronizes the approval status.
ChangeEndDateToCurrentDaySets the document's end date to today.
IncreaseVersionDigitIncrements the version number.Digit;UserFieldColumnNameDigit is the 1-based position; UserFieldColumnName is the user field to update (e.g. uf_version). Required.
DecreaseVersionDigitDecrements the version number.Digit;UserFieldColumnName — same as IncreaseVersionDigit. Required.
UnlinkRequestRemoves the link to the originating request.
CustomTableWriteWrites data to a custom table.CustomTableName;QueryName — both required. First = custom table name; second = query returning rows to write.
UpdateUserFieldsUpdates user-defined fields via query.QueryName1;QueryName2;... — queries must return ColumnName, Value, DataTypeId, and optionally DocumentId + DocumentTypeName.
UpdateFieldsUpdates document fields via query.QueryName — query must return DocumentId, DocumentTypeName, FieldName, FieldValue.
UpdateFieldsValuesUpdates specific field values.QueryName1;QueryName2;... — queries must return column names, values, ActionType, and DocumentTypeName.

Document Creation & Automation

Action TypeDescriptionOptions
CreateJobsFromEstimateDeliverableQuantityCreates jobs based on estimate deliverable quantities.FromTeam;ToTeam;UpdateValuesQueryName — optional. FromTeam/ToTeam for copying assignments; query name for updating field values on created jobs.
CreateTasksFromJobTypeCreates tasks based on the job type template.TemplateName;FromTeam;ToTeam;CheckQuery;CreateQuery — first value is the template name (required); remaining are optional.
CreateDeliverablesFromRequestCreates deliverables from a request.QueryName — defaults to CreateDeliverablesFromRequest if empty.
CreateProjectFromCreates a project from the current document.QueryName — defaults to CreateProjectFromRequestWorkflowAction if empty.
CopyDescriptionFromCopies the description from a related document.QueryName — query must return DocumentId, DocumentTypeName. Required.
AutomationRuns an automation rule.AutomationId;QueryName — first = GUID of the automation (required); second = optional query name providing payload JSON.
SetCompaniesSets the companies on the document.QueryName — query returning CompanyId rows.

External Integration

Action TypeDescriptionOptions
SendToExternalSends data to an external integration.
ToIntegrateMarks the document for integration processing.
SendToExternalKeepOnErrorSends to external but keeps the document on error (does not roll back).

SAP Integration

Action TypeDescriptionOptions
SendToSapSends the document to SAP.
ApproveOnSapApproves the document on SAP.
RejectOnSapRejects the document on SAP.
SendApproveOnSapSends and approves on SAP in one step.
ApproveProductionOnSapApproves production on SAP.
CancelOnSapCancels the document on SAP.
ActivateOnSapActivates the document on SAP.