Actions
The ballerinax/microsoft.dynamics365.finance.workflow package exposes the following clients:
| Client | Purpose |
|---|---|
Client | Provides full CRUD access to Microsoft Dynamics 365 Finance workflow definitions, action classes, actions, advanced rules, approval users, batch groups, batch jobs, database logs, workflow operations, policy types, policy rules, process stages, and rec setup bases via the Dynamics 365 Finance and Operations OData API. |
Client
Provides full CRUD access to Microsoft Dynamics 365 Finance workflow definitions, action classes, actions, advanced rules, approval users, batch groups, batch jobs, database logs, workflow operations, policy types, policy rules, process stages, and rec setup bases via the Dynamics 365 Finance and Operations OData API.
Configuration
| Field | Type | Default | Description |
|---|---|---|---|
auth | OAuth2ClientCredentialsGrantConfig | Required | OAuth2 client credentials grant configuration used to authenticate with Microsoft Entra ID (tokenUrl, clientId, clientSecret, scopes). |
httpVersion | http:HttpVersion | "2.0" | HTTP protocol version used for outbound requests to the environment. |
http1Settings | http:ClientHttp1Settings | {} | HTTP/1.x client settings, including keep-alive, chunking, and proxy configuration. |
secureSocket | http:ClientSecureSocket | () | SSL/TLS configuration for secure connections. |
proxy | http:ProxyConfig | () | Proxy server configuration. |
Initializing the client
import ballerinax/microsoft.dynamics365.finance.workflow;
configurable string tokenUrl = ?;
configurable string clientId = ?;
configurable string clientSecret = ?;
configurable string serviceUrl = ?;
workflow:Client fo = check new (
{
auth: {
tokenUrl,
clientId,
clientSecret
}
},
serviceUrl
);
Operations
Action Classes
listActionClasses
Lists action classes.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListActionClassesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: ActionClassesCollection|error
Sample code:
workflow:ActionClassesCollection result = check fo->listActionClasses(
queries = {filter: "ActionType eq 'User'", top: 20}
);
createActionClasses
Creates an action class.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | ActionClass | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: ActionClass|error
Sample code:
workflow:ActionClass created = check fo->createActionClasses({
dataAreaId: "usmf",
executableClass: "EmailNotificationAction",
description: "Sends an email notification",
actionType: "User",
className: "EmailNotificationActionClass"
});
getActionClasses
Retrieves an action class by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
executableClass | string | Yes | The executable class key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetActionClassesQueries | No | OData query parameters: $expand, $select. |
Returns: ActionClass|error
Sample code:
workflow:ActionClass actionClass = check fo->getActionClasses("usmf", "EmailNotificationAction");
deleteActionClasses
Deletes an action class.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
executableClass | string | Yes | The executable class key field. |
headers | DeleteActionClassesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteActionClasses("usmf", "EmailNotificationAction", headers = {ifMatch: eTag});
updateActionClasses
Updates an action class.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
executableClass | string | Yes | The executable class key field. |
payload | ActionClass | Yes | The request body. |
headers | UpdateActionClassesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: ActionClass|error
Sample code:
workflow:ActionClass updated = check fo->updateActionClasses(
"usmf",
"EmailNotificationAction",
{description: "Sends an email notification to the assigned approver"},
headers = {ifMatch: eTag}
);
Actions
listActions
Lists actions.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListActionsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: ActionsCollection|error
Sample code:
workflow:ActionsCollection result = check fo->listActions(
queries = {filter: "ActionType eq 'User'"}
);
createActions
Creates an action.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | Action | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: Action|error
Sample code:
workflow:Action created = check fo->createActions({
dataAreaId: "usmf",
action: "RequisitionApprovalNotify",
description: "Notify requisition approver",
actionType: "User",
executableClass: "EmailNotificationAction"
});
getActions
Retrieves an action by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
action | string | Yes | The action key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetActionsQueries | No | OData query parameters: $expand, $select. |
Returns: Action|error
Sample code:
workflow:Action action = check fo->getActions("usmf", "RequisitionApprovalNotify");
deleteActions
Deletes an action.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
action | string | Yes | The action key field. |
headers | DeleteActionsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteActions("usmf", "RequisitionApprovalNotify", headers = {ifMatch: eTag});
updateActions
Updates an action.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
action | string | Yes | The action key field. |
payload | Action | Yes | The request body. |
headers | UpdateActionsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: Action|error
Sample code:
workflow:Action updated = check fo->updateActions(
"usmf",
"RequisitionApprovalNotify",
{description: "Notify requisition approver by email and Teams"},
headers = {ifMatch: eTag}
);
Advanced Rules
listAdvancedRules
Lists advanced (dimension hierarchy) rules.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListAdvancedRulesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: AdvancedRulesCollection|error
Sample code:
workflow:AdvancedRulesCollection result = check fo->listAdvancedRules(
queries = {filter: "RuleType eq 'GeneralLedger'"}
);
createAdvancedRules
Creates an advanced rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | AdvancedRule | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: AdvancedRule|error
Sample code:
workflow:AdvancedRule created = check fo->createAdvancedRules({
accountStructure: "Operations",
advancedRuleName: "DeptSecurityRule",
status: "Draft",
description: "Department-based security rule",
ruleType: "GeneralLedger",
advancedRuleStructure1: "Department"
});
getAdvancedRules
Retrieves an advanced rule by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
accountStructure | string | Yes | The account structure key field. |
advancedRuleName | string | Yes | The advanced rule name key field. |
status | string | Yes | The status key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetAdvancedRulesQueries | No | OData query parameters: $expand, $select. |
Returns: AdvancedRule|error
Sample code:
workflow:AdvancedRule advancedRule = check fo->getAdvancedRules("Operations", "DeptSecurityRule", "Draft");
deleteAdvancedRules
Deletes an advanced rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
accountStructure | string | Yes | The account structure key field. |
advancedRuleName | string | Yes | The advanced rule name key field. |
status | string | Yes | The status key field. |
headers | DeleteAdvancedRulesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteAdvancedRules("Operations", "DeptSecurityRule", "Draft", headers = {ifMatch: eTag});
updateAdvancedRules
Updates an advanced rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
accountStructure | string | Yes | The account structure key field. |
advancedRuleName | string | Yes | The advanced rule name key field. |
status | string | Yes | The status key field. |
payload | AdvancedRule | Yes | The request body. |
headers | UpdateAdvancedRulesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: AdvancedRule|error
Sample code:
workflow:AdvancedRule updated = check fo->updateAdvancedRules(
"Operations",
"DeptSecurityRule",
"Draft",
{status: "Active"},
headers = {ifMatch: eTag}
);
Approval Users
listApprovalUsers
Lists approval users.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListApprovalUsersQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: ApprovalUsersCollection|error
Sample code:
workflow:ApprovalUsersCollection result = check fo->listApprovalUsers(
queries = {filter: "UserCompany eq 'usmf'"}
);
createApprovalUsers
Creates an approval user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | ApprovalUser | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: ApprovalUser|error
Sample code:
workflow:ApprovalUser created = check fo->createApprovalUsers({
userId: "[email protected]",
userName: "Jane Perera",
userCompany: "usmf"
});
getApprovalUsers
Retrieves an approval user by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user id key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetApprovalUsersQueries | No | OData query parameters: $expand, $select. |
Returns: ApprovalUser|error
Sample code:
workflow:ApprovalUser approvalUser = check fo->getApprovalUsers("[email protected]");
deleteApprovalUsers
Deletes an approval user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user id key field. |
headers | DeleteApprovalUsersHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteApprovalUsers("[email protected]", headers = {ifMatch: eTag});
updateApprovalUsers
Updates an approval user.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
userId | string | Yes | The user id key field. |
payload | ApprovalUser | Yes | The request body. |
headers | UpdateApprovalUsersHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: ApprovalUser|error
Sample code:
workflow:ApprovalUser updated = check fo->updateApprovalUsers(
"[email protected]",
{userName: "Jane A. Perera"},
headers = {ifMatch: eTag}
);
Batch Groups
listBatchGroups
Lists batch groups.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListBatchGroupsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: BatchGroupsCollection|error
Sample code:
workflow:BatchGroupsCollection result = check fo->listBatchGroups();
createBatchGroups
Creates a batch group.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | BatchGroup | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: BatchGroup|error
Sample code:
workflow:BatchGroup created = check fo->createBatchGroups({
groupId: "50",
serverId: "AOS-01",
description: "Workflow escalation batch group"
});
getBatchGroups
Retrieves a batch group by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
groupId | string | Yes | The group id key field. |
serverId | string | Yes | The server id key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetBatchGroupsQueries | No | OData query parameters: $expand, $select. |
Returns: BatchGroup|error
Sample code:
workflow:BatchGroup batchGroup = check fo->getBatchGroups("50", "AOS-01");
deleteBatchGroups
Deletes a batch group.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
groupId | string | Yes | The group id key field. |
serverId | string | Yes | The server id key field. |
headers | DeleteBatchGroupsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteBatchGroups("50", "AOS-01", headers = {ifMatch: eTag});
updateBatchGroups
Updates a batch group.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
groupId | string | Yes | The group id key field. |
serverId | string | Yes | The server id key field. |
payload | BatchGroup | Yes | The request body. |
headers | UpdateBatchGroupsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: BatchGroup|error
Sample code:
workflow:BatchGroup updated = check fo->updateBatchGroups(
"50",
"AOS-01",
{description: "Workflow escalation and reminder batch group"},
headers = {ifMatch: eTag}
);
Batch Jobs
listBatchJobs
Lists batch jobs.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListBatchJobsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: BatchJobsCollection|error
Sample code:
workflow:BatchJobsCollection result = check fo->listBatchJobs(
queries = {filter: "Status eq 'Waiting'"}
);
createBatchJobs
Creates a batch job.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | BatchJob | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: BatchJob|error
Sample code:
workflow:BatchJob created = check fo->createBatchJobs({
jobDescription: "Workflow reminder batch job",
companyAccounts: "usmf",
status: "Waiting"
});
getBatchJobs
Retrieves a batch job by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
batchJobRecId | int | Yes | The batch job rec id key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetBatchJobsQueries | No | OData query parameters: $expand, $select. |
Returns: BatchJob|error
Sample code:
workflow:BatchJob batchJob = check fo->getBatchJobs(5637144245);
deleteBatchJobs
Deletes a batch job.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
batchJobRecId | int | Yes | The batch job rec id key field. |
headers | DeleteBatchJobsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteBatchJobs(5637144245, headers = {ifMatch: eTag});
updateBatchJobs
Updates a batch job.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
batchJobRecId | int | Yes | The batch job rec id key field. |
payload | BatchJob | Yes | The request body. |
headers | UpdateBatchJobsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: BatchJob|error
Sample code:
workflow:BatchJob updated = check fo->updateBatchJobs(
5637144245,
{status: "Hold"},
headers = {ifMatch: eTag}
);
Database Logs
listDatabaseLogs
Lists database log records.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListDatabaseLogsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: DatabaseLogsCollection|error
Sample code:
workflow:DatabaseLogsCollection result = check fo->listDatabaseLogs(
queries = {filter: "TableName eq 'VendTable'", top: 50}
);
createDatabaseLogs
Creates a database log record.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | DatabaseLog | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: DatabaseLog|error
Sample code:
workflow:DatabaseLog created = check fo->createDatabaseLogs({
dataAreaId: "usmf",
tableName: "VendTable",
logType: "Update",
username: "[email protected]"
});
getDatabaseLogs
Retrieves a database log record by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
tableRecId | int | Yes | The table rec id key field. |
logRecId | int | Yes | The log rec id key field. |
tableIdNumber | int | Yes | The table id number key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetDatabaseLogsQueries | No | OData query parameters: $expand, $select. |
Returns: DatabaseLog|error
Sample code:
workflow:DatabaseLog log = check fo->getDatabaseLogs("usmf", 5637190083, 8420176, 872);
deleteDatabaseLogs
Deletes a database log record.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
tableRecId | int | Yes | The table rec id key field. |
logRecId | int | Yes | The log rec id key field. |
tableIdNumber | int | Yes | The table id number key field. |
headers | DeleteDatabaseLogsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteDatabaseLogs("usmf", 5637190083, 8420176, 872, headers = {ifMatch: eTag});
updateDatabaseLogs
Updates a database log record.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
tableRecId | int | Yes | The table rec id key field. |
logRecId | int | Yes | The log rec id key field. |
tableIdNumber | int | Yes | The table id number key field. |
payload | DatabaseLog | Yes | The request body. |
headers | UpdateDatabaseLogsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: DatabaseLog|error
Sample code:
workflow:DatabaseLog updated = check fo->updateDatabaseLogs(
"usmf",
5637190083,
8420176,
872,
{formattedData: "Vendor on-hold status changed"},
headers = {ifMatch: eTag}
);
Workflow Operations
listOperations
Lists workflow operation types.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListOperationsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: OperationsCollection|error
Sample code:
workflow:OperationsCollection result = check fo->listOperations();
createOperations
Creates a workflow operation type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | Operation | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: Operation|error
Sample code:
workflow:Operation created = check fo->createOperations({
dataAreaId: "usmf",
operationId: "PurchReqApprove",
operationName: "Approve purchase requisition"
});
getOperations
Retrieves a workflow operation type by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
operationId | string | Yes | The operation id key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetOperationsQueries | No | OData query parameters: $expand, $select. |
Returns: Operation|error
Sample code:
workflow:Operation operation = check fo->getOperations("usmf", "PurchReqApprove");
deleteOperations
Deletes a workflow operation type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
operationId | string | Yes | The operation id key field. |
headers | DeleteOperationsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteOperations("usmf", "PurchReqApprove", headers = {ifMatch: eTag});
updateOperations
Updates a workflow operation type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
operationId | string | Yes | The operation id key field. |
payload | Operation | Yes | The request body. |
headers | UpdateOperationsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: Operation|error
Sample code:
workflow:Operation updated = check fo->updateOperations(
"usmf",
"PurchReqApprove",
{operationName: "Approve purchase requisition (manager)"},
headers = {ifMatch: eTag}
);
Policy Rules
listPolicyRules
Lists policy rules.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListPolicyRulesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: PolicyRulesCollection|error
Sample code:
workflow:PolicyRulesCollection result = check fo->listPolicyRules(
queries = {filter: "PolicyType eq 'TrvExpensePolicy'"}
);
createPolicyRules
Creates a policy rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | PolicyRule | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: PolicyRule|error
Sample code:
workflow:PolicyRule created = check fo->createPolicyRules({
policyName: "TravelExpensePolicy",
policyType: "TrvExpensePolicy",
policyRuleName: "ReceiptRequiredOver100",
validFrom: "2026-01-01T00:00:00Z",
action: "Warning"
});
getPolicyRules
Retrieves a policy rule by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyName | string | Yes | The policy name key field. |
policyType | string | Yes | The policy type key field. |
policyRuleName | string | Yes | The policy rule name key field. |
validFrom | string | Yes | The valid from key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetPolicyRulesQueries | No | OData query parameters: $expand, $select. |
Returns: PolicyRule|error
Sample code:
workflow:PolicyRule policyRule = check fo->getPolicyRules(
"TravelExpensePolicy",
"TrvExpensePolicy",
"ReceiptRequiredOver100",
"2026-01-01T00:00:00Z"
);
deletePolicyRules
Deletes a policy rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyName | string | Yes | The policy name key field. |
policyType | string | Yes | The policy type key field. |
policyRuleName | string | Yes | The policy rule name key field. |
validFrom | string | Yes | The valid from key field. |
headers | DeletePolicyRulesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deletePolicyRules(
"TravelExpensePolicy",
"TrvExpensePolicy",
"ReceiptRequiredOver100",
"2026-01-01T00:00:00Z",
headers = {ifMatch: eTag}
);
updatePolicyRules
Updates a policy rule.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyName | string | Yes | The policy name key field. |
policyType | string | Yes | The policy type key field. |
policyRuleName | string | Yes | The policy rule name key field. |
validFrom | string | Yes | The valid from key field. |
payload | PolicyRule | Yes | The request body. |
headers | UpdatePolicyRulesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: PolicyRule|error
Sample code:
workflow:PolicyRule updated = check fo->updatePolicyRules(
"TravelExpensePolicy",
"TrvExpensePolicy",
"ReceiptRequiredOver100",
"2026-01-01T00:00:00Z",
{action: "ApproveJustification"},
headers = {ifMatch: eTag}
);
Policy Types
listPolicyTypes
Lists policy types.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListPolicyTypesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: PolicyTypesCollection|error
Sample code:
workflow:PolicyTypesCollection result = check fo->listPolicyTypes();
createPolicyTypes
Creates a policy type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | PolicyType | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: PolicyType|error
Sample code:
workflow:PolicyType created = check fo->createPolicyTypes({
policyType: "TrvExpensePolicy",
policyName: "Travel and expense policy",
purpose: "ExpenseControl"
});
getPolicyTypes
Retrieves a policy type by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyType | string | Yes | The policy type key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetPolicyTypesQueries | No | OData query parameters: $expand, $select. |
Returns: PolicyType|error
Sample code:
workflow:PolicyType policyType = check fo->getPolicyTypes("TrvExpensePolicy");
deletePolicyTypes
Deletes a policy type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyType | string | Yes | The policy type key field. |
headers | DeletePolicyTypesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deletePolicyTypes("TrvExpensePolicy", headers = {ifMatch: eTag});
updatePolicyTypes
Updates a policy type.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
policyType | string | Yes | The policy type key field. |
payload | PolicyType | Yes | The request body. |
headers | UpdatePolicyTypesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: PolicyType|error
Sample code:
workflow:PolicyType updated = check fo->updatePolicyTypes(
"TrvExpensePolicy",
{isPolicyReadOnly: "No"},
headers = {ifMatch: eTag}
);
Process Stages
listProcessStages
Lists process stages.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListProcessStagesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: ProcessStagesCollection|error
Sample code:
workflow:ProcessStagesCollection result = check fo->listProcessStages(
queries = {filter: "ProcessType eq 'Onboarding'"}
);
createProcessStages
Creates a process stage.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | ProcessStage | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: ProcessStage|error
Sample code:
workflow:ProcessStage created = check fo->createProcessStages({
dataAreaId: "usmf",
processType: "Onboarding",
name: "ManagerApproval",
description: "Manager approval stage",
sequenceNumber: 10
});
getProcessStages
Retrieves a process stage by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
processType | string | Yes | The process type key field. |
name | string | Yes | The name key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetProcessStagesQueries | No | OData query parameters: $expand, $select. |
Returns: ProcessStage|error
Sample code:
workflow:ProcessStage processStage = check fo->getProcessStages("usmf", "Onboarding", "ManagerApproval");
deleteProcessStages
Deletes a process stage.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
processType | string | Yes | The process type key field. |
name | string | Yes | The name key field. |
headers | DeleteProcessStagesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteProcessStages("usmf", "Onboarding", "ManagerApproval", headers = {ifMatch: eTag});
updateProcessStages
Updates a process stage.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
processType | string | Yes | The process type key field. |
name | string | Yes | The name key field. |
payload | ProcessStage | Yes | The request body. |
headers | UpdateProcessStagesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: ProcessStage|error
Sample code:
workflow:ProcessStage updated = check fo->updateProcessStages(
"usmf",
"Onboarding",
"ManagerApproval",
{sequenceNumber: 20},
headers = {ifMatch: eTag}
);
Rec Setup Bases
listRecSetupBases
Lists reconciliation setup bases.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListRecSetupBasesQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: RecSetupBasesCollection|error
Sample code:
workflow:RecSetupBasesCollection result = check fo->listRecSetupBases(
queries = {filter: "ItemGroup eq 'FinishedGoods'"}
);
createRecSetupBases
Creates a reconciliation setup basis.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | RecSetupBasis | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: RecSetupBasis|error
Sample code:
workflow:RecSetupBasis created = check fo->createRecSetupBases({
dataAreaId: "usmf",
itemId: "1000",
itemGroup: "FinishedGoods",
description: "Reconciliation setup basis for finished goods"
});
getRecSetupBases
Retrieves a reconciliation setup basis by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
itemId | string | Yes | The item id key field. |
itemGroup | string | Yes | The item group key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetRecSetupBasesQueries | No | OData query parameters: $expand, $select. |
Returns: RecSetupBasis|error
Sample code:
workflow:RecSetupBasis recSetupBasis = check fo->getRecSetupBases("usmf", "1000", "FinishedGoods");
deleteRecSetupBases
Deletes a reconciliation setup basis.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
itemId | string | Yes | The item id key field. |
itemGroup | string | Yes | The item group key field. |
headers | DeleteRecSetupBasesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteRecSetupBases("usmf", "1000", "FinishedGoods", headers = {ifMatch: eTag});
updateRecSetupBases
Updates a reconciliation setup basis.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
dataAreaId | string | Yes | The company data area identifier. |
itemId | string | Yes | The item id key field. |
itemGroup | string | Yes | The item group key field. |
payload | RecSetupBasis | Yes | The request body. |
headers | UpdateRecSetupBasesHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: RecSetupBasis|error
Sample code:
workflow:RecSetupBasis updated = check fo->updateRecSetupBases(
"usmf",
"1000",
"FinishedGoods",
{description: "Reconciliation setup basis for finished goods (revised)"},
headers = {ifMatch: eTag}
);
Workflows
listWorkflows
Lists workflow definitions.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | ListWorkflowsQueries | No | OData query parameters: $skip, $top, $filter, $orderby, $expand, cross-company, $count, $select. |
Returns: WorkflowsCollection|error
Sample code:
workflow:WorkflowsCollection result = check fo->listWorkflows(
queries = {filter: "Module eq 'PurchaseOrder'"}
);
createWorkflows
Creates a workflow definition.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
payload | Workflow | Yes | The request body. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
Returns: Workflow|error
Sample code:
workflow:Workflow created = check fo->createWorkflows({
sequenceNumber: "PurchReqApproval-1",
name: "Purchase requisition approval",
associationType: "Company",
'type: "Definition",
dataArea: "usmf",
templateName: "PurchReqApprovalTemplate",
'module: "PurchaseOrder",
defaultConfiguration: "Yes",
categoryName: "Procurement"
});
getWorkflows
Retrieves a workflow definition by key.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sequenceNumber | string | Yes | The sequence number key field. |
headers | map<string|string[]> | No | Additional HTTP request headers. |
queries | GetWorkflowsQueries | No | OData query parameters: $expand, $select. |
Returns: Workflow|error
Sample code:
workflow:Workflow wf = check fo->getWorkflows("PurchReqApproval-1");
deleteWorkflows
Deletes a workflow definition.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sequenceNumber | string | Yes | The sequence number key field. |
headers | DeleteWorkflowsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: error?
Sample code:
check fo->deleteWorkflows("PurchReqApproval-1", headers = {ifMatch: eTag});
updateWorkflows
Updates a workflow definition.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
sequenceNumber | string | Yes | The sequence number key field. |
payload | Workflow | Yes | The request body. |
headers | UpdateWorkflowsHeaders | No | Additional HTTP request headers. Include ifMatch with the entity's current ETag. |
Returns: Workflow|error
Sample code:
workflow:Workflow updated = check fo->updateWorkflows(
"PurchReqApproval-1",
{defaultConfiguration: "No"},
headers = {ifMatch: eTag}
);