Appendix A

Glossary of NetSuite Terms

A comprehensive dictionary of NetSuite terminology, acronyms, and concepts commonly encountered during implementations.

A
Account
A record in the Chart of Accounts used to categorize financial transactions. Types include Asset, Liability, Equity, Income, Expense, and COGS.
Advanced Revenue Management (ARM)
NetSuite module for ASC 606/IFRS 15 compliance, automating revenue recognition across multiple performance obligations.
Allocation Schedule
A configuration that distributes amounts across multiple segments (subsidiaries, departments, classes, locations) based on defined percentages or formulas.
Approval Routing
Automated workflow that routes transactions to designated approvers based on criteria like amount thresholds, departments, or custom fields.
Assembly Item
An item type representing a finished product manufactured from component items defined in a Bill of Materials (BOM).
B
Bill of Materials (BOM)
A list of raw materials, components, and quantities needed to manufacture an assembly item. Supports multiple revisions and effective dates.
Bin
A specific storage location within a warehouse location. Used for detailed inventory tracking when Bin Management feature is enabled.
Bundle
A packaged collection of customizations (scripts, records, workflows) that can be installed as a unit. Used for SuiteApps and custom solutions.
C
Cash Basis Accounting
Accounting method that recognizes revenue when cash is received and expenses when cash is paid, as opposed to Accrual basis.
Chart of Accounts (COA)
The complete list of accounts used to record transactions. Shared across all subsidiaries in OneWorld, with account-specific subsidiary restrictions available.
Class
A classification segment used for reporting and analysis. Often used for product lines, business units, or projects. Can be required on transactions.
Committed
Inventory quantity reserved for pending transactions (sales orders, transfer orders). Reduces available quantity but not on-hand quantity.
Costing Method
The method used to value inventory: Average, FIFO (First-In-First-Out), LIFO (Last-In-First-Out), or Standard costing.
Credit Memo
A transaction that reduces a customer's balance. Can be applied to open invoices or refunded to the customer.
CSV Import
Native tool for bulk importing data from comma-separated value files. Supports most record types with field mapping capabilities.
Custom Field
User-defined field added to extend standard NetSuite records. Types include Free-Form Text, List/Record, Date, Checkbox, and more.
Custom Record Type
User-defined record type for storing data not covered by standard records. Fully customizable with fields, forms, and access controls.
Custom Segment
User-defined classification segment beyond standard segments (subsidiary, department, class, location). Creates dedicated GL impact column.
D
Dashboard
A personalized home page displaying portlets (KPIs, reports, shortcuts, reminders) based on role and user preferences.
Dataset
SuiteAnalytics Workbook component for creating reusable data definitions with joins, calculated fields, and filters.
Demand Planning
Module that forecasts future demand based on historical data and allows manual adjustments for promotions or seasonality.
Department
A classification segment typically representing organizational structure (HR, Finance, Sales). Used for budgeting and P&L reporting.
Drop Ship
Fulfillment method where items ship directly from vendor to customer, bypassing your warehouse.
E-F
Elimination
Journal entries that remove intercompany transactions during consolidation to prevent double-counting in combined financial statements.
Entity
A party that transacts with your organization: Customer, Vendor, Employee, Partner, or Contact.
Feature
Functionality that can be enabled or disabled at Setup Company Enable Features. Some features require additional licensing.
FIFO
First-In-First-Out costing method. Assumes oldest inventory is sold first. Required for some industries and jurisdictions.
Fulfillment
The process of shipping items to customers. Item Fulfillment records reduce inventory and trigger shipping integration.
G-H
GL Impact
The debit/credit entries a transaction creates in the General Ledger. Viewable on transactions via the GL Impact subtab.
Governance
System limits on SuiteScript operations (API calls, queries, memory) to ensure fair resource usage across all accounts.
Hypercare
Intensive support period immediately after go-live, typically 2-4 weeks with dedicated on-site or remote assistance.
I-J
Intercompany
Transactions between subsidiaries within the same OneWorld account. Require elimination during consolidation.
Internal ID
Unique numeric identifier assigned to every record in NetSuite. Used in scripts, integrations, and saved searches.
Inventory Adjustment
Transaction that increases or decreases inventory quantities and values without a purchase or sale.
Item Receipt
Transaction that records receipt of items from a purchase order or transfer order, increasing inventory.
Journal Entry
Manual transaction with explicit debit and credit lines. Used for adjustments, accruals, and entries not captured by other transaction types.
K-L
Kit Item
A collection of items sold together but not assembled. Components ship separately and can have different fulfillment locations.
Location
A physical place where inventory is stored or business operates. Can be warehouses, stores, or offices.
Lot Number
Identifier assigned to a batch of items for tracking purposes. Enables traceability for recalls and quality control.
M-N
Map/Reduce Script
SuiteScript type for processing large data sets in parallel. Automatically handles governance and restarts after timeouts.
Matrix Item
Parent item with child items representing attribute combinations (size, color). Simplifies management of product variants.
MRP (Material Requirements Planning)
Module that calculates material needs based on demand forecasts, generating planned purchase orders and work orders.
Multi-Book Accounting
Feature enabling parallel accounting under multiple GAAP standards (e.g., US GAAP and IFRS) in separate accounting books.
NSAW (NetSuite Analytics Warehouse)
Cloud data warehouse providing pre-built analytics, dashboards, and AI-powered insights on NetSuite data.
O-P
OneWorld
Multi-subsidiary edition of NetSuite supporting multiple legal entities, currencies, and tax regimes in a single account.
Order-to-Cash (OTC)
End-to-end process from sales order through invoicing and payment receipt. Key process flow for most implementations.
Permission
Access level (View, Create, Edit, Full) granted to roles for specific record types, features, or transactions.
Portlet
A component on a dashboard displaying specific information (KPIs, saved searches, shortcuts, custom HTML).
Procure-to-Pay (PTP)
End-to-end process from purchase requisition through vendor bill and payment. Key process flow for purchasing operations.
R
Record
A single instance of a record type. For example, Customer ABC is a record of the Customer record type.
RESTlet
Custom SuiteScript endpoint that handles HTTP requests (GET, POST, PUT, DELETE) for integration purposes.
Revenue Recognition
Process of recording revenue in the appropriate accounting period based on earning criteria (delivery, milestones, time).
Role
A defined set of permissions determining what users can access and modify. Users can have multiple roles.
S
Sandbox
A copy of your production account for testing, training, or development. Can be refreshed from production periodically.
Saved Search
Reusable query returning filtered, formatted results. Foundation for reports, portlets, KPIs, and integrations.
Script Deployment
Configuration linking a SuiteScript to specific records, roles, or execution triggers.
Serial Number
Unique identifier for individual items. Enables tracking of specific units through their lifecycle.
Sourcing
Automatic population of field values based on related record data (e.g., customer address populating on sales order).
Sublist
A tabular section on a record containing line items (e.g., Items sublist on sales orders, Lines sublist on journal entries).
Subsidiary
A legal entity in OneWorld. Can be elimination subsidiaries for consolidation purposes.
SuiteAnalytics Connect
ODBC/JDBC driver enabling direct SQL queries against NetSuite data from external tools.
SuiteApp
A solution built on the SuiteCloud platform, available through SuiteApp Marketplace. Can be Built for NetSuite (BFN) certified.
SuiteBilling
Module for subscription and usage-based billing with automated invoicing and revenue recognition.
SuiteBuilder
Point-and-click customization tools for forms, fields, records, and workflows without coding.
SuiteCloud
NetSuite's development platform encompassing SuiteBuilder, SuiteFlow, SuiteScript, SuiteTalk, and SuiteAnalytics.
SuiteFlow
Visual workflow builder for automating business processes without code. Supports approvals, notifications, and record updates.
SuiteQL
SQL-like query language for NetSuite data. More powerful than saved searches with JOIN and aggregate support.
SuiteScript
JavaScript-based programming language for NetSuite customization. Current version is SuiteScript 2.1.
SuiteTalk
Web services API for NetSuite integration. Includes SOAP and REST protocols.
SuiteTax
Modern tax engine supporting automated tax calculation, nexus determination, and compliance reporting.
T-U
TBA (Token-Based Authentication)
Secure authentication method for integrations using consumer key/secret and token key/secret pairs.
Transaction
A record representing a business event: Sales Order, Invoice, Journal Entry, Purchase Order, etc.
Transfer Order
Transaction moving inventory between locations within the same subsidiary.
User Event Script
SuiteScript type triggered by record events (Before Load, Before Submit, After Submit).
V-Z
Vendor Bill
Transaction recording amounts owed to vendors. Can be created from purchase orders or entered directly.
Vendor Credit
Transaction reducing amounts owed to a vendor. Applied to open bills or refunded.
WIP (Work in Progress)
Inventory value of partially completed assemblies or work orders. Tracked in designated GL accounts.
Work Order
Transaction initiating the manufacturing process to build an assembly item from its components.
Workflow
Automated process built in SuiteFlow that executes actions based on triggers and conditions.
Appendix B

Keyboard Shortcuts & Navigation

Master NetSuite navigation with these keyboard shortcuts and navigation tips to boost productivity.

Global Shortcuts

These shortcuts work anywhere in NetSuite.

Shortcut Action Notes
Alt + G Global Search Quick access to search box. Type record type and identifier.
Alt + H Home/Dashboard Return to your role's home dashboard.
Alt + A Activities Menu Quick access to calendar, tasks, and events.
Alt + N New Transaction Menu Create new transactions without navigation.
Alt + S Save Record Save current record without scrolling to button.
Ctrl + S Save Record (alternate) Standard save shortcut supported in most browsers.
Alt + E Edit Record Enter edit mode on current record.
Esc Cancel/Close Close popups, cancel edits, or close dialogs.

Global Search Tips

Global Search (Alt + G) is the fastest way to navigate NetSuite. Use these patterns:

Search Pattern Example Result
Record type + name/ID cust ABC Corp Finds customers containing "ABC Corp"
Transaction type + number inv 12345 Finds invoice number containing 12345
Page name chart of accounts Navigates to Chart of Accounts page
go: prefix go:saved searches Navigates directly to page
new: prefix new:salesorder Creates new sales order
Internal ID cust 12345 Opens customer with internal ID 12345
Pro Tip: Record Type Abbreviations

Use these common abbreviations in Global Search:

  • cust - Customer
  • vend - Vendor
  • emp - Employee
  • inv - Invoice
  • so - Sales Order
  • po - Purchase Order
  • je - Journal Entry

Form & Record Shortcuts

When viewing or editing records:

Shortcut Action Context
Tab Next field Move forward through form fields
Shift + Tab Previous field Move backward through form fields
Enter Select/Confirm In dropdown: select highlighted option
/ Navigate options In dropdown: move through list
Ctrl + Click Open in new tab On links: open without leaving current page
Alt + Down Open dropdown Open list field dropdown
Type characters Filter dropdown Start typing to filter dropdown options

Sublist Shortcuts

When working with line items on transactions:

Shortcut Action
Ctrl + I Insert new line above current line
Ctrl + D Delete current line
Tab on last column Add new line and move to it
Click line number Select entire line for editing
Page Down Navigate to next page of lines

Saved Search Shortcuts

When working with saved search results:

Shortcut Action
Click column header Sort by column (toggle ascending/descending)
Ctrl + click column Add secondary sort
Click "Export" dropdown Export to CSV or Excel
Click row checkbox + Edit Bulk edit selected records

Browser Navigation

Shortcut Action
Alt + Back to previous page
Alt + Forward to next page
Ctrl + T Open new browser tab
Ctrl + W Close current tab
Ctrl + Tab Switch to next tab
F5 or Ctrl + R Refresh page
Ctrl + F5 Hard refresh (clear cache)
Browser-Specific Note

Some shortcuts vary by browser. Chrome, Firefox, and Edge have slightly different key combinations. The shortcuts listed here work in most modern browsers. Mac users should substitute Cmd for Ctrl and Option for Alt.

Appendix C

Common SuiteScript Patterns

Reference patterns for common SuiteScript 2.x development scenarios. These examples demonstrate best practices and can be adapted for specific use cases.

Script Types Overview

Script Type Trigger Common Uses
User Event Record load, submit, delete Field defaults, validation, related record updates
Client Page load, field change, sublist change, save Real-time validation, field calculations, UX enhancements
Scheduled Time-based (hourly, daily, etc.) Batch processing, reports, data cleanup
Map/Reduce On-demand or scheduled Large data processing, parallel operations
RESTlet HTTP request Custom API endpoints, integrations
Suitelet URL access Custom pages, forms, reports
Workflow Action SuiteFlow workflow Complex calculations, external calls from workflows
Mass Update Mass update execution Bulk record modifications

User Event Script Template

user_event_template.js
/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/log'], (record, log) => {

    /**
     * Before record is loaded (view, edit, copy)
     */
    const beforeLoad = (context) => {
        const { type, newRecord, form } = context;

        if (type === context.UserEventType.CREATE) {
            // Set defaults on new records
            newRecord.setValue({
                fieldId: 'custbody_custom_field',
                value: 'Default Value'
            });
        }
    };

    /**
     * Before record is saved to database
     */
    const beforeSubmit = (context) => {
        const { type, newRecord, oldRecord } = context;

        if (type === context.UserEventType.CREATE ||
            type === context.UserEventType.EDIT) {
            // Validation or calculations before save
            const amount = newRecord.getValue('total');
            if (amount > 10000) {
                newRecord.setValue({
                    fieldId: 'custbody_requires_approval',
                    value: true
                });
            }
        }
    };

    /**
     * After record is saved to database
     */
    const afterSubmit = (context) => {
        const { type, newRecord } = context;

        if (type === context.UserEventType.CREATE) {
            // Create related records, send notifications
            log.audit({
                title: 'Record Created',
                details: `ID: ${newRecord.id}`
            });
        }
    };

    return { beforeLoad, beforeSubmit, afterSubmit };
});

Client Script Template

client_script_template.js
/**
 * @NApiVersion 2.1
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord', 'N/dialog'], (currentRecord, dialog) => {

    /**
     * Page load - runs once when form loads
     */
    const pageInit = (context) => {
        const rec = context.currentRecord;
        console.log('Form loaded, mode:', context.mode);
    };

    /**
     * Field changed - runs when any field value changes
     */
    const fieldChanged = (context) => {
        const rec = context.currentRecord;
        const fieldId = context.fieldId;

        if (fieldId === 'entity') {
            // React to customer change
            const customerId = rec.getValue('entity');
            // Perform lookup or update related fields
        }
    };

    /**
     * Validate line - runs before line is committed
     */
    const validateLine = (context) => {
        const rec = context.currentRecord;

        if (context.sublistId === 'item') {
            const qty = rec.getCurrentSublistValue({
                sublistId: 'item',
                fieldId: 'quantity'
            });

            if (qty <= 0) {
                dialog.alert({ message: 'Quantity must be positive' });
                return false;
            }
        }
        return true;
    };

    /**
     * Save record - runs before record is saved
     */
    const saveRecord = (context) => {
        const rec = context.currentRecord;
        const lineCount = rec.getLineCount({ sublistId: 'item' });

        if (lineCount === 0) {
            dialog.alert({ message: 'Please add at least one item' });
            return false;
        }
        return true;
    };

    return { pageInit, fieldChanged, validateLine, saveRecord };
});

Map/Reduce Script Template

map_reduce_template.js
/**
 * @NApiVersion 2.1
 * @NScriptType MapReduceScript
 * @NModuleScope SameAccount
 */
define(['N/search', 'N/record', 'N/log'], (search, record, log) => {

    /**
     * Get input data to process
     */
    const getInputData = () => {
        // Return search, array, or object
        return search.create({
            type: 'salesorder',
            filters: [
                ['status', 'anyof', 'SalesOrd:B'], // Pending Fulfillment
                'AND',
                ['mainline', 'is', 'T']
            ],
            columns: ['entity', 'total', 'trandate']
        });
    };

    /**
     * Process each result (runs in parallel)
     */
    const map = (context) => {
        const searchResult = JSON.parse(context.value);
        const orderId = searchResult.id;
        const customerId = searchResult.values.entity.value;

        // Write to reduce stage, grouped by customer
        context.write({
            key: customerId,
            value: { orderId, total: searchResult.values.total }
        });
    };

    /**
     * Aggregate mapped results by key
     */
    const reduce = (context) => {
        const customerId = context.key;
        const orders = context.values.map(v => JSON.parse(v));

        // Process all orders for this customer
        const totalAmount = orders.reduce((sum, o) => sum + parseFloat(o.total), 0);

        log.audit({
            title: `Customer ${customerId}`,
            details: `Orders: ${orders.length}, Total: ${totalAmount}`
        });
    };

    /**
     * Final summary of execution
     */
    const summarize = (summary) => {
        log.audit('Summary', `Processed in ${summary.seconds} seconds`);

        // Log any errors
        summary.mapSummary.errors.iterator().each((key, error) => {
            log.error('Map Error', `Key: ${key}, Error: ${error}`);
            return true;
        });
    };

    return { getInputData, map, reduce, summarize };
});

RESTlet Template

restlet_template.js
/**
 * @NApiVersion 2.1
 * @NScriptType Restlet
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/search', 'N/log'], (record, search, log) => {

    /**
     * GET - Retrieve data
     */
    const get = (requestParams) => {
        try {
            const { type, id } = requestParams;

            if (!type || !id) {
                return { error: 'Missing type or id parameter' };
            }

            const rec = record.load({ type, id });

            return {
                success: true,
                data: {
                    id: rec.id,
                    type: rec.type,
                    name: rec.getValue('entityid') || rec.getValue('name')
                }
            };
        } catch (e) {
            log.error('GET Error', e.message);
            return { error: e.message };
        }
    };

    /**
     * POST - Create record
     */
    const post = (requestBody) => {
        try {
            const { type, values } = requestBody;

            const rec = record.create({ type });

            for (const [fieldId, value] of Object.entries(values)) {
                rec.setValue({ fieldId, value });
            }

            const id = rec.save();

            return { success: true, id };
        } catch (e) {
            log.error('POST Error', e.message);
            return { error: e.message };
        }
    };

    /**
     * PUT - Update record
     */
    const put = (requestBody) => {
        try {
            const { type, id, values } = requestBody;

            const updatedId = record.submitFields({
                type,
                id,
                values
            });

            return { success: true, id: updatedId };
        } catch (e) {
            log.error('PUT Error', e.message);
            return { error: e.message };
        }
    };

    /**
     * DELETE - Delete record
     */
    const doDelete = (requestParams) => {
        try {
            const { type, id } = requestParams;

            record.delete({ type, id });

            return { success: true, message: `Deleted ${type} ${id}` };
        } catch (e) {
            log.error('DELETE Error', e.message);
            return { error: e.message };
        }
    };

    return { get, post, put, 'delete': doDelete };
});

Saved Search in SuiteScript

saved_search_pattern.js
// Create and run a search
const customerSearch = search.create({
    type: search.Type.CUSTOMER,
    filters: [
        ['isinactive', 'is', 'F'],
        'AND',
        ['balance', 'greaterthan', 0]
    ],
    columns: [
        search.createColumn({ name: 'entityid', sort: search.Sort.ASC }),
        'email',
        'balance',
        search.createColumn({ name: 'lastorderdate' })
    ]
});

// Run and process results
customerSearch.run().each((result) => {
    const name = result.getValue('entityid');
    const email = result.getValue('email');
    const balance = result.getValue('balance');

    log.debug(name, `Balance: ${balance}`);

    return true; // Continue to next result
});

// For large result sets, use paged execution
const pagedData = customerSearch.runPaged({ pageSize: 1000 });

pagedData.pageRanges.forEach((pageRange) => {
    const page = pagedData.fetch({ index: pageRange.index });
    page.data.forEach((result) => {
        // Process each result
    });
});
Governance Best Practices
  • Check remaining governance units with runtime.getCurrentScript().getRemainingUsage()
  • Use record.submitFields() instead of record.load() + save() when possible (fewer units)
  • Use Map/Reduce for large data sets - handles governance automatically
  • Batch operations in scheduled scripts to stay within limits
Appendix D

SuiteFlow Reference

Quick reference for building workflows in SuiteFlow, NetSuite's visual workflow automation tool.

Workflow Components

Trigger Types

Trigger When It Fires Use Case
On Create When new record is created Set default values, send welcome emails
On Update When existing record is modified Approval routing, field updates
On View When record is viewed Add buttons, show messages
Before Record Load Before record displays Hide fields, set form context
Before Record Submit Before save to database Validation, calculated fields
After Record Submit After save to database Create related records, notifications
Scheduled On defined schedule Batch updates, reminders

Condition Types

Condition Description
Field = Value Field equals a specific value
Field != Value Field does not equal value
Field Changed Field value changed from previous
Field Changed From/To Field changed from X to Y
Field Is Empty Field has no value
User Role Current user has specific role
Formula (Numeric) Custom formula returns true (non-zero)

Action Types

Action Description Example
Set Field Value Update a field on current record Set Status to "Approved"
Set Field Display Hide/show/disable fields Hide discount field for certain roles
Set Field Mandatory Make field required Require reason when status = Rejected
Send Email Send email notification Notify approver of pending approval
Create Record Create new related record Create task when opportunity created
Transform Record Transform to another record type Convert quote to sales order
Add Button Add custom button to form "Request Approval" button
Lock Record Prevent editing Lock approved records
Go To Page Redirect after action Go to dashboard after submit
Return User Error Show error and prevent save Validation failed message
Custom Action Execute SuiteScript Complex calculations, API calls

Common Workflow Patterns

1. Approval Workflow

Approval Workflow Structure
  • State: Draft - Initial state, record editable
  • State: Pending Approval - Awaiting approver action
  • State: Approved - Record approved, may be locked
  • State: Rejected - Returned to submitter
Transition Trigger Actions
Draft → Pending Approval Submit for Approval button Set status, email approver, lock fields
Pending → Approved Approve button (by approver) Set status, set approved date, email submitter
Pending → Rejected Reject button (by approver) Set status, require rejection reason, email submitter
Rejected → Draft Resubmit button Reset status, clear rejection fields

2. Field Validation Pattern

  • Trigger: Before Record Submit
  • Condition: Check field values
  • Action: Return User Error if invalid

3. Auto-Population Pattern

  • Trigger: On Create or Field Changed
  • Condition: Source field has value
  • Action: Set Field Value on target field

4. Scheduled Reminder Pattern

  • Trigger: Scheduled (daily/weekly)
  • Condition: Due date approaching
  • Action: Send Email notification

Formula Examples

Common Workflow Formulas
// Amount greater than threshold
{total} > 10000

// Date is in the past
{duedate} < {today}

// Days until due date
{duedate} - {today}

// Field is not empty
NOT ISEMPTY({custbody_approval_notes})

// User is in specific role
{currentrole} = 3  // Administrator role ID

// Multiple conditions
{status} = 'Pending' AND {total} > 5000

// Check subsidiary
{subsidiary} = 2  // Subsidiary internal ID

// Date within range
{trandate} >= '1/1/2025' AND {trandate} <= '12/31/2025'
Workflow Limitations
  • Workflows cannot trigger on sublist changes (use SuiteScript instead)
  • Maximum of 20 workflow states per workflow
  • Cannot create workflows on all record types (check documentation)
  • Scheduled workflows have governance limits similar to scripts
  • Actions run synchronously - complex actions may slow save
Appendix E

Project Templates & Checklists

Ready-to-use templates and checklists for key implementation milestones.

Discovery Questionnaire Template

Company Profile Questions
  • Legal entity structure (single vs. multi-company)
  • Operating locations and warehouses
  • Number of employees and user types needed
  • Current systems and pain points
  • Industry vertical and specific requirements
  • Fiscal year and accounting periods
  • Multi-currency requirements
  • Regulatory/compliance requirements
Financial Questions
  • Chart of Accounts structure and numbering
  • Revenue recognition requirements (ASC 606/IFRS 15)
  • Budgeting and planning requirements
  • Inter-company transaction handling
  • Bank reconciliation process
  • Fixed asset management needs
  • Tax compliance requirements
  • Audit trail and compliance needs
Order-to-Cash Questions
  • Quote/estimate process
  • Sales order types and workflows
  • Pricing strategies (price levels, customer-specific)
  • Discount approval process
  • Fulfillment methods (ship, drop ship, pick-pack)
  • Invoicing requirements and schedules
  • Payment terms and methods
  • Collections and dunning process
Procure-to-Pay Questions
  • Purchase requisition workflow
  • Vendor selection and approval
  • Purchase order approval thresholds
  • Receiving process (direct vs. inspection)
  • Three-way matching requirements
  • Vendor payment terms
  • 1099 reporting requirements
  • Expense report processing

Go-Live Readiness Checklist

Technical Readiness (T-14 Days)
  • All customizations deployed and tested
  • Integrations tested with production credentials
  • Data migration scripts validated
  • User accounts created with correct roles
  • Email templates configured and tested
  • Print templates configured and tested
  • Saved searches and reports validated
  • Workflows tested end-to-end
Business Readiness (T-7 Days)
  • All users completed role-specific training
  • User documentation distributed
  • Quick reference cards printed/accessible
  • Support escalation path documented
  • Business process documentation complete
  • Legacy system access plan confirmed
  • Communication plan executed
  • Go/No-Go meeting scheduled
Cutover Checklist (T-0)
  • Legacy system closed to new transactions
  • Final data extract completed
  • Opening balances loaded and validated
  • Inventory counts reconciled
  • AR/AP aging verified
  • Bank balances confirmed
  • Integration endpoints switched to production
  • User access verified
  • First transactions entered and validated
  • Hypercare team in place

Weekly Status Report Template

Section Content
Project Health Overall status (Green/Yellow/Red), schedule status, budget status
Accomplishments Key milestones completed this week
Planned Activities Focus areas for next week
Risks & Issues Active risks, issues requiring decisions
Open Decisions Decisions pending from stakeholders
Resource Updates Team availability, training needs

Issue Log Template

Field Description
Issue ID Unique identifier (e.g., ISS-001)
Date Logged When issue was identified
Reported By Person who reported the issue
Category Configuration, Data, Training, Integration, etc.
Description Detailed description of the issue
Impact Business impact (High/Medium/Low)
Priority Resolution priority (P1/P2/P3/P4)
Assigned To Person responsible for resolution
Target Date Expected resolution date
Status Open, In Progress, Resolved, Closed
Resolution How the issue was resolved

UAT Test Script Template

Field Content
Test ID UAT-OTC-001
Process Order to Cash
Scenario Create sales order with quantity discount
Prerequisites Customer exists, Items exist with pricing
Test Steps 1. Navigate to Sales Order
2. Select customer
3. Add items...
4. Verify discount applied
Expected Result 10% discount applied for qty > 100
Actual Result (Filled by tester)
Pass/Fail (Pass/Fail)
Tester (Name and date)
Notes (Any observations or issues)
Appendix F

Recommended SuiteApps

Curated list of SuiteApps that frequently add value to implementations. Always verify current pricing and compatibility before recommending to clients.

About SuiteApps

SuiteApps are solutions built on NetSuite's SuiteCloud platform, available through the SuiteApp Marketplace. "Built for NetSuite" (BFN) apps have passed Oracle's security and quality review. Always test SuiteApps in a sandbox before production deployment.

Integration & Automation

Integration
Celigo Integrator.io
Celigo
iPaaS platform for connecting NetSuite to 200+ applications with pre-built flows and data mapping.
BFN Integration
Integration
Dell Boomi
Dell Boomi
Enterprise iPaaS with NetSuite connector for complex integration scenarios and B2B connectivity.
Enterprise B2B
Automation
Stampli
Stampli
AI-powered AP automation with intelligent invoice processing and approval routing.
BFN AP Automation

Financial Management

Banking
SuiteSync for Banking
Oracle NetSuite
Direct bank connectivity with automated transaction import and matching.
Native Bank Feeds
Payments
Electronic Bank Payments
Oracle NetSuite
Generate payment files for ACH, wire, and positive pay with bank format templates.
Native Payments
Tax
Avalara AvaTax
Avalara
Automated sales tax calculation, exemption certificates, and compliance reporting.
BFN Tax
Close Management
FloQast
FloQast
Close management platform with task tracking, reconciliations, and variance analysis.
Close Reconciliation

Warehouse & Fulfillment

WMS
RF-SMART
RF-SMART
Mobile barcode scanning for receiving, picking, packing, cycle counts, and transfers.
BFN Mobile
Shipping
ShipStation
ShipStation
Multi-carrier shipping platform with rate shopping, label printing, and tracking.
Shipping E-commerce
EDI
SPS Commerce
SPS Commerce
Full-service EDI with retailer compliance, document mapping, and trading partner management.
BFN EDI

E-commerce & CRM

E-commerce
Shopify Connector
Celigo
Bi-directional sync of orders, customers, inventory, and products with Shopify.
BFN E-commerce
CRM
Salesforce Connector
Celigo
Sync opportunities, accounts, contacts, and orders between NetSuite and Salesforce.
BFN CRM
Marketplace
Amazon Connector
Celigo
Integration with Amazon Seller Central and FBA for order management and inventory.
BFN Marketplace

Productivity & Utilities

Document Management
Document Capture
Oracle NetSuite
AI-powered document scanning and data extraction for invoices and receipts.
Native AI
Reporting
Tableau Connector
Tableau
Direct connection from Tableau to NetSuite data for advanced visualization.
Analytics BI
Email
Outlook Integration
Oracle NetSuite
Sync emails, contacts, and calendar events between Outlook and NetSuite CRM.
Native Productivity

Industry-Specific

Manufacturing
Advanced Manufacturing
Oracle NetSuite
Shop floor control, routing, labor tracking, and work-in-progress management.
Native Manufacturing
SaaS
SuiteBilling
Oracle NetSuite
Subscription and usage-based billing with automated invoicing and revenue recognition.
Native Subscription
Nonprofit
SuiteSuccess for Nonprofits
Oracle NetSuite
Pre-configured solution for fund accounting, grant management, and donor management.
Native Nonprofit
SuiteApp Evaluation Checklist

Before recommending any SuiteApp:

  • Verify "Built for NetSuite" (BFN) certification if available
  • Check compatibility with client's NetSuite edition and features
  • Review pricing model (one-time, subscription, transaction-based)
  • Test in sandbox environment before production
  • Evaluate vendor support and update frequency
  • Check customer reviews on SuiteApp Marketplace
  • Confirm data privacy and security compliance