Version Update: Figaf PI to CPI Migration Tool

Since our release of the Figaf SAP CPI migration tool in August 2021, we have been busy improving the tool together with partners and customers. It is one thing to build a migration tool for a fixed set of scenarios. And another is to build migrations for real-life scenarios where customers have 15-year-old integrations built in different ways. It is some of the cases we are resolving in the beta phase.

We do hope it will shave hours off the time you would be spending on a migration project. The short video below offers what the tool with its updates can do?

Recent updates

Support of RFC Lookup

In many cases, mappings are using RFC lookup. If the mapping contains RFC Lookup then the Figaf Tool will create a mock UDF for the migration. Then you can consider how to release those lookups or you can even create RFC lookups and embed them into the skeleton. It is quite simple to add if you are on the Cloud Foundry.


def void RFC_ZIS_EUCOUNTRY(String[] I_COUNTRYCODE, Output output, MappingContext context) {
   String RFCOutputFieldName = "O_IS_EU_COUNTRY";
   String RFCModuleName = "ZIS_EUCOUNTRY";
//Get RFC destination name from property (Content Modifier)
//Destination name can be found in Cloud Cockpit -> Subaccount -> Destinations
   JCoDestination destination = JCoDestinationManager.getDestination(context.getProperty("RFCDestination"));
   JCoRepository repo = destination.getRepository();
//Create connection to RFC module in question - in this case 'ZIS_EUCOUNTRY'
   JCoFunction RfcConnection = repo.getFunction(RFCModuleName);
//Build RFC Request.
   JCoParameterList imports = RfcConnection.getImportParameterList()
//setValue(<RFC Input field name>,<value>)
   imports.setValue("I_COUNTRYCODE", I_COUNTRYCODE[0]);

//Call/execute RFC.

//Get RFCResponse fields.
   JCoParameterList exports = RfcConnection.getExportParameterList();
//Get <RFC output Field> = 'O_IS_EU_COUNTRY'
   String retValue = exports.getString(RFCOutputFieldName);
//Add RFC Value to output(mapping) Context

//Add lookup value to log - if logProperty is 'yes'
   String logMe = context.getProperty("logProperty")
   if (logMe.equalsIgnoreCase("yes")) {
       context.setProperty("RFC_" + RFCModuleName + ":" + RFCOutputFieldName, retValue);


Migration of Test cases

We have added support of test cases for iflows that have been migrated manually or changed a lot. This will enable you to still test those integrations.

WSDL support for Message Types

Message Types that use some global data types can refer to a huge number of objects. Earlier they were all included as XSDs. We are now using the WSDL for these objects since it simplifies the creation process.

The other types IDOC, RFC and External Definition are still used.


We have made a number of improvements to make it easier to migrate with the tool and support cases that were not supported earlier like Context Objects and Receiver Objects. They will come up with a warning for the user to fill out the details.

License update

We have changed the licensing so you will only request a license once you have checked the preview of the migration.

Migration log

Improvement Roadmap

We do have a plan to continue supporting the tool on the short front with the following improvements: 

  • Support for BE/Synchronous calls including testing
  • Adding XSLTs in Operation Mappings to the Iflow automatically
  • PI Message Parameters
  • Improving the support experience
  • Improve error handling of iflows and templates

We are flexible in terms of the longer roadmap and there are a lot of features that can help you save time on your migration. Some ideas includes:

  • Support for converting of modules
  • Using shared mapping artifact for mappings which is reused
  • Support EDI flows

List of current features

We have made plenty of updates to our tool but want to remind you of the current features of the Figaf Migration Tool.


The tools support the following scenarios:

  • Migration of ICO and Classical Receiver Determination. It has been tested on SAP PI 7.11+ 
  • Routing conditions are copied if possible from the configuration
  • A preview of the generated BPMN diagram is shown after the generation
  • A list of warnings is created to simplify the process


For mapping, we can migrate all mappings even if they use:

  • Function libraries. Here the FL will be replaced with a Groovy script. There may be a little work involved in removing special functions like Container and Dynamic Properties. 
  • Multi mappings are handled automatically
  • Support Message Types, External Definition, IDOC, and RFC mappings
  • RFCLoops is migrated and the user can then insert mappings themselves.


  • To convert between a Communication Channels and an SAP CPI block it is possible to use some of the pre-delivered mappings or create your own mapping. It takes a few minutes to create your own custom mapping that matches your requirements. 
  • You can find the templates in the git repository.

You can find the tool at SAP App center or create a trial here at the migration tool page.

Simplify your SAP Integration in under 10 minutes with Figaf DevOps Suite on Cloud.

No credit card is required. 30 days free trial.

Latest Articles