Packages in bpm’online are how you separate what you’re creating/customizing from the rest of the application. It’s a layer that exists in the application. It’s also how you deliver a set of functionality to another bpm’online system. If you’re coming from Infor CRM, it’s like a bundle, but a whole lot more. It’s more like the Infor equivalent of an ApplicationModule in the Infor mobile client but with the added capability of a “thing” to deliver to a customer system.
The thing that is unique about bpm’online, and where a bpm’online package differs greatly from an Infor CRM package, is that a package has dependencies of other packages in the system. If you’re wanting to change some out of the box thing in bpm’online, your package needs to inherit (or have as a dependency) from the out of the box package that has that thing you’re customizing. Bpm’online has this hierarchy of package dependencies. One package can only modify things that are in packages in the upstream of its dependencies. When the application renders/builds, these package hierarchies are layered to compose what the application looks like and does. Going back to ApplicationModules in Infor CRM mobile. it works in the same way – you’re ApplicationModule is a layer on top of the out of the box client. Your layer of changes don’t change the core client, but modify the layers that exist below it. If you’re customizing something from a marketplace package, your package will need to also have that package as a dependency.
So, the point is, the packages that your custom packages has as dependencies does matter. First of all, if you’re starting with bpm’online, get to the configuration manager by going to the url: https://yourinstance/0/dev
Once you’re looking at the configuration, you’ll see the list of packages that make up your configuration. Follow these steps to create a new package. The dependencies I’m listing here are the typical ones you’ll use for most packages. This can vary, but for customizing the core application, these are the ones you want for most cases.
- Right-click in packages and select “Add”
- Provide a name for your package
- Click OK and wait (it will take some time to create and you won’t see any sort of indicator that anything is happening until the dialog closes)
- Reopen the package (right-click and “Edit”) and add dependencies (once you’ve added these, no need to click OK this time, just close the dialog):
- In the client, go to the System Settings and locate the “Current package” system setting. Edit it and set your custom package name (from step #2) as the “Default value” for the setting.
Step #5 above isn’t necessary for creating the package. However, if you’re going to be using any of the wizards in the application (Section or Detail wizards, etc), then the package in that setting is where the changes will get saved to, so that is important if you want to make sure everything ends up in your custom package.
One more thing to note if you’re coming from Infor, a package isn’t just a list/manifest/bundle of things. It’s more of a container. Your “things” live there. You can’t move things from one package to another. You can’t include something from some other package in your package – you can only extend or replace that thing in your package, but the original will still exist in it’s original package.