Introduced Buyer Approval Flows in beta
We have released Buyer Approval Flows in public beta. This new feature provides a flexible Order approval process for Business Units. Orders can now be matched to Approval Rules, which determine whether an Order must go through an approval process, and if so, which Associate Roles are needed to approve it. During the approval process, an Approval Flow manages the overall approval state.
With the help of Buyer Approval Flows, you can control each step of the Order approval process, based on the requirements of your organization.
This feature is only available as part of Composable Commerce for B2B and will be subject to additional terms and pricing. To get access to Composable Commerce for B2B, contact the Composable Commerce support team.
Changes:
- [API] Added Approval Rules and Approval Flows APIs.
- [API] Added
ApprovalFlowApprovedMessage
,ApprovalFlowCompletedMessage
,ApprovalFlowCreatedMessage
,ApprovalFlowRejectedMessage
Messages. - [API] Added
ApprovalRuleApproversSetMessage
,ApprovalRuleCreatedMessage
,ApprovalRuleDescriptionSetMessage
,ApprovalRuleKeySetMessage
,ApprovalRuleNameSetMessage
,ApprovalRulePredicateSetMessage
,ApprovalRuleRequestersSetMessage
,ApprovalRuleStatusSetMessage
Messages. - [API] Added
CreateApprovalRules
,UpdateApprovalRules
, andUpdateApprovalFlows
Permissions. - [GraphQL API] Changed the
Permission
type:- Enum values
CreateApprovalRules
,UpdateApprovalRules
andUpdateApprovalFlows
were added to enumPermission
.
- Enum values
- [GraphQL API] Changed the
AsAssociate
type:- Added the
approvalFlow
,approvalFlows
,approvalRule
andapprovalRules
fields to theAsAssociate
type.
- Added the
- [GraphQL API] Changed the
Mutation
type:- Added the
createApprovalRule
,updateApprovalRule
, andupdateApprovalFlow
fields to theMutation
type.
- Added the
- [GraphQL API] Added the following types to the GraphQL schema:
ApprovalFlow
,ApprovalFlowApproval
,ApprovalFlowApproved
,ApprovalFlowCompleted
,ApprovalFlowCreated
,ApprovalFlowQueryResult
,ApprovalFlowRejected
,ApprovalFlowRejection
,ApprovalFlowUpdateAction
,ApprovalRule
,ApprovalRuleApproversSet
,ApprovalRuleCreated
,ApprovalRuleDescriptionSet
,ApprovalRuleDraft
,ApprovalRuleKeySet
,ApprovalRuleNameSet
,ApprovalRulePredicateSet
,ApprovalRuleQueryResult
,ApprovalRuleRequestersSet
,ApprovalRuleStatus
,ApprovalRuleStatusSet
,ApprovalRuleUpdateAction
,ApproveApprovalFlow
,ApproverConjunction
,ApproverConjunctionDraft
,ApproverDisjunction
,ApproverDisjunctionDraft
,ApproverHierarchy
,ApproverHierarchyDraft
,RejectApprovalFlow
,RuleApprover
,RuleApproverDraft
,RuleRequester
,RuleRequesterDraft
,SetApprovalRuleApprovers
,SetApprovalRuleDescription
,SetApprovalRuleKey
,SetApprovalRuleName
,SetApprovalRulePredicate
,SetApprovalRuleRequesters
,SetApprovalRuleStatus
.
The following changes were introduced in terms of GraphQL SDL:
extend type AsAssociate {"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"approvalFlow(id: String!): ApprovalFlow"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"approvalFlows(where: String, sort: [String!], limit: Int, offset: Int): ApprovalFlowQueryResult!"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"approvalRule("Queries with specified ID"id: String,"Queries with specified key"key: String): ApprovalRule"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"approvalRules(where: String, sort: [String!], limit: Int, offset: Int): ApprovalRuleQueryResult!}extend type Mutation {"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"createApprovalRule(draft: ApprovalRuleDraft!,"Create/modify entity as an associate in business-unit."asAssociate: AsAssociateArgument!): ApprovalRule"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"updateApprovalFlow(version: Long!, actions: [ApprovalFlowUpdateAction!]!,"Create/modify entity as an associate in business-unit."asAssociate: AsAssociateArgument!, id: String!): ApprovalFlow"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"updateApprovalRule(version: Long!, actions: [ApprovalRuleUpdateAction!]!,"Create/modify entity as an associate in business-unit."asAssociate: AsAssociateArgument!,"Queries with specified ID"id: String,"Queries with specified key"key: String): ApprovalRule}extend enum Permission {"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"CreateApprovalRules"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"UpdateApprovalFlows"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"UpdateApprovalRules}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlow implements Versioned {status: String!approvals: [ApprovalFlowApproval!]!rejection: ApprovalFlowRejectionorderRef: Reference!order: Orderrules: [ApprovalRule!]!businessUnitRef: KeyReference!businessUnit: BusinessUnit!eligibleApprovers: [RuleApprover!]!pendingApprovers: [RuleApprover!]!currentTierPendingApprovers: [RuleApprover!]!id: String!version: Long!createdAt: DateTime!lastModifiedAt: DateTime!createdBy: InitiatorlastModifiedBy: Initiator}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowApproval {approver: Associate!approvedAt: DateTime!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowApproved implements MessagePayload {associate: Customerorder: OrderassociateRef: ReferenceorderRef: Referencetype: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowCompleted implements MessagePayload {status: String!order: OrderorderRef: Referencetype: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowCreated implements MessagePayload {approvalFlow: ApprovalFlow!type: String!}type ApprovalFlowQueryResult {offset: Int!count: Int!total: Long!"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"exists: Boolean!results: [ApprovalFlow!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowRejected implements MessagePayload {rejectionReason: Stringassociate: Customerorder: OrderassociateRef: ReferenceorderRef: Referencetype: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalFlowRejection {rejecter: Associate!rejectedAt: DateTime!reason: String}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApprovalFlowUpdateAction {"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"approve: ApproveApprovalFlow"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"reject: RejectApprovalFlow}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRule implements Versioned {key: Stringname: String!description: Stringstatus: ApprovalRuleStatus!predicate: String!approvers: ApproverHierarchy!requesters: [RuleRequester!]!businessUnitRef: KeyReference!businessUnit: BusinessUnit!id: String!version: Long!createdAt: DateTime!lastModifiedAt: DateTime!createdBy: InitiatorlastModifiedBy: Initiator}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleApproversSet implements MessagePayload {oldApprovers: ApproverHierarchy!approvers: ApproverHierarchy!type: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleCreated implements MessagePayload {approvalRule: ApprovalRule!type: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleDescriptionSet implements MessagePayload {oldDescription: Stringdescription: Stringtype: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApprovalRuleDraft {key: Stringname: String!description: Stringstatus: ApprovalRuleStatus!predicate: String!approvers: ApproverHierarchyDraft!requesters: [RuleRequesterDraft!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleKeySet implements MessagePayload {oldKey: Stringkey: Stringtype: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleNameSet implements MessagePayload {oldName: String!name: String!type: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRulePredicateSet implements MessagePayload {oldPredicate: String!predicate: String!type: String!}type ApprovalRuleQueryResult {offset: Int!count: Int!total: Long!"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"exists: Boolean!results: [ApprovalRule!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleRequestersSet implements MessagePayload {oldRequesters: [RuleRequester!]!requesters: [RuleRequester!]!type: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"enum ApprovalRuleStatus {ActiveInactive}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApprovalRuleStatusSet implements MessagePayload {oldStatus: ApprovalRuleStatus!status: ApprovalRuleStatus!type: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApprovalRuleUpdateAction {"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setApprovers: SetApprovalRuleApprovers"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setKey: SetApprovalRuleKey"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setName: SetApprovalRuleName"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setDescription: SetApprovalRuleDescription"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setPredicate: SetApprovalRulePredicate"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setRequesters: SetApprovalRuleRequesters"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"setStatus: SetApprovalRuleStatus}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApproveApprovalFlow {dummy: String}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApproverConjunction {and: [ApproverDisjunction!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApproverConjunctionDraft {and: [ApproverDisjunctionDraft!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApproverDisjunction {or: [RuleApprover!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApproverDisjunctionDraft {or: [RuleApproverDraft!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type ApproverHierarchy {tiers: [ApproverConjunction!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input ApproverHierarchyDraft {tiers: [ApproverConjunctionDraft!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input RejectApprovalFlow {reason: String}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type RuleApprover {associateRole: AssociateRole!associateRoleRef: KeyReference!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input RuleApproverDraft {associateRole: ResourceIdentifierInput!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"type RuleRequester {associateRole: AssociateRole!associateRoleRef: KeyReference!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input RuleRequesterDraft {associateRole: ResourceIdentifierInput!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleApprovers {approvers: ApproverHierarchyDraft!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleDescription {description: String}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleKey {key: String}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleName {name: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRulePredicate {predicate: String!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleRequesters {requesters: [RuleRequesterDraft!]!}"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"input SetApprovalRuleStatus {status: ApprovalRuleStatus!}