ERP Help
The error your ERP just threw, the function you need to run, the customisation you are stuck on. Straight answers for Infor SyteLine, LN, M3, NetSuite, Oracle EBS, JD Edwards, Fusion, SAP, Dynamics, Epicor and more, from engineers who work in these systems.
Infor SyteLine / CSI
Fixing SyteLine's 'Object reference not set to an instance of an object' error
SyteLine error object reference not set to an instance of an objectThis is a generic .NET NullReferenceException surfacing through the SyteLine IDO Runtime, not a SyteLine-specific error code. It almost always means a form, script or IDO method referenced a field, row or object that came back null, usually after a customization, a missing related record, or a view/IDO method call before the form finished loading. Turn on detailed client logging and check the most recent customization or form event first.
Error fixDiagnosing and fixing SyteLine session timeout errors
SyteLine session has timed out please log in again errorSyteLine session timeouts come from one of three independent layers: the IDO Data Service session timeout on the app server, the IIS/application pool idle timeout for the web (Mongoose Web) client, or a load balancer/proxy idle timeout in front of a CloudSuite hosted environment. Fixing the wrong layer is the most common mistake - you need to identify which layer is actually expiring the session before changing anything.
Error fixResolving SyteLine multi-site replication conflict errors
SyteLine replication conflict error row was already changedA replication conflict in SyteLine's multi-site architecture means the same record (commonly an item, customer, or BOM) was changed independently at two sites between replication cycles, and the replication engine could not automatically merge the two versions. Check the replication conflict log first to see which record and which fields collided, then decide which site's version should win before resuming the queue.
Error fixTroubleshooting SyteLine MRP and APS regeneration that fails or hangs
SyteLine MRP regeneration fails to completeA SyteLine MRP or APS run that fails to complete, hangs indefinitely, or errors partway through is most often caused by data integrity problems (a BOM loop, an item with an invalid lead time or missing routing), a scheduling engine (APS) process that is stuck or resource-starved, or a concurrent MRP run conflict. Check the MRP/APS log first for the specific item or job it stopped on before assuming it is a system capacity issue.
Error fixFixing SyteLine's 'transaction out of balance' GL posting error
SyteLine GL posting error transaction out of balanceThis posting error means SyteLine tried to create a general ledger journal entry where total debits do not equal total credits, which the GL will not accept. The most frequent causes are a missing or misconfigured account in the automatic account determination setup (COA mapping), currency rounding on multi-currency transactions, or a source transaction (inventory, job cost, AP/AR) that only partially calculated its cost or tax components before posting.
Error fixSyteLine error: this row has been modified by another user since you began editing it
This row has been modified by another user since you began editing itThis is SyteLine's IDO optimistic concurrency check. It fires when the row's timestamp column (usually ts_prefix or a similar rowversion field) on the database no longer matches the value the client loaded, meaning another session, a background job, or an integration already saved a change. Refresh the record and reapply your edit; if it recurs constantly on one record, look for a duplicate integration process or a stuck lock rather than user contention.
Error fixSyteLine error: invalid site or item not valid at this site
SyteLine invalid site error item not valid at this siteSyteLine is a multi-site system where items, warehouses, and most master data are site-specific by design. This error means either the item has never been extended to the site you are transacting in, your user login does not have access to that site, or the current site context on the form does not match the site of the referenced record. Add the item to the site via Item Sites, or correct the user's site security, and the error clears.
Error fixSyteLine error: no cost record exists for this item at this site
SyteLine no standard cost exists for this item errorSyteLine will not post an inventory, job, or purchasing transaction that has no valid standard (or average) cost record for the item at that site and cost type, because the transaction needs a cost to value the GL entry. Run a cost rollup or manually enter the item's standard cost in Item Costs, make sure the cost is effective-dated to cover the transaction date, then reprocess.
Error fixSyteLine EDI or BOD inbound document fails to create a sales order
SyteLine EDI order import fails to create sales order BOD processing errorAn inbound EDI 850 or ION SyncSalesOrder / ProcessSalesOrder BOD that does not turn into a SyteLine order almost always fails validation before it ever reaches order entry logic - most often a customer, ship-to, or item cross-reference that the mapping expects but SyteLine does not have on file. Check the EDI translator's error log or the ION BOD document inbox first; the rejection reason is usually recorded there, not just a generic SyteLine error.
Error fixSyteLine error: an error has occurred during report processing
An error has occurred during report processing SyteLine SSRS reportThis generic SSRS error in SyteLine usually comes from one of three sources: the client cannot reach the configured report server URL, the report's data source credentials or connection string are wrong, or the report definition itself has a parameter or dataset problem. Check the report server URL setting in SyteLine first, then confirm the report is actually deployed to that server, then look at the SSRS server's own execution log for the real underlying error.
How-toHow to Run a Cost Rollup in SyteLine
Run Item Cost Rollup from Product Definition > Costing > Cost Rollup, select the site and item range, run it in Simulate mode first to review variances, then run it live to post new standard costs to Item records and the Costed Bill of Material.
How-toHow to Close a Job Order in SyteLine
Close a job order from Production > Job Orders once every routing operation is reported complete and the finished quantity has been received, then run Close Jobs to post the remaining WIP balance to variance and lock the job from further transactions.
How-toHow to Run a Cycle Count in SyteLine
Cycle counting in SyteLine runs through Inventory > Cycle Count: generate a count list by ABC class or location, print or enter tags, key the counted quantities into Cycle Count Entry, then review the variance report before posting the count to update on-hand quantity.
How-toSyteLine Customer Order to Invoice: Step by Step
A SyteLine customer order flows from Order Entry through pick, pack, and Customer Shipment, then to invoicing, either through the Auto Invoice batch utility or manual Invoice Entry, posting revenue and relieving inventory once the shipment is confirmed.
How-toHow to Run MRP in SyteLine
MRP in SyteLine runs from Planning > MRP Processing as either a full Regenerative run or a Net Change run against demand from customer orders, forecasts, and safety stock; results appear as planned orders and Action Messages in the Planner Workbench.
How-toHow to Change an Item's Standard Cost in SyteLine
You can edit an item's standard cost fields directly on the Items form, or let Cost Rollup calculate it from the BOM and routing. Either way, the new cost only affects future transactions until you run Recost Inventory, which revalues on-hand quantity and posts the difference to the standard cost variance account in GL.
How-toHow to Set Up Lot and Serial Number Tracking in SyteLine
Lot and serial tracking is turned on per item on the Items form, with a tracking type of None, Lot, or Serial. Once enabled, every receipt, job move, and shipment transaction for that item prompts for a lot or serial number assignment, and SyteLine keeps a full genealogy you can trace forward to customer shipments or backward to the receiving vendor.
How-toHow to Handle Landed Cost and Voucher a PO Receipt in SyteLine
Landed cost charges such as freight, duty, and brokerage are added against the PO or the receipt, allocated across the received line items by value or quantity, and rolled into the item's received cost before it is vouchered. Vouchering itself is the 3-way match between PO price, receipt quantity, and vendor invoice, and mismatches beyond your tolerance percentage get held for review instead of posting automatically.
How-toHow to Release a Customer Order from Credit Hold in SyteLine
A customer order goes on credit hold when the customer's exposure, whether AR balance, open order value, or days past due, exceeds the limit set on the Customers form. Releasing it is a deliberate override on the order, usually restricted to users with credit management authority, and the real fix is reviewing whether the limit, the hold reason, or the customer's payment behavior needs attention.
How-toHow to Receive a Purchase Order and Return Goods to a Vendor in SyteLine
Receiving happens in PO Receipts against open PO lines, updating on-hand quantity and open PO balance. Returning goods is a separate return-to-vendor transaction that reverses the receipt, references the original PO and receipt, and should tie to an AP debit memo so the vendor invoice and payment reflect the returned quantity.
AdvancedHow to Add Custom Business Logic to a SyteLine IDO with an Extension Class
SyteLine lets you add validation, defaulting, and side-effect logic to any IDO without touching Infor's generated code, by writing an IDO extension class in C# and hooking into the object's Before/After events. The extension assembly is compiled, deployed next to the IDO Runtime, and picked up once the runtime cache is refreshed.
AdvancedHow the SyteLine Event System Works for Workflow Notifications
SyteLine's Event Manager lets administrators subscribe to IDO-level events, such as a purchase order being released or a customer credit hold being set, and fire an email, a Mongoose script, or a workflow action without writing an IDO extension. Cloud tenants can extend the same triggers into ION Workflow for multi-step, cross-application approval processes.
AdvancedHow to Tune APS Finite Scheduling Performance in SyteLine
A slow APS run in SyteLine is almost always caused by an oversized planning horizon, too many resources marked as constrained, or an unindexed staging table, rather than the scheduling algorithm itself. Trimming the horizon, scoping constrained resource groups, and running incremental instead of full regenerative schedules typically cuts run time dramatically.
AdvancedHow to Set Up Multi-Site Configuration in SyteLine
SyteLine supports multiple manufacturing or distribution sites either as separate Site records within one shared database, or as fully separate databases linked through intersite transactions and, in CloudSuite Industrial, ION. Getting the site model right up front, shared versus separate master data, intersite transfer setup, avoids a painful data migration later.
AdvancedHow to Improve SQL Server Performance for a Slow SyteLine ERP System
Most SyteLine performance complaints trace back to a handful of SQL Server issues: stale statistics, missing indexes on high-churn IDO tables, blocking caused by the default isolation level, and IDO Runtime connection pool exhaustion. Working through those systematically, with DMV evidence, resolves the majority of slow system tickets faster than guessing at application-layer causes.
AdvancedHow to Debug a SyteLine IDO Extension Class in Visual Studio
SyteLine IDO extension classes run inside the server-side IDO runtime, not inside Visual Studio, so breakpoints only hit once you attach the debugger to that process and deploy matching PDB files. Attach to IDORuntime.exe on classic installs or to the w3wp.exe worker process on IIS-hosted CSI, build in Debug configuration, and copy the DLL and PDB together before setting breakpoints.
AdvancedHow to Add a Custom Method to a SyteLine IDO in C#
Custom IDO methods let you expose new server-side business logic - beyond the standard Load, Update, and Delete - as a named, callable operation from the SyteLine client, a script, or an external integration. You declare the method and its parameters on the IDO Collection, then implement it in an extension class that handles invoke calls for that method name.
AdvancedHow to Build SQL Views for Custom SyteLine Reporting
Reports should read from purpose-built SQL views, not directly from SyteLine's core transactional tables, so an Infor patch cannot silently break them and heavy report queries do not lock rows the ERP itself needs. Put custom views in their own schema or under a clear naming convention, build them on stable base tables, and grant reporting tools read access to the views only.
AdvancedHow to Call SyteLine IDOs from an External Application
SyteLine exposes its IDO layer as a SOAP web service, commonly published through an IDORequestHandler endpoint, so an external .NET application, middleware platform, or script can Load, Update, Delete, and Invoke methods on the same IDOs the SyteLine client itself uses. You call it like any SOAP service: reference the WSDL, authenticate, and pass the IDO name, method, and parameters in the request.
AdvancedHow to Schedule a Background Task in SyteLine Task Manager
SyteLine's Task Manager lets an administrator schedule recurring background work - an MRP or APS regeneration, a report run, a custom IDO method, or an external program - without a user triggering it manually from the client. You define a task with what to run and on what recurrence, and the Task Manager background service picks it up and executes it at the scheduled time.
Infor LN / Baan
Infor LN bshell Process Stuck at 100% CPU: How to Diagnose and Fix It
infor ln bshell process using 100% cpuA bshell process pinned at 100% CPU on the Infor LN application server almost always means one session is stuck in a 4GL loop, scanning an unindexed table, or waiting on a database lock. End the session from the Sessions Monitor first, then kill the OS process only if that fails, and check for a blocking database transaction before assuming it is a bug.
Error fixInfor LN Not Authorized to Run This Session: How to Fix It
infor ln you are not authorized to run this sessionInfor LN refuses to open a session with a not authorized message when the logged-in user's assigned role does not include that session, or when the session is blocked for the company they are logged into. Grant the session through Common > Authorization Management > Roles, or check the user's role and company context, and the session opens on retry. In most cases this is a permissions configuration issue, not a bug.
Error fixInfor LN DAL Out of Sync After a Custom Field: Cause and Fix
infor ln dal out of sync error after adding custom fieldInfor LN throws a DAL, or table, out of sync error, or simply drops a new custom field silently, when a table's dictionary definition is changed but the generated DAL and dependent forms are not regenerated afterward. Running the standard sequence, table compile, DAL generation, then session/form compile, in Tools > Development after every dictionary change resolves it. Skipping any one of the three steps is what causes the mismatch.
Error fixInfor LN Jobs Stuck in Active or Waiting: Fix the Job Daemon
infor ln jobs stuck in active status job daemonInfor LN background jobs, reports, batch processes and print jobs, get stuck in Active or Waiting status when the job daemon on the enterprise server has stopped or lost its connection, or when a prior job crashed without releasing its status. Restart the job daemon and reset the stuck job's status through the Jobs session, and the queue resumes. A daemon that keeps stopping usually points to a memory, license or database connectivity problem on the server.
Error fixInfor LN Reports Stuck in the Print Queue: Device and Spooler Fix
infor ln report stuck in print queue device offlineInfor LN reports and forms stay queued and never reach the printer when the target device definition points to a printer that is offline, or the print listener on the print server has stopped. Check the device's status in Common > Printing > Devices, confirm the underlying OS printer is reachable, and restart the print listener if jobs remain queued after the printer itself is fixed. Most cases trace back to a genuinely offline printer, not an LN bug.
Error fixInfor LN: "Record is locked by another user" error
Record is locked by another user error in Infor LNThis error means another LN session, interactive or batch, is holding an update lock on the same table row you are trying to change. Find the locking user or session in Active Sessions, confirm it is stale rather than genuinely running, and either wait or terminate it before you retry.
Error fixInfor LN Studio: compile errors when building DAL/4GL code
Compile error in Infor LN Studio when building a DAL or 4GL scriptA compile error in LN Studio usually traces back to a missing or mismatched package reference, a real syntax error in the DAL or 4GL source, or stale generated metadata that only a full rebuild clears. Read the first error in the log, not the last, since later errors are often cascades from one root cause.
Error fixInfor LN: finalize run fails or gets stuck
Finalize run fails or gets stuck in Infor LN (Cost Price Calculation, Sales Invoicing, Statistics)Finalize sessions such as Cost Price Calculation, Sales Invoicing, and Period-End Statistics run as a broadly locked, largely exclusive batch step, so they most often fail because another user has the module open, a prior finalize run did not close cleanly, or a specific record has bad master data. Read the finalize log for the exact record or reason code, not just the failure message.
Error fixInfor LN: BOD mapping errors when publishing to ION
No mapping found error when publishing a BOD from Infor LN to IONThis error means the outbound Business Object Document from LN could not translate a field, code, or reference value into the ION-standard BOD schema, most often a missing code list mapping or an unmapped custom field, not a bug in ION itself. Fix the mapping on the correct side and reprocess from ION Desk rather than resending from LN.
How-toHow to publish a BOD from Infor LN to Infor ION
Publishing a Business Object Document from Infor LN means flagging the relevant table or session for BOD publish, confirming LN's connection point to Infor ION is active, and building the document flow in ION Desk so changes like a new sales order are broadcast as a standard OAGIS-style XML message that other applications can subscribe to.
How-toBaan IV to Infor LN migration checklist
Moving from Baan IV to Infor LN is a re-implementation, not an in-place upgrade, because the two products differ in data model, session technology and, for LN Enterprise Edition, the underlying runtime. The checklist centers on inventorying customizations, converting master data, rebuilding logic rather than porting it, and running a real parallel test before cutover.
How-toHow to process a sales order to invoice in Infor LN
In Infor LN a sales order moves from order entry to cash through four linked steps: create and approve the Sales Orders session, release the order lines to Warehousing so a warehouse order is generated, confirm the outbound shipment, and then run the invoicing session that composes and posts the sales invoice to Financials. Each step hands off through an integration document, so a stuck invoice almost always traces back to a missing or unconfirmed step earlier in the chain.
How-toHow to set up and run a project in Infor LN PCS
Infor LN's Project Control System (PCS) manages engineer-to-order and project-based work as a structured hierarchy: a project header, a work breakdown structure (WBS) of activities, a budget or estimate against that structure, and actual cost and progress booked back against the same elements. Getting the WBS and budget structure right before any transaction posts is what makes project cost reporting usable later.
How-toHow to process inbound and outbound warehousing orders in Infor LN
Infor LN Warehousing splits every physical movement into inbound (goods arriving, mainly from purchase orders) and outbound (goods leaving, mainly for sales orders), each driven by its own warehouse order type. Inbound runs through intake, inspection if required, and put-away; outbound runs through order release, picking, packing and shipment confirmation, with each stage updating the order status other modules watch.
How-toHow to calculate item cost prices in Infor LN
Infor LN calculates an item's cost price by rolling up material, labor, machine, subcontract and overhead costs defined against cost components, using the item's bill of material and routing as the calculation base for manufactured items and purchase price for bought items. The calculation can run in simulation mode to preview the result or in update mode to actually change the item's standard cost, which then drives inventory valuation and variance reporting going forward.
How-toHow to close a financial period in Infor LN
Closing a period in Infor LN is not a single click; it requires clearing every module's outstanding integration transactions into Financials first, reconciling each subledger (AR, AP, inventory, WIP) to the general ledger, and only then closing the period through Periods and Fiscal Years, which blocks further posting to it. Skipping the reconciliation step and closing early is what causes stuck or orphaned transactions that have to be reopened and reworked later.
AdvancedHow to extend business logic in Infor LN with DAL2
DAL2 lets you add custom validation, defaulting and calculation logic to Infor LN Enterprise Edition tables by writing a Java business logic handler class and registering it against a table event, without editing the standard DAL. Because the logic sits in your own package rather than inside Infor's base code, it survives upgrades that would otherwise overwrite a direct DAL change.
AdvancedHow to create a custom session in Infor LN Studio
Infor LN Studio's session designer generates a new maintenance, overview or detail session from a table definition, then lets you arrange fields, attach DAL2 validation, and wire menu access, all inside a custom package so the session survives upgrades. Building on a custom table gives the lowest upgrade risk; extending a standard table needs more care and re-testing after every release.
AdvancedHow to diagnose and fix a slow Infor LN session
A slow Infor LN session is usually caused by an unindexed or overly broad database query, unarchived data bloating a transaction table, or resource pressure on the Java application tier, and occasionally by a recently added custom DAL2 handler. The fix starts with isolating which tier the delay is actually in rather than guessing at a solution.
Infor M3
M3 API Error: Record already exist
M3 API error: Record already existRecord already exist means the MI Add transaction you called is trying to insert a key that is already present in the target M3 table, most often because a prior call succeeded and was retried, or because the key fields you built do not match what you think they match. Read the errorField and errorFieldGroup attributes on the response to see exactly which key field M3 flagged, then either switch to the matching Chg (change) transaction or fix the key construction in the caller.
Error fixM3 API Error: Not Authorized to Program
M3 API SOAP call fails with Not authorized to programNot authorized to program (or the equivalent transaction-level authorization error) means the M3 user ID the integration authenticates as can log in fine but has not been granted access to that specific MI program, transaction, or company/division through its authority group. Fixing it means adding the program/transaction to the integration user's authority group in M3, not changing anything in the calling code.
How-toHow to Build a Grid Mapping in M3 Enterprise Collaborator (MEC)
M3 Enterprise Collaborator (MEC) moves data between an external format (EDI, flat file, XML) and M3's own API by chaining a collection step (getting the document in), a grid mapping step (field-level transformation from source structure to M3 API call structure), and a delivery step (executing the mapped MI transaction). Building a new mapping means defining the source document structure, building the grid that maps each source field to its M3 API field, and testing with representative sample documents before going live.
How-toHow to Add a Personalization Script to an M3 H5 Panel
M3 H5 lets an administrator attach a JavaScript personalization script to a specific panel of a specific program, using the MForms client API to read fields, react to panel and field events, and adjust the UI (hide fields, set defaults, validate input) without modifying the underlying M3 program. Scripts are written and attached through Personalization mode in H5, saved against the panel/program combination, and deployed to the users or roles who should see the behavior.
How-toHow to Create a New Item in M3 (MMS001)
A new item in M3 is created in two stages: item basic data in MMS001 (Item. Open), which defines company-wide attributes such as description, item group and unit of measure, then facility-level data in MMS002 (Item/Facility. Connect), which attaches the item to a specific warehouse or plant with purchasing, planning and costing parameters. An item is not usable for orders, purchasing or MRP until both stages are complete.
How-toHow to Enter a Customer Order in M3 (OIS100)
OIS100 (Customer Order. Open) is the primary M3 program for entering and maintaining customer orders, built as a header-then-line workflow: you first create the order header with customer, order type and delivery terms, then add order lines that each carry their own item, quantity, price and delivery date defaulted from customer and item agreements.
How-toHow to Run Period End Close in M3
M3 period end close is not a single button - it is a sequence: close sub-ledger activity in inventory, purchasing and sales first, reconcile and post any pending vouchers, then close the accounting period in the financials basic data so no further postings can hit it without explicit reopening. Doing the steps out of order is the most common reason a company has to reopen a period after close.
How-toHow to Attach and View Documents in M3 with IDM
Infor Document Management (IDM) attaches to M3 through key-based document classes: each document is filed against a document class that maps to a specific M3 program and key fields (order number, item number, customer number), so the paperclip or document icon on that M3 panel shows only documents whose stored key values match the record you are viewing.
AdvancedPaging M3 API MI List Transactions Past the Default Record Limit
M3 List transactions (the read/browse transaction most MI programs expose, such as CRS610MI.LstByNumber or OIS100MI.LstOrderHead) cap the rows returned per call using the MaxReturnedRecords input field, and by default many clients leave it low or unset, which looks like the API silently truncating results. Set MaxReturnedRecords explicitly, then loop the call using the last key values from the previous page as the starting position until fewer rows than the limit come back.
AdvancedHow to Call M3 API (MI Programs) Through ION API
Calling M3 from an external system today almost always means going through ION API rather than the older direct MvxAPI SOAP endpoint: you create an ION API authorized app or service account in the ION API portal, download its .ionapi credential file, obtain an OAuth 2.0 access token, and call the M3 MI program transaction through the m3api-rest execute endpoint with that token.
Infor ION / OS
Fix a 401 Unauthorized error from Infor ION API
infor ion api 401 unauthorizedA 401 from ION API almost always means the credentials in the .ionapi file no longer match what ION API Gateway expects - not that the password is simply wrong. Check whether the Authorized App or service account behind the file was revoked, regenerated, expired, or issued for a different tenant, then re-test with a direct OAuth2 client_credentials call before touching any calling code.
Error fixDiagnose and fix a failed BOD document flow in ION Desk
ion document flow failed error in ion deskA Document Flow showing Failed in ION Desk means a BOD (Business Object Document) stopped either at schema validation, at the mapping step, or at the target application. Open the failed instance's detail to see the exact failing element, fix the source data or mapping, then use Resubmit rather than re-triggering the original transaction to avoid duplicates.
Error fixFix a Ming.le homepage widget that will not load
infor ming.le widget not loading blankA blank or endlessly spinning Ming.le widget is usually a permissions, session, or backend availability problem, not a broken widget itself. Confirm the issue is widget-specific, check the user's Security Group access to the underlying app, and look at the widget's network calls in browser dev tools to see whether it is failing with 401/403 or simply timing out against a down service.
How-toHow to query Infor Data Lake with Compass SQL
Compass is the SQL query layer in Infor OS for querying Infor Data Lake, where flattened copies of BODs published over ION are stored by Noun and Verb. Open a Compass SQL Workbench tab, browse the schema for the correct table, and run a filtered SELECT rather than pulling the full history, since Data Lake tables can hold years of append-only data.
How-toConnect a Birst Space to Infor Data Lake and build a report
Birst is Infor's embedded BI layer, and the recommended way to report on live Data Lake data is a Live Access source inside a Birst Space rather than a static upload. Build the logical model over a filtered set of tables, apply row-level security, and publish the dashboard to a Ming.le homepage so users reach it without leaving Infor OS.
Oracle NetSuite
Fix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error
SSS_USAGE_LIMIT_EXCEEDED NetSuite errorSSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.
Error fixFix NetSuite INVALID_FLD_VALUE Error
NetSuite INVALID_FLD_VALUE errorINVALID_FLD_VALUE means NetSuite rejected a value you tried to set on a field because it does not match the field's expected type, list option, or reference record. Fix it by confirming the internal ID or text value actually exists on that field's source list and matches the field's value type (text versus list versus record reference) before setting it.
Error fixFix NetSuite SSS_MISSING_REQD_ARGUMENT Error
SSS_MISSING_REQD_ARGUMENT NetSuite errorSSS_MISSING_REQD_ARGUMENT means a NetSuite API call, most often record.create(), record.load(), or search.create(), was called without a parameter that method requires, such as type or id. Fix it by checking the object literal you passed against the current SuiteScript 2.x API signature and confirming no required key is undefined at runtime.
Error fixFix NetSuite RCRD_HAS_BEEN_CHANGED Error
The record you are trying to edit has been changed by another user NetSuiteRCRD_HAS_BEEN_CHANGED, shown to users as a message that the record was changed by another user or in another window, fires when NetSuite's optimistic concurrency check detects that the record's last-modified stamp changed between when it was loaded and when the save was submitted. Fix it by identifying the concurrent writer, whether a user, a workflow, or a script, and serializing the conflicting updates instead of both racing to save the same record.
Error fixFix NetSuite INSUFFICIENT_PERMISSION Error
NetSuite INSUFFICIENT_PERMISSION errorINSUFFICIENT_PERMISSION means the role executing the request, whether a logged-in user or the role behind a script deployment, lacks a specific permission needed for the record type, transaction type, or subsidiary being accessed. Fix it by checking the role's permission list under Setup > Users/Roles > Manage Roles against the exact record and level (View, Create, Edit, or Full) the operation requires.
Error fixFix NetSuite SSS_REQUEST_TIME_EXCEEDED Error
SSS_REQUEST_TIME_EXCEEDED NetSuite errorSSS_REQUEST_TIME_EXCEEDED fires when a synchronous request, most often a Suitelet page render, a RESTlet call, or a Client Script action, runs past the maximum wall-clock time NetSuite allows for that request type, independent of how many governance units the script had left. Fix it by moving long-running work out of the synchronous request path into a Map/Reduce or Scheduled Script and having the UI or integration poll for completion instead of waiting on one call.
Error fixFix NetSuite CANNOT_CONVERT Error
NetSuite CANNOT_CONVERT error SuiteScriptCANNOT_CONVERT is thrown when SuiteScript tries to coerce a value into a data type the target field or API call does not accept, most often a text string passed to a date or numeric field, or a value passed to N/format.parse() with a type parameter that does not match the string's actual format. Fix it by matching the value's JavaScript type and format string exactly to what the field or format.parse() call expects before passing it in.
Error fixFix NetSuite SSS_INVALID_SUBLIST_OPERATION Error
SSS_INVALID_SUBLIST_OPERATION NetSuite errorSSS_INVALID_SUBLIST_OPERATION fires when a SuiteScript sublist line API, such as selectLine, commitLine, getCurrentSublistValue, or insertLine, is called in a context that does not support it, most often mixing dynamic-mode line APIs with a record loaded in standard mode, or reading a current sublist value before a line has been selected. Fix it by loading the record with isDynamic set consistently with the API style you use, and always calling selectLine or selectNewLine before any getCurrentSublistValue or setCurrentSublistValue call.
Error fixFix NetSuite INVALID_KEY_OR_REF Error
NetSuite INVALID_KEY_OR_REF errorINVALID_KEY_OR_REF fires when NetSuite cannot resolve a key used to reference another record, most commonly a parent record id on record.create's initial defaultValues, a joined internal id in a saved search filter, or a foreign key style reference in a CSV import mapping, because that id does not exist, is inactive, or is not visible in the current role or subsidiary context. Fix it by confirming the referenced internal id actually exists and is accessible before the reference is used, rather than assuming a previously valid id is still good.
Error fixFix NetSuite SSS_REQUEST_LIMIT_EXCEEDED Error
SSS_REQUEST_LIMIT_EXCEEDED NetSuite errorSSS_REQUEST_LIMIT_EXCEEDED fires when the number of concurrent inbound requests, typically SuiteTalk web services or RESTlet calls, against an account exceeds the concurrency limit allowed for that account's service tier, independent of any single script's governance units or run time. Fix it by serializing or queuing integration calls, adding retry with backoff on the caller side, and consolidating many small calls into fewer bulk operations.
How-toHow to use formula fields in a NetSuite saved search
In the saved search Results tab, add a column, set Field to "Formula (Text)", "Formula (Numeric)", "Formula (Date)" or "Formula (Currency)", then type an Oracle SQL expression into the Formula box using curly braces around field IDs, e.g. {trandate} or {item.custitem_weight}. Formula fields can also go on the Criteria tab so you can filter on the calculated value itself.
How-toHow to write and run SuiteQL queries in NetSuite
SuiteQL is NetSuite's read-only SQL dialect over the underlying record tables, run either interactively from Analytics > SuiteQL Query Tool (or the older /app/suiteanalytics query page), through REST at /services/rest/query/v1/suiteql, or programmatically via the N/query module in SuiteScript 2.x. It supports standard SELECT, JOIN, WHERE, GROUP BY and window functions against table names that mostly match record type IDs (transaction, transactionline, item, customer).
How-toHow to build a workflow in NetSuite with SuiteFlow
Go to Customization > Workflow > Workflows > New, pick the record type and select Server, Client, or both as the trigger context, then build states and transitions on the workflow diagram, attaching actions (Set Field Value, Send Email, Create Record, Custom Action Script) to each state or transition. Release the workflow (top right dropdown, Testing to Released) once validated, since a workflow left in Testing only fires for the workflow owner.
How-toHow to create an assembly build or work order in NetSuite
For simple manufacturing with no routing or WIP tracking, use Transactions > Manufacturing > Build Assemblies (or Enter Assembly Build), select the assembly item, quantity, and location, and NetSuite consumes the BOM components and receives the finished item in one transaction. For multi-step production needing routing, WIP accounting or partial completions, create a Work Order (Transactions > Manufacturing > Work Orders) and process it through Work Order Completion, which requires the Advanced Manufacturing feature (SuiteSuccess Manufacturing or WMS add-on) or the Manufacturing bundle.
How-toHow to run intercompany transactions in NetSuite (OneWorld)
Enable the Intercompany Framework and Automated Intercompany Management features (Setup > Company > Enable Features > Company), then create an Intercompany Sales Order or Purchase Order between two subsidiaries in the same NetSuite account; NetSuite auto-generates the matching intercompany transaction on the counterparty subsidiary and posts the elimination journal entries during period close if Advanced Intercompany Journal Entries is also enabled.
How-toHow to Customize NetSuite Advanced PDF/HTML Templates
NetSuite Advanced PDF/HTML templates use FreeMarker markup inside an XML-for-PDF or HTML wrapper, edited under Customization > Forms > Advanced PDF/HTML Templates. You reference transaction body fields with ${record.fieldid}, loop line items with a list directive over record.item, and control layout with standard XSL-FO style tags in the barcode/pdf namespace.
How-toHow to Import CSV Data Into NetSuite Reliably
NetSuite's CSV Import Assistant, under Setup > Import/Export > Import CSV Records, maps spreadsheet columns to record fields, matches existing records by internal ID or a chosen field, and can create, update, or upsert in a single run. The most reliable imports use a saved import map, reference records by internal ID where possible, and stage the file with a header row that exactly matches expected column types.
How-toHow to Set Up Revenue Recognition With NetSuite ARM
NetSuite Advanced Revenue Management (ARM) recognizes revenue on a schedule independent of invoicing by generating a Revenue Element from each transaction line, applying a Revenue Recognition Rule to determine timing, and optionally allocating revenue across performance obligations using Standalone Selling Price (SSP). Setup requires enabling the ARM feature, defining recognition rules, and mapping item revenue categories before transactions start generating revenue plans.
How-toHow to Set Up Approval Routing in NetSuite
NetSuite offers two approval routing paths: native transaction approval (Enable Features > Transaction approvals, then per-employee Approval Limit and Purchase Approval Limit fields) for simple single-approver chains, and SuiteFlow (Customization > Workflow > Workflows) for multi-step, condition-based, or parallel approval routing with escalation and notification logic.
How-toHow to Build NetSuite Dashboards and KPI Scorecards
NetSuite dashboards are assembled from portlets (KPI, KPI Scorecard, List, Trend Graph, Report Snapshot) added via Personalize Dashboard, where KPI portlets show a single metric with a comparison period and KPI Scorecards show a table of multiple KPIs across time periods and can be published to a role for standardized reporting.
AdvancedAvoiding governance limit errors in NetSuite Map/Reduce scripts
A NetSuite Map/Reduce script gives each map or reduce invocation of a key its own fresh governance allotment instead of sharing one pool across the whole run, so most SSS_USAGE_LIMIT_EXCEEDED failures come from a single key doing too much work, not from the total record count. Fix it by moving heavy logic out of getInputData, keeping map and reduce functions idempotent and cheap per key, and checking runtime.getCurrentScript().getRemainingUsage() before expensive calls.
AdvancedAuthenticating NetSuite RESTlets with OAuth 2.0 and Token-Based Authentication
NetSuite RESTlets can be called with either Token-Based Authentication (TBA, OAuth 1.0a signed requests) or OAuth 2.0, and both require a Setup > Integrations > Manage Integrations record before any token is issued. Machine-to-machine OAuth 2.0 uses a client credentials grant with a JWT bearer assertion signed by a certificate; TBA uses a consumer key/secret plus a per-user access token signed with HMAC-SHA256.
AdvancedWorking with NetSuite's SuiteTalk REST Web Services API
SuiteTalk REST exposes NetSuite records at https://ACCOUNTID.suitetalk.api.netsuite.com/services/rest/record/v1/{recordType}/{id} and ad hoc SQL-like queries at /services/rest/query/v1/suiteql, both authenticated with TBA or OAuth 2.0. It returns JSON, paginates large result sets with limit/offset and a hasMore flag, and needs expandSubResources or a specific fields query to pull sublist and related data efficiently.
AdvancedSetting up NetSuite SuiteAnalytics Connect for ODBC and JDBC access
SuiteAnalytics Connect is a separately licensed feature that exposes a read-only relational view of NetSuite data over ODBC or JDBC for BI tools like Power BI, Tableau and Excel. Setup means enabling the feature, downloading the driver, configuring a DSN against the account's connect host, and using a role with the SuiteAnalytics Connect permission.
AdvancedManaging NetSuite sandbox refresh alongside SDF deployments
A NetSuite sandbox refresh clones production data and customization state into the sandbox account, which means any sandbox-only changes not captured in an SDF (SuiteCloud Development Framework) project are wiped, while changes that were already deployed to production survive because they come along with the refresh. Plan refreshes around your deployment calendar, and redeploy or validate your SDF project immediately after every refresh.
AdvancedN/query versus N/search: choosing the right SuiteScript data access module
N/query runs SuiteQL directly against NetSuite's relational schema and is generally cheaper and faster for joins, aggregation and large filtered pulls, while N/search wraps the same saved-search engine used by the UI and is better when you need formula columns, summary types or a saved search object you can reuse. Both consume governance units per page fetched, but N/query's ability to express a join in one query often beats the multiple round trips a search-based join pattern requires.
AdvancedChoosing between User Event and Client scripts in NetSuite
User Event scripts (beforeLoad, beforeSubmit, afterSubmit) run server-side on every save regardless of how the record was created, including CSV import, web services and workflows, and are the only reliable place to enforce business rules. Client scripts (pageInit, fieldChanged, saveRecord, postSourcing) run only in an interactive browser session and can be bypassed entirely by any non-UI record save, so they should handle UX (field visibility, warnings, defaults) rather than validation that must never be skipped.
AdvancedHow NetSuite scheduled script queueing actually works
A Scheduled Script deployment queued behind other jobs is not failing; NetSuite runs a limited number of scheduled and Map/Reduce script queues concurrently per account, so deployments wait their turn based on account concurrency and deployment priority. The practical fixes are staggering trigger times, setting deployment priority correctly, and designing scripts that reschedule themselves cleanly with N/task instead of running one long unbroken execution.
AdvancedSetting up a NetSuite SuiteCloud CI/CD pipeline
A repeatable NetSuite CI/CD pipeline uses SuiteCloud CLI for Node.js authenticated non-interactively with a Token-Based Authentication saved authentication ID, running suitecloud project:validate then project:deploy against a target account from a pipeline runner rather than a developer's machine. The main setup work is generating CI-specific TBA credentials, storing them as pipeline secrets, and keeping manifest.xml/deploy.xml accurate so deploys are deterministic.
AdvancedExporting large volumes of data out of NetSuite reliably
For large NetSuite exports, the right tool depends on frequency and volume: SuiteAnalytics Connect (ODBC/JDBC) suits ad hoc and scheduled BI pulls with SQL filtering, SuiteQL over SuiteTalk REST or N/query suits programmatic incremental syncs, and a Map/Reduce script suits transformations that must happen inside NetSuite before export. Whichever method is used, filtering by lastmodifieddate for incremental pulls instead of re-exporting the full dataset every run is what actually makes large exports sustainable.
Oracle E-Business Suite
Fix FRM-40735: WHEN-VALIDATE-RECORD Trigger Raised Unhandled Exception ORA-06508
FRM-40735: WHEN-VALIDATE-RECORD trigger raised unhandled exception ORA-06508FRM-40735 with ORA-06508 almost always means a PL/SQL package used by the form was recompiled while your session still held the old cached state, or the trigger's own exception handling does not trap a real data error. Exit the form completely and re-enter it; if the error repeats for all users, recompile invalid objects on the database and check for a bad custom trigger.
Error fixOracle EBS Concurrent Manager Will Not Start: How to Fix It
Oracle EBS concurrent manager not startingA concurrent manager that will not start in Oracle EBS is almost always one of three things: the node registered in FND_NODES no longer matches the actual hostname (common after cloning), stale OS processes are blocking a fresh start, or the database and listener the manager connects to are unreachable. Check the internal manager log, verify the node name, clear stale processes, and restart with adcmctl.sh.
Error fixFix Oracle EBS Workflow Notification Mailer Not Sending Emails
Oracle EBS Workflow Notification Mailer not sending emailsWhen EBS notifications stop reaching inboxes, check the mailer status in Oracle Applications Manager (OAM) Workflow Manager first - a Suspended or Error status almost always points at an SMTP or IMAP connectivity or credential problem introduced by a mail server change, not at Workflow itself. Fix the mail server configuration, restart the mailer component, and requeue the backlog.
Error fixFix ORA-01555: Snapshot Too Old in Oracle EBS Concurrent Requests
ORA-01555: snapshot too old in EBS concurrent requestORA-01555 in a concurrent request means the program tried to read data from undo that has already been overwritten, usually because the report or custom PL/SQL ran long enough, or committed often enough mid-cursor, that the undo tablespace could not retain the needed read-consistent image. Increase UNDO_RETENTION and undo tablespace size first, then review the program for commits inside open cursor loops.
Error fixFix adop phase=prepare Failures in EBS 12.2 Online Patching
adop phase=prepare fails in EBS 12.2 online patchingAn adop prepare phase failure in EBS 12.2 almost always means the patch edition (patch file system) and the run edition are out of sync, or a previous cutover or cleanup did not complete cleanly. Read adop.log for the specific worker error, resync the file systems with adop phase=fs_clone if needed, and never start a new patch cycle on top of an unfinished one.
Error fixFRM-92101: There was a failure in the Forms Server during startup
FRM-92101 There was a failure in the Forms Server during startupFRM-92101 fires when the browser cannot complete the handshake with the Forms listener servlet, almost always because the Forms server process did not start, formsweb.cfg or jserv.conf has a bad entry, or a client-side Java/JRE version mismatch is blocking the applet. Check the apps tier Forms log first, then the client Java version, then the config files.
Error fixGL period will not close: unposted or unaccounted journal batches
You cannot close this period, there are unposted journal batchesOracle EBS General Ledger blocks a period close whenever unposted journal batches, unaccounted subledger transactions, or pending mass allocations still reference that period. Run the Unposted Journals and Period Close Exceptions reports to find the offending batches, then post or reverse them before retrying the close.
Error fixAutoInvoice import fails with invalid line/header exceptions
AutoInvoice import failed invalid line exceptions in RA_INTERFACE_ERRORS_ALLAutoInvoice rejects lines when the interface data references an invalid or inactive customer, transaction type, GL date outside an open period, currency, or accounting flexfield combination. The AutoInvoice Execution Report and RA_INTERFACE_ERRORS_ALL tell you exactly which interface line and which field failed validation, so start there rather than guessing at the source system feed.
Error fixOracle Workflow error: Attribute does not exist for item type
Wf_Engine_Util Attribute does not exist for item typeThis Oracle Workflow error means a workflow activity, function, or notification message is referencing an item type attribute (via SetItemAttrText/GetItemAttrText or a &ATTRIBUTE token) that was never defined on that item type, was deleted, or is misspelled - almost always introduced by a custom workflow change that was not fully synchronized. Compare the attribute list in Workflow Builder against every reference to it in the process.
Error fixConcurrent request completes with Warning and an FDPSTP message
Concurrent request completed with warning FDPSTPA concurrent request ending in Warning with a message mentioning FDPSTP means the underlying program's own completion status was not a clean Normal, and the post-processing step (FDPSTP) that handles printing/output is simply reporting that upstream condition. Always open the request log first - the real cause is almost always inside the program's own log, not in FDPSTP itself.
How-toHow to Import AP Invoices in Oracle EBS with Payables Open Interface Import
Load invoice header and line data into AP_INVOICES_INTERFACE and AP_INVOICE_LINES_INTERFACE, then run the Payables Open Interface Import concurrent program to create standard invoices in Oracle Payables. Rows that fail validation land in AP_INTERFACE_REJECTIONS with a specific reject reason you can query directly, without opening the Invoice Workbench.
How-toHow to Use Forms Personalization in Oracle EBS (No CUSTOM.pll Needed)
Forms Personalization lets you change field properties, set defaults, run built-ins and show messages on any Oracle Forms screen through Help > Diagnostics > Custom Code > Personalize, with no custom library or forms compile required. Rules are stored per form and responsibility in FND_FORM_CUSTOM_RULES and apply at runtime for every user who opens that form.
How-toSQL to Find Responsibilities Assigned to a User in Oracle EBS
Join FND_USER to FND_USER_RESP_GROUPS on USER_ID, then to FND_RESPONSIBILITY_TL on RESPONSIBILITY_ID and APPLICATION_ID to get the responsibility name, filtering the END_DATE columns to show only currently active assignments. This is the standard query DBAs and support teams use instead of clicking through System Administrator > Security > User > Define for every user.
How-toOracle EBS Month-End Close Checklist: GL, AP, AR
Close sub-ledgers before General Ledger: finish and account for all Payables and Receivables transactions, close the AP and AR periods, transfer journals to GL through Create Accounting, reconcile sub-ledger to GL, then close the GL period last. Closing GL before a sub-ledger is fully accounted is the single most common cause of a reopen.
How-toHow to Close an Inventory Accounting Period in Oracle EBS
Before closing an Inventory period, run the Pending Transactions report to clear every uncosted or erroring material transaction, then close through Inventory > Accounting Close Cycle > Inventory Accounting Periods. Inventory will refuse to close while pending transactions remain, and any that get force-closed into the next period will misstate both months' costed inventory value.
How-toHow to Create a BI Publisher Report in Oracle EBS
An EBS BI Publisher report has three parts: a data model that produces XML data (usually a SQL-based data template), a Data Definition registered in the XML Publisher Administrator responsibility, and an RTF or Excel template built with the BI Publisher desktop tools and uploaded against that definition. A concurrent program then ties them together and runs the same way any standard EBS report does.
How-toHow to Register a Custom Concurrent Program in Oracle EBS
Registering a custom concurrent program in EBS takes three linked steps in the System Administrator responsibility: register the Executable pointing at your actual code object, register the Program that references that executable and defines its parameters, then add the program to a Request Group so it is visible under the target responsibility's Submit Request window.
How-toHow to Set Up AME Approval Rules in Oracle EBS
AME routes approvals for iProcurement, iExpense, PO approvals, and other seeded transaction types through Conditions built on Attributes, combined with Approver Groups into Rules. Build and test every rule in Test status using the AME Test Workbench before flipping the transaction type to Production, since production rule changes route real approvals immediately.
AdvancedHow the adop Patching Cycle Works in Oracle EBS 12.2
adop, AD Online Patching, applies patches to the offline patch edition of the file system while users keep working on the current run edition, then switches editions in a short cutover window. A standard cycle runs prepare, apply, finalize, cutover and cleanup, each invoked as its own adop phase= command.
AdvancedHow to Extend an OAF Page in Oracle EBS Without Touching Seeded Code
Use OAF Personalization, through the Personalize Self-Service Defn responsibility or the Personalize Page link, for layout, prompts and simple rules, and Controller Extension, a custom Java class that extends the seeded controller, for logic changes such as new validation or events. Both approaches survive patching because the seeded XML and Java classes are never edited directly.
JD Edwards
JDE UBE failed (status E): how to read jde.log and jdedebug.log
JDE UBE failed to navigate to report queue, how to read jde.logA UBE (batch report/program) that ends with status E in Work With Submitted Jobs tells you almost nothing on its own. The real error is in jde.log on the enterprise server, in the job's own PDF/log subdirectory (jdedebug.log if you turned on debug), and in the work directory for that job number under PrintQueue or the OS temp path.
Error fixJD Edwards: record is being used by another user (record reservation)
JD Edwards record is being used by another user, cannot updateEnterpriseOne places a soft record reservation lock when a user opens a record for edit, tracked in the F00165 table, and releases it when the user saves, cancels, or the session ends cleanly. A stuck lock almost always means a session died abnormally (browser crash, network drop, kiosk timeout) without triggering the release, and it must be cleared by an admin, not by the original user retrying.
Error fixJD Edwards business function (BSFN) errors: how to diagnose them
JD Edwards business function error, BSFN failed to loadA BSFN error in EnterpriseOne means either the compiled function was not found for the current package build, or the function ran and threw an internal exception (often a null business view row, an unhandled C runtime error, or a failed table I/O). The fix path is different for each, so the first step is always determining which one you are facing from jde.log.
Error fixJDE package build failed: how to find the real cause
JD Edwards package build failed, how to find the causeA package build (Full or Update) that ends in a failed or errored status on the deployment server does not explain itself in the Package Build Workbench screen. The real diagnostic detail is in the package's own log subdirectory on the deployment server, which holds a build log, a table conversion log, and per-object compile logs that pinpoint the actual failure.
How-toHow to set up JD Edwards Orchestrator (step by step)
An EnterpriseOne orchestration chains one or more requests (form requests that drive an interactive application, or service requests that call a BSFN, business service, or SQL) plus optional rules and notifications, then exposes the whole thing as a callable REST endpoint via the AIS (Application Interface Services) server. The setup work happens in Orchestrator Studio, not the Fat Client.
How-toHow to set data selection and processing options in JD Edwards
Data selection controls which rows a UBE's underlying business view reads (a filter, stored per version in F9210/F9211), while processing options control how the program behaves once it has that data (a settings template stored per version in F983051/F983052). They are configured from the same Version Detail screen but are separate, unrelated mechanisms that new users routinely confuse.
How-toJD Edwards table conversion: how it works and how to run one
Table conversion (TC) is the EnterpriseOne mechanism that updates a table's physical structure and converts its existing data whenever a table's definition changes in Object Librarian, most commonly running automatically as part of a package build. Simple field additions or size changes convert automatically; more complex changes such as splitting a field or transforming values need a custom conversion routine attached to the table object.
How-toHow to set up BI Publisher output for a JD Edwards report
BI Publisher for JD Edwards EnterpriseOne lets a UBE render through an RTF or PDF template designed in BI Publisher instead of EnterpriseOne's own print engine, giving far more control over layout for things like invoices, checks, and financial statements. Setting it up means confirming the connection to a BI Publisher server, building or importing a template against the report's XML data structure, and associating that template with the specific report version through Report Design Aid.
How-toJDE One View Report stuck pending: how to publish it to other users
One View Reports are a type of User Defined Object (UDO), and like other UDOs, a report a business user designs is saved as Pending by default and only visible to its creator until an administrator with UDO administration security approves it and assigns it to a role or *PUBLIC. This approval and availability step, not the report design itself, is the most common reason a finished One View Report is not showing up for anyone else.
AdvancedHow to set up row security in JD Edwards Security Workbench
Security Workbench (fast path SECURITY, application P00950) is where every type of EnterpriseOne security record is defined, including row security, which restricts which rows of data a role or user is allowed to see or act on based on a key field like business unit or company, independent of whether they have access to the application itself. Application security controls whether a role can open a program at all; row security controls what data they see once they are in it.
Oracle Fusion Cloud ERP
Fix FBDI Import Failures From Interface Table Validation Errors
FBDI import failed - interface table validation errorsWhen a Fusion FBDI import job errors out, the cause is almost always bad data in the interface tables (an invalid value set, a wrong date format, or a missing required column), not the ESS job itself. Open the process's Interface Errors Report or the Correct Import Errors spreadsheet to see the exact rejected rows and reason codes, fix the source data, and resubmit from the interface tables instead of re-running the whole FBDI load.
Error fixClear An Oracle Fusion ESS Job Stuck In Blocked Status
Oracle Fusion ESS job stuck in Blocked statusA Blocked status on an Oracle Fusion Enterprise Scheduler (ESS) job almost always means an earlier instance of the exact same job is still running or stuck, and the job definition does not allow simultaneous requests. Find and finish, or cancel, the earlier request first; only then does the Blocked request move to Running.
Error fixFix The Oracle Fusion "You Don't Have Access To This Data" Error
You don't have access to this data. Contact your help deskThis generic Oracle Fusion security message means the function privilege and the data security scope did not both line up for that user on that record - most often the job role is assigned but the matching data role, security profile, or business unit and ledger context in Manage Data Access for Users is missing. Fix it by checking data access setup for the user's role, not by re-granting the same job role again.
How-toOTBI vs BI Publisher: Which One Should You Use
Use OTBI when a business user needs ad hoc, self-service, real-time analysis with no fixed layout. Use BI Publisher when you need a pixel-perfect, scheduled, high-volume, or externally distributed document such as an invoice, check, or statutory report. Most Fusion implementations end up using both, not one instead of the other.
How-toPaginate And Authenticate Oracle Fusion REST API Calls Correctly
Oracle Fusion Cloud REST APIs authenticate with HTTP Basic Authentication, an integration user's credentials, over HTTPS by default, and paginate with limit and offset query parameters rather than a page number. Loop on the hasMore flag in the response until it returns false to retrieve a full result set.
How-toHCM Data Loader Vs FBDI: Which One Loads Your Fusion Data
HCM Data Loader (HDL) is the dedicated bulk tool for HCM business objects - workers, assignments, compensation, absences - and uses a plain-text .dat file with METADATA and MERGE or DELETE action lines, not a spreadsheet template. FBDI is the general Financials and SCM bulk-load framework built on Excel macro templates that stage data into interface tables. If the object lives in HCM, use HDL; if it lives in Financials, Procurement, or SCM, use FBDI.
How-toConnect Oracle Integration Cloud (OIC) To Fusion ERP
OIC connects to Fusion ERP primarily through the prebuilt ERP Cloud Adapter, which wraps Fusion's REST and SOAP web services with OAuth-based authentication and pick-list discovery of available business objects and operations, instead of you hand-building every REST call. Use the adapter for standard integrations; drop to a generic REST or SOAP adapter only when the ERP Cloud Adapter does not yet expose the specific service you need.
How-toFix Wrong Row Counts When Joining Across OTBI Subject Areas
Most subject areas in Oracle Fusion OTBI are self-contained and only support reliable analysis within their own folders; dragging a folder from a second subject area into the same analysis without a genuine shared join key silently produces duplicated or missing rows because OTBI has no way to correctly relate the two fact grains. Fix it by staying inside one subject area where possible, or by explicitly using a subject area that Oracle designed to cross domains, rather than combining arbitrary folders yourself.
How-toOracle Fusion Period Close: A Practical Checklist
Closing a Fusion GL period cleanly means closing every feeder subledger first (Payables, Receivables, Costing, Fixed Assets), running Create Accounting to post everything to GL, reconciling subledger-to-GL balances, and only then setting the GL period status to Closed - not Close Pending, which still allows adjustments. Close Monitor gives a single dashboard of every subledger's close status instead of checking each module separately.
How-toExtend Oracle Fusion Safely With Sandboxes And Visual Builder Studio
Fusion customizations - a new field, a validation rule, a redesigned page layout, or a standalone custom app - are built inside a sandbox, an isolated workspace that lets you make and test changes without affecting other users until you explicitly publish. Application Composer handles fields, objects, and business rules; Visual Builder Studio builds new standalone pages and full custom applications that can embed inside or sit alongside Fusion.
SAP
SAP M7 021: Deficit of SL Stock Quantity
SAP error M7 021 Deficit of SL stock quantityM7 021 fires during a goods issue, delivery, or confirmation when SAP checks the unrestricted-use (SL) stock for the exact plant, storage location and batch combination and finds less than what you are trying to post out. Fix the entry (batch, storage location, quantity) first; only enable negative stock or downgrade the message to a warning if the business genuinely needs to post ahead of a receipt.
Error fixSAP IDoc Status 51: Application Document Not Posted
SAP IDoc status 51 errorStatus 51 tells you the IDoc reached the application layer and failed to post, but the status text itself is not the error - the real cause sits in the status record's long text or the linked application log. Fix the underlying data or configuration, then reprocess the IDoc through BD87 rather than editing the status.
Error fixSAP Short Dump TIME_OUT: Maximum Runtime Exceeded
SAP runtime error TIME_OUT short dumpA TIME_OUT runtime error means a dialog (or RFC) work process ran longer than the maximum allowed runtime, controlled by profile parameter rdisp/max_wprun_time (600 seconds by default). The fix is almost always to move the long-running work to background processing or tune the underlying program, not to raise the timeout.
Error fixSAP F5 060: Posting Only Possible in Periods X and Y
SAP F5 message posting period closed for account typeMessage F5 060 fires when a document date falls in a fiscal period that the posting period variant has not opened for that account type. Either change the document/posting date into an open period, or have Finance open the required period and account type in OB52 for the relevant variant.
Error fixSAP KI 235: G/L Account Requires an Assignment to a CO Object
SAP error KI 235 no cost element definedKI 235 means a primary cost or revenue element exists (or should exist) on a P&L account, but the posting you are entering has no valid Controlling object - cost center, order, WBS element or profitability segment - to receive it. Add the account assignment on the posting, or set a default cost center via OKB9 so future postings resolve automatically.
Error fixSAP CO11N Confirmation Errors and How to Fix Them
SAP CO11N confirmation error deviation too largeCO11N (time ticket confirmation for production/process orders) throws several distinct errors: deviation from the standard value is too large, goods movement not possible for a component, or the order/operation status does not allow confirmation. Each has a specific cause in order status, routing tolerance settings, or component availability, not a single generic fix.
How-toHow to Read MD04 Exception Messages in SAP
The exception indicator in MD04 flags procurement elements whose date or quantity no longer matches the current demand situation - it is SAP's built-in change signal, read element by element in the detail screen, not just the header icon. Triage by exception group first, then decide to reschedule, cancel, or accept each one.
How-toHow to Use BAPI_TRANSACTION_COMMIT Correctly
SAP's BAPI programming model separates business logic from the database commit on purpose, so a caller must explicitly call BAPI_TRANSACTION_COMMIT after a successful BAPI - usually with WAIT = 'X' - or the created object never actually persists. Skipping this step, or forgetting WAIT, is the most common reason a BAPI 'runs fine' but nothing gets saved.
How-toSAP VL150: Collective Processing of Documents Due for Delivery
VL150 (and its more commonly used successor VL10) mass-creates outbound deliveries for sales orders that are due by a selected date, based on shipping point, route, and delivery-relevant item category. Orders that do not appear are usually held back by a delivery block, an incomplete order, a failed availability check, or a delivery date outside the selection window.
How-toSAP SE16N vs SQVI: Table Browser vs Ad Hoc Query
SE16N is a single-table browser: fast filtering, formatted display, and export from one table at a time, with an optional edit function for authorized users. SQVI (Quick Viewer) builds ad hoc queries that join multiple tables without writing ABAP, and can be saved as a reusable report. Use SE16N for a quick look at one table; use SQVI when you need data joined across two or more tables.
Microsoft Dynamics
Fixing "Cannot create a record in (table). The record already exists" in D365 F&SCM data entity imports
Cannot create a record in (table). The record already exists - D365 F&SCM data entity importThis is the standard kernel duplicate-key exception, thrown when the Data Management Framework tries to insert a staging row into a target table whose unique or alternate key already matches an existing record. It almost always means the entity's insert-vs-update logic did not recognize the target row as an update, not that you have a true accidental duplicate in your source file.
Error fixFixing "There are currently no batch servers available for processing" in D365 F&SCM
There are currently no batch servers available for processing D365 finance and operationsThis message means the batch framework cannot find any AOS instance flagged as a batch server and available for the batch group the job is assigned to. The fix is almost always in server configuration (System administration > Servers) or batch group assignment, not in the batch job itself.
Error fixFixing "You do not have the following permissions on TableData (table): (permission)" in Business Central AL
You do not have the following permissions on TableData: Insert Business CentralThis runtime error means the current user's assigned permission sets do not grant the required Insert, Modify, Delete, Read, or Execute right on that specific table. It is most common right after installing or updating a custom AL extension, because Business Central checks object-level permissions even for tables an extension owns.
Error fixFixing "The CIL object was not found" in Dynamics AX 2012
The CIL object was not found. This could be caused by that CIL was not generated - AX 2012This error appears when the AOS tries to execute compiled CIL for a class or method that has not actually been regenerated since a code change was imported or edited, so the .NET runtime has nothing matching to run. The fix is a full compile followed by a full CIL generation and an AOS restart, not just a partial or incremental rebuild.
How-toHandling OData 429 Too Many Requests throttling in D365 Finance and Operations
D365 F&SCM protects shared AOS capacity by throttling OData and custom service calls, returning HTTP 429 with a Retry-After header once a client sends too many requests too quickly. The durable fix is to honor Retry-After with backoff and redesign high-volume or frequent-polling integrations to use batching, business events, or Data management instead of tight request loops.
How-toSetting up Electronic Reporting (ER) formats in D365 Finance and Operations
Electronic Reporting (ER, also called GER - Global Electronic Reporting) is the D365 F&SCM framework used to generate country-specific tax reports, e-invoices, and payment files without X++ code. You build it in three layers: a data model, a model mapping to source tables, and a format that renders the mapped data. Work is done under Organization administration > Electronic reporting.
How-toCalling and extending the Business Central API v2.0
The Business Central API v2.0 is a REST/OData endpoint at api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/v2.0, authenticated with Azure AD OAuth 2.0. It exposes standard entities like customers and items, and lets you publish your own with an AL API page.
How-toEmbedding Power BI reports inside D365 Finance and Operations workspaces
D365 F&SCM can show Power BI tiles and full reports directly inside workspaces and forms, backed by either the entity store (aggregate measurements over BYOD) or embedded reports published from Power BI Desktop. Configuration happens under System administration > Setup > Power BI, then reports are attached to workspaces through personalization.
How-toCreating and selecting custom report layouts in Business Central
Business Central reports can render through a Word layout (simple, single-level documents like invoices) or an RDLC layout (complex, multi-level, grouped reports). Custom layouts are uploaded and assigned per report through the Report Layout Selection page, or shipped inside an AL extension with the rendering(...) property.
AdvancedPlanning an AX 2012 to Dynamics 365 Finance and Operations upgrade
Moving from AX 2012 to D365 F&SCM is a platform change, not a version bump: X++ customizations go through a code upgrade to the new extension/overlayering model, and data moves through a structured data migration, both coordinated as an Upgrade project in Lifecycle Services (LCS). Plan it as a project with its own testing cycle, not a routine patch.
Epicor
Fixing Epicor BusinessObjectException: BPM Directive Errors
Epicor BusinessObjectException: A Business Process Management (BPM) directive has raised the following errorA BusinessObjectException that says "A Business Process Management (BPM) directive has raised the following error" means a directive on that business object stopped the transaction, either deliberately via a Raise Exception widget or accidentally via an unhandled .NET error in Custom Code. Expand the InnerException on the error dialog to see the real message and the directive name, then open BPM Designer for that object and method to find the widget that fired.
Error fixFixing Epicor REST v2 API 401 Unauthorized Errors
Epicor REST v2 API 401 Unauthorized errorA 401 Unauthorized calling Epicor's REST v2 (api/v2/odata) endpoint almost always comes down to one of three things: a missing or wrong x-api-key header, valid credentials but an API key scoped to a different company than the one in the URL, or REST services simply not enabled for that endpoint. Confirm the API key exists and is active in Application Studio (or the classic REST API help page), matches the company segment in the URL, and that the account used for Basic auth or OAuth has the right security group.
How-toFixing a Slow Epicor BAQ (Business Activity Query)
A slow BAQ in Epicor is usually caused by unindexed join columns, a subquery or calculated field forcing a table scan, or the BAQ pulling far more rows than the dashboard actually displays before filtering client-side. Fix it by reading the SQL Server execution plan Epicor generates, moving filters into the BAQ criteria instead of the dashboard filter panel, and replacing subqueries with joins where possible.
How-toEpicor MRP Runs but Generates No Suggestions
When Epicor's MRP process completes without a job or purchase suggestion for a part you expect one for, the cause is almost always the part's own configuration (Part Class Type, Make Direct, Non-MRP flag, planning Time Fence) or the demand not being linked in a way MRP recognizes, not a defect in the MRP engine. Work through the part's Planning tab, its safety stock and lead time setup, and the demand source (sales order line status, job material requirement) before assuming the run itself failed.
How-toPreserving Customizations When Upgrading to Epicor Kinetic
Epicor Kinetic's web UI does not simply inherit classic smart-client customizations - most need to go through the Update Customization / Application Studio conversion process, and some WinForms-specific customizations cannot convert directly and must be rebuilt in the Kinetic designer. Plan the upgrade as a customization inventory and rework project, not a single technical cutover step.
How-toHow to import data with Epicor DMT (Data Migration Tool)
In DMT, pick the target data type (e.g. Part, Customer, PartWhse), Generate a template from the connected Epicor server so column names match your version's schema exactly, populate the spreadsheet, load it into DMT, run a Pre-Process/validate pass first to surface errors before committing, then Process to write the records.
How-toHow to build a Kinetic homepage dashboard in Epicor
Kinetic homepage dashboards are built from Active Homepage Maintenance: create a BAQ that returns the metric or list you want, add a KPI or List widget referencing that BAQ, arrange widgets on the homepage layout, and assign the homepage to a role or company so the right users see it.
How-toHow to close job costing and the accounting period in Epicor
Before closing an accounting period in Epicor, run Capture Costs (or confirm background costing is current) to post all labor, material, subcontract, and burden to jobs, review the WIP report for jobs that should be closed or investigated, close completed jobs so their costs relieve WIP, and only then close the GL period, since GL close blocks further transaction posting into it.
AdvancedHow to create and call an Epicor Function
Open Function Studio from the main menu (Customization > Function Studio) or from inside a BPM designer's Call Context widget, define a Library and Function with typed inputs/outputs, write the logic in the C# widget, then compile and test with the built-in test harness before calling it from a BPM directive, a dashboard, or another function.
AdvancedEpicor Application Studio: understanding customization layers
Kinetic UI is built in layers loaded in order - Base (Epicor-delivered), Customization (Application Studio, company/layer-wide), Personalization (user- or role-specific, applied on top), and optionally Extended (packaged add-on layers) - and a change you make will not appear if a higher layer overrides the same control or if you are testing in the wrong layer context.
Mid-market & small ERPs
Fix Odoo AccessError: You Are Not Allowed to Access Records
AccessError: You are not allowed to access records. This operation is allowed for the following groupsOdoo raises AccessError when a user's security groups do not grant a CRUD right on a model through ir.model.access.csv, or when an ir.rule record rule filters the specific record out for that user or company. Fix it by adding the user to the group named in the error, editing the model's access rights, or reviewing the record rule's domain under Settings > Technical > Security.
Error fixFix Fishbowl Error: MySQL Server Has Gone Away
Fishbowl error: MySQL server has gone awayThis error means the Fishbowl Server lost its connection to the underlying MySQL database, usually because a session sat idle past MySQL's wait_timeout, MySQL itself restarted, or a large import or report exceeded max_allowed_packet. Raise the relevant MySQL timeout and packet settings, confirm the MySQL service is actually running, and restart both MySQL and the Fishbowl Server service.
Error fixQAD Says "Unable to Connect to the Application Server": How to Fix It
QAD unable to connect to the application serverThis error almost always means the Progress OpenEdge AppServer broker behind QAD is stopped, unreachable over the network, or out of licensed connections, not a database problem. Confirm the broker process is running and healthy in OpenEdge Explorer, check the port and firewall path from the client, then restart the broker with clean agent settings.
Error fixOdoo Scheduled Actions (Cron) Not Running: How to Fix
Odoo scheduled actions (cron jobs) not runningOdoo scheduled actions usually stop firing because no cron worker is available (workers or max-cron-threads misconfigured), the action is set inactive, or an earlier job crashed and left an ir.cron row stuck in the running state, which blocks the queue. Check Settings > Technical > Automation > Scheduled Actions first, then the server config and the ir.cron table.
How-toHow to Create a Generic Inquiry in Acumatica
Generic Inquiries (GI) are Acumatica's no-code query builder for joining tables, adding filters, and exposing the result as an inquiry screen, dashboard data source, or API endpoint. Open System > Customization > Generic Inquiry, add your base table, define joins and conditions, then run and save. No SQL or customization project is required.
How-toHow to Void a Check in Sage 100
Sage 100 voids checks through Accounts Payable > Main > Check and Payment Voiding. Select the bank code, choose the check number, and Sage reverses the Cash Disbursements Journal entry and reopens the invoice it paid. A check that already cleared in Bank Reconciliation or falls in a closed period needs an extra step before it can be voided cleanly.
How-toHow to Run Requirements Planning (MRP) in SYSPRO
SYSPRO's MRP engine lives under Planning and Scheduling > Requirements Planning. Set planning parameters per warehouse, run the Requirements Calculation to net demand against supply, then review and release the resulting suggestions as purchase requisitions or work orders. A full regenerative run typically runs on a schedule, with net change runs in between to pick up new activity.
How-toHow to Close a Job in JobBOSS2
A job in JobBOSS2 will not close cleanly until every routing operation is marked complete, all material has been issued or returned, and all labor and cost transactions are posted. Review the job's Work In Process detail first, clear any open items, then change the job status to Complete and run final job costing before it is locked.
How-toHow to Create a Quote in E2 Shop System
A quote in E2 Shop System starts with a header identifying the customer and part, then adds routing operations with time and rate, material and outside processing costs, and a markup to reach a sell price. Once accepted, the quote converts directly into a job or sales order so the estimate carries forward as the job's cost basis.
How-toHow to Set Up an EDI Trading Partner in Plex Systems
Setting up an EDI trading partner in Plex's EDI Data Manager means defining the partner and their connection details, mapping the specific document types they will exchange (purchase orders, forecasts, shipping schedules, ASNs, invoices) to Plex's Customer and Part records, and running the partner through test mode before flipping them to production.
How-toHow to Run Live Scheduling in Global Shop Solutions
Live Scheduling in Global Shop Solutions builds a finite-capacity schedule from job routing operations against defined work centers, then presents it as a drag-and-drop board that shop supervisors adjust to reflect real shop floor priorities. Its accuracy depends on work centers, standard hours, and shop floor data collection all being kept current, since the schedule is only as good as the routing and capacity data feeding it.
How-toHow to Create an Import Scenario in Acumatica
Import scenarios in Acumatica live under System Integration > Import Scenarios: you pick a source (a file or a Generic Inquiry), map each source field to a target DAC field on the destination screen, then run or schedule the scenario. A small sample file run through the wizard first makes the field mapping step far faster than mapping blind.
How-toHow to Run a Physical Inventory Count in Sage X3
Sage X3 physical counts run through Stock > Counts: create a count session scoped to a site, category, or zone, generate the count sheet to freeze theoretical quantities, enter counted quantities, review the variance report, then validate to post stock and valuation adjustments. Blocking movements against the counted locations during the window keeps the variance meaningful.
How-toHow to Set Up Business Events and Actions in IFS
IFS Business Events fire when a defined condition on a Logical Unit is met, such as a new record, an update, or a specific attribute changing, and Actions subscribe to those events to send email, invoke a workflow, or call an external service. Both are configured in Solution Manager (or the Events and Actions work area in IFS Cloud) without requiring custom PL/SQL for most standard cases.
How-toHow to Set Up Indirect Rate Pools in Deltek Costpoint
Indirect rate pools in Costpoint group related indirect costs, such as fringe, overhead, G&A, or material handling, so they can be allocated to direct cost bases using a defined rate. Pools and their bases are configured under the Indirect Rate Structure area, with pool tiers sequenced so that lower-level pools like fringe allocate into higher-level pools like overhead before G&A is calculated.
CIO & IT leadership
ERP Upgrade or AI First? A CIO Decision Framework
In most cases, add a grounded AI layer on top of your current ERP first, because it proves value in weeks and shows exactly what an upgrade would need to fix. Reserve a full ERP replacement for cases where the platform itself is end of support, unsupported, or structurally blocking the business, not simply because it feels dated.
CIO briefingHow Much Does ERP AI Actually Cost?
A scoped pilot against one ERP module typically runs 15,000 to 50,000 USD; a single-department production deployment runs 50,000 to 150,000; a multi-module enterprise rollout runs 150,000 to 500,000 or more, plus ongoing hosting and usage costs. Native vendor copilots are usually priced per active user per month on top of existing licensing, not included free.
CIO briefingAdding AI to a Legacy ERP Without Replacing It
Yes, for most legacy ERPs still running in production. If the system exposes its data in any queryable form - ODBC, an API, a scheduled export, or even a read replica of the database - a grounded AI layer can sit alongside it, answering questions and automating workflows without touching core code, buying years of runway before a forced migration.
CIO briefingDoes Your ERP Vendor's AI Copilot Increase Lock-In?
Native vendor copilots such as SAP Joule, Oracle Fusion AI agents and Microsoft Copilot in Dynamics 365 are usually bundled or low-cost to start, but they only see that vendor's native data model and typically bill on consumption, which raises both switching cost and long-run cloud spend. Use them for what they do well inside the vendor's own UI, and keep cross-system or custom-field questions on a vendor-neutral layer.
CIO briefingIs Your ERP Data Ready for AI? A Readiness Checklist
Most ERP data is ready enough to start a scoped AI pilot immediately; full data-quality remediation is not a prerequisite. A handful of specific gaps - duplicate item or customer masters, inconsistent units of measure, missing descriptions, and orphaned records - will visibly degrade AI answers and are worth checking before the pilot, not after.
CIO briefingERP Selection in 2026: Where AI Actually Matters
Treat AI as one evaluation column among many, not the deciding factor: fit, data model, industry depth, and total cost of ownership still decide most ERP selections. Test AI claims live against your own data during the demo, not the vendor's canned dataset, and separate "embedded copilot" marketing from features that ship and work today.
CIO briefingCutting ERP Support Cost with AI: What Actually Moves the Needle
AI reduces ERP support cost mainly by deflecting the high-volume, low-complexity tickets: "how do I run X report," "why is this field locked," "what does this error mean." It does not remove the need for tier 2/3 staff who fix configuration, data, and integration problems, so budget the savings against ticket volume, not headcount, in the first year.
CIO briefingTwo-Tier ERP Plus AI: Closing the Reporting Gap Without Re-Platforming
AI does not remove the rationale for a two-tier ERP strategy (a heavy Tier 1 system like SAP or Oracle at corporate, a lighter Tier 2 system like NetSuite or Dynamics at subsidiaries), but a shared, grounded AI query layer across both tiers can close the cross-entity reporting gap that is the strategy's usual weak point, without a costly re-platforming project.
CIO briefingBuilding an ERP Modernization Roadmap That Includes AI
Sequence a modernization roadmap as data and integration cleanup first, a grounded AI query layer second (which can run on the current ERP, before any platform upgrade), and platform migration or upgrade third, timed on its own business case rather than forced early to enable AI. Trying to do all three simultaneously is the most common way modernization programs stall.
CIO briefingOn-Prem vs Cloud ERP AI for Regulated Manufacturers
For ITAR, CMMC, and export-controlled manufacturers, the deciding question is not on-prem versus cloud in general but whether controlled unclassified information (CUI) or export-controlled technical data ever leaves your boundary to reach an AI model. An on-prem or private-VPC-deployed AI layer keeps that data inside your control boundary; a vendor's shared cloud AI service usually does not, regardless of how the core ERP itself is hosted.
CIO briefingDo You Need an ERP AI Governance Board?
Yes, once more than one AI use case touches ERP data - even a lightweight, four-person committee that meets monthly beats no governance at all. Its job is narrow: approve which ERP data an AI tool can touch, set the review cadence for accuracy and access, and own the kill switch if something goes wrong. It should not be a bureaucratic gate that slows every pilot to a crawl.
CIO briefingMeasuring ERP AI ROI After Go-Live
Measure ROI with three metric families - time saved on named tasks, error or rework reduction, and adoption depth - tracked against a pre-go-live baseline you captured before the tool launched. Most CIOs skip the baseline and then cannot prove anything six months later, so capture it in week one even if the AI tool is not fully ready.
CIO briefingERP Data Sovereignty for AI: What CIOs Need to Check
Data sovereignty for ERP AI comes down to one question: does your ERP data, or any derivative of it (embeddings, cached responses, logs), ever leave the jurisdiction or infrastructure boundary you are required to keep it inside. Cloud-hosted, multi-tenant AI copilots from major ERP vendors often cannot answer that question precisely; on-premises or single-tenant deployments in your own cloud region can.
CIO briefingStaffing an ERP AI Team: What Roles You Actually Need
Most mid-market organizations do not need a dedicated ERP AI team at pilot stage - one ERP-literate technical owner working part-time with an implementation partner is enough. A dedicated team becomes worthwhile once you have more than two or three live AI use cases in production, at which point you need a named owner for prompt/data quality, one for integration and access, and a business-side owner for adoption.
CIO briefingERP AI Vendor Due Diligence: What CIOs Should Actually Check
The single highest-signal question in ERP AI vendor due diligence is 'show me it answering a real question against our actual ERP data, live, not a demo dataset.' Beyond that, focus diligence on data grounding method, security and access model, exit/portability terms, and references from customers on your specific ERP platform - not on feature checklists, which most vendors can match on paper.
CIO briefingSyteLine or CloudSuite Industrial: how to decide in 2026
Infor's roadmap has converged on CloudSuite Industrial (CSI), which is SyteLine's code line delivered as a multi-tenant cloud service on AWS with continuous updates; on-prem SyteLine still runs and is still supported on current versions, but new Infor OS, ION, and AI-adjacent capability lands in CSI first. The decision is not 'SyteLine is dying' so much as 'on-prem SyteLine is a slower lane on the same road.' CIOs should decide based on integration needs, customization depth, and whether IT wants to keep owning SQL Server and patching, not on vendor pressure alone.
CIO briefingNetSuite or Infor: which fits a growing manufacturer in 2026
NetSuite wins on financials, multi-entity consolidation, and speed of implementation, and is the stronger pick for a manufacturer that is asset-light, distribution-heavy, or scaling through acquisition. Infor's manufacturing lines (SyteLine/CSI, LN, M3) win on shop-floor depth: routings, APS scheduling, configure-to-order, and discrete/process manufacturing complexity that NetSuite's manufacturing module still handles more thinly. The right answer depends on where the operational complexity actually lives, not on brand preference.
CIO briefingOracle EBS 12.2: stay on-prem or move to Fusion in 2026
Oracle has committed to Premier Support for E-Business Suite 12.2 into the early 2030s, which is longer than many CIOs assume, so there is no forced 2027 cliff for EBS specifically (that date is commonly confused with SAP ECC's 2027 deadline). The real decision drivers for EBS customers are: how much the org depends on customizations that do not translate to Fusion's SaaS model, whether continuous quarterly Fusion updates fit the org's change-management capacity, and whether Fusion's standardized processes are an acceptable tradeoff for the customizations currently in EBS.
CIO briefingSAP ECC 2027: what mid-size manufacturers should actually do
SAP's mainstream maintenance for ECC 6.0 ends in 2027, with extended maintenance available at additional cost typically through around 2030 depending on the specific agreement. Mid-size manufacturers have three real options: migrate to S/4HANA (on-prem or cloud) before 2027, pay for extended maintenance to buy 2-3 more years, or move off SAP entirely. With limited internal SAP resourcing, most mid-size manufacturers should already be past discovery and into a scoped S/4HANA conversion plan by now, or actively budgeting for extended maintenance as a deliberate bridge, not a default.
CIO briefingERP AI: when to hire a partner versus build it in-house
Build in-house when you have or can hire engineers with real experience in retrieval-augmented generation, your ERP's specific API/data model, and production LLM deployment, and when the AI capability is a genuine long-term differentiator worth owning. Hire a partner when time-to-value matters, your team's strength is running the ERP rather than building AI infrastructure, or you want to validate the use case with a working pilot before committing to a multi-quarter internal build. Most mid-size manufacturers are better served starting with a partner-led pilot and deciding on in-house investment once the use case is proven.
Want answers from your own ERP data?
ERPray answers questions from your live ERP, grounded and permission-aware, on-prem if you need it.