NetSuite Purchase Order Approval Workflow

During your journey to gain your stripes as a NetSuite administrator you are going to need to become pretty competent with all types of workflows. You are likely to start with very simple actions to begin with which are covered in other articles on NetFreak – Setting a field value, making a field mandatory etc.

The next step up from these single actions though is commonly a basic approval workflow. Most businesses are likely to want an approval flow on Purchase Orders before any other transaction as this is an externally facing document often generated from all across the business (learn the difference between Purchase Orders and Requisitions here).

The wrong information being sent to a vendor without the correct approvals could have severe consequences. You could risk damaging the companies reputation, the relationship with the vendor or even the companies finances.

As with a lot of process developments it’s sometimes better to start with something basic and once that has been onboarded you can see where to build on that. This isn’t categorically the right approach but when you are going from nothing to something it sometimes helps with adoption.

In the below walkthrough I have made the assumption that you can find your way around the NetSuite user interface and this isn’t your first workflow.

Creating a Purchase Order Approval Workflow

1. Prerequisites to creating an approval workflow.

Before beginning this workflow you want to create a custom field on the Purchase Order form called Approver. We will also be using the Employee field, prepopulated with the user who creates the Purchase Order and Approval Status. These are both standard fields.

2. Create a new workflow record.

Navigate to Customizations > Workflow > Workflows > New. The record type is Transactions and then Purchase Order. Under Initiation you want select Event Based and tick On Create. You only need this workflow triggering when a new Purchase Order is created.

Creating a new workflow record for a Purchase Order Approval workflow.

3. Create the workflow states.

We are going to keep this workflow very basic so we just want four states. For ease of understanding it would be best to arrange them in the way I have below and rename them accordingly. A more advanced workflow could have different levels of approval so that belly where we currently have ‘Pending Approval’ might become two, three or even four or more different states for the staggered levels of approval.

Creating the necessary states for the Purchase Order Approval Workflow.

4. Write the workflow actions.

Initiation state

The initiation state is going to begin when a new record is generated. We want this state to set the approval status and create a button to allow the Purchase Order to be submitted for approval. Create the following actions –

– Set Field Value – Trigger on: Entry, Field: Approval Status, Value: (Static Value) Pending Approval.

– Add Button – Trigger on: Before Record Load, Label: Submit for Approval, Ensure the Save Record First checkbox is marked. This last instruction means we will not see the Submit for Approval button until the Purchase Order has been saved.

Lastly, when the workflow exits this state we want the required Approver to be populated in the Approver box. So, who is the required approver? There are a few different methods you might choose to use. For this example I am simply going to use the Supervisor indicated on the Employee record. If you didn’t want to do this you could use a specific Purchase Approver on the Employee record or a custom field on the Department or Location record.

– Set Field Value – Trigger on: Exit, Field: Approver, Value: (From Field) Employee > Supervisor.

Pending Approval state

In this state we are going to lock the record so no one can make any further changes until the Approver has actioned. We than need to give that Approver the ability to approve or reject.

– Lock Record: Trigger on: Before Record Load.

– Add Button – Trigger on: Before Record Load, Label: Approve. On this action we will set a condition as well. The condition should be that the current user is the same person indicated in the Approver field – User = Approver.

– Add Button – Trigger on: Before Record Load, Label: Reject, Condition: User = Approver

Approved state

In the approved state we are going to update the approval status to Approved. I am also going to lock the record to prevent any further changes. Once you are more comfortable with workflows I would suggest actually creating conditions that do allow changes but that will push the status back to Pending if changes are made. This really depends on the business needs though.

– Lock Record – Trigger on: Before Record Load.

– Set Field Value – Trigger on: Entry, Field: Approval Status, Value: (Static Value) Approved.

Rejected state

The rejected state is really a mirror of the initiation state but with a rejected status. This gives the user the ability to resubmit the Purchase Order once they have made changes, if they so wish.

– Set Field Value – Trigger on: Entry, Field: Approval Status, Value: (Static Value) Rejected.

– Add Button – Trigger on: Before Record Load, Label: Resubmit for Approval, Ensure the Save Record First checkbox is marked.

– Set Field Value – Trigger on: Exit, Field: Approver, Value: (From Field) Employee > Supervisor.

– Set Field Value – Trigger on: Exit, Field: Approval Status, Value: (Static Value) Pending Approval

5. Set the workflow transitions.

Now we have all our actions we need to set rules that will move the workflow from one state to another. These are called transitions. The transitions you will need to set are as follows –

Initiation state

– Transition to Pending Approval state when Submit for Approval is clicked.

Setting the trigger to transition on a NetSuite workflow state

Pending Approval state

– Transition to Rejected state when Reject button is clicked.

– Transition To Approved state when Approve button is clicked.

Rejected state

– Transition to Pending Approval when Resubmit for Approval button is clicked

Since this is just a very basic approval flow framework we will not have any transitions from Approved. We do want the record to stay in the workflow though so we will open the workflow state and check the Do Not Exit Workflow checkbox.

Ticking the preference to not exit the workflow on a NetSuite Purchase Order Approval workflow.

Now go raise a Purchase Order and test your workflow. If you are testing in Sandbox you could set your Supervisor as a test user so you can log in and Approve and Reject.

As previously mentioned this is a very basic approval flow and probably not sufficient for a lot of businesses but it is a framework you can build off. You will also need to think of either automated emails or dashboard reminders so users know when they have something to approve.

There is a lot you can do with an approval flow and it can be as complicated as your business wants to be. Hopefully you find this a good starting point.


Need help writing a cover email for your Purchase Order? Check out NetSuite Text Enhance.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *