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.