IBM Project4i
Logical Project Management for IBM i
Organize source members and IFS stream files from multiple libraries into cohesive, team-friendly project groups — directly inside VS Code.
Why IBM Project4i?
Traditional IBM i development ties application logic to physical library structures.
IBM Project4i introduces a logical project layer on top of Code for IBM i, letting you:
- Group related sources from any library into a single project view.
- Track the original location of each member (audit trail).
- Run customizable CL commands for checkout, deploy, and release.
- Attach documentation (URLs, PDF, Word, Excel) directly to the project.
- Import / Export project definitions as JSON to share with your team.
Think of it as a lightweight, IBM i–native SCM bridge — built for developers who live in VS Code.
Table of Contents
Features
| Area |
Capability |
| Project Tree View |
Dedicated Activity Bar panel with rich icons — projects (purple), members (color-coded by type), stream files (yellow), documentation (blue). |
| Hybrid Content |
Mix native source members (QSYS) and IFS stream files in the same project. |
| Documentation Hub |
Virtual "📚 Documentation" folder per project — add external URLs and local files (PDF, Word, Excel). |
| Add to Project |
Smart checkout: copies a member from a source library to the project's workspace library, with conflict detection. |
| Remove from Project |
Logical removal with optional physical delete (RMVM). |
| Promote Member |
Deploy a single member using a fully customizable CL command template. |
| Promote All Members |
Batch deploy all project members sequentially, with Run / Skip / Run All / Cancel All controls. |
| Move Member |
Atomic move of a member between two projects, with pre-flight validation. |
| Run Action |
Proxy to Code for IBM i's action system — compile, bind, etc. directly from the project tree. |
| Run Project Action |
Execute project-specific custom CL actions with variable substitution. |
| CL Interactive Prompting |
Prefix any command with ? to open a visual CL parameter form before execution. |
| Import / Export |
Share project definitions via JSON files. |
| VS Code Theming |
Full support for Dark and Light themes with custom SVG icons. |
Getting Started
Prerequisites
| Requirement |
Version |
| Visual Studio Code |
≥ 1.85.0 |
| Code for IBM i |
Latest |
| Active IBM i connection |
— |
Quick Start (5 minutes)
- Install the extension from the VS Code Marketplace.
- Connect to your IBM i system via Code for IBM i.
- Create a project — click the
+ button in the IBM Project4i Activity Bar.
- Add a member — right-click a source member in the Object Browser → "Add to Project".
- Configure deploy — open project Properties (⚙️) and set the Promote Command template.
That's it. You now have a fully functioning project workspace.
Project Management
- Rename: Right-click on a project → "Rename Project"
- Delete: Right-click on a project → "Delete Project"
- Remove Member: Right-click on a member → "Remove from Project"
Import/Export
- Export: Click the menu (⋯) in the view title → "Export Projects to JSON"
- Import: Click the menu (⋯) in the view title → "Import Projects from JSON"
Extension Commands
| Command |
Description |
IBM Project4i: Create Project |
Create a new project |
IBM Project4i: Rename Project |
Rename an existing project |
IBM Project4i: Delete Project |
Delete a project |
IBM Project4i: Properties |
Open project properties / promote configuration |
IBM Project4i: Add to Project |
Add a source member (Object Browser) or IFS stream file (IFS Browser) to a project |
IBM Project4i: Remove from Project |
Remove a member or stream file from a project |
IBM Project4i: Open Member |
Open a source member in the editor |
IBM Project4i: Open Stream File |
Open an IFS stream file in the editor |
IBM Project4i: Move to Project... |
Move a member from the current project to another |
IBM Project4i: Promote Member |
Deploy a single member using the project's promote command template |
IBM Project4i: Promote All Members |
Batch deploy all project members sequentially |
IBM Project4i: Run Action |
Proxy to Code for IBM i's action system (compile, bind, etc.) |
IBM Project4i: Run Project Action... |
Execute a project-specific custom CL action with variable substitution |
IBM Project4i: Add Documentation... |
Add a URL or local file to the project's Documentation folder |
IBM Project4i: Edit... |
Edit a documentation entry |
IBM Project4i: Remove |
Remove a documentation entry |
IBM Project4i: Open |
Open a documentation entry |
IBM Project4i: Manage Default Settings |
Configure global defaults applied to all new projects |
IBM Project4i: Export Projects to JSON |
Export all projects to a JSON file |
IBM Project4i: Import Projects from JSON |
Import projects from a JSON file |
IBM Project4i: Refresh Projects |
Refresh the projects view |
Project Structure
Projects are stored in VS Code's global state and persist across sessions. Each project contains:
| Field |
Description |
| Name |
Display name of the project |
| Description |
Optional description |
| Target Library |
IBM i library where members are physically copied during "Add to Project" |
| Members |
List of source members with library, source file, name, extension, add date, and original location |
| Stream Files |
IFS stream file paths referenced by the project (no physical copy) |
| Documentation |
Attached URLs and local file references (PDF, Word, Excel, etc.) |
| Promote Config |
Test/production library settings, promote command template, checkout/release command overrides, ticket reason, developer info |
| Custom Actions |
Project-specific CL command templates with variable substitution |
| Created / Modified dates |
ISO timestamps for auditing |
Extension Settings
Settings are under project4i.* in VS Code settings (File → Preferences → Settings → IBM Project4i).
| Setting |
Description |
project4i.defaults.testLibraryObject |
Default test object library for new projects |
project4i.defaults.testLibrarySource |
Default test source library for new projects |
project4i.defaults.testFileSource |
Default test source file for new projects |
project4i.defaults.prodLibraryObject |
Default production object library for new projects |
project4i.defaults.prodLibrarySource |
Default production source library for new projects |
project4i.defaults.prodFileSource |
Default production source file for new projects |
project4i.defaults.developerMail |
Default developer email for new projects |
project4i.defaults.promoteCommand |
Default promote command template (supports variable placeholders) |
project4i.defaultProjectActions |
Default list of custom CL actions seeded into every new project |
Available variables in command templates: &OBJECT_NAME, &MEMBER_TYPE / &TYPE, &TEST_LIB_OBJ, &TEST_LIB_SRC, &TEST_FILE_SRC, &PROD_LIB_OBJ, &PROD_LIB_SRC, &PROD_FILE_SRC, &TICKET_REASON, &DEVELOPER_USER, &DEVELOPER_MAIL
Tip: Prefix any command with ? to open the interactive CL parameter prompter before execution.
Development
Building the Extension
npm install
npm run compile
Running in Development
Press F5 to launch the Extension Development Host with the extension loaded.
Watch Mode
npm run watch
Known Issues
- Members must be added one at a time (batch add not yet supported)
- Project sorting is alphabetical only
Release Notes
0.0.5
- README aggiornato con documentazione completa (comandi, impostazioni, struttura progetto)
- Correzione packaging VSIX su ambienti con group policy restrittiva
0.0.4
- Promote All Members with Run / Skip / Run All / Cancel All controls
- Move Member between projects with pre-flight validation
- Run Project Action with project-specific custom CL actions
- CL Interactive Prompting: prefix any command with
? for a visual parameter form
- Custom checkout (
addToProjectCommand) and release (removeFromProjectCommand) command overrides
- Manage Default Settings panel for global project defaults
0.0.3
- IFS stream file support: add/open/remove stream files from the IFS Browser
- Documentation Hub: attach URLs and local files (PDF, Word, Excel) to each project
- Tree decoration provider for richer icon coloring
0.0.2
- Promote Member with configurable CL command template and variable substitution
- Project Properties panel (test/production library configuration, developer info)
- Run Action proxy to Code for IBM i's compile/bind action system
0.0.1
Initial release:
- Create, rename, and delete logical projects
- Add/remove source members to projects
- Context menu integration with Code for IBM i Object Browser
- Import/export projects as JSON
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Acknowledgments
This extension is designed to work alongside the excellent Code for IBM i extension by the Code for i team.
| |