What Is Bshell?
Also known as: Baan shell, bshell process, LN bshell
Definition
The bshell is the Baan and Infor LN virtual machine. It loads compiled pseudo-code for sessions, scripts and reports, executes it, and translates the application's database calls into native SQL through porting set drivers - one bshell process typically serves one user session.
Bshell Explained
When a user starts a session, the environment starts a bshell process to run it. That process reads the compiled objects for the session and its libraries, executes the pseudo-code, manages the form and data flow, and issues database calls that the porting set drivers convert into native SQL. The application code itself never sees the database directly, which is what makes the same compiled objects run unchanged on completely different platforms.
Because bshells are processes, they are also the unit of capacity planning. Interactive users consume one, batch jobs and the job daemon consume more, and application servers are sized on the expected concurrent bshell count multiplied by the memory footprint each one carries. Environments that feel slow under load are frequently constrained by memory pressure and process count on the application tier rather than by the database.
The bshell is also the natural place to look when diagnosing behavior. Runtime tracing and debugging options attach at this level, letting you see which objects are executed, which SQL is generated and where time is spent. Long-running sessions that generate unexpectedly large numbers of database round trips almost always show up here first, and the fix is usually application logic rather than database tuning.
Configuration is driven by the Baan software environment variables and configuration files, which tell the bshell where to find compiled objects, temporary space, the data dictionary and the database drivers. Misconfiguration produces characteristic failures: sessions that cannot start at all, temporary file growth that fills a filesystem, or environments that silently pick up objects from an unexpected VRC because the software layering was resolved differently than intended.
Why It Matters
- Concurrent bshell count and memory per process determine application server sizing more than raw user licence counts do.
- Bshell-level tracing is the fastest route from a slow session complaint to the specific SQL or loop causing it.
- Temporary directory sizing and cleanup for bshells is a routine cause of outages when a filesystem fills unexpectedly.
- The bshell's software layering resolution explains why an environment can run code you did not think was active.
In Practice
Orphaned bshell processes are a familiar operational nuisance. Clients that disconnect ungracefully can leave processes holding memory and, worse, database locks. Monitor for bshells with no corresponding client connection and long idle times, and confirm before killing them that no batch job is legitimately running quietly in the background.
Frequently Asked Questions
How many bshell processes does a user consume?
In the classic model, roughly one per active session, so a user running one screen consumes one bshell. Users who open several sessions, plus batch jobs and the job daemon, add more. Sizing an application server therefore means estimating peak concurrent bshells rather than named users, and multiplying by the memory each process typically occupies in your environment.
Is the bshell the same thing as the porting set?
No, but they are closely related. The bshell is the runtime process that executes application pseudo-code. The porting set is the platform-specific delivery package that contains the bshell binary along with the database drivers and utilities for a given operating system and database combination. You upgrade the porting set to get a newer bshell build.
Related Terms
Porting Set
A porting set is the platform-specific layer of Baan and Infor LN that adapts the application to a given operating system and database. It ships the bshell executable, the database drivers and system utilities, and is versioned and patched independently of the application software.
Baan 3GL and 4GL
Baan 3GL and 4GL are the two programming languages of Baan and Infor LN. 4GL is the event-driven script attached to a session and its form fields, while 3GL is the C-like language used for libraries, DAL objects and standalone programs.
Baan Session
A Baan session is the atomic executable unit of Baan and Infor LN - one screen, report or batch program - identified by a coded name such as tdsls4101m000, where the letters give the package and module and the digits give the session number.
Go Deeper
Infor LN Upgrade Cost Estimator
Estimate the services cost and timeline for an Infor LN version upgrade or CloudSuite migration based on your users, sites, customizations, and integrations.
Baan 4GL Modernization: Strategies for Legacy Code
Baan 4GL modernization strategies: inventory legacy sessions, retire dead code, convert customizations to LN extensions, and de-risk your Baan installed base.
Infor LN to CloudSuite: Migration Playbook
Infor LN to CloudSuite migration playbook: Baan and LN version paths, extension conversion, ION integration rework, timelines, and defense compliance steps.
Working with Bshell in a live environment? Our engineers do this every day - and our AI agents automate most of it.
Try it here, free
Infor LN Bshell Application Server Memory and CPU Sizing Calculator
Estimate peak bshell count, RAM and CPU cores for an LN 10.x application server from your own measured bshell memory and concurrency.
New to Infor LN and Baan? Start with the Infor LN and Baan guide and toolkit, or plan with Training Path Builder, Upgrade Path Planner, ERP Table and Field Explorer.
Keep exploring
Free tools
- Infor LN Bshell Application Server Memory and CPU Sizing CalculatorEstimate peak bshell count, RAM and CPU cores for an LN 10.x application server from your own measured bshell memory and concurrency.
- Infor LN Enterprise Server Error Codes and Log Files ReferenceLook up bshell and database driver error numbers, what they mean, what to check first and which log file to read.
- Baan IV and Infor LN BSE Command-Line Tools ReferenceWhat each program and file under $BSE does, with a usage example and Baan IV versus LN notes: bshell, database tools, compiler, shared memory, IPC, config files and clients.
ERP fixes and how-tos
- Infor LN bshell Process Stuck at 100% CPU: How to Diagnose and Fix ItInfor LN bshell pegged at 100% CPU blocks sessions from responding. Here are the real causes, how to trace the hung process on the app server, and the fix.
- Infor LN Process Variables: Meaning, Setting and InspectingWhat process variables and bshell environment variables mean in Infor LN, how developers read and set them, and where to look when behaviour differs per user.
- Baan Error 10054 (and Error 206): What It Means and How to Fix ItBaan error 10054 is the Windows socket error connection reset by peer between the client and bshell. Learn the network, bshell and server causes plus error 206.
Guides
- Infor LN Report Development: Complete GuideCreate and customize Infor LN reports using BShell report sessions, Crystal Reports integration, and Infor Document Output Management for BAAN/LN systems.
- Infor LN BShell Programming: Developer Fundamentals GuideMaster Infor LN BShell scripting with this developer guide covering 4GL syntax, database operations, session hooks, and debugging techniques for BAAN/LN ERP.
- Infor LN Performance Tuning GuideTune Infor LN for optimal performance. Database optimization, session server tuning, batch processing acceleration, and bottleneck diagnosis.
Integrations
- How to add AI agents to Baan IV and Baan VHow to add AI agents to Baan IV or Baan V: tool layer over read-only database access and AFS, human approval on writes, and an on-prem model. A practical guide.
- How to use ChatGPT with Baan IV and Baan VUsing ChatGPT with Baan IV or Baan V: exports versus live access, custom GPT actions, enterprise data controls, and when a private on-prem model is the safer choice.