The Playbook
Volume I · FullOnBaan Knowledge Series

The Infor LN
Playbook

Practitioner-written guides on Infor LN, Infor ION, and the Infor OS ecosystem — for consultants, developers, and ERP professionals.

12
Articles Published
2
In Pipeline
Finance
Current Focus
01 // Introduction
All Articles — Jump To
Article 01 · ION · Workflow

Automating Approvals with Infor ION Workflows

A practical guide to configuring event-driven approval automation in Infor LN using ION Workflow & Events

FullonBaan Editorial·March 2026 IONWorkflowInfor LN

Introduction

In a competitive ERP environment, manual approval chains are a silent productivity killer. Purchase orders waiting in inboxes, invoices stalling at department heads, customer credit requests stuck in email threads — these delays accumulate into real business cost. Infor ION Workflows offer a structured, rules-driven alternative: automated routing, escalation, and approval that keeps your processes moving without constant human intervention.

💡 What is Infor ION?

Infor ION (Intelligent Open Network) is the integration and workflow middleware within Infor OS. It connects Infor applications — including LN — via Business Object Documents (BODs), and powers event monitoring, alerting, and approval workflows through ION Desk.

What Are ION Workflows?

ION Workflow is a component of Infor ION that allows you to model, standardise, and automate business processes — particularly approval chains. Workflows are defined in ION Desk and triggered by BOD events published from Infor LN sessions. When a trigger condition is met — for example, a purchase order value exceeding a threshold — the workflow starts automatically, creates tasks in Infor Ming.le, and waits for approval or rejection before allowing the document to proceed.

  • Approval workflows — route documents to one or more approvers in sequence or parallel
  • Task workflows — assign work items and track completion
  • Escalation workflows — automatically elevate to a higher authority if SLAs are missed
  • Event monitors — trigger alerts and actions based on data conditions

Common Use Cases in Infor LN

Purchase Order Approval

Any PO above a defined monetary threshold requires manager approval before release. ION Workflow intercepts the PurchaseOrder BOD on status change, routes it to the approver in the approval matrix, and locks the PO in a Pending Approval state until action is taken.

Sales Order Credit Check

When a sales order is created for a customer whose outstanding balance exceeds the credit limit, an ION workflow routes the order to Finance for manual credit override approval — preventing shipment until authorised.

Invoice Approval & 3-Way Match

Vendor invoices that fail 3-way match (PO → GR → Invoice) can be held in an Exception state and routed to AP managers for review, providing a controlled exception-handling process rather than a hard block.

Key ION Components

01

ION Connect — The Message Bus

Handles all BOD message routing between Infor LN, Ming.le, and connected applications. Every workflow trigger is ultimately a BOD event on ION Connect.

02

ION Desk — Configuration Console

Browser-based interface where Document Flows, Workflow definitions, Monitors, and Activation Policies are authored. All custom workflow logic lives here.

03

Event Management — Monitor & Alert Engine

Watches for exceptions in business data — delays, threshold breaches, missed SLAs — and triggers notifications or initiates workflows in response.

04

Infor Ming.le / OS Activity Stream

The user-facing task inbox. Approval tasks appear here with drillback into LN sessions, giving approvers a single place to act on documents.

05

Approval Matrix

Maps approval requirements to roles, amounts, or cost centres — allowing dynamic routing without hardcoding approver names into workflow definitions.

Configuration Walkthrough

Step 1 — Define the Document Flow

Open ION Desk → Connect → Document Flows. Locate or create the flow for the PurchaseOrder BOD. Add a Workflow step that intercepts the Sync BOD when PO status changes to Pending Approval.

Step 2 — Create the Workflow Definition

Navigate to Workflow → Workflow Definitions. Create a new definition with a custom namespace prefix (never LN_). Define the trigger condition, approval steps, drillback view, and on-approve / on-reject actions.

Step 3 — Configure the Approval Matrix

Use Workflow → Approval Matrix to define routing logic based on amount ranges, department codes, or cost centre. Changing approval authorities later requires only a matrix update — no workflow redeploy.

Step 4 — Activate & Test

Link the workflow via an Activation Policy and activate it. Create a test PO in LN meeting the trigger criteria, verify the Ming.le task, check drillback, and monitor execution in ION OneView.

⚠️ Naming Convention

Never use the LN_ prefix for custom workflow definitions — Infor-standard content uses this prefix and upgrades may overwrite your work. Choose a unique company prefix (e.g. FOB_) for all custom content.

Escalation & SLA Management

ION Workflow supports automatic escalation when an approver fails to act within a defined window. Configure reminders, escalation to the approver's manager, or auto-resolution for low-risk documents — transforming ION Workflow from a passive routing engine into an active governance tool.

Best Practices

  • Always copy and rename standard LN content — never edit LN_* definitions directly
  • Keep trigger conditions specific to avoid noise and approver fatigue
  • Use the Approval Matrix for dynamic routing; avoid hardcoding user IDs
  • Test in a non-production tenant before going live
  • Monitor ION OneView backlogs during the first weeks post-go-live
  • Document every custom workflow with business justification, trigger logic, and owner

📚 Continue Learning

Explore the FOB Repository for ION configuration references. Take the FOB Certification Exam to validate your Infor LN knowledge.

Article 02 · ION · API Gateway

Mastering the Infor ION API Gateway

A deep-dive into Infor's API management layer — authentication, API suites, integration patterns, and practical configuration for Infor LN professionals

FullonBaan Editorial·March 2026 ION APIOAuth 2.0IntegrationInfor OS

Introduction

As Infor LN landscapes grow more connected — feeding data to analytics platforms, external portals, mobile apps, and third-party ERP modules — the need for a secure, governed API layer becomes critical. The Infor ION API Gateway is exactly that: a centralised API management server that sits in front of all Infor products, enforcing authentication, throttling, policy transformations, and audit logging for every inbound API call.

For LN consultants and technical architects, understanding the ION API Gateway is no longer optional. It is the standard integration mechanism in Infor OS cloud deployments, and a growing expectation in on-premise projects that require external connectivity.

💡 What is the ION API Gateway?

The ION API Gateway is a NodeJS reverse proxy that acts as the single API front-end for all Infor products. It accepts HTTP requests, enforces OAuth 2.0 security policies, passes requests to the correct backend service, and returns the response — adding throttling, analytics, caching, and transformation along the way.

Architecture Overview

At its core, the ION API Gateway is a reverse proxy with intelligence. When a client application needs data from Infor LN, it does not call LN directly. Instead, it sends an authenticated HTTP request to the Gateway, which validates the OAuth 2.0 Bearer token, enforces throttling, applies transformation policies, routes the request to the LN backend, and returns the enriched response to the caller.

The Gateway is configured and monitored through its own UI within Infor OS, where administrators can register API Suites, manage authorised clients, review logs, and test endpoints interactively.

Authentication — OAuth 2.0 Flows

All API calls through the ION API Gateway require a valid OAuth 2.0 Bearer token. The Gateway supports multiple grant types, and choosing the right one for your integration pattern is critical.

Authorization Code Grant

  • Best for web apps and native clients with a logged-in user
  • User authenticates interactively through Infor IFS
  • Token issued on behalf of the specific logged-in user
  • Suitable for portals, mobile apps, and user-facing integrations

Resource Owner / Service Account

  • Best for backend or daemon integrations with no user present
  • A Service Account in IFS acts as the calling "user"
  • Client ID + Secret used to obtain token via back-channel POST
  • Standard pattern for middleware, ETL pipelines, scheduled jobs

To obtain a token using the Resource Owner grant, your application sends an HTTP POST to the IFS token endpoint (/as/token or /connect/token) with Client ID, Client Secret, Service Account credentials, and grant type. The four required values — Token URL, Client ID, Client Secret, and Service Account credentials — are all generated when you register your application in IFS.

🔐 The .ionapi File

When a non-SSO backend application is registered, the Gateway produces a .ionapi file — a JSON credential bundle containing OAuth endpoints, Client ID, Client Secret, and tenant information. Store it securely; treat it exactly like a password. It is the standard credential artefact for all ION API integrations.

API Suites — Registering and Exposing APIs

The ION API Gateway aggregates APIs from multiple Infor products into API Suites. Each Suite represents a logical grouping of endpoints from a single application (e.g. all LN Sales Order APIs in one suite). Infor ships pre-built suites for LN in cloud deployments; for bespoke integrations, custom suites can be registered.

1

Create Swagger 2.0 / OpenAPI Documentation

Use Swagger Editor to describe your target API — HTTP verbs (GET, POST, PUT, DELETE), request/response schemas, and parameters. The Gateway requires proper API documentation to register any custom suite.

2

Register the API Suite in ION API UI

Navigate to API → Suites → New Suite. Provide Suite name, API Context path, and description. Then add the Target Endpoint URL and configure Proxy Security (passthrough, mutual SSL, or API key).

3

Configure Authentication for the Target

Specify how the Gateway authenticates to the backend: Anonymous, Basic, OAuth, API Key (HMAC), or Mutual SSL. For LN backends, OAuth passthrough is the standard choice.

4

Apply Policies (Optional)

Policies enrich requests and responses in flight — add headers, log response fields, transform payloads, or convert SOAP to REST. This is the mechanism for wrapping legacy WSDL services as REST suites consumable by ION Connect.

5

Test via the Try It Out Panel

The Gateway UI provides an interactive test panel. Expand a resource, click Try it out, supply the API key or token, and verify the response before connecting the suite to a live ION Document Flow.

Connecting the Gateway to ION Connect

Once an API Suite is registered and tested in the Gateway, it can be used as an API Connection Point in ION Connect — enabling ION Document Flows to call external REST APIs as part of a BOD-triggered integration pipeline. The integration path looks like this:

  • An LN business event publishes a BOD to ION Connect (e.g. a confirmed Sales Order)
  • ION Connect routes the BOD through a Document Flow containing an API connection point
  • The API connection point calls the registered Gateway suite endpoint with the BOD payload
  • The external system receives the data, processes it, and returns a response
  • ION can optionally process the response and trigger further LN updates

This pattern makes the ION API Gateway the bridge between Infor's event-driven BOD world and the HTTP REST world of external applications — enabling bi-directional integration without custom middleware.

Security Roles & Administration

Two key security roles govern ION API access:

  • IONDeskAdmin — required for managing ION Desk document flows that reference API connection points
  • IONAPI-Administrator — required for administering the API Gateway: registering suites, managing authorised clients, reviewing logs

Authorised client applications are registered under API → Authorized Apps. Each registered app is issued a Client ID and optional API Key, scoped to the specific suites it may call. This granular model ensures that third-party integrations access only the LN APIs they legitimately require.

Monitoring, Throttling & Analytics

The ION API Gateway provides built-in operational visibility: every API call is logged with caller identity, timestamp, endpoint, response code, and latency. Throttling policies can be set per API Suite or per authorised client. The analytics dashboard shows traffic trends, error rates, and top consumers. GET responses can be cached at the Gateway layer to reduce LN backend load for high-frequency read operations.

Best Practices

  • Store .ionapi credential files in a secrets manager — never commit them to source control
  • Use Service Accounts with minimum required permissions — avoid admin accounts for integration credentials
  • Prefix all custom API Suites with a company-specific namespace
  • Always document custom suites with Swagger 2.0 before registering — undocumented APIs create maintenance debt
  • Test API calls via the Try It Out panel before wiring into ION Document Flows
  • Review throttling limits under load — tune to your actual call volumes
  • When wrapping SOAP services as REST via API policies, explicitly map SOAP faults to HTTP error codes

Conclusion

The Infor ION API Gateway is far more than a simple proxy — it is the security perimeter, integration hub, and governance layer for all programmatic access to Infor products. For LN consultants moving into integration and technical architecture roles, understanding how to register API Suites, manage OAuth credentials, apply policies, and connect the Gateway to ION Document Flows is a foundational skill.

Combined with the ION Workflow knowledge from Article 01, these two capabilities — approval automation and API-driven integration — represent the core of what makes the Infor OS platform a modern, connected ERP ecosystem rather than a siloed back-office system.


📚 Continue Learning

Take the FOB Certification Exam — ION and integration topics are covered across the technical tracks. Visit the FOB Repository for ION API configuration scripts and reference downloads. Enrol in FOB Training for structured, practitioner-led Infor LN courses.

Article 03 · LN Development · Data Dictionary

Domains, Data Types, Additional Attributes & Validations in Infor LN

A developer's guide to how Infor LN structures data — from the Data Dictionary and domain definitions to Customer Defined Fields, validation hooks, and the Additional Information framework

FullonBaan Editorial·March 2026 DomainsCDFValidationsLN Dev

Introduction

One of the defining strengths of Infor LN as a development platform is the discipline it brings to data modelling. Every field in every LN table is not just a column in a database — it is a typed, governed entity described by a domain in the LN Data Dictionary. Understanding how domains work, what data types they support, how to extend LN tables with Customer Defined Fields (CDFs), and how to enforce business rules through validations is foundational knowledge for any LN developer or technical consultant.

This article covers the full data layer stack: the Data Dictionary, domain types, Additional Information Fields, CDFs, and the validation hook framework available in LN's extensibility layer.

💡 Why This Matters

Every time you write a DAL script, create a CDF, or extend a BOD, you are working with domains. Getting domain types wrong causes runtime errors, data truncation, and integration failures. Getting them right produces clean, upgrade-safe extensions that behave exactly like standard LN fields.

The LN Data Dictionary

The LN Data Dictionary is the central metadata repository that defines the structure of all LN tables, form fields, and program variables. It stores three critical things:

  • Domains — reusable data type definitions that specify the type, length, format, and validation rules for a field
  • Schemas (Tables) — the field composition of every LN database table, each field linked to a domain
  • Referential integrity rules — foreign key relationships enforced by the ES runtime

When an LN application reads or writes a field, it consults the Data Dictionary to determine how to format the value, what input length to allow, whether to uppercase input, and what the valid range of values is. This means consistent behaviour across all sessions that touch the same field — a core principle of LN's architecture.

Domains can be linked to table fields, form fields, and program variables. When the domain definition changes (for example, a string length extension), all linked fields inherit the change automatically — provided the runtime data dictionary is updated via Convert to Runtime.

Domain Data Types

LN supports a well-defined set of primitive data types. Each domain is assigned exactly one type, which determines the physical storage, display behaviour, and valid operations on the field.

STR

String / Multi-byte String

Used for alphanumeric text. The default input and display length is 30 characters. Can be flagged for uppercase conversion. String domains support length extension via the Domain Extension feature in LN Studio — the only type that supports this safely.

LONG

Long (Integer)

Used for whole numbers. Default is 10 digits. Suitable for quantities, counters, and integer identifiers. No decimal places — use Float or Double if decimals are required.

FLOAT

Float / Double

Used for decimal numbers. You configure the number of digits before the decimal (precision) and digits after the decimal (scale). Used for amounts, rates, percentages, and measurements. Float for single-precision; Double for extended precision.

ENUM

Enumerated (Enum)

Used for fields with a fixed set of valid values — status fields, type codes, yes/no flags. Each enum value maps to an integer internally but displays as a label. Enums are the correct type for any field with a finite, predefined option list.

DATE

Date / Date-Time

Used for calendar dates and timestamps. Date-Time (UTC) is the modern standard for cloud-compatible LN development — it stores timestamps in UTC and converts to the user's timezone for display. Plain Date is legacy and should be avoided in new extensions.

TEXT

Text (Multi-line)

Used for free-form, multi-line text such as descriptions, notes, and memo fields. Unlike String, Text fields are not length-constrained in the same way and do not support sorting or indexing at the database level.

🔑 Domain Reuse Principle

In LN, you should always reuse an existing standard domain if one matches your field's semantics — for example, use tcmcs.camt for monetary amounts rather than creating a custom float domain. This ensures your field inherits the correct display format, currency precision, and any future updates Infor makes to the standard domain.

Customer Defined Fields (CDFs)

Customer Defined Fields are Infor LN's built-in mechanism for adding custom data fields to standard tables without creating unsupported customisations. CDFs store additional data in LN tables, with their definitions held separately in the Data Dictionary — not mixed with the standard schema. To the end user, a CDF behaves identically to a standard LN field: it appears on screens, can be printed on reports, exported in BODs, and referenced in DAL scripts.

Where CDFs Are Configured

CDF management sessions are found under Tools → Application Configuration:

  • ttadv4591m000 — Customer Defined Fields: define field name, table, domain, and type
  • ttadv4592m000 — Lists: define enumerated value lists for CDF fields of type "List"
  • ttadv4593m000 — List Constants: define the valid values for each list
  • ttadv5215m000 — Convert to Runtime Data Dictionary: physically adds the CDF columns to the LN database tables
⚠️ Convert to Runtime is Destructive

Running Convert to Runtime Data Dictionary changes the physical structure of LN tables. Users must be logged out during this operation, and it should always be performed in a test environment before production. Plan a maintenance window and communicate to all users before running it.

CDF Types

CDFs can be defined with the following types, corresponding to the domain types covered above:

  • String — free text, configured with a standard or custom string domain
  • Long — integer values
  • Float / Double — decimal values
  • Date / Date-Time — calendar fields
  • List — enumerated values defined via the Lists and List Constants sessions
  • Reference — a CDF that references another LN table (acts as a foreign key lookup)

CDFs can also use a standard existing domain (e.g. reuse tcmcs.item for an item code field) or define an implicit domain if no suitable standard domain exists. Using standard domains is always preferred — it ensures consistent label display, zoom functionality, and future compatibility.

Package Combination Scope

CDFs are configured per package combination. When migrating companies between package combinations, CDF definitions must be explicitly exported from the source and imported into the target using PMC (from LN 10.6 onward) or the legacy ttadv4291m000 / ttadv4292m000 sessions. Failing to migrate CDF definitions means the physical columns exist in the database but LN will not know about them — leading to silent data loss on subsequent conversions.

Additional Information Fields

Additional Information Fields (AIF) are a separate mechanism from CDFs, designed for capturing supplementary business data at the document or transaction level — particularly in scenarios where the same extra data needs to be captured across multiple document types (orders, contracts, deliveries) and transferred between them.

AIFs are defined in the Additional Information Definitions (tcstl2100m000) session, linked to specific LN database tables, and optionally restricted to specific business partner definition levels (General, Sold-to BP, Buy-from BP). Unlike CDFs, which extend a table's physical structure, AIFs store their data in a separate shared structure and propagate through document chains — for example, from a sales contract to its contract lines and then to the contract deliverable lines.

Customer Defined Fields (CDF)

  • Physically added to the LN table
  • Configured per package combination
  • Can carry validation hooks via table extensions
  • Best for persistent, structured data that must integrate with BODs or be queried by SQL
  • Requires Convert to Runtime — plan a maintenance window

Additional Information Fields (AIF)

  • Stored in a separate shared data structure
  • Propagate automatically through document chains
  • Definition-level scoping (General / BP-specific)
  • Best for supplementary business data that flows across order-to-delivery chains
  • No Convert to Runtime required

Validation Framework — Hooks in Table Extensions

Infor LN provides a structured hook-based validation framework through the Table Extension feature in LN Studio (Extension Modeler). A table extension is an extension to the Data Access Layer (DAL) of an LN table. Hooks defined in the extension are executed whenever the DAL processes that table — regardless of which session triggered the operation.

Key Validation Hooks

FLD

Field-level Hooks (on CDF)

Hooks defined at the CDF level fire when the field value changes. Use these for field-specific validation (e.g. "this CDF must be a positive number"), defaulting (populate the CDF based on another field's value), or making the field mandatory under certain conditions.

SAV

before.save

Fires before a record is saved (insert or update). Use this for cross-field validations that cannot be done at individual field level — for example, "field A must be populated if field B has value X". The mode parameter tells you whether this is an insert or update.

AFT

after.save

Fires after a record is successfully saved. Use this to trigger downstream updates — for example, updating a related table when a CDF changes, or writing to an audit log. Do not raise validation errors here; the save has already committed.

DEL

after.destroy

Fires after a record is deleted. All field values of the deleted record are available. Use this for cascading cleanup operations or audit trail writes.

CAN

canAdd / canUpdate / canDelete

Control whether records can be added, updated, or deleted. These hooks can only restrict actions — they cannot allow something that standard LN logic already blocks. Return false with an error message to prevent the operation.

Returning Errors and Messages

In validation hooks, use the standard DAL error message functions to surface errors to the user. Returning an error from a field-level or before.save hook prevents the save operation and displays the message in the LN session — exactly as if it were a standard validation built into the application. This makes the extension invisible to the user: they simply see a familiar LN error message.

Creating Custom Domains in LN Studio

When no standard domain matches your CDF's semantics, you can create a custom domain using LN Studio. Custom domains are created in the Data Dictionary component of LN Studio and published to the development package combination. Key considerations:

  • Choose the correct base data type for your domain — this cannot be changed after the domain is used in a CDF and converted to runtime
  • For string domains, set a conservative initial length — domain length can be increased via Domain Extension, but never decreased without data loss risk
  • For enumerated domains, define all valid values at design time — adding new values later requires a runtime update
  • Follow a consistent naming convention: use your company prefix (e.g. fob.cust_type) to avoid collisions with standard domains
  • Custom domains require the LN development license (product ID 10146) — ensure it is present in your environment

Best Practices

  • Always reuse a standard domain if one semantically matches your field — never create a custom domain for "item code" when tcmcs.item already exists
  • Use the List CDF type for any field with a finite set of valid options — enumerating values prevents dirty data and enables translation labels
  • Run Convert to Runtime in a test environment first, with users logged out — document the change and communicate a maintenance window for production
  • For CDFs that must appear in BODs, confirm BOD extensibility support for your LN version (requires 10.5+ and relevant KB patches)
  • Prefer CDF field-level hooks for field-specific validation; use before.save for multi-field cross-validation
  • Name all CDFs with a unique company prefix — this is mandatory to survive LN upgrades without definition conflicts
  • When using Additional Information Fields for document chains, test propagation end-to-end (contract → line → deliverable) before going live
  • CDFs are not available in the classic Baan Web UI — ensure your users are on LN Web UI or LN UI before deploying CDF-dependent workflows

Conclusion

The combination of a governed Data Dictionary, typed domains, CDF extensibility, Additional Information Fields, and a hook-based validation framework makes Infor LN one of the more disciplined ERP platforms for data architecture. For LN developers, mastering this stack means being able to extend the system cleanly — without modifying standard code, without risking upgrade breaks, and without compromising the data integrity guarantees that the LN runtime enforces.

Whether you're adding a simple CDF to capture a project code on a purchase order, or building a full validation layer that enforces complex cross-field business rules, the patterns covered in this article are the foundation you'll return to repeatedly throughout your LN development career.


📚 Continue Learning

Explore the FOB Repository for CDF configuration scripts and Data Dictionary references. The FOB Certification Exam covers LN development topics including domains, CDFs, and DAL scripting across the technical tracks.

Article 04 · LN Development · Architecture

Functions vs Libraries in Infor LN — Understanding the Architectural Difference

A developer's guide to when to use inline functions, include scripts, and DLL libraries in Infor LN — and how each fits into the runtime architecture

FullonBaan Editorial·March 2026 FunctionsLibraries3GLLN Dev

Introduction

One of the first architectural decisions every Infor LN developer faces is where to put reusable logic. LN offers three distinct mechanisms for code reuse: inline functions declared within a script, include/function scripts shared across scripts in the same component, and library DLLs compiled as dynamic-link libraries callable across the entire application. Understanding the difference — and choosing the right one — is fundamental to writing maintainable, upgrade-safe LN code.

💡 Core Principle

A function is a named, reusable block of logic declared in a script. A library is a compiled DLL containing functions callable from any script system-wide. The key difference is scope: functions live in a script, libraries live at the system level.

Functions — Inline and Script-Scoped

Functions in LN 4GL/3GL allow you to perform a task multiple times with different input values. They can be declared in three locations, each with different scope:

LOC

Local (Inline) Function

Declared in the functions section of a single script. Visible only within that script. Best for short utility logic specific to one session or DAL. Zero compilation overhead — compiled as part of the parent script.

INC

Include / Function Script

A separate script whose contents are textually included into other scripts at compile time. Declared as EXTERN in the calling script. Useful when logic is shared by a few scripts in the same package-VRC but doesn't warrant a full library. Changes require recompiling all including scripts.

EXT

EXTERN Function in a Library DLL

Compiled into a separate DLL. Callable from any script at runtime without recompiling callers. This is the full library pattern — the most powerful and most reusable form of shared logic in LN.

Naming Convention for Library Functions

When a function lives in a library, its name must be prefixed with the library name. For example, a function getItemStatus in library tcmcsbl123 is named tcmcsbl123.getItemStatus. This fully-qualified naming prevents collisions and makes the origin of any call immediately clear when reading code.

Libraries — DLLs and the Compiled Code Layer

A library in Infor LN is a compiled Dynamic-Link Library (DLL) — a binary component loaded at runtime, providing functions callable from any 4GL/3GL script in the system.

Application Libraries (sb / st)

  • Standard libraries delivered by Infor
  • Named with the bl suffix (e.g. tcibd0bl123)
  • Auto-generated sb (stub) and st (structure) variants
  • Cannot be modified — part of standard LN software

Customisation Libraries (cc)

  • Customer-created libraries in a customisation VRC
  • Named with the cc suffix (e.g. tcmcsbl123cc00)
  • Never part of standard LN — upgrade-safe
  • Can contain any custom business logic callable system-wide
🔑 Customisation Library Naming

Your customisation library must follow the pattern [pkg][module]bl[table]cc[version]. The cc suffix is mandatory — it signals to LN tooling that this is customer-owned code, never to be overwritten by Infor standard updates.

User Exit DLLs — A Lightweight Alternative

For adding logic around standard LN save/delete events at the table level, User Exit DLLs provide a clean hook point without a full table extension. Named by appending ue to the table code (e.g. tccom001ue), they fire automatically before and after standard save/delete handling — ideal for conditionally publishing data changes to external systems.

When to Use What

1

Use an inline function when…

Logic is used only in one script, is short, and has no value being shared. Keeps the script self-contained with no library overhead.

2

Use an include/function script when…

Logic is shared by 2–5 scripts in the same package-VRC, doesn't change often, and recompiling all callers on change is acceptable.

3

Use a library DLL when…

Logic must be reusable across multiple packages, sessions, or DALs; or when the function evolves independently of its callers. Libraries are the right choice for any significant business logic component.

4

Use a User Exit DLL when…

You need to fire custom logic around standard LN table-level save/delete events — particularly for outbound integration scenarios.

5

Delegate to a version-dependent library when…

Logic must behave differently across LN releases. Implement the function differently per version in the library, keeping the hook itself clean and version-agnostic.

Library Lifecycle — Compile, Deploy, Debug

Libraries are managed through LN Studio. The key steps: create the library component in Program Scripts / Libraries (ttadv2530m000); author functions prefixed with the library name, declared EXTERN for external callers; compile to DLL via LN Studio; deploy via PMC (cloud) or copy to the BSE directory (on-premises); debug with the LN Studio debugger using breakpoints exactly like script code. Extension scripts generated by the Extension Modeler are themselves DLLs — fully visible in LN Studio and debuggable.

Best Practices

  • Always use the cc suffix for customisation libraries — never omit it
  • Prefix all library function names with the library name — ambiguous names cause runtime resolution errors
  • Keep individual library functions focused on a single responsibility
  • Avoid calling UI-layer functions from within library DLLs — libraries operate at the data/business logic layer only
  • Document the EXTERN signature in every calling script so future developers don't need to open the library
  • Test library compilation in isolation — a compile error in a widely-used library can block many sessions simultaneously

Conclusion

Functions and libraries represent a spectrum of code reuse patterns in Infor LN, from the narrowly-scoped inline function to the system-wide DLL. Choosing correctly produces code that is maintainable, upgrade-safe, and architecturally appropriate for the scale of the problem. Applying naming conventions and deployment patterns consistently is the mark of a practitioner who understands not just how LN works, but how to extend it responsibly.


📚 Continue Learning

See the FOB Repository for LN development scripts and library templates. The FOB Certification Exam covers LN development architecture across technical tracks.

Article 05 · LN Development · Sessions

How to Create Multi Main Table (MMT) Sessions in Infor LN — A Complete Practical Guide

Step-by-step walkthrough for building MMT sessions in Infor LN Studio — from controller design and satellite session configuration to implicit save behaviour and deployment

FullonBaan Editorial·March 2026 MMTSessionsLN StudioLN Dev

Introduction

The Multi Main Table (MMT) session is one of Infor LN's most powerful and recognisable UI patterns. Every time a user opens a Sales Order and sees the header at the top with order lines, shipping details, and financial summaries as tabs below — that is an MMT session. Understanding how to design, build, and deploy MMT sessions is essential for any LN developer working on custom session development or extension work.

💡 What is an MMT Session?

A Multi Main Table session combines multiple individual LN sessions — each with its own main table — into a single unified interface with a parent-child structure. A controller session (header) sits at the top; one or more satellite sessions (child data) display as tabs in the lower panel. Maintenance commands work independently on each section's own table.

MMT Architecture — Components

CTL

Controller Session (Header)

The primary record session displayed at the top — a Sales Order header, a Purchase Order, an Item master. The controller's selected record drives the filter for all satellite tabs. When the user selects a different header record, all satellite tabs refresh automatically.

SAT

Satellite Sessions (Lines / Detail Tabs)

The child sessions displayed as tabs in the lower panel. Each satellite has its own main table and form. Multiple satellites can be defined — each becomes a separate tab with its session title as the label.

LNK

Link Field Mapping

The configuration that maps key fields in the controller to foreign key fields in each satellite — telling the MMT engine how to filter satellite data for the selected header record. Incorrect mapping is the most common cause of empty or wrong satellite data.

FRM

Forms

Each session in the MMT has its own form defining field layout and grid columns. Forms are designed in LN Studio and linked to their respective sessions. The satellite form determines what columns are visible in each tab.

Implicit Save Behaviour

A critical behavioural difference in MMT sessions is implicit save. LN automatically saves the current record when:

  • The user changes focus from the controller (header) to a satellite tab
  • The user changes focus from one satellite tab to another satellite tab

Users do not need to explicitly click "Save" when moving between sections — the system persists their data silently. Developers must ensure validation logic in before.save hooks is robust, because saves fire on focus change, not only on explicit user action.

Step-by-Step: Creating an MMT Session

This procedure uses Sessions (ttadv2500m000) in LN Studio. You need the LN development license (product ID 10146) and an active development activity set in your user context.

1

Design the Data Model First

Confirm that all tables, domains, and key field relationships are defined in the Data Dictionary before creating sessions. Define the header table (controller) and all child tables (satellites), and confirm the foreign key fields that will drive link mappings.

2

Create the Controller (Header) Session

Open Sessions (ttadv2500m000) and create a new session. Set the type to MMT Header. Assign the main table, create or assign a form, and set the session title. Follow LN's naming convention: xxyyy2500m000 for MMT headers.

3

Create the Detail Session

Create a Details session for the controller — the expanded single-record view opened when the user drills into an individual header record. Set type to Details, assign the same main table, link the form. Convention: xxyyy2100m000.

4

Create Each Satellite Session

For each child table, create a session with type Satellite. Assign the satellite's main table and form. The session title becomes the tab label — make it clear and descriptive. Convention: xxyyy2200m000, xxyyy2300m000, etc.

5

Assign Satellites to the Controller & Map Link Fields

In the MMT Header session record, add each satellite in the desired tab order. For each satellite, configure the link field mapping — map every component of the controller's primary key to the corresponding foreign key fields in the satellite table. Verify field names exactly as they appear in the Data Dictionary.

6

Integrate into the Menu

Add the MMT controller session to the relevant LN menu module via the Menus session. MMT sessions can also be launched programmatically from a list session using a start.session call from the "Open" action of the corresponding header overview session.

7

Test Navigation and Implicit Save

Start the MMT session and verify: header records load correctly; selecting a different header record refreshes all satellite tabs; editing a satellite and switching tabs triggers implicit save; deep copy/delete operate on the full header-plus-lines structure as expected.

⚠️ Most Common Pitfall — Link Field Mapping

The most frequent cause of a satellite showing no data or wrong data is an incorrect link field mapping. If the header key is composite (e.g. company + order.number), every component must be mapped. Mapping only order.number will return records across all companies — a subtle but serious data visibility bug.

Deep Copy and Deep Delete

MMT sessions support deep copy — copying the header record and all child records across all satellite tabs in a single action — and deep delete, which removes the header and all satellite records atomically. Both must be explicitly configured on the controller session. When designing deep copy, ensure auto-generated fields (document numbers, system dates) invoke the standard number generation logic rather than duplicating sequence-controlled identifiers blindly.

Filtering in MMT Sessions

MMT sessions support two filtering mechanisms at the controller level: Easy Filtering (a filter row displayed inline in the header grid, controlled by Tools Parameters ttaad0100m000) and the standard Filter Menu for advanced query-style filtering. Satellite sessions are always filtered implicitly by the controller's selection — they do not independently support user-initiated filtering in the standard MMT pattern.

Best Practices

  • Design the data model completely before creating MMT sessions — retrofitting a key change after session creation is painful
  • Use meaningful satellite session titles — they become the tab labels and are the primary navigation cue for users
  • Validate link field mappings with a live test record — do not assume mapping is correct until satellites demonstrably show filtered data
  • Consider implicit save when designing validation hooks — before.save must handle partial-entry states gracefully
  • Never start a satellite session directly as standalone — always launch the MMT via its controller session
  • Test deep copy with composite-key tables — these are the most common source of data integrity issues in custom MMT sessions
  • Follow LN session code naming conventions: m000 for MMT headers, m100 for details, m200+ for satellites

Conclusion

MMT sessions are the gold standard UX pattern in Infor LN for presenting hierarchical data — and once you have built one end-to-end, you understand why they are so prevalent throughout the standard application. The controller-satellite architecture, implicit save behaviour, link field mapping, and deep copy/delete capabilities combine to produce sessions that are powerful and intuitive for end users.

For LN developers, mastering MMT session creation is a natural progression from understanding the data model and domain layer (Article 03) and the code organisation patterns of functions and libraries (Article 04). Together, these three layers — data, logic, and presentation — form the complete picture of custom LN session development.


📚 Continue Learning

Explore the FOB Repository for LN session development references. Enrol in FOB Training for hands-on Infor LN development courses, or take the FOB Certification Exam to benchmark your LN development knowledge.

Article 06 · LN Development · Sessions

How to Create & Understand Sessions in Infor LN — A Practical Example

A ground-up walkthrough of what an LN session is, how the 4GL engine and UI script interact, the session creation procedure, and a concrete practical example from table to running session

FullonBaan Editorial·March 2026 SessionsUI Script4GLLN Dev

Introduction

In Infor LN, a session is the fundamental unit of user interaction — every screen a user opens to view, edit, or process data is a session. Developers building custom applications or extending standard LN functionality need to understand not just how to configure sessions, but what is happening under the hood: how the 4GL engine drives the default behaviour, how UI scripts override it, and how a session connects to its table, form, and Data Access Layer.

This article builds a conceptual model of LN sessions from first principles, then walks through the complete procedure to create a simple maintenance session from scratch — from table definition through to a running, functional session in LN UI.

💡 What is an LN Session?

A session is the basic functional element of an Infor LN application. It is a runtime object that combines a table (the data), a form (the UI layout), and a UI script (optional custom behaviour) to present and process data for the user. Sessions are created and maintained via Sessions (ttadv2500m000) in LN Studio.

Anatomy of an LN Session

Every session in LN is built from the same core components, regardless of whether it is a simple maintenance session or a complex process session:

TBL

Main Table

The primary database table the session operates on. The session's object allocates memory for a record buffer based on the table definition at startup. All field values in the form bind to fields in this record buffer. A session always has exactly one main table — additional related tables are accessed via DAL calls or secondary table operations.

FRM

Form

The visual layout definition — which fields appear, their positions, labels, input lengths, and display formats. Forms are designed in LN Studio's form editor and stored as separate components linked to the session. A single session can have multiple forms (e.g. different layouts for overview vs. detail modes), but typically has one primary form.

4GL

4GL Engine (Default Behaviour)

The LN runtime engine handles all default session behaviour without any developer code: loading records, navigating between them, executing saves and deletes, applying domain formatting, managing cursor focus, and enforcing DAL business rules. For many simple maintenance sessions, the 4GL engine alone is sufficient — no UI script is needed.

UIS

UI Script (Program Script)

A 4GL script that overrides or extends the default engine behaviour for a specific session. UI scripts handle session-specific logic that cannot be expressed in the DAL — dynamic field enabling/disabling, conditional zoom targets, custom menu actions, print triggers, and special navigation flows. A UI script is optional; add it only when the default behaviour is insufficient.

DAL

Data Access Layer (DAL)

The table-level business logic layer. DAL scripts contain hooks that fire on field changes, before/after save, and before/after delete. Unlike the UI script (which is session-specific), the DAL is table-level — its hooks fire regardless of which session triggered the operation. The DAL is the correct location for all data validation and business rule enforcement.

Session Types

LN sessions are classified into types that determine their default runtime behaviour and the commands available to the user:

Overview Session

  • Displays records in a grid (list) layout
  • Supports navigation, search, and selection
  • Typically read-only or single-field editable
  • Named with m000 suffix convention
  • Can launch Detail or Process sessions

Maintenance / Details Session

  • Displays one record at a time in a form layout
  • Full edit capability: add, modify, delete
  • Named with m100 / s000 suffix convention
  • The primary session type for data entry
  • Linked to the overview via "Open" or "Details" action

Process Session

  • Executes a batch operation — no direct record edit
  • Has parameter input fields and a "Process" button
  • Named with m200 / m300 suffix convention
  • Typical for posting, generation, and archiving jobs

Find Session

  • A specialised overview used as a zoom/lookup target
  • Presented when the user zooms from a field in another session
  • Returns the selected value to the calling session field
  • Named with m000 or dedicated find session code

Practical Example — Creating a Maintenance Session

The following walkthrough builds a simple item classification maintenance session from scratch. The scenario: we need a session to maintain a custom table of Item Classification Codes — a lookup table with a code, description, and classification type.

1

Define the Table in LN Studio

In LN Studio, create a new table component (e.g. xxyyy001) in your development VRC. Add the fields: comp (company, Long domain), code (String domain, 10 chars), descr (String domain, 60 chars), type (Enum domain). Set the primary key as comp + code. Compile and run Convert to Runtime.

2

Create the Session Record

Open Sessions (ttadv2500m000) and create a new session. Set Session Code to xxyyy0101m000 (overview) and xxyyy0101m100 (details). Set Main Table to xxyyy001. Set Session Type to Overview and Details respectively. Enter a Session Title (this appears in the window title bar and menu).

3

Design the Form

From the session record, open the Form Editor. For the overview session, add grid columns for code, descr, and type fields. Set column widths from the domain display length. For the details session, arrange fields in a logical layout — code and type at the top, description below. Add labels using standard LN label components.

4

Define Commands and Indices

In the session definition, configure the available commands: New, Modify, Delete, Copy, Find. Define the index used for record navigation — for a grid session, the primary key index controls the default sort order. Additional indices can be added for alternative sort/search paths accessible via the session's Find functionality.

5

Write a Minimal UI Script (if needed)

For a simple maintenance session, the 4GL engine handles everything by default. Add a UI script only if you need custom behaviour — for example, to make the type field read-only after first save, or to populate descr with a default value based on type. Keep UI scripts minimal: push validation logic to the DAL, keep only session-specific presentation logic in the UI script.

6

Add to Menu and Test

Add both sessions to the relevant LN menu module using Menus (ttadv1510m000). Start the overview session from LN UI, add a test record, verify the details session opens correctly, edit and save, then confirm the DAL validation hooks fire as expected. Check that zoom functionality works for any reference fields.

🔑 4GL Engine vs UI Script — The Golden Rule

The 4GL engine provides all default session behaviour for free. Only add a UI script when the default behaviour is genuinely insufficient. Every line in a UI script is a maintenance liability — future LN upgrades may change default behaviours, and UI script logic that duplicated standard behaviour can break silently. Less is more.

Session Code Naming Conventions

LN session codes follow a strict convention: [package][module][table][sequence][type]. For example, tcmcs0101m000 breaks down as: package tc, module mcs, table 01, sequence 01, type m000 (overview). For custom sessions, use your company prefix (e.g. xx) and a module code from your customisation VRC. The suffix encodes the session type:

  • m000 — Overview (grid/list)
  • m100 — Details (single-record maintenance)
  • m200 / m300 — Process sessions
  • s000 — Sub-session (called from another session)
  • m500 — Find/zoom sessions

Following these conventions consistently is not just style — it enables the LN tooling to correctly categorise sessions in menus, authorisation models, and the VRC derivation search path.

Best Practices

  • Always define the table and compile it before creating the session — the session editor needs the table definition to bind fields to the form
  • Name sessions with the correct suffix convention from the start — renaming sessions after they are referenced in menus and other sessions is painful
  • Resist adding UI script logic for things the 4GL engine already does — consult the LN Programmer's Guide to understand what "default behaviour" covers before writing custom code
  • Separate concerns cleanly: presentation logic in UI script, data logic in DAL — never validate business rules in a UI script
  • Use standard LN label codes for all field labels — never hardcode text strings in forms, as labels support multi-language translation automatically
  • Test sessions in both LN UI and LN UI Classic (if applicable to your deployment) — form field sizes that look fine in one may clip in the other

📚 Continue Learning

The FOB Repository has LN session development templates and UI script examples. Take the FOB Certification Exam — LN development session architecture is tested across the technical tracks.

Article 07 · LN Development · VRC & Environment Management

Understanding VRC (Version Release Combination) in Infor LN

A clear explanation of the VRC concept — how LN organises software versions, how derivation works, how package combinations are structured, and how to set up a development environment correctly

FullonBaan Editorial·March 2026 VRCPackage CombinationDev EnvironmentLN Dev

Introduction

If there is one concept that confuses new Infor LN developers more than any other, it is the VRC — Version Release Combination. VRCs are the mechanism by which LN manages coexisting versions of software components: the standard software delivered by Infor, customer customisations, and environment-specific variations all live in different VRCs within the same LN installation, resolved at runtime by a layered derivation search.

Understanding VRCs is essential for anyone setting up a development environment, deploying customisations, or troubleshooting why a session is (or isn't) picking up custom code. This article explains the VRC concept from scratch and shows how to apply it correctly in a real LN development workflow.

💡 VRC Stands For…

Version · Release · Customer code — three characters that together identify the development stage of an LN software package. Every software component in LN (sessions, scripts, libraries, tables) belongs to exactly one VRC, and the VRC determines when and to whom that version of the component is visible.

Anatomy of a VRC Code

A VRC code has three parts:

  • Version — a letter (e.g. B) identifying the major LN software release
  • Release — a number (e.g. 61) identifying the minor release within that version
  • Customer extension — a letter code (e.g. a, cus, dev) identifying who owns this layer of the software

For example, tcB61_a is a package VRC for LN Common (tc), version B, release 61, customer extension a (standard Infor software). A customisation VRC for the same package might be tcB61O_a_cus — the same package and version, with customer extension cus indicating customer-owned customisations, and the O flag indicating this is a customer-defined package combination.

VRC Derivation — How the VM Resolves Components

When a user starts a session, the LN Virtual Machine (VM) does not simply load the session from a single location. Instead, it traverses the VRC derivation chain — searching from the outermost (most specific) VRC inward toward the standard Infor VRC. The VM uses the first version of the component it finds in this chain:

1

Search the Developer's VRC (dev)

If the user is a developer with an active development VRC (dev), the VM first looks here. This allows a developer to test modified components without affecting other users — only the developer sees their in-progress changes.

2

Search the Customisation VRC (cus)

If no component is found in dev, the VM searches the customer customisation VRC. This is where committed, tested customisations live — all users in the runtime package combination see these.

3

Search the Standard VRC (stnd / update)

If no customisation exists, the VM falls through to the standard Infor VRC. This is the factory-delivered software. The derivation search stops here — this is the bottom of the chain.

This layered resolution is what makes LN customisations upgrade-safe: the standard VRC can be updated by Infor patches without touching the customisation VRC. As long as your customisations use the cus VRC pattern and reference the correct base, a patch that updates the standard layer does not overwrite your code.

⚠️ Maximum VRC Depth

The LN VM supports a maximum derivation depth of 40 VRCs. In practice, keep the depth as low as possible — deep derivation chains degrade session startup performance as the VM traverses more layers. A well-structured environment typically needs no more than 3–5 VRC layers.

Package Combinations

A Package Combination is a named set of package VRCs — one per LN package — that defines the complete runtime software environment for a group of users or companies. Every company in LN is linked to a package combination, and every user inherits the package combination of their company (or has an individual override).

Typical package combinations in a well-structured LN environment:

  • Standard runtime — standard Infor VRCs only; used for baseline testing
  • Customer runtime — standard + cus VRCs; used by all production users
  • Development — standard + cus + dev VRCs; used by active developers only
  • Test/UAT — mirrors customer runtime but on a separate database; used for pre-production verification

The Create New Package Combination / VRCs (ttaad1222m000) session automates the creation of a new environment in a single step — deriving new package VRCs from the source combination, creating runtime directories, and linking companies and users.

Setting Up a Development Environment

1

Create a Customisation VRC

In Package VRCs (ttadv1511m000), create a new VRC for each package you plan to customise. Derive it from the standard stnd VRC of that package. Use the cus customer extension code. This is the layer where all committed customisations will live.

2

Create a Development VRC

Create a second VRC per package, derived from the cus VRC, with the dev extension. This is the working sandbox for active development — changes here are only visible to developers with this VRC in their package combination.

3

Create the Development Package Combination

In Package Combinations (ttaad1520m000), create a new package combination that includes the dev VRCs for packages under development, and the cus VRCs (or standard VRCs) for packages not being changed. Assign this combination to your developer users via Change Package Combinations for Users (ttaad2200m000).

4

Set Developer Authorisations

Developers need authorisation to create and modify components in their VRC. Set this in the developer authorisation sessions. Without authorisation, the LN Studio component wizards will not allow saving new components to the target VRC.

5

Set the Activity Context in LN Studio

Before developing in LN Studio, open an activity — a logical grouping of related components being developed together (e.g. "Item Classification Extension"). The activity context determines which VRC new and modified components are saved to. Always verify your current activity before creating components.

Deploying Customisations — From dev to cus to Production

The typical deployment flow for customisations in LN follows the VRC derivation chain in reverse:

  • Development: code authored in dev VRC, tested by developer against a development database
  • Check-in: tested components are checked in from dev to cus VRC using LN Studio's CM (Configuration Management) check-in action — at this point all users with the customer runtime package combination can see the changes
  • UAT: the cus VRC is promoted to the test environment for user acceptance testing
  • Production: validated components in cus VRC are deployed to the production package combination via PMC (Package Management Console) for cloud, or through direct VRC promotion for on-premises

PMC is the modern, preferred deployment mechanism for both cloud and on-premises LN. It packages components into versioned Solutions that can be imported, exported, and rolled back — providing a controlled change management process.

Best Practices

  • Never develop directly in the standard Infor VRC — always use a derived dev or cus VRC
  • Keep the VRC derivation depth minimal — each additional layer adds startup overhead to every session launched in that environment
  • Always set your activity context in LN Studio before creating or modifying components — a component saved to the wrong VRC can be very difficult to track down
  • Maintain separate package combinations for development, test, and production — never share the development VRC with production users
  • Use PMC for all deployments in cloud environments — do not attempt direct VRC manipulation in multi-tenant cloud instances
  • Document your VRC structure: which VRC contains which type of customisations, which package combination is used by which group of users

📚 Continue Learning

The FOB Repository includes VRC setup checklists and LN environment configuration guides. Prepare for the FOB Certification Exam — VRC and environment management concepts are covered in the LN technical development track.

Article 08 · LN Development · 4GL Programming

Infor LN 4GL Programming — Key Concepts & UI Script Fundamentals

An introduction to LN's 4GL programming language — syntax essentials, the UI script structure, hook categories, field dependencies, and debugging techniques for LN developers

FullonBaan Editorial·March 2026 4GLUI ScriptDALLN Dev

Introduction

Infor LN is built on a proprietary 4th-generation programming language — commonly called LN 4GL or Baan 4GL. Unlike generic languages such as Java or Python, LN 4GL is deeply integrated with the LN runtime environment: it has native constructs for accessing database tables, navigating sessions, firing domain validations, and calling DAL hooks. Understanding 4GL is the entry point to all meaningful LN customisation and development work.

This article covers the essential 4GL concepts every LN developer needs: the language structure, the two script types (UI script and DAL), the hook event model, field dependencies in DAL 2, and how to debug 4GL code effectively in both LN Studio and LN UI.

💡 4GL vs 3GL in LN

LN supports both 4GL (the standard LN scripting language for sessions and DALs) and 3GL (a lower-level C-style language used primarily for library DLLs). Most developers work exclusively in 4GL — it is sufficient for all session logic, DAL hooks, UI scripts, and reports. 3GL is needed only for library DLLs requiring low-level system access or performance-critical computation.

4GL Script Structure

Every 4GL script follows the same structural layout, regardless of whether it is a UI script, a DAL, or a library:

DCL

Declaration Section

Declares tables, variables, and includes used in the script. Table declarations give the script access to record buffers for the named table. Variable declarations specify the data type (using domain names) of all local variables. All tables and variables must be declared before use — LN 4GL is a statically-typed language.

FNC

Functions Section

Contains all function definitions local to this script. As discussed in Article 04, inline functions defined here are only visible within this script. EXTERN function declarations reference functions in external libraries.

HKS

Hooks

The executable code sections — predefined function names called by the 4GL engine at specific lifecycle events. In a UI script these are session events (on.display, before.save, etc.). In a DAL these are table events (field.hooks, before.save, after.destroy, etc.). Hooks are the primary mechanism for all custom logic in LN 4GL.

UI Script — Session Lifecycle Hooks

A UI script (Program Script) customises the behaviour of a specific session. The 4GL engine calls its hooks at defined points in the session lifecycle. Key UI script hooks:

  • initialize — fires once when the session starts; use for setting initial field states, loading session parameters, or calling process sessions to pre-populate data
  • on.display — fires each time a record is loaded for display; use for dynamically enabling/disabling fields based on record state, or setting computed display values
  • before.save — fires before the 4GL engine executes the save; use for session-level pre-save checks that cannot be expressed in the DAL (rare — prefer DAL for validation)
  • after.save — fires after a successful save; use for triggering downstream session actions or refreshing related display data
  • on.field.[fieldname] — fires when the user leaves a specific field; use for dynamic field-level reactions in the UI layer (enable/disable other fields, zoom filter adjustments)
  • on.action.[command] — fires when the user invokes a specific menu command; use for custom button logic, print triggers, and confirmation dialogs

DAL Hooks vs UI Script Hooks — The Dividing Line

The most important architectural discipline in LN 4GL development is knowing which layer a piece of logic belongs in. The rule is clear:

DAL Script (Table Layer)

  • Business rules and data validation
  • Cross-field dependency logic
  • Default value calculation
  • Referential integrity enforcement
  • Fires for ALL sessions on this table
  • Cannot access session UI state

UI Script (Session Layer)

  • Field enable/disable based on record state
  • Session-specific navigation and actions
  • Print and report triggers
  • Zoom target customisation
  • Fires ONLY for this specific session
  • Can access session UI state and form fields

DAL 2 — Field Dependencies

DAL 2 (introduced in LN 6.1) added a powerful feature absent from DAL 1: field dependencies. A field dependency declares that field B should be recalculated whenever field A changes. Once defined, the 4GL engine automatically re-fires the dependent field's hook whenever its dependency changes — in the UI, this means fields update reactively as the user types, without requiring explicit on.field hooks in the UI script.

Field dependencies also drive conditional enum value filtering (showing only valid enum options based on other field values) and field enable/disable state in the UI layer — making DAL 2 field dependencies a cleaner alternative to many on.field hooks in the UI script. The packing field example is canonical: the Packing boolean is automatically recalculated whenever the Gross Weight or Net Weight fields change, because a field dependency is defined between them in the DAL.

Debugging 4GL Code

LN provides two complementary debugging modes for 4GL development:

STD

LN Studio Debugger (On-premises)

The full interactive debugger — set breakpoints in any UI script or DAL, step through execution line by line, inspect variable values and table record buffers in real time. Access via LN Studio's Debug perspective. Not available in multi-tenant cloud environments.

CLD

Debug and Profile 4GL (ttadv1123m000) — Cloud

The cloud-compatible debug workbench. Start this session, select the activity containing the component you want to test, then run the session. Provides tracing and profiling output without requiring a direct LN Studio connection. The go-to tool for cloud and multi-tenant LN environments.

TRC

LN UI Trace Mode

Activate via Options → Activate Trace Mode in LN UI. Opens a trace window showing the message flow between browser and LN UI server. Useful for diagnosing UI rendering issues, field binding problems, and session startup failures — particularly for Report Designer and form rendering investigations.

⚠️ Cloud Debugging Constraint

In multi-tenant cloud LN environments, the LN Studio interactive debugger is not available — the direct OLE connection it requires cannot be established. Use Debug and Profile 4GL (ttadv1123m000) and LN UI Trace Mode instead. Design code to be testable via these tools: add logging output and use activity-scoped testing to isolate extension behaviour.

Best Practices

  • Always declare all tables and variables in the declaration section — LN 4GL does not support implicit variable declaration
  • Use DAL 2 field dependencies rather than on.field UI script hooks wherever possible — dependencies are re-fired correctly by the engine in all contexts, whereas UI hooks are session-specific
  • Keep UI script hooks short — if a hook exceeds ~20 lines, extract the logic into a local function or library call
  • Never perform database I/O directly in a UI script hook — all table access should go through DAL calls or library functions that wrap DAL operations
  • Use standard LN message functions for all error messages — never hardcode string literals; use message codes so messages are translatable
  • Add meaningful comments to hook code — the next developer to read your script may not have access to the original requirements document
  • Test all hooks in both insert and update mode — the mode parameter in before.save hooks distinguishes between the two, and logic that works for inserts may behave incorrectly on updates

Conclusion

LN 4GL is a specialised, deeply integrated language — once you understand the hook model, the DAL/UI script separation, field dependencies, and the debugging tools, you have the foundation to build, extend, and maintain any LN application layer component. The language's design philosophy — default behaviour from the engine, extension through hooks, data logic in the DAL — is consistent throughout the entire LN codebase, which means patterns learned in one area apply everywhere else.

Combined with the VRC and session creation knowledge from Articles 06 and 07, the 4GL programming fundamentals in this article complete the core LN developer toolkit covered in this Playbook series.


📚 Continue Learning

The FOB Repository has 4GL script templates, DAL hook examples, and UI script patterns. The FOB Certification Exam tests 4GL and development concepts across multiple technical tracks. Enrol in FOB Training for structured, hands-on LN development courses.

Article 09 · Finance · General Ledger

Period-End Closing Checklist for Infor LN Finance

A practitioner's month-end and year-end closing checklist for Infor LN Finance — covering GL period management, sub-ledger reconciliation, integration transactions, currency revaluation, and the full year-end procedure with session references

FullonBaan Editorial·March 2026 GLPeriod CloseFinanceYear-End

Introduction

Period-end closing in Infor LN Finance is a structured, multi-step process that spans the General Ledger, Accounts Payable, Accounts Receivable, and the integration layer connecting logistic transactions to financial postings. Done correctly, it produces accurate financial statements, clean sub-ledger reconciliations, and a locked period that prevents backdated entries. Done carelessly, it results in open reconciling items, transactions posted to wrong periods, and year-end surprises.

This article presents a complete, LN-specific period-end checklist — covering both the monthly close and the annual year-end close — with the exact session codes used at each step. The checklist is designed to be followed in sequence: each phase depends on the prior one being complete.

💡 Three Period Types in LN

Infor LN Finance maintains three independent period types, each with its own open/closed/finally-closed status: Fiscal (the official accounting periods used for all financial transaction postings), Reporting (used for management reporting to parent companies), and Tax (used for VAT/tax authority submissions). All three must be managed during period close — but they are closed independently and on potentially different schedules.

Before You Start — Prerequisites

Before initiating any period close steps, confirm the following are in place. Skipping this phase is the most common cause of close delays.

  • A current system backup has been taken and verified — period close operations (especially year-end) make irreversible data changes
  • All users have been notified of the close timeline and cut-off deadlines
  • Next year's financial periods are defined in Periods (tfgld0105m000) — LN requires the new year's period structure to exist before the current year can be finally closed
  • Exchange rates for all foreign currencies used in the period have been entered and are current in Exchange Rates (tcmcs0108m000)
  • Any recurring journal templates have been verified and are ready to generate

Phase 1 — Complete All Sub-module Transactions

The GL is fed by integration transactions from logistic modules (Sales, Purchasing, Warehousing, Manufacturing) and financial sub-ledgers (AP, AR). All of these must be finalised before the GL period can be closed. Work through the sub-modules in this order:

1

Finalise All Logistic Integration Transactions

Run Finalize Integration Transactions (tfgld1201m000) to process any pending integration messages from Sales, Purchasing, Warehousing, and Manufacturing modules. These are the postings generated by logistic events (goods receipts, invoices, warehouse transfers) that feed into the GL. Check the integration log for any transactions in error status and resolve them before proceeding — unprocessed integration transactions will leave the GL out of balance with the logistic sub-ledgers.

2

Post All AP Invoices and Payments

Confirm all supplier invoices for the period have been entered, approved, and finalised in Accounts Payable. Ensure all payment runs for the period have been processed and posted. Unposted AP transactions will cause a mismatch between the AP sub-ledger and the GL creditor control account. Check for any invoices on hold or awaiting approval that should be included in the current period.

3

Post All AR Invoices and Receipts

Confirm all customer invoices for the period have been finalised and all receipts (cash allocations) have been posted. Check for any unallocated receipts sitting on account — these distort the debtor ageing and AR balance. Resolve any unapplied credits or disputed invoices where resolution has been reached during the period.

4

Generate and Post Recurring Journal Entries

Run any periodic recurring journal templates (accruals, prepayments, depreciation adjustments) set up in the LN recurring journal master data. Verify each generated journal entry is correct before posting — recurring journals are a common source of period-end errors when template parameters have not been updated to reflect changed business conditions.

5

Post Manual Journal Adjustments

Post any manual accrual journals, reclassifications, or correction entries required for the period. Ensure each manual journal has appropriate documentation and approval. All manual journals must be in Finalised status — journals in Draft or Approved status are not included in GL balances and will cause reconciling differences.

Phase 2 — Sub-ledger Reconciliations

With all transactions posted, reconcile the sub-ledgers to the GL control accounts. Discrepancies found here must be resolved before closing the period — a closed period with unresolved reconciling items is much harder to correct.

6

Reconcile AP Sub-ledger to GL

Compare the total outstanding balance in the AP sub-ledger against the balance on the creditor control account in the GL. In LN, use the AP reconciliation reports to print the AP ledger detail and compare to the GL trial balance for the control account. Any difference indicates either an unprocessed integration transaction, a posting to the control account from a non-AP source, or a finalisation error. Investigate and resolve all differences before proceeding.

7

Reconcile AR Sub-ledger to GL

Run the AR ageing report and compare the total outstanding AR balance to the debtor control account on the GL trial balance. Differences here commonly arise from: direct journal postings to the debtor account (which bypass AR), unallocated receipts, or credit notes that have been issued but not matched. Resolve all differences. The AR and GL figures must tie exactly before closing.

8

Reconcile GRNI (Goods Received Not Invoiced)

Run the GRNI reconciliation to ensure that goods received but not yet invoiced are properly accrued. In LN, use the GRNI reconciliation session. Before starting: close the Integration period using Close Periods (tfgld1206m000) to prevent new transactions being posted while you reconcile. GRNI balances should reflect actual uninvoiced receipts only — investigate any aged GRNI items that have been sitting beyond your normal AP processing cycle.

9

Bank Reconciliation

Reconcile all bank accounts to the corresponding GL bank/cash accounts. Ensure bank statement transactions (charges, interest, returned items) that are not yet recorded in LN have been entered as manual journals. Any outstanding items (deposits in transit, unpresented cheques) must be identified and aged. The adjusted book balance in LN must equal the adjusted bank statement balance for every bank account.

10

Foreign Currency Revaluation

For companies with foreign currency transactions, run the currency revaluation process to mark open AR, AP, and bank balances at the closing exchange rate. This generates unrealised gain/loss entries posted to the designated exchange difference accounts. Verify the revaluation exchange rates are correct before running — using stale rates produces misleading financial statements. Revaluation entries will automatically reverse at the start of the next period if configured to do so.

Phase 3 — GL Review and Trial Balance

11

Run the Trial Balance

Print or review the trial balance for the period to confirm total debits equal total credits. In LN, use the standard GL reporting sessions to generate the trial balance by ledger account. Review all accounts for unusual balances — debit balances on liability accounts, credit balances on asset accounts, or accounts with significantly different balances from prior periods. Investigate material variances before closing.

12

Check GL Diagnostics Workbench

Run the GL Diagnostics Workbench — LN's built-in tool for monitoring the general ledger for exceptions, errors, and integrity issues. The workbench detects issues such as transactions that failed to post correctly, dimension validation failures, and integration batches in error status. Resolve all flagged items before period close. Using the diagnostics workbench proactively (ideally daily during the last week of the period) dramatically reduces last-minute surprises on close day.

13

Review and Approve Intercompany Transactions

In multi-company LN environments, ensure all intercompany transactions for the period have been posted on both sides and that intercompany balancing accounts net to zero. Unmatched intercompany entries cause consolidated balance sheet accounts to appear out of balance and are a significant source of audit queries.

Phase 4 — Period Status Management

Once all reconciliations are clean and the trial balance is verified, set the period statuses to prevent further posting.

14

Close Sub-module Periods

Use Period Status (tfgld0107m000) to set the period status for individual modules (AP, AR, Integration, etc.) to Closed. This prevents new transactions from being posted to the period in these modules. Close sub-module periods before closing the GLD (General Ledger) period — the GLD period typically closes last, after all sub-module feeds are confirmed complete.

15

Close the GL Period — tfgld1206m000

Run Close Periods (tfgld1206m000) to close the fiscal, reporting, and tax periods. This session allows bulk closing of periods across multiple financial companies in a financial company group. Setting a period to Closed prevents new transaction entry. Setting it to Finally Closed is irreversible — Finally Closed periods cannot be reopened and no transactions can ever be posted to them again. Use Finally Closed only once you are certain the period is complete and audited.

⚠️ Finally Closed is Irreversible

The Finally Closed status in tfgld1206m000 cannot be undone. A period can only be Finally Closed if all prior periods in sequence also have Finally Closed status. In practice, most organisations set periods to Closed at month-end and reserve Finally Closed for audit sign-off — typically weeks after the period ends. Never Finally Close the current year's last GL period before running the year-end close procedure.

Year-End Closing — Additional Steps

The annual year-end close in Infor LN requires additional steps beyond the standard monthly close. Follow this sequence after completing the month-end steps for the final period:

Y1

Set Up Next Year's Periods

Define all fiscal, reporting, and tax periods for the new financial year in Periods (tfgld0105m000). LN requires the new year's period structure to exist before the current year can be finally closed. Set the first period of the new year to Open status so transactions can be processed once the year-end procedure completes.

Y2

Provisional Year Close — tfgld6201m000

Run Provisional Year Closing (tfgld6201m000) to simulate the year-end close without creating any permanent transactions. LN accumulates all P&L account balances and builds provisional opening balances for all balance sheet accounts in the new year. You can run this session multiple times — each run overwrites the previous provisional result. Use it to preview the opening balance sheet and verify it is correct before committing to the final close. Crucially, you can continue posting corrections to the current year after a provisional close.

Y3

Close P&L Accounts — tfgld6202m000

Run Close Profit and Loss Accounts (tfgld6202m000) to clear P&L account balances to zero and post the net profit/loss to the Retained Earnings account. The balancing method (configured in Company Parameters tfgld0503m000) determines whether individual P&L accounts are each cleared to retained earnings, or whether the net amount is posted as a single entry. Check for any blocked ledger accounts or dimensions on P&L accounts before running — blocked accounts will prevent the closing entry from posting.

Y4

Finally Close All Periods (Except Last GLD Period)

Use Close Periods (tfgld1206m000) to set all periods of the current year to Finally Closed — for all modules and all period types, except the GLD module in the last fiscal period (typically the correction/adjustment period 13). The last GLD period must remain open because LN needs to create rounding difference entries and the P&L closing entries in it during the final year close step.

Y5

Final Year Close — tfgld6203m000

Run Close Year (tfgld6203m000) to finally close the current financial year. This creates the opening balances for the new year, overwrites the provisional balances created in step Y2, and posts the final rounding difference entries. The result is a new opening balance batch in the new year that must be finalised. Once this session completes successfully, the current year is permanently closed — no further transactions can be posted to it.

Y6

Rebuild Opening Balance / History (Optional) — tfgld3203m000

Run Rebuild Opening Balance/History from Transactions (tfgld3203m000) to verify that all ledger history tables match the finalised transactions. This session is intensive and can take hours or days on high-volume environments — run it only if there is a question about the integrity of the ledger history tables (tfgld2xx). No financial transactions can be entered while this session is running.

Y7

Finally Close the Last GLD Period

After the year-end close is complete and the opening balance batch in the new year has been finalised, return to Close Periods (tfgld1206m000) and Finally Close the last GLD period of the previous year. At this point, the year is fully locked. Note: the Tax period cannot be Finally Closed until the tax return has been submitted — it is normal for the tax period to remain at Closed (not Finally Closed) until the tax filing deadline passes.

Y8

Archive / Delete Period Totals (Optional) — tfgld6206m000

Once the retention period defined in Group Company Parameters (tfgld0101s000) has expired for an old financial year, run Archive/Delete Period Totals (tfgld6206m000) to archive and/or delete the historical financial data. LN does not perform this automatically — it is a manual housekeeping step run periodically to manage database growth. Always archive to an external store before deleting from LN.

Quick Reference — Key Sessions

The table below summarises the primary LN sessions used in the period-end process:

  • tfgld0105m000 — Periods: define financial period structures
  • tfgld0107m000 — Period Status: view and change period status per module and period type
  • tfgld1201m000 — Finalize Integration Transactions: process pending integration postings from logistic modules
  • tfgld1206m000 — Close Periods: close and finally close periods across financial companies
  • tfgld0503m000 — Company Parameters: GL configuration including P&L balancing method
  • tfgld0508m000 — Chart of Accounts: ledger account definitions, blocked status, dual accounting settings
  • tfgld6201m000 — Provisional Year Closing: simulate year-end without committing
  • tfgld6202m000 — Close Profit and Loss Accounts: clear P&L balances to retained earnings
  • tfgld6203m000 — Close Year: execute the final year-end close and create opening balances
  • tfgld3203m000 — Rebuild Opening Balance/History from Transactions: integrity rebuild of ledger history
  • tfgld3201m000 — Rebuild Ledger History: rebuild sublevel history for changed account parenting
  • tfgld6206m000 — Archive/Delete Period Totals: housekeeping for expired historical years
  • tcmcs0108m000 — Exchange Rates: maintain currency rates for revaluation

Best Practices

  • Run the GL Diagnostics Workbench daily in the final week of each period — catching errors early avoids last-minute close-day panic
  • Always take a system backup before executing year-end sessions — tfgld6203m000 makes permanent, irreversible changes
  • Never Finally Close a period until the finance team has signed off on the period's financial statements — the cost of a correction in a Finally Closed period is very high
  • Reserve the last fiscal period (period 13) as a correction/adjustment period and keep the GLD module open until year-end close is complete
  • Set realistic cut-off deadlines and communicate them clearly — most period-end problems are caused by late AP invoices or unposted adjustments, not system issues
  • In multi-currency environments, always run currency revaluation before closing — missing this step produces financial statements that do not comply with accounting standards
  • Document the balancing method configured in Company Parameters (tfgld0503m000) — the individual account method and aggregate method produce different journal entries, and auditors will ask which was used
  • Check for blocked GL accounts before running tfgld6202m000 — a single blocked P&L account will abort the entire closing entry run

📚 Continue Learning

Explore the FOB Repository for LN Finance configuration guides and period-close checklists. The FOB Certification Exam covers Infor LN Finance topics including GL period management across the functional tracks. Enrol in FOB Training for structured Infor LN Finance courses.

Article 10 · Development · DAL

DAL Scripting in Infor LN
A Practical Intro

DAL is the table-linked business rule layer in Infor LN. This article covers the architecture, hook types, session references, and practical code examples for both DAL 1 and DAL 2.

FullonBaan Editorial·March 2026 DALDevelopmentInfor LNDAL 2

What is DAL and what it actually does

DAL stands for Data Access Layer. In Infor LN, it is a compiled scripting layer, linked to a database table, that implements business rules ensuring the logical integrity of the database. Because DAL is linked to a table (not a session), the rules fire regardless of which session, import job, or external integration modifies the data.

The design principle is precise: a DAL is linked to a table, not a session. Therefore, when the table is accessed, the DAL is used. In this way, different sessions can update a table by using the same rules. In addition, integration capabilities use the DAL to ensure updates are also processed with the same rules.

DAL scripts are compiled into library objects (DLLs) as part of the LN build process. The application server loads the compiled DAL object whenever a session performs an action on that table. There is no interpretation at runtime — a compile step is mandatory after every edit.

"DAL scripts implement the business rules of the application to ensure the logical integrity of the database. When a session performs an action on a table, the DAL for the table is loaded."

— Infor LN Development Tools Development Guide · docs.infor.com

DAL 1 vs DAL 2: both versions explained

Infor LN has two DAL versions with meaningfully different capabilities. Knowing which one a table uses determines what hook types are available and how well the table works in integration scenarios.

DAL 1

Introduced: Infor Baan 5.0

Contains database logic (integrity rules) but usually not all business logic. The remainder lives in UI scripts. Business logic is split.

Object hooks Property hooks

Session: ttadv2530m000 · Script type: "DAL"

DAL 2

Introduced: Infor LN 6.1

Contains all business logic for the table. UI scripts hold only UI logic. Perfect for integrations — external apps get full rule enforcement automatically.

Object hooks Field hooks Business method hooks Field dependencies

Session: ttadv2530m000 · Script type: "DAL (version 2)"

Why DAL 2 matters for integrations

With DAL 1, when an external application connects to an LN table via BOIs (Business Object Interfaces), the DAL 1 fires — but any additional logic in the UI script is silently bypassed. With DAL 2, all logic is in the DAL script — so integrations automatically inherit the complete rule set without any extra work.

DAL vs. UI Script (4GL): when to use each

DAL Script

  • Compiled into library objects (DLLs)
  • Linked to a table — not a session
  • Fires for all access paths (UI, integration, import, batch)
  • Business rules, integrity checks, field defaults
  • Hook types: Object, Property, Field, Business Method
  • DAL 2 preferred for integration-enabled tables
  • Ideal for validations, defaults, cross-field logic
  • Accessible to LN-certified developers

UI Script (4GL)

  • Compiled 4GL language
  • Linked to a session and its forms
  • Only fires via that session's UI flow
  • Form navigation, non-table fields, UI behaviour
  • Event sections: field, form, group, zoom, program
  • In DAL 2 sessions: UI script contains only UI logic
Rule of thumb

Business rules (validation, defaults, cross-table updates, referential integrity) belong in DAL. Pure UI behaviour (non-table field handling, form flow, screen-context field enabling) belongs in the UI script. In DAL 2, even most field-level UI behaviour (read-only, invisible, mandatory, enum filtering) moves into DAL field hooks.

The DAL hook model

All business rules in DAL are implemented as hooks — pre-defined function names that you create inside a DAL script. The 4GL engine calls these functions at specific points in the data lifecycle. The hook categories differ between DAL 1 and DAL 2.

FIG 1 — DAL HOOK CATEGORIES BY VERSION (SOURCE: DOCS.INFOR.COM)
DAL 1 (Baan 5.0+) Object hooks Row/record level. Check integrity, perform side-effects on save/delete. before.save.object() after.save.object() · before.destroy.object() Property hooks Field level. Verify input values, calculate default values. Script type: "DAL" DAL 2 (LN 6.1+) Object hooks Identical to DAL 1 object hooks Field hooks ✦ new in DAL 2 Validate, read-only, invisible, mandatory, enum filtering, auto-update on change Business method hooks ✦ new Enable/disable/hide form commands Script type: "DAL (version 2)"

Object hooks: before.save, after.save, destroy

Object hooks are the most commonly written DAL hooks. They operate on the row or record as a whole. The 4GL engine calls them before and after save and delete operations. The key hook names documented by Infor are: before.save.object(), after.save.object(), before.destroy.object(), and after.destroy.object().

Below is a before.save.object() hook that blocks saving a Purchase Order line if the requested delivery date is in the past.

tppdm630 · before.save.object()
| DAL script for table: tppdm630 (Purchase Order Lines) | Hook: before.save.object() | Purpose: Block save if requested delivery date is in the past function before.save.object() | t$pdlv = requested delivery date on the PO line | Check for non-empty date (LN stores empty dates as 0) if tppdm630.t$pdlv < gtod() and tppdm630.t$pdlv <> 0 then | iserror sets the message shown to the user and blocks the save iserror "Delivery date cannot be in the past." return false endif return true end.function
DAL syntax: comments, empty dates, and error messages

DAL scripts use | (pipe) for single-line comments. Empty dates are stored as 0 in LN's internal representation — not as SQL null. Always guard with field <> 0 to avoid false failures on new records. The iserror keyword sets the error message displayed to the user and signals that the operation should be blocked.

Property hooks (DAL 1): defaults and field validation

In DAL 1, property hooks operate at the field level. They are used to verify valid input values and to calculate default values for table fields. Property hooks follow a naming convention based on the operation and the table/field: default.tablename.fieldname for default-setting, and check.tablename.fieldname for validation.

DAL 1 · Property hook · field default
| DAL 1 Property hook: set default warehouse on new PO line | Hook fires when tppdm630.t$cwar (warehouse field) is initialised function default.tppdm630.t$cwar() | Read the default warehouse from the purchase parameters table select tpptr300 where tpptr300.t$lcol = tppdm630.t$lcol and tpptr300.t$bpid = tppdm630.t$bpid do tppdm630.t$cwar = tpptr300.t$cwar end.select end.function

Field hooks and business methods (DAL 2)

DAL 2 introduces field hooks — a richer replacement for property hooks that handle all field-level logic in one place. According to official documentation, field hooks can: verify valid values, make a field read-only, make a field invisible, automatically update a field after a related field changes, make a field mandatory, and hide specific enum constants from an enum list.

Business methods are named operations on a row or set of rows. They can be called from sessions, from other DAL scripts, or from external integrations through the Business Object Layer (BOL). They are the correct, documented mechanism for complex cross-table operations initiated from a DAL hook.

DAL 2 · after.save.object() · calling a business method
| DAL 2: tssls400 (Sales Order Header) | Hook: after.save.object(mode) | Purpose: Trigger warehouse allocation business method on confirm function after.save.object(mode) | mode 1 = insert, mode 2 = update | Only act when this is an update that sets status to Confirmed (2) if mode = 2 and tssls400.t$hdst = 2 then | Call the business method defined on this table | Business methods are the correct cross-table mechanism in DAL tssls400.AllocateWarehouseOrder( tssls400.t$orno, tssls400.t$cwar ) endif end.function
Detecting insert vs update: use the mode argument

In DAL object hooks, the mode argument passed to before.save.object(mode) and after.save.object(mode) distinguishes inserts (mode=1) from updates (mode=2). This is the documented way to branch on operation type in DAL.

Where to create and edit DAL scripts in LN

Both DAL 1 and DAL 2 scripts are created, edited, and compiled in Program Scripts / Libraries (ttadv2530m000). The Script Type field distinguishes them: "DAL" for DAL 1 and "DAL (version 2)" for DAL 2.

Infor LN · Tools · Program Scripts / Libraries · ttadv2530m000
New Compile Check Out Check In SCRIPT CODE DESCRIPTION SCRIPT TYPE TABLE tppdm630.dal PO Lines — delivery date check DAL tppdm630 tssls400.dal2 Sales Order Header — full business logic DAL (version 2) tssls400 tccom001.dal2 Business Partner — field hooks DAL (version 2) tccom001 tcibd001.dal Item — base data validations DAL tcibd001 4 scripts · Current package VRC · LN 10.7 ✓ Compiled OK

↑ ttadv2530m000. The Script Type column distinguishes DAL 1 ("DAL") from DAL 2 ("DAL (version 2)"). Both are compiled here.

Infor LN Studio for modern development

Current LN development is done in Infor LN Studio, an Eclipse-based IDE providing syntax highlighting, a content assistant, compilation, debugging, and activity-based version control for DAL scripts and all other LN components. The session ttadv2530m000 remains available for viewing, but production development work uses LN Studio.

Common mistakes and how to avoid them

Step through the five most common errors developers make when starting with DAL scripts.

DAL Beginner Mistakes · Interactive Reference
Wrong hook names
DAL 1 + integration
Empty date check
Wrong session
Forgetting compile
loading...

What to learn next

Field dependencies in DAL 2
DAL 2 field dependencies auto-update dependent fields when a source field changes and drive the UI (enabling/disabling fields, filtering enum values). Mastering this removes most reasons to write UI script field logic.
Business methods: design and calling patterns
Business methods are the correct way to expose named table-level operations callable from other DAL scripts, from sessions, and from integrations via the BOL. Understanding when to use a business method vs. an object hook is a key design decision.
LN Extensions framework for customer customisations
For customer-specific rules, Infor recommends the Extensions framework (Tools > Application Extensibility) rather than directly modifying delivered DAL scripts. Extension scripts are DAL-based, managed in LN Studio with activity-based version control, and survive upgrades cleanly.
FOB Certification: Infor LN Development track
The FullonBaan Certification portal (fobexams.vercel.app) includes a dedicated Development track with DAL scripting scenario-based questions and a certificate on completion — recognised by Infor LN employers globally.

DAL is the foundation of correct Infor LN development. Get the hook model right — object, property, field — and you have a customisation framework that is stable, integration-safe, and documented by Infor itself.

— FullonBaan Consulting Services · fullonbaan@gmail.com · +91 63605 93122 · www.fullonbaan.com

Follow FullonBaan for the complete series. Training batches for 2026/2027 are open.

Contact: fullonbaan@gmail.com  ·  +91 63605 93122  ·  www.fullonbaan.com


📚 Continue Learning

Explore the FOB Repository for DAL scripting references and code examples. The FOB Certification Exam includes a dedicated Development track covering DAL scripting. Enrol in FOB Training for structured Infor LN Development courses.

Article 11 · ION · BOD

BOD Nouns & Verbs
in Infor LN Integration

The complete guide to understanding Business Object Document structure — how Nouns identify data and Verbs define the action — with real examples from Infor LN implementations.

FullonBaan Editorial·March 2026 BODIONIntegrationOAGIS

What is a BOD? The Noun-Verb Paradigm

A Business Object Document (BOD) is the standard XML message format used across the entire Infor product suite for application-to-application communication. It was defined by the OAGIS (Open Applications Group Integration Specification) standard and adopted by Infor as the backbone of its ION middleware platform. Every time Infor LN needs to tell another system that a Sales Order was created, a Purchase Order was approved, or an Item Master record changed — it speaks in BODs.

The genius of the BOD architecture is its naming convention. Every BOD name is formed by combining exactly two components: a Verb (the action being performed) and a Noun (the business entity being acted upon). This is not a metaphor — it is a literal naming scheme. Sync.SalesOrder, Process.PurchaseOrder, Show.ItemMaster — each name tells you exactly what is happening and to what.

"If you understand Nouns and Verbs, you understand 80% of Infor ION integration. Everything else — connection points, data flows, mappings — is plumbing around this core concept."

— FullOnBaan Consulting Services

This is fundamentally different from a REST API where the endpoint path and HTTP method encode the action. In the BOD world, the message itself declares what it is and what it wants. This makes BODs self-describing, routable, and auditable by middleware — which is exactly why ION can orchestrate complex multi-application workflows without custom code.

Anatomy of a BOD Message

Every BOD message, regardless of which application produces it, follows a strict two-part structure: the ApplicationArea (the envelope) and the DataArea (the payload). Understanding this structure is essential before you configure a single document flow in ION.

FIG 1 — BOD MESSAGE STRUCTURE: APPLICATION AREA + DATA AREA
BOD: Sync.SalesOrder APPLICATION AREA (ENVELOPE) Sender (LogicalID) CreationDateTime BODID (Unique ID) Confirmation Code BOD Version DATA AREA (PAYLOAD) VERB Sync ActionCriteria expressionLanguage + NOUN SalesOrder Header Fields Line Items[] Custom Fields UserArea (LN-specific extensions)

The ApplicationArea carries metadata: who sent the BOD, when it was created, a unique BODID for tracking, and an optional confirmation code that tells the receiver whether to send back an acknowledgement. Think of it as the postal envelope — it tells the mail system where the message came from and how to handle delivery.

The DataArea is where the Verb-Noun pair lives. The Verb element defines the action (Sync, Process, Get, etc.) along with optional action criteria. The Noun element contains the actual business data — a SalesOrder with its header, lines, and custom fields. In Infor LN, the UserArea section inside the Noun is where LN-specific fields that are not part of the standard OAGIS schema get mapped.

Key insight

The BOD name Sync.SalesOrder is not just a label — it maps directly to the XML root element structure. The DataArea always contains exactly one Verb element and one or more Noun elements. One BOD, one action, one data type.

The Six BOD Verbs Every LN Consultant Must Know

There are over a dozen OAGIS-defined verbs, but in practical Infor LN integration work, six verbs account for 95% of all BOD traffic. Master these and you can design, debug, and optimise almost any ION document flow.

SYNC
Sync — "Here is the latest state after a change"
The most common verb in LN integration. A Sync message is a broadcast published by the system of record to inform other applications about the latest information for the noun after a business event causes a change in the data. When LN publishes a Sync.SalesOrder, every subscriber receives the current state. The Sync verb supports two actionCodes: Add (a new record was created) and Replace (an existing record was updated). The receiver typically performs an upsert operation.
PROCESS
Process — "Please execute this action"
A Process BOD is a point-to-point request from a non-system of record to the system of record. When an external system sends a Process.PurchaseOrder to LN, it is instructing LN to create or update that Purchase Order. Process supports two actionCodes: Add (create a new document) and Change (update an existing one). The system of record responds with an Acknowledge BOD indicating acceptance or rejection.
GET
Get — "Send me the data"
A Get BOD is a request-response pattern. The sender issues a Get.SalesOrder with filter criteria (e.g., Order Number = SO-10042), and the receiving system responds with a Show.SalesOrder containing the matching data. Get never modifies data — it is purely a read operation.
SHOW
Show — "Here is what you asked for"
The response to a Get. A Show BOD carries one or more Noun instances that match the criteria specified in the original Get request. In LN integrations, the Get/Show pattern is commonly used for on-demand data retrieval — for example, a warehouse system requesting the current BOM (Bill of Material) before starting a pick operation.
CONFIRM
Confirm — "Something went wrong"
The ConfirmBOD is primarily an error notification message. It is used to notify users of an error condition and is sent to Infor ION where it can be viewed in ION Desk. When the ApplicationArea's ConfirmationCode is set to Always or OnError, a ConfirmBOD is generated upon processing failure. This is your first line of defence for catching integration errors in production.
ACKNOWLEDGE
Acknowledge — "Your Process request was accepted or rejected"
An Acknowledge BOD is the direct response to a Process message. When a system of record receives a Process BOD, it validates the data and sends back an Acknowledge to notify the requesting system whether the request was accepted or rejected. This verb completes the Process/Acknowledge request-response pair.
Quick rule of thumb

Sync = outbound broadcast (source pushes state). Process = inbound instruction (target receives command). Get/Show = request/response pair for data retrieval. ConfirmBOD = error notification. Acknowledge = response to Process (accepted/rejected). Memorise this and you will read any ION data flow document like a storyboard.

Common BOD Nouns in Infor LN — Reference Matrix

Infor LN supports hundreds of BOD Nouns across its modules — Sales, Purchasing, Warehousing, Manufacturing, Finance, and more. Below is the reference matrix of the most frequently used Nouns, grouped by functional area, along with which Verbs are typically configured for each.

Module BOD Noun Common Verbs Typical Direction
SalesSalesOrderSync Process ShowLN → CRM / WMS / 3PL
SalesCustomerPartyMasterSync ProcessLN ↔ CRM
PurchasingPurchaseOrderSync Process AcknowledgeLN ↔ Supplier Portal
PurchasingSupplierPartyMasterSync ProcessLN ↔ SRM
InventoryItemMasterSync Process ShowLN → WMS / PLM / eComm
InventoryBillOfMaterialsSync ShowLN → MES / PLM
WarehouseShipmentSync ProcessLN ↔ WMS / TMS
WarehouseReceiveDeliverySync ProcessWMS → LN
FinanceSourceSystemJournalEntrySyncLN → GL / Consolidation
FinancePayableTransactionSync ProcessLN ↔ AP Automation
FinanceReceivableTransactionSyncLN → AR Reporting
ManufacturingProductionOrderSync Process AcknowledgeLN ↔ MES
GeneralCodeDefinitionSyncLN → Any (reference data)
GeneralChartOfAccountsSyncLN → Financial Systems
Important

Not all Verb-Noun combinations are pre-configured in LN out of the box. Some must be activated through BOD publishing sessions in Common → BOD Messaging → Manage Publishing. If you do not see a BOD in the ION desk monitor, verify that publishing has been enabled for that specific Noun.

How BODs Flow Through the ION Backbone

Understanding the physical journey of a BOD from Infor LN to a subscribing application is essential for debugging integration failures. Here is the step-by-step flow.

FIG 2 — BOD LIFECYCLE: FROM LN PUBLISH TO SUBSCRIBER DELIVERY
Infor LN BOD Publish Session Active XML ION CONNECT Connection Pt Doc Flow Validation BOD ION MESSAGING Topic Queue Persistence Retry Logic WMS / 3PL Subscriber A CRM System Subscriber B Data Lake Subscriber C Internal ION Flow Fan-out to Subscribers
1
LN Publishes the BOD
When a business event occurs (e.g., a Sales Order is saved), LN's BOD publishing session generates the XML BOD and hands it off to the ION connection point. This happens asynchronously — the user does not wait for the BOD to be delivered.
2
ION Connect Validates & Routes
The ION Connect layer validates the BOD against the OAGIS schema, checks the document flow configuration, and applies any field-level transformations or mappings defined in the ION Desk. If the BOD fails schema validation, it lands in the ION error queue.
3
ION Messaging Persists & Delivers
The ION Grid messaging engine queues the BOD on a persistent topic. Every subscriber registered for that BOD type (e.g., Sync.SalesOrder) receives a copy. If a subscriber is temporarily unavailable, the message is retained and retried automatically — this is guaranteed delivery.
4
Subscriber Consumes & Confirms
Each subscribing application processes the BOD according to its own business logic and, if confirmation was requested, sends back a ConfirmBOD through the same ION channel. The ConfirmBOD travels the reverse path and is visible in ION Desk for monitoring.

Configuring BOD Publishing & Subscribing in LN

Before any BOD leaves Infor LN, two things must be configured: a BOD publishing session that defines which Nouns to publish and under what conditions, and an ION connection point that establishes the link between LN and the ION backbone.

Here is the step-by-step configuration path used in every production LN deployment.

1
Activate BOD Content
Navigate to Common → BOD Messaging → BOD Content. Here you enable the specific Verb-Noun combinations you need — for example, activate Sync.SalesOrder and Sync.ItemMaster. Each combination maps to a BOD content code in LN's internal BOD registry.
2
Create a Publishing Session
Go to Common → BOD Messaging → Manage Publishing BOD Messages. Create a new session, select the BOD content codes from Step 1, define the company and selection ranges (e.g., only publish Sales Orders for company 100), and activate the session.
3
Verify Connection Point in ION
In the ION Desk, open Connect → Connection Points and verify that your LN connection point is registered and active. The connection point defines the technical link — including the LN application name, the logical ID (used in BOD ApplicationArea), and the ION messaging endpoints.
4
Build a Document Flow
Still in ION Desk, go to Connect → Data Flows and create a new document flow. Drag LN as the source, the target application as the destination, and select the specific BODs (e.g., Sync.SalesOrder) that should flow between them. Optionally, add field-level mappings.
5
Test with a Single Transaction
Trigger a BOD by modifying a Sales Order in LN. Then check the ION Desk's OneView monitor to see the BOD in transit. Verify it reaches the subscriber, inspect the XML payload, and confirm that the ConfirmBOD (if configured) returns successfully.
Sync.SalesOrder — Simplified BOD XML
<SyncSalesOrder xmlns="http://schema.infor.com/InforOAGIS/2" releaseID="9.2" versionID="2.12.2"> <ApplicationArea> <Sender> <LogicalID>lid://infor.ln.LN_Production</LogicalID> <ComponentID>erp</ComponentID> </Sender> <CreationDateTime>2026-03-25T14:30:00Z</CreationDateTime> <BODID>infor-nid:infor:LN::SO:100:4200012</BODID> </ApplicationArea> <DataArea> <Sync> <ActionCriteria> <ActionExpression actionCode="Add"/> </ActionCriteria> </Sync> <SalesOrder> <SalesOrderHeader> <DocumentID><ID>4200012</ID></DocumentID> <CustomerParty><PartyIDs><ID>CUS-0042</ID></PartyIDs></CustomerParty> <DocumentDateTime>2026-03-25</DocumentDateTime> </SalesOrderHeader> <SalesOrderLine> <LineNumber>10</LineNumber> <Item><ItemID><ID>ITEM-A100</ID></ItemID></Item> <Quantity unitCode="EA">50</Quantity> </SalesOrderLine> </SalesOrder> </DataArea> </SyncSalesOrder>

Common BOD Errors & How to Debug Them

After supporting hundreds of LN integration deployments, these are the five BOD-related errors encountered most often — and how to resolve each one systematically.

BOD stuck in "Pending" in ION Desk

Cause: The LN BOD publishing session is active, but the ION connection point is not running or has lost its heartbeat. Navigate to ION Desk → Connect → Connection Points, verify the LN connector shows a green status. If it is yellow or red, restart the ION Grid agent on the LN application server.

Schema validation error — "Element not expected"

Cause: A custom field in LN's UserArea does not match the registered BOD schema. This happens when LN patches update the BOD version but the ION schema mapping was not refreshed. Go to Common → BOD Messaging → BOD Content, regenerate the schema, and re-import it into ION.

ConfirmBOD returns "Application Error"

Cause: The subscribing application rejected the BOD — typically because of a data validation failure. Open the ConfirmBOD's XML in ION OneView, read the <Description> element inside the <BODFailureMessage>. Common causes: duplicate key, missing mandatory field, or currency code mismatch.

BOD published but not received by subscriber

Cause: The document flow in ION Desk does not include the specific Verb.Noun combination, or the subscriber's connection point is filtering by BOD type and the filter is misconfigured. Check ION Desk → Connect → Data Flows and verify the exact BOD name appears in the flow definition.

Duplicate BODs flooding the subscriber

Cause: The LN publishing session is set to "Full Publish" mode (republishes all existing records), but the document flow was expecting incremental changes. Check the publishing session's run mode. For ongoing integration, always use Change-based publishing, not Full Publish — reserve Full Publish for initial data loads or reconciliation runs only.

Debug tip

The fastest way to diagnose any BOD issue is ION Desk → OneView. Search by BODID, document number, or time range. OneView shows you the complete BOD lifecycle — from publish to delivery to confirmation — with the full XML payload at each stage. Master this screen and you will cut your debugging time by 80%.

Best Practices for BOD-Based Integrations

Here are the practices that separate smooth go-lives from chaotic ones in BOD-based integrations.

Map Nouns to business processes, not to tables
Think in terms of "Sales Order lifecycle" not "tdsls400 table." Each Noun represents a business document with header, lines, and status. Map your integration at the document level, and let the BOD standard handle the field-level structure.
Always enable ConfirmBOD for critical flows
If a BOD carries financial data (SourceSystemJournalEntry, PayableTransaction) or order data (SalesOrder, PurchaseOrder), set ConfirmationCode = Always or OnError. Without it, integration failures go undetected until someone notices missing data downstream.
Use ActionExpression codes correctly
The actionCode inside the Verb's ActionCriteria tells the subscriber exactly how to process the Noun. Add = new entity, Change = modified entity, Delete = removed entity, Replace = full replacement (snapshot). Sync BODs use Add and Replace; Process BODs use Add and Change.
Keep UserArea mappings minimal
LN's UserArea section in the BOD Noun is where you map custom or LN-specific fields. Only include fields the subscriber actually needs. Over-mapping increases BOD size, slows processing, and creates more failure points during LN upgrades.
Monitor ION Desk daily — not just at go-live
Set up ION alerts for BOD failures, ConfirmBOD errors, and queue depth thresholds. Many teams configure perfect integrations at go-live and then never look at ION Desk again — until a month later when they discover thousands of Sales Orders never made it to the WMS.
Version your BOD schemas
When Infor releases a patch or upgrade that changes a BOD schema, do not assume backward compatibility. Compare the BOD schema versions (releaseID and versionID in the XML root) before and after the upgrade. Test all active document flows in a non-production environment first.

BODs are the universal language of the Infor ecosystem. Master the Nouns and Verbs, and you unlock the ability to connect Infor LN to any application, any platform, and any workflow — without writing a single line of custom integration code.

— FullonBaan Consulting Services · fullonbaan@gmail.com · +91 63605 93122 · www.fullonbaan.com

Follow FullonBaan for the complete series. Training batches for 2026/2027 are open.

Contact: fullonbaan@gmail.com  ·  +91 63605 93122  ·  www.fullonbaan.com


Continue Learning

Explore the FOB Repository for BOD integration references and code examples. The FOB Certification Exam includes a dedicated ION Integration track covering BOD architecture. Enrol in FOB Training for structured Infor LN Integration courses.

Article 12 · Platform · Versions

Infor LN Version Comparison
10.1 through 10.8

Technical & functional differences across Infor LN 10.1 through 10.8 — helping you understand the evolution and plan your upgrade path.

FullonBaan Editorial·March 2026 LN VersionsUpgrade PathCloudSuite

Release Timeline

Infor LN's 10.x platform has evolved through eight major releases since approximately 2012, each adding significant functional and technical capabilities. Understanding this timeline is essential for planning upgrades and evaluating which features are available at your current version level.

10.1
~2012
Foundation
10.2
~2013
Web UI
10.3
~2014
Project Mgt
10.4
~2015
Claims & Multi-Currency
10.5
~2016
Industry Verticals
10.6
~2018
Multisite Mfg
10.7
2019
Multisite Mfg
10.8
2023
Latest On-Prem
NEW New feature
ENHANCED Enhancement
CLOUD Cloud capability
TECH Technical change
INDUSTRY Vertical capability
AI / ANALYTICS Intelligence
EOL End of life
CURRENT Active version

Version Highlights

Each release brought key capabilities. Below is a summary of the most significant features introduced in each version.

10.1
~2012   ● End of Life
  • Initial 10.x platform rewrite — transition from Baan/ERP LN 6.1
  • Infor Enterprise Server (IES) foundation layer introduced
  • SQL Server & Oracle database support (64-bit)
  • Classic rich-client (Windows) UI as primary interface
  • Basic Infor ION connectivity for BOD messaging
  • Standard Manufacturing, Finance, Logistics modules
10.2
~2013   ● End of Life
  • Web UI (browser-based client) introduced alongside rich client
  • Enhanced ION integration — workflow & alert support
  • Improved localization framework for multi-country deployments
  • Service module enhancements for field-service scenarios
  • New Authorization Management System (AMS) features
  • Extended support ended June 30, 2021
10.3
~2014   ● End of Life
  • Project management overhaul — budget adjustments & cost forecasting
  • External scheduling interfaces for integration with MS Project
  • Multi-currency project support introduced
  • Enhanced cost & service item handling across project domains
  • Improved warehouse management & lot tracking
  • Tighter integration with Infor Ming.le social platform
10.4
December 2014   ● Mainstream Support
  • Credit & Rebill invoice functionality for corrective invoicing
  • New Claims management module for customer/supplier claims
  • Project enhancements — control accounts & billing improvements
  • Improved intercompany trade processing
  • Enhanced revenue recognition workflows
  • Data authorization objects for fine-grained security
10.5
June 2016   ● Mainstream Support
  • Industry-specific functionality for Aerospace & Defense micro-vertical
  • Automotive industry capabilities — contract flow-down
  • Repetitive manufacturing enhancements
  • Manufacturer certifications & compliance tracking
  • Remote application launch for global partner access
  • Real-time data viewing from any location
10.6
March 2018   ● Mainstream Support
  • GDPR Anonymization & enhanced Authorization Management System (AMS/DEM)
  • Multisite model with local item management & standard cost by Enterprise Unit
  • Personalization Workbench — flexible form layout & conditional formatting
  • Kanban enhancements — signals, supply orders, average daily usage
  • Packaging Fill-up logic, Lot Splitting at receipt, Virtual Handling Units
  • Shipment Workbench, Shipment Execution & Planning Workbenches
  • Purchase Change Requests, Target Pricing, Retro-Billing
  • Price Stages in pricing & Letter of Credit for Global Trade Compliance
10.7
March 2019   ● Mainstream Support
  • Multisite production for Job Shop — Job Shop by Site parameter, BOM & routing by site
  • Configurable start page with company logo, Favorites, Bookmarks & Recently Used per user
  • Report Designer — exact positioning for PDF, printing to Excel with row/column control
  • RFQ Comparison Workbench for procurement bid evaluation
  • Financial Statements module enabled for multi-tenant cloud
  • Inventory aging analysis & in-transit inventory reports (new)
  • Quality: conformance documentation, non-conformance for non-material, qualitative testing norms
  • Global HR integration via BOD (employee, absence, teams) & country localizations
10.8
March 2023   ● Latest On-Premises
  • Latest on-premises release — recommended for all on-prem deployments
  • Enhanced CloudSuite alignment — 6-month feature releases in cloud
  • Advanced API framework & expanded BOD library
  • Improved Infor OS integration (ION, Ming.le, Homepages)
  • AI-driven analytics via Infor Coleman & Birst embedded BI
  • Supplier Collaboration, EAM & CPQ componentization
  • Enhanced multi-site & intercompany scenarios
  • Ongoing monthly CloudSuite updates beyond 10.8 baseline

Technical Architecture Comparison

The table below shows how the underlying platform, database support, user interface, and infrastructure capabilities have evolved across LN versions.

Aspect10.110.210.310.410.510.610.710.8
Primary UI Rich Client (Win)Rich Client + Web UIRich Client + Web UIRich Client + Web UIRich Client + Web UIWeb UI (primary) + Rich ClientWeb UI + Configurable Start Page + User ProfilesWeb UI + Infor Homepages
Platform (64-bit) Windows / UnixWindows / UnixWindows / UnixWindows / Unix / LinuxWindows / Unix / LinuxWindows / LinuxWindows / Linux (RHEL, SUSE)Windows / Linux (RHEL, SUSE)
Database Oracle, SQL ServerOracle, SQL ServerOracle, SQL ServerOracle, SQL ServerOracle, SQL ServerOracle, SQL ServerSQL Server (incl. Linux), OracleSQL Server (incl. Linux), Oracle
Character Set Single / Multi / UnicodeSingle / Multi / UnicodeSingle / Multi / UnicodeSingle / Multi / UnicodeSingle / Multi / UnicodeSingle / Multi / UnicodeUNICODE ONLYUNICODE ONLY
Cloud Ready PartialPartialMULTI-TENANTMULTI-TENANTMULTI-TENANT
Infor OS / ION Basic BODsWorkflows & AlertsEnhanced BODsION API BasicsION API ExtendedION API Gateway (OAuth)ION Workflow on invoices, IDM CaptureFull Infor OS + Expanded BODs
Mobile Support LimitedAndroid & iOSAndroid & iOSAndroid & iOS (Enhanced)
Analytics / BI Basic ReportingBasic ReportingReport EnhancementsReport EnhancementsData LakeData Lake + Doc MgmtReport Designer + Excel outputBirst BI + Coleman AI (Enhanced)
Security Model User / Role basedAMS EnhancementsAMS EnhancementsData Authorization ObjectsData Authorization ObjectsOAuth 1.0a + AMSData auth in Quality & FRACAS, GTC enhancementsEnhanced OAuth + AMS + SSO

Functional Module Comparison

Key functional improvements by module area across versions — from manufacturing and finance to procurement, service, and industry verticals.

Module Area10.110.210.310.410.510.610.710.8
Manufacturing Standard MRP / MPSImproved schedulingEnhanced BOM mgmtIntercompany productionRepetitive MfgResource Mgmt, Kanban enhancementsMultisite Job Shop by SiteAdvanced planning + CPQ
Finance GL, AP, AR, Cash MgmtMulti-company ledgersCost forecastingRevenue RecognitionEnhanced consolidationIFRS ReportingFin. Stmts (Cloud) Segment acctg, ReconciliationEnhanced multi-site financials
Project Management Basic project trackingBudget managementBudget + ForecastingControl accounts & billingCertifications trackingProject scheduling toolContract types, Resource assignments, Element projectsAdvanced project analytics
Warehouse / Logistics Basic WMSEnhanced pickingLot TrackingImproved handlingRemote accessShipment Workbench, Packaging Fill-up, Lot SplitInv. Aging & Transit ReportsAdvanced logistics optimization
Procurement Standard purchasingVendor managementEnhanced sourcingIntercompany tradeSupplier collaborationChange Requests, Target PricingRFQ Comparison WorkbenchSupplier Collaboration Portal
Sales / CRM Sales orders, quotesEnhanced pricingMulti-currency quotesCredit & RebillImproved invoicingConsignment, After Sales ServiceDelivery patterns, Customer item codes, ATP recalcConfigure Price Quote (CPQ)
Service Basic service mgmtField ServiceService contractsClaims ManagementAfter-sales enhancementsMobile service appsDepot repair, Unified quotes, Cost peggingEAM integration
Industry Verticals Generic manufacturingGeneric manufacturingGeneric manufacturingGeneric manufacturingA&D, AutomotiveA&D, Auto, Industrial+High-Tech, EquipmentFull CloudSuite Verticals

Support & Lifecycle Status

Current maintenance status and recommended upgrade path for each version of Infor LN.

VersionStatusMainstream EndExtended EndRecommendation
10.1End of LifeEndedJun 2021Upgrade to 10.8 or CloudSuite immediately
10.2End of LifeEndedJun 2021Upgrade to 10.8 or CloudSuite immediately
10.3End of LifeEndedEndedUpgrade to 10.8 or CloudSuite
10.4Maint. WithdrawnMar 2025Upgrade to 10.8 or CloudSuite
10.5Maint. WithdrawnMar 2025Upgrade to 10.8 or CloudSuite
10.6Maint. WithdrawnMar 2025Upgrade to 10.8 or CloudSuite
10.7MainstreamActivePlan upgrade to 10.8 or CloudSuite
10.8Latest On-PremActiveCurrent recommended on-premises version

Capability Evolution

Relative capability growth across key dimensions — Cloud readiness, ION/API maturity, industry vertical depth, and AI/BI sophistication.

Cloud
10.1
10.2–10.3
10.4–10.5
10.6
10.7
10.8
ION / API
10.1–10.2
10.3–10.4
10.5–10.6
10.7
10.8
Verticals
10.1–10.4
10.5
10.6–10.7
10.8
AI / BI
10.1–10.4
10.5–10.6
10.7
10.8

Critical Upgrade Milestones

Breaking changes and must-know transitions when planning your upgrade path through the Infor LN 10.x release series.

🌐
10.2 — Web UI Introduction

First version to offer a browser-based client alongside the traditional Windows rich client. Marks the beginning of the transition away from desktop-only access.

10.6 — Multi-Tenant Cloud

First version architected for true multi-tenant cloud deployment on AWS. Introduces Infor OS certification, Data Lake integration, and OAuth security for API endpoints.

🔠
10.7 — Unicode Mandate

Breaking change: only Unicode environments are supported from 10.7 onwards. Single-byte and multi-byte installations must be migrated before upgrading.

🚀
10.8 — CloudSuite Convergence

Latest on-premises version and the bridge to CloudSuite. Features align with cloud releases, and CloudSuites receive bi-annual feature updates + monthly fixes on top of the 10.8 baseline.


📚 Continue Learning

Explore the FOB Repository for version-specific configuration references. Take the FOB Certification Exam to validate your Infor LN knowledge.

Article 13 · Platform · ERP Comparison

Infor M3 vs Infor LN
Which ERP Is Right for You?

Both are flagship Infor ERPs, both run on Infor OS, and both serve manufacturing enterprises. But they were built for different worlds. Here's everything you need to know.

FullonBaan Editorial·March 2026 M3LNERP Selection

Meet the Two ERPs

Infor M3 and Infor LN are both enterprise-grade ERP platforms under the Infor umbrella, but they have distinctly different origins, architectures, and target industries. Understanding their DNA is the first step to making the right decision.

Infor M3

The Process & Distribution Powerhouse

Born from the Intentia/Movex lineage, M3 is a Java-based ERP designed for process manufacturing, food & beverage, fashion, chemicals, and distribution-heavy industries. It excels at formula/recipe management, catch-weight processing, lot traceability, and demand-driven supply chains.

Infor LN

The Discrete & Project Manufacturing Specialist

Descended from the Baan product line, LN is built for complex discrete manufacturing, engineer-to-order (ETO), aerospace & defense, automotive, and industrial equipment. It excels at multi-level BOMs, project-driven manufacturing, shop floor control, and complex supply chains with deep configuration.

💡 Key Insight

M3 and LN are not competitors — they are complementary products in Infor's portfolio. Infor positions M3 for process/distribution industries and LN for discrete/project manufacturing. Choosing between them is fundamentally an industry-fit decision.

Architecture & Technology Stack

Under the hood, M3 and LN are built on entirely different technology stacks. Both integrate with Infor OS (Ming.le, ION, Coleman AI, Birst, Data Lake), but the core application architectures differ significantly.

Aspect M3 LN
LanguageJava (server-side)4GL / C-based (Baan heritage)
App ServerM3 Business Engine (MBE) on Java EEInfor Enterprise Server
DatabaseIBM Db2, SQL Server, OracleOracle, SQL Server
UI FrameworkM3 H5 Client (HTML5/JavaScript)Infor Ming.le (Web-based)
CustomizationM3 Metadata Publisher, MAK, MECPersonalization framework, server-side hooks, UI extensions
APIsM3 API (MI programs), ION APIBODs via ION, ION API Gateway
IntegrationInfor ION, M3 Event Hub, MEC (mapping)Infor ION, BODs, connection points
ExtensionsM3 SDK, Mashup Designer for custom UIsUI Personalizations, server-side scripting
CloudInfor CloudSuite (multi-tenant AWS)Infor CloudSuite (multi-tenant AWS)

Feature-by-Feature Comparison

While both platforms cover core ERP territory (finance, supply chain, manufacturing, procurement), the depth and approach in each functional area reflects their distinct industry heritage.

Capability M3 LN
BOM TypeFormula/recipe-based with co-products and by-productsMulti-level engineering BOMs with revisions, effectivity, and ECOs
Mfg ModeProcess, batch, repetitive, mixed-modeDiscrete, project, job-shop, repetitive, lean
Project MgmtBasic project accountingDeep PCS with earned value, WBS, and progress invoicing
WarehouseAdvanced WMS with catch-weight, lot/batch tracing, quality holdsIntegrated WMS with zone/bin management, wave planning, RF support
QualityDeep quality with sampling, specs, certificates of analysis (CoA)Quality inspection with non-conformance and corrective actions
Demand PlanNative demand planning with statistical forecastingMRP/MPS-driven; advanced planning via Infor SCP add-on
Catch WeightNative dual unit of measure / catch-weight supportNot natively supported
ServiceBasic service/maintenanceFull service management (contracts, depot repair, field service, warranty)
Multi-CoStrong multi-company with intercompany tradingExtensive multi-company, multi-site, multi-legislation with intercompany hub
ConfiguratorBasic variant/attribute-based configurationProduct configurator for ETO and CTO scenarios
FinanceMulti-GAAP, multi-currency, strong allocation engineMulti-GAAP, IFRS, integrated banking, revenue recognition
ComplianceFDA, HACCP, GMP, EU food safety featuresITAR, export control, AS9100, NADCAP-ready features

Core Module Differences

Both ERPs have comprehensive module suites, but the organizational logic and boundaries differ. Here's how the core areas map:

Functional AreaM3 ModulesLN Packages
FinanceGeneral Ledger, AP, AR, Fixed Assets, Cash MgmtFinance (TF) — GL, AP, AR, Fixed Assets, Banking, Budgeting
ProcurementPurchase Order Management, Supplier PortalProcurement (TP) — POs, contracts, RFQs, supplier evaluation
SalesCustomer Order Management, Pricing, ATPSales (TD) — Sales orders, pricing, scheduling, rebates
ManufacturingProcess Manufacturing, Production Planning, Shop FloorManufacturing (TI) — BOMs, routings, production orders, SFC, lean
WarehousingM3 Warehouse Management (WMS)Warehousing (WH) — inventory, operations, RF
ProjectsProject Accounting (basic)Project (TP) — PCS, earned value, WBS, cost control, progress billing
ServiceEquipment / Maintenance ManagementService (TS) — contracts, depot repair, field service, warranty
QualityQuality Management with full lab/testing supportQuality with inspection orders and non-conformance tracking

Industry Fit & Sweet Spots

The most important factor in choosing between M3 and LN is your industry. Each ERP was shaped by decades of investment in specific verticals. Choosing the one designed for your industry means more standard functionality, less customization, and faster implementation.

Infor M3 Sweet Spots

🍕
Food & Beverage
M3
⚗️
Chemicals & Life Sciences
M3
👔
Fashion & Apparel
M3
📦
Distribution & Wholesale
M3
🏭
Paper & Packaging
M3
🌿
Agriculture & Commodities
M3

Infor LN Sweet Spots

✈️
Aerospace & Defense
LN
🚗
Automotive & Tier Suppliers
LN
⚙️
Industrial Equipment
LN
🚢
Shipbuilding & Marine
LN
🔧
Engineer-to-Order (ETO)
LN
🏗️
High-Tech & Electronics
LN

Deployment & Cloud Options

Both M3 and LN are available as part of Infor CloudSuite, hosted on AWS with multi-tenant architecture. However, there are differences in how each is packaged and deployed.

DeploymentM3LN
CloudSuiteCS Food & Beverage, CS Distribution, CS Fashion, CS ChemicalsCS Aerospace & Defense, CS Automotive, CS Industrial Enterprise
On-PremiseSupported (cloud-first strategy)Supported (cloud-first strategy)
Multi-TenantYes, on AWSYes, on AWS
Infor OSFull (Ming.le, ION, Birst, Coleman, Data Lake, IDM)Full (Ming.le, ION, Birst, Coleman, Data Lake, IDM)
UpdatesCloud: continuous; On-prem: service packsCloud: continuous; On-prem: service packs
ExtensionsMashup Designer, M3 SDK, MECPersonalizations, server-side hooks, ION workflows

Unique Strengths of Each ERP

Beyond feature lists and industry labels, each ERP has unique capabilities that make it the clear winner in specific scenarios.

M3: Catch-Weight & Dual UoM

Native support for products sold in one unit but invoiced in another (e.g., cases vs. kilograms). Essential for food, meat, seafood, and commodities where variable weight is the norm.

LN: Project Control System (PCS)

One of the most sophisticated project modules in any ERP. Earned value management, work breakdown structures, milestone billing, and cost-to-complete forecasting — all natively integrated with manufacturing and procurement.

M3: Recipe & Formula Management

Process manufacturers manage recipes with variable inputs, co-products, by-products, and yield calculations. M3 handles this natively with full batch scalability and potency tracking.

LN: Complex BOM & Engineering

Multi-level engineering BOMs with revision control, effectivity dates, engineering change orders (ECOs), and phantom assemblies. Built for products with hundreds or thousands of components.

M3: H5 Client & Mashup Designer

M3's HTML5 client and Mashup Designer allow rapid creation of custom dashboards and composite applications without touching core code. Power users build their own views.

LN: Service & After-Sales

Full lifecycle service management: warranty tracking, service contracts, depot repair, service quotations, installed base management, and serialized part tracking for complex equipment.

The Verdict: How to Choose

The decision between M3 and LN is not about which ERP is "better" — it's about which one fits your business model, industry requirements, and manufacturing mode.

Choose Infor M3 If You…

  • Operate in process manufacturing (batch, formula, recipe-driven)
  • Need catch-weight or dual unit-of-measure handling
  • Are in food & beverage, chemicals, fashion, or distribution
  • Require lot traceability, shelf-life management, or quality certificates (CoA)
  • Need advanced demand planning and statistical forecasting natively
  • Want a Java-based platform with HTML5 client and Mashup extensibility
  • Require FDA, HACCP, or GMP compliance features out of the box

Choose Infor LN If You…

  • Operate in complex discrete manufacturing (job-shop, ETO, CTO)
  • Need deep project management with earned value and progress billing
  • Are in aerospace, defense, automotive, or industrial equipment
  • Require multi-level BOM management with engineering change control
  • Need comprehensive service and after-sales management
  • Operate complex multi-company, multi-site environments with intercompany flows
  • Require ITAR, AS9100, or defense/export compliance features
🔀 Hybrid Scenarios

Some organizations operate in both process and discrete modes. In hybrid scenarios, Infor's recommended approach is to implement both M3 and LN where appropriate, connected via ION as the integration backbone. This is more common than you'd expect in large multi-division enterprises.


📚 Continue Learning

Explore the FullonBaan Training Platform for comprehensive Infor LN courses, or visit fullonbaan.com for consulting and migration support.

Article 14 · Platform · Upgrade

Migrating from Infor LN 10.3 to 10.8
What Changes & How to Prepare

A plain-English guide for end users and consultants on what's different, what breaks, and how to make the upgrade smooth.

FullonBaan Editorial·April 2026 UpgradeLN 10.3LN 10.8

Why Upgrade from 10.3?

If your organization is still on Infor LN 10.3, you're running a version that went generally available on July 31, 2013 — nearly 13 years ago. Infor ended Extended Maintenance for 10.3 on June 30, 2023, which means no more patches, no more bug fixes, and no more security updates. You're essentially flying without a safety net.

But it's not just about support. Between 10.3 and 10.8, Infor has added five major releases worth of improvements — better screens, smarter planning, cloud readiness, built-in analytics, and dozens of features that your team is currently working around with spreadsheets and manual processes.

The good news? Unlike jumping from Baan V to LN, going from 10.3 to 10.8 is a version upgrade within the same product family. Your data stays. Your core processes stay. But a lot of things look different and work better.

⚠️ Support Status

Infor LN 10.3's Mainstream Maintenance ended on December 31, 2019, and Extended Maintenance ended on June 30, 2023 (per Infor's official Product Lifecycle Policy). Running 10.3 in production means you are on an unsupported version with no patches, no bug fixes, and no security updates from Infor. Upgrading is no longer optional — it's urgent.

What Actually Changes for Users?

Let's start with the stuff your end users will notice on Day 1 — because this is where most upgrade anxiety comes from.

The Screen Looks Different

If your team has been using the classic Windows-style LN screens, the first thing they'll notice in 10.8 is the modern web-based interface through Infor Ming.le. It runs in a browser. It looks cleaner. Menus are organized differently. There are homepages with widgets and shortcuts instead of the old menu tree.

This is the single biggest source of user resistance during upgrades. People know exactly where every button is in the old system. Now they need to relearn navigation. The functionality is the same — but the way you get to it changes.

Personalization Is Way Better

In 10.3, if you wanted to hide a field or rearrange a form, you usually needed a developer. In 10.8, users and administrators can do this themselves through the Personalization Workbench. You can hide columns, reorder fields, set default values, and apply conditional formatting — all without writing a single line of code.

Homepages Replace the Old Menu

Instead of drilling through nested menus, 10.8 gives each role a customizable homepage. A buyer sees their open purchase orders, pending approvals, and supplier alerts in one place. A production planner sees shop floor status, material shortages, and scheduling overviews. Think of it like a personalized dashboard that opens when you log in.

Workflows and Approvals Live in the Browser

In 10.3, approval workflows were clunky — often handled through email or external tools. In 10.8, approval tasks show up directly in your Ming.le inbox. You can approve a purchase order from your phone. No need to log into the full LN client.

Key Technical Changes (10.3 → 10.8)

For consultants and IT teams, here's what changed under the hood across the five intermediate versions (10.4, 10.5, 10.6, 10.7, and 10.8).

AreaLN 10.3LN 10.8
User InterfaceClassic rich client (Windows)Web UI via Infor Ming.le + configurable homepages
PersonalizationLimited (developer-dependent)Personalization Workbench — user/role-level field control
AuthorizationBasic user/group modelAuthorization Management System (AMS) with data-level security
IntegrationBasic ION connectivity for BODsFull ION suite — workflows, event monitors, API Gateway, IDM
AnalyticsBW reports, Crystal ReportsInfor Birst embedded analytics, Data Lake, in-context KPIs
AINoneInfor Coleman AI for predictive insights
ReportsStandard report writerReport Designer with exact positioning, PDF & Excel output control
GDPRNo native supportBuilt-in data anonymization tools (from 10.6)
CloudOn-premise onlyMulti-tenant CloudSuite on AWS + on-premise
WarehousingBasic warehouse operationsShipment workbenches, packaging fill-up, lot splitting, virtual handling units
ManufacturingStandard productionMultisite production by site, Kanban enhancements, lean manufacturing
ProcurementStandard purchasingRFQ comparison workbench, purchase change requests, target pricing, retro-billing
FinanceStandard financialsCredit & rebill invoicing, claims management, financial statements for cloud
ProjectsBasic project managementEnhanced budget adjustments, cost forecasting, multi-currency projects
QualityBasic quality inspectionConformance documentation, non-conformance for non-material, qualitative testing norms
Global TradeLimitedLetter of Credit support, price stages, industry-specific compliance (A&D, Automotive)

Top Features You Gain (Version by Version)

Here's a quick summary of the headline features added in each version between 10.3 and 10.8. If you've been on 10.3 all this time, you're getting all of these in one shot.

10.4

Claims & Corrective Invoicing

New Claims management module for handling customer and supplier disputes. Credit & Rebill functionality for corrective invoicing without reversing the original. Enhanced intercompany trade processing and revenue recognition workflows. Data authorization objects for fine-grained row-level security.

10.5

Industry Verticals & Compliance

Industry-specific features for Aerospace & Defense (A&D) and Automotive micro-verticals. Manufacturer certifications and compliance tracking. Repetitive manufacturing enhancements. Remote application launch so global teams can access LN from anywhere.

10.6

GDPR, Personalization & Warehousing

GDPR data anonymization built into the platform. The Personalization Workbench arrives — finally letting admins customize forms without coding. Kanban signals and supply orders for lean manufacturing. Shipment Planning and Execution workbenches. Packaging fill-up logic and virtual handling units in warehousing. Purchase Change Requests and retro-billing in procurement.

10.7

Multisite Manufacturing & Reporting

Multisite production for Job Shop — BOMs and routings by site. Configurable start pages with favourites, bookmarks, and recently used sessions per user. New Report Designer with exact positioning for PDF and Excel. RFQ Comparison Workbench for procurement. Quality improvements — conformance documentation, qualitative testing norms. HR integration via BODs.

10.8

Cloud Alignment, AI & APIs

Latest on-premises release — recommended for all on-prem deployments. Enhanced CloudSuite alignment with 6-month cloud feature cadence. Advanced API framework and expanded BOD library. AI-driven analytics via Infor Coleman and Birst embedded BI. Supplier Collaboration, EAM, and CPQ componentization. Ongoing monthly CloudSuite updates beyond the 10.8 baseline.

What Happens to Your Customizations?

This is the question every consultant dreads, and every project manager asks first. Here's the honest answer:

Standard customizations using LN's supported framework (UI modifications via Personalization, server-side hooks done the "right way") generally survive the upgrade. Infor provides upgrade tooling that carries these forward.

Non-standard customizations — modified base sessions, direct table changes, hardcoded scripts that bypass the extension framework — are at risk. These may break during the upgrade and will need to be reviewed, retested, and possibly rewritten.

💡 The Silver Lining

Many customizations you built for 10.3 exist because the standard system couldn't do what you needed. Five versions later, a good chunk of those needs are now covered by standard features. Run a fit-gap of your customizations against 10.8 standard — you'll likely retire 30–40% of them.

  • Step 1: Inventory every custom object — modified sessions, reports, DALs, DLLs, custom menus, and scripts
  • Step 2: For each, check if 10.8 standard now handles the requirement
  • Step 3: For those still needed, verify they use supported extension points
  • Step 4: Rewrite anything that modifies base code — it won't survive the upgrade cleanly

Data Migration: What to Expect

Unlike a platform migration (say, Baan V to LN), an upgrade within the 10.x family is significantly easier on the data side. Your database structure is compatible. Infor provides upgrade scripts that handle schema changes between versions.

That said, there are still things to watch out for:

  • New mandatory fields: Some features introduced between 10.4 and 10.8 add new required fields to existing tables. The upgrade scripts set default values, but you should review them to make sure the defaults make sense for your business.
  • Parameter changes: New parameters have been added and some old ones have been deprecated or restructured. Your parameter settings need a review during the upgrade — don't just accept defaults blindly.
  • Number groups: If you're using multi-company, the number group logic was refined. Verify your number series after the upgrade.
  • Authorization data: The move to AMS means your user/group authorization data needs to be mapped to the new role-based model. Plan time for this.
🧹 Clean Up Before You Upgrade

An upgrade is the perfect excuse to clean house. Archive closed orders older than your reporting needs. Purge obsolete item masters. Clean up orphaned records. The less data you upgrade, the faster and smoother it goes.

High-Level Upgrade Approach

Here's a practical, phase-by-phase approach that works for most organizations upgrading from 10.3 to 10.8. Total timeline is typically 6 to 12 months depending on your customization footprint and company size.

01

Assessment & Planning (4–6 weeks)

Take stock of where you are. Inventory all customizations, integrations, and third-party tools connected to LN. Review Infor's upgrade documentation and release notes for every version between 10.3 and 10.8. Identify deprecated features and new mandatory parameters. Produce a gap analysis and upgrade project plan.

02

Environment Setup & Technical Upgrade (4–6 weeks)

Set up a non-production (sandbox) environment. Run the Infor upgrade toolkit to bring the database from 10.3 to 10.8. This is a technical step — apply upgrade scripts version by version (10.3 → 10.4 → ... → 10.8). Resolve any script errors. Verify the upgraded system starts up and the base functionality works.

03

Customization Review & Remediation (6–10 weeks)

Test every customization in the upgraded sandbox. Fix or rewrite anything that broke. Retire customizations now covered by standard 10.8 features. Rebuild integrations that relied on deprecated APIs or exchange schemes. Update reports to work with the new Report Designer if needed.

04

Configuration & New Features (3–4 weeks)

Configure new 10.8 features your business wants to adopt — Personalization Workbench, homepages, ION workflows, Birst analytics. Set up the new Authorization Management System. Review and adjust all parameters added since 10.3. This is where the upgrade starts paying dividends.

05

Testing (6–8 weeks)

Run three rounds minimum. Round 1: Technical smoke test — does every session open? Do core processes complete end-to-end? Round 2: User Acceptance Testing — business users validate their daily processes in the new version. Round 3: Dress rehearsal — simulate the full cutover including upgrade scripts, data validation, and go-live checklist.

06

Training & Change Management (start in Phase 3)

Don't wait until go-live to train users. Start with key users during Phase 3 so they can participate in UAT. Build role-based training materials focused on what changed — new navigation, homepages, approval workflows, personalization options. Address the "where did my button go?" questions before they become support tickets.

07

Go-Live & Hypercare (3–4 weeks)

Execute the upgrade on your production environment during a planned downtime window. Run data validation scripts. Verify integrations. Open the system to users with a support team standing by. The first week will be busy — mostly navigation and "how do I…" questions. Have floor walkers and a quick-response helpdesk ready.

Common Mistakes to Avoid

These are the pitfalls we see in almost every 10.3-to-10.8 upgrade project. Avoid them and you'll save yourself weeks of pain.

01

Skipping the Customization Inventory

If you don't know what you've customized, you can't test it. "We'll find issues in UAT" is not a strategy — it's a recipe for a delayed go-live. Document every custom object before the upgrade starts.

02

Treating It as "Just a Technical Upgrade"

Yes, the data migrates in place. But the UI changes, the security model changes, workflows change, and new features need configuration. If your project plan has zero time for functional work, you're in trouble.

03

Ignoring Training

The number one cause of post-upgrade complaints isn't bugs — it's users who can't find things in the new interface. Budget real time and effort for training. Screenshots of "old vs new" navigation paths are worth their weight in gold.

04

Compressing the Timeline

Management always asks "can we do it in 3 months?" For a heavily customized 10.3 environment, the answer is almost always no. A realistic timeline is 6–12 months. Rushing leads to incomplete testing, which leads to production issues, which leads to a much longer and more painful stabilization period.

05

Not Adopting New Features

If you upgrade to 10.8 but don't turn on homepages, personalization, ION workflows, or Birst — you've paid the cost of the upgrade without capturing the value. Plan time to configure and roll out at least 2–3 new capabilities at go-live.

End-User Survival Guide

If you're an end user reading this and your company just announced an upgrade — don't panic. Here's what to expect:

  • Your data is safe. All your orders, invoices, inventory, and history come with you. Nothing gets deleted.
  • The screens look different. It's a web browser now instead of a Windows application. Everything runs in Chrome, Edge, or Firefox. Same data, same fields — new look.
  • Your menu path changes. The session you used to find under Distribution → Sales Orders might now be on your homepage or in a different menu. Ask your trainer for a "cheat sheet" mapping old paths to new ones.
  • You can customize your own view. Don't like the column order? Hide fields you never use? Change default values? You can do all of that yourself now. Ask about the Personalization Workbench.
  • Approvals come to you. No more chasing emails. Approval tasks appear in your Ming.le inbox — you can act on them from your phone.
  • Give it two weeks. Every system change feels awkward for the first few days. By week two, most users find the new interface faster and more intuitive than the old one.

Realistic Timeline Expectations

Organization SizeCustomization LevelExpected Timeline
Small (1–2 companies, <200 users)Low (few customizations)4–6 months
SmallHigh (many custom sessions/reports)6–9 months
Medium (3–5 companies, 200–500 users)Low to Medium6–9 months
MediumHigh9–12 months
Large (5+ companies, 500+ users)Any10–14 months
🎯 Bottom Line

Upgrading from 10.3 to 10.8 is necessary, manageable, and ultimately rewarding. You get a modern interface, better analytics, cloud readiness, and five versions' worth of functional improvements. The key is to plan it properly, invest in training, and treat it as a business project — not just an IT task.


📚 Continue Learning

Need hands-on help with your upgrade? Explore the FullonBaan Training Platform for Infor LN courses, or visit fullonbaan.com for consulting and upgrade support.

Article 15 · Platform · AI

Infor Industry AI Agents
Role-Based Automation for Manufacturing, Distribution & Service

How Infor's October 2025 release introduced micro-vertical AI agents that orchestrate and automate workflows through the GenAI Assistant — and what it means for ERP teams.

FullonBaan Editorial·April 2026 AI AgentsGenAICloudSuite

What Are Infor Industry AI Agents?

On October 9, 2025, Infor announced a fundamental shift in how enterprise AI works inside its CloudSuite platform. Instead of generic chatbots or broad-purpose copilots, Infor introduced Industry AI Agents — micro-vertical, role-based AI agents that understand specific industry processes, terminology, compliance requirements, and KPIs out of the box.

These aren't just language models answering questions. They are autonomous agents that can orchestrate multi-step workflows, coordinate with other agents, and take action across your ERP — all while keeping humans in the loop for decision-making. They live inside the Infor GenAI Assistant, accessible through natural language, and they are grounded in real-time data from both Infor and non-Infor systems.

The key distinction from other enterprise AI offerings is that these agents are built on Infor's Industry Process Catalogs and Value Maps — proprietary frameworks developed across eight industries and dozens of micro-verticals. A Project Agent in aerospace manufacturing doesn't behave the same as a Project Agent in food and beverage distribution. Each one carries the domain context that makes it immediately useful rather than requiring months of fine-tuning.

🤖 The Big Idea

Infor Industry AI Agents are the first enterprise AI agents that ship with built-in understanding of micro-vertical processes — from dairy producers to EV manufacturers to textile fabricators. They don't need to learn your industry from scratch; they already speak your operational language.

Why This Matters for ERP Teams

Enterprise AI has been a moving target for most ERP teams. The tools available until now — generative AI assistants, embedded analytics copilots, natural-language query builders — are useful but limited. They help you find information faster. They don't do work for you.

Industry AI Agents change the equation. Instead of asking a chatbot "show me overdue purchase orders," you can tell an agent "review all overdue POs for our top-tier suppliers, flag anything over $50K that's more than 15 days late, draft exception reports for each, and notify the procurement lead." The agent breaks that down into steps, executes them across the relevant CloudSuite modules, and comes back with results — pausing for your approval at decision points.

For Infor LN users specifically, this means the platform is moving toward a model where routine operational tasks — invoice reviews, inventory checks, project status rollups, maintenance scheduling — can be delegated to agents that understand your modules, your data model, and your industry's rules.

Architecture: How They Work Under the Hood

Infor built the agent infrastructure on three foundational components that work together to deliver industry-aware automation.

The Agentic Orchestrator

At the core is the Infor Agentic Orchestrator, which combines Amazon Bedrock for flexible access to high-performing large language models (LLMs) with LangChain for multi-step workflow orchestration. This isn't a single-model system — the orchestrator can select different models for different tasks based on complexity, cost, and latency requirements.

The orchestrator handles the coordination between agents, manages context windows across multi-step processes, and enforces the governance rules that ensure agents don't take unauthorized actions.

Three Operational Levels

Agents operate at three distinct levels, each with a different scope of responsibility:

01

Process-Level Agents

These orchestrate end-to-end workflows that span multiple modules. For example, a process-level agent might manage the entire procure-to-pay cycle — from requisition approval through purchase order creation, goods receipt, invoice matching, and payment execution. They coordinate the work of multiple task-level agents below them.

02

Supervisor-Level Agents

These manage specific initiatives or projects and coordinate other agents. A supervisor agent might oversee a plant maintenance shutdown — scheduling work orders, coordinating technician availability, tracking parts procurement, and reporting progress to stakeholders. They have the authority to delegate tasks and manage dependencies.

03

Task-Level Agents

These handle detailed, granular actions within a specific module or function. A task-level agent might review a single invoice against its purchase order and goods receipt, flag discrepancies, and prepare the match for approval. They are the workhorses that process-level and supervisor agents call upon to get individual steps done.

Industry Process Catalogs & Value Maps

What makes these agents different from generic AI assistants is their grounding in Infor's Industry Process Catalogs. These are curated, structured representations of how specific industries operate — covering processes, KPIs, compliance requirements, and best practices across eight major industry verticals and their micro-verticals.

When a Project Agent in aerospace manufacturing flags a delayed project, it doesn't just look at dates. Because it's built on Infor's A&D micro-vertical process catalog, it carries contextual awareness of industry-specific compliance factors, quality standards, and the cascading impact on program milestones — understanding the domain in ways a generic AI agent would not.

🔐 Governance & Control

Every agent operates under strict governance rules set through the Infor Industry Cloud Platform. Administrators define what agents can automate, what requires human approval, and how they scale across the organization. Full audit trails are maintained for transparency and compliance.

Industry-Specific Agents by Vertical

Infor announced agent availability across eight industry verticals, each with role-specific agents tailored to that industry's operational patterns. Here's the breakdown of what's available (initially in limited release, with broader availability planned for 2026).

IndustryRole-Based Agents
Aerospace & DefenseProgram Management, Project Performance, Contracts, Quality Control
AutomotiveBuyer, Inventory, Shipment, Project Cost
Industrial ManufacturingProject, Project Schedule, Inventory, Shipment
Food & BeverageDistribution, Purchasing, Inventory, Customer Service
FashionSupplier, Inventory, Purchasing, Sales
DistributionDistribution, Accounts Receivable, Maintenance, Project
HealthcareSourcing, Contract, General Ledger, Scheduling
Public SectorRequisition Admin, Payables, Cash Operations, Time & Attendance

Each of these agents is pre-configured with the domain knowledge, process flows, and compliance awareness specific to its industry and role. An Inventory Agent in food and beverage understands shelf-life constraints, lot traceability, and FDA compliance. The same functional role in automotive understands JIT delivery windows, supplier scorecards, and OEM quality standards.

What Agents Actually Do: Real-World Scenarios

Abstract descriptions of AI agents are everywhere. Here's what these agents actually do in practice, with concrete examples of the tasks they handle.

01

Project Agent — Manufacturing

Monitors active production projects for schedule slippage and cost overruns. When a project falls behind, the agent analyzes root causes — material delays, capacity constraints, rework — and generates an impact assessment. It flags projects at risk of margin erosion before they become problems, allowing project managers to intervene early rather than discovering issues at month-end close.

02

Workorder Agent — Distribution

Analyzes predicted heavy equipment failures and schedules the appropriate technician. By combining maintenance history, sensor data, and technician availability, the agent proposes optimal maintenance windows, creates work orders, and reserves parts — helping organizations shift from reactive to predictive maintenance.

03

Inventory Agent — Healthcare

Manages inventory levels across multiple hospital locations, cross-referencing purchase orders with consumption patterns and expiration dates. It identifies items approaching expiry that could be transferred to higher-consumption locations, flags unusual usage spikes that might indicate waste or theft, and ensures critical supplies never fall below safety stock levels.

04

Payables Agent — Finance

Reviews outgoing invoices, prioritizes payments, and highlights risks to cash flow. It can flag discrepancies, identify early-payment discount opportunities, and prepare payment batches for approval — handling the routine analytical work that typically consumes hours of AP staff time daily.

The GenAI Assistant: Where Agents Live

All Industry AI Agents are accessed through the Infor GenAI Assistant — the conversational interface embedded within Infor CloudSuite. The October 2025 release (version 2025.10) significantly expanded the GenAI Assistant's capabilities beyond simple Q&A into true agent orchestration.

Users interact with agents through natural language. You don't need to know which agent to invoke or how to structure a request. The GenAI Assistant routes your request to the appropriate agent based on your role, the context of your conversation, and the task at hand.

Key GenAI Embedded Experiences (2025.10)

Alongside the agent framework, the October 2025 release delivered new GenAI embedded experiences across multiple CloudSuite applications:

CloudSuiteNew GenAI Capabilities
DistributionExtension code reviews, automated dunning letters, notes summarization for customer/order/vendor data
CloudSuite IndustrialMaterial review report (MRR) generation, corrective action request (CAR) automation, invoice-based dunning
Infor LNAssisted text authoring — suggests, updates, and translates item sales data text from item attributes
Public SectorRich text authoring across CloudSuite modules
Birst AnalyticsDashboard insight summaries, AI-assisted visualization editor
EPMFinancial consolidation summaries, capital project reporting
GRCIncident reporting automation, EU AI Act compliance validation
Commerce (Rhythm)Product list upload with automatic item recognition and cart population

For Infor LN users, the most immediately relevant feature is assisted text authoring for item sales data. CloudSuite Industrial users get additional capabilities including MRR and CAR automation. As the agent framework matures, both platforms will benefit from agent-driven workflow automation across manufacturing and financial modules.

The Agent Factory: Building Custom Agents

Infor isn't limiting organizations to pre-built agents. The Infor GenAI Agent Factory allows customers to create custom agents tailored to their specific processes, using Infor's tools and integrations as building blocks.

This matters because every organization has unique workflows that don't map perfectly to standard templates. A discrete manufacturer with a complex configure-to-order process might need an agent that combines project management, engineering change control, and customer-specific pricing logic — something no pre-built agent covers out of the box.

The Agent Factory provides the framework, the guardrails, and the integration connectors. Your team provides the process knowledge and the business rules. The result is a custom agent that operates within the same governance structure as Infor's pre-built agents — with full audit trails, human approval gates, and role-based access control.

🏭 Agent Factory Availability

The Agent Factory is part of Infor's broader AI platform roadmap. Initial capabilities are available for early adopters, with expanded tooling expected through 2026. Organizations interested in custom agents should engage with Infor's AI advisory team to assess readiness and define use cases.

What This Means for Infor LN Users

If you're running Infor LN — whether on-premises on 10.8 or in CloudSuite — here's the practical impact of Industry AI Agents on your ERP environment.

Immediate Benefits (Available Now)

The GenAI embedded experiences in the 2025.10 release are available across Infor's discrete manufacturing products. Infor LN users get assisted text authoring for item sales data — the system suggests, updates, and translates text from item attributes. CloudSuite Industrial users additionally get automated generation of MRRs and CARs, plus invoice-based dunning letter automation. These are productivity tools that reduce manual typing and standardize document quality.

Near-Term Benefits (2026 Rollout)

As Industry AI Agents move from limited release to general availability through 2026, LN users in manufacturing verticals will gain access to Project Agents, Inventory Agents, and Shipment Agents that work directly with LN's production, warehousing, and logistics modules. These agents will be able to monitor shop floor status, flag material shortages, optimize production schedules, and coordinate cross-plant transfers — all through natural language interaction in the GenAI Assistant.

The Cloud Migration Angle

It's worth noting that full agent capabilities require CloudSuite deployment. On-premises LN 10.8 users will get some GenAI embedded features, but the full agent orchestration — including the Agentic Orchestrator, multi-agent coordination, and Agent Factory — is a cloud-native capability. Infor simultaneously launched Infor Leap, a fast-track cloud migration program, alongside the AI Agents announcement — a clear signal that these capabilities are designed to accelerate cloud adoption.

☁️ Cloud vs On-Premises

If your organization is evaluating the move from on-premises LN to CloudSuite Industrial, the AI Agents announcement adds significant weight to the business case. The productivity gains from agent-driven automation are substantial — but they require cloud deployment to fully realize. Factor this into your cloud migration timeline and ROI analysis.

How Infor's Approach Compares

Every major ERP vendor has announced AI agents in some form. Here's how Infor's approach differs from the broader market.

DimensionInfor's ApproachTypical Industry Approach
Industry ContextPre-built with micro-vertical process knowledge via Industry Process CatalogsGeneric agents that need to be trained on industry specifics
Agent LevelsThree-tier (process, supervisor, task) with inter-agent coordinationUsually single-level task automation
LLM StrategyMulti-model via Amazon Bedrock — selects optimal model per taskTypically locked to a single model provider
Data GroundingReal-time data from Infor and non-Infor systems via Data LakeOften limited to vendor's own data
CustomizationAgent Factory for customer-built agents within governance frameworkLimited to prompt customization or low-code flows
GovernanceEnterprise-grade with human-in-the-loop at defined decision pointsVaries — often bolted on after launch

Getting Ready: What to Do Now

Even though full agent availability is rolling out through 2026, there are practical steps ERP teams can take today to prepare.

01

Assess Your Cloud Readiness

Full agent capabilities require CloudSuite. If you're on-premises, start evaluating the migration path now. The Infor Leap program offers accelerated migration options — explore whether your organization qualifies and what the timeline looks like.

02

Identify High-Value Automation Candidates

Map your most time-consuming, repetitive operational processes. Invoice matching, inventory reconciliation, project status reporting, maintenance scheduling — these are the workflows where agents will deliver the fastest ROI. Document the current manual effort so you can measure improvement.

03

Clean Up Your Data

AI agents are only as good as the data they work with. Review your master data quality — item masters, supplier records, customer accounts, cost centers. Fix duplicates, fill in missing fields, and standardize naming conventions. Good data hygiene today means effective agents tomorrow.

04

Enable GenAI Embedded Experiences

If you're on CloudSuite, activate the GenAI embedded features available today. Get your team comfortable with AI-assisted workflows before the full agent capabilities arrive. This builds familiarity and trust incrementally rather than asking for a big-bang adoption later.

05

Define Governance Policies

Decide now which processes you're comfortable automating, which require human approval, and what your escalation paths look like. The governance framework is only useful if you've thought through the rules before deploying agents. Include your compliance, finance, and operations leads in this conversation.

The Bottom Line

Infor's October 2025 release of Industry AI Agents represents a meaningful step forward for enterprise ERP automation. By combining deep industry process knowledge with multi-level agent orchestration and flexible LLM infrastructure, Infor is making a credible case that the future of ERP isn't about doing the same tasks faster — it's about delegating routine operational work to AI agents that understand your industry, your role, and your data.

For Infor LN users, this is both an opportunity and a call to action. The embedded GenAI features are available now. The full agent capabilities are coming through 2026. The organizations that prepare their data, their processes, and their people today will be the ones that capture the most value when these agents go live.

📚 Continue Learning

Want to understand how AI and automation fit into your Infor LN environment? Explore the FullonBaan Training Platform for Infor LN courses, or visit fullonbaan.com for consulting and advisory services on CloudSuite migration and AI readiness.