Versioning in SAP PI
I’ve been asked to look at versioning on PI. Specifically how we maintain multiple versions of a single interface for our various releases. I’ve researched the options, run a few tests and my conclusions are below but I would appreciate your feedback
1) Create a new SWCV.
According to SAPs documentation ‘a software component version is a shipment unit for design objects in the ES Repository. You use a SWCV to group together objects that are shipped or installed together.’ SAP uses this approach for the majority of their standard content. You can’t copy objects between different releases of a SWCV. You have to use the Transfer Design Objects Function (ESR Menu under tools). It’s a neat tool that will transfer objects only if the source objects are more recent or the target objects don’t exist. You can preview the changes and it will tell you what will be updated (source version is more recent), what can’t be transferred (the target version is more recent) or what doesn’t need to be transferred (the versions are the same).
This is appropriate for deploying different versions of a particular software packages but doesn’t allow us to use both versions. The majority of the ID objects refer to the interface/namespace and not the SWCV. If you try and add two identical interfaces from separate SWCV to the same Communications Component you get an error.
2) Create a new namespace with a version number.
SAP has used this approach for the NFE updates and it works.
3) Ensure that the interface is backwards compatible.
Backwards compatibility isn’t always easy to achieve. The functional requirements we are given evolve over time and it may be the case that what seems to be a simple change that may not have any impact may will change significantly.
4) Add a version number to the object names
Not the most elegant approach but it would work.
5) Stand up a separate PI landscape.
Not my preferred approach as it introduces additional costs, maintenance, monitoring and development.
Using different SWCV’s allows new releases to be created and deployed but you can only have a single release active at any moment in time. Using Namespaces allows multiple releases to be deployed. If you look at the SWCV for NFE, SAP SLL-NFE you can see they’ve taken this approach. I’ve checked the SAP support sites and can’t find anything on versioning.
My preferred option is number 2. Using a different namespace works but will require the calling system to update their configuration to support this.