Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>OpenEdge ABL - Project ManagerNew to Visual Studio Code? Get it now.
OpenEdge ABL - Project Manager

OpenEdge ABL - Project Manager

Samuel Etterlen

|
82 installs
| (1) | Free
A VS Code extension for managing OpenEdge/ABL project databases, PROPATH, and settings
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

OpenEdge ABL - Project Manager

A comprehensive VS Code extension for managing OpenEdge/ABL project configurations directly from the editor. This extension provides a centralized properties panel where you can:

  • Manage workspace-level databases - Define available databases once at the workspace level, share them across all projects
  • Select databases per project - Toggle which databases each project uses, configure client-specific parameters
  • Monitor ABL status - View Language Server health by project and the state of every enabled database, then start, restart, stop, inspect logs, or launch PROMON
  • Use the bottom-panel status view - Monitor and operate databases beside VS Code's Output and Terminal panels without opening Properties
  • Open multiple properties panels - View and edit settings for multiple projects simultaneously
  • Deferred saving with confirmation - Changes are applied locally and only saved to disk when you click "Save"
  • Autostart databases when VS Code opens and automatically stop them when it closes
  • Configure the PROPATH with drag-and-drop reordering and file watcher on openedge-project.json for external changes
  • Edit project settings from openedge-project.json including version, charset, working directory, and runtime options
  • Generate schema files automatically by dumping database definitions to .df files
  • Sync with openedge-project.json to keep database settings in sync with your ABL Language Server configuration

The extension integrates seamlessly with the OpenEdge ABL extension and uses your configured DLC runtimes to start/stop databases and perform schema dumps.

Requirements

  • Visual Studio Code 1.85.0 or higher
  • OpenEdge ABL extension with runtimes configured in abl.configuration.runtimes
  • Works with both single folders and multi-root workspaces. For multi-root setups, a .code-workspace file is recommended so shared database definitions are stored next to it. See Multi-root Workspaces.
  • OpenEdge installation

Workspace Example

Here's an example of a multi-root workspace following a Maven-like folder layout:

Workspace Example

Features

Database Management (Two-Level Architecture)

The extension uses a workspace/project split for database management:

Workspace Databases Tab

Manage available databases at the workspace level (stored in a configurable location, default: .vscode/openedge-workspace-databases.json):

  • Server-side settings: Database path, server, port, startup parameters
  • DLC runtime selection: Choose which OpenEdge runtime to use
  • Autostart configuration: Databases start when VS Code opens
  • Schema file settings: Path for automatic schema dump
  • Configurable file location: Move the file into a project folder for version control (see Extension Settings)

Workspace Database Settings Form:

Workspace Database Settings Form

Project Databases Tab

Select which databases to use in each project (stored in openedge-databases.json per project):

  • Toggle selection: Enable/disable databases for the project with checkbox
  • Client parameters: Connection-specific parameters per project
  • Logical name and aliases: Configure how the database appears to ABL code

Project Databases View

Client Connection Settings Form:

Database Client Settings Form

This architecture prevents conflicts when multiple projects share the same databases - server-side settings are defined once, while each project only configures its client connection parameters.

ABL Status Tab

Database Client Settings Form

The ABL Status tab lists every workspace database enabled by at least one project once, in a shared Databases table with a Used by column naming those projects. Below it, each OpenEdge project shows its databases as status chips; clicking a chip highlights the matching row in the table. The tab shows:

  • The matching ABL Language Server project information beside each project's database chips: name, initialized state, worker count, source tasks, and r-code tasks
  • A project-specific Language Server state: initializing while the project is not initialized, busy while source or r-code tasks are pending, ready otherwise, or unavailable when status cannot be retrieved
  • The live database server state (running, stopped, or unknown), checked with proutil -C holder
  • Server, port, database path, and per-database operational controls
  • Start, restart, stop, open logfile, and launch PROMON actions

Status is refreshed when the tab is opened, becomes visible, when Refresh is clicked, and after lifecycle actions. Language Server data refreshes automatically every 10 seconds by default; configure openedge-abl-properties.languageServerRefreshThreshold to change the interval. A shared database is checked once per full refresh and the result is reused across projects. Language Server request failures and timeouts are displayed in each project section without hiding database status. On narrow panels, the Language Server information moves below the database chips.

The logfile action opens the conventional .lg file beside the database (for example, sports.db → sports.lg). PROMON opens in a new integrated terminal using the database's configured DLC and is available only while the database is running.

Bottom-Panel ABL Status View

The same operational status is also available as a standalone ABL Status view in VS Code's bottom Panel, alongside Output and Terminal. This view works independently of the Properties panel and reloads saved workspace/project database configuration when opened, refreshed, or after a lifecycle action.

Use the bottom-panel view for ongoing monitoring and operations. Use the ABL Status tab in Properties when reviewing status while editing project configuration.

Automatic Database Startup

  • Workspaces containing openedge-project.json activate the extension early; onStartupFinished remains as a fallback
  • Databases configured with "Autostart" are automatically started when VS Code opens
  • Checks if each database is already running and confirms startup with proutil -C holder
  • Restarts the ABL Language Server after at least one autostart database becomes ready, so it can reconnect if it initialized first
  • Automatic shutdown when VS Code closes: Databases are gracefully stopped using _mprshut -by
  • Uses workspace-level settings to avoid restart conflicts between projects

General Settings Tab

  • Project Configuration: Edit openedge-project.json settings directly
    • Project Name and Version
    • OpenEdge Version (dropdown from configured runtimes)
    • Graphical Mode toggle (prowin vs _progres)
    • Charset configuration
    • Working Directory and Number of Threads
    • Extra Parameters for runtime

General Settings View

Propath Configuration Tab

  • BuildPath Management: View and edit buildPath entries from openedge-project.json
    • Grid view with Type, Path, Build, and Xref columns
    • Add, Edit, and Delete buildPath entries
    • Reorder entries using Up/Down buttons
    • File watcher detects external changes with reload prompt

Propath View

BuildPath Entry Form:

BuildPath Entry Form

DLC Runtime Integration

  • DLC dropdown populated from abl.configuration.runtimes settings
  • Automatically sets up environment variables (DLC, PROPATH, PATH) for database operations
  • ABL Language Server automatically restarts after saving changes

Database Connection Sync

  • Enabled project databases sync with dbConnections in openedge-project.json
  • Combines workspace database path/server with project client parameters
  • Supports aliases array and schema file per database

Automatic Schema Dump

  • Automatically dump database schema to .df files when configured
  • Schema files are generated at extension startup for databases with schemaFile defined
  • Schema is re-dumped when database settings are added or updated
  • Uses prodict/dump_df.p via a wrapper procedure for reliable parameter handling
  • Generate Schema Flag: Control automatic schema generation per database
  • Ensures database is running before attempting schema dump

Database Status Bar

  • Shows DB running/total in the status bar; click it to open the ABL Status view
  • Turns yellow when an autostart database is not running and red when a database stopped without the extension stopping it (a notification offers to open the log or start it again)
  • The tooltip lists every database and the active database profile
  • Polls every 30 seconds by default; configure or disable it with openedge-abl-properties.statusBarRefreshInterval

Database Tasks

The extension provides openedge-db tasks (start, stop, restart, backup) for every workspace database. Use them in tasks.json and as preLaunchTask in launch.json:

{
  "version": "2.0.0",
  "tasks": [
    { "type": "openedge-db", "action": "start", "database": "sports", "label": "start sports" }
  ]
}

Database Logs

  • New errors in a database .lg file (fatal messages, abnormal shutdowns, lock table overflow, full disk...) raise a notification; disable with openedge-abl-properties.logMonitoring
  • .lg files open with syntax highlighting for timestamps, severities and message numbers
  • ABL: Follow Database Log (also from the notification and the ⋯ database actions) opens the Database Log viewer, modelled on the oemanagergui Logfiles Analyzer:
    • Table with line number, timestamp, PID, TID, severity, process, message number and message; fatal and critical lines in red, warnings in orange
    • Follow mode keeps the newest entries in view; when scrolled away, a badge counts new entries. Only appended bytes are read, and the file is reloaded when it is truncated or recreated
    • Filters: level (errors, warnings & errors), process type, PID, message number and free text (plain or regex). Click a message number to filter by it
    • Click a row for its details (filter by its message number or PID); double-click or Open in Editor opens the .lg at that line
    • Highlights: rules with match text or regex, background and text colors, matched text or whole line, ordered by priority (same dialog as oemanagergui)
    • Columns (show, hide, reorder, resize), Compact and Font; rules and layout are remembered
    • Switch databases from the toolbar; logs over 50 MB load their last 50 MB with exact line numbers

Database Maintenance

Open the ⋯ button of a database in the ABL Status view, or run ABL: Database Actions...:

Action Tool Database state
Backup probkup (to openedge-abl-properties.backupDirectory) online or offline
Restore prorest in a terminal offline (offers to stop it)
Connected users / disconnect proshut -C list / -C disconnect online
Analyze proutil -C dbanalys, shown as a sortable table online or offline
Check indexes proutil -C idxcheck all in a terminal online or offline
Rebuild indexes proutil -C idxbuild all in a terminal offline
Truncate BI proutil -C truncate bi in a terminal offline

New Database Wizard

ABL: Create New Database... runs prodb from the empty database, sports2000 or an existing database, optionally loads a .df file, and registers the result in the workspace databases file.

Incremental .df

ABL: Generate Incremental .df... uses prodict/dump_inc.p to create a delta .df:

  • Upgrade a database to a .df file: statements that bring the database to the schema in the .df
  • Capture database changes since a .df file: statements that bring the .df schema to the database
  • Compare two databases: statements that upgrade the second database to the first

A .df file is loaded into a temporary empty database for the comparison, which is deleted afterwards.

Database Profiles

ABL: Switch Database Profile... saves and restores named sets of database paths, servers, ports and startup parameters (e.g. dev, test, prod-copy). Switching saves the current settings into the active profile, applies the new one, updates dbConnections in every project and offers to restart the ABL Language Server. Profiles are stored in the workspace databases file.

.pf Export

ABL: Export Database Connections as .pf File (Command Palette or project folder context menu) writes a .pf file with -db, -ld, -H, -S and client parameters for every enabled project database, using absolute paths.

PROPATH Tools

  • ABL: Resolve File in PROPATH (ABL file context menu, or type a path or class name such as com.acme.Customer) lists every PROPATH entry containing the file; the first one is used, the others are shadowed
  • ABL: Find Shadowed Files in PROPATH scans all PROPATH directories for .p, .w, .cls, .i and .r files present more than once
  • The Propath tab marks entries that do not exist (red) or are empty (yellow)
  • Procedure libraries (.pl) are not searched

Getting Started Walkthrough

Help → Welcome → Walkthroughs → Get Started with OpenEdge ABL - Project Manager guides through runtimes, databases, status, tasks and PROPATH tools.

Context Menu Integration

  • Explorer Context Menu: Right-click on project folders to access "ABL: Open OpenEdge Properties" (appears at bottom of menu)
  • Command Palette: Use ABL: Open OpenEdge Properties - shows project picker when multiple projects exist
  • View Title Button: Quick access button in the Explorer view title bar (single-folder workspaces)
  • Smart Visibility: Menu items only appear for projects containing openedge-project.json

Output Logging

  • Dedicated "OpenEdge ABL - Project Manager" output channel
  • Debug Mode: Enable verbose logging via openedge-abl-properties.debugMode setting
    • When disabled (default): Only essential messages (errors, start/stop confirmations)
    • When enabled: Detailed logging of all operations for troubleshooting
  • Helpful for troubleshooting startup and connection issues

Extension Settings

This extension contributes the following settings:

Setting Default Description
openedge-abl-properties.debugMode false Enable verbose logging in the output channel
openedge-abl-properties.languageServerRefreshThreshold 10 Refresh interval in seconds for ABL Status Language Server data. Minimum: 1.
openedge-abl-properties.statusBarRefreshInterval 30 Seconds between database status checks for the status bar item. 0 hides the item.
openedge-abl-properties.logMonitoring true Notify when new errors appear in database .lg files
openedge-abl-properties.backupDirectory .vscode/backups Directory for database backups, relative to the workspace root
openedge-abl-properties.workspaceDatabasesFile .vscode/openedge-workspace-databases.json Path to the workspace databases configuration file. Relative paths are resolved from the workspace root (directory of the active .code-workspace file, when available).

Sharing Database Configuration via Version Control

By default, the workspace databases file is stored in .vscode/openedge-workspace-databases.json, which is typically not part of any project and cannot be committed to SCM.

To share database configuration with your team:

  1. Open VS Code settings (File → Preferences → Settings)
  2. Search for workspaceDatabasesFile
  3. Set it to a path inside your main project, e.g., my-main-project/openedge-workspace-databases.json
  4. The file will be created in that location and can be committed to version control
  5. Other developers will automatically use the same database settings after pulling the changes

Example in .code-workspace file:

{
  "folders": [
    { "path": "my-main-project" },
    { "path": "my-other-project" }
  ],
  "settings": {
    "openedge-abl-properties.workspaceDatabasesFile": "my-main-project/openedge-workspace-databases.json"
  }
}

Configuration Files

Workspace Level: openedge-workspace-databases.json

By default, this file is stored in .vscode/openedge-workspace-databases.json relative to your workspace root. In multi-root setups, this is the directory of the active .code-workspace file (when available). You can customize this location using the openedge-abl-properties.workspaceDatabasesFile setting to include it in version control (see Extension Settings).

{
  "databases": [
    {
      "name": "sports",
      "path": "../databases/sports.db",
      "server": "",
      "port": "",
      "parameters": "-n 10",
      "autostart": true,
      "dlc": "12.8",
      "schemaFile": ".vscode/.schema/sports.df",
      "generateSchema": true
    }
  ]
}

Project Level: openedge-databases.json

{
  "databases": [
    {
      "name": "sports",
      "enabled": true,
      "logicalName": "sports",
      "aliases": ["sp"],
      "clientParameters": "-Mm 8192"
    }
  ]
}

Installation

  1. Install the extension from the VS Code Marketplace (or install the .vsix file manually)
  2. Configure your OpenEdge runtimes in VS Code settings:
{
  "abl.configuration.runtimes": [
    {
      "name": "12.8",
      "path": "C:/Progress/OpenEdge128"
    },
    {
      "name": "12.2",
      "path": "C:/Progress/OpenEdge122"
    }
  ]
}

Usage

Opening the Properties Panel

  1. Open a workspace containing an ABL project with an openedge-project.json file
  2. Right-click on the project folder in the Explorer → Select "OpenEdge Properties"

Managing Databases

  1. In the Properties panel, go to the Databases tab
  2. Click the + button to add a new database
  3. Fill in the database details:
    • Name: Display name for the database
    • Path: Full path to the database file (use browse icon to select)
    • Logical Name: Logical name used in ABL code
    • Server: Hostname for network access (optional)
    • Port: Port number for network access (optional)
    • Parameters: Additional _mprosrv parameters (optional)
    • Autostart: Check to start database automatically when VS Code opens
    • DLC: Select the OpenEdge runtime to use
  4. Click Save to add the database
  5. Click OK to save all changes to openedge-databases.json

Restarting Databases

  • Click the restart icon (circular arrows) to restart all configured databases
  • Databases are automatically restarted when their settings are modified

Configuration Files

openedge-project.json

This file must exist in the project root for the extension to recognize the folder as an OpenEdge project.

openedge-databases.json

Created by this extension to store database configurations:

{
  "databases": [
    {
      "name": "Sports",
      "path": "C:/databases/sports.db",
      "logicalName": "sports",
      "server": "localhost",
      "port": "3000",
      "parameters": "-B 1000 -spin 10000",
      "autostart": true,
      "dlc": "12.8"
    }
  ]
}

OpenEdge Commands Used

Command Purpose
_mprosrv Start database server
_mproshut -by Stop database server
proutil -C holder Check database status
prodict/dump_df.p Dump database schema to .df file
probkup / prorest Back up and restore databases
prodb Create databases
prodict/load_df.p Load a .df file into a new or temporary database
prodict/dump_inc.p Generate incremental .df files
proshut -C list / -C disconnect List and disconnect users
proutil -C dbanalys / idxcheck / idxbuild / truncate bi Database maintenance

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests on the GitHub repository.

License

This extension is licensed under the MIT License.

Release Notes

See CHANGELOG.md for detailed release notes.

Development

Building

npm install
npm run compile

Running in Development

  1. Open this folder in VS Code
  2. Press F5 to launch a new VS Code window with the extension loaded
  3. Open a folder containing openedge-project.json
  4. Right-click on the folder and select "Properties"

Linting

npm run lint

Testing

npm run test
npm run test:ui

Playwright UI tests require a local browser install:

npx playwright install chromium

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft