Glossary of NetSuite Terms
A comprehensive dictionary of NetSuite terminology, acronyms, and concepts commonly encountered during implementations.
- 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).
- 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.
- 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.
- 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.
- 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 . 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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).
- 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.
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 |
Use these common abbreviations in Global Search:
cust- Customervend- Vendoremp- Employeeinv- Invoiceso- Sales Orderpo- Purchase Orderje- 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) |
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.
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
/** * @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
/** * @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
/** * @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
/** * @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
// 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 }); });
- Check remaining governance units with
runtime.getCurrentScript().getRemainingUsage() - Use
record.submitFields()instead ofrecord.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
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
- 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
// 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'
- 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
Project Templates & Checklists
Ready-to-use templates and checklists for key implementation milestones.
Discovery Questionnaire Template
- 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
- 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
- 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
- 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
- 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
- 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
- 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) |
Recommended SuiteApps
Curated list of SuiteApps that frequently add value to implementations. Always verify current pricing and compatibility before recommending to clients.
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
Financial Management
Warehouse & Fulfillment
E-commerce & CRM
Productivity & Utilities
Industry-Specific
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