Sort by Topics, Resources
Clear
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Salto for

NetSuite

Articles

SHARE

How to think like a NetSuite Pro - An Approval Workflow Solution

Sonny Spencer, BFP, ACA

February 29, 2024

20

min read

Introduction

When it comes to customizing NetSuite, workflows are a solid choice for functional NetSuite Pros and when tasked with any sort of approval process to be managed in NetSuite, workflows should be the first thing that comes to mind.

Salto Tip: While workflows are the best choice for NetSuite approval processes, be sure to not overcomplicate the system logic with many workflow action scripts or attempt to run multiple workflows on the same record type. It can lead to unexpected behavior.

The request

In order to establish better controls in your NetSuite environment, you have been asked to build a journal entry approval workflow. One of the great things about SuiteFlow is that NetSuite provides some basic workflow templates and it just so happens that one of those templates addresses journal entry approvals.

Screenshot of workflow creation screen with “From Template” selected

Salto Tip: Don’t just assume the out of the box journal entry approval workflow meets your business requirements. Instead, consider it a solid starting point that can (and should) be adapted to meet your specific needs.

Here are the formal requirements:

  1. Implement an approval workflow that only allows the accounting manager and controller user roles to approve journal entries.
  2. Users cannot approve journal entries they created themselves.
  3. Due to the large volume of journal entries requiring approval, system emails should not be sent to request approval or provide notification of an approval.
  4. Invalid journal entries should be rejected and follow a straightforward resubmission process.
  5. Journal entries created via API should be automatically approved.

With these requirements, how should you think through solutioning? Let’s explore.

Experience the Ease & Confidence of NetSuite Customizations with Salto

Automate the way you migrate Jira configurations from sandbox to production

STAY UP TO DATE

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

The thought process

As I read through the requirements there are some key things that catch my attention.

  1. For this workflow, we need to allow users with specific roles the ability to approve all journal entries that they did not create themselves. This differs from the out of the box journal entry approval workflow that assumes the correct journal entry approver is the supervisor of the user who created the transaction. Logic updates will be necessary.
  2. The out of the box workflow incorporates email notifications when a journal entry is approved or rejected. From the requirements, we should plan to remove the email notification from the approval step.
  3. There are a number of ways to automatically approve any journal entries created via API. For this use case let’s assume that the business is using a separate integration/API user account when integrating journal entry data from the external source(s). This will allow for ease of separation without having to toggle “contexts” for specific workflow actions.

Now that you understand the key requirements, it’s time to execute.

The execution

Step 1 - Playback requirements

Now that you have a good understanding of what your end users are looking for and how to solve for it, you should take the time to playback (and in some cases challenge) the requirements to make sure nothing has been missed. As a NetSuite Pro, this is where you can add value by asking the right questions upfront to avoid future testing failures, rework and scope creep.

For this particular request, it will be worth confirming that all journal entries created via API are created by the same API user account. Also, you can offer advice for alerting users when there are journal entries pending approval, given the requirement to not notify users when there is one. Dashboard tiles, reminders, saved search portlets, etc. are a number of different options you could propose in addition to the standard “Approve Journal Entries” page.

Step 2 - Solution design

When comparing the requirements to the out of the box journal entry approval workflow there are two primary differences (and other minor ones).

First you will need to update the criteria for adding the “Approve” and “Reject” buttons, as the workflow approver will not be the transaction creator’s supervisor, but instead anyone logged in with a number of specific user roles.

The other significant difference is to allow journal entries created via API to move directly into an approved state. There are a number of ways to manage this requirement, for example creating a separate workflow state entitled “Auto-Approve” and the criteria for transition into this workflow state checks the user record that created the transaction. If the creator is the API user account, then the journal entry will move into the “Auto-Approve” state, else it will move into the “Pending Approval” state.

Screenshot of workflow states and transitions that will meet this business’ approval workflow requirements

In summary, the solution requires the following customizations:

  • The creation of a new journal entry approval workflow (use the template and customize)
  • The creation of a new workflow state to capture auto-approved journal entries
  • The modification of workflow action and workflow transition logic to meet the specific requirements
  • Potentially the need for a custom saved search and related dashboard portlet

Review the solution design with your stakeholders before moving into the build phase of the project.

Salto Tip: As a best practice , use unique internal ID’s for all NetSuite customization, prefixed with your company name abbreviated. That said, it might be overkill to do this for every workflow state, action and transition. Use your best judgment.

Step 3 - Execution and deployment

Now that you are ready to execute on your approval workflow, don’t forget to keep the “Release Status” in “Testing” until you have completed the migration to Production at which point you can switch it to “Released”.

For testing purposes, keep instance and history enabled as well as “Enable Logging”. This will support troubleshooting as you work through testing. Once the solution is deployed to Production you can disable these settings to help with system performance.

Speaking of deploying the workflow to Production, it can be incredibly painful for any NetSuite Pro to migrate a NetSuite workflow from one environment to another, especially if attempting to do so manually. The risk that one minor workflow setting is not set correctly is pretty high when considering all of the “Context” settings required for each workflow action.

Fortunately, NetSuite provides a number of out of the box solutions such as SuiteBundler, Copy to Account and SuiteCloud Development Framework (SDF) to support the Production migration process. Each solution has its own advantages (and disadvantages), so you will need to review these to see which makes the most sense depending upon the complexity of the custom solution and your skillset.

Another option to consider for migrating NetSuite custom solutions to your Production environment is Salto. Check out the Salto SuiteApp to see how it can empower NetSuite Pros through the execution of quicker, error-free deployments. Not only that, the SuiteApp allows for direct environment comparisons as well as efficient system rollbacks where the customizations don’t have the intended impact in your Production environment. These rollbacks are typically time-sensitive, so it is important to have an established process in place for when this is required.

Now that you have deployed the solution to Production, the final step is to run a “smoke test” to confirm the workflow will execute as expected on journal entries created by end users as well as those created via API.

STAY UP TO DATE

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Useful references for this custom solution

For more information on expanding your NetSuite toolkit and how to think like a NetSuite Pro, check out Salto’s blog posts that explore some of the things that NetSuite Developers and NetSuite Administrators should be leveraging within the NetSuite ecosystem.

Final thoughts

Leveraging SuiteFlow is a great choice for any NetSuite Administrator who does not have nor have access to the skills of a NetSuite Developer. It is far superior to any manual approval process and gives businesses the flexibility to adopt the workflow to meet their specific needs. As we saw in the use case above, this company had role-based journal entry approvals, whereas other companies will opt for pre-determined journal entry approvers set on employee records.

One of the other great things about leveraging SuiteFlow is the workflow audit trail that will track the detailed transitions between approval workflow states and who made those transitions. In this way, you are leveraging one of NetSuite’s core strengths - its granular audit trail reporting capabilities. This is extremely valuable to NetSuite customers, especially those focused on their control environment.

WRITTEN BY OUR EXPERT

Sonny Spencer, BFP, ACA

Director of Finance Operations

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.

Sort by Topics, Resources
Clear
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Salto for

NetSuite

NetSuite

SHARE

How to think like a NetSuite Pro - An Approval Workflow Solution

Sonny Spencer, BFP, ACA

February 29, 2024

20

min read

Introduction

When it comes to customizing NetSuite, workflows are a solid choice for functional NetSuite Pros and when tasked with any sort of approval process to be managed in NetSuite, workflows should be the first thing that comes to mind.

Salto Tip: While workflows are the best choice for NetSuite approval processes, be sure to not overcomplicate the system logic with many workflow action scripts or attempt to run multiple workflows on the same record type. It can lead to unexpected behavior.

The request

In order to establish better controls in your NetSuite environment, you have been asked to build a journal entry approval workflow. One of the great things about SuiteFlow is that NetSuite provides some basic workflow templates and it just so happens that one of those templates addresses journal entry approvals.

Screenshot of workflow creation screen with “From Template” selected

Salto Tip: Don’t just assume the out of the box journal entry approval workflow meets your business requirements. Instead, consider it a solid starting point that can (and should) be adapted to meet your specific needs.

Here are the formal requirements:

  1. Implement an approval workflow that only allows the accounting manager and controller user roles to approve journal entries.
  2. Users cannot approve journal entries they created themselves.
  3. Due to the large volume of journal entries requiring approval, system emails should not be sent to request approval or provide notification of an approval.
  4. Invalid journal entries should be rejected and follow a straightforward resubmission process.
  5. Journal entries created via API should be automatically approved.

With these requirements, how should you think through solutioning? Let’s explore.

What if Zendesk was 4x less work?

Request a Demo Get started with Salto

The thought process

As I read through the requirements there are some key things that catch my attention.

  1. For this workflow, we need to allow users with specific roles the ability to approve all journal entries that they did not create themselves. This differs from the out of the box journal entry approval workflow that assumes the correct journal entry approver is the supervisor of the user who created the transaction. Logic updates will be necessary.
  2. The out of the box workflow incorporates email notifications when a journal entry is approved or rejected. From the requirements, we should plan to remove the email notification from the approval step.
  3. There are a number of ways to automatically approve any journal entries created via API. For this use case let’s assume that the business is using a separate integration/API user account when integrating journal entry data from the external source(s). This will allow for ease of separation without having to toggle “contexts” for specific workflow actions.

Now that you understand the key requirements, it’s time to execute.

The execution

Step 1 - Playback requirements

Now that you have a good understanding of what your end users are looking for and how to solve for it, you should take the time to playback (and in some cases challenge) the requirements to make sure nothing has been missed. As a NetSuite Pro, this is where you can add value by asking the right questions upfront to avoid future testing failures, rework and scope creep.

For this particular request, it will be worth confirming that all journal entries created via API are created by the same API user account. Also, you can offer advice for alerting users when there are journal entries pending approval, given the requirement to not notify users when there is one. Dashboard tiles, reminders, saved search portlets, etc. are a number of different options you could propose in addition to the standard “Approve Journal Entries” page.

Step 2 - Solution design

When comparing the requirements to the out of the box journal entry approval workflow there are two primary differences (and other minor ones).

First you will need to update the criteria for adding the “Approve” and “Reject” buttons, as the workflow approver will not be the transaction creator’s supervisor, but instead anyone logged in with a number of specific user roles.

The other significant difference is to allow journal entries created via API to move directly into an approved state. There are a number of ways to manage this requirement, for example creating a separate workflow state entitled “Auto-Approve” and the criteria for transition into this workflow state checks the user record that created the transaction. If the creator is the API user account, then the journal entry will move into the “Auto-Approve” state, else it will move into the “Pending Approval” state.

Screenshot of workflow states and transitions that will meet this business’ approval workflow requirements

In summary, the solution requires the following customizations:

  • The creation of a new journal entry approval workflow (use the template and customize)
  • The creation of a new workflow state to capture auto-approved journal entries
  • The modification of workflow action and workflow transition logic to meet the specific requirements
  • Potentially the need for a custom saved search and related dashboard portlet

Review the solution design with your stakeholders before moving into the build phase of the project.

Salto Tip: As a best practice , use unique internal ID’s for all NetSuite customization, prefixed with your company name abbreviated. That said, it might be overkill to do this for every workflow state, action and transition. Use your best judgment.

Step 3 - Execution and deployment

Now that you are ready to execute on your approval workflow, don’t forget to keep the “Release Status” in “Testing” until you have completed the migration to Production at which point you can switch it to “Released”.

For testing purposes, keep instance and history enabled as well as “Enable Logging”. This will support troubleshooting as you work through testing. Once the solution is deployed to Production you can disable these settings to help with system performance.

Speaking of deploying the workflow to Production, it can be incredibly painful for any NetSuite Pro to migrate a NetSuite workflow from one environment to another, especially if attempting to do so manually. The risk that one minor workflow setting is not set correctly is pretty high when considering all of the “Context” settings required for each workflow action.

Fortunately, NetSuite provides a number of out of the box solutions such as SuiteBundler, Copy to Account and SuiteCloud Development Framework (SDF) to support the Production migration process. Each solution has its own advantages (and disadvantages), so you will need to review these to see which makes the most sense depending upon the complexity of the custom solution and your skillset.

Another option to consider for migrating NetSuite custom solutions to your Production environment is Salto. Check out the Salto SuiteApp to see how it can empower NetSuite Pros through the execution of quicker, error-free deployments. Not only that, the SuiteApp allows for direct environment comparisons as well as efficient system rollbacks where the customizations don’t have the intended impact in your Production environment. These rollbacks are typically time-sensitive, so it is important to have an established process in place for when this is required.

Now that you have deployed the solution to Production, the final step is to run a “smoke test” to confirm the workflow will execute as expected on journal entries created by end users as well as those created via API.

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Useful references for this custom solution

For more information on expanding your NetSuite toolkit and how to think like a NetSuite Pro, check out Salto’s blog posts that explore some of the things that NetSuite Developers and NetSuite Administrators should be leveraging within the NetSuite ecosystem.

Final thoughts

Leveraging SuiteFlow is a great choice for any NetSuite Administrator who does not have nor have access to the skills of a NetSuite Developer. It is far superior to any manual approval process and gives businesses the flexibility to adopt the workflow to meet their specific needs. As we saw in the use case above, this company had role-based journal entry approvals, whereas other companies will opt for pre-determined journal entry approvers set on employee records.

One of the other great things about leveraging SuiteFlow is the workflow audit trail that will track the detailed transitions between approval workflow states and who made those transitions. In this way, you are leveraging one of NetSuite’s core strengths - its granular audit trail reporting capabilities. This is extremely valuable to NetSuite customers, especially those focused on their control environment.

WRITTEN BY OUR EXPERT

Sonny Spencer, BFP, ACA

Director of Finance Operations

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.