Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The NetSuite Pro

The NetSuite Pro Logo The NetSuite Pro Logo

The NetSuite Pro Navigation

  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask A Question
  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Home/ NetSuite Customization Guide: Fields, Forms, Workflows & Scripts/Advanced Approval Workflows in NetSuite (Multi-Level & Conditional Logic)

Advanced Approval Workflows in NetSuite (Multi-Level & Conditional Logic)

🧩 Advanced Approval Workflows in NetSuite (Multi-Level & Conditional Logic)

Introduction

Approvals are a core part of every business process — from purchase orders to expense reports and customer credit limits.
In NetSuite, you can automate and streamline these processes using SuiteFlow Workflows.

While simple one-step approvals are common, real businesses need multi-level, conditional, and parallel approval workflows based on criteria such as amount, department, or role.

This guide shows how to build these advanced approval flows — visually, without code.


💡 What Are Approval Workflows?

An Approval Workflow is a SuiteFlow process that routes records for review and approval based on defined rules and conditions.

Examples include:

  • PO > $5,000 → Approve by Manager
  • PO > $25,000 → Approve by CFO
  • Expenses by Sales → Approve by Sales Director

You can automate status updates, email notifications, and record locks during the process.


🧱 Key Workflow Components

ComponentDescription
Base Record TypeTransaction or entity (e.g., Purchase Order, Expense Report)
InitiationWhen the workflow starts (Record creation, field update, or schedule)
StatesLogical steps (Pending Approval → Approved → Rejected)
TransitionsMovement between states based on conditions
ActionsTasks like sending emails, setting fields, or triggering scripts

⚙️ Step-by-Step: Building a Multi-Level Approval Workflow

Step 1: Create a New Workflow

  • Navigate to Customization → Workflow → Workflows → New
  • Record Type: Purchase Order
  • Name: Purchase Order Approval Workflow
  • Release Status: Testing
  • Initiation: On Create & On Edit

Step 2: Add Workflow States

Create three states:

  1. Pending Approval
  2. Manager Review
  3. CFO Approval
  4. Approved

Step 3: Configure Entry Criteria

In the Workflow Definition:

  • Condition: Status is Pending Approval
  • Optional: Total > 0 (filter only relevant records)

Step 4: Add Actions in “Pending Approval”

Add these workflow actions:

  • Send Email: Notify Manager
  • Set Field Value: Status → Pending Approval
  • Lock Record: Prevent editing until approved

Step 5: Add Transitions

From Pending Approval → Manager Review
Condition: Total >= 5000
Action: Assign to Manager role.

From Manager Review → CFO Approval
Condition: Total >= 25000
Action: Assign to CFO.

From Manager Review → Approved
Condition: Total < 25000
Action: Set Status → Approved.

From CFO Approval → Approved
No condition — direct approval path.


Step 6: Add Buttons for Approvers

Under each review state:

  • Add “Approve” and “Reject” Buttons
    • Action: Set Field Value (Approval Status)
    • Transition to next state accordingly.

🧠 Example: Parallel Approvals (Department + Finance)

Use Parallel States when two roles must approve simultaneously.

Steps:

  1. Create two states — Department Approval and Finance Approval.
  2. Set both to transition into Final Approval only when both are approved.
  3. Use field flags (dept_approved = true, finance_approved = true).
  4. Add transition logic in Final Approval →
    Condition: dept_approved == true AND finance_approved == true.

✅ Result:
Both teams can approve independently, and the record is finalized automatically when both approvals are complete.


💬 Example: Conditional Approvals by Department

Add logic based on custom fields or employee roles.

If Department = 'Sales' → Route to Sales Director
If Department = 'Finance' → Route to CFO
Else → Route to Operations Manager

You can configure this using Workflow Conditions and Formula Fields with CASE WHEN expressions.


🧮 Formula Example for Conditional Transition

CASE 
   WHEN {department} = 'Sales' THEN 'Sales Director' 
   WHEN {department} = 'Finance' THEN 'CFO'
   ELSE 'Operations Manager' 
END

Use this in a transition condition or custom field that determines the approver.


⚡ Enhancing Approvals with SuiteScript

For added flexibility, use a User Event or Workflow Action Script:

/**
 * @NApiVersion 2.1
 * @NScriptType WorkflowActionScript
 */
define(['N/record', 'N/log'], (record, log) => {
    function onAction(context) {
        const rec = context.newRecord;
        const total = rec.getValue('total');

        if (total > 5000) rec.setValue('custbody_approval_level', 'Manager');
        if (total > 25000) rec.setValue('custbody_approval_level', 'CFO');
        log.debug('Approval Logic', 'Set approval level based on total amount');
    }
    return { onAction };
});

✅ You can trigger this workflow action on Before Record Submit or as a custom workflow action.


📈 Notifications and Reminders

  • Add Email Notifications in each state (approver + requester).
  • Use FreeMarker variables in the message body:
    Dear ${transaction.approver}, your approval is pending for PO #${transaction.tranid}.
  • Create Reminders Portlet filters for pending approvals.

🧩 Reporting on Approvals

You can monitor workflow progress using:

  • Saved Search: filter Status = Pending Approval.
  • SuiteAnalytics Workbook: group by Approver, Department, or Amount.
  • Custom Portlet: display “Pending Approvals” on dashboard.

⚙️ Common Mistakes & Fixes

ProblemCauseFix
Workflow not triggeringCondition mismatchVerify initiation and status filters
Approver not receiving emailMissing recipient fieldCheck “Recipient From Field” in email action
Record stuck in stateNo transition condition metAdd fallback transition
Approvals skippedDuplicate or overlapping conditionsUse exclusive transitions per amount range
Buttons missingState not configured for “On View”Enable “Allow Button” on state definition

🧠 Best Practices

  • Always start in Testing Mode before releasing.
  • Keep conditions simple and non-overlapping.
  • Name states and transitions clearly (e.g., “Level 1 → Level 2”).
  • Use Custom Fields like custbody_approval_level or custbody_approved_by.
  • Document approval rules for audit purposes.
  • For large organizations, use Matrix or Parallel Approvals.

📚 Related Tutorials

  • 👉 Creating Dynamic Email Templates in NetSuite
  • 👉 Custom Buttons & Actions in NetSuite
  • 👉 SuiteAnalytics Workbook for Reporting

❓ FAQ

Q1. Can I use workflows for Employee or Custom Record approvals?
Yes — any record type that supports SuiteFlow can have an approval workflow.

Q2. Can workflows run on imported records?
Yes, if Trigger on Create is enabled and the import populates required fields.

Q3. Can I send reminders automatically if not approved?
Yes, add a Scheduled Action → Send Email if “Approval Status = Pending” for >3 days.

Q4. Can approvals be delegated?
Yes — through Employee Delegation feature (Setup → Company → Approval Routing).


🧭 Summary

Advanced Approval Workflows in NetSuite enable businesses to automate multi-step, conditional, and role-based approvals without code.
From PO hierarchies to cross-department routing, SuiteFlow provides flexibility for every process.

Mastering workflow logic helps your team save time, enforce compliance, and achieve full transparency across approvals.

Share
  • Facebook

Leave a ReplyCancel reply

Sidebar

Ask A Question

Stats

  • Questions 6
  • Answers 6
  • Best Answers 0
  • Users 2
  • Popular
  • Answers
  • Rocky

    Issue in running a client script in NetSuite SuiteScript 2.0 ...

    • 1 Answer
  • admin

    How can I send an email with an attachment in ...

    • 1 Answer
  • admin

    How do I avoid SSS_USAGE_LIMIT_EXCEEDED in a Map/Reduce script?

    • 1 Answer
  • admin
    admin added an answer The issue is usually caused by following Wrong script file… September 14, 2025 at 10:33 pm
  • admin
    admin added an answer Steps to send an Invoice PDF by email: define(['N/email', 'N/render',… August 28, 2025 at 3:05 am
  • admin
    admin added an answer This error means your script hit NetSuite’s governance usage limit… August 28, 2025 at 3:02 am

Top Members

Rocky

Rocky

  • 1 Question
  • 22 Points
Begginer
admin

admin

  • 5 Questions
  • 2 Points

Trending Tags

clientscript netsuite scripting suitescript

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

© 2025 The NetSuite Pro. All Rights Reserved