Processes (Cases)
Verified against source (7)
process/Process.csprocess/Process.Fields.csprocess/ProcessTemplate.csprocess/ProcessTemplate.Fields.csConfig/Process.configConfig/ProcessTemplate.configProperties/Settings.settings
Processes (cases) are Process records. Operations follow the standard route pattern:
/api/process/{operation}runs synchronously on the web server./api/process/queue/{operation}queues the operation for an app server. Use it for bulk work such asensurechildrenacross many processes.
Classes
Section titled “Classes”| Type | Purpose |
|---|---|
ProcessObject |
A process. Extends GenericObject, so it binds to a parent through Object / ObjectID. |
ProcessTemplateObject |
Implements ITemplate. AppliesTo maps to ParentObject; Repeatable is always Many; ExtranetEnabled is always Family. |
ContractObject / ContractProductObject |
A client–vendor agreement (ClientID, VendorID, Effective, Expires) and the process templates it covers (ProcessTemplateID). |
Key Process fields
Section titled “Key Process fields”| Field | Notes |
|---|---|
Process |
Label. Defaults to the template name. |
ProcessTemplateID |
The process template. |
Object, ObjectID |
Parent record. Object defaults to the template’s ParentObject. |
Status, ProcessType, Priority |
Standard status, type, and priority. |
DateOpened, OpenedReason, DateClosed, ClosedReason, DateDue |
Lifecycle. |
AssignedPersonID, AssignedOrganizationID |
Responsibility. |
VendorID, VendorPersonID, ClientID, ClientPersonID |
Parties. Each grants row-level access to the process. |
CurrentDecisionID |
The workflow launched on insert. |
CostLedgerID |
The cost ledger created on insert. |
Sibling, SiblingID |
Set when a process is stored through an extended (sibling) table that adds type-specific columns. |
Create a process
Section titled “Create a process”POST /api/process/save ?Template=Vendor Onboarding &Object=Organization &ObjectID=42 &AssignedPersonID=7 &Output=XmlTemplate (or ProcessTemplateID) is resolved by name, scoped to templates whose ParentObject matches Object. Because process templates are always Many, every save without an ID inserts a new process. You can create the parent in the same call using {Object}_ prefixed parameters; see Templates.
On insert, QBO runs EnsureChildren:
- Workflow. If the template has a
DecisionMatrixIDwhose matrix has aDecisionTemplateoutput, the matrix is evaluated against the process and the returned name is resolved to a workflow template. OtherwiseDecisionTemplateIDis used. The new workflow getsActualStart = DateOpened, the process’sAssignedPersonID, and the process as its parent; it’s saved asCurrentDecisionID. - Ledger. The same pattern, using
LedgerMatrixID(outputLedgerTemplate, returning a ledger template ID) orCostTemplateID. Saved asCostLedgerID.
Pass AttachmentIDs (a comma-separated list) on insert to re-bind existing documents to the new process.
Defaults and settings
Section titled “Defaults and settings”| Setting | Default | Effect |
|---|---|---|
AutoSelectOrganization |
true |
If AssignedOrganizationID is empty and the template’s OrganizationCollectionID yields exactly one organization the user can access, assign it. |
AutoSelectTemplate |
true |
For a sibling table with exactly one process template, set ProcessTemplateID automatically. |
AutoLabelSyncWithSibling |
true |
Keeps Process.Process in sync with the sibling table’s label column. |
Backfill missing children
Section titled “Backfill missing children”POST /api/process/ensurechildren?ID=101,102,103Creates a workflow and ledger for each process that doesn’t have them yet. Use /api/process/queue/ensurechildren for large ID lists.
Restart a process’s workflow
Section titled “Restart a process’s workflow”POST /api/process/restart?ID=101&ActualStart=2026-10-05&BodyText=Client resubmitted the applicationID, ActualStart, and BodyText are required. QBO cancels the current workflow, starts a new one from the template (or matrix) with ActualStart as its start date, and records a message with BodyText. The call fails with a rule error if the current workflow has an open hold. To restart a workflow from a specific step instead, use the workflow’s own restart; see Workflow.
Close a process
Section titled “Close a process”Closing is a save:
POST /api/process/save?ID=101&DateClosed=2026-10-05&ClosedReason=Completed&Status=CompleteOn update, the template’s closing rules run:
| Template field | Effect |
|---|---|
OnCloseRequireFinalStatus |
Throws a rule error before the update if DateClosed is set and Status isn’t a final status. |
OnFinalStatusAutoClose |
Sets DateClosed when Status is final. |
OnCloseCancelDecisions |
0 none; 1 cancel the current workflow; 2 also cancel every other open workflow on the process. |
OnCloseChildrenClose / OnFinalStatusChildrenClose |
Runs the CancelWorklistMembers statement: cancels open worklist items for tasks on the process. |
Search
Section titled “Search”GET /api/process/search?ProcessTemplateID=5&Output=JsonResults honor row-level security: partner users see processes they created or that grant them access through the six assignment fields.