How do I create an Approval Hierarchy on a Sales Order

Hi everyone! I need some help with a task I’ve been assigned. I have to set up an approval hierarchy for sales orders. The idea is that a sales order needs to be approved by 2-3 people before it can progress any further in the system.

Has anyone worked on something similar or have any tips on how I can achieve this? Thanks in advance for your help!

There are a few threads on here of others discussing this type of thing. I think it depends on what you’re trying to achieve/prevent.

Do you want to prevent creating jobs from Sales Order Job Wizard?
Do you want to prevent shipping from inventory?

Too many scenarios… this could definitely be a big customization depending on your organization’s needs.

Since you need multi-tiered approval, you could create a series or approval fields and each are tied to different approval level role codes. All need to be accounted for before a sales order is approved. Until then, you’d have to turn off various functionality, but again, that depends on what you’re trying to prevent from happening until final approval.

Hi, can you tell me how do I create these approval fields and then assign role codes to them.
Yess I am trying to prevent creating jobs from Sales Order Job Wizard

Again, it may depend on how well you want/need to structure it… but generically… My initial thought would be to use Boolean columns on OrderHed. Or, if you wanted, there are (4) UserChar fields on OrderHed out-of-the-box you could use if they’re not being used for anything else.

I guess I may have mis-spoke earlier, although role codes might work… you could do this with user security groups.

Create security groups.

  • Sales Order Approval Lvl 1
  • Sales Order Approval Lvl 2
  • Sales Order Approval Lvl 3

Assign these security groups to your various approvers (user accounts).

Add some checkboxes to your form for how ever many approvals you need.

In Field Security Maintenance, you would set those columns to read-only by default… but then grant write access to each one based on the security groups you created.

Now, only those with the proper security group assignments can impact those fields.

If they click the checkbox on a give sales order, that sets OrderHed.UserChar1 (or… OrderHed.CustomCheckbox01_c… or whatever you create as a UD column) to 1, or true.

You can set OrderHed.OrderJobWizardTool to be disabled by default… Then you create a row/data rule with conditions where if “Sales Order Approval” fields 1, 2, & 3 are true… then enable the OrderJobWizardTool.

If you wanted, you could add those columns to your change log to get details on when they’re approved (user and timestamp).

Other ways to skin that cat… but that’s probably a relatively simplistic way of doing it.

Is there a way to use the UserChar fields in OrderHed to create tasks that would show on a users task list?

This functionality exists on the Quote level (if you have the Customer Relationship Management module). It would be a MASSIVE customization to add that at the Sales Order level.

Thank you. That’s what I thought but I am no expert.
I have been asked to set up some kind of notification based on a customer request in relation to an order. They had hoped to keep track on their current task list, which we have for quotes, but sometimes the customer asks for additional paperwork, after placing an order, that we provide upon request at no charge. I should be able to build a notification using the UserChar# in OrderHed as an optional checkbox and provide a dashboard.

You could look at the Case Management program, which also uses the Task Management functionality. It would likely be extra data entry and maintenance, but might be worth a look.

I’ve been looking into that and maybe Project also. Now it would just be trying to get them to use it.

In cases like that, if you don’t want to create a dashboard, you could also use the changing of that Char field’s value to trigger a BPM that sends an alert/email to the perspective user.

Basically a BPM condition where if UserChar1 value changes from False to True (or 0 to 1 depending on the set-up)… do the thing.

That being said, emails get missed. Alerts get ignored. So, having it ON a dashboard is also nice because the user(s) can view all outstanding cases where UserChar1 = True.

But then you also have to account for what happens when they DO perform the task. So, they send the requested document… do they need to go into the order and uncheck the box? Can they do that from the dashboard you build?

Also, do you need to track user name, date when said task was completed? If so, you may be able to tap the changelog on OrderHed for those columns.

But these are the type of things to consider when trying to build your own ad hoc “task” system.

Thank you for the suggestion. I did intend to create a BPM for the notification and the dashboard so they can keep track. I didn’t even consider removal from the dashboard. I only have (2) UserChar# available because the others are already used for other customizations. I may be able to use UserDate# so a user can select a date. Then I think I can have it come off the dashboard if that field contains data.

You can always create UD columns (especially if you want the names to make sense) vs the baked in UserChar columns. A little extra pain when you have to ask for EipCare to refresh your data model, but may be worthwhile in the long run.

I would definitely recommend going the route of creating the fields with proper names and descriptions, even on the UD tables, I know they give you a bunch of built in generic fields but trust me, 6 months on you will be kicking yourself for using them as you won’t have any built in idea inside of Epicor what they are for.

I know you can (and should) document them but when you are just trying to write a quick BAQ or look at data that doesn’t add up or something it is so much easier with proper field names.

2 Likes