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)

🧭 Introduction

Approvals are at the heart of every organization’s internal control and compliance process. Whether it’s a Purchase Order, Expense Report, or Sales Discount, NetSuite provides a visual automation tool called SuiteFlow to manage these approvals seamlessly.

While a simple one-level approval might work for smaller companies, larger organizations need multi-level, conditional, and parallel approval workflows to match their structure.

This guide will show you how to:
✅ Design multi-tier approval chains
✅ Create conditional approval routing (by department or amount)
✅ Send email alerts and record changes automatically
✅ Build audit-ready approval tracking


💡 What Is an Approval Workflow?

An Approval Workflow in NetSuite defines how a transaction moves from submission to approval or rejection.
Each step can trigger an action — updating a field, locking the record, or sending notifications.

SuiteFlow enables you to:

  • Automate record approval based on rules
  • Assign tasks to users or roles
  • Prevent unauthorized edits
  • Maintain an audit trail for compliance

🧩 Key Concepts

TermMeaning
Workflow StatesDistinct stages (Pending Approval → Manager Review → Approved)
TransitionsConditions that move a record between states
ActionsAutomated operations (Send Email, Set Field, Lock Record)
ConditionsLogical checks (e.g., Total > 5000)
ButtonsUser-triggered actions (Approve / Reject)

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

1️⃣ Create a New Workflow

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

2️⃣ Add Workflow States

Define your stages clearly:

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

💡 Tip: Keep state names intuitive; they’ll appear in the UI.


3️⃣ Set Entry Conditions

In the main workflow definition, add entry criteria:

Status = Pending Approval
AND Total > 0

This ensures the workflow triggers only for new or editable records awaiting approval.


4️⃣ Configure Pending Approval State

Actions to Add:

  • Set Field Value: Status → Pending Approval
  • Send Email: Notify Manager (use ${transaction.createdby} as sender)
  • Lock Record: Prevent edits during review

Transition → Manager Review
Condition: Total >= 5000


5️⃣ Configure Manager Review

Actions:

  • Add “Approve” and “Reject” buttons
  • Set Next Approver field to CFO (if Total > 25,000)

Transition → CFO Approval
Condition: Total >= 25000
Else → Approved


6️⃣ Configure CFO Approval

Actions:

  • Send notification to CFO
  • Unlock Record if Approved
  • Set custom field custbody_approval_status = Approved

Transition → Approved


🧮 Example: Parallel Approvals (Finance + Operations)

To build parallel approvals, create two approval states:

  • Finance Approval
  • Operations Approval

Add a field flag on record:
custbody_finance_approved
custbody_ops_approved

Transition → Final Approval
Condition:

{custbody_finance_approved} = true AND {custbody_ops_approved} = true

✅ Both teams can approve independently, and the record finalizes automatically.


🧠 Example: Conditional Approvals by Department

Use formulas to route approvals dynamically:

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 to select approver role.


💬 Email Notifications

Add “Send Email” actions in each state.
Use dynamic FreeMarker variables for personalization:

<p>Dear ${approver.firstname},</p>
<p>You have a new Purchase Order (#${transaction.tranid}) awaiting approval.</p>
<p>Total Amount: ${transaction.total}</p>
<p><a href="${transaction.url}">View Record</a></p>

✅ Helps keep approvers informed and ensures faster action.


📊 Tracking & Reporting Approvals

Option 1 — Saved Search:

  • Type: Transaction → Purchase Order
  • Add Filter: Approval Status = Pending / Approved
  • Columns: Approver, Amount, Date Approved

Option 2 — SuiteAnalytics Workbook:

  • Create dataset using fields: Total, Approver, Status
  • Add pivot table: Approvals by Department
  • Add chart: Average Approval Time by Amount

🔐 Best Practices

✅ Always lock records during approval to avoid mid-process edits.
✅ Use clear email templates and roles (no personal emails).
✅ Document approval thresholds (Manager = up to $25k, CFO > $25k).
✅ Test all paths in Sandbox before release.
✅ Keep workflow versions — don’t overwrite working ones.


⚡ Common Issues & Fixes

IssueCauseFix
Workflow not triggeringWrong status or initiation typeUse On Create & On Edit
Approver not receiving emailRecipient field misconfiguredUse Employee Field → Next Approver
Record stuck in stateMissing transition conditionAdd default transition path
Approval skippedCondition overlapUse exclusive ranges (e.g., 0–5000, 5001–25000)

🧰 Optional: Hybrid Workflow + SuiteScript

You can enhance SuiteFlow using a Workflow Action Script for complex logic.

Example — Set dynamic approver from department head:

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

        const deptHead = search.lookupFields({
            type: 'department',
            id: dept,
            columns: ['custrecord_department_head']
        }).custrecord_department_head[0].value;

        rec.setValue('nextapprover', deptHead);
    };
    return { onAction };
});

✅ SuiteScript + Workflow together = maximum flexibility.


📚 Related Tutorials

  • 👉 Creating Dynamic Email Templates in NetSuite
  • 👉 SuiteScript Security & Governance Best Practices
  • 👉 Integration Logging Dashboard for Monitoring

❓ FAQ

Q1. Can I use workflows for Expense Reports or Journal Entries?
Yes — any record type that supports SuiteFlow can have an approval workflow.

Q2. Can workflows handle imported records?
Yes, if Trigger on Create is checked.

Q3. Can I add time-based escalation (auto-approve)?
Yes — use a Scheduled Action that sets status = Approved after X days.

Q4. How can I track who approved?
Add custom field custbody_approved_by and set via workflow or script.


🧭 Summary

Advanced Approval Workflows in NetSuite empower businesses to automate complex decision chains with transparency and control.
By leveraging SuiteFlow’s visual builder, conditional routing, and email automation, you can create a scalable approval system that aligns with corporate policies — and is fully audit-ready.

From purchase approvals to cross-department sign-offs, this setup ensures your organization runs faster, smarter, and more compliantly.

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