NetSuite workflows allow for the creation of dynamic, custom process flows without the need for direct suitescript knowledge. While they can be powerful it is worth noting that there are certain actions that cannot be performed with a NetSuite workflow and instead should be addressed via SuiteScript. Consider the correct technical approach prior to jumping in and building a workflow.
Why are NetSuite workflows so convenient?
NetSuite workflows are convenient because of the no code user interface. They allow you to drag and drop NetSuite process flow states and transitions between states. Another great benefit is that you can refer to a specific NetSuite record and confirm which state of a workflow the record is currently in. This can help NetSuite Admins troubleshoot issues with a particular record without the need to review script error logs. Like scripts, workflows can be event driven or scheduled to run at certain times, again providing flexibility without a heavy developer background.
We will now explore how to create a workflow in NetSuite. A common use case for NetSuite workflows is for managing transaction approval processes. This could be for a NetSuite purchase order approval workflow, NetSuite vendor bill approval workflow or NetSuite order to cash process flow for example. We will focus on the NetSuite vendor bill approval workflow for a more detailed walkthrough as this process could be configured in NetSuite using the native SuiteFlow functionality. We will walk through a basic approval workflow example (no 2-way or 3-way match) but note this example can be extended based upon your business’ specific requirements.
Consider a simple, two-step approval workflow for vendor bills.
- First Approval = Department Approver
- Second Approval = Accounts Payable Manager
There are a number of different ways to approach setting up this approval hierarchy within NetSuite. One such way is to create a custom employee field on the department record to capture the “Department Approver”, which is referenced in the approval workflow for the first approval. The second approval could reference the user role itself, so that only a user with the Accounts Payable Manager role can approve.
The workflow summary is essential for executing a NetSuite workflow effectively. Some fields to consider prior to moving to building the workflow:
- Release Status – Set to “Testing” when workflow is in development. This will ensure the workflow only initiates for the user designated as the workflow “Owner”.
- Keep Instance and History – Retains workflow history even after the workflow is finished or cancelled. This can be helpful for audit trail purposes and general troubleshooting.
- Enable Logging – Workflow execution logs provide a deeper level of audit trail and details for troubleshooting more complex workflow issues.
- Condition – Think about which NetSuite records this workflow should execute on. Typically, a workflow needs to be executed on a subset of records, so give thought to the conditions that should be applied to the workflow e.g. subsidiary.
Workflow First Approval State (start state)
There are 3 key actions in the first approval state and 1 transition to the second approval state.
- Set Field Value: Approval Status = Pending Approval. While vendor bills generally default to an approval status of “Pending Approval” it is recommended to set the field value just in case another process tries to force the value to “Approved”.
- Lock Record. Simple way to lock down record from edits during approval process.
- Add Button: First Approval. Criteria -> Department (Main) : Department Approver = Current User. It is critical to define the criteria on this workflow action as this will dictate which users can see the button to approve the vendor bill.
- Transition: Execute on Button “First Approval”. This keeps the transition logic simple. When the user clicks on the button to approve, the workflow is automatically transitioned to the second approval state.
Workflow Second Approval State
There are 2 key actions in the second approval state and 1 transition to the final approval state.
- Lock Record. Simple way to lock down record from edits during approval process.
- Add Button: Second Approval. Criteria -> User Role = Accounts Payable Manager. Again, make sure you define the workflow action criteria to restrict access to the button to approve the vendor bill.
- Transition: Execute on Button “Second Approval”. This keeps the transition logic simple. When the user clicks on the button to approve, the workflow is automatically transitioned to the final state.
Workflow Final State (do not exit workflow)
There are 2 key actions in the final state and 0 transitions.
- Set Field Value: Approval Status = Approved. Now that the vendor bill has been approved by both Department Approver and Accounts Payable Manager, we can set that Approval Status field to “Approved”.
- Lock Record. Simple way to lock down record from edits after the transaction is approved.
Enhancements to consider
This workflow example is a great first step. There are many different directions you can go with a NetSuite approval workflow; one of the benefits of NetSuite’s customizable interface. Here are a few enhancements to consider for your own approval process:
- Introduce a second button at each approval step to “Reject”. This allows the approver to send the transaction back in the approval chain should there be an issue to address. The same criteria for the “Approve” button should be utilized for the “Reject” button.
- Introduce an initial workflow state that can be used to set initial field values on the transaction record. This would allow the first approver to “Reject” the transaction. For the transition from this initial workflow state to “First Approval”, consider a new button labeled “Submit for Approval”.
- Many businesses consider transaction value in their approval process, so consider adding a new workflow state that takes this value into account. Perhaps the “First Approval” step is not required if the transaction value < $500 or perhaps an additional approval is required if the transaction value > $10,000. Both scenarios can be easily achieved with new workflow states and conditional transitions to/from those states.
Workflows best practices
Don’t start from scratch – NetSuite offers several out of the box workflows that can be used as a starting point. Consider installing one of the available SuiteApprovals SuiteApps that executes on the record you are working with. These can be installed just like any other NetSuite bundle. For example, if you want to install the out of the box NetSuite PO Approval Workflow, simply install bundle ID 239645. The broader SuiteApprovals SuiteApp is bundle 203059.
If you are wanting to understand how to use workflow for inventory management and other NetSuite process flows, you can find more information about the SuiteApprovals SuiteApp here,
Suite Note – These bundles are NetSuite managed bundles. In other words, they are automatically updated by NetSuite, so you risk losing customization added to the out of the box workflow. Instead make a copy of the workflow and customize the copied version to mitigate this risk altogether. Unless you have a highly customized approval process it is recommended to start with the applicable SuiteApprovals workflow as a starting point, save a copy and customize to meet the business requirements.
1. Workflow state names matter – Make the state names something meaningful that tell the user what exactly to expect when the workflow is executing in a given state, else risk causing confusion to NetSuite users and Admins once the workflow has been released. Generally updating IDs on workflow states, actions and transitions is overkill.
2. End users like buttons – Where it makes sense, consider using the NetSuite workflow action “Add Button”. Not only does this help drive end user behavior, but also provides insight as to how the workflow functions vs say a “Set Field Value” action that executes after the user sets a field value. The more end users understand the system workflows the more they will be willing to adopt them, from a change management perspective.
Suite Note – Button actions can be very powerful, as they allow an end user the ability to record many changes simultaneously (almost) with a single click. Users must avoid double clicking a button as this can lead to inadvertent workflow conflicts that result in errors or unexpected behavior. Be sure to remind your end users not to accidentally double click on buttons.
3. Change ID – Don’t forget to change the ID of your workflow to something more meaningful than “customworkflow123”. This will help with migrating workflows between NetSuite environments.
4. Final state – Ensure your workflow has a final state. This allows a user to easily identify if the workflow has been fully executed on a record as well as set final field values that will not conflict with other actions after a button action is processed.
5. Stop migrating manually – NetSuite workflows are one of the more challenging objects to migrate between environments. Many companies will manage workflow migrations manually given they will need to review every workflow state, action, field to ensure they are accurate. Doing so creates risk of human error. With any workflow, the slightest difference in a field value or context value can have a significant impact on the workflow outcome.
Suite Note – Consider leveraging a tool, such as Salto, that will manage the migration process of your workflows seamlessly. Doing so reduces time, risk and ultimately frees up the NetSuite Admin to focus on value-add initiatives.
When leveraged correctly, NetSuite workflows can automate complex business processes and provide for a seamless end user experience. They allow for troubleshooting at the individual record level when workflow logs are captured, which can be invaluable to a NetSuite Admin, especially when workflow states are named in a meaningful way.
WRITTEN BY: Sonny Spencer
Sonny is a seasoned NetSuite veteran, with more than 7 years experience implementing NetSuite and architecting NetSuite solutions for a wide variety of public and private companies, on a global scale. He leverages his background both as a Chartered Accountant and Certified NetSuite Administrator to design and build NetSuite solutions that solve real world problems. Sonny is an active member of the NetSuite community, participating in local NetSuite meetups, NetSuite forums and groups focused on financial system optimization.