Monday, 4 July 2016

Multi-Level Approval in Acumatica

Hi Everyone,

Today I want to sore with you and idea of how to define the multi-level approval workflow in Acumatica ERP.
Acumatica has approval feature in many different parts of the system, like Sales/Purchase Orders, Requisition, Requests, Projects and now starting from 6.0 also on AP documents.
multi-level approval workflow in Acumatica ERP.
Every time when you need to define approval hierarchy, you should check the "Assignment and approval maps" screen in the system.
The main idea on defining multiple levels of approval is that you need need to create dependent conditions, when each next level can check that the previous level is approved. So:
  • On the first level you just need to specify "base" conditions 
  • On the next levels you need to set conditions which will reflect and pull condition from the previous level,
  • Need to change order of the levels and set to the top rule with higher level (for example max amount).
Lets do one example based on Purchase orders approval, where we want to to define up to 3 levels of approval depend on order amount.

Level 3 (Top managers):
This level contains link to the previous level, where Baker should do approval. Also we checking all documents higher that 10 000 USD.
Please note that instead of names you can use workgroups, than any guy from workgroup can approve document.
Also note that higher guy in the Company tree hierarchy can approve for his subordinates.

Level 2 (Middle managers):
This level also contains link to the first level, where Anna Johnson should do approval. Also we checking all documents higher that 1 000 USD.

1 Level (Low managers):
On this level we do not have any connections with other things, but we checking order with amount higher than 100 USD.

When the approval map is ready you can activate in on PO Setup screen. Note that you can have multiple approval maps for the parallel approval with several managers/departments. Also do not forget that you can configure special email notification for each approval map.

And finally, Purchase Order itself:
Approval logic will be triggered each time when some one click save or approv to evaluate next guy who should do approval. So next level will get notification only what the previous level has approved.

How to find field with approver?
Depend on Screen/Graph/DAC that you using for approval, you may need to use different fields. What field do you need to use you can find in the code by searching for PX.Data.EP.IAssign interface on the DAC. It contains 2 properties: OwnerID and WorkgroupID. Depend on the DAC logic i can be different database table fields. Like it is Approver in PO Order, but it will be OwnerID in RQRequest.

Have a nice configuration!


Unknown said...

Hi Sergey,
My client asks if it is possible to configure combination of multi-step and parallel approval workflow for Purchase Requisitions. When requisition is submitted for approval they want one particular person in Finance to conduct review of the requisition (she may reject a few times). When she is satisfied, she approves requisition. Then it should be forwarded to few other approvers (number of them depends on various parameters of the document such as cost center of submitter, total amount of requisition, etc), and these approvers can provide their approval in parallel.

I configured 1 assignment map for Finance person and 2 additional assignment maps for higher level approvers. Conditions of the 1st map requires that Requisition.ApprovalWorkgroupID is NULL. Conditions of the last two maps require that Requisition.ApprovalWorkgroupID = . All 3 maps are specified in Approvals tab of the Purchase Requisition Preferences.

When I put requisition off hold it goes to Finance (this is correct), but when she approves, requisition is approved, so no other assignments are executed (I expected the opposite)

Can you please advise?

Sergey Marenich said...

Hi Unknown,
Yes you can do parallel approval, but ApprovalWorkgroupID field is bad for conditions. This is virtual field that is evaluated only on the fly and in your approval conditions will always be null.
Try to use other database mapped fields - like RQRequisition.WorkgroupID or Approval.WorkgroupID

Hope it helps.

Abdul Malik Noor Faruk said...

Hi Mr Sergey,

My name is Malik, from Censof Malaysia. I have one situation here, where in my company we need to set multi level approval for the same Purchase order (PO) and same value. For the example, the PO value is RM 100,000. 1st level staff will prepare the PO, he/she cant approve the order. Then this PO go to approval screen. We have 3 approver (1st Approver is Manager, 2nd Approver is CFO and Final approver is Director). All this 3 approver MUST approve the PO, then only the PO is valid and proceed for printing and send to vendor.

Can you advise me how to set the condition in "Assignment and Approval Map" in order i can set 3 approver for PO.

Sergey Marenich said...

Hi Malik,
The thing you described is exactly situation from this article. Just setup 3 lines as it shown above. Please provide more specific details if that does not work for you.

Abdul Malik Noor Faruk said...

Hi Mr Sergey,

I able to do the multi level workflow as per your advise above.

Before this i did the same thing as per your article, but failed due to i didnt set the condition on the "Order Total". This is because, in our company we didnt have condition on the amount. After i test different condition, the PO multi level approval keep failed. Then i seek for your advise.

Now this issue resolve once i set condition on "Order Total = is Greater than zero". Thank you Mr Sergey.

Sergey Marenich said...

Hi Malik,
Thank you very much for confirmation!

Saiful Murad said...

Hi Sergey,
How do you do multiple nodes in an approval map? I tried to do one for timecard approval for all departments in my company and it seems only to work for the first node.

Scenarios are:
1. 2-tier approval (Staff -> Recommending Officer [RO] -> Approving Officer [AO])
2. 1-tier approval (Staff -> Recommending Officer [RO])

I had to do different node as there are 12 departments altogether with different Heads of Departments.

Any advice would be greatly appreciated.

Thanks in advance.


Sergey Marenich said...

Hi Saiful,
"it seems only to work for the first node." - usually it is something wrong with conditions. Contact me or support to review your conditions in approval map.

Nestor Bautista Jr said...

Hi Sergey,

It is possible to set a "Either of" approver? We want to set up two approvers which either of them can approver a document.
Acumatica previous versions let us approve a document even we are not the approver but you must have access to approve button. It sounds pretty good for us but now we upgrade to 2017 R2, Acumatica are not let us do this anymore. I hope this can be done without any customization.


Sergey Marenich said...

Put them in work-group and assign approval to work-group. So whoever approve will approve document.