Uploaded by 王磊

DevGuide ManageIntContent External

advertisement
PUBLIC
SAP Cloud Platform Integration for Processes
2021-05-07
© 2021 SAP SE or an SAP affiliate company. All rights reserved.
Developer's Guide: Managing Integration Content
THE BEST RUN
Content
1
Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2
Developing Integration Content Using the Eclipse Integration Designer. . . . . . . . . . . . . . . . . . . 7
2.1
Understanding the Basic Concepts and the Development Environment . . . . . . . . . . . . . . . . . . . . . . . 7
Elements of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Understanding the Integration Content Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2
Installing and Configuring the Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Opening the Integration Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Configuring the SAP Cloud Integration Preferences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Uninstalling a Feature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
2.3
Developing Integration Flows and Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Creating Integration Project for an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
(Optional) Creating a Working Set of Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Importing SAP NetWeaver PI Objects from On-Premise Repository. . . . . . . . . . . . . . . . . . . . . . .27
Modifying an Integration Flow Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Saving Integration Flow as a Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Using Custom Functions in Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
2.4
Developing Value Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Creating a Value Mapping Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Editing the Value Mapping Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Exporting and Importing Value Mapping Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Referencing Value Mappings from a Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Checking the Value Mapping Consistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.5
Configuring an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Assigning the Sender and Receiver Participants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Defining Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Defining Message Transformers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Defining Message Persistence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Validating Message Payload against XML Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Defining Message Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Defining Security Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Defining Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Defining Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Defining Additional Elements (Others). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Defining the Error Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Error Classification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
2
PUBLIC
Developer's Guide: Managing Integration Content
Content
Specifying Runtime Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Defining Transaction Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Externalizing Parameters of Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
2.6
Working with the Mapping Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Creating a Message Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
Handling Inconsistencies in Mapping Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Exporting Mapping Details to Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
2.7
Testing an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Checking the Consistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
2.8
Operations-Related Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Deploying an Integration Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Viewing Error Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
Activating Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
2.9
References to Additional Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
3
Packaging Integration Content in SAP Cloud Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
3.1
Creating an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398
3.2
Importing Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
3.3
Working with an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
3.4
Editing an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
3.5
Update on Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .403
3.6
Exporting Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
4
Developing Integration Content with SAP Cloud Integration. . . . . . . . . . . . . . . . . . . . . . . . . 407
4.1
Understanding the Basic Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Elements of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
The Camel Data Model in a Nutshell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Updating your Existing Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Adapting Standard Integration Content to Your Requirements. . . . . . . . . . . . . . . . . . . . . . . . . .411
Versioning of Artifacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
Product Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
4.2
Working with Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Working with Prepackaged Integration Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
Configure Multiple Integration Flows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
Generating Integration Content using APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Add Integration Packages to the Customer Workspace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Creating Custom Tags. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Importing Content from ES Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
4.3
Content Transport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
Enabling Content Transport, Neo Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Enabling Content Transport, Cloud Foundry Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Developer's Guide: Managing Integration Content
Content
PUBLIC
3
Content Transport Using CTS+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
Content Transport Using Transport Management Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Content Transport using MTAR Download. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Content Transport using Manual Export and Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Handling Integration Artifacts When Reusing an Integration Flow on Multiple Tenants. . . . . . . . . 441
Guidelines and Best Practices for Content Transport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
4.4
Creating an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
4.5
Using Flow Step Recommendation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
4.6
Integration Flow Extension. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .456
Integration Flow Extension - Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Mapping Extension Step by Step (Demo Example). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Mapping Extension Step by Step (Example from SAP Hybris C4C). . . . . . . . . . . . . . . . . . . . . . 486
4.7
Importing Custom Integration Adapter in the Cloud Foundry Environment. . . . . . . . . . . . . . . . . . . 494
Deploying an Integration Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
4.8
Configure Integration Flow Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
Overview of Integration Flow Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
Define Settings for the Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Define Process Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Assign Sender and Receiver Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
Assign Adapter to Communication Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
Configure Adapter in Communication Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
Define Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Working with Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Define Message Transformer Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
Define Call Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
Define Routing Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960
Define Security-Related Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021
Define Message Persistence Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
Define Validator Steps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070
Define Transaction Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079
Dynamically Configure Integration Flow Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084
Error Classification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104
Externalize Parameters of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105
Configure Externalized Parameters of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
Migrate an Integration Flow Component to a New Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112
Commonly Used Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1114
4.9
Simulation of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1114
Scope of an Integration Flow Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115
Benefits of Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115
Elements Supported in Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115
Functionalities of Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1116
4
PUBLIC
Developer's Guide: Managing Integration Content
Content
Color Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118
Configure Simulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118
Smoke Test Scenario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121
4.10
Deploying Data Flows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122
4.11
Unlocking Integration Packages and Artifacts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123
Developer's Guide: Managing Integration Content
Content
PUBLIC
5
1
Development
Design integration content in order to specify how messages are to be exchanged between the connected
components.
SAP Cloud Integration provides a set of tools and applications that help you perform end-to-end tasks on
development and deployment, packaging and publishing, accessing and editing the integration content.
This topic provides an overview of roles, working environment and tasks involved in managing integration
content.
Since the tasks are performed by different roles, in different working environment such as, Integration Designer
on Eclipse platform or SAP Cloud Integration Web application on SAP UI5, the figure below helps you
understand the relationship between the roles, tools/applications, and tasks:
Related Information
Developing Integration Content with SAP Cloud Integration [page 407]
6
PUBLIC
Developer's Guide: Managing Integration Content
Development
2
Developing Integration Content Using the
Eclipse Integration Designer
SAP Cloud Integration provides integration tools on the Eclipse platform to model integration flows, configure
attributes of the integration flows, and deploy them to the runtime.
You can work with the integration tools in the local development mode, which means that you create an
integration project in your local Eclipse workspace and start developing integration content using the features
available in the Integration Designer perspective. Once the content is ready, you deploy the project to the
runtime in the SAP Cloud Integration infrastructure.
Installing Features of SAP Cloud Integration
To develop and configure integration content, install the features as described on the installation page SAP
Cloud Integration Tools.
2.1
Understanding the Basic Concepts and the
Development Environment
2.1.1 Elements of an Integration Flow
An integration flow allows you to specify how a message is processed on a tenant.
You can use integration flows to specify specific integration patterns like mapping or routing.
A graphical editor allows you, the integration developer, to model the message processing steps and specify in
detail what happens to the message during processing.
In detail, you define the following aspects in an integration flow:
● The senders and receivers of the message
● How the senders and receivers are connected to the tenant (adapters)
● The steps that define the message processing
The following figure provides a simplified and generalized representation of an integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
7
Senders and Receivers
You define a participant of an integration scenario as a sender or receiver. The senders and receivers typically
represent the customer systems that are connected to the tenant and exchange messages with each other.
Connectivity (Adapters)
An integration flow channel allows you to specify which technical protocols should be used to connect a sender
or a receiver to the tenant.
 Note
To specify an adapter, click the connection arrow between the sender/receiver and the Integration Process
box.
Message Processing (Steps)
You use integration flow steps to specify what should happen to a message during processing. Various step
types support the wide range of integration capabilities of the Cloud-based integration platform.
 Note
To insert a step into an integration flow, drag and drop the desired step type from the palette on the right of
the graphical modeling area.
Message Flows
You use message flows to connect various integration flow elements.
2.1.1.1
Headers and Exchange Properties
The integration framework gives you options to evaluate certain parameters at runtime, which allows you to
define sophisticated ways of controlling message processing. There are two different kinds of parameter:
8
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● Message header
This is transferred as part of the message header.
When you use an HTTP-based receiver adapter, these parameters are converted to HTTP headers and
transferred as such to the receiver.
 Note
Note that data written to the message header during a processing step, for example, in a Content
Modifier or Script step, also becomes part of the outbound message addressed to a receiver system.
However, properties remain within the integration flow and are not handed over to receivers. Because
of this, it is important to consider the following header size restriction if you are using an HTTP-based
receiver adapter: If the message header exceeds a certain value, the receiver may not be able to accept
the inbound call. This rule applies to all HTTP-based receiver adapters. The limiting value depends on
the characteristics of the receiver system, but typically ranges between 4 and 16 KB. To overcome this
issue, you can use a subsequent Content Modifier step to delete all headers that are not supposed to
be part of the outbound message.
● Exchange property
For as long as a message is being processed, a data container (referred to as Exchange) is available. This
container is used to store additional data besides the message that is to be processed. An Exchange can be
seen as an abstraction of a message exchange process as it is executed by the Camel framework. An
Exchange is identified uniquely by an Exchange ID. In the Properties area of the Exchange, additional data
can be stored temporarily during message processing. This data is available for the runtime during the
whole duration of the message exchange.
When you use an HTTP-based receiver adapter, Exchange properties are not converted to an HTTP header
for transfer to the receiver.
You can use the Content Modifier to modify the content of the message header and the Exchange property (as
well as of the message body) at one or more steps during message processing.
You can use the message header and the Exchange property to configure various sophisticated ways of
controlling message processing.
One option is to use dynamic parameters:
When configuring an integration flow using the modeling user interface, you can define placeholders for
attributes of certain adapters or step types. The value that is actually used for message processing is set
dynamically based on the content of the message. You can use a certain message header or Exchange property
to dynamically set a specific integration flow property.
Another option to derive such data from a message at runtime is to access a certain element in the message
payload.
The following headers and Exchange properties are supported by the integration framework.
 Note
A subset of these parameters is provided by the associated Open Source components, such as Apache
Camel.
Headers Relevant for Signing with XML Digital Signature
● CamelXmlSignatureTransformMethods
Specifies transformation methods in a comma-separated list.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
9
You can use this header to specify transformation methods in a comma-separated list. This header will
overwrite the value of the option Transform Method for Payload.
 Example
 Sample Code
Example of this use case: The XML signature verifier of the receiving system expects an XML signature
as shown in the following code snippet.
The signature is a detached signature, because the signature element is a sibling of the signed element
B. However, the receiving system requires the enveloped-signature transform method to be specified in
the Transforms list. To ensure this, you have to configure a detached signature in the XML Signer step,
then add a Content Modifier step before the XML Signer step, where you specify the header
"CamelXmlSignatureTransformMethods" with the constant value “http://www.w3.org/2000/09/
xmldsig#enveloped-signature,http://www.w3.org/TR/2001/REC-xml-c14n-20010315".
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<B ID="IDforB">
...
</B>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
Id="_6bf13099-0568-4d76-8649-faf5dcb313c0">
<ds:SignedInfo>
...
<ds:Reference URI="#IDforB">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/
2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/TR/
2001/REC-xml-c14n-20010315" />
</ds:Transforms>
...
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>aUDFmiG71</ds:SignatureValue>
</ds:Signature>
<root>
Headers Relevant for Message Signing with XML Advanced Electronic Signature
● CamelXmlSignatureXAdESQualifyingPropertiesId
Specifies the Id attribute value of the QualifyingProperties element.
● CamelXmlSignatureXAdESSignedDataObjectPropertiesId
Specifies the Id attribute value of the SignedDataObjectProperties element.
● CamelXmlSignatureXAdESSignedSignaturePropertiesId
Specifies the Id attribute value of the SignedSignatureProperties element.
● CamelXmlSignatureXAdESDataObjectFormatEncoding
Specifies the value of the Encoding element of the DataObjectFormat element.
● CamelXmlSignatureXAdESNamespace
Overwrites the namespace parameter value.
● CamelXmlSignatureXAdESPrefix
Overwrites the prefix parameter value.
Headers Relevant for Message Splitting
10
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● CamelSplitIndex
Provides a counter for split items that increases for each Exchange that is split (starts from 0).
● CamelSplitSize
Provides the total number of split items (if you are using stream-based splitting, this header is only
provided for the last item, in other words, for the completed Exchange).
● CamelSplitComplete
Indicates whether an Exchange is the last split.
Headers Relevant for Content Encoding
● CamelCharsetName
Specifies the character encoding to be applied for message processing.
Is relevant for content encoding steps.
Headers Relevant for the HTTP and HTTPS Adapter
● CamelHttpUri
Overrides the existing URI set directly in the endpoint.
This header can be used to dynamically change the URI to be called.
● CamelHttpUrl
Refers to the complete URL called, without query parameters.
For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello.
● CamelHttpQuery
Refers to the query string that is contained in the request URL.
In the context of a receiver adapter, this header can be used to dynamically change the URI to be called.
For example, CamelHttpQuery=abcd=1234.
● CamelHttpMethod
Refers to the incoming method names used to make the request. These methods are GET, POST, PUT,
DELETE, and so on.
● CamelServletContextPath
Refers to the path specified in the address field of the channel.
For example, if the address in the channel is /abcd/1234, then CamelServletContextPath is /abcd/1234.
● CamelHttpResponseCode
This header can be used to manually set the HTTP response code.
● Content-Type
HTTP content type that fits to the body of the request.
The content type is composed of two parts: a type and a subtype.For example, image/jpeg (where image
is the type and jpeg is the subtype).
Examples:
○ text/plain for unformatted text
○ text/html for text formatted with HTML syntax
○ image/jpeg for a jpeg image file
○ application/json for data in JSON format to be processed by an application that requires this
format
More information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.html
The list of available content types is maintained by the Internet Assigned Numbers Authority (IANA). For
more information, see http://www.iana.org/assignments/media-types/media-types.xhtml .
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
11
 Note
If transferring text/* content types, you can also specify the character encoding in the HTTP header
using the charset parameter.
Here is an example of such a header:
Content-Type: text/html; charset=utf-8
The default character encoding that will be applied for text/* content types depends on the HTTP
version: us-ascii for HTTP 1.0 and iso-8859-1 for HTTP 1.1.
Text data in string format is converted using UTF-8 by default during message processing. If you want
to override this behavior, you can use the Content Modifier step and specify the CamelCharsetName
Exchange property. To avoid encoding issues when using this feature together with the HTTP adapter,
consider the following example configuration:
If you use a Content Modifier step and you want to send iso-8859-1-encoded data to a receiver, make
sure that you specify the CamelCharsetName Exchange property (either header or property) as
iso-8859-1. For the Content-Type HTTP header, use text/plain; charset=iso-8859-1.
● Content-Encoding
HTTP content encoding that indicates the encoding used during message transport (for example, gzip for
GZIP file compression).
This information is used by the receiver to retrieve the media type that is referenced by the content-type
header.
If this header is not specified, the default value identity (no compression) is used.
More information: https://tools.ietf.org/html/rfc2616
(section 14.11)
The list of available content types is maintained by the Internet Assigned Numbers Authority (IANA). For
more information, see:http://www.iana.org/assignments/http-parameters/httpparameters.xhtml#content-coding .
Headers Relevant for the SFTP Adapter
● CamelFileName
Overrides the existing file and directory name that is set directly in the endpoint.
This header can be used to dynamically change the name of the file and directory to be called.
Headers Relevant for the Mail Adapter
 Note
The mail adapter supports all possible headers that a mail server or mail client can set. Which headers are
set or not set depends on the mail server and the mail client. The headers listed in the table below are
examples of commonly used headers.
● Subject
Specifies the subject of the e-mail message.
● To
Specifies the e-mail address that the message is sent to.
● Cc
Specifies the additional e-mail address that the message is sent to.
● From
Specifies the e-mail address that the message comes from.
12
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● Date
Specifies the date and time when the e-mail was sent.
● Content-Type
Specifies the format of the e-mail (html or plaintext)
● Message-ID
Specifies the ID that the mail system assigned to the e-mail when it was first created.
● Reply-to
Specifies the message ID of the message that this e-mail is a reply to.
● Sender
Specifies the actual sender (acting on behalf of the e-mail address stated in the From header).
● Archived-At
Specifies a link to the archived form of an e-mail.
Headers Relevant for the Aggregator Step
● AggregatedCompletedBy
This header is relevant for use cases with message aggregation.
The header attribute can only have one of the following values:
○ timeout
Processing of the aggregate has been stopped because the configured Completion Timeout has been
reached.
○ predicate
Processing of the aggregate has finished because the Completion Condition has been met.
● AggregateCorrelationId
○ Contains the value of the correlation expression evaluation.
● AggregationSequenceNumber
○ Contains the retreived sequence number.
● AggregationIsLastMessage
○ Boolean; true if it's the last message.
Headers Relevant for JMS Messages
● JMSTimestamp
Specifies the time when a JMS message was created.
Headers Relevant for the SOAP (SOAP 1.x), SOAP (SAP RM), and IDoc Adapter
● SOAPAction Header
This header is part of the Web service specification.
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
Additional Message Header
You can specify one of the following headers (under Message Header in the Name field):
● SAP_ApplicationID
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
13
When you monitor the messages at runtime, you can search for all messages whose defined
SAP_ApplicationID has a specific value (displayed as the MessageID attribute in the Message
Monitoring editor).
As Type, select the XPath expression that points to the message element that is to be used as the
application ID.
● SAP_Sender
● SAP_Receiver
● SAP_MessageType
You can use this property to categorize messages.
● SAP_MessageProcessingLogID
You can use this property to read the ID of the message processing log (no write access supported).
If you have specified SAP_Sender or SAP_Receiver, the corresponding values are displayed in the message
processing log. If you change the SAP_Receiver value during message processing, all values are added to the
receiver field in the message processing log as a comma-separated list. If you don't want this behavior, you can
specify the exchange property SAP_ReceiverOverwrite (see below).
Exchange Properties
You can specify one of the following Exchange properties (under Exchange Property in the Name field):
● SAP_CorrelateMPLs
You can use this property to specify whether message processing logs (MPLs) are to be correlated with
each other using a correlation ID.
By default, MPL correlation is switched on. To specify this property, select Constant as Type and enter
True or False as Value.
● SAP_ReceiverOverwrite
Headers that are added to a message using the SAP_Receiver header element during message
processing are appended to the message processing log (MPL).
This behavior is helpful in scenarios like,the multicast pattern, for example, where a message is sent to
several receivers and all receivers are to be collected in the MPL (not just the last added header).
By setting the SAP_ReceiverOverwrite exchange property to true, you can change this behavior in
such a way that only the last added header is shown in the MPL.
 Note
Example configuration:
Name: SAP_ReceiverOverwrite
Type: Constant
Value: True
● SAP_ErrorModelStepID
You can use this property to set a Model Step ID for an integration flow step. This identifier is required to
relate to an integration flow step in error handling.
● SAPJMSRetries
Contains the number of retries of a JMS message.
14
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
You can use this property to specify that the behavior of the integration flow changes depending on the
number of retries that are actually performed. For example, you can configure a scenario where a mail is
sent to an administrator with the message as an attachment and the integration flow is terminated
successfully after a specified number of retries.
● SAPJMSAlerttime
Specifies the time when an alert needs to be sent.
● SAPJMSRetryAt
Specifies the time when a JMS message must be retried.
Related Information
Dynamic Parameters (Example) [page 15]
2.1.1.1.1
Dynamic Parameters (Example)
You can define placeholders for parameters of certain adapters or step types. The values of these parameters
will then dynamically be set based on the content of the processed message.
For example, parameters From, To, Cc, Bcc, Subject, Mail Body as well as the attachment name, can be
dynamically set at runtime from message headers or content.
To set an attribute to be dynamically filled by a message header attribute, enter a variable in the form $
{header.attr} in the corresponding field for the attribute of the corresponding step or adapter.
At runtime, the value of the header attribute (attr) of the processed message is written into the field for the
corresponding attribute of the outbound email.
Example: Dynamic Attributes for the Mail Adapter
For example, assume that you dynamically define the email Subject of the mail adapter as shown in the figure
below by the variable {header.attr}.
At runtime, a message is received whose header contains a header attribute attr with the value value1. The
mail adapter will then dynamically set the subject of the outbound email with the entry value1.
Note that the mail adapter processes message content either already contained in the inbound mail (from a
sender system) or as modified by content modifier steps on its way between sender and mail adapter.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
15
As shown in the figure, we assume that the inbound message contains a header header1 with value value1.
Let us assume that you like to define the Subject attribute of the mail receiver adapter dynamically via this
header. To do that, specify the Subject field by the following entry:
${header.header1}
As a result, the mail adapter dynamically writes value value1 of header header1 (from inbound message) into
the subject of the outbound email.
Related Information
Parameters That Support Dynamic Configuration [page 1086]
2.1.2 Understanding the Integration Content Types
SAP Cloud Integration provides features on Eclipse to develop and configure integration content.
The feature, called the Integration Designer, provides options to develop integration flows in your local Eclipse
workspace, which implies no network connection is required during development. Each integration flow is
associated with a project and can refer to other entities, such as message mappings, operation mappings, and
WSDL definitions, that are available within the same project.
The integration flow can also refer to an entity, such as a value mapping, that is not available within its project.
You create a separate value mapping project such that the reference takes place across the projects within the
workspace.
The integration flow along with other referenced entities form the integration content. Once you complete the
development of integration content, you deploy the integration flow project as well as the referenced value
mapping to the runtime.
 Note
Another feature, called the Integration Operation Monitoring, provides options to monitor the deployed
integration projects in runtime.
Types of Integration Projects
The sections below introduce you to different project types that the tooling provides based on the entities.
Integration Flow Project Type
The Integration Flow project type contains packages for creating integration content, where each package
consists of a particular entity.
Integration Flow Project Structure
Elements in Project Structure
Description
src.main.resources.mapping
Package for mappings to be used in scenario
src.main.resources.scenarioflows.integrationflow
Package for BPMN integration flow
16
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Elements in Project Structure
Description
src.main.resources.wsdl
Package for interfaces like IDOC , WSDL used in scenario
MANIFEST.MF
File contains dependencies to runtime components and inte­
gration content metadata
 Note
Additional files that are available in the Integration Flow project types are:
Additional Elements in Project Structure
Description
src.main.resources
Package for parameters.prop and parameters.propdef
files
parameters.prop
File contains externalized attributes representing a varia­
ble such as a the customer's landscape information.
parameters.propdef
File contains metadata such as value type of the parame­
terized attribute, its description and whether the attribute
should be configured mandatorily.
Value Mapping Project Type
The Value Mapping project type is used for scenarios that require you to map different representations of an
object to each other. Each value mapping project contains one or more value mapping group that is a set of
values of the object.
Value Mapping Project Structure
Elements in Project Structure
Description
MANIFEST.MF
File contains dependencies to runtime components
value_mapping.XML
File contains value mapping groups that hold the objects and
their corresponding representations
2.1.3 Restrictions
The Integration Designer allows you to model specific patterns which are handled at runtime in an unexpected
way.
The following table lists the restrictions.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
17
Restrictions and Alternative Configuration Settings
Modelled Pattern
Expected Behavior at Run­
time
Actual Behavior at Runtime
Alternative Modeling Option
Integration flow step with
more than one outgoing se­
quence flows
The same message is proc­
essed in parallel after the in­
tegration flow step.
The messages are delivered
to the different receivers in a
sequence.
Configure only one outgoing
sequence flow and parallel
processing using a multicast
of messages.
For example, after a Message
Hereby, the order in that the
Persistence step the mes­
messages are delivered is
sage is supposed to be sent
randomly generated.
to multiple receivers in paral­
lel.
In addition to that, the follow­
ing behavior may occur: the
message which results from
the processing in the previ­
ous sequence flow is taken
as input for the next se­
quence flow.

Note
As an example, consider
two parallel sequence
flows where the first one
contains an encryption
step and the second one
not. In that case, the re­
ceiver of the second se­
quence flow also gets an
encrypted message (al­
though in the second se­
quence flow no encryp­
tion step has been con­
figured).
Comment on Database Transactions
The following step types include transactional database processing.
If one of the below listed steps is contained in an integration flow, the processing of the message is executed in
one transaction.
● Data Store Operations step
○ Select (in case delete=true)
○ Write
○ Get (in case delete=true)
○ Delete
● Usage of Write variables
● Aggregator step
● Content Enricher
 Caution
Such steps might lead to resource shortages because long running transactions can cause node instability
and impede other processes that are running in transactions.
18
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Some of the above mentioned steps or adapters persist data in the database. In case of an error, the whole
process is rolled back and the original state is being re-established. That means, data from failed processes
remain and, in case message processing fails, customers normally cannot access data about the failed
processing (due to the roll-back).
In case an error is propagated back to the calling component, all data that have been written in the course
of the (failed) transaction are being removed (in other words: not persisted in the database). For the calling
component, an error implies, therefore, to restart the integration flow.
Transactional processing is also to be considered in scenarios that contain asynchronous decoupling. Let’s
assume integration flow A contains a Data Store Operation step. Integration flow B contains a Select
operation on the Data Store and runs into an error. In that case, that data is preserved that has been written
to the database by integration flow A. This behavior makes sense in particular when you consider the case
that integration flow B changes or deletes the data that has been stored by integration flow A. In case
integration flow B fails, the original data from integration flow A can be retrieved.
Additional Restrictions
Usage of an Aggregator step in a Local Integration Process or Exception Subprocess is not supported.
2.2
Installing and Configuring the Tool
You install the features of SAP Cloud Integration on the Eclipse integrated development environment (IDE) to
access the Integration Designer functions.
2.2.1 Opening the Integration Designer
You open the Integration Designer as perspective in Eclipse.
Context
Procedure
1. Start Eclipse.
2. In the main menu, choose
Windows
Open Perspective
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Other...
PUBLIC
19
3. In the Open Perspective dialog, select Integration Designer.
2.2.2 Configuring the SAP Cloud Integration Preferences
You can make specific settings for SAP Cloud Integration in the Eclipse Preferences.
Context
You perform the tasks below to configure the tool settings with attributes you are likely to need when working
with the Eclipse IDE.
You can find the specific settings for SAP Cloud Integration under
Window
Preferences
SAP Cloud
Integration .
Related Information
Operations Server [page 20]
Personalize [page 21]
Repository Connection [page 23]
Testing Configuration [page 23]
2.2.2.1
Operations Server
You need to specify the connection from Eclipse to the tenant management node in order to perform tasks
such as deploying integration flows on the tenant.
The tenant management node contains the operations subsystem that is responsible for tasks such as
deploying integration content or selecting monitoring data from the database.
Operations Server Settings
Property
Description
URL
Tenant management node URL (also referred to as manage­
ment URL)
Enter the URL that was provided during tenant provisioning.
User
User and password for this connection
Password
20
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Choose Test Connection to test whether the specified URL and user/password enable you to connect to the
tenant management node.
If the URL and user/password are correct but you still get the error message Sending request to server
failed. Reason: Error during processing request on client, check the proxy settings in Eclipse
(under
Window
2.2.2.2
Preferences
General
Network Connections ).
Personalize
You can specify personal settings that control how to deal with integration flow templates and how to handle
integration project/integration flow creation.
Personal Settings
Property
Description
Store integration flow templates at
Location where to store integration flow templates on your
local computer
Always create integration flow for new integration project
If this checkbox is selected (which is the default setting), an
integration flow is always created for a new integration
project.
When you choose to create a new integration project (
Integration Project
New
File
), a wizard opens. On the
first page of the wizard, you enter the project name. When
you click Finish (and you have selected the Always create
integration flow for new integration project checkbox in the
Preferences), an integration flow is created for the project
(with the same name as the project).
If you have deselected this checkbox, you have to explicitly
specify an integration flow name (on the next page of the
wizard) and finish the wizard in order to trigger the creation
of an integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
21
2.2.2.3
Working with Product Profiles
Product profile is a collection of capabilities such as success factor adapter, splitter or datastore elements,
available for a particular product. You can consume these capabilities at the time of designing integration flows.
Context
SAP Cloud Integration enables you to design for multiple runtimes at the same time. You should select specific
product profile to develop content for the respective runtime.
 Note
● If a product profile does not support a particular capability then the checks report errors for
unsupported components in the integration flow.
Procedure
1. To assign product profile at project level, execute the following substeps:
a. Open an integration project, go to Properties tab.
b. From the Product Profile drop down list, select the required profile.
2. To assign product profile at workspace level, execute the following substeps:
a. In Eclipse, navigate to Windows -> Preferences-> SAP Cloud Integration-> Product Profiles.
b. Select the required profile.
 Note
○ If no product profile is selected, by default it is SAP Cloud Integration at the project level
configuration. Also, in that case the system applies workspace level product profile for the
integration flow.
○ If you want to import or export the zip file format of product profile, then you can use Import or
Export option.
○ If you update the tooling, cmd folder is placed inside workspace directory and old profiles cached
in old cmd location are lost. You can manually copy old profiles to the new cmd location and restart
eclipse.
○ You can reload component metadata in the following 3 ways:
○ You can reopen eclipse tool.
○ You can reconnect to server.
○ You can use
22
PUBLIC
icon (on eclipse toolbar) to manually download it.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Related Information
Product Profiles [page 413]
2.2.2.4
Repository Connection
If you need to import interfaces or mappings from an on-premise repository, such as the Enterprise Services
Repository, you have to set the connection details to establish the connection with the repository.
Connection to the Enterprise Services Repository is supported for both the Advanced Adapter Engine
(AEX) and Dual Stack.
Repository Connection Settings
Property
Description
URL
URL of the on-premise repository in the format
http(s)://<host>:<port>
User
User and password for this connection
Password
Choose Test Connection to test whether the specified URL and user/password enable you to connect to the
repository.
2.2.2.5
Testing Configuration
You can specify settings that control how integration tests are executed.
2.2.3 Uninstalling a Feature
Context
You use this task only if you need to uninstall a feature of an installed software plugin.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
23
Procedure
1. From the main menu, choose
Help
About Eclipse SDK .
2. In the About Eclipse SDK dialog, choose Installation Details.
3. In the Eclipse SDK Installation Details wizard, select the required feature to be uninstalled.
4. Choose Uninstall....
5. In the Uninstall dialog, review the plugin you have selected and choose Finish.
6. In the Software Update dialog, choose Restart Now.
2.3
Developing Integration Flows and Projects
2.3.1 Creating Integration Project for an Integration Flow
Context
An integration flow is a graphical representation of how the integration content can be configured to enable the
flow of messages between two or more participants using SAP Cloud Integration, and thus, ensure successful
communication.
You perform this task to create a BPMN 2.0-based integration flow model in your integration project under the
src.main.resources.scenarioflows.integrationflow package. You can create an integration flow by using the
built-in patterns, templates provided by SAP, or user-defined templates.
 Note
You can use the templates provided by SAP in the New Integration Flow wizard page to help you create and
modify integration flows based on certain scenarios. These templates are based on some of the SAP
supported scenarios.
 Restriction
In this release, SAP supports only limited number of possible integration scenarios.
24
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the main menu, choose
perspective.
Window
2. In the main menu, choose
File
New
Open Perspective
Integration Designer
Integration Project…
to open the
to create a new integration project.
3. In the New Integration Project wizard, enter a project name.
 Note
○ By default, Node Type is set to IFLMAP, which indicates that the integration flow is deployed to that
node in the runtime environment.
○ Choose product profile for the integration project from Product Profile field. The integration flow
templates used during creation adheres to the latest version of a component available in product
profile.
4. If you want to add the project to the working set at this point, select the option Add project to working set.
 Note
If you do not choose to add the project to the working set in this step, you can add it later. For more
information about working sets, see Creating a Working Set of Projects [page 26].
5. If you want to create an integration flow of a specific pattern for the new integration project, choose Next.
 Note
You can also create an integration project together with a point-to-point integration flow. To enable this
option, choose Window Preferences SAP Cloud Integration Integration Flow Preferences
page, and select the Auto-create integration flow on 'Finish' during integration project creation option.
6. In the New Integration Flow page, enter a name for the integration flow.
7. If you want to create an integration flow using the built-in patterns, select the Enterprise Integration
Patterns category and choose the required pattern.
8. If you want to create an integration flow using SAP templates, select the SAP Defined Template category
and choose the required template.
9. If you want to create an integration flow using templates specific to your scenario, select the User Defined
Template category and choose the required template.
 Note
You can find the templates in the User Defined Template category only if you have saved an integration
flow as a template. For more information, see Saving Integration Flow as a Template [page 30].
10. Choose Finish.
A new project with <integration flow>.iflw is available in the Project Explorer view.
11. If you want to provide a description for the integration project, follow the steps below:
a. In the Project Explorer, select the integration project and choose the Properties view.
b. In the Properties view, select the Project Configuration tab.
c. In the Project Configuration tab page, provide basic details about the integration project, and enter the
bundle name and bundle ID.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
25
 Note
○ The bundle name and bundle ID that you enter get updated in the MANIFEST.MF file.
○ The bundle name and the integration project name are two different attributes.
○ The Node Type shows the runtime node type on which the integration flow is deployed.
○ The description field allows you to enter brief information about the integration project to help
other users understand the use of the project.
12. Click the graphical area, and in the Properties view, select the Integration Flow tab page.
13. Enter a description about the integration flow that provides information to other users who will view or
work with the integration flow.
14. Save the changes.
2.3.2 (Optional) Creating a Working Set of Projects
Context
You perform this task to group projects using the Working Sets feature provided by Eclipse.
For example, you can create a Working Set for grouping projects based on customer or you can create each
Working Set for specific integration scenarios.
 Note
The actions available in the context menu of the projects that are added to the Working Set remain as
before.
Procedure
1. In the Project Explorer view of the Integration Designer perspective, select the dropdown icon from the
toolbar of the view.
2. Choose Select Working Set…
3. In the Select Working Set dialog, choose New….
4. In the New Working Set dialog, select Resource and choose Next.
5. Enter a name for the working set.
6. Select a resource from the Working set contents section.
7. Choose Finish.
8. If you want to edit the working set, select the dropdown icon and choose Edit Active Working Set.
9. Select the dropdown icon in the toolbar of the Project Explorer and choose
Working Sets
26
PUBLIC
Top Level Elements
to display the Working Set and its content in the Project Explorer.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
10. Select
sets, .
Top Level Elements
Projects
to display only the projects belonging to the existing working
 Note
If you want to go back to the default Project Explorer view that displays all the projects irrespective of
the Working Sets, select the dropdown icon in the toolbar of the Project Explorer and choose Deselect
Working Set.
2.3.3 Importing SAP NetWeaver PI Objects from On-Premise
Repository
Context
You perform this task to import interfaces and mappings from an On-Premise repository, such as the ES
Repository, into the integration project. In case of mappings, you can import message mappings (.mmap) and
operation mappings (.opmap).
 Restriction
See the table below to know about the list of unsupported functionalities of the mappings being imported:
Unsupported functionalities of imported mappings
Type of Mappings
Limitations
Message Mapping
User Defined Functions with Channel type parameter
RFC and JDBC lookups used in Mappings
Parameters declared through Parameter section of mapping edi­
tor (in ES Repository Builder )
Used Imported Archives
Used Function Libraries
Containing schema from .xml or .zip files
Operation Mapping
Operations (source or target) with cardinality '0..unbonded' are
not supported
Operation mappings with cardinality 0..1 are not supported
Operation mapping containing multiple operations are not sup­
ported
Since parameters are not supported in Message Mapping, so op­
eration mappings with binding are also not supported
Operation Mappings with Java Mappings (Imported Archives,
Java programs) and external programs are not supported
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
27
Type of Mappings
Limitations
Operation Mappings, with Do Not Resolve XOP Includes, Read
Attachments are not supported
Only synchronous operation mappings with at least one map­
ping program present- either request, response or fault, is sup­
ported.
If the WSDL is already present, WSDLs are not overwritten
Procedure
1. In the Project Explorer, right-click on an integration project and from the context menu choose Import PI
Object.
2. In the Import PI Object dialog, select ES Repository below the object type you want to import.
For example, if you want to import operation mappings, select ES Repository below Operation Mapping
object type.
3. Choose Next.
4. In the Import Mappings from ES Repository dialog, select one or more objects and choose Finish.
Results
The imported objects are placed under their respective src.main.resources.<object> folder. For
example, check the imported mapping under src.main.resources.mapping and imported interface under
src.main.resources.wsdl.
WSDLs/XSDs corresponding to Message Types and Fault Message Types are placed under
src.main.resources.mapping folder, other interfaces get placed under src.main.resources.wsdl.
The imported operation mapping has the following features:
● If operation mapping contains message mapping, then the message mapping is downloaded as a jar under
src.main.resources.mapping package.
● If the operation mapping contains XSLTs, then the files are downloaded as .xsl under
src.main.resources.mapping.
● Imported source or target WSDLs are not supported in integration flows.
28
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.3.4 Modifying an Integration Flow Model
Context
You perform this task if you want to modify the existing integration flow model. For example, if the templates
provided by SAP do not exactly match your requirement, you can modify the integration flow created from the
templates while adhering to SAP's modeling constraints.
To add integration flow elements, you can drag the notations for systems, connections, mappings, routers, and
so on, from the palette and drop it at the required location of the integration flow model in the graphical editor.
Alternatively, you can add elements, such as mapping and split, to the integration flow model using the context
menu options available on the connections of the model.
 Note
The integration flow should match the SAP supported scenarios to avoid deployment failure.
 Example
Consider an example which requires you to model an integration flow with multiple pools. The scenario with
multiple pool may involve any of the following:
● Hosting same endpoint with different connectors, such as SFTP and SOAP connector
● Polling content from different servers
● Grouping similar integration logic that uses different interfaces
The list of elements that you require to model a multiple pool integration flow are:
1. One Sender element
2. N Receiver elements
3. N Integration Process pools for each incoming message from the Sender to a Receiver
4. N Message Flows from the Sender to the Start Message element in the Integration Process pool. This
indicates N incoming message.
5. N Message Flows from each End Message element in the Integration Process pool to the corresponding
Receivers. This indicates N outgoing message flows.
6. Finally, Sequence Flows to connect the Start Message and End Message within each pools. This
completes the integration flow modeling.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. To modify the graphical diagram using the notations in the Palette, follow the substeps below:
a. If the Palette pane is hidden in the Model Configuration editor, choose Show Palette arrow at the right
edge of the editor.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
29
b. Choose the required BPMN notation to modify the integration flow model.
3. To modify the graphical diagram using the context menu options, follow the substeps below:
a. In the Model Configuration editor, right-click on the connections within the pool.
b. From the context menu, choose the necessary action to add an element. For example, Add Routing
adds an Router notation to your graphical diagram that can be used either as a receiver router or an
interface router.
c. Save the changes.
2.3.5 Saving Integration Flow as a Template
Prerequisites
You have specified the location path to store the user-defined templates at
Cloud Integration
Windows
Preferences
SAP
Personalize .
Context
You perform this task to save an integration flow as a template. The integration flow saved as template retain
the attribute values so that you can reuse the template for similar configuration scenarios.
Procedure
1. In the Project Explorer view, open the <integration flow>.iflw from your project.
2. From the main menu, choose
File
Save As… .
3. In the Save As Integration Flow Template dialog, enter a name for the template.
4. If you want to retain the externalized parameters in the template then select Retain the externalized
parameter(s) option.
 Note
If the integration flow contains externalized parameters and you do not select this option, the
integration flow gets saved with the most recent values you have assigned to the externalized
parameters.
5. Choose OK.
30
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Results
You can find the new template in the location you have mentioned in the Preferences page. When you create the
integration flow using the template, you can find the saved configurations.
2.3.6 Using Custom Functions in Message Mapping
Prerequisites
Make sure you have created a valid Integration project with Message Mapping associated scripts.
Context
In Message Mapping, you can create your own custom functions by using groovy scripts and use them as
required. You can use custom functions from the function palette for modeling the mapping expressions.
Procedure
1. In the Project explorer view, select src.main.resources.mapping package.
2. In the context menu of src.main.resources.mapping, choose
New
Other .
The New dialog box appears.
3. Choose
Message Mapping
Next .
The New Message Mapping dialog box appears.
4. In the General Details section, enter the message mapping name in the Name field.
5. In the Location Details section, select the project name using Browse…
The path of the selected project gets added to the Path field, and the selected message mapping page
opens.
6. In the Signature section of the message mapping, select the Source Element (.xsd) and Target Element
(.xsd) by choosing Add…
7. In the Properties section, double-click the Definition tab to see the message mapping.
The Standard Functions and Custom Functions appear on the function palette of the Properties section.
8. Choose Custom Functions.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
31
 Note
In the Properties section, if you do not find any groovy scripts under Custom Functions in the function
palette, then can add an existing groovy script or create a new groovy script.
9. In the context menu of Custom Functions, choose Add to use and existing groovy script file.
The Add Script dialog box appears.
a. Select a groovy script (.gsh) file, and choose OK.
The selected groovy script along with all the functions that fulfill the message mapping requirements
appear under Custom Functions in the functions palette.
10. In the context menu of Custom Functions, choose Create to create a new groovy script file.
The New Mapping Script dialog box appears.
a. Enter or select the parent folder for the new groovy script file.
b. Enter the name of the new groovy script file in the File name field.
c. Choose Finish.
The new groovy script file appears under Custom Functions in the function palette. You can expand the
new groovy script to see all the functions under it.
In the function palette, you can select any groovy script under Custom functions and you can use it and
customize it according to your requirements.
11. If you want to add a function to the Expression editor, select a function under the groovy script in the
function palette.
12. Drag and drop the function from the groovy script to the text area of the expression editor.
13. You can define your mapping logic by using your custom functions.
14. Choose
File
Save .
 Note
○ You can validate your mapping and check for errors by viewing the Problems tab, or Console tab, or
Error log tab. If your mapping has any errors, then they are displayed with error markers
.
○ In the function palette, if you have used a function from one of your scripts under Custom
Functions, and if that script is removed is from the functions palette, then an error marker
displayed.
is
○ You can access the Message Processing logs using
messageLogFactory.getMessageLog(context);. For access specific logs, please refer
Javadocs.
○ When you launch Eclipse, if you do not see your local workspace, choose
workspace
32
PUBLIC
Other...
File
Switch
and select the required workspace.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.3.6.1
Guidelines for Creating Mapping Scripts using
Custom Functions
You can create your own custom functions by using mapping scripts and use them as required. You can use
custom functions from the function palette for modeling the mapping expressions.
The execution mode for functions are supported by two types:
● Single value
● All values of context
Guidelines for Creating Mapping Script for Single Value Type of Execution
If you want to add a mapping script to a Message Mapping function palette, ensure that the following
conditions are fulfilled:
● Make sure that each function has at least one argument, and also make sure that their type is also declared
along with it.
● The supported types for mapping script are int, float, string, or boolean.
● Make sure that the function’s return type is specified and that it can only be a String.
● Functions which you declare as private cannot be seen in the Message Mapping function palette, but it can
be used in other functions internally.
● You can only use the functions of the JAR files supported by the Integration project/package that you are
working on.
 Example
import com.sap.it.api.mapping.*
def String extParam(String P1,String P2,MappingContext
String
context.getHeader(P1);
String
context.getProperty(P2);
return
}
context) {
value1 =
value2 =
value1+value2;
Guidelines for Creating Mapping Script for All Values of Context Type of
Execution
For all values of context, ensure that the following conditions are fulfilled:
● Make sure that Method does not return a value
● Method has an argument called Output, to which you can add values.
● Make sure that all the variables except Output and Mapping Context is of type array.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
33
 Example
import com.sap.it.api.mapping.*
def void extParam(String[] P1,String[] P2, Output output, MappingContext
context) {
String value1 =
context.getHeader(P1);
String value2 =
context.getProperty(P2);
output.addValue(value1);
output.addValue(value2);
}
2.4
Developing Value Mappings
Context
Procedure
2.4.1 Creating a Value Mapping Project
Context
You use this task to create a value mapping definition that represent multiple values of an object. For example,
a product in Company A is referred by the first three letters as 'IDE' whereas in Company B it is referred by
product code as ''0100IDE". When Company A sends message to Comapny B, it needs to take care of the
difference in the representations of the same product. So Company A defines an integration flow with a
Mapping element and this Mapping element contains reference to the value mapping definition. You create
such value mapping groups in a Value Mapping project type.
 Note
● Value Mapping Project does not support importing integration content.
34
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the main menu, choose
File
2. In the New Project wizard, select
New
Project… .
SAP Cloud Integration
Integration Project .
3. Choose Next.
4. Enter a project name and select the required Project Type as Value Mapping.
5. Choose Finish.
A new project is available in the Project Explorer view. By default, the new value mapping project is
configured with IFLMAP runtime node type.
2.4.2 Editing the Value Mapping Project
Context
You use this task to define value mapping groups in the value_mapping.xml file that is available under the Value
Mapping project type. You enter the group IDs for each set of agency, schema and a value of the object that
together identify a specific representation of the object.
Procedure
1. Open the value_mapping.xml in the editor and choose the Source tab page editor.
2. Enter the group ID, agency, schema and value as shown in the example below, and save the changes.
<?xml version="1.0" encoding="UTF-8"?>
<vm>
<group id="Vegetable">
<entry>
<agency>UK</agency>
<schema>Food Items</schema>
<value>Aubergine</value>
</entry>
<entry>
<agency>US</agency>
<schema>Food Items</schema>
<value>Eggplant</value>
</entry>
</group>
<group id="Herb">
<entry>
<agency>UK</agency>
<schema>Food Items</schema>
<value>Coriander</value>
</entry>
<entry>
<agency>US</agency>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
35
<schema>Food Items</schema>
<value>Cilantro</value>
</entry>
</group>
</vm>
 Tip
If you want to edit the values, you can switch to the Design tab page editor.
2.4.3 Exporting and Importing Value Mapping Groups
Context
You use this task to either import a .csv file containing value mapping groups into the Value Mapping project
type within your workspace or export the content of value_mapping.xml from your workspace and store it as
a .csv file in your file system. The format of the valid .csv file containing value mapping groups is shown in the
image below:
This task shows the steps for a simple scenario that requires you to export value mappings from your
workspace, and import the same value mappings into a workspace located in another system.
36
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. Export the value mapping groups into your local file system
a. In the Project Explorer, select the value mapping project and choose Export Value Mappings.
b. In the Export Value Mapping Groups wizard, select the required value mapping groups and choose
Next.
c. In the Export groups into a file page, enter a name for the .csv file and browse for a location to store the
file.
d. Choose Finish.
The .csv file containing the exported value mapping groups is available at the selected file location.
 Example
The image below shows an example of a vale mapping group exported into a .csv file.
2. Import the value mapping groups
a. In the Project Explorer, select the value mapping project that you want to import the value mappings to.
b. Choose Import Value Mappings.
c. In the Select a CSV File page, browse for the .csv file.
d. Choose Finish.
 Note
You cannot import value mappings that have been exported from Eclipse. If you do so, then the
existing version of the value mapping files changes.
The .csv file is imported as value_mapping.xml file, and is available under the value mapping project.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
37
 Example
The screenshot below shows how the content of the .csv file (as shown in the previous screenshot)
gets imported as the value_mapping.xml.
2.4.4 Referencing Value Mappings from a Message Mapping
Prerequisites
● You have imported message mapping (.mmap) from an On-Premise repository into the
src.main.resources.mapping folder of the integration project in your workspace.
● You have placed the required source and target WSDLs into the src.main.resources.wsdl folder of the
integration project in your workspace.
● You have added value_mapping.xml under the value mapping project.
Context
You use this procedure to configure the message mapping definition with references to a value mapping. The
value mapping referencing is required when a node value of a message needs to be converted to another
representation. The runtime can evaluate the reference only if you deploy the integration flow project
containing the message mapping, and the associated value mapping project on the same tenant.
38
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the Project Explorer view, expand the integration flow project.
2. Under src.main.resources.mapping folder, double-click the <message map>.mmap to open it in the
message mapping editor.
3. In the Message Mapping Overview, under the Signature category, provide the source and target WSDLs.
4. Choose the Definition editor tab page to view the message mapping tree structure.
5. Connect a source node item with one or more target node item to define the mapping.
6. Double-click the function icon on the connection, denoted as fx, to open the mapping relation between the
source and target elements.
For example, see the screenshot below:
7. In the Expression tab page of the Properties view, expand the Function folder.
For example, see the screenshot below:
8. Select the valuemap option under the Conversion package and drop it within the Expression tab page.
9. Connect the required node and the valuemapping function.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
39
For example, see the screenshot below:
10. Double-click the value mapping function and provide details for the value mapping parameters.
11. Save the changes.
2.4.5 Checking the Value Mapping Consistency
Context
You can execute a consistency check to validate if the content of the project is adhering to the required
definition of a value mapping.
The consistency check is executed on the value_mapping.xml file. The inconsistencies can be mainly due to
invalid content entered in the value_mapping.xml such as the value for an agency-schema pair is repeated ,
incorrect tags or missing tags.
Procedure
1. Right-click on the project and choose Execute Checks.
2. Open the Properties view, and view the result of the check.
40
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5
Configuring an Integration Flow
Context
You perform this task to configure an integration flow to represent a specific scenario.
You configure the integration flow by adding elements to the graphical model and assigning values to the
elements relevant to the scenario. The basic integration flow requires you to configure the sender and receiver
channels to enable a point-to-point process flow from the sender to a receiver.
The figure below helps you understand how a scenario is configured using an integration flow and is followed by
an explanation:
The scenario involves communication of System A with System P and System Q, where System A sends
messages to System P and System Q.
System A and System P have different communication protocols, whereas, System Q requires additional field
information in the message format sent by System A. In such a case, you do the following configurations in the
integration flow:
● Create an integration flow with a router branching out to two receivers.
● Configure conditions to route messages to the correct receiver.
● Place a mapping component in the communication between System A and System Q
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
41
After configuration, the resulting integration flow should be similar to the example shown below:
 Note
You can use an Error End event to throw the exception to default exception handlers in integration process.
2.5.1 Assigning the Sender and Receiver Participants
Context
You perform this task to assign the sender participant and receiver participant to the integration flow. To allow
the sender participant to connect to the tenant, you have to provide either the client certificates or
authenticate using the SDN username and password.
Procedure
1. Assign the Sender Participant
a. In the Model Configuration editor tab page, select the sender.
b. In the Properties page, enter a name for the sender system that may represent a single participant or a
group of logically related participants in a communication.
c. Specify the Authentication Mode.
You have the following options to authenticate the sender.
○ Role-based Authentication
Select this options if you like to configure one of the following use cases:
○ Basic authentication
○ Client certificate authentication with certificate-to-user mapping
○ Client Certificate Authentication
42
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Select this option if you like to configure the use case that the permissions of the sender are to be
checked on the tenant by evaluating the distinguished name (DN) of the client certificate (sent by
the sender).
Choose Add… to browse and add an authorized client certificate or enter the Subject DN and
Issuer DN manually.
d. Save the changes.
2. Assign the Receiver Participant
a. In the Model Configuration editor page, select the receiver.
b. In the Properties page, enter a name for the receiver system.
c. Save the changes.
2.5.2 Defining Channels
Prerequisites
● You have configured connections to an On-Premise repository if you have to obtain interface WSDL from
the repository into this project.
 Note
You can import service interfaces from ES Repository with server version 7.1 onwards. The imported
service interface WSDLs get added to src.main.resources.wsdl.
For more information on setting the connections to the repository, see Setting the Connections to OnPremise Repository under Configuring the Tool Settings [page 20].
● If you want to use a WSDL available in your local file system, you have copied the file under
src.main.resources.wsdl in your project.
Context
You perform this task to enable communication between the sender and receiver participants by defining
connectors for the sender and receiver channels of the integration flow.
Procedure
1. In the Model Configuration editor page, select the sender or receiver channel (dotted lines at sender and
receiver side).
2. To configure the channel with a saved configuration that is available as a template, choose Load Channel
Template from the context menu of the channel.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
43
3. To specify new configurations, follow the instructions mentioned in the adjacent topic for the required
connector.
 Tip
If you want to reuse the connector configurations for channels that are within or across integration
flows, then select the Copy and Paste option from the context menu of the channel.
4. To save the configurations of the channel as a template, choose Save as Template from the context menu
of the channel.
 Note
When you save the configuration of the channel as a template:
○ The tool stores the template in the workspace as <ElementTemplateName>.fst.
○ The tool saves the parameter key of the externalized parameters and not the values.
2.5.2.1
Configuring a Channel with Mail Adapter
The receiver mail adapter allows you to send encrypted messages by e-mail. The sender mail adapter can
download e-mails and access the e-mail body content as well as attachments.
Context
You configure the mail adapter either as a receiver adapter or as a sender adapter.
You can use the receiver mail adapter to send encrypted messages by e-mail.
You can use the sender mail adapter to do the following:
● Download e-mails from mailboxes using IMAP or POP3 protocol
● Access the content of the e-mail body
● Access e-mail attachments
 Note
The mailbox settings for downloading e-mails can interfere with the settings in the sender mail adapter.
For example: When using POP3 protocol, the post-processing setting Delete/Remove might not work
properly. In this case, try to configure the correct behavior in the mailbox.
 Note
To access the mail attributes (Subject, From, or To), you have to set them manually as Allowed Headers on
the Runtime Configuration tab. This adds them to a whitelist.
 Note
To access an attachment, you have to use Groovy script or JavaScript.
44
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
For more information about how to access attachments, see the documentation for the Script step.
 Note
It isn’t possible to authenticate the sender of an e-mail.
Unlike with other adapters, if you’re using the sender mail adapter, the Cloud Integration system can’t
authenticate the sender of an e-mail.
Therefore, if someone is sending you malware, for example, it is not possible to identify and block this
sender in the Cloud Integration system.
To minimize this danger, you can use the authentication mechanism of your mailbox. Bear in mind,
however, that this mechanism might not be sufficient to protect against such attacks.
There are three possible threats when processing e-mail content:
● Danger to a receiver system when forwarding e-mail content
E-mails can contain malware, such as viruses or Trojan horses.
These won’t affect the Cloud Integration system, but they can cause damage to a receiver system if it
doesn't have sufficient protection strategies.
● Danger to the Cloud Integration system
E-mail content can be designed to affect the processing runtime of a system.
Processing this content overloads the system and prevents requests from being fulfilled (denial of
service).
The Cloud Integration system is then unavailable until the problem is fixed.
● Reliability of data
Sending e-mails is anonymous. It is not possible to verify whether the sender of an e-mail really is who
they claim to be.
Even if your mailbox has an authentication mechanism, this mechanism might not be sufficient.
Therefore, data contained in an e-mail (for example, the amount of an order), isn’t reliable without
further verification.
 Caution
If you select Run Once option in the Scheduler, you see messages triggered from all the integration flows
with this setting after a software update. After the latest software is installed on a cluster, it is restarted.
You see messages from these integration flows with Run Once setting.
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
45
Procedure
1. In the Model Configuration editor, double-click the receiver channel.
2. In the Adapter Type section of the General tab page, select Mail from the Adapter Type dropdown.
3. If you configure a sender adapter, you can specify the following attributes in the Connection, Processing
and Scheduler tab pages.
Connection
Parameter
Description
Address
Specifies the host name or address of the IMAP server, for
example, mail.domain.com.
Use one of the following open ports for external mail serv­
ers:
Proxy Type
○
143 for IMAP+STARTTLS
○
993 for IMAPS
○
110 for POP3+STARTTLS
○
995 for POP3S
The type of proxy that you’re using to connect to the tar­
get system.
Select Internet if you’re connecting directly to the email
server.
Select On-Premise if you’re connecting to on-premise sys­
tem.
For more information, see .
Timeout (in ms)
Specifies the network timeout for the connection attempt
to the server. The default value is 30000.
Location ID (only if On-Premise is selected for Proxy Type)
To connect to an SAP Cloud Connector instance associ­
ated with your account, enter the location ID that you de­
fined for this instance in the destination configuration on
the cloud side.
46
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Protection
Specifies the method to use to establish an encrypted (se­
cure) connection.
○
Off
No encryption is initiated by the client.

Note
If your on-premise mail server requires SMTPS,
select Off for Protection. The SSL connection
then needs to be configured in SAP Cloud Con­
nector.
○
POP3S (only when transport protocol POP3 has been
selected when creating the channel and only when
None has been selected as Proxy Type)
The TCP connection to the server is encrypted. The S
(in POP3S) stands for secure; in technical terms, TLS
encryption is applied in that case.
○
IMAPS (only when transport protocol IMAP4 has
been selected when creating the channel and only
when None has been selected as Proxy Type)
The TCP connection to the server is encrypted. The S
(in IMAPS) stands for secure; in technical terms, TLS
encryption is applied in that case.
○
STARTTTLS Mandatory
If the server supports STARTTLS, the client initiates
encryption using TLS. If the server doesn’t support
this option, the connection stops with an error.
○
STARTTTLS Optional
If the server supports STARTTLS, the client initiates
encryption using TLS. If the server doesn’t support
this option, client and server remain connected but
communicate without encryption.
Authentication
Specifies which mechanism is used to protect user name
and password combination.
○
Plain User Name/Password
The user name and password are sent in plain text.
You should only use this option together with SSL or
TLS, as otherwise an attacker could obtain the pass­
word.
○
Encrypted User/Password
The user name and password are hashed before be­
ing sent to the server. This authentication mechanism
(CRAM-MD5 and DIGEST-MD5) is secure even with­
out encryption.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
47
Parameter
Description
Credential Name
Specifies the name of the User Credentials artifact that
contains user name and password (used to authenticate
at the email account).
Processing
Parameter
Description
Folder
Specify the IMAP folder containing the mails to be read.
(only if as Transport Protocol the option IMAP4 has
been selected)
Selection
(only if as Transport Protocol the option IMAP4 has
Specify which mails will be processed (all mails or only unread
ones).
been selected)
Max. Messages per Poll
Defines the maximal number of messages that will be read from
the email server in one polling step.
Lock Timeout (in min)
Specify the max. amount of time the lock is active during the poll­
ing process.
When you start a poll, the mail adapter will acquire a lock to be
allowed to poll the mailbox. This lock consists of the host, user­
name, and folder. The lock is shared across worker nodes and will
make sure that only one worker node polls the same mailbox/
folder at the same time. With the lock timeout you define the
max. duration for the acquired lock before it will be released auto­
matically. If the poll needs less time than the amount you defined,
the lock will be released earlier.
It can happen that the lock is not released after a poll (i.e. in case
of a node crash). In this case, the processing will only continue af­
ter the lock timed out or the lock is removed manually via the
Lock Monitor (see: ). It’s recommended to set the lock time
higher than the processing time that is required per poll. But also
make sure to not block the processing for a long time in the case
of a node crash. A poll is completed after the number of mes­
sages as defined in Max. Messages Per Poll has been processed.
48
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Post-Processing
Specify how to handle processed mails on the server.

Note
If Post-Processing is set to Mark as Read and the poll strategy
is set to poll for all mails (Selection: All), then already proc­
essed mails will be processed again at every polling interval.
If you want to use this parameter setting, make sure that
your polling interval is sufficiently large, otherwise your proc­
ess might become inefficient.
Remove Attachments
Select this options if attachments should be removed from the
mail prior to polling.
Include Original Mail
Enable this option to include the original email in the
SAP_MAIL_ORIGINAL_MESSAGE property for further processing
such as verification of the original email.
The mail adapter polls the messages from the mailbox and splits
them into header, property, and body. This splitting process, how­
ever, has the effect that signed messages can no longer be veri­
fied. To verify signed emails, you can include the original email in
the SAP_MAIL_ORIGINAL_MESSAGE property.
Scheduler
Scheduler Option
Field
Description
Schedule on Day
On Date
Specify the date on which you want
the operation to be executed.
(mails are to be polled at a specific
day)
On Time
Specify the time at which you want
the operation to be executed.
Every
Specify the interval at which you want
the operation to be executed.
Time Zone
Select the time zone that you want the
scheduler to use as a reference for the
date and time settings.
Schedule to Recur
Daily
(mails are to be polled periodically)
Specify that the messages are to be
polled daily (either at a specific time
as defined next to the checkbox On
Time or in a specific time interval as
defined next to the checkbox Every).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
49
Scheduler Option
Field
Description
Weekly
Specify that the messages are to be
polled weekly. Select the checkboxes
to indicate the days of the week on
which you want the operation to be
executed. Also specify the time
(checkbox On Time) or interval
(checkbox Every) for the schedule to
recur.
Monthly
Specify that the messages are to be
polled monthly. Select the day of the
month on which you want the opera­
tion to be executed. Also specify the
time (checkbox On Time) or interval
(checkbox Every) for the schedule to
recur.
On Time
Specify the time at which you want
the operation to be executed.
Every
Specify the interval at which you want
the operation to be executed.
Time Zone
Select the time zone that you want the
scheduler to use as a reference for the
date and time settings.
The Run Once option has been removed in the newest version of the adapter. Default values for the interval
under Schedule on Day and Schedule to Recur have been changed so that the scheduler runs every 10
seconds between 00:00 and 24:00.
4. If you configure a receiver adapter, you can specify the following settings in the Connection and Security
tab pages.
Connection
Parameter
Description
Address
Specifies the host name and (optionally) a port number of the SMTP server.
An external mail server can be used.
Use one of the following open ports for external mail servers:
50
PUBLIC
○
25 and 587 for SMTP+STARTTLS
○
465 for SMTPS
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Proxy Type
The type of proxy that you’re using to connect to the target system.
Select Internet if you’re connecting to a cloud system.
Select On-Premise if you’re connecting to on-premise system.
For more information, see .
Timeout (in ms)
Specifies the network timeout for the connection attempt to the server.
The default value is 30000. The timeout should be more than 0, but less than five mi­
nutes.
Location ID (only if On-Premise To connect to a cloud connector instance associated with your account, enter the lo­
is selected for Proxy Type)
cation ID that you defined for this instance in the destination configuration on the
cloud side.
Protection
Defines whether encryption is used. The possible values are:
○
Off
No encryption is initiated, whether the server requests it or not.

Note
If your on-premise mail server requires SMTPS, select Off for Protection. The
SSL connection then needs to be configured in SAP Cloud Connector.
○
STARTTLS Mandatory
If the server supports STARTTLS, the client initiates encryption using TLS. If the
server doesn’t support this option, the connection fails.
○
STARTTLS Optional
If the server supports the STARTTLS command, the connection is upgraded to
Transport Layer Security encryption. This works with the normal port 25.
If the server supports STARTTLS, the client initiates encryption using TLS. If the
server doesn’t support this option, client and server remain connected but com­
municate without encryption.
○
SMTPS (only when None has been selected for Proxy Type)
The TCP connection to the server is encrypted using SSL/TLS. This usually re­
quires an SSL proxy on the server side and access to the port it runs on.
Authentication
Specifies which mechanism is used to authenticate against the server with a user
name and password combination. Possible values are:
○
None
No authentication is attempted. No credential can be chosen.
○
Plain User Name/Password
The user name and password are sent in plain text. You should only use this op­
tion together with SSL or TLS, as otherwise an attacker could obtain the pass­
word.
○
Encrypted User/Password
The user name and password are hashed before being sent to the server. This au­
thentication mechanism (CRAM-MD5 and DIGEST-MD5) is secure even without
encryption.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
51
Parameter
Description
Credential Name
Specifies the name of a deployed credential to use for authentication.
Security
Parameter
Description
Signature and Encryption Type
This parameter configures encryption and signature
schemes used for sending e-mails. The message body and
attachments are encrypted with the selected scheme and
can only be decrypted by the intended recipients.
You can choose between the following types:
○
None
○
S/MIME Encryption
○
S/MIME Signature
○
S/MIME Signature and Encryption
Content Encryption Algorithm
Specifies the symmetric (block) cipher. DESede should
only be chosen if the destination system or mail client
doesn’t support AES.
Secret Key Length
Specifies the key size of the previously chosen symmetric
cipher. To increase the security, choose the maximum key
size supported by the destination.
Receiver Public Key Alias
Specifies an alias for the public key that is to be used to
encrypt the message. This key has to be part of the tenant
keystore.
The alias can be dynamically read from a header or prop­
erty using ${property.alias} or ${header.alias}. The URI pa­
rameters from the partner directory can also be dynami­
cally read using pd:${header.PartnerID}:${header.Parame­
terID}:Binary or pd:${property.PartnerID}:${property.Pa­
rameterID}:Binary.
Send Clear Text Signed Message
Sends the signed message as clear text, so that recipients
who don't have S/MIME security are able to read the mes­
sage.
Private Key Alias
Specifies an alias for the private key that is to be used to
decrypt the message. This key has to be part of the tenant
keystore. The alias can be dynamically read from a header
or property using ${header.alias}.
Signature Algorithm
Specifies the algorithm used to sign the content using the
private key.
52
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Include Certificates
Specifies whether you allow recipients to send encrypted
and signed messages to you. To allow that, make sure this
field is set to True, so that your signing certificates are se­
lected.
 Note
The parameters From, To, Cc, Bcc, Subject, Mail Body as well as the attachment name, can be
dynamically set at runtime from message headers or content.
For more information about Camel Simple Expressions, see the following: http://camel.apache.org/
simple.html
Related Information
Dynamic Parameters (Example) [page 15]
Headers and Exchange Properties [page 8]
Define Script [page 925]
2.5.2.2
Configuring a Channel with IDoc (IDoc SOAP)
Adapter
Context
The IDoc with SOAP message protocol is used when a system needs to exchange IDoc messages with another
system that accepts data over SOAP protocol.
Supported Header (Sender Adapter):
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
Supported Header (Receiver Adapter):
● SOAPAction Header
This header is part of the Web service specification.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
53
Procedure
1. If you are configuring the sender channel, ensure the sender authorization certificate is specified by
following the steps:
a. In the Model Configuration editor, select the sender.
b. In the Properties view, check if the certificate is available in the Sender Authorization table, or add a
certificate.
2. In the Model Configuration editor, double-click the sender or receiver channel.
3. Choose the General tab page and enter the details listed below.
4. In the Adapter Type field, browse and select the IDoc adapter and Message Protocol as IDoc SOAP.
5. Choose the Adapter Specific tab page and enter the details as shown in the table below:
Connection
Parameters
Description
Address
Relative endpoint address on which Cloud Integration can be reached by incoming re­
quests, for example, /GetEmployeeDetails.

Note
When you specify the endpoint address /path, a sender can also call the inte­
gration flow through the endpoint address /path/<any string> (for exam­
ple, /path/test/).
Be aware of the following related implication: When you in addition deploy an inte­
gration flow with endpoint address /path/test/, a sender using the /path/
test endpoint address will now call the newly deployed integration flow with the
endpoint address /path/test/. When you now undeploy the integration flow
with endpoint address /path/test, the sender again calls the integration flow
with endpoint address /path (original behavior). Therefore, be careful reusing
paths of services. It is better using completely separated endpoints for services.
54
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Authorization
Specifies the authorization option for the sender.

Note
The option client certificate is not recommended. Instead, it is recommended to
use the more secure option role-based authorization with certificate-to-user map­
ping.
You can select one of the following options:
○
Client Certificate: Sender authorization is checked on the tenant by evaluating
the subject/issuer distinguished name (DN) of the certificate (sent together with
the inbound request). You can use this option together with the following authen­
tication option: Client-certificate authentication (without certificate-to-user map­
ping).
○
User Role: Sender authorization is checked based on roles defined on the tenant
for the user associated with the inbound request. You can use this option to­
gether with the following authentication options:
○
Basic authentication (using the credentials of the user)
The authorizations for the user are checked based on user-to-role assign­
ments defined on the tenant.
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-to-user mapping
are checked based on user-to-role assignments defined on the tenant.
Depending on your choice, you can also specify one of the following properties:
○
Client Certificate
Allows you to select one or more client certificates (based on which the inbound
authorization is checked).
Choose Add to add a new certificate for inbound authorization for the selected
adapter. You can then select a certificate stored locally on your computer. You
can also delete certificates from the list.
For each certificate, the following attributes are displayed: Subject DN (informa­
tion used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate).
○
User Role
Allows you to select a role based on which the inbound authorization is checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided by default. It is a predefined role pro­
vided by SAP that authorizes a sender system to process messages on a tenant.
However, using SAP BTP Cockpit, you can also define custom roles for the run­
time node as well. When you choose Select, a selection of all custom roles de­
fined that way is offered.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
55
Parameters
Description

Note
Note the following:
○
You can also type in a role name. This has the same result as selecting
the role from the value help: Whether the inbound request is authenti­
cated depends on the correct user-to-role assignment defined in SAP
BTP Cockpit.
○
When you externalize the user role, the value help for roles is offered in
the integration flow configuration as well.
○
If you have selected a product profile for SAP Process Orchestration, the
value help will only show the default role ESBMessaging.send.
Parameters and Values for Sender Adapter/Authorization
Section
Parameter
Description
Connection
Authorization
Specifies the authorization option for the sender.

Note
○
Client Certificate
Sender authorization is checked on the tenant by evaluating the sub­
In the following
ject/issuer distinguished name (DN) of the certificate (sent together
cases certain fea­
with the inbound request).
tures might not be
You can use this option together with the following authentication op­
available for your
tion: client-certificate authentication (without certificate-to-user map­
current integra­
ping).
tion flow:
○
User Role
Sender authorization is checked based on roles defined on the tenant
a particular
for the user associated with the inbound request.
adapter or
You can use this option together with the following authentication op­
step was re­
tions:
leased after
○
Basic authentication (using the credentials of the user)
you created
The authorizations for the user are checked based on user-to-role
the corre­
assignments defined on the tenant.
sponding
shape in your
integration
flow.
○
○
A feature for
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-touser mapping are checked based on user-to-role assignments de­
fined on the tenant.
You are using
a product
profile other
than the one
expected.
More information:
Updating your Ex­
isting Integration
Flow [page 410]
56
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Parameter
Description
Client Certificate
Allows you to select one or more client certificates (based on which the in­
Authorization
bound authorization is checked).
(only if you have se­
lected Client
Certificate as
Authorization)
lected adapter. You can then select a certificate stored locally on your com­
User Role
Allows you to select a role based on which the inbound authorization is
Choose Add to add a new certificate for inbound authorization for the se­
puter. You can also delete certificates from the list.
checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided in any case by default. It is a pre­
defined role provided by SAP that authorizes a sender system to process
messages on a tenant.
However, you have the option to define custom roles for the runtime node
as well. When you choose Select, a selection of all custom roles defined that
way is offered.
Conditions
Parameter
Maximum Message Size
Description
This parameter allows you to configure a maximum size
for inbound messages (smallest value for a size limit is 1
MB). All inbound messages that exceed the specified size
(per integration flow and on the runtime node where the
integration flow is deployed) are blocked.
To configure the maximum message size, you can specify
the following parameters:
○
Body Size
○
Attachment Size
If a message is rejected because it exceeds the configured
limit, the sender receives an error message.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
57
Connection
Parameters
Description
Address
Endpoint address on which Cloud Integration posts the outbound mes­
sage, for example http://<host>:<port>/payment.
You can dynamically configure this field by entering an expression such
like ${header.a} or ${property.a}, depending on whether you
like to use a header or an Exchange property for dynamic configuration.
If you do that, at runtime the value of (header or exchange property) a,
as contained in the incoming message, will be written into the Camel
header CamelDestinationOverrideUrl and will be used to send
the message to.
Also in case the CamelDestinationOverrideUrl header has
been set by another process step (for example, a Content Modifier), its
value will be overwritten.
The endpoint URL that is actually used at runtime is displayed in the
message processing log (MPL) in the message monitoring application
(MPL property RealDestinationUrl). Note that you can manually
configure the endpoint URL using the Address attribute of the adapter.
However, there are several ways to dynamically override the value of this
attribute (for example, by using the Camel header CamelHttpUri).
58
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Proxy Type
The type of proxy that you are using to connect to the target system:
○
Select Internet if you are connecting to a cloud system.
○
Select On-Premise if you are connecting to an on-premise system.

Note
If you select the On-Premise option, the following restrictions
apply to other parameter values:
○
Do not use an HTTPS address for Address, as it leads to er­
rors when performing consistency checks or during deploy­
ment.
○
Do not use the option Client Certificate for the
Authentication parameter, as it leads to errors when per­
forming consistency checks or during deployment.

Note
If you select the On-Premise option and use the SAP Cloud Con­
nector to connect to your on-premise system, the Address field
of the adapter references a virtual address, which has to be con­
figured in the SAP Cloud Connector settings.
○
If you select Manual, you can manually specify Proxy Host and Proxy
Port (using the corresponding entry fields).
Furthermore, with the parameter URL to WSDL you can specify a
Web Service Definition Language (WSDL) file defining the WS pro­
vider endpoint (of the receiver). You can specify the WSDL by either
uploading a WSDL file from your computer (option Upload from File
System) or by selecting an integration flow resource (which needs to
be uploaded in advance to the Resources view of the integration
flow).
This option is only available if you have chosen a Process Orchestra­
tion product profile.
Location ID only in case On-Premise is se­
lected for Proxy Type.
To connect to a cloud connector instance associated with your account,
enter the location ID that you defined for this instance in the destination
configuration on the cloud side. You can also enter an expression such
like ${header.headername} or ${property.propertyname}
(example) to dynamically read the value from a header or a property.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
59
Parameters
Description
IDoc Content Type
There are the following options:
Application/x-sap.doc
○
Allows only single IDoc record for each request.
○
Enables message sequencing.
○
Enables Exactly-Once processing.

Note
Enables Exactly-Once processing in the backend, if the header
SapMessageId is set.
Text/XML
○
60
PUBLIC
Allows multiple IDoc records for each request.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Authentication
You can select one of the following authentication methods:
○
Basic
The tenant authenticates itself against the receiver using user cre­
dentials (user name and password).
It is a prerequisite that user credentials are specified in a User
Credentials artifact and deployed on the related tenant. Enter the
name of this artifact in the Credential Name field of the adapter.
○
Client Certificate
The tenant authenticates itself against the receiver using a client
certificate.
This option is only available if you have selected Internet for the
Proxy Type parameter.
It is a prerequisite that the required key pair is installed and added to
a keystore. This keystore has to be deployed on the related tenant.
The receiver side has to be configured appropriately.
○
None
○
Principal Propagation
The tenant authenticates itself against the receiver by forwarding
the principal of the inbound user to the cloud connector, and from
there to the back end of the relevant on-premise system

Note
This authentication method can only be used with the following
sender adapters: HTTP, SOAP, IDoc, AS2.

Note
Note that the token for principal propagation expires after 30
minutes.
If it takes longer than 30 minutes to process the data between
the sender and receiver channel, the token for principal propa­
gation expires, which leads to errors in message processing.

Note
You can externalize all attributes related to the configuration of the
authentication option. This includes the attributes with which you
specify the authentication option as such, as well as all attributes
with which you specify further security artifacts that are required for
any configurable authentication option (Private Key Alias or
Credential Name).
Apply one of the following recommendations when externalizing
such attributes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
61
Parameters
Description
○
Externalize all attributes related to the configuration of all op­
tions, for example, Authentication and Credential Name and
Private Key Alias.
○
Externalize only one of the following attributes: Private Key Alias
or Credential Name.
Avoid incomplete externalization, for example, only externalizing
the attribute for the Authentication parameter but not the related
Credential Name parameter. In such cases, the integration flow con­
figuration (based on the externalized parameters) cannot work prop­
erly.
The reason for this is the following: If you have externalized the
Authentication parameter and only the Private Key Alias parameter
(but not Credential Name), all authentication options in the integra­
tion flow configuration dialog (Basic, Client Certificate, and None) are
selectable in a dropdown list. However, if you now select Basic from
the dropdown list, no Credential Name can be configured.
Credential Name (only available if you have
selected Basic for the Authentication pa­
rameter)
Name of the User Credentials artifact that contains the credentials for
basic authentication
You can dynamically configure the Credential Name field of the adapter
by using a Simple Expression (see http://camel.apache.org/simple.html
. For example, you can dynamically define the Credential Name of the
receiver adapter by referencing a message header $
{header.MyCredentialName} or a message property $
{property.MyCredentialName}.
Private Key Alias (only available if you have
selected Client Certificate for the
Authentication parameter)
Specifies an alias to indicate a specific key pair to be used for the authen­
tication step.
You can dynamically configure the Private Key Alias parameter by speci­
fying either a header or a property name in one of the following ways: $
{header.headername} or $ {property.propertyname}.
Be aware that in some cases this feature can have a negative impact on
performance.
Timeout
Specifies the time (in milliseconds) that the client will wait for a response
before the connection is being interrupted.
The default value is 60000 milliseconds (1 minute).
Compress Message
Enables the WS endpoint to send compressed request messages to the
WS Provider and to indicate the WS Provider that it can handle com­
pressed response messages.
Allow Chunking
62
PUBLIC
Used for enabling HTTP chunking of data while sending messages.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Return HTTP Response Code as Header
When selected, writes the HTTP response code received in the response
message from the called receiver system into the header
CamelHttpResponseCode.
This feature is disabled by default.

Note
You can use this header, for example, to analyze the message proc­
essing run (when level Trace has been enabled for monitoring). Fur­
thermore, you can use this header to define error handling steps af­
ter the integration flow has called the IDoc SOAP receiver.
You cannot use the header to change the return code since the re­
turn code is defined in the adapter and cannot be changed.
Clean-up Request Headers
Select this option to clean up the adapter specific- headers after the re­
ceiver call.
6. Save the changes.
Results
In the Model Configuration editor, when you place the cursor on the sender or receiver message flows, you can
see the SOAP Address and WSDL information.
2.5.2.3
Configuring a Channel with SOAP (SAP RM)
Adapter
Prerequisites
Context
You perform this task to configure a sender or receiver channel with the SOAP communication protocol, with
SAP RM as the message protocol. SAP RM is a simplified communication protocol for asynchronous Web
service communication that does not require the use of Web Service Reliable Messaging (WS-RM) standards. It
offers a proprietary extension to ensure reliability on the ABAP back-end side of both Web service consumers
and providers. For more information, see http://wiki.scn.sap.com/wiki/display/ABAPConn/Plain+SOAP
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
63
You have the option to set SOAP headers using Groovy script (for example, using the Script step).
Supported Header (Sender Adapter):
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
Supported Header (Receiver Adapter):
● SOAPAction Header
This header is part of the Web service specification.
Procedure
1. Choose the General tab page and enter the details below.
2. In the Adapter Type field, browse and select the SOAP adapter, and SAP RM as the Message Protocol.
3. Choose the Adapter Specific tab page and enter the details as shown in the table below:
 Note
Note regarding WSDL import:
Parameters and Values of Sender SOAP (SAP RM) Adapter - Connection Details
Parameters
Description
Address
Relative endpoint address at which the ESB listens to the incoming requests, for
example, /HCM/GetEmployeeDetails.

Note
When you specify the endpoint address /path, a sender can also call the in­
tegration flow through the endpoint address /path/<any string> (for
example, /path/test/).
Be aware of the following related implication: When you in addition deploy an
integration flow with endpoint address /path/test/, a sender using the /
path/test endpoint address will now call the newly deployed integration
flow with the endpoint address /path/test/. When you now undeploy the
integration flow with endpoint address /path/test, the sender again calls
the integration flow with endpoint address /path (original behavior). There­
fore, be careful reusing paths of services. It is better using completely sepa­
rated endpoints for services.
64
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
URL to WSDL
URL to the WSDL defining the WS provider endpoint (of the receiver). You can
specify the WSDL by selecting a source to browse for a WSDL either from an OnPremise ES Repository or your local workspace.
In the Resources view, you can upload an individual WSDL file or an archive file
(file ending with .zip) that contains multiple WSDLs or XSDs, or both. For ex­
ample, you can upload a WSDL that contains an imported XSD referenced by an
xsd:import statement. This means that if you want to upload a WSDL and de­
pendent resources, you need to add the parent file along with its dependencies in
a single archive (.zip file).
You can download the WSDL by using the Integration Operations user interface
(in the Properties view, Services tab, under the integration flow-specific end­
point). For newly deployed integration flows, the WSDL that is generated by the
download corresponds to the endpoint configuration in the integration flow.
The WSDL download does not work for WSDLs with external references because
these WSDLs cannot be parsed.
Processing Settings
This feature corresponds to an older version of this adapter. The reason why it is
shown can be that you either have selected a certain product profile other than
SAP Cloud Integration or (in case you have selected SAP Cloud Integration prod­
uct profile) that you continue editing an integration flow which exists already for a
certain time. If you still like to use this feature, you have the following options:
○
Standard: Message is executed with WS standard processing mechanism.
Errors are not returned to the consumer.
○
Robust: WSDL provider invokes service synchronously and the processing
errors are returned to the consumer.
When you use the up-to-date adapter version, the processing setting Robust is
implicit activated.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
65
Parameters
Description
Authorization
Specifies the authorization option for the sender.

Note

Note
In the following cases certain
The option client certificate is not recommended. Instead, it is recommended
features might not be available
to use the more secure option role-based authorization with certificate-to-
for your current integration
user mapping.
flow:
○
A feature for a particular
adapter or step was re­
leased after you created
You can select one of the following options:
○
ing the subject/issuer distinguished name (DN) of the certificate (sent to­
the corresponding shape
gether with the inbound request). You can use this option together with the
in your integration flow.
○
following authentication option: Client-certificate authentication (without
You are using a product
profile other than the one
expected.
Client Certificate: Sender authorization is checked on the tenant by evaluat­
certificate-to-user mapping).
○
User Role: Sender authorization is checked based on roles defined on the
tenant for the user associated with the inbound request. You can use this op­
tion together with the following authentication options:
More information: Updating
○
your Existing Integration Flow
[page 410]
Basic authentication (using the credentials of the user)
The authorizations for the user are checked based on user-to-role as­
signments defined on the tenant.
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-to-user
mapping are checked based on user-to-role assignments defined on the
tenant.
Depending on your choice, you can also specify one of the following properties:
○
Client Certificate
Allows you to select one or more client certificates (based on which the in­
bound authorization is checked).
Choose Add to add a new certificate for inbound authorization for the se­
lected adapter. You can then select a certificate stored locally on your com­
puter. You can also delete certificates from the list.
For each certificate, the following attributes are displayed: Subject DN (infor­
mation used to authorize the sender) and Issuer DN (information about the
certificate authority that issues the certificate).
○
User Role
Allows you to select a role based on which the inbound authorization is
checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided by default. It is a predefined role
provided by SAP that authorizes a sender system to process messages on a
tenant. However, using SAP BTP Cockpit, you can also define custom roles
for the runtime node as well. When you choose Select, a selection of all cus­
tom roles defined that way is offered.
66
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description

Note
Note the following:
○
You can also type in a role name. This has the same result as select­
ing the role from the value help: Whether the inbound request is au­
thenticated depends on the correct user-to-role assignment de­
fined in SAP BTP Cockpit.
○
When you externalize the user role, the value help for roles is of­
fered in the integration flow configuration as well.
○
If you have selected a product profile for SAP Process Orchestra­
tion, the value help will only show the default role
ESBMessaging.send.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
67
Parameters and Values for Sender Adapter/Authorization
Section
Parameter
Description
Connection
Authorization
Specifies the authorization option for the sender.

Note
○
Client Certificate
Sender authorization is checked on the tenant by evaluating the sub­
In the following
ject/issuer distinguished name (DN) of the certificate (sent together
cases certain fea­
with the inbound request).
tures might not be
You can use this option together with the following authentication op­
available for your
tion: client-certificate authentication (without certificate-to-user map­
current integra­
tion flow:
○
User Role
A feature for
Sender authorization is checked based on roles defined on the tenant
a particular
for the user associated with the inbound request.
adapter or
You can use this option together with the following authentication op­
step was re­
tions:
leased after
○
Basic authentication (using the credentials of the user)
you created
The authorizations for the user are checked based on user-to-role
the corre­
assignments defined on the tenant.
sponding
shape in your
integration
flow.
○
ping).
○
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-touser mapping are checked based on user-to-role assignments de­
fined on the tenant.
You are using
a product
profile other
than the one
expected.
More information:
Updating your Ex­
isting Integration
Flow [page 410]
68
PUBLIC
Client Certificate
Allows you to select one or more client certificates (based on which the in­
Authorization
bound authorization is checked).
(only if you have se­
lected Client
Certificate as
Authorization)
lected adapter. You can then select a certificate stored locally on your com­
Choose Add to add a new certificate for inbound authorization for the se­
puter. You can also delete certificates from the list.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Parameter
Description
User Role
Allows you to select a role based on which the inbound authorization is
checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided in any case by default. It is a pre­
defined role provided by SAP that authorizes a sender system to process
messages on a tenant.
However, you have the option to define custom roles for the runtime node
as well. When you choose Select, a selection of all custom roles defined that
way is offered.
 Note
For Exactly-Once handling, the sender SOAP (SAP RM) adapter save the protocol-specific message ID
in the header SapMessageIdEx. If this header is set, SOAP (SAP RM) receiver use the content of this
header as the message ID for outbound communication. Usually, this is the desired behavior and
enables the receiver to identify any duplicates. However, if the sender system is also the receiver
system, or several variants of the message are sent to the same system (for example, in an external call
or multicast), the receiver system will incorrectly identify these messages as duplicates. In this case,
the header SapMessageIdEx must be deleted (for example, using a script) or overwritten with a new
generated message ID. This deactivates Exactly-Once processing (that is, duplicates are no longer
recognized by the protocol).
If you want to set SOAP headers via the Camel header, the following table shows which Camel header
corresponds to which SOAP header.
Which Camel header corresponds to which SOAP header
SOAP (SAP RM) Header
Camel Header
MessageId
SapMessageIdEx und SapMessageId
QualityOfService
SapPlainSoapQoS
ExactlyOnce
ExactlyOnce
ExactlyOnceInOrder
ExactlyOnceInOrder
QueueId
SapPlainSoapQueueId
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
69
Conditions
Parameter
Description
Maximum Message Size
This parameter allows you to configure a maximum size
for inbound messages (smallest value for a size limit is 1
MB). All inbound messages that exceed the specified size
(per integration flow and on the runtime node where the
integration flow is deployed) are blocked.
To configure the maximum message size, you can specify
the following parameters:
○
Body Size
○
Attachment Size
If a message is rejected because it exceeds the configured
limit, the sender receives an error message.
 Note
Note regarding WSDL import:
Parameters and Values of Receiver SOAP (SAP RM) Adapter - Connection Details
Parameters
Description
Address
Endpoint address at which the ESB posts the outgoing message, for example http://
<host>:<port>/payment.
You can dynamically configure the address field of the SOAP (SAP RM) Adapter.
When you specify the address field of the adapter as ${header.a} or ${property.a}, at
runtime the value of header a or exchange property (as contained in the incoming mes­
sage) will be written into the Camel header CamelDestinationOverrideUrl and will be
used in runtime to send the message to.
Also in case the CamelDestinationOverrideUrl header has been set by another process
step (for example, a Content Modifier), its value will be overwritten.
The endpoint URL that is actually used at runtime is displayed in the message process­
ing log (MPL) in the message monitoring application (MPL property
RealDestinationUrl). Note that you can manually configure the endpoint URL
using the Address attribute of the adapter. However, there are several ways to dynami­
cally override the value of this attribute (for example, by using the Camel header
CamelHttpUri).
Proxy Type
The type of proxy that you are using to connect to the target system.
Select Internet if you are connecting to a cloud system.
Select On-Premise if you are connecting to on-premise system.
For more information, see .
70
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Location ID only in case OnPremise is selected for Proxy
Type.
To connect to a cloud connector instance associated with your account, enter the loca­
tion ID that you defined for this instance in the destination configuration on the cloud
side. You can also enter ${header.headername} or ${property.propertyname} to dy­
namically read the value from a header or a property.
URL to WSDL
URL to the WSDL defining the WS provider endpoint (of the receiver). You can specify
the WSDL by selecting a source to browse for a WSDL either from an On-Premise ES
Repository or your local workspace.
In the Resources view, you can upload an individual WSDL file or an archive file (file
ending with .zip) that contains multiple WSDLs or XSDs, or both. For example, you
can upload a WSDL that contains an imported XSD referenced by an xsd:import
statement. This means that if you want to upload a WSDL and dependent resources,
you need to add the parent file along with its dependencies in a single archive (.zip
file).
Service
Name of the selected service contained in the referenced WSDL.
Endpoint
Name of the selected port of a selected service (that you provide in the Service Name
field) contained in the referenced WSDL.

Note
Using the same port names across receivers is not supported in older versions of
the receiver adapters. To use the same port names, you need to create a copy of
the WSDL and use it.
Operation Name
Name of the operation of the selected service (that you provide in the Service Name
field) contained in the referenced WSDL.
Private Key Alias
Allows you to enter the private key alias name that gets the private key from the key­
store and authenticates you to the receiver in an HTTPS communication.

Note
If you have selected the Connect using Basic Authentication option, this field is not
visible.
You can dynamically configure the Private Key Alias property by specifying either a
header or a property name in one of the following ways:
$ {header.headername} or $ {property.propertyname}
Please be aware that in some cases this feature can have a negative impact on per­
formance.
Compress Message
Enables the WS endpoint to send compressed request messages to the WS provider
and to indicate to the WS provider that it can handle compressed response messages.
Allow Chunking
Used for enabling HTTP chunking of data while sending messages.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
71
Parameters
Description
Return HTTP Response Code
as Header
When selected, writes the HTTP response code received in the response message from
the called receiver system into the header CamelHttpResponseCode.
This feature is disabled by default.

Note
You can use this header, for example, to analyze the message processing run
(when level Trace has been enabled for monitoring). Furthermore, you can use this
header to define error handling steps after the integration flow has called the
SOAP (SAP RM) receiver.
You cannot use the header to change the return code since the return code is de­
fined in the adapter and cannot be changed.
Clean Up Request Headers
Select this option to clean up the adapter specific-headers after the receiver call.
Request Timeout
Specifies the time (in milliseconds) that the client will wait for a response before the
connection is interrupted.
The default value is 60000 milliseconds (1 minute).
Note that the timeout setting has no influence on the Transmission Control Protocol
(TCP) timeout if the receiver or any additional component interconnected between the
Cloud Integration tenant and the receiver has a lower timeout. For example, consider
that you have configured a receiver channel timeout of 10 minutes and there is another
component involved with a timeout of 5 minutes. If nothing is transferred for a period
of time, the connection will be closed after the fifth minute. In HTTP communication
spanning multiple components (for example, from a sender, through the load balancer,
to a Cloud Integration tenant, and from there to a receiver), the actual timeout period is
influenced by each of the timeout settings of the individual components that are inter­
connected between the sender and receiver (to be more exact, of those components
that can control the TCP session). The component or device with the lowest number
set for the idle session timeout will determine the timeout that will be used.
72
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Authentication
You can select one of the following authentication methods:
○
Basic
The tenant authenticates itself against the receiver using user credentials (user
name and password).
It is a prerequisite that user credentials are specified in a Basic Authentication ar­
tifact and deployed on the related tenant.
○
Client Certificate
The tenant authenticates itself against the receiver using a client certificate.
It is a prerequisite that the required key pair is installed and added to a keystore.
This keystore has to be deployed on the related tenant. The receiver side has to be
configured appropriately.
○
None
○
Principal Propagation
The tenant authenticates itself against the receiver by forwarding the principal of
the inbound user to the cloud connector, and from there to the back end of the rel­
evant on-premise system

Note
This authentication method can only be used with the following sender adapt­
ers: HTTP, AS2, SOAP, IDOC

Note
Please note that the token for principal propagation expires after 30 minutes.
If it takes longer than 30 minutes to process the data between the sender and
receiver channel, the token for principal propagation expires, which leads to
errors in message processing.

Note
In the following cases certain features might not be available for your current
integration flow:
○
A feature for a particular adapter or step was released after you created
the corresponding shape in your integration flow.
○
You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
You can dynamically configure the Credential Name field of the adapter by using a Sim­
ple Expression (see http://camel.apache.org/simple.html
. For example, you can dy­
namically define the Credential Name of the receiver adapter by referencing a message
header ${header.MyCredentialName} or a message property $
{property.MyCredentialName}.
4. Save the configurations in both the sender and receiver channel editors.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
73
Results
In the Model Configuration editor, when you place the cursor on the sender or receiver message flows, you can
see the SOAP Address and WSDL information.
Related Information
https://wiki.scn.sap.com/wiki/display/ABAPConn/Plain+SOAP?original_fqdn=wiki.sdn.sap.com
2.5.2.4
Configuring a Channel with SOAP (SOAP 1.x)
Adapter
Prerequisites
Since the adapter implements web services security, you have ensured that the related certificates are
deployed in the truststore.
Context
SOAP (SOAP 1.x) allows you to deploy web services that support SOAP 1.1 and SOAP 1.2. SOAP 1.x provides you
a framework for binding SOAP to underlying protocols. The binding specification in the WSDL defines the
message format and protocol details for a web service.
You have the option to set SOAP headers using Groovy script (for example, using the Script step).
Supported Header (Sender Adapter):
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
Supported Header (Receiver Adapter):
● SOAPAction Header
This header is part of the Web service specification.
74
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. If you are configuring the sender channel, ensure the sender authorization certificate is specified by
following the steps below:
a. In the Model Configuration editor, select the sender.
b. In the Properties view, check if the certificate is available in the Sender Authorization table, else add a
certificate.
2. In the Model Configuration editor, double-click the sender or receiver channel.
3. In the Adapter Type section of the General tab page, select SOAP from the Adapter Type dropdown and
select SOAP 1.x as the message protocol.
4. Choose the Adapter-Specific tab page and enter the details as shown in the table below. The attributes
depend on whether you configure a sender or a receiver channel::
 Note
Note regarding WSDL import:
Connection
Parameter
Description
Address
Relative endpoint address on which the integration runtime expects incoming re­
quests, for example, /HCM/GetEmployeeDetails.

Note
When you specify the endpoint address /path, a sender can also call the inte­
gration flow through the endpoint address /path/<any string> (for exam­
ple, /path/test/).
Be aware of the following related implication: When you in addition deploy an inte­
gration flow with endpoint address /path/test/, a sender using the /path/
test endpoint address will now call the newly deployed integration flow with the
endpoint address /path/test/. When you now undeploy the integration flow
with endpoint address /path/test, the sender again calls the integration flow
with endpoint address /path (original behavior). Therefore, be careful reusing
paths of services. It is better using completely separated endpoints for services.
Service Definition
Specifies the source of the service definition.
You can select the following options:
○
Manual: You configure the service behavior manually by the parameters shown
below.
○
Use WS-Addressing
(only if Service Definition:
WSDL: The service behavior is defined via WSDL configuration.
Select this option to accept addressing information from message information head­
ers during runtime.
Manual is selected)
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
75
Parameter
Description
Message Exchange Pattern
Specifies the kind of messages that are processed by the adapter.
(only if Service
○
Request-Reply: The adapter processes both request and response.
Definition:Manual is selected

Tip
When using this option, the response code can accidentally be overwritten
by a called receiver. Assume that, for example the integration flow contains
an SOAP sender adapter (with a Request-Reply pattern) and an HTTP re­
ceiver adapter. Let's furthermore assume that the HTTP receiver returns an
HTTP response code 202 (as it has accepted the call). In this case, the SOAP
sender adapter returns in the reply also HTTP response code 202 instead of
200 (OK). To overcome this situation, you have to remove the header
CamelHttpResponseCode before the message reply is sent back to the
sender.
○
URL to WSDL
(only if as Service Definition
the option WSDL is selected)
One-Way
URL to the WSDL defining the WS provider endpoint (of the receiver). You can specify
the WSDL by selecting a source to browse for a WSDL either from an On-Premise ES
Repository or your local workspace.
In the Resources view, you can upload an individual WSDL file or an archive file (file
ending with .zip) that contains multiple WSDLs or XSDs, or both. For example, you
can upload a WSDL that contains an imported XSD referenced by an xsd:import
statement. This means that if you want to upload a WSDL and dependent resources,
you need to add the parent file along with its dependencies in a single archive (.zip
file).

Note
○
If you specify a WSDL, you also have to specify the name of the selected
service and the name of the port selected for this service. These fields must
have a namespace prefix.
Expected format: <namespace>:<service_name>
Example: p1:MyService
○
Don't use WSDLs with blanks.
We recommend that you don't use blanks in WSDL names or directories, as
this can lead to runtime issues.
You can download the WSDL by using the Integration Operations user interface (in the
Properties view, Services tab, under the integration flow-specific endpoint). For newly
deployed integration flows, the WSDL that is generated by the download corresponds
to the endpoint configuration in the integration flow.
The WSDL download does not work for WSDLs with external references because
these WSDLs can't be parsed.
For more information on how to work with WSDL resources, refer to the following blog:
Cloud Integration – Usage of WSDLs in the SOAP Adapter
76
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Service
Name of the selected service contained in the referenced WSDL.
Endpoint
Name of the selected endpoint of a selected service (that you provide in the Service
Name field) contained in the referenced WSDL
(only if Service Definition: The
adapter only: WSDL is se­
lected)
Processing Settings
○
WS Standard: Message is executed with WS standard processing mechanism. Er­
rors are not returned to the consumer.
(only if one of the following op­
○
Robust: WSDL provider invokes service synchronously and the processing errors
are returned to the consumer.
tions is selected:
○
Service Definition: WSDL
○
Service Definition: Manual
andMessage Exchange
Pattern: One-Way
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
77
Parameter
Description
Authorization
Specifies the authorization option for the sender.

Note
The option client certificate is not recommended. Instead, it is recommended to
use the more secure option role-based authorization with certificate-to-user map­
ping.
You can select one of the following options:
○
Client Certificate: Sender authorization is checked on the tenant by evaluating
the subject/issuer distinguished name (DN) of the certificate (sent together with
the inbound request). You can use this option together with the following authen­
tication option: Client-certificate authentication (without certificate-to-user map­
ping).
○
User Role: Sender authorization is checked based on roles defined on the tenant
for the user associated with the inbound request. You can use this option to­
gether with the following authentication options:
○
Basic authentication (using the credentials of the user)
The authorizations for the user are checked based on user-to-role assign­
ments defined on the tenant.
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-to-user mapping
are checked based on user-to-role assignments defined on the tenant.
Depending on your choice, you can also specify one of the following properties:
○
Client Certificate
Allows you to select one or more client certificates (based on which the inbound
authorization is checked).
Choose Add to add a new certificate for inbound authorization for the selected
adapter. You can then select a certificate stored locally on your computer. You
can also delete certificates from the list.
For each certificate, the following attributes are displayed: Subject DN (informa­
tion used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate).
○
User Role
Allows you to select a role based on which the inbound authorization is checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided by default. It is a predefined role pro­
vided by SAP that authorizes a sender system to process messages on a tenant.
However, using SAP BTP Cockpit, you can also define custom roles for the run­
time node as well. When you choose Select, a selection of all custom roles de­
fined that way is offered.
78
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description

Note
Note the following:
○
You can also type in a role name. This has the same result as selecting
the role from the value help: Whether the inbound request is authenti­
cated depends on the correct user-to-role assignment defined in SAP
BTP Cockpit.
○
When you externalize the user role, the value help for roles is offered in
the integration flow configuration as well.
○
If you have selected a product profile for SAP Process Orchestration, the
value help will only show the default role ESBMessaging.send.
Parameters and Values for Sender Adapter/Authorization
Section
Parameter
Description
Connection
Authorization
Specifies the authorization option for the sender.

Note
○
Client Certificate
Sender authorization is checked on the tenant by evaluating the sub­
In the following
ject/issuer distinguished name (DN) of the certificate (sent together
cases certain fea­
with the inbound request).
tures might not be
You can use this option together with the following authentication op­
available for your
tion: client-certificate authentication (without certificate-to-user map­
current integra­
ping).
tion flow:
○
○
User Role
A feature for
Sender authorization is checked based on roles defined on the tenant
a particular
for the user associated with the inbound request.
adapter or
You can use this option together with the following authentication op­
step was re­
tions:
leased after
○
The authorizations for the user are checked based on user-to-role
the corre­
assignments defined on the tenant.
sponding
shape in your
○
integration
flow.
○
Basic authentication (using the credentials of the user)
you created
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-touser mapping are checked based on user-to-role assignments de­
fined on the tenant.
You are using
a product
profile other
than the one
expected.
More information:
Updating your Ex­
isting Integration
Flow [page 410]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
79
Section
Parameter
Description
Client Certificate
Allows you to select one or more client certificates (based on which the in­
Authorization
bound authorization is checked).
(only if you have se­
lected Client
Certificate as
Authorization)
lected adapter. You can then select a certificate stored locally on your com­
User Role
Allows you to select a role based on which the inbound authorization is
Choose Add to add a new certificate for inbound authorization for the se­
puter. You can also delete certificates from the list.
checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided in any case by default. It is a pre­
defined role provided by SAP that authorizes a sender system to process
messages on a tenant.
However, you have the option to define custom roles for the runtime node
as well. When you choose Select, a selection of all custom roles defined that
way is offered.
Conditions
Parameter
Maximum Message Size
Description
This parameter allows you to configure a maximum size
for inbound messages (smallest value for a size limit is 1
MB). All inbound messages that exceed the specified size
(per integration flow and on the runtime node where the
integration flow is deployed) are blocked.
To configure the maximum message size, you can specify
the following parameters:
○
Body Size
○
Attachment Size
If a message is rejected because it exceeds the configured
limit, the sender receives an error message.
80
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
Note regarding WSDL import:
Connection
Parameter
Description
Address
Endpoint address at which the ESB Bus posts the outgoing message, for example,
http://<host>:<port>/payment.
You can dynamically configure the address field of the SOAP (SOAP 1.x) adapter.
If you specify the address field of the adapter as ${header.a} or $
{property.a}, the value of a header or an exchange property (from the incoming
message) is written into Camel header CamelDestinationOverrideUrl at
runtime. This value will be used as the address to send the message to.
Also, if the CamelDestinationOverrideUrl header has been set by another process step
(for example, a Content Modifier), its value is overwritten.
The endpoint URL that is used at runtime is displayed in the message processing log
(MPL) in the message monitoring application (MPL property
RealDestinationUrl). Note that you can manually configure the endpoint URL
using the Address attribute of the adapter. However, there are several ways to dynami­
cally override the value of this attribute (for example, by using the Camel header
CamelDestinationOverrideUrl).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
81
Parameter
Description
Proxy Type
The type of proxy that you are using to connect to the target system:
○
Select Internet if you are connecting to a cloud system.
○
Select On-Premise if you are connecting to an on-premise system.

Note
If you select the On-Premise option, the following restrictions apply to other
parameter values:
○
Do not use an HTTPS address for Address, as it leads to errors when per­
○
Do not use the option Client Certificate for the Authentication parameter,
forming consistency checks or during deployment.
as it leads to errors when performing consistency checks or during de­
ployment.

Note
If you select the On-Premise option and use the SAP Cloud Connector to con­
nect to your on-premise system, the Address field of the adapter references a
virtual address, which has to be configured in the SAP Cloud Connector set­
tings.
○
If you select Manual, you can manually specify Proxy Host and Proxy Port (using
the corresponding entry fields).
Furthermore, with the parameter URL to WSDL you can specify a Web Service
Definition Language (WSDL) file defining the WS provider endpoint (of the re­
ceiver). You can specify the WSDL by either uploading a WSDL file from your com­
puter (option Upload from File System) or by selecting an integration flow re­
source (which needs to be uploaded in advance to the Resources view of the inte­
gration flow).
This option is only available if you have chosen a Process Orchestration product
profile.
To connect to a Cloud Connector instance associated with your account, enter the lo­
Location ID (only available if
you have selected On-Premise cation ID that you defined for this instance in the destination configuration on the
for Proxy Type)
cloud side. You can also enter ${header.headername} or $
{property.propertyname} to dynamically read the value from a header or a
property.
82
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
URL to WSDL
URL to the WSDL defining the WS provider endpoint (of the receiver). You can specify
the WSDL by selecting a source to browse for a WSDL either from an On-Premise ES
Repository or your local workspace.
In the Resources view, you can upload an individual WSDL file or an archive file (file
ending with .zip) that contains multiple WSDLs or XSDs, or both. For example, you
can upload a WSDL that contains an imported XSD referenced by an xsd:import
statement. This means that if you want to upload a WSDL and dependent resources,
you need to add the parent file along with its dependencies in a single archive (.zip
file).

Note
○
If you specify a WSDL, you also have to specify the name of the selected serv­
ice and the name of the port selected for this service. These fields must have
a namespace prefix.
Expected format: <namespace>:<service_name>
Example: p1:MyService
○
Don't use WSDLs with blanks:
It is not recommended to use blanks in WSDL names or directories. This
could lead to runtime issues.
For more information on how to work with WSDL resources, see the following blog:
Cloud Integration – Usage of WSDLs in the SOAP Adapter
Service Name
Name of the selected service contained in the referenced WSDL
Port Name
Name of the selected port of a selected service (that you provide in the Service Name
field) contained in the referenced WSDL.

Note
Using the same port names across receivers isn't supported in older versions of
the receiver adapters. To use the same port names, you need to create a copy of
the WSDL and use it.
Operation Name
Name of the operation of a selected service (that you provide in the Service Name
field) contained in the referenced WSDL.
Connect Without Client
Authentication
This feature corresponds to the Authentication setting None and is shown when you
use an older version of this adapter. It is shown either because you have selected a
product profile other than SAP Cloud Integration or (if you have selected the SAP
Cloud Integration product profile) because you are editing an integration flow that has
already existed for some time.
Select this option to connect the tenant anonymously to the receiver system.
Select this option if your server allows connections without authentication at the
transport level.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
83
Parameter
Description
Connect Using Basic
Authentication
This feature corresponds to the Authentication setting Basic and is shown when you
use an older version of this adapter. It is shown either because you have selected a
product profile other than SAP Cloud Integration or (if you have selected the SAP
Cloud Integration product profile) because you are editing an integration flow that has
already existed for some time.
Select this option to allow the tenant to connect to the receiver system using the de­
ployed basic authentication credentials.
Credential Name: Enter the credential name of the username-password pair specified
during the deployment of basic authentication credentials on the cluster.
84
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Authentication
You can select one of the following authentication methods:
○
Basic
The tenant authenticates itself against the receiver using user credentials (user
name and password).
It is a prerequisite that user credentials are specified in a User Credentials artifact
and deployed on the related tenant. Enter the name of this artifact in the
Credential Name field of the adapter.
○
Client Certificate
The tenant authenticates itself against the receiver using a client certificate.
This option is only available if you have selected Internet for the Proxy Type pa­
rameter.
It is a prerequisite that the required key pair is installed and added to a keystore.
This keystore has to be deployed on the related tenant. The receiver side has to
be configured appropriately.
○
None
○
Principal Propagation
The tenant authenticates itself against the receiver by forwarding the principal of
the inbound user to the cloud connector, and from there to the back end of the
relevant on-premise system

Note
This authentication method can only be used with the following sender
adapters: HTTP, SOAP, IDoc, AS2.

Note
The token for principal propagation expires after 30 minutes.
If it takes longer than 30 minutes to process the data between the sender and
receiver channel, the token for principal propagation expires, which leads to
errors in message processing.

Note
You can externalize all attributes related to the configuration of the authentication
option. This includes the attributes with which you specify the authentication op­
tion as such, as well as all attributes with which you specify further security arti­
facts that are required for any configurable authentication option (Private Key
Alias or Credential Name).
Apply one of the following recommendations when externalizing such attributes.
○
Externalize all attributes related to the configuration of all options, for exam­
ple, Authentication and Credential Name and Private Key Alias.
○
Externalize only one of the following attributes: Private Key Alias or Credential
Name.
Avoid incomplete externalization, for example, only externalizing the attribute
for the Authentication parameter but not the related Credential Name parameter.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
85
Parameter
Description
In such cases, the integration flow configuration (based on the externalized pa­
rameters) cannot work properly.
The reason for this is the following: If you have externalized the Authentication pa­
rameter and only the Private Key Alias parameter (but not Credential Name), all
authentication options in the integration flow configuration dialog (Basic, Client
Certificate, and None) are selectable in a dropdown list. However, if you now select
Basic from the dropdown list, no Credential Name can be configured.
Credential Name (only availa­
ble if you have selected Basic
for the Authentication param­
eter)
Name of the User Credentials artifact that contains the credentials for basic authenti­
cation
You can dynamically configure the Credential Name field of the adapter by using a
Simple Expression (see http://camel.apache.org/simple.html
. For example, you
can dynamically define the Credential Name of the receiver adapter by referencing a
message header ${header.MyCredentialName} or a message property $
{property.MyCredentialName}.
Private Key Alias (only availa­
ble if you have selected Client
Certificate for the
Authentication parameter)
Specifies an alias to indicate a specific key pair to be used for the authentication step.
You can dynamically configure the Private Key Alias parameter by specifying either a
header or a property name in one of the following ways: $
{header.headername} or $ {property.propertyname}.
In some cases this feature can have a negative impact on performance.
Timeout (in ms)
Specifies the time (in milliseconds) that the client waits for a response before the con­
nection is interrupted.
The default value is 60000 milliseconds (1 minute).
Note that the timeout setting has no influence on the Transmission Control Protocol
(TCP) timeout if the receiver or any additional component interconnected between the
Cloud Integration tenant and the receiver has a lower timeout. For example, consider
that you have configured a receiver channel timeout of 10 minutes and there is an­
other component involved with a timeout of 5 minutes. If nothing is transferred for a
period of time, the connection will be closed after the fifth minute. In HTTP communi­
cation spanning multiple components (for example, from a sender, through the load
balancer, to a Cloud Integration tenant, and from there to a receiver), the actual time­
out period is influenced by each of the timeout settings of the individual components
that are interconnected between the sender and receiver (to be more exact, of those
components that can control the TCP session). The component or device with the low­
est number set for the idle session timeout will determine the timeout that will be
used.
Compress Message
Enables the WS endpoint to send compressed request messages to the WS Provider
and to indicate to the WS Provider that it can handle compressed response messages.
Allow Chunking
86
PUBLIC
Used for enabling HTTP chunking of data while sending messages.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Return HTTP Response Code
as Header
When selected, writes the HTTP response code received in the response message
from the called receiver system into the header CamelHttpResponseCode.
This feature is disabled by default.

Note
You can use this header, for example, to analyze the message processing run
(when level Trace has been enabled for monitoring). Furthermore, you can use this
header to define error handling steps after the integration flow has called the
SOAP receiver.

Caution
It is recommended that you model the integration flow in such a way that header
CamelHttpResponseCode is deleted after is has been evaluated. The reason
is that this header can have an impact on the communication with a sender sys­
tem in case one of the following sender adapters are used in the same integration
flow: SOAP 1.x, XI, IDoc, SOAP SAP RM. This is because in such a case the value of
header CamelHttpResponseCode also determines the response code used in
the connection with the sender system. This is in most cases not the desired be­
havior.
As a specific situation note that in case the value of header
CamelHttpResponseCode is set to 202, the system interprets this value in
such a way that messages are processed according to a one-way operation. In
such a case, even if the sender adapter normally supports a request-reply pattern
(like, for example, the SOAP SAP RM adapter), SAP Cloud Integration does not
send back a response to the sender.
Furthermore, note that in case the SOAP 1.x receiver channel uses a WSDL with a
one-way operation, header CamelHttpResponseCode is not set (even if fea­
ture Return HTTP Response Code as Header is activated).
Clean Up Request Headers
Select this option to clean up the adapter-specific headers after the receiver call.
5. Save the configurations.
In the Model Configuration editor, when you place the cursor on the sender or receiver message flows, you
can see the SOAP Address and WSDL information.
Related Information
WS-Security Configuration for the Sender SOAP 1.x Adapter [page 88]
WS-Security Configuration for the Receiver SOAP 1.x Adapter [page 88]
https://blogs.sap.com/2018/01/25/cloud-integration-soap-adapter-web-service-security/
https://blogs.sap.com/2018/01/24/cloud-integration-wss-between-cloud-integration-and-sap-po-soapadapter/
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
87
2.5.2.4.1
WS-Security Configuration for the Sender SOAP
1.x Adapter
You use a sender channel to configure how inbound messages are to be treated at the tenant’s side of the
communication.
With regard to WS-Security in a sender channel, you specify the following:
● How the tenant verifies the payload of an incoming message (signed by the sender)
● How the tenant decrypts the payload of an incoming message (encrypted by the sender)
The following figure illustrates the setup of components:
The sender SOAP 1.x adapter allows the following combination of message-level security options:
● Verifying a payload
● Verifying and decrypting a payload
For a detailed description of the SOAP adapter WS-Security parameters, check out Configure the SOAP (SOAP
1.x) Sender Adapter [page 763] (under WS-Security).
2.5.2.4.2
WS-Security Configuration for the Receiver SOAP
1.x Adapter
With a receiver channel you configure the outbound communication at the tenant’s side of the communication.
With regard to WS-Security in a sender channel you specify the following:
● How the tenant signs the payload of a message (to be verified by the receiver)
● How the tenant encrypts the payload of a message (to be decrypted by the receiver)
The following figure illustrates the setup of components.
88
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
The receiver SOAP 1.x adapter allows to configure the following combinations of message security methods:
● Signing a payload
● Signing and encrypting a payload
Configuration Options for WS-Security
Signing and encryption (and verifying and decryption) is based on a specific set up of keys as illustrated in the
figures. Moreover, for the message exchange, specific communication rules apply as been agreed between the
administrators of the Web service client and Web service provider (for example, if certificates are to be sent
with the message).
There are two options how these security and communication settings can be specified:
● Based on Policies in WSDL
Using this option, the security settings are specified as part of the receiver endpoint (within the endpoint
WSDL) in elements as defined by the WS-Policy standard.
That way you can specify, for example, within the WSDL that certificates for message level security are sent
with the message.
For more information on the WS-Policy standard, see: http://docs.oasis-open.org/ws-sx/wssecuritypolicy/v1.3/os/ws-securitypolicy-1.3-spec-os.html .
● Manual Configuration in Channel
Using this option, you specify the required settings in the channel.
The naming of the available attributes corresponds to the terminology used in the WS-Policy specification.
If you use manual configuration, a sub set of the options as defined by the standard is supported. For more
and http://docs.oasis-open.org/wsinformation on the standard, see http://www.w3.org/TR/ws-policy/
sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf .
For a detailed description of the SOAP adapter WS-Security parameters, check out Configure the SOAP (SOAP
1.x) Receiver Adapter [page 777] (under WS-Security).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
89
2.5.2.5
Configuring a Channel with AS2 Adapter
Prerequisites
You (tenant admin) can provision message broker to AS2 adapter scenarios only if you have Enterprise Edition
license.
 Note
You have to set up a cluster for the usage of message broker. For more details refer .
 Caution
Do not use this adapter type together with Data Store Operations steps, Aggregator steps, or global
variables, as this can cause issues related to transactional behavior.
Context
You use this procedure to configure a sender and receiver channel of an integration flow with the AS2 adapter.
You can use this adapter and exchange business-specific documents with your partner through AS2 protocol.
You can use this adapter to encrypt/decrypt, compress/decompress and sign/verify the documents.
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Procedure
1. Double-click the channel that you want to configure on the Model Configuration tab page.
2. Select the General tab page.
3. Choose Browse in the Adapter Type screen area.
4. Select AS2 in the Choose Adapter window and choose OK.
5. If you configure the sender channel, choose AS2 or AS2 MDN under Message Protocol field else for receiver
channel choose AS2.
90
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
○ If you are configuring the sender channel to receive AS2 message then you can choose AS2
message protocol.
○ If you are configuring the sender channel to receive asynchronous AS2 MDN, then you can choose
AS2 MDN message protocol.
○ If you want to call as2 sender channel, then for as2 sender channel the pattern should be http://
<host>:<port>/as2/as2 and for as2 mdn sender channel the pattern should be http://
<host>:<port>/as2/mdn .
○ To analyze a troubleshooting scenario better, it is recommended to mention the name of the AS2
sender channel. Because a part of the JMS queue name contains the AS2 sender channel name.
6. Choose the Processing tab under Adapter-Specific tab page and enter the details.
Fields
Description
Message ID Left Part
Specify left side of AS2 message ID. Regular expression or
'.*' is allowed.
Message ID Right Part
Specify right side of AS2 message ID. Regular expression
or '.*' is allowed.
Partner AS2 ID
Specify partner's AS2 ID. Regular expression or '.*' is al­
lowed.
Own AS2 ID
Specify own AS2 ID. Regular expression or '.*' is allowed.
Message Subject
Specify AS2 message subject. Regular expression or '.*' is
allowed.
Number of Concurrent Processes
The number provided determines the processes that are
running in parallel for each worker node and it must be
less than 99. The value depends on the number of worker
nodes, the number of queues on the tenant, and the in­
coming load.
Authorization
Specify the autorization type to be User Role or Client
Certificate. By default, the authorization type is Role
Based.
For more details, please refer to .
For more details, please refer to .
AS2 Sender Adapter with Role Based Authentication only,
support Certificate to User Mapping and hence call from
AS2 partner should be sent using Client Certificate Au­
thentication.
User Role (For sender only)
Provide a role as defined in the tenant system, to check in­
bound sender authorization.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
91
Fields
Description
If a role is not defined, then default role
ESBMessaging.send is used. It authorizes the sender
system to process messages on a tenant.
File name (For receiver only)
Specify AS2 filename. If no filename is specified, default
filename will be set to <Own AS2 ID>_File. Use of simple
expression, ${header.<header-name>} or ${prop­
erty.<property-name>}, is allowed.
Own E-mail address (For receiver only)
Specify own email ID. Use of simple expression, $
{header.<header-name>} or ${property.<propertyname>}, is allowed.
Content Type (For receiver only)
Specify content type of the outgoing message. For e.g. ap­
plication/edi-x12. Use of simple expression, $
{header.<header-name>} or ${property.<propertyname>}, is allowed.
You can also set value of this attribute dynamically using
header AS2_outbound_content_type.

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Custom Headers Pattern (For receiver only)
Specify regular expression to pick message headers and
add them as AS2 custom headers.
For example, if you want to pick all EDI headers starting
with the name EDI, then you can specify the expression as
EDI.*
Content Transfer Encoding (For receiver only)
Specify AS2 message encoding type.
 Note
○ You should ensure that the combination of Message ID Left Part, Message ID Right Part, Partner
AS2 ID, Own AS2 ID and Message Subject parameters, is unique across all AS2 sender channels.
○ If you use regular expression for the above mentioned AS2 sender parameters, then you must
ensure that the regular expression configuration is unique across the endpoints.
○ The runtime identifies relevant channel and integration flow for the incoming AS2 sender message,
based on the above mentioned parameters.
○ AS2 adapter now supports Camel Attachments that contains headers. From the message payload,
the AS2 adapter preserves and reads the corresponding header values that are part of the
attachment.
7. Choose the Security tab under Adapter-Specific tab page and enter the details.
92
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Message Security
Ensures that the message is compressed or encoded.
Decrypt Message (For sender only)
Ensures that the message is decrypted.
You can also set value of this attribute dynamically using
header AS2_inbound_decrypt_message .
The valid values are:
○
true
○
false

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Private Key Alias (For sender only)
If you select Decrypt Message, then this field is enabled.
Specify private key alias to Decrypt AS2 Message.
Verify Signature (For sender only)
Ensures that the signature is verified.
You can also set value of this attribute dynamically using
header AS2_inbound_verify_signature.
Public Key Alias (For sender only)
If you select Verify Signature of Message, then this field is
enabled. Specify public key alias to verify signature of AS2
Message.
Compress Message (For receiver only)
Ensures that the outgoing message is compressed.
You can also set value of this attribute dynamically using
header AS2_outbound_compress_message .
The valid values are:
○
true
○
false

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Sign Message (For receiver only)
Ensures that the outgoing AS2 Message is signed.
You can also set value of this attribute dynamically using
header AS2_outbound_sign_message .
The valid values are:
○
true
○
false

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
93
Field
Description
Algorithm (For receiver only)
If you select Sign Message, then this field is enabled. Se­
lect AS2 Message signing algorithm.
You can also set value of this attribute dynamically using
header AS2_outbound_signing_algorithm.
The valid values are:
○
SHA1
○
SHA224
○
SHA256
○
SHA384
○
SHA512
○
MD5

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Private Key Alias (For receiver only)
If you select Sign Message, then this field is enabled.
Specify private key alias to Sign AS2 Message. Use of sim­
ple expression, ${header.<header-name>} or ${prop­
erty.<property-name>}, is allowed.
Encrypt Message (For receiver only)
Ensures that the message is encrypted.
You can also set value of this attribute dynamically using
header AS2_outbound_encrypt_message .
The valid values are:
○
true
○
false

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Algorithm (For receiver only)
If you select Encrypt Message, then this field is enabled.
Select AS2 Message encryption algorithm.
You can also set value of this attribute dynamically using
header AS2_outbound_encryption_algorithm.
The valid values are:
94
PUBLIC
○
3DES
○
AES128
○
AES192
○
AES256
○
RC2
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Public Key Alias (For receiver only)
If you select Encrypt Message, then this field is enabled.
Specify public key alias to encrypt AS2 Message. Use of
simple expression, ${header.<header-name>} or ${prop­
erty.<property-name>}, is allowed. The header or property
can conatin public key alias or X509 certificate.
Key Length (For receiver only)
If you select Encrypt Message and choose RC2 for Algo­
rithm field then this field is enabled. Specify public key
length.
You can also set value of this attribute dynamically using
header
AS2_outbound_encryption_key_length.

Note
If header value is set, it takes precedence over actual
value configured in the channel.
8. Choose the MDN tab under Adapter-Specific tab page and enter the details.
Fields
Description
Private Key Alias for Signature (For sender only)
Specify private key alias to sign the MDN on partner's re­
quest.
Signature Encoding (For sender only)
Select MDN signature encoding type.
Authentication for Asynchronous MDN (For sender
Select authentication type for asynchronous MDN.
only)
Timeout (For sender only)
Specify the time in milliseconds during which client has to
accept asynchronous MDN, before the timeout occurs.
Enter the value '0' if you want the client to wait indefinitely.
Number of Concurrent Processes (For Sender Only)
The number provided determines the processes that are
running in parallel for each worker node and it must be
less than 99. The value depends on the number of worker
nodes, the number of queues on the tenant, and the in­
coming load.
Type (For receiver only)
Enable this option to request partner to send Message In­
tegrity Check(MIC) in AS2 MDN.
You can also set value of this attribute dynamically using
header AS2_outbound_mdn_type.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
95
Fields
Description

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Target URL (For receiver only)
If you choose asynchronous MDN type, then this field is
enabled. Specify URL on which AS2 MDN will be received
from partner. Use of simple expression, $
{header.<header-name>} or ${property.<propertyname>}, is allowed.

Note
If header value is set, it takes precedence over actual
value configured in the channel.
If the recipient url belongs to AS2 adapter of SAP
Cloud Integration, then for AS2 mdn sender channel
the pattern should be http://
<host>:<port>/as2/mdn .
Request Signing (For receiver only)
If you choose asynchronous or synchronous MDN type,
then this field is enabled. You can enable this option to re­
quest partner to sign AS2 MDN.
You can also set value of this attribute dynamically using
header AS2_outbound_mdn_request_signing.
Algorithm (For receiver only)
If you enable Request Signing option, then this field is ena­
bled.
You can also set value of this attribute dynamically using
header
AS2_outbound_mdn_signing_algorithm.

Note
If header value is set, it takes precedence over actual
value configured in the channel.
Verify Signature (For receiver only)
If you choose synchronous MDN type, then this field is en­
abled. You can enable this option to verify signature of
AS2 MDN.
Public Key Alias (For receiver only)
96
PUBLIC
If you select Verify Signature, then this field is enabled.
Specify public key alias to verify MDN signature. Use of
simple expression, ${header.<header-name>} or ${prop­
erty.<property-name>}, is allowed. The header or property
can conatin public key alias or X509 certificate.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Fields
Description
Request MIC (For receiver only)
If you want to requst for integrity check then you can ena­
ble this option.
You can also set value of this attribute dynamically using
header AS2_outbound_mdn_request_mic
Verify MIC (For receiver only)
If you choose synchronous MDN type, then this field is en­
abled. You can enable this option to verify MIC of AS2
MDN.
If you enable request MIC option the you can also enable
this option if you wnat to verify integrity of the message.
You can also set value of this attribute dynamically using
header AS2_outbound_mdn_verify_mic.
 Note
○ You can configure AS2 receiver channel for Request-Reply integration flow element. If you request
for synchronous MDN, then the adapter sets received MDN response as message payload.
○ If you request for synchronous MDN in receiver channel, you may receive positive or negative MDN.
In both the cases, status of message in Message Monitoring tab is COMPLETED. You can process
the MDN message on your own and take the required action for positive or negative MDN, post AS2
call for synchronous MDN.
○ In MDN message, positive MDN is represented as shown below:
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<MDNDeliveryReport>
................
<MDNDispositionNotification>
...............
<Disposition>
<DispositionMode ActionMode="automatic-action" SendingMode="MDNsent-automatically"/>
<DispositionType>processed</DispositionType>
</Disposition>
<ReceivedContentMIC mic="9I2W0DSFpQOVRH75/1sLGpWAgtc="
alg="sha1"></ReceivedContentMIC>
</MDNDispositionNotification>
</MDNDeliveryReport>
○ In MDN message, negative MDN is represented as shown below:
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<MDNDeliveryReport>
................
<MDNDispositionNotification>
................
<Disposition>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
97
<DispositionType>processed</DispositionType>
<DispositionModifier>error</DispositionModifier></Disposition>
<Error>insufficient-message-security</Error>
</Disposition>
<ReceivedContentMIC mic="9I2W0DSFpQOVRH75/1sLGpWAgtc="
alg="sha1"></ReceivedContentMIC>
</MDNDispositionNotification>
</MDNDeliveryReport>
○ If MDN signature validation fails or incorrect message integrity check (MIC) is received, then in that
case, status of message is FAILED.
9. Choose the Retry and enter the retry handling details.
Parameters
Description
Retry Interval (in min)
Enter a value for the amount of time to wait before retry­
ing message delivery.
Exponential Backoff
Enter a value to double the retry interval after each unsuc­
cessful retry.
Maximum Retry Interval (in min)
Enter a value for the maximum amount of time to wait be­
fore retrying message delivery.
Dead-Letter Queue
Select this option to place the message in the dead-letter
queue if it cannot be processed after two retries.
In such cases, a lock entry is created which you can view
and release in the Message Monitoring application under
Managing Locks.
10. Choose the Connection tab under Adapter-Specific tab page for AS2 receiver channel and enter the details.
Fields
Recipient URL (For reciever only)
Description
Specify partner's AS2 URL. Use of simple expression, $
{header.<header-name>} or ${property.<propertyname>}, is allowed.

Note
If header value is set, it takes precedence over actual
value configured in the channel.
If the recipient url belongs to as2 adapter of SAP
Cloud Integration, then for as2 sender channel the
pattern should be http://
<host>:<port>/as2/as2 and for as2 mdn
sender channel the pattern should be http://
<host>:<port>/as2/mdn .
98
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Fields
Description
URL Paramters Pattern (For receiver only)
Specify regular expression to pick message headers and
add them as AS2 URL parameters.
For example, if you want to pick all EDI headers starting
with the name EDI, then you can specify the expression as
EDI.*
Authentication Type (For receiver only)
Specify the authetication type for invoking recipient URL.
Credential Name (For receiver only)
If you select basic authetication, then this field is enabled.
Private Key Alias (For receiver only)
If you select client certificate authetication, then this field
is enabled.
Timeout (in ms) (For receiver only)
Specify the time in milliseconds during which client has to
accept AS2 message, before the timeout occurs.
11. Save the configuration of the channel editors.
 Note
○ AS2 sender passes the following headers to the integration flow for message processing:
○ AS2PartnerID
○ AS2OwnID
○ AS2MessageSubject
○ AS2Filename
○ AS2MessageID
○ AS2PartnerEmail
○ AS2MessageContentType
○ AS2 MDN sender passes the following headers to the integration flow for message processing:
○ AS2PartnerID
○ AS2OwnID
○ AS2MessageID
○ AS2MessageContentType
○ AS2OriginalMessageID
○ You can configure AS2 sender to retry messages, if any error occurs during integration flow
processing.
○ You can use the parameterRetry Interval (in m) to enter a value for the amount of time to wait
before retrying message delivery.
The AS2 sender adapter writes messages into a JMS queue prior to further processing it. The
retry handling (in case a Retry Interval (in m) is configured) is analog to as described for the
JMS adapter (see Related Link below).
○ You can use the parameterExponential Backoff to double the retry interval after each
unsuccessful retry.
○ You can use the parameter Maximum Retry Interval (in m) to set an upper limit on the value to
avoid an endless increase of the retry interval. The default value is 60 minutes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
99
○ Based on different AS2 adapter scenarios, use the following attributes to refer the values that are
associated with MPL:
○ AS2 receiver adapter attributes:
○ AdapterId
○ adapterMessageId
○ SAP_MplCorrelationId
○ ReceiverAS2Name
○ MessageDirection
○ MDNType
○ MPL ID
○ MDNRequested
○ SenderAS2Name
○ AS2MessageID
For example:
{AdapterId=AS2 Receiver,
adapterMessageId=<c31b34955-d799-4219-9f1c-5dd3a044e4@HCIAS2>,
SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,
ReceiverAS2Name=ASCDSSCSAS2,
MessageDirection=Outbound,
MDNType=Receiving,
MPL ID=AFgsEosepT9fR54od_XHp6yWu6Gs,
MDNRequested=Asynchronous,
SenderAS2Name=HCIAS2,
AS2MessageID=<c31b5955-d799-4219-9f1c-5dde63a044e4@HCIAS2>}
○ AS2 MDN sender adapter attributes:
○ AdapterId
○ adapterMessageId
○ SAP_MplCorrelationId
○ MDNStatus
○ Message Id
○ ErrorDescription
For example:
{AdapterId=AS2 MDN Sender,
adapterMessageId=<qwesdt_123sourcewe_AS2-1479283341389-0@endionAS2_HC
IAS2>,
SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,
MDNStatus=error,
Message Id=<c31b53255-d799-4219-9f1c-5e63a044e4@HCIAS2>,
ErrorDescription=insufficient-message-security}
○ AS2 sender adapter attributes:
○ AdapterId
○ adapterMessageId
○ ReceiverAS2Name
○ MessageDirection
○ MDNType
○ MDNStatus
○ MPL ID
100
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
○ MDNRequested
○ SenderAS2Name
○ AS2MessageID
For example:
{AdapterId=AS2 Sender,
adapterMessageId=<define _AS2-147665710-6@endionAS2_HCIAS2>,
ReceiverAS2Name=HCIAS2,
MessageDirection=Inbound,
MDNType=Sending,
MDNStatus=Success,
MPL ID=AFgsPspcD-eYhvHFdfOZYKydBmzw,
MDNRequested=Synchronous,
SenderAS2Name=endionAS2,
AS2MessageID=<define _AS2-147665710-6@endionAS2_HCIAS2>}
○ AS2 sender adapter attributes:
○ AdapterId
○ adapterMessageId
○ ReceiverAS2Name
○ MessageDirection
○ MDNType
○ MDNStatus
○ MPL ID
○ MDNRequested
○ SenderAS2Name
○ AS2MessageID
For example:
{AdapterId=AS2 Sender,
adapterMessageId=<define_AS2-14798922282-7@gibsonAS2_HCIAS2>,
ReceiverAS2Name=HCIAS2,
MessageDirection=Inbound,
MDNType=Sending,
MDNStatus=Success,
MPL ID=AFgsQ0_3KdRx-UiOjcwGruy6Xw4V,
MDNRequested=Asynchronous,
SenderAS2Name= gibsonAS2,
AS2MessageID=<define _AS2-14798922282-7@ gibsonAS2_HCIAS2>}
Related Information
Configuring a Channel with JMS Adapter [page 175]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
101
2.5.2.6
Configuring a Channel with HTTP Receiver Adapter
The HTTP adapter allows you to configure an outbound HTTP connection from SAP Cloud Integration to a
receiver.
Prerequisites
If you like to send strings with the HTTP receiver adapter which contain non-ASCII characters (for example,
German umlaut or cyrillic characters), make sure that you do the following (using a Content Modifier):
Use the Content-Type header to specify the media type that the receiver can expect (for example, text/
plain for unformatted text).
Set the value of the CamelCharsetName property or header to the desired character set (for example, UTF-8).
 Note
If you don't specify the character set in the proposed way, the HTTP adapter sends ASCII strings. This will
lead to errors when your data contains non-ASCII characters.
Context
The HTTP adapter supports only HTTP 1.1. This means that the target system must support chunked transfer
encoding and may not rely on the existence of the HTTP Content-Length header.
You can configure a channel with the HTTP adapter type for outbound calls (from the tenant toIf you want to
dynamically override the configuration of the adapter, you can set the following headers before calling the
HTTP adapter:
● CamelHttpUri
Overrides the existing URI set directly in the endpoint.
This header can be used to dynamically change the URI to be called.
● CamelHttpQuery
Refers to the query string that is contained in the request URL.
In the context of a receiver adapter, this header can be used to dynamically change the URI to be called.
For example, CamelHttpQuery=abcd=1234.
● Content-Type
HTTP content type that fits to the body of the request.
The content type is composed of two parts: a type and a subtype.For example, image/jpeg (where image
is the type and jpeg is the subtype).
Examples:
○ text/plain for unformatted text
○ text/html for text formatted with HTML syntax
○ image/jpeg for a jpeg image file
○ application/json for data in JSON format to be processed by an application that requires this
format
102
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
More information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.html
The list of available content types is maintained by the Internet Assigned Numbers Authority (IANA). For
more information, see http://www.iana.org/assignments/media-types/media-types.xhtml .
 Note
If transferring text/* content types, you can also specify the character encoding in the HTTP header
using the charset parameter.
Here is an example of such a header:
Content-Type: text/html; charset=utf-8
The default character encoding that will be applied for text/* content types depends on the HTTP
version: us-ascii for HTTP 1.0 and iso-8859-1 for HTTP 1.1.
Text data in string format is converted using UTF-8 by default during message processing. If you want
to override this behavior, you can use the Content Modifier step and specify the CamelCharsetName
Exchange property. To avoid encoding issues when using this feature together with the HTTP adapter,
consider the following example configuration:
If you use a Content Modifier step and you want to send iso-8859-1-encoded data to a receiver, make
sure that you specify the CamelCharsetName Exchange property (either header or property) as
iso-8859-1. For the Content-Type HTTP header, use text/plain; charset=iso-8859-1.
● Content-Encoding
HTTP content encoding that indicates the encoding used during message transport (for example, gzip for
GZIP file compression).
This information is used by the receiver to retrieve the media type that is referenced by the content-type
header.
If this header is not specified, the default value identity (no compression) is used.
More information: https://tools.ietf.org/html/rfc2616
(section 14.11)
The list of available content types is maintained by the Internet Assigned Numbers Authority (IANA). For
more information, see:http://www.iana.org/assignments/http-parameters/httpparameters.xhtml#content-coding .
Procedure
 Note
1. Choose the General tab page.
2. Select HTTP from the Adapter Type dropdown list.You can configure a channel with the HTTP adapter type
for outbound calls (from the tenant to a receiver system).
3. Choose the Adapter Specific tab page and enter the values for the available parameters. The table below
gives a description of the fields and the possible values you can enter:
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
103
Field Name and Description for HTTP Adapter
Field
Address
Description
URL of the target system that you are connecting to, for
example, https://mysystem.com
Note that the authentication method Client
Certificate requires the HTTPS protocol. For Basic
authentication it is strongly recommended that you
use the HTTPS protocol.
If you have selected one of these authentication methods,
you therefore have to enter an https URL.
You can also specify HTTP parameters in the URL. How­
ever, if you select the HTTP method POST, parameters are
usually sent in the body. You therefore get a warning mes­
sage if you configure this parameter-value combination.
The following URL parameters are currently not allowed
for technical reasons:
○
throwExceptionOnFailure
○
bridgeEndpoint
○
transferException
○
client
○
clientConfig
○
binding
○
sslContextParameters
○
bufferSize
You can dynamically configure the Address field of the
HTTP adapter.
When you specify the Address field of the HTTP adapter
as ${header.a}, at runtime the value of header a (as
contained in the incoming message) will be written into
the Camel header CamelHttpUri.
Also in case the CamelHttpUri header has been set by
another process step (for example, a Content Modifier),
its value will be overwritten.
The endpoint URL that is actually used at runtime is dis­
played in the message processing log (MPL) in the mes­
sage monitoring application (MPL property
RealDestinationUrl). Note that you can manually
configure the endpoint URL using the Address attribute of
the adapter. However, there are several ways to dynami­
cally override the value of this attribute (for example, by
using the Camel header CamelHttpUri).
104
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Query
Query string that you want to send with the HTTP request
Query strings must not be entered in the Address field.
This parameter can be externalized.
You can dynamically configure the Query field of the HTTP
adapter.
When you specify the Query field of the HTTP adapter as
${header.a}, at runtime the value of header a (as con­
tained in the incoming message) will be written into the
Camel header CamelHttpQuery.

Note
If you want to send parameters in the query string of
the HTTP adapter, these parameters must be coded
in a URL-compatible way. Individual parameter-value
pairs must be separated with an ”&” and there must
be an “=” between the name of a parameter and its
value.
Example 1)
parameter1=123, parameter2=abc
You must specify the following in the query field: pa­
rameter1=123&parameter2=abc
Example 2)
Manufacturer = Mars Inc. Product = M&M
You must specify the following in the query field: Man­
ufacturer =Mars+Inc.&Product=M%26M
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
105
Field
Proxy Type
Description
The type of proxy that you are using to connect to the tar­
get system:
○
Select Internet if you are connecting to a cloud sys­
tem.
○
Select On-Premise if you are connecting to an onpremise system.

Note
If you select the On-Premise option, the following
restrictions apply to other parameter values:
○
Do not use an HTTPS address for Address,
as it leads to errors when performing consis­
tency checks or during deployment.
○
Do not use the option Client Certificate for
the Authentication parameter, as it leads to
errors when performing consistency checks
or during deployment.

Note
If you select the On-Premise option and use the
SAP Cloud Connector to connect to your onpremise system, the Address field of the adapter
references a virtual address, which has to be con­
figured in the SAP Cloud Connector settings.
○
If you select Manual, you can manually specify Proxy
Host and Proxy Port (using the corresponding entry
fields).
Furthermore, with the parameter URL to WSDL you
can specify a Web Service Definition Language
(WSDL) file defining the WS provider endpoint (of the
receiver). You can specify the WSDL by either upload­
ing a WSDL file from your computer (option Upload
from File System) or by selecting an integration flow
resource (which needs to be uploaded in advance to
the Resources view of the integration flow).
This option is only available if you have chosen a
Process Orchestration product profile.
Location ID only in case On-Premise is selected for Proxy
Type.
106
PUBLIC
To connect to a cloud connector instance associated with
your account, enter the location ID that you defined for
this instance in the destination configuration on the cloud
side. You can also enter ${header.headername} or ${prop­
erty.propertyname} to dynamically read the value from a
header or a property.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Method
Action that the HTTP request should perform
○
POST
Requests that the receiver accepts the data enclosed
in the request body.
○
Delete
Requests that the origin server delete the resource
identified by the Request-URl
○
Dynamic
The method is determined dynamically by reading a
value from a message header or property such as $
{header.abc} or ${property.abc} during runtime.
○
GET
Sends a GET request to the receiver.
○
HEAD
Sends a HEAD request which is similar to a GET re­
quest but does not return a message body.
○
PUT
Updates or creates the enclosed data on the receiver
side.
○
TRACE
Sends a TRACE request to the receiver that sends
back the message to the caller.
Send Body
This field is enabled only if you select for Method the op­
tion GET, DELETE, HEAD or "Dynamic".
Expression
This field is enabled only if you select for Method the op­
tion Dynamic.
Select this checkbox if you want to send the body of the
message with the request. For methods GET, DELETE, and
HEAD, the body is not sent by default because some HTTP
servers do not support this function.
The expression field allows you to enter a simple expres­
sion that specifies the HTTP method for the HTTP call .
For example, you can define that the method is deter­
mined dynamically by reading a value from a message
header or property such as ${header.abc} or ${prop­
erty.abc}. If the header or property does not exist or its
value is empty, the POST method is used by default.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
107
Field
Authentication
Description
Defines how the tenant (as the HTTP client) will authenti­
cate itself against the receiver.
You can select one of the following authentication meth­
ods:
○
None
○
Basic
The tenant authenticates itself against the receiver
using user credentials (user name and password).
It is a prerequisite that user credentials are specified
in a Basic Authentication artifact and deployed on the
related tenant.
○
Client Certificate
The tenant authenticates itself against the receiver
using a client certificate.
It is a prerequisite that the required key pair is instal­
led and added to a keystore. This keystore has to be
deployed on the related tenant. The receiver side has
to be configured appropriately.

Note
You can externalize all attributes related to the configuration of the authentication option. This includes the
attributes with which you specify the authentication
option as such, as well as all attributes with which you
specify further security artifacts that are required for
any configurable authentication option (Private Key
Alias or Credential Name).
Apply one of the following recommendations when
externalizing such attributes.
○
Externalize all attributes related to the configuration of all options, for example, Authentication
and Credential Name and Private Key Alias.
○
Externalize only one of the following attributes:
Private Key Alias or Credential Name.
Avoid incomplete externalization, for example, only
externalizing the attribute for the Authentication pa­
rameter but not the related Credential Name parame­
ter. In such cases, the integration flow configuration
(based on the externalized parameters) cannot work
properly.
The reason for this is the following: If you have exter­
nalized the Authentication parameter and only the
Private Key Alias parameter (but not Credential
108
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Name), all authentication options in the integration
flow configuration dialog (Basic, Client Certificate, and
None) are selectable in a dropdown list. However, if
you now select Basic from the dropdown list, no
Credential Name can be configured.
○
Principal Propagation
The tenant authenticates itself against the receiver by
forwarding the principal of the inbound user to the
cloud connector, and from there to the back end of
the relevant on-premise system

Note
This authentication method can only be used
with the following sender adapters: HTTP, SOAP,
IDOC

Note
Please note that the token for principal propaga­
tion expires after 30 minutes.
If it takes longer than 30 minutes to process the
data between the sender and receiver channel,
the token for principal propagation expires, which
leads to errors in message processing.
For special use cases, this authentication method can
also be used with the AS2 adapter.

Note
In the following cases certain features might not
be available for your current integration flow:
○
A feature for a particular adapter or step was
released after you created the correspond­
ing shape in your integration flow.
○
You are using a product profile other than
the one expected.
More information: Updating your Existing Inte­
gration Flow [page 410]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
109
Field
Description
Credential Name
Identifies the User Credential artifact that contains the

Note
credentials (user name and password).
You can dynamically configure the Credential Name prop­
This field is enabled only if you select for
erty by specifying either a header or a parameter name in
Authentication the option Basic.
one of the following ways: ${header.headername}
or ${parameter.parametername}. As an example,
you can use a Script step before the adapter where you
look-up the User Credentials and enter the base64-en­
coded values for user and password into the header
Authorization. The HTTP adapter will then use this
header in the HTTP request.
Although you can configure this feature, it is not sup­
ported when using the corresponding integration content
with the SAP Process Orchestration (SAP PO) runtime in
releases lower than SAP PO 7.5 SP5.
Private Key Alias
Enter the private key alias that enables the system to fetch
the private key from keystore for authentication.

Note
This option is enabled only if you select client certificate authentication.
110
PUBLIC

Restriction
The values true and false are not supported for
this field.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Timeout (in ms)
Description
Maximum time that the tenant waits for a response before
terminating message processing
The default value is 60000 milliseconds (1 minute).
Note that the timeout setting has no influence on the
Transmission Control Protocol (TCP) timeout if the re­
ceiver or any additional component interconnected be­
tween the Cloud Integration tenant and the receiver has a
lower timeout. For example, consider that you have configured a receiver channel timeout of 10 minutes and there is
another component involved with a timeout of 5 minutes.
If nothing is transferred for a period of time, the connec­
tion will be closed after the fifth minute. In HTTP commu­
nication spanning multiple components (for example,
from a sender, through the load balancer, to a Cloud Inte­
gration tenant, and from there to a receiver), the actual
timeout period is influenced by each of the timeout set­
tings of the individual components that are intercon­
nected between the sender and receiver (to be more ex­
act, of those components that can control the TCP ses­
sion). The component or device with the lowest number
set for the idle session timeout will determine the timeout
that will be used.
4. Save the configuration in the receiver channel editor.
Related Information
Dynamic Parameters (Example) [page 15]
Script Example for Exception Handling in HTTP Receiver [page 260]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
111
2.5.2.7
Configuring a Channel with HTTPS Sender Adapter
The HTTPS sender adapter allows you to accept incoming http request on a specific address.
Context
Supported Header:
Supported Header:
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
The following HTTP request headers for the sample HTTP endpoint https://
test.bsn.neo.ondemand.com/http/hello?abcd=1234 are added to exchange headers for further
processing in integration flow:
● CamelHttpUrl
Refers to the complete URL called, without query parameters.
For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello.
● CamelHttpQuery
Refers to the query string that is contained in the request URL.
In the context of a receiver adapter, this header can be used to dynamically change the URI to be called.
For example, CamelHttpQuery=abcd=1234.
● CamelHttpMethod
Refers to the incoming method names used to make the request. These methods are GET, POST, PUT,
DELETE, and so on.
● CamelServletContextPath
Refers to the path specified in the address field of the channel.
For example, if the address in the channel is /abcd/1234, then CamelServletContextPath is /abcd/1234.
Procedure
1. Double-click the sender channel that you want to configure on the Model Configuration tab page.
2. Choose the General tab page.
3. Select HTTPS from the Adapter Type dropdown list.
4. Choose the Adapter Specific tab page.
5. Choose the Connection tab page and specify the following attributes.
112
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters of the HTTPS Sender Adapter
Parameter
Description
Address
Enter the URL of the HTTP system to connect to.

Note
○
Use the following pattern: http://
<host>:<port>/http . This should be ap­
pended by the unique address specified in the
channel.

○
The field value supports these characters ~, -, . ,
$ and * .
○
The Address field should start with '/ ' and can
contain alphanumeric values, '_' and '/ '. For ex­
ample a valid address is /test/123.
○
In the example mentioned above, you can use ~
only for the address part which succeeds /test/
○
You can use $ only at the beginning of the ad­
dress after /.
○
You can use* only at the extreme end of the ad­
dress and no characters are allowed after *. A *
can only be preceded with /.
○
You cannot begin address with., - or ~ . Alphanu­
meric value or _ must succeed these characters.
○
If you are using /*, it implies that uri containing
the prefix preceding the /* is supported. For ex­
ample. if the address is /Customer/* then uris
supported are http://<host>:<port>/http/
Customer/<Any-url>.
○
Uris are case insensitive. So, http://
<host>:<port>/http/test and http://
<host>:<port>/http/Test is treated as same.
Note
When you specify the endpoint address /path, a
sender can also call the integration flow through the
endpoint address /path/<any string> (for ex­
ample, /path/test/).
Be aware of the following related implication: When
you in addition deploy an integration flow with end­
point address /path/test/, a sender using the /
path/test endpoint address will now call the newly
deployed integration flow with the endpoint address /
path/test/. When you now undeploy the integra­
tion flow with endpoint address /path/test, the
sender again calls the integration flow with endpoint
address /path (original behavior). Therefore, be
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
113
Parameter
Description
careful reusing paths of services. It is better using
completely separated endpoints for services.
114
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Authorization
Specifies the authorization option for the sender.
You can select one of the following options:
○
Client Certificate: Sender authorization is checked on
the tenant by evaluating the subject/issuer distin­
guished name (DN) of the certificate (sent together
with the inbound request). You can use this option to­
gether with the following authentication option: Cli­
ent-certificate authentication (without certificate-touser mapping).
○
User Role: Sender authorization is checked based on
roles defined on the tenant for the user associated
with the inbound request. You can use this option to­
gether with the following authentication options:
○
Basic authentication (using the credentials of the
user)
The authorizations for the user are checked
based on user-to-role assignments defined on
the tenant.
○
Client-certificate authentication and certificateto-user mapping
The authorizations for the user derived from the
certificate-to-user mapping are checked based
on user-to-role assignments defined on the ten­
ant.
Depending on your choice, you can also specify one of the
following properties:
○
Client Certificate Authorization
Allows you to select one or more client certificates
(based on which the inbound authorization is
checked).
Choose Add to add a new certificate for inbound au­
thorization for the selected adapter. You can then se­
lect a certificate stored locally on your computer. You
can also delete certificates from the list.
For each certificate, the following attributes are dis­
played: Subject DN (information used to authorize
the sender) and Issuer DN (information about the cer­
tificate authority that issues the certificate).
○
User Role
Allows you to enter a role based on which the inbound
authorization is checked.
The role ESBMessaging.send is provided by default. It
is a predefined role provided by SAP which authorizes
a sender system to process messages on a tenant.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
115
Parameter
Description
CSRF Protected
This option prevents Cross-Site Request Forgery (CSRF),
which is a malicious online attack. Such attacks exposes
user content without their authorization.

Note
○
During an inbound HTTPS communication, if the
sender adapter receives a GET or HEAD request
to fetch the CSRF token value and you have the
enabled CSRF Protected then the adapter will re­
turn the CSRF token and stop processing the
message further.
○
Include X-CSRF-Token in the HTTP header field
for all modifying requests and these requests are
validated during runtime. If the validation fails
then the server returns “HTTP 403 Forbidden”
status code.
6. Save the configuration in the sender channel editor.
 Note
○ Additional incoming request headers and URL parameters can be added to exchange headers for
further processing in integration flow. You must define these headers and paramters in Allowed
Headers list at integration flow level.
○ Once the integration flow processing completes, the HTTPS sender adapter returns header and
body to end user and sets the response code. You can use Content Modifier element to send back
specific http response and customize the response.
○ The sample integration flow is as shown below:
○ Only Basic Authentication is supported for the http calls and the ESBMessaging.Send role must be
assigned to the user.
○ Address URLs for http endpoints across integration flow must be unique. If it is not unique then the
integration flow does not start.
○ Adapter returns the following HTTP response code:
○ 200 - Processing is successful
○ 503 - Service is not available
○ 500 - Exception during integration flow processing
Also, you can set the header CamelHttpResponseCode to customize the response code.
○ You can invoke the HTTP endpoints using the syntax <Base URI>/http/<Value of address field>.
You can get Base URI value from Services tab in Properties view of a worker node.
Atleast one integration flow with SOAP endpoint must be deployed to view details in Services tab.
116
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
○ You should useScript element to customise which headers can be sent in response to the HTTP
call. It is a recommendation that you must remove internal headers and sent back only required
headers.
○ If an exception occurs during the HTTPS call, it is thrown back with a message and MPL ID
explaining the exception, rather than displaying the stack trace.
2.5.2.8
Configuring a Channel with SFTP Adapter
The SFTP adapter uses the SSH protocol to transfer files.
Context
Unlike the standard FTP, the SFTP adapter uses a certificate and keystore to authenticate the file transfer. The
SFTP connector achieves secure transfer by encrypting sensitive information before transmitting it on the
network.
 Note
The clock icon on a message flow indicates polling of messages at regular intervals.
If you want to dynamically override the configuration of the adapter, you can set the following header before
calling the SFTP adapter:
● CamelFileName
Overrides the existing file and directory name that is set directly in the endpoint.
This header can be used to dynamically change the name of the file and directory to be called.
The following examples show the header CamelFileName, read via XPath from the payload, or set using an
expression:
Example of Header
Name
Type
Data Type
Value
CamelFileName
xpath
java.lang.String
/p:<XYZ>MessageBulk/
<XYZ>Message/FileName/
text()
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
117
Name
Type
Data Type
Value
CamelFileName
expression
java.lang.String
<myapplication>/
template/out/output$
{date:now:yyyyMMddHHmm
ss}.xml

Note
Be aware of the following
behavior if you have con­
figured the file name dy­
namically: If you have se­
lected the Append
Timestamp option, the
timestamp overrides the
file name defined dy­
namically via the header
(CamelFileName).
SAP Cloud Integration for processes currently supports the following ciphers for SSH (SFTP) communication:
blowfish-cbc,3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr,3desctr,arcfour,arcfour128,arcfour256.
 Caution
The ciphers listed above can change in the future. New ciphers can be added and existing ones can be
removed in case of security weaknesses. In such cases, you will have to change the ciphers on the SFTP
server and reconfigure the integration flows that contain SFTP adapter. SAP will inform customers, if
necessary.
 Caution
If you select Run Once option in the Scheduler, you see messages triggered from all the integration flows
with this setting after a software update. After the latest software is installed on a cluster, it is restarted.
You see messages from these integration flows with Run Once setting.
Related Information
Configuring a Channel with SFTP Sender Adapter [page 119]
Configuring a Channel with SFTP Receiver Adapter [page 129]
118
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.8.1
Configuring a Channel with SFTP Sender Adapter
You can use the SFTP sender adapter to transfer files from an SFTP server to the tenant using the SSH
protocol.
Context
How the Sender SFTP Adapter Works
If you have configured a sender SFTP adapter, message processing is performed as follows at runtime: The
tenant sends a request to an SFTP server (think of this as the sender system), but the data flow is in the
opposite direction, from the SFTP server to the tenant. In other words, the tenant reads files from the SFTP
server (a process that is also referred to as polling).
SFTP Sender Adapter: Tenant reads files from SFTP server
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Procedure
1. Select the integration flow you want to configure and choose Edit.
2. Choose the communication channel you want to configure.
To configure a sender channel, click on a connection between a sender and the Integration Process
component.
3. In General tab page, provide channel name and description in the relevant fields if required.
4. Choose Adapter Specific tab page and provide values in fields based on description in table.
On the Source tab of the sender channel, specify the following attributes.
Parameters
Description
Directory
Use the relative path to read the file from a directory, for example, <dir>/<subdir>.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
119
Parameters
Description
File Name
Name of the file to be read.

Note
If you do not enter a file name and the parameter remains blank, all the files in
the specified directory are read.

Note
Usage of file name pattern:
Expressions, such as ab*, a.*, *a*, ?b, and so on, are supported.
The expression * replaces no character or an arbitrary number of characters.
The expression ? replaces exactly one arbitrary character.
Examples:
If you specify file*.txt as the File Name, the following files are polled by
the adapter: file1.txt, file2.txt, as well as file.txt and
file1234.txt, and so on.
If you specify file?.txt as the File Name, the following files are polled by
the adapter: file1.txt, file2.txt, and so on, but not the files
file.txt or file1234.txt.
Although you can configure this feature, it is not supported when using the cor­
responding integration content with the SAP Process Orchestration (SAP PO)
runtime in releases lower than SAP PO 7.5 SP5.

Caution
Files with file names longer than 100 characters will be processed with the fol­
lowing limitations:
○
If two files with names longer than 100 characters are available for proc­
essing, only one of these files will be processed at a time. This means that
both files will be processed, but not in parallel. This is also the case if two
runtime nodes are available. If the node fails multiple times while process­
ing a file with a file name longer than 100 characters, none of the files
sharing the first 100 characters with that file can be executed without
manual intervention from the administrator.
○
The option Keep File and Mark as Processed in Idempotent Repository (for
sender channels under Processing) will not work for these files.
Address
Host name or IP address of the SFTP server and an optional port, for example,
wdfd00213123:22.
120
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Proxy Type
The type of proxy that you are using to connect to the target system.
Select Internet if you are connecting directly to the SFTP server.
Select On-Premise if you are connecting to on-premise system.
For more information, see .
For more information on how to use the On-Premise option to connect to an onpremise SFTP server, check out the SAP Community blog Cloud Integration – How
to Connect to an On-Premise sftp server via Cloud Connector
Location ID
.
To connect to an SAP Cloud Connector instance associated with your account, en­
(only if On-Premise is selected for ter the location ID that you defined for this instance in the destination configuration
on the cloud side.
Proxy Type
Authentication
Authentication option for the connection to the SFTP server.
You have the following options:
○
User Name/Password
SFTP server authenticates the calling component based on the user name and
password. To make this configuration setting work, you need to define the user
name and password in a User Credential artifact and deploy the artifact on the
tenant.
○
Public Key
SFTP server authenticates the calling component based on a public key.
Credential Name
Name of the User Credential artifact that contains the user name and password.
(Only available if you have se­
lected User Name/Password for
Authentication)
User Name
ID of the user performing the file transfer.
(Only available if you have se­
Make sure that the user name contains no other characters than A-z, 0-9, _ (un­
lected Public Key for
derscore), - (hyphen), / (slash), ? (question mark), @ (at), ! (exclamation mark),
Authentication)
$ (dollar sign ), ' (apostrophe), (, ) (brackets), * (asterisk), + (plus sign), ,
(comma), ; (semicolon), = (equality sign), . (dot), or ~ (tilde). Otherwise, an at­
tempt for anonymous login is made which results in an error.
Timeout (in ms)
Maximum time to wait for the SFTP server to be contacted while establishing con­
nection or performing a read operation.
Default value: 10000 ms
The timeout should be more than 0, but less than five minutes.
Maximum Reconnect Attempts
Maximum number of attempts allowed to reconnect to the SFTP server.
Default value: 3
Use 0 to disable this behavior.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
121
Parameters
Description
Reconnect Delay (in ms)
How long the system waits before attempting to reconnect to the SFTP server.
Default Value: 1000ms
Automatically Disconnect
Disconnect from the SFTP server after each message processing.
The following figure illustrates how the properties configured for Authentication are used.
When as Authentication the option User Name/Password is chosen, user name and password are
determined by a User Credentials artifact (which is specified in the SFTP adapter). On the SFTP server, the
user is authenticated by the password.
When as Authentication the option Public Key is chosen, the user is specified in the SFTP adapter. On the
SFTP server, the user is authenticated by the public key associated with the user.
5. Choose Processing tab page.
122
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters and Descriptions for SFTP Adapter Sender Channel
Parameters
Description
Read Lock Strategy
Prevents files that are in the process of being written from
being read from the SFTP server. The endpoint waits until
it has an exclusive read lock on a file before reading it.
Select one of the following options based on the capabili­
ties of the SFTP server:
○
None: Does not use a read lock, which means that the
endpoint can immediately read the file. None is the
simplest option if the SFTP server guarantees that a
file only becomes visible on the server once it is com­
pletely written.
○
Rename: Renames the file before reading. The Re­
name option allows clients to rename files on the
SFTP server.
○
Content Change: Monitors changes in the file length/
modification timestamp to determine if the write op­
eration on the file is complete and the file is ready to
be read. The Content Change option waits for at least
one second until there are no more file changes.
Therefore, if you select this option, files cannot be
read as quickly as with the other two options.
○
Done File Expected : Uses a specific file to signal that
the file to be processed is ready for consumption.
If you have selected this option, enter the name of the
done file. The done file signals that the file to be proc­
essed is ready for consumption. This file must be in
the same folder as the file to be processed. Place­
holders are allowed. Default: ${file:name}.done.
Sorting
Select the type of sorting to use to poll files from the SFTP
server:
○
Sorting Order
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
None: The sorting is specified by the STFP server
○
File Name: Files are polled sorted by file name
○
File Size: Files are polled sorted by file size
○
Time Stamp: Files are polled sorted by the modification time stamp of the file
Select whether to sort in ascending or descending order.
PUBLIC
123
Parameters
Lock Timeout (in min)
Description
Specify how long to wait before trying to process the file
again in the event of a cluster outage. If it takes a very long
time to process the scenario, you may need to increase
the timeout to avoid parallel processing of the same file.
This value should be higher than the processing time re­
quired for the number of messages specified in Max.
Messages per Poll.
Default: 15
Change Directories Stepwise
Include Subdirectories
Select this option to change directory levels one at a time.
Selecting this option allows you to look for files in all the
subdirectories of the directory.
124
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Post-Processing
Description
Allows you to specify how files are to be handled after
processing.
Note that only successfully processed messages can be
post-processed. If message processing fails, the PostProcessing settings are not effective.
You can select one of the following options from the drop­
down list:
○
Delete File: The file is deleted after it has been read.
If you have also selected Done File Expected as Read
Lock Strategy, the file to be processed as well as the
done file will be deleted.
○
Keep File and Mark as Processed in Idempotent
Repository: Enables an idempotent repository to pre­
vent a file from being consumed twice. Select this op­
tion for SFTP servers that do not allow deletion or
moving of files, but the files are to be read only once.
Note that when you choose this option, the system
only takes into account the file name to decide
whether it is the same file or not. Attributes such like
file size, timestamp, hash value, for example, are ig­
nored.
If you have also selected Done File Expected as Read
Lock Strategy, an entry will be created in the idempo­
tent repository; the done file will not be deleted.
○
Keep File and Process Again: The file is kept on the
SFTP server and file processing is repeated. You can
use this option for testing purposes, for example.
If you choose this option, the file is processed with ev­
ery message processing run, even in case it has not
be changed.
○
Move File: The file is moved to another directory.
If you select this option, you need to specify the tar­
get directory.
Make sure that you specify a relative file path for the
target directory. Note that the specified file path is
defined relative to the directory specified with the
Directory parameter.

Note
If you specify an absolute file path, it may occur
that the file cannot be stored correctly at run­
time.
You can also specify the target directory dynamically,
for example, using the timestamp of the message.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
125
Parameters
Description
The following example uses backup folders with time­
stamps and replaces the file extension with bak:
backup/${date:now:yyyyMMdd}/$
{file:name.noext}.bak
If you have also selected Done File Expected as Read
Lock Strategy, only the file to be processed will be
moved and the done file will be deleted.
Idempotent Repository
(only available if you have selected Keep File and Mark as
Processed in Idempotent Repository for Post-Processing)
You can select one of the following idempotent repository
options:
○
In Memory: Keeps the file names in the memory. Files
are read again from the SFTP server when the run­
time node is restarted. It is not recommended to use
the In Memory option if multiple runtime nodes are
used. In this case the other nodes would pick the file
and process it because the memory is specific to the
runtime node.
○
Database(default): Stores the file names in a data­
base to synchronize between multiple worker nodes
and to prevent the files from being read again when
the runtime node is restarted. File name entries are
deleted by default after 90 days.

Note
The idempotent repository uses the username,
host name, and file name as key values to identify
files uniquely across integration flows of a tenant.
Retry Threshold for Alerting
If the number of attempts to retry polling of a message
from the SFTP server exceeds this threshold value, an
alert is raised. The default value '0' indicates that the alert
is not raised.

Note
If two or more sender channels are configured with
the SFTP connector, the value for the Alert Threshold
for Retry parameter should be the same.
6. Choose Advanced tab page.
Field
Description
Buffer Size
Write file content using the specified buffer size (in Byte).
Default: 131072 Byte (which is equal to 128 kB)
126
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Flatten File Names
Flatten the file path by removing the directory levels so
that only the file names are considered and they are writ­
ten under a single directory.
Max. Messages per Poll
(for sender channel only)
Maximum number of messages to gather in each poll.
Consider how long it will take to process this number of
messages, and make sure that you set a higher value for
Lock Timeout (in min).
Default: 20 Example: 1000 can be set as a limit.

Note
If you are using the sender SFTP adapter in combina­
tion with an Aggregator step and you expect a high
message load, consider the following recommenda­
tion:
Set the value for Max. Messages per Poll to a small
number larger than 0 (for example, 20). This ensures
proper logging of the message processing status at
runtime.
Prevent Directory Traversal
If the file contains any backward path traversals such as
\..\ or /../.. , this carries a potential risk of directory tra­
versal. In such a case, message processing is stopped with
an error. The unique message ID is logged in the message
processing log.

Note
We recommend that you specify the Directory and File
Name fields to avoid any security risks. If you provide
these fields, the header is not considered.
7. Choose Scheduler tab page.
 Note
In the following cases certain features might not be available for your current integration flow:
○ A feature for a particular adapter or step was released after you created the corresponding shape
in your integration flow.
○ You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
127
Scheduler
Scheduler Option
Field
Description
Schedule on Day
On Date
Specify the date on which you want
the operation to be executed.
At Time
Specify the time at which you want
the operation to be executed.
Every
Specify the interval at which the oper­
ation has to be executed.
Time Zone
Select the time zone that you want the
scheduler to use as a reference for the
date and time settings.
Schedule to Recur
Daily
Select the time or interval and time
zone for the schedule to recur.
Weekly
Select the checkboxes to indicate the
days of the week on which the opera­
tion has to be executed. Also, specify
the time or interval for the schedule to
recur.
Monthly
Select the day of the month on which
the operation has to be executed. Also
indicate the time or the interval for the
schedule to recur.
The Run Once option has been removed in the newest version of the adapter. Default values for the interval
under Schedule on Day and Schedule to Recur have been changed so that the scheduler runs every 10
seconds between 00:00 and 24:00.
8. Save or deploy the configuration.
SFTP polling is supported in the following way: The same file can be polled by multiple endpoints
configured to use the SFTP channel. This means that you can now deploy an integration flow with a
configured SFTP channel on multiple runtime nodes (which might be necessary to meet failover
requirements) without the risk of creating duplicates by polling the same file multiple times. Note that to
enable the new option, integration flows (configured to use SFTP channels) that were developed prior to
the introduction of this feature have to be regenerated.
128
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.8.2
Configuring a Channel with SFTP Receiver
Adapter
You can use the SFTP receiver adapter to transfer files the tenant to an SFTP server using the SSH protocol.
Context
How the Receiver SFTP Adapter Works
If you have configured a receiver SFTP adapter, message processing is performed as follows at runtime: The
tenant sends a request to an SFTP server (think of this as the receiver system), and the data flow is in the same
direction, from the tenant to the SFTP server. In other words, the tenant writes files to the SFTP server (from
where the communication partner can read them).
SFTP Receiver Adapter: Tenant writes file to SFTP server
Procedure
1. Select the integration flow you want to configure and choose Edit.
2. Choose the communication channel you want to configure.
To configure a receiver channel, click on a connection between Integration Process component and a
receiver.
3. In General tab page, provide channel name and description in the relevant fields if required.
4. Choose Adapter Specific tab page and provide values in fields based on description in table.
On the Target tab of the receiver channel, specify the following attributes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
129
Parameters
Description
Directory
Use the relative path to write the file to a directory, for ex­
ample <dir>/<subdir>.
File Name
Name of the file to be written.

Note
If you do not enter a file name and the parameter re­
mains blank, the content of the CamelFileName
header is used as file name. If this header is not speci­
fied, the Exchange ID is used as file name.
Expressions, such as ab*, a.*, *a*, and so on, are not
supported.
The endpoint URL that is actually used at runtime is dis­
played in the message processing log (MPL) in the mes­
sage monitoring application (MPL property
ProducedFile). Note that you can manually configure
the endpoint URL using the File Name attribute of the
SFTP adapter. However, you can dynamically override the
value of this attribute by using the Camel header
CamelFileName.
Append Timestamp and dynamically configuring File
Name (through a Camel simple expression) must not be
used together. The reason is that using the Append
Timestamp option results in generating a simple expres­
sion for the date. Both simple expressions result in an in­
valid expression that cannot be processed correctly.
130
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Description
Append Timestamp
Appends a timestamp at the end of the file name.
If the file has an extension (for example, .xml), the time­
stamp is appended to the file extension itself. Example: If
the file name is myfile.xml, the Append Timestamp
option (assuming the timestamp is Nov 30, 2015,
10:10:20) generates the following file name:
myfile20151201170800.xml

Note
Be aware of the following behavior if you have configured the file name dynamically: If you have selected
the Append Timestamp option, the timestamp over­
rides the file name defined dynamically via the header
(CamelFileName).
Append Timestamp and dynamically configuring File
Name (through a Camel simple expression) must not
be used together. The reason is that using the Append
Timestamp option results in generating a simple ex­
pression for the date. Both simple expressions result
in an invalid expression that cannot be processed cor­
rectly.

Caution
Note that in case files are processed very quickly, the
Append Timestamp option might not guarantee
unique file names.
Address
Host name or IP address of the SFTP server and an op­
tional port, for example, wdfd00213123:22.
Proxy Type
The type of proxy that you are using to connect to the tar­
get system.
Select Internet if you are connecting directly to the SFTP
server.
Select On-Premise if you are connecting to on-premise
system.
For more information, see .
For more information on how to use the On-Premise op­
tion to connect to an on-premise SFTP server, check out
the SAP Community blog Cloud Integration – How to Con­
nect to an On-Premise sftp server via Cloud Connector
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
.
131
Parameters
Description
Location ID
To connect to an SAP Cloud Connector instance associ­
(only if On-Premise is selected for Proxy Type
ated with your account, enter the location ID that you de­
fined for this instance in the destination configuration on
the cloud side.
Authentication
Authentication option for the connection to the SFTP
server.
You have the following options:
○
User Name/Password
SFTP server authenticates the calling component
based on the user name and password. To make this
configuration setting work, you need to define the
user name and password in a User Credential artifact
and deploy the artifact on the tenant.
○
Public Key
SFTP server authenticates the calling component
based on a public key.
Credential Name
(only if you have selected User Name/Password for
Name of the User Credential artifact that contains the user
name and password.
Authentication)
User Name
ID of the user performing the file transfer.
(only if you have selected Public Key for Authentication)
Make sure that the user name contains no other charac­
ters than A-z, 0-9, _ (underscore), - (hyphen), /
(slash), ? (question mark), @ (at), ! (exclamation mark), $
(dollar sign ), ' (apostrophe), (, ) (brackets), * (asterisk),
+ (plus sign), , (comma), ; (semicolon), = (equality
sign), . (dot), or ~ (tilde). Otherwise, an attempt for anon­
ymous login is made which results in an error.
Timeout (in ms)
Maximum time to wait for the SFTP server to be contacted
while establishing connection or performing a read opera­
tion.
Default value: 10000 ms
The timeout should be more than 0, but less than five mi­
nutes.
Maximum Reconnect Attempts
Maximum number of attempts allowed to reconnect to the
SFTP server.
Default value: 3
Use 0 to disable this behavior.
132
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters
Reconnect Delay (in ms)
Description
How long the system waits before attempting to recon­
nect to the SFTP server.
Default Value: 1000ms
Automatically Disconnect
Disconnect from the SFTP server after each message
processing.
The following figure illustrates how the properties configured for Authentication are used.
When as Authentication the option User Name/Password is chosen, user name and password are
determined by a User Credentials artifact (which is specified in the SFTP adapter). On the SFTP server, the
user is authenticated by the password.
When as Authentication the option Public Key is chosen, the user is specified in the SFTP adapter. On the
SFTP server, the user is authenticated by the public key associated with the user.
5. Choose Processing tab page.
Parameters and Descriptions for SFTP Adapter Receiver Channel
Field
Description
Handling for Existing Files
If the file already exists in the target, allow the following:
Override: Replace the existing file content with the new
one.
Append: Add the new file content to the end of the existing
one.
Fail: Do not perform any action and raise a failure.
Ignore: Do not perform any action.
Change Directories Stepwise
Changes directory levels one at a time.
Create Directories
Automatically creates missing directory levels as provided
in the file's path name.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
133
Field
Description
Temporary File Name
Allows you to specify a name for a temporary file.
(only visible when Handling for Existing Files is set to
If you override an existing file (on the SFTP server) with a
Override)
new one, the following situation can occur: The subse­
quent file processor (implemented on the receiver side)
already starts processing the file, even though it is not yet
completely written (by the SFTP adapter) to the SFTP
server. Together with the Override option, you can specify
the name of a temporary file. The SFTP adapter then finishes writing the file with the temporary file name to the
SFTP server first. After that, the temporary file is renamed
according to the target file name specified in the SFTP
adapter (according to the setting for File Name under
Target). This makes sure that the subsequent processor
only processes a completely written file.

Caution
Make sure that the name of the temporary file is
unique on the server, otherwise problems can occur
when different clients try to access the SFTP server
using the same temporary file name.
To make sure the name of the temporary file is
unique, you can enter one of the following strings, for
example:
${exchangeId}.tmp (because the Camel Ex­
change ID is unique)
${file:name}.tmp (in this case, make sure that
the file name is unique, which anyway is a reasonable
requirement for a scenario including a SFTP file trans­
fer)
Use Temporary File
For synchronization reasons, the SFTP receiver writes the
data to a temporary file initially. Once the write procedure
is finished, the temp file is renamed to the target file. The
temp file is deleted automatically, irrespective of whether
the write procedure is successful or contains errors.
Enter a temporary file name.
You can either use a static file name such as
large.file.temp or a placeholder such as $(file:name).temp
6. Choose Advanced tab page.
134
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Buffer Size
Write file content using the specified buffer size (in Byte).
Default: 131072 Byte (which is equal to 128 kB)
Flatten File Names
Flatten the file path by removing the directory levels so
that only the file names are considered and they are writ­
ten under a single directory.
Max. Messages per Poll
(for sender channel only)
Maximum number of messages to gather in each poll.
Consider how long it will take to process this number of
messages, and make sure that you set a higher value for
Lock Timeout (in min).
Default: 20 Example: 1000 can be set as a limit.

Note
If you are using the sender SFTP adapter in combina­
tion with an Aggregator step and you expect a high
message load, consider the following recommenda­
tion:
Set the value for Max. Messages per Poll to a small
number larger than 0 (for example, 20). This ensures
proper logging of the message processing status at
runtime.
Prevent Directory Traversal
If the file contains any backward path traversals such as
\..\ or /../.. , this carries a potential risk of directory tra­
versal. In such a case, message processing is stopped with
an error. The unique message ID is logged in the message
processing log.

Note
We recommend that you specify the Directory and File
Name fields to avoid any security risks. If you provide
these fields, the header is not considered.
7. Save or deploy the configuration.
SFTP polling is supported in the following way: The same file can be polled by multiple endpoints
configured to use the SFTP channel. This means that you can now deploy an integration flow with a
configured SFTP channel on multiple runtime nodes (which might be necessary to meet failover
requirements) without the risk of creating duplicates by polling the same file multiple times. Note that to
enable the new option, integration flows (configured to use SFTP channels) that were developed prior to
the introduction of this feature have to be regenerated.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
135
2.5.2.9
Configuring a Channel with OData Adapter
Prerequisites
You have created an integration project and an integration flow.
Context
OData adapter allows you to communicate using OData protocol in either ATOM or JSON format. In the sender
channel, the OData adapter listens for incoming requests in either ATOM or JSON format. In the receiver
channel, the OData adapter sends the OData request in the format you choose (ATOM or JSON) to the OData
service provider.
OData adapters only support synchronous communication. In other words, every request must have a
response.
 Tip
If your input payload contains nodes without data, the output also contains empty strings. If you want to
avoid empty strings in the output, ensure that the input payload does not contain any empty nodes.
Procedure
You use this procedure to configure OData adapter assigned to a communication channel.
1. Double-click the communication channel in the Model Configuration tab page.
2. Choose Browse in the Adapter Type screen area.
3. Choose OData in the Choose Adapter window and choose OK.
4. Choose the Adapter Specific tab page and enter details in fields based on the description given in the
following table.
136
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Channel
Description
Authorization
Sender only
Select User Role if you want to authorize a user to send OData
requests based on the ESBMessaging.send
Select Client Certificate if you want to authorize a user to send
OData requests based on a certificate. If you select this option,
you have to choose Add and enter the Subject DN (information
used to authorize the sender) and Issuer DN (information
about the Certificate Authority who issues the certificate).
EDMX
Sender only
Select the EDMX file that contains the OData service definition.
Operation
Sender only
Select an operation to perform on the entity.
Entity Set
Sender only
Enter name of the entity set in the OData model.
Address
Receiver only
Enter URL of the OData service provider you want to connect
to.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
137
Field
Channel
Proxy Type
Receiver only
Description
The type of proxy that you are using to connect to the target
system:
○
Select Internet if you are connecting to a cloud system.
○
Select On-Premise if you are connecting to an on-premise
system.

Note
If you select the On-Premise option, the following re­
strictions apply to other parameter values:
○
Do not use an HTTPS address for Address, as it
leads to errors when performing consistency
checks or during deployment.
○
Do not use the option Client Certificate for the
Authentication parameter, as it leads to errors
when performing consistency checks or during
deployment.

Note
If you select the On-Premise option and use the SAP
Cloud Connector to connect to your on-premise sys­
tem, the Address field of the adapter references a vir­
tual address, which has to be configured in the SAP
Cloud Connector settings.
○
If you select Manual, you can manually specify Proxy Host
and Proxy Port (using the corresponding entry fields).
Furthermore, with the parameter URL to WSDL you can
specify a Web Service Definition Language (WSDL) file de­
fining the WS provider endpoint (of the receiver). You can
specify the WSDL by either uploading a WSDL file from
your computer (option Upload from File System) or by se­
lecting an integration flow resource (which needs to be up­
loaded in advance to the Resources view of the integration
flow).
This option is only available if you have chosen a Process
Orchestration product profile.
For more information, see .
Location ID
Receiver only in
Enter the Location ID that you have provided in the account
case you choose
configuration in the cloud connector
Proxy Type as OnPremise
138
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Channel
Authentication
Receiver only
Description
Select Basic from the dropdown list if you want to use basic au­
thentication to connect to the OData service provider
Select Client Certificate from the dropdown list if you want to
use a certificate for authentication while connecting to the
OData service provider.

Restriction
You cannot use client certificate for connecting to the
OData service provider while modeling operations using
operations modeler.
Select Principal Propagation from the dropdown list if you want
the tenant to authenticate itself against the receiver by for­
warding the principal of the inbound user to the cloud connec­
tor. From there, it is forwarded to the back end of the relevant
on-premise system.
Operation Details
Receiver only
This contains details to the operation including Query (GET),
Update (PUT), Insert (POST), Read (GET), Create (POST) and
Merge (MERGE).
ResourcePath: This is the URI that is appended to the OData
service endpoint when connecting to the service provider.
For more information, see Modeling Operations for OData
Adapter
Query Options
Receiver Only
Enter any query options that you would like to send to the
OData service.
Custom Query Options
Receiver only
Enter additional query options other than the ones configured
using operations modeler. For example, sap-client=100 is a
custom query option that you can specify.
Content Type
Receiver only
Select format of the request payload. You can select Atom or
JSON.
Content Type Encoding
Receiver only
Select encoding standard used to encode the request payload
content.
Page Size
Receiver only
Enter total number of records in one page of response from
OData service provider.
 Note
For more information on authentication and authorization types, see and .
5. If you want the system to fetch records in pages of size specified in the Page Size field, select Process in
Batches checkbox.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
139
Process in Batches option is available only for Query (GET) operation.
 Tip
In the Process Call step in which you are calling the Local Integration Process, ensure that you enable
looping and select the Expression Type as Non-XML, Condition Expression as $
{property.<ReceiverName>.<ChannelName>} contains 'true', and Maximum Number of
Iterations as 999.
Important Considerations while Specifying the Condition Expression in Process Call
○ Do not declare the property hasMoreRecords in any of the integration flow steps (For example,
content modifier or script). It is available by default. You can directly use this property while
entering the Condition Expression in Process Call step.
○ Ensure that the receiver system name in the Condition Expression is the SuccessFactors system
that you are connecting to using the receiver channel in the Local Integration Process. Do not enter
the receiver system name from the main integration flow.
○ If you have specified a channel name for the receiver channel in the Local Integration Process,
provide that name in the Condition Expression.
6. Save the configuration.
Modeling Operations for OData Adapter
Prerequisites
You have configured OData adapter assigned to the receiver channel.
Context
You use the Model Operation feature in the OData adapter to model an operation [Query (GET), Update (PUT),
Create (POST), Read (GET) and Merge (MERGE)]. You also select the ResourcePath, the URI using which you
transact with the OData service provider.
 Note
If you are connecting to a system that supports https communication, you must ensure the following:
● Java development kit is installed on your system
● You have referred JDK in the Eclipse configuration file
 Note
For information on referring JDK in Eclipse configuration file, refer to Eclipse documentation.
● You have imported the security certificate of the system you are connecting to your JDK keystore
140
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
For information on importing certificate to JDK keystore, refer to JDK documentation.
Procedure
You use this procedure to model an operation with the OData adapter.
1. Double-click the OData receiver channel of the integration flow in the Model Configuration tab page.
2. Choose the Adapter Specific tab page.
3. Choose Model Operation.
4. If you want to use a local EDMX file to connect to the OData service provider, perform the following
substeps:
 Remember
If you have used client certificate for connecting to the OData service provider, you need to download
the EDMX file from the OData service provider and import it to the src.main.resources.edmx folder. It
enables you to use local EDMX file to connect to the system.
a. Select the Local EDMX File checkbox.
b. Choose Browse.
c. Select an EDMX file in the EDMX Selection window and choose OK.
5. If you want to enter connection details manually, enter values in fields based on the description given in the
table.
Field
Description
Address
URL of OData service provider you are connecting to
Username
Username you are using for authentication
Password
Password you are using for authentication
 Note
You cannot use this option if you have selected client certificate as the authentication method while
configuring the channel.
6. Select the entity in Select Entity for an Operation window and choose Next.
7. Choose the Operation from the dropdown list based on the description given in the table.
Operation
Description
Query (GET)
Used to fetch data from the OData service
Create (POST)
Used to insert data to an OData service
Update (PUT)
Used to update data to an OData service
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
141
Operation
Description

Restriction
This operation is not supported for associated entities
Merge (MERGE)
Used to merge data with existing data in OData service

Restriction
This operation is not supported for associated entities
Read (GET)
Used to fetch a unique entity from the OData Service.
Passes the key fields along with the Entity in the URI.
Format: <Entity>(keyfield 1, keyfield x,..)
8. Select the required fields for the operation form the Fields screen area.
 Note
IN the case of Update (PUT) or Insert (POST) operation, this would be the last step. Choose Finish.
9. If you have chosen the operation as Query (GET), enter values in Top and Skip fields based on the
description given in table.
Field
Description
Top
If you enter a value 'x', the system fetches the top x re­
cords form the OData service provider
Skip
If you enter a value 'x', the system skips x records from top
and fetches the remaining records from the OData service
provider
10. Choose Next.
11. If you want to add filter conditions to the operation, enter values in fields based on the description given in
table.
Field
Description
Filter Field
Field that is used in the ‘WHERE’ clause for filtering.

Note
Field set contains the set of filterable fields returned
from the OData service provider that you can use in
the Filter Condition
Operation
142
PUBLIC
Operator to be used in the WHERE condition Example < , >
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Type
Value that the filter filed has to be compared against.
When the Type is Text then specify the exact value
When the Type is XPath specify the entire XPath value. In
case the previous Integration flow step is a content en­
richer, the XPath must be specified as a relative path,
starting with double-slash ‘\\’.
When the Type is Property, the system reads value from
the property you have defined in the integration flow ele­
ment.
Value
Value that the filter filed has to be compared against.
When the Type is Text then specify the exact value
When the Type is XPath specify the entire XPath value. In
case the previous Integration flow step is a content en­
richer, the XPath must be specified as a relative path,
starting with double-slash ‘\\’.
Condition
‘AND’ or ‘OR’ condition that needs to be used in the Query
WHERE clause filter condition.
Add
The condition will be added to the generated SuccessFac­
tors Query

Note
Multiple conditions can be added if required
Remove
Any condition that is already added to the list can be se­
lected and removed from the final Query
12. Choose Finish.
Results
Choosing the Finish button generates an XSD and EDMX files.
The XSD is the format in which data is processed in the Cloud Integration esb. You use this xsd file in the
mapping step for data transformation.
The EDMX file contains the OData Entity specification form the provider. This can be used when you model
operation again by choosing ‘Local EDMX’ file.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
143
Defining Mapping for OData Batch Processing
Prerequisites
● You have created an integration project and integration flow
● You have configured the OData adapter receiver channel
● You have modeled PUT or POST operation using the OData adapter
● You have imported the input payload XML format into the eclipse project
Context
When you choose batch processing for PUT and POST operations for the OData adapter, the payload format
that is sent to the OData service must be in the recommended structure. You can use the input XSD that is
generated when you model the operation with a mapping step to transform the payload into the recommended
XSD structure. You can alternatively use XSLT or content modifier to do this.
Procedure
This procedure enables you to transform the input payload XML into the recommended batch processing
structure.
1. Choose
File
New
Other .
2. In the New wizard, choose
SAP Cloud Integration
Message Mapping
and choose Next.
3. In the General Details section of the New Message Mapping window, enter Name and Description.
4. In the Location Details section of the New Message Mapping window, choose Browse and select the project
that you are working in. Choose Ok.
5. In the New Message Mapping window, choose Finish.
6. In the Source Element section, choose Add.
7. In the Select a XSD or WSDL file window, select the input payload format XML and choose OK.
8. In the Target Element section, choose Add.
9. In the Select a XSD or WSDL file window, select the XSD file that was generated when you modeled the
operation and choose OK.
10. Choose the Definition tab page and perform the following substeps to map the elements in the payload
XML to the target XSD.
a. Map the Entity Type element in the left pane to the batchChangeSet on the right pane.
b. Map the fields in the left pane to the appropriate fields on the right pane.
c. Map the batchChangeSet, Entity Set and Entity Type elements on the right pane except the headers to
a constant. The value of the constant can be a dummy example value.
d. Choose the method element and double-click Constant element in the properties view.
e. In the Constant Parameters window, enter the operation (PUT/POST) in the Value field and choose OK.
This is the same operation that you have chosen while modeling the OData operation.
144
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
Refer to 2031746
for more details on the structure of request and response XSD.
Mapping Definition for Reference Insert
When you are performing the Insert (POST) operation, in addition to inserting an entity, you can add a
reference to an associated entity. To do this, you have to map the appropriate field from the payload to the key
field of associated entity in <link> tag.
You can use a mapping step to do this. Consider the following example.
<?xml version="1.0" encoding="UTF-8"?>
<Categories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="CategoriesEntityPOST0.xsd">
<Category>
<ID>0</ID>
<Products>
<Product>
<Description>Description</Description>
<Name>Name</Name>
<ID>0</ID>
</Product>
</Products>
<link>
<Products>
<Product>
<ID>0</ID>
</Product>
</Products>
</link>
</Category>
</Categories>
The primary key is <ID>. You need to map the key element to your reference to <ID> for successfully executing
reference insert operation.
2.5.2.10 Configuring a Channel with Ariba Adapter
Prerequisites
● You have created an integration project and an integration flow.
● You have the credentials to log on to the Ariba Network.
● You have a certificate from Ariba or a trusted third party who is a certification authority.
● You have deployed the following artifacts: User Credentials and Keystore.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
145
Context
You use this procedure to configure a sender and receiver channel of an integration flow with the Ariba Network
adapter. These channels enable the SAP and non-SAP cloud applications to send and receive business-specific
documents in cXML format to and from the Ariba Network. Examples of business documents are purchase
orders and invoices.
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Procedure
1. Double-click the channel that you want to configure on the Model Configuration tab page.
2. On the General tab page, choose Browse in the Adapter Type screen area.
3. Select Ariba in the Choose Adapter window and choose OK.
4. Choose the Adapter-Specific tab page and enter the details as shown in the table below:
Parameters and Values of a Channel for the Ariba Adapter
Section
Parameter
Description
Connection Details
Connectivity URL
You need URL to which the cXML re­
quests are posted to/polled from or
you need profile URL to connect to
Ariba network.
If you do not have actual end-point
URL, then you need to enter /
getprofile at the end of profile
URL. This in turn sends a profile re­
quest to this URL which internally
takes care of sending payload to the
correct URL.
146
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Parameter
Description
Connection Mode
Select one of the options based on the
description given below:
Test - If you select this option, the
Ariba Network will not process the
messages, and treats the messages
as test data.
Production - If you select this option,
the Ariba Network processes the mes­
sages.
Default deployment mode is “Produc­
tion”.
Account Type
Select one of the options based on the
description given below:
Buyer - If you hold a buyer account on
the Ariba Network.
Supplier - If you hold a supplier ac­
count on the Ariba Network.
Request Type (this field is available
only in the sender channel)
Select one of the options based on the
request types of buyer/supplier that
you want to poll.
Maximum Messages (this field is
available only in the sender channel)
Enter the number of messages to be
polled from the Ariba Network for the
above-selected Request Type.
The maximum allowed value is 200.
Authentication Domain
Select one of the options based on the
description given below:
Network ID: A unique alphanumeric
value assigned to every organization
registered on Ariba SN; for example,
AN01000000001.
Network User Id: A login name of an
Ariba SN user. These names typically
have the format of an e-mail address;
for example, xyz@abc.com.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
147
Section
Parameter
Description
Authentication
Select one of the options based on the
description given below:
Shared Key: If you have set the shared
key in your Ariba account.
Client Certificate: If you have configured your certificate from a trusted
certificate authority in the Ariba ac­
count.
Credential Name
Enter a name. This name is treated as
an alias to the secure store where the
user credentials are deployed. This
value should be set according to the
Authentication selected above. If you
have selected Client CertificateClient,
then enter the alias details in the
Private Key Alias field.
This alias is used to identify the key­
store credentials deployed on the SAP
Cloud Integration account.
For User, you can enter Network
User Id or Network ID, depend­
ing on the selected option for
Authentication Domain.
For Password, enter the shared key.
Ariba Network ID
Enter the ID that is associated with
the Ariba Network. Default value is
AN01000000001.
Processing Details
cXML version
Default value provided by SAP is
1.2.025. If you are entering the ver­
sion, it must be above 1.2.018.
User Agent
Language
Enter the user agent details. The con­
vention is a textual string representing
the client system that is conducting
the cXML conversation. It must con­
sist of the software company name
and the product name.
Language that is used for construct­
ing the cXML conversation.
The only supported language is EN.
Scheduler (only valid for the sender
channel)
148
PUBLIC
Run Once
Run a data polling process immedi­
ately after deploying the project.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Parameter
Description
On Date
Specific date on which the data poll­
ing process has to be initiated to fetch
data from the Ariba system.
Daily
Run message polling every day to
fetch data from the Ariba system.
Weekly
Run the message polling every week
on specified days of the week to fetch
data from the SuccessFactors system.
Monthly on Day
Execute the message polling every
month on the specified date to fetch
data from the Ariba server.

Note
If the specified date is not appli­
cable in a particular month, the
data polling is not executed in
that month. For example, if the
30th day is selected, polling will
not be executed in the month of
February, as 30th is not a valid
day for February.
Time
The time at which the data polling cy­
cle has to be initiated. For example, if
you want the data polling to be started
at 4:10 p.m., enter 16:10. Note that the
time must be entered in 24-hour for­
mat.
Every xx minutes between HH hours
The connector fetches data from the
Ariba system every ‘xx’ minutes be­
tween HH hours and HH hours.
and HH hours

Note
If you want the polling to run for
the entire day, enter 1 and 59.
Time Zone
Select the time zone that you want to
use as reference for scheduling the
data polling cycle.
5. Save the configuration of the channel editors.
 Note
You can use headers and properties to set values for Ariba Network URL, Credential Name, Private Key
Alias and Ariba Network ID. You can enter values in the following format:
○ ${header.url}
○ ${property.credentialName}
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
149
Results
In the Model Configuration editor, right-click and choose Deploy Integration Content to apply the configuration
settings and run the integration flow.
2.5.2.11 Configuring a Channel with Twitter Adapter
Prerequisites
You can only select the Twitter adapter type when you have connected your client (which runs Eclipse) to a
suitable version of a cluster. After connecting to the newest version of the cluster, choose Update client with
latest components from server (see the following figure).
Context
You can use the Twitter receiver adapter to extract information from the Twitter platform (which is the receiver
platform) based on certain criteria such as keywords, user data, for example. As one example, you can use this
feature to send, search for and receive Twitter feeds.
The connection works that way that the tenant logs on to Twitter based on an OAuth authentication mechnism
and searches for information based on criteria as configured in the adapter at design time. OAuth allows the
tenant to access someone else’s resources (of a specific Twitter user) on behalf of the tenant. As illustrated in
the figure, the tenant (through the Twitter receiver adapter) calls the Twitter API to access resources of a
specific Twitter user. Currently, the Twitter adapter can only be used as receiver adapter. For more information
on the Twitter API, go to: https://dev.twitter.com/ .
Procedure
1. Double-click the channel that you want to configure on the Model Configuration tab page.
150
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2. On the General tab page, choose Browse in the Adapter Type screen area.
3. Select Twitter in the Choose Adapter window and choose OK.
4. Choose the Adapter-Specific tab page and enter the details as shown in the table below:
Attributes of the Twitter Receiver Adapter (Twitter Components)
Field
Description
Endpoint
To access Twitter content, you can choose among the following general options.
○
Send Tweet
○
Search
Allows you to send content to a specific user timeline.
Allows you to do a search on Twitter content by specifying keywords.
○
Send Direct Message
Allows you to send messages to Twitter (write access, direct message).
User
Specifies the Twitter user from which account the information is to be extracted.
(only in case as
Endpoint you
have selected
Send Direct
Message)
Page Size
Specifies the maximum number of results (tweets) per page.
Number Of
Specifies the number of pages which you want the tenant to consume.
Pages
Attributes of the Twitter Receiver Adapter (Filter Settings)
Field
Description
Keywords
Specifies the keywords used to filter the results.
(only in case as
Use commas to separate different keywords or a valid Twitter Search API query (for more informa­
Endpoint you
tion, go to https://dev.twitter.com/rest/public/search
).
have selected
Search)
Language
Specifies the search language.
(only in case as
Endpoint you
have selected
Search)
Attributes of the Twitter Receiver Adapter (OAuth Settings)
Field
Description
Consumer Key
An alias by which the consumer (tenant) that requests Twitter resources is identified
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
151
Field
Description
Consumer
An alias by which the shared secret is identified (that is used to to define the token of the consumer
Secret
(tenant))
Access Token
An alias by which the access token for the Twitter user is identified
In order to make authorized calls to the TwitterAPI, your application must first obtain an OAuth ac­
cess token on behalf of a Twitter user
Access Token
An alias by which shared secret is identified that is used to define the token of the Twitter user
Secret
The authorization is based on shared secret technology. This method relies on the fact that all parties of a
communication share a piece of data that is known only to the parties involved. Using OAuth in the context
of this adapter, the Consumer (that calls the API of the receiver platform on behalf of a specific user of this
platform) identifies itself using its Consumer Key and Consumer Secret, while the context to the user
itself is defined by an Access Token and an Access Token Secret. These artifacts are to be generated for
the receiver platform app (consumer) and should be configured that way that they will never expire. This
adapter only supports consumer key/secret and access token key/secret artifacts that do not expire.
To finish the configuration of a scenario using this adapter, the generated consumer key/secret and access
token key/secret artifacts are to be deployed as Secure Parameter artifact on the related tenant. To do this,
use the Integration Operations feature, position the cursor on the tenant and chosen Deploy Artifact .... As
artifact type, choose Secure Parameter.
5. Save the configuration of the channel editor.
2.5.2.12 Configuring a Channel with Facebook Adapter
Context
You can use the Facebook receiver adapter to extract information from Facebook (which is the receiver
platform) based on certain criteria such as keywords, user data, for example. As one example, you can use this
feature in social marketing activities to do social media data analysis based on Facebook content.
The connection works that way that the tenant logs on to Facebook based on an OAuth authentication
mechanism and searches for information based on criteria as configured in the adapter at design time. OAuth
allows a the tenant to access someone else’s resources (of a specific Facebook user) on behalf of the tenant. As
illustrated in the figure, the tenant (through the Facebook receiver adapter) calls the Facebook API to access
resources of a specific Facebook user. For more information on the Facebook API, go to: https://
developers.facebook.com/ .
152
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. Double-click the channel that you want to configure on the Model Configuration tab page.
2. On the General tab page, choose Browse in the Adapter Type screen area.
3. Select Facebook in the Choose Adapter window and choose OK.
4. Choose the Adapter-Specific tab page and enter the details as shown in the table below:
Attributes of the Facebook Receiver Adapter (Facebook Components)
Field
Description
Endpoint
To access Facebook content, you can choose among the following general options.
○
Get Posts
Allows you to fetch specific Facebook posts.
○
Get Post Comments
Allows you to fetch specific Facebook post comments.
○
Get Users
Allows you to fetch details of a specific user.
○
Get Feeds
Allows you to fetch feeds of a specific user or a page.
User/Page ID
Timeout (ms)
Specifies the Facebook user from which account the information is to be extracted.
Specifies a timeout (in miliseconds) after which the connection to te Facebook platform should be
terminated.
Attributes of the Facebook Receiver Adapter (OAuth Settings)
Field
Description
Application ID
An alias by which the consumer (tenant) that requests Facebook resources is identified
Application
An alias by which the shared secret is identified (that is used to to define the token of the consumer
Secret
(tenant))
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
153
Field
Description
Access Token
An alias by which the access token for the Facebook user is identified
In order to make authorized calls to the Facebook API, your application must first obtain an OAuth
access token on behalf of a Facebook user
The authorization is based on shared secret technology. This method relies on the fact that all parties of a
communication share a piece of data that is known only to the parties involved. Using OAuth in the context
of this adapter, the Consumer (that calls the API of the receiver platform on behalf of a specific user of this
platform) identifies itself using its Consumer Key and Consumer Secret, while the context to the user
itself is defined by an Access Token and an Access Token Secret. These artifacts are to be generated for
the receiver platform app (consumer) and should be configured that way that they will never expire. This
adapter only supports consumer key/secret and access token key/secret artifacts that do not expire.
To finish the configuration of a scenario using this adapter, the generated consumer key/secret and access
token key/secret artifacts are to be deployed as Secure Parameter artifact on the related tenant. To do this,
use the Integration Operations feature, position the cursor on the tenant and chosen Deploy Artifact .... As
artifact type, choose Secure Parameter.
5. Save the configuration of the channel editor.
2.5.2.13 Configuring a Channel with SuccessFactors Adapter
Prerequisites
You have created an integration project and an integration flow.
To successfully run the Operations Modeler, your Java Virtual Machine (JVM) must contain the security
certificate recommended by the SuccessFactors system. Example: VeriSign Class 3 Public Primary
Certification Authority - G5 security certificate.
 Note
First, you must verify if the JVM contains the security certificate that is used by SuccessFactors system. If
not, then download the certificate from the appropriate security certificate vendor and install it. You can
refer to JVM documentation for verifying and installing the security certificate on to your JVM. Ensure that
the IP addresses of the SAP Cloud Integration runtime worker node and the systems you are using to
connect to the SuccessFactors system are in the list of allowed IP addresses.
Context
The SuccessFactors adapter provides three message protocols for you to communicate with the
SuccessFactors system. They are:
154
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
1. SOAP - Configuring SuccessFactors Adapter with SOAP Message Protocol [page 155]
2. OData V2 - Configuring SuccessFactors Adapter with OData V2 Message Protocol [page 165]
 Note
This is available only for the receiver channel.
3. OData V4 - Configuring SuccessFactors Adapter with OData V4 Message Protocol [page 171]
 Note
This is available only for the receiver channel.
4. REST - Configuring SuccessFactors Adapter with REST Message Protocol [page 172]
You can choose the protocol you want based on the scenario you want to execute.
You need to provide the following details in order to communicate with the SuccessFactors system.
● Connection details – Details required to establish a connection with the SuccessFactors system
● Processing details – Information required to process your modeled operation
● Scheduler – Settings that enable you to schedule a data polling cycle at regular intervals
 Note
The scheduler is available only for the sender channel.
 Note
The password for connecting to the SuccessFactors system should be deployed onto the tenant via the
‘Credentials’ deployment wizard available in the Node Explorer.
 Tip
You can use the Insert (POST) operation to insert more than one records in a single operation. These
records must have an edmx association between them.
2.5.2.13.1 Configuring SuccessFactors Adapter with SOAP
Message Protocol
Context
You use this procedure to configure the SuccessFactors adapter with the SOAP message protocol.
 Note
You can now pass filter conditions via header or property while performing an asynchronous or ad-hoc
operation.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
155
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. Go to the General tab and choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select SuccessFactors and choose OK.
4. Choose SOAP from the dropdown list in the Message Protocol field.
5. Go to the Adapter Specific tab.
6. Provide values in the fields based on the descriptions in the following table.
Field
Address
Description
URL of the SuccessFactors data center that you want to
connect to.
Address Suffix
The system provides a value for this field based on the
protocol you choose. For SOAP, the value is /sfapi/v1/
soap.
Credential Name
Credential name that you have used while deploying cre­
dentials on the tenant.
Proxy Type
Type of proxy you want to use to connect to the Success­
Factors system.
If you choose Manual, you should enter values for the
fields Proxy Host and Proxy Port.
Proxy Host is the name of the proxy host you are using.
Proxy Port is the port number that you are using.
Call Type
Type of call that the SAP Cloud Integration system makes
to the SuccessFactors system.
Choose Synchronous for normal operations.
Choose Asynchronous for ad hoc operations.
Operation Details
Details of the operation that you are performing on the
SuccessFactors system. Choose Model Operation to
launch the operations modeler wizard. For more informa­
156
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
tion, see Configuring SuccessFactors Adapter with SOAP
Message Protocol [page 155]
You can view the following details:
Entity: The entity that you are accessing in the Success­
Factors system
Operation: Query/Insert/Update/Upsert
Query: SFQL (SuccessFactors Query Language) query
type that is used to communicate with the SuccessFactors
system

Note
Query is the only operation available in the sender
channel.
Parameters
SFAPI operation parameters that you want to include in
the operation that you have modeled using the operations
modeler wizard.

Code Syntax
key1=value1&key2=value2

Note
You can specify the custom parameters in four ways:
<Key>=<value>;<key>=,value>
<header/property variable>=value;<header/property
variable>=value
<header/property variable>;<header/property varia­
ble>; here, the variable contains both the key and its
value.

Example
externalKeyMapping=costCenter;pro
cessinactiveEmployees=true

Example
$
{property.ECERP_PARAMETERS}=costC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
157
Field
Description
enter;$
{header.ECERP_PARAMETERS}=true

Example
${property.ECERP_PARAMETERS};$
{header.ECERP}, which contains the keyvalue pair.

Example
$
{property.ECERP_PARAMETERS}=proce
ssinactiveEmployees=true;resultOp
tions=allJobChangesPerDay
. Here, you are specifying multiple key-value pairs in
one property parameter.
Page Size
In the case of a Query operation, this value indicates the
maximum number of records fetched in one polling cycle
from the SuccessFactors system.

Caution
If you find that the Query operation stops due to a
timeout, reduce the Page Size and execute the opera­
tion again.
In the case of Insert/Update/Upsert operations, this value
indicates the maximum number of records you can send
in a payload.

Caution
Since the SuccessFactors system supports a maxi­
mum page size of 800, you must ensure that the max­
imum number of records in the payload for data ma­
nipulation operations (Insert, Update, or Upsert) is
less than or equal to the page size specified.
If you need to send a larger payload, use the Splitter
element to split the payload. Also, ensure that the
split payload size is less than or equal to the page size
specified.
The maximum page size supported by SuccessFactors is
800.
158
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description

Tip
The system assigns a default value of 200 if you do
not provide a value for this field.
Timeout (in min)
Maximum time system waits for a response before the
connection ends or is timed out. By default, 5 minutes is
the timeout value if you do not provide input.
7. If you want to process messages in batches while using the SuccessFactors SOAP adapter in the receiver
channel of a Local Integration Process, select Process in Batches.
 Restriction
You cannot use Process in Batches option with Query operation if the Process Call step is used in a
Multicast branch.
 Note
By selecting Process in Batches, you enable the adapter to process messages in batches. The size of a
message batch is defined by the value that you specify in Page Size.
 Tip
In the Process Call step in which you are calling the Local Integration Process, ensure that you enable
looping and select the Expression Type as Non-XML, Condition Expression as $
{property.SAP_SuccessFactorsHasMoreRecords.<ReceiverName>} contains 'true', and
Maximum Number of Iterations as 999.
Important Considerations while Specifying the Condition Expression in Process Call
○ Do not declare the property SAP_SuccessFactorsHasMoreRecords in any of the integration
flow steps (For example, content modifier or script). It is available by default. You can directly use
this property while entering the Condition Expression in Process Call step.
○ Ensure that the receiver system name in the Condition Expression is the SuccessFactors system
that you are connecting to using the receiver channel in the Local Integration Process. Do not enter
the receiver system name from the main integration flow.
○ If you have specified a channel name for the receiver channel in the Local Integration Process,
provide that name in the Condition Expression.
8. If you are configuring the sender channel, perform the following substeps to configure the scheduler:
a. Go to the Scheduler tab.
b. Enter the scheduler details based on the descriptions given in the table below.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
159
Parameters and Values of SuccessFactors Adapter Scheduler
Field
Description
Run Once
Run a data polling process immediately after deploying
the project.
On Date
Specific date on which the data polling process has to
be initiated to fetch data from the SuccessFactors sys­
tem.
Daily
Run message polling every day to fetch data from the
SuccessFactors system.
Weekly
Run message polling on a specified day every week to
fetch data from the SuccessFactors system.
Monthly on Day
Run message polling on a specified date every month to
fetch data from the SuccessFactors server.

Note
If the specified date is not applicable to a month,
data polling is not executed in that particular
month. For example, if the 30th day of the month is
selected as the polling date, polling will not be exe­
cuted in the month of February as February 30 is
not a valid date.
Time
The time at which the data polling cycle has to be initi­
ated. For example, if you want data polling to start at
4.1PM, enter 16:10. Note that the time must be entered
in 24-hour format.
Every xx minutes between HH hours and HH hours
The connector fetches data from the SuccessFactors
system every ‘xx’ minutes between HH hours and HH
hours.

Note
If you want the polling to run for the entire day, en­
ter 1 and 59.
Time Zone
Select the time zone that you want to use as the refer­
ence for scheduling the data polling cycle.
9. Save the changes.
160
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.13.1.1 Modeling Operations for SuccessFactors SOAP
Web Service
Prerequisites
● You have assigned the SuccessFactors adapter to the communication channel.
● You have selected SOAP in the Message Protocol field.
● You have launched the operations modeler wizard by choosing Model Operation on the Adapter Specific
tab.
Context
You need to provide operation details to access and modify records in the SuccessFactors SOAP Web service.
You use the operations modeler wizard to provide these details and also generate the XSD file.
Procedure
1. In the Connect to System window, provide values in the fields based on the descriptions in the table below
and choose Next.
Field
Address
Description
URL of the SuccessFactors system that you are connect­
ing to
Company ID
SuccessFactors company ID
User Name
Your user name for authentication
Password
Relevant password for the specified user name
Proxy Communication
Select this checkbox if you want to manually specify the
proxy details
Proxy Host
Proxy host name
Proxy Port
Proxy port number
2. In the Entity Selection window, select the entity that you want to perform the operation on from the Entity
List. Choose Next.
The wizard fetches the fields for the selected entity.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
161
3. In the Model Operation window, select the Operation from the dropdown list.
4. Select the fields that you want to perform the operation on.
5. If you have selected query for the Operation, choose Next to specify filter conditions.
You can configure the filter conditions to execute delta sync scenarios. For more information, see
Configuring Delta Sync Scenarios [page 163]. Refer to the following table when specifying filter conditions.
Field
Description
Filter Field
Field that is used in the SuccessFactors API ‘WHERE’
clause for filtering.

Note
The field set contains the set of filterable fields re­
turned from the SuccessFactors API that you can use
in the filter condition.
Operation
Operator to be used in the WHERE condition. Example: < ,
>
Type
Value that the filter field has to be compared against.
If the type is Text, specify the exact value.
If the type is XPath, specify the entire XPath value. If the
previous integration flow step is a content enricher, the
XPath must be specified as a relative path, starting with a
double-slash ‘\\’.
If the type is Delta Sync, the value is populated with
maxDateFromLastRun.
If the type is Property, the system reads the value from the
property that you have defined in the integration flow ele­
ment.
Value
Value that the filter field has to be compared against.
If the type is Text, specify the exact value
If the type is XPath, specify the entire XPath value. If the
previous integration flow step is a content enricher, the
XPath must be specified as a relative path, starting with a
double-slash ‘\\’.
If the type is Delta Sync, the value is populated with
maxDateFromLastRun.
Condition
162
PUBLIC
‘AND’ or ‘OR’ condition that needs to be used in the query
WHERE clause filter condition.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Add
The condition will be added to the generated SuccessFac­
tors query.

Note
Multiple conditions can be added if required.
Remove
Any condition that is already added to the list can be se­
lected and removed from the final SuccessFactors query.
6. Choose Finish.
The Finish button is only activated if you have selected fields of the entity in step 3. When you choose
Finish, the system creates a XML schema file with the selected entities. You can access the schema file in
the src.main.resources.wsdl folder of your project. If there is an existing XML schema file, you have the
option of overwriting the existing file or creating a new file after choosing the Finish option. This file can be
used in the integration flow like a mapping step.
One of the root elements in the XML schema file is the Entity Name. In cases where the Entity Name is in
the format <EntityName>_$XX, only <EntityName> is used as the root element of the XML schema file.
$XX is dropped from the root element name of the XML schema so that you can use the same integration
flow in other SuccessFactors company IDs without changing the mapping.
2.5.2.13.1.1.1 Configuring Delta Sync Scenarios
You can configure the SuccessFactors connector to fetch the modified or delta records instead of fetching all
the records. This optimizes the polling mechanism. This is known as a delta sync configuration.
If you want to add more filter conditions after you have configured the delta sync, use the appropriate
operators and add them. Once the query is executed, the relevant scenarios are executed.
 Note
The following steps guide you through the configuration of the delta sync conditions only. For an end-toend procedure for creating and executing operations, see Modeling Operations.
Delta Sync
With this configuration, the system fetches all records from the beginning of time (1/1/19070, by default) in the
first run. Only modified records are fetched in the subsequent runs.
1. In the Configure Filter Condition for Fields window, select a field of type DATETIME for the Filter Field.
Example: lastModified
2. In the Operation field, select >.
3. In the Type field, select Delta Sync. maxDateFromLastRun is automatically populated in the Value field.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
163
 Note
If the payload from the SuccessFactors system has execution_timestamp as one of the fields, that time
stamp is used as the reference date for the subsequent delta sync polling cycles. The date specified in the
Query is ignored.
Modify Query in Existing Delta Sync Configuration
With this configuration, you can modify the query in an existing delta sync configuration. The system will
consider the new query and fetch only modified records in the subsequent polling cycles.
1. In the Model Operation window, add or remove the new fields that you wish to fetch.
2. In the Configure Filter Conditions for Fields window, you can add new filter conditions.
3. You can also modify or remove existing filter conditions in the Configure Filter Conditions for Fields window.
4. Continue with the existing delta sync configuration.
Reset Existing Delta Sync Configuration
You perform these steps only to reset an existing delta sync configuration. After reset, the configuration
enables you to fetch data from the beginning of time (1/1/1970) in the first polling cycle and fetch only
modified records in the subsequent polling cycles.
1. In the channel configuration, enter a new channel name in the Channel Details section. The new name
resets the existing delta sync configuration.
 Caution
Choose a unique channel name. Do not use names that were used in earlier delta sync configurations.
2. Save the configuration.
Fetch Records After a Specified Date in the First Run and Fetch Modified
Records in Subsequent Runs
With this configuration, you can specify a date that will be used as a reference to fetch records. The system
fetches the records that have been modified or added after the specified date in the first polling cycle. The
modified records are fetched in the subsequent polling cycles.
1. In the Model Configuration window, select the fields that you want to fetch.
2. In the Configure Filter Condition for Fields window, select a DATETIME type field in theFilter Field window.
Example: lastModified
3. In the Operation field, choose >=.
4. In the Value field, enter the date after which you want the records to be fetched from the system.
164
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
5. Choose Add.
6. Select a field of type DATETIME for the Filter Field. Example: lastModified
7. In the Operation field, select >.
8. In the Type field, select Delta Sync. maxDateFromLastRun is automatically populated in the Value field.
9. In the Operators field, choose AND.
2.5.2.13.2 Configuring SuccessFactors Adapter with OData
V2 Message Protocol
Context
You use this procedure to configure the SuccessFactors adapter with the OData V2 message protocol.
 Remember
The OData V2 message protocol is only available if you are using the SuccessFactors adapter in the receiver
channel.
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
 Tip
If your input payload contains nodes without data, the output also contains empty strings. If you want to
avoid empty strings in the output, ensure that the input payload does not contain any empty nodes.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. Go to the General tab and choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select SuccessFactors and choose OK.
4. Choose OData V2 from the dropdown list in the Message Protocol field.
5. Go to the Adapter Specific tab.
6. Provide values in the fields based on the descriptions in the following table.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
165
Field
Description
Address
URL of the SuccessFactors data center that you would like
to connect to.
Address Suffix
The system provides a value for this field based on the
protocol you choose. For SOAP, the value is /odata/v2.
Credential Name
Credential name that you have used while deploying cre­
dentials on the tenant.
Proxy Type
Type of proxy you want to use to connect to the Success­
Factors system.
You can choose Internet or On-premise.
Operation Details
Operation that you have created using the operations
modeler. For more information, see . [page 167]
Content Type
Format of the request payload. You can select Atom or
JSON.
Content Type Encoding
Encoding standard to be used for encoding content. Cur­
rently, UTF-8 is supported.
Page Size
This field is only applicable for Query operations. It indi­
cates the number of records that the SAP Cloud
Integration system reads from the SuccessFactors system
in one polling cycle when Operation is executed.
If you find that the Operation stops due to a timeout, re­
duce the Page Size and execute the operation again.
Timeout (in min)
Maximum time system waits for a response before the
connection ends or is timed out. By default, 5 minutes is
the timeout value if you do not provide input.
7. If you want to process messages in batches while using the SuccessFactors ODataV2 adapter in the
receiver channel of a Local Integration Process, select Process in Batches.
 Restriction
You cannot use Process in Batches option with Query operation if the Process Call step is used in a
Multicast branch.
 Note
By selecting Process in Batches, you enable the adapter to process messages in batches. The size of a
message batch is defined by the value that you specify in Page Size.
166
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Tip
In the Process Call step in which you are calling the Local Integration Process, ensure that you enable
looping and select the Expression Type as Non-XML, Condition Expression as $
{property.<ReceiverName>.<ChannelName>.hasMoreRecords} contains 'true', and
Maximum Number of Iterations as 999.
Important Considerations while Specifying the Condition Expression in Process Call
○ Do not declare the property hasMoreRecords in any of the integration flow steps (For example,
content modifier or script). It is available by default. You can directly use this property while
entering the Condition Expression in Process Call step.
○ Ensure that the receiver system name in the Condition Expression is the SuccessFactors system
that you are connecting to using the receiver channel in the Local Integration Process. Do not enter
the receiver system name from the main integration flow.
○ If you have specified a channel name for the receiver channel in the Local Integration Process,
provide that name in the Condition Expression.
8. Save the changes.
2.5.2.13.2.1 Modeling Operations for SuccessFactors OData
V2 Web Service
Prerequisites
● You have assigned the SuccessFactors adapter to the communication channel.
● You have selected OData V2 in the Message Protocol field.
● You have launched the operations modeler wizard by choosing Model Operation on the Adapter Specific
tab.
Context
You need to provide operation details to access and modify records in the SuccessFactors SOAP Web service.
You use the operations modeler wizard to provide these details and also generate the EDMX file.
Procedure
1. If you want to use a local EDMX file to connect to the system, perform the following substeps:
a. Select the Local EDMX File checkbox.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
167
b. Choose Browse.
c. Select an EDMX file in the EDMX Selection window and choose OK.
2. If you want to specify the connection details manually, make sure that the Local EDMX File checkbox is not
selected and provide values in the fields based on the descriptions in the following table.
Field
Description
Address
URL of the SuccessFactors system that you are connect­
ing to
Company ID
SuccessFactors company ID
User Name
Your user name for authentication
Password
Relevant password for the specified user name
Proxy Communication
Select this checkbox if you want to manually specify the
proxy details
Proxy Host
Proxy host name
Proxy Port
Proxy port number
 Note
If you are connecting to a system that supports HTTPS communication, you must ensure the following:
○ Java Development Kit is installed on your system.
○ You have referenced JDK in the Eclipse configuration file.
 Note
For information about referencing JDK in the Eclipse configuration file, see the Eclipse
documentation.
○ You have imported the security certificate of the system that you are connecting to your JDK
keystore.
 Note
For information about importing certificates to the JDK keystore, see the JDK documentation.
You should see a list of entities.
3. In the Select Entity for an operation window, select the Entity and choose Next.
4. Choose the Sub-Levels from the dropdown list.
 Remember
If you are performing the Insert (POST) operation and the payload contains one level of sub-entities,
choose 1 from the dropdown list.
168
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Caution
Ensure that you select values for the Sub-Levels field only from the dropdown list.
 Note
The navigation depth is the level up to which you want to view the entity association. For example,
consider that entity B is associated with entity A and entity C is associated with entity B. If you choose
entity A in the Select Entity for an operation window and choose a navigation depth of 1, you can
navigate up to entity B. If you choose a navigation depth of 2, you can navigate up to entity C.
5. Choose the Operation from the dropdown list based on the descriptions in the table below.
Operation
Description
Query (GET)
Used to fetch data from the OData service.
Update (PUT)
Used to update data to an OData service.
Insert (POST)
Used to insert data into an OData service.
Read (GET)
Used to fetch a unique entity from the OData service.
Passes the key fields along with the entity in the URI (Uni­
versal Resource Indicator). Format:<Entity>(Keyfield 1,
Keyfield 2, and so on)
Upsert (UPSERT)
Used to perform Update and Insert operations using one
command to the OData service exposed by the Success­
Factors system. It checks if the record exists in the table. If
the record is present, it updates the content of the record.
If the record is not present, it will create a new record with
the parameters specified in the payload.

Restriction
This operation is not supported if you specify JSON as
the request payload type.
6. Select the required fields for the operation from the Fields screen area and choose Next.
 Remember
If you choose a PUT or POST operation, this is the last step. Choose Finish.
7. Enter values in the Top and Skip fields based on the descriptions in the table below. This is only applicable
for Query operations.
Field
Description
Top
If you enter the value 'x', only the top 'x' values are fetched
from the OData service provider.
Skip
If you enter the value 'x', the top 'x' values are ignored and
the remaining records are fetched from the OData service
provider.
8. Select the values based on the descriptions in the table below to add filter conditions to the operation. The
filter step is only available for query (GET) operations.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
169
Field
Description
Filter Field
Field that is used in the SuccessFactors API ‘WHERE’
clause for filtering.

Note
The field set contains the set of filterable fields re­
turned from the SuccessFactors API that you can use
in the filter condition.
Operation
Operator to be used in the WHERE condition. Example: < ,
>
Type
Value that the filter field has to be compared against.
If the type is Text, specify the exact value.
If the type is Header, the value is populated from the
header that you have specified.
If the type is Property, the system reads the value from the
property you have defined in the integration flow element.
Value
Value that the filter field has to be compared against.
If the type is Text, specify the exact value.
If the type is Header, specify the header that contains .
If the type is Property, specify the property from which the
value has to read.
Condition
‘AND’ or ‘OR’ condition that needs to be used in the query
WHERE clause filter condition.
Add
The condition will be added to the generated SuccessFac­
tors query.

Note
Multiple conditions can be added if required.
Remove
Any condition that is already added to the list can be se­
lected and removed from the final SuccessFactors query.
9. Choose Finish.
Results
Choosing Finish generates an XSD and EDMX files.
The SAP Cloud Integration enterprise service bus (ESD) processes data in the XSD format. You use this XSD
file in the mapping step for data transformation.
The EDMX file contains the OData entity specification from the OData service provider. You can use this file in
the subsequent operation modeling steps to connect to the OData service provider.
170
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.13.3 Configuring SuccessFactors Adapter with OData
V4 Message Protocol
Context
You use this procedure to configure the SuccessFactors adapter with the OData V4 message protocol.
 Remember
The OData V2 message protocol is only available if you are using the SuccessFactors adapter in the receiver
channel.
 Tip
If your input payload contains nodes without data, the output also contains empty strings. If you want to
avoid empty strings in the output, ensure that the input payload does not contain any empty nodes.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. Go to the General tab and choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select SuccessFactors and choose OK.
4. Choose OData V4 from the dropdown list in the Message Protocol field.
5. Go to the Adapter Specific tab.
6. Provide values in the fields based on the descriptions in the table below.
Field
Description
Address
URL of the SuccessFactors data center that you would like
to connect to.
Credential Name
Credential name that you have used while deploying cre­
dentials on the tenant.
Proxy Type
Type of proxy you want to use to connect to the Success­
Factors system.
You can choose Internet or On-premise.
Operation
Operation that you want to perform on the OData V4 serv­
ice.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
171
Field
Description
Query(GET), Create(POST) and Update (PUT) operations
are currently supported.
Resource Path
Provide the resource path of the entity that you want to
access.
Query Options
Query options that you want to send to the OData V4 serv­
ice with operation details.
For more information on Query Options, refer to steps 7 and 8 in Modeling Operations for SuccessFactors
OData V2 Web Service [page 167].
7. Save the changes.
2.5.2.13.4 Configuring SuccessFactors Adapter with REST
Message Protocol
Context
You use this procedure to configure the SuccessFactors adapter with the OData V2 message protocol.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. Go to the General tab and choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select SuccessFactors and choose OK.
4. Choose OData V2 from the dropdown list in the Message Protocol field.
5. Go to the Adapter Specific tab.
6. Provide values in the fields based on the descriptions in the table below.
Field
Description
Address
URL of the SuccessFactors data center that you would like
to connect to.
Address Suffix
The system provides a value for this field based on the
protocol you choose. For SOAP, the value is /odata/v2.
172
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Credential Name
Credential name that you have used while deploying cre­
dentials on the tenant.
Proxy Type
Type of proxy you want to use to connect to the Success­
Factors system.
You can choose Internet or On-premise.
Operation
Select the operation you want to perform from the drop­
down list.

Note
Only GET for the sender channel and GET andPOST
for the receiver channel are currently supported.
Entity
LMS entity you are accessing.

Note
You can find the entity name in the relevant API docu­
mentation.
Parameters
Parameters to be sent to the REST service.
Example: creationDate=1&active=true

Note
In the case of the GET operation, you can fetch just
the modified records in subsequent runs by using the
condition lastModifiedDate=${deltasync.maxDate­
FromLastRun}.
Page Size
The number of records that are read from the Success­
Factors system in one request.
If you find that the Operation stops due to a timeout, re­
duce the Page Size and execute the operation again.
7. If you are configuring the sender channel, perform the following substeps to configure the scheduler:
a. Go to the Scheduler tab.
b. Enter the scheduler details based on the descriptions in the table below.
Parameters and Values of SuccessFactors Adapter Scheduler
Field
Description
Run Once
Run a data polling process immediately after deploying
the project.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
173
Field
Description
On Date
Specific date on which the data polling process has to
be initiated to fetch data from the SuccessFactors sys­
tem.
Daily
Run message polling every day to fetch data from the
SuccessFactors system.
Weekly
Run message polling on a specified day every week to
fetch data from the SuccessFactors system.
Monthly on Day
Run message polling on a specified date every month to
fetch data from the SuccessFactors server.

Note
If the specified date is not applicable to a month,
data polling is not executed in that particular
month. For example, if the 30th day of the month is
selected as the polling date, polling will not be exe­
cuted in the month of February as February 30 is
not a valid date.
Time
The time at which the data polling cycle has to be initi­
ated. For example, if you want data polling to start at
4.1PM, enter 16:10. Note that the time must be entered
in 24-hour format.
Every xx minutes between HH hours and HH hours
The connector fetches data from the SuccessFactors
system every ‘xx’ minutes between HH hours and HH
hours.

Note
If you want the polling to run for the entire day, en­
ter 1 and 59.
Time Zone
Select the time zone that you want to use as the refer­
ence for scheduling the data polling cycle.
 Caution
If a cluster is updated with the latest node assembly, it is restarted after the update. If you have
deployed projects on the cluster with scheduler settings, you face the following issues:
○ Run Once settings: If you have selected Run Once in the scheduler, the system deploys the
project after the cluster is updated. This results in the system performing the operation again.
You see copies of the same result after the cluster update.
○ Specific time schedule: If you have configured a specific date in the scheduler and those
projects are deployed again after a cluster update, you might see those projects in an error
state.
To avoid this, you have to undeploy the project after the system has executesd the operation
according to the scheduler settings.
8. Save the changes.
174
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.14 Configuring a Channel with JMS Adapter
You configure the JMS adapter to enables asynchronous messaging by using message queues.
Prerequisites
The JMS messaging instance that is used in asynchronous messaging scenarios with the JMS or AS2 adapters
has limited resources. Cloud Platform Integration Enterprise Edition sets a limit on the queues, storage, and
connections that you can use in the messaging instance.
Resource Limits for Cloud Platform Integration Enterprise Edition:
● Maximum number of queues: 28
● Queue capacity: 5GB
There are also technical restrictions on the size of the headers and exchange properties that can be stored in
the JMS queue.
The following size limits apply when saving messages to JMS queues:
● There are no size limits for the payload. The message is split internally when it is put into the queue.
● There are no size limits for attachments. The message and the attachment are split internally when put
into the queue.
● Headers and exchange properties defined in the integration flow before the message is saved to the queue
must not exceed 4 MB in total.
 Note
The JMS Adapter generates message queues during deployment. To avoid errors, you must manually
delete any message queues that are no longer required in the Message Queue Monitor.
 Caution
Do not use this adapter type together with Data Store Operations steps, Aggregator steps, or global
variables, as this can cause issues related to transactional behavior.
This adapter type cannot process ZIP files correctly. Therefore, don't use this adapter type together with
Encoder or Decoder process steps that deal with ZIP compression or decompression.
Context
You configure the receiver and sender JMS adapter to enables asynchronous messaging by using message
queues. The JMS incoming message is stored in a permanent persistence and scheduled for processing in a
queue. The processing of messages from the queue is not serialized. The messages are processed
concurrently. The sender does not have to wait while the message is being processed and if needed retried.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
175
 Note
The JMS adapter stores only simple data types, which includes in particular: exchange properties that do
not start with Camel, as well as headers (primitive data types or strings).
 Note
You can use the JMS Receiver Adapter in the Send step to save the message to the JMS queue and to
continue the processing afterwards.
Supported Headers:
● JMSTimestamp
Specifies the time when a JMS message was created.
Procedure
1. Double-click the channel that you want to configure on the Model Configuration tab page.
2. On the General tab page, choose Browse in the Adapter Type screen area.
3. Select JMS in the Choose Adapter window and choose OK.
4. Choose the Adapter-Specific tab page and enter the details as shown in the table below:
Parameters and Values of Sender JMS Adapter
Section
Parameters
Processing Details
Queue Name
Description
Enter the name of the message
queue.
Number of Concurrent Processes
Enter the number of concurrent proc­
esses for each worker node. The rec­
ommended value depends on the
number of worker nodes, the number
of queues on the tenant, and the in­
coming load. The value should be as
small as possible (1-5).
Retry Handling
Retry Interval (in m)
Enter a value for the amount of time
to wait before retrying message deliv­
ery.
Exponential Backoff
Enter a value to double the retry inter­
val after each unsuccessful retry.
176
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Parameters
Description
Maximum Retry Interval (in m)*
Enter a value for the maximum
(only configurable when Exponential
Backoff is selected)
amount of time to wait before retrying
message delivery. The minimum value
is 10 minutes. The default value is set
to 60 minutes.
Dead-Letter Queue
If selected, the message will be taken
out of processing and marked as
Blocked in the queue if it cannot be
processed after two retries.
In certain cases, usage of the JMS
sender adapter can cause a node fail­
ure. This can happen, for example, if
the JMS adapter tries repeatedly to
process a failed (large) message. To
avoid such a situation, select this op­
tion (switched on by default).
In such cases, a lock entry is created,
which you can view and release in the
Message Monitoring application under
Managing Locks.
For more information, check out the
following blog: Cloud Integration –
Configure Dead Letter Handling in
JMS Adapter

.
Note
For high-load scenarios, or if you
are sure that only small messages
will be processed in your scenario,
you should deselect the checkbox
to improve the performance. But
be aware that there is a risk of an
outage, for example,if you run out
of memory.
For more information, check out the
following blog: Cloud Integration –
Configure Dead Letter Handling in
JMS Adapter
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
.
PUBLIC
177
Parameters and Values of JMS Receiver Adapter
Section
Parameters
Processing Details
Queue Name
Description
Enter the name of the message
queue.
Retention Threshold for Alerting (in d)
Enter the time period (in days) by
which the messages have to be
fetched. The default value is 2.
Expiration Period (in d)*
Enter the number of days after which
the stored messages are deleted (de­
fault is 90).
The minimum value for Expiration Pe­
riod should be at least twice the value
for Retention Threshold for Alerting.
Encrypt Stored Message
Select this option to encrypt the mes­
sage in the data store.
Transfer Exchange Properties
You can select this option to also
transfer the exchange properties to
the JMS queue.
However, we do not recommend using
this option because headers and ex­
change properties are subject to size
restrictions, which can result in prob­
lems or errors.
JMS Retry Handling
Note the following behavior, which can be observed in message monitoring if you have configured a Retry
Interval in the adapter:
The following figure shows a straightforward case when JMS queues are configured during message
processing between a sender and a receiver.
In the setup shown, integration flow 1 receives a message from a sender, processes it, and writes the result
to JMS queue 1 (using a JMS receiver adapter), from where it is picked up by integration flow 2 (using a
JMS sender adapter). The latter processes the message and writes it to another queue, JMS queue 2
(using a JMS receiver adapter). From there, integration flow 3 picks up the message (using a JMS sender
adapter), processes it, and sends it to a receiver.
178
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Each integration flow generates a message processing log (MPL1, MPL 2, and MPL3). The following table
summarizes the resulting MPLs in our example:
Involved Message Processing Logs (MPLs)
MPL
Description
MPL 1
Shows that message is received from sender and submit­
ted to JMS queue queue1
MPL 2
Shows that message is received from JMS queue queue1
and submitted to JMS queue queue2
MPL 3
Shows that message is received from JMS queue queue2
and submitted to receiver
MPLs for those messages that are reading from and writing into one queue (using the JMS sender or
receiver adapter, respectively) are correlated with each other using a correlation ID. You can use the
Message Monitor or the OData API to search for messages that belong to one correlation ID. To get back to
our example, the MPLs are correlated in the following way:
○ MPL1 and MPL2 are correlated by a correlation ID (for example, by correlation ID: ABC)
○ MPL2 and MPL3 are correlated by another correlation ID (for example, by correlation ID: XYZ)
If an error occurs when sending the message to the receiver (for example, the receiver cannot be reached),
the following happens:
During a retry, the message is in status Retry. For each retry, a separate Run is generated and displayed in
the Monitoring application within one MPL (and can be accessed using one MPL ID).
5. Save and deploy the configuration of the channel editor.
Results
Managing Locks for JMS Dead Letter Handling
In certain cases, usage of the JMS sender adapter can cause a node failure. This can happen, for example, if the
JMS adapter tries repeatedly to process a failed (large) message. The classic approach in such cases is to
undeploy the integration flow and reprocess the message. However, if you do this, the content of the original
message is lost.
To avoid such situations, the JMS adapter provides the option Dead-Letter Queue (switched on by default). If
this option is selected, the message is stored in the dead-letter queue if it cannot be processed after two
retries.
To be more specific: The first retry of the message is executed with a delay of 7 minutes. If the message then
still fails, it is stored in the dead-letter queue and manual interaction is required to process the message again.
If you are running scenarios with the JMS sender adapter, the Managing Locks editor helps you deal with
messages that cannot be processed.
After the last retry, a lock entry is written, which can be investigated in the Message Monitoring application
under Managing Locks.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
179
 Note
The lock entry is also visible under Managing Message Queues.
You can identify such lock entries by the following attributes:
Attribute
Value
Component
JmsDeadLetter
Entry
The message ID.

Note
You can use this value to search for the message under
Managing Message Queues.
Expires at
No expiration date is displayed.
When you release the lock, the system starts retrying the message again.
Next Steps
 Note
Note that the following specific exchange properties are available to be used in context of the JMS adapter:
SAPJMSRetries, SAPJMSAlerttime, SAPJMSRetryAt
Refer to more information on the headers and exchange properties.
Related Information
https://blogs.sap.com/2017/07/17/cloud-integration-configure-dead-letter-handling-in-jms-adapter/
Headers and Exchange Properties [page 8]
Defining a Send Step [page 361]
180
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.2.15 Configuring a Channel with ODC Adapter
Context
The ODC adapter enables you to communicate with systems that expose data through the OData Channel for
SAP NetWeaver Gateway. You must configure a channel with ODC adapter to connect to a service developed
using SAP NetWeaver Gateway. For more information, see OData Channel.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. In the General tab, choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select ODC and choose OK.
4. Choose Adapter Specific tab.
5. Provide values in fields based on description in table.
Field
Description
Address
URL of the SAP NetWeaver Gateway OData Channel that
you are accessing
Client
Backend sytem client that you want to connect to
Namespace
Namespace of the service
Service Name
Name of the service
Version
Version of the service
Credential Name
Alias that you used while deploying basic authentication
credentials
Operation
Select the operation that you want to perform from the
dropdown list.
Resource Path
Path to the resource that you want to perform the opera­
tion on
6. In the <EDMX> field, choose Select.
You see a prompt to connect to the system.
7. Provide values in fields based on description in table and choose Finish.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
181
Field
Description
Address
URL of the system that you are connecting to
Client
Backend system client that you are connecting to
Namespace
Namespace of the service
Service Name
Name of the service
Version
Version of the service
Username
User name for authentication
Password
Relevant password for the specified username
8. Save or deploy the integration flow.
2.5.2.16 Configuring a Channel with LDAP Adapter
Prerequisites
You have created an integration project and integration flow.
Context
The LDAP adapter enables you to communicate with systems that expose data through LDAP service.
In case you have input messages in different formats, you need to use a mapping step to create a target
payload that can be recognized by the LDAP adapter. You can use this schema as a template for the target in
mapping step.
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Schema">
<complexType>
<sequence>
<element name="DistinguishedName" maxOccurs="1" minOccurs="1"
type="string"/>
<element name="ObjectClass" maxOccurs="1" minOccurs="0"
type="string"/>
<element name="Attributes" maxOccurs="1" minOccurs="1">
<complexType>
<sequence>
<element name="cn" type="string" maxOccurs="1"
minOccurs="0"></element>
<element name="sAMAccountName" type="string"
maxOccurs="1" minOccurs="1"></element>
182
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
minOccurs="0"></element>
<element name="sn" type="string" maxOccurs="1"
<element name="givenName" type="string"
maxOccurs="1" minOccurs="0"></element>
<element name="displayName" type="string"
maxOccurs="1" minOccurs="0"></element>
<element name="name" type="string" maxOccurs="1"
minOccurs="0"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
The LDAP adapter is available only in the receiver channel.
 Note
You cannot update multiple records in a single processing cycle. You can only perform a given operation on
one record at a time.
 Remember
You must use SAP Cloud Connector for connecting to an LDAP service using the LDAP adapter. LDAP
adapter supports version 2.9 or higher versions of the cloud connector.
For more information, see SAP Cloud Connector.
Procedure
1. On the Model Configuration tab, double-click the channel that you want to configure.
2. Go to the General tab and choose Browse in the Adapter Type screen area.
3. In the Choose Adapter window, select LDAP and choose OK.
4. Choose the Adapter Specific tab.
5. Provide values in fields based on description in table.
Field
Description
Address
Enter the URL of the LDAP directory service that you are
connecting to
Proxy Type
Select the proxy type that you want to use. Currently, only
on premise option is supported.
Authentication
Select the authentication type that you want to use. Cur­
rently, only simple option is supported.
Credential Name
Enter the credential name that you have deployed in the
tenant
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
183
Field
Description
Operation
Select the operation that you want to perform. Currently,
only Insert and Modify operations are supported.
Input Type
Select the type of input that you are providing (Applicable
only for Insert operation)
6. Save or deploy the integration flow.
2.5.2.16.1 Specific Use Cases for LDAP Adapter
Using Input Type Java (JNDI) Attributes
The LDAP adapter supports input via JNDI attributes. If you choose this as the input type, you use a script step
to obtain values to attributes that are then passed to the LDAP service.
For example, consider this script being used in a Script step.
importClass(com.sap.gateway.ip.core.customdev.util.Message);
importClass(java.util.HashMap);
importClass(javax.naming.directory.Attribute);
importClass(javax.naming.directory.BasicAttribute);
importClass(javax.naming.directory.BasicAttributes);
importClass(javax.naming.directory.Attributes);
function processData(message) {
var body = message.getBody();
var dn= "cn=Markus,ou=users,dc=testcompany,dc=com";
var givenNameAttr = new BasicAttribute("givenName", "Jack");
var displayNameAttr = new BasicAttribute("displayName", "Reacher");
var telephoneNumberAttr = new BasicAttribute("telephoneNumber",
"100-100-100");
var attributes = new BasicAttributes();
attributes.put(givenNameAttr);
attributes.put(displayNameAttr);
attributes.put(telephoneNumberAttr);
attr =new BasicAttribute("title", "Developer");
attributes.put(attr);
attr =new BasicAttribute("sn", "Brutus");
attributes.put(attr);
var resultingMap = new HashMap();
resultingMap.put("dn", dn);
resultingMap.put("attributes", attributes);
message.setBody(resultingMap);
return message;
}
In the script, the values for attributes givenName, displayName and telephoneNumber are declared in the
script before they are passed to the LDAP adapter. Similarly, you can also create a script where these values
are dynamically fetched during runtime.
184
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Adding Attributes to Template Schema
The example schema contains a set of attributes for a given record. In case you want the schema to contain
additional attributes, you can manually edit the schema before using it in the mapping step.
For example, if you want to add a field, telephone number, you can add an element in the schema under the
sequence element.
Here’s how the edited schema will look like:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Schema">
<complexType>
<sequence>
<element name="DistinguishedName" maxOccurs="1" minOccurs="1"
type="string"/>
<element name="ObjectClass" maxOccurs="1" minOccurs="0"
type="string"/>
<element name="Attributes" maxOccurs="1" minOccurs="1">
<complexType>
<sequence>
<element name="sAMAccountName" type="string"></
element>
<element name="sn" type="string"></element>
<element name="givenName" type="string"></element>
<element name="displayName" type="string"></element>
<element name="name" type="string"></element>
<element name="telephoneNumber" type="string"></
element>
<!--The above element has been added to the schema. If
you want to add or remove elements, ensure that you make changes within the
sequence tag-->
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
Add Additional Attributes to the Message after Mapping using Script
Let us consider a scenario where you want to add an attribute to the message (payload) that you are sending to
the LDAP service. For example, you want to add a password attribute. Due to security concerns, you should
encode the password before you add it.
You can achieve this by adding a Script step after the mapping step in the integration flow. Here's an example of
the script that you can use in the Script step:
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
import javax.xml.bind.DatatypeConverter;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
def Message processData(Message message)
{
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
185
}
Attributes attributes = new BasicAttributes();
String quotedPassword = '"'+"Initial@1"+'"';
byte[] unicodePasswordByteArray = quotedPassword.getBytes("UTF-16LE");
attributes.put(new BasicAttribute("unicodePwd", unicodePasswordByteArray));
message.setHeader("SAP_LDAPAttributes",attributes);
return message;
Using Modify Operation to Change DN
You can use the Modify operation to change the DN of an LDAP record. You can do this by adding the tag
<DistinguishedName_Previous> to the input payload with the old DN. Specify the modified DN in
<DistinguishedName> tag and perform the Modify operation.
Here's an example that shows a sample input payload for modiying the DN of an LDAP record:
<?xml version="1.0" encoding="UTF-8"?>
<Schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DistinguishedName>CN=CMD ABC,CN=Users,DC=dev109,DC=devwdf,DC=sap,DC=corp</DistinguishedName>
<DistinguishedName_Previous>CN=CMD,CN=Users,DC=dev109,DC=devwdf,DC=sap,DC=corp</DistinguishedName_Previous>
<ObjectClass>user</ObjectClass>
<Attributes>
<mail>123@xyz.com</mail>
<telephoneNumber>123456789</telephoneNumber>
</Attributes>
</Schema>
2.5.2.17 Configure a Channel with XI Adapter
Related Information
Configure a Channel with XI Sender Adapter [page 186]
Configure Channel with XI Receiver Adapter [page 193]
2.5.2.17.1 Configure a Channel with XI Sender Adapter
The XI sender adapter allows you to connect a tenant to a local Integration Engine in a sender system.
The adapter supports communication over the XI 3.0 protocol.
 Note
In the following cases certain features might not be available for your current integration flow:
186
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● A feature for a particular adapter or step was released after you created the corresponding shape in
your integration flow.
● You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
Supported Header (Sender Adapter):
● SapAuthenticatedUserName
Contains the user name of the client that calls the integration flow.
If the sender channel is configured to use client certificate authentication, no such header is set (as it is not
available in this case).
Consider the following when using the XI adapter.
● Avoid to change the temporary storage location for operative scenarios (or do this very carefully).
Such an action can result in data loss. The reason s that outdated messages (which will not be retried any
more) can still be stored there, also when you have changed the Temporary Storage attribute in the
meantime. When you plan to change this attribute, make sure there are no messages any more in the
originally configured temporaty storage.
● Avoid changing (sender or receiver) participant or channel name in the integration flow.
The name of the configured Temporary Storage is generated based on these names. If you change these
names in the integration flow model and deploy the integration flow again, a temporary storage is
generated with the new name. However, there can still be messages in the old storage. These messages will
not be retried any more after the new storage has been created.
● Apply the right transaction handling.
JMS queues and data stores support different transactional processing. As there are additional
implications of each transactional processing option with other integration flow steps, we urgently
recommend to follow these rules:
○ If as Temporary Storage you select JMS Queue in an XI receiver adapter and the XI adapter is used in a
sequential multicast or splitter pattern, as Transaction Handling you have to select Required for JMS.
If as Temporary Storage you select Data Store in an XI receiver adapter and the XI adapter is used in a
sequential multicast or splitter pattern, as Transaction Handling you have to select Required for JDBC.
For the XI sender adapter no transaction handler is required.
For the XI receiver adapter no transaction handler is required if the XI adapter is not used in a
sequential multicast or in a split scenario.
There is no distributed transaction support. Therefore, you cannot combine JMS and JDBC
transactions. As a consequence, transactional behavior cannot be guaranteed in scenarios using the XI
receiver adapter with JMS storage in multicast scenarios together with flow steps that need a JDBC
transaction handler (like, for example, Data Store or Write Variables).
Note the following limitations.
● The XI adapter does not support acknowledgements.
● When you have selected Exactly Once (as Quality of Service), currently only AtLeastOnce (ALO) is
supported by the XI adapter, no ExactlyOnce (EO) in the strict sense. That means if the sender system
sends the same message multiple times, the XI adapter forwards all these messages to the receiver
(multiple times).
ExactlyOnceInOrder (EOIO) is not supported.
When you have created a sender channel (with XI adapter selected), you can configure the following attributes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
187
Connections Tab
Sender: Connection
Parameter
Description
Address
Address under which a sender system can reach the tenant.

Note
When you specify the endpoint address /path, a sender can also call the integration
flow through the endpoint address /path/<any string> (for example, /path/
test/).
Be aware of the following related implication: When you in addition deploy an integration
flow with endpoint address /path/test/, a sender using the /path/test endpoint
address will now call the newly deployed integration flow with the endpoint address /
path/test/. When you now undeploy the integration flow with endpoint address /
path/test, the sender again calls the integration flow with endpoint address /path
(original behavior). Therefore, be careful reusing paths of services. It is better using com­
pletely separated endpoints for services.
188
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Authorization
Specifies the authorization option for the sender.

Note
The option client certificate is not recommended. Instead, it is recommended to use the
more secure option role-based authorization with certificate-to-user mapping.
You can select one of the following options:
●
Client Certificate: Sender authorization is checked on the tenant by evaluating the sub­
ject/issuer distinguished name (DN) of the certificate (sent together with the inbound
request). You can use this option together with the following authentication option: Cli­
ent-certificate authentication (without certificate-to-user mapping).
●
User Role: Sender authorization is checked based on roles defined on the tenant for the
user associated with the inbound request. You can use this option together with the fol­
lowing authentication options:
○
Basic authentication (using the credentials of the user)
The authorizations for the user are checked based on user-to-role assignments de­
fined on the tenant.
○
Client-certificate authentication and certificate-to-user mapping
The authorizations for the user derived from the certificate-to-user mapping are
checked based on user-to-role assignments defined on the tenant.
Depending on your choice, you can also specify one of the following properties:
●
Client Certificate
Allows you to select one or more client certificates (based on which the inbound authori­
zation is checked).
Choose Add to add a new certificate for inbound authorization for the selected adapter.
You can then select a certificate stored locally on your computer. You can also delete
certificates from the list.
For each certificate, the following attributes are displayed: Subject DN (information used
to authorize the sender) and Issuer DN (information about the certificate authority that
issues the certificate).
●
User Role
Allows you to select a role based on which the inbound authorization is checked.
Choose Select to get a list of all available roles.
The role ESBMessaging.send is provided by default. It is a predefined role provided by
SAP that authorizes a sender system to process messages on a tenant. However, using
SAP BTP Cockpit, you can also define custom roles for the runtime node as well. When
you choose Select, a selection of all custom roles defined that way is offered.

Note
Note the following:
○
You can also type in a role name. This has the same result as selecting the role
from the value help: Whether the inbound request is authenticated depends on
the correct user-to-role assignment defined in SAP BTP Cockpit.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
189
Parameter
Description
○
When you externalize the user role, the value help for roles is offered in the inte­
gration flow configuration as well.
○
If you have selected a product profile for SAP Process Orchestration, the value
help will only show the default role ESBMessaging.send.
Communication Party
Specify the communication party for the response. Per default no party is set.
This value can be defined dynamically by using the expressions ${header.Party} or $
{property.Party}.
Communication Component Specify the communication component for the response. The default is DefaultXIService.
This value can be defined dynamically by using the expressions ${header.Component}
or ${property.Component}.
190
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Delivery Assurance Tab
Sender: Delivery Assurance
Parameter
Description
Quality of Service
Defines how the message (from the sender) is processed by the tenant.
There are the following options:
●
Best Effort
The message is sent synchronously; this means that the tenant waits for a re­
sponse before it continues processing.
No temporary storage of the message needs to be configured, as message re­
quest and response are processed immediately after another.
●
At Least Once
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing. It is expected that the receiver
guarantees that the message is processed exactly once.
This option guarantees that the message is processed at least once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender,, all of them will be processed.
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
●
Exactly Once (Only possible if as Temporary Storage the option Data Store is se­
lected)
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing.
This option guarantees that the message is processed exactly once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender, only the first one will be processed. The subsequent messages can be
identified as duplicates (based on the value of the message header
SapMessageIdEx, see below) and will not be processed.

Note
For Exactly Once handling, the sender XI adapter saves the protocol-spe­
cific message ID in the header SapMessageIdEx. If this header is set, XI
receiver uses the content of this header as the message ID for outbound
communication. Usually, this is the desired behavior and enables the re­
ceiver to identify any duplicates. However, if the sender system is also the
receiver system, or several variants of the message are sent to the same
system (for example, in an external call or multicast), the receiver system
will incorrectly identify these messages as duplicates. In this case, the
header SapMessageIdEx must be deleted (for example, using a content
modifier) or overwritten with a new generated message ID. This deactivates
Exactly Once processing (that is, duplicates are no longer recognized by the
protocol).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
191
Parameter
Description
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
Temporary Storage
(only if as Quality of Service the op­
tion Exactly Once is selected)
Temporary storage location for messages that are processed asynchronously. Mes­
sages for which processing runs into an error can be retried from the temporary
storage.
You can choose among the following storage types:
●
Data Store
The message is temporarily stored in the database of the tenant (in case of an
error). In case of successful message processing, the message is immediately
removed from the data store.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Data Stores tile.

Note
The data store name is automatically generated and contains the following
parts:
<name of participant connected with XI adapter>_<
XI channel name>
This automatically generated name is subject to a length restriction and
must be no more than 40 characters (including the underscore). If the data
store name exceeds this limit, you must shorten the participant name or
channel name accordingly.
Below the data store name, you find a reference to the associated integra­
tion flow in the following form: <integration flow name>/XI
●
JMS Queue
The message is stored temporarily in a JMS queue on the configured message
broker.
If possible, use this option as it comes with a better performance.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Message Queues tile.

Note
The name of the JMS queue is automatically generated and contains the
following parts:
XI.<Integration Flow Name>.<Channel Name>.<Guid>

Note
This option is only available if you have an Enterprise Edition license.
192
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Lock Timeout (in min)
Enter a value for the retry timeout of the in-progress repository.
(only configurable if Data Store is se­
lected
Retry Interval (in min)
Enter a value for the amount of time to wait before retrying message delivery.
Exponential Backoff
Select this option to double the retry interval after each unsuccessful retry.
Maximum Retry Interval (in min)
You can set an upper limit on that value to avoid an endless increase of the retry in­
(only configurable when Exponential
terval. The default value is 60 minutes. The minimum value is 10 minutes.
Backoff is selected)
Dead-Letter Queue
(only if as Temporary Storage the op­
tion JMS Queue is selected)
Select this option to place the message in the dead-letter queue if it can't be proc­
essed after three retries caused by an out-of-memory. Processing of the message is
stopped then.
In such cases, a lock entry is created which you can view and release in the Monitor
section of the Web UI under Managing Locks.
Use this option to avoid out-of-memory situations (caused in many cases by large
messages).
For more information, read the SAP Community blog Cloud Integration – Configure
Dead Letter Handling in JMS Adapter
.
Encrypt Message during Persistence
Select this option in case the messages should be stored in an encrypted way during
(only in case you have selected
certain processing steps.
Exactly Once as Quality of Service)
2.5.2.17.2 Configure Channel with XI Receiver Adapter
The XI receiver adapter allows you to connect a tenant to a local Integration Engine in a receiver system.
The adapter supports communication over the XI 3.0 protocol.
 Note
In the following cases certain features might not be available for your current integration flow:
● A feature for a particular adapter or step was released after you created the corresponding shape in
your integration flow.
● You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
Consider the following when using the XI adapter.
● Avoid to change the temporary storage location for operative scenarios (or do this very carefully).
Such an action can result in data loss. The reason s that outdated messages (which will not be retried any
more) can still be stored there, also when you have changed the Temporary Storage attribute in the
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
193
meantime. When you plan to change this attribute, make sure there are no messages any more in the
originally configured temporaty storage.
● Avoid changing (sender or receiver) participant or channel name in the integration flow.
The name of the configured Temporary Storage is generated based on these names. If you change these
names in the integration flow model and deploy the integration flow again, a temporary storage is
generated with the new name. However, there can still be messages in the old storage. These messages will
not be retried any more after the new storage has been created.
● Apply the right transaction handling.
JMS queues and data stores support different transactional processing. As there are additional
implications of each transactional processing option with other integration flow steps, we urgently
recommend to follow these rules:
○ If as Temporary Storage you select JMS Queue in an XI receiver adapter and the XI adapter is used in a
sequential multicast or splitter pattern, as Transaction Handling you have to select Required for JMS.
If as Temporary Storage you select Data Store in an XI receiver adapter and the XI adapter is used in a
sequential multicast or splitter pattern, as Transaction Handling you have to select Required for JDBC.
For the XI sender adapter no transaction handler is required.
For the XI receiver adapter no transaction handler is required if the XI adapter is not used in a
sequential multicast or in a split scenario.
There is no distributed transaction support. Therefore, you cannot combine JMS and JDBC
transactions. As a consequence, transactional behavior cannot be guaranteed in scenarios using the XI
receiver adapter with JMS storage in multicast scenarios together with flow steps that need a JDBC
transaction handler (like, for example, Data Store or Write Variables).
Note the following limitations.
● In the current release, you cannot dynamically configure any parameters of the adapter.
● Currently, the adapter is not supported in the Request-Reply and the Send step.
● In the current version, explicit retry configuration using retry headers is not supported.
● When you have selected Exactly Once (as Quality of Service), currently only AtLeastOnce (ALO) is
supported by the XI adapter, no ExactlyOnce (EO) in the strict sense. That means if the sender system
sends the same message multiple times, the XI adapter forwards all these messages to the receiver
(multiple times).
● The XI adapter does not support acknowledgements.
● ExactlyOnceInOrder (EOIO) is not supported by the XI adapter.
When you have created a receiver channel (with XI adapter selected), you can configure the following
attributes.
194
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Connection Tab
Receiver: Connection
Parameter
Description
Address
Address under which the local integration engine of the receiver system can be called
The integration engine address is composed in the following way:
https://<host name>:<port>/sap/xi/engine?type=receiver&sapclient=<client>

Note
You can find out the constituents (HTTPS port) of the URL by choosing transaction SMICM in the receiver
system and choosing
Goto
Services
.
The endpoint URL that has actually been used at runtime is displayed in the message processing log (MPL) in
the message monitoring application (MPL property RealDestinationUrl).
You can configure this parameter by entering a dynamic expression such like $
{property.property_name} or ${header.header_name} (see: Dynamically Configure Integra­
tion Flow Parameters [page 1084]).
Proxy Type
The type of proxy that you are using to connect to the target system:
●
Select Internet if you are connecting to a cloud system.
●
Select On-Premise if you are connecting to an on-premise system.

Note
If you select the On-Premise option, the following restrictions apply to other parameter values:
○
Do not use an HTTPS address for Address, as it leads to errors when performing consistency
checks or during deployment.
○
Do not use the option Client Certificate for the Authentication parameter, as it leads to errors
when performing consistency checks or during deployment.

Note
If you select the On-Premise option and use the SAP Cloud Connector to connect to your on-premise
system, the Address field of the adapter references a virtual address, which has to be configured in
the SAP Cloud Connector settings.
●
If you select Manual, you can manually specify Proxy Host and Proxy Port (using the corresponding entry
fields).
Furthermore, with the parameter URL to WSDL you can specify a Web Service Definition Language
(WSDL) file defining the WS provider endpoint (of the receiver). You can specify the WSDL by either up­
loading a WSDL file from your computer (option Upload from File System) or by selecting an integration
flow resource (which needs to be uploaded in advance to the Resources view of the integration flow).
This option is only available if you have chosen a Process Orchestration product profile.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
195
Parameter
Description
Location ID
only in case
On-Premise
is selected
for Proxy
Type.
To connect to an ASP Cloud Connector instance associated with your account, enter the location ID that you
defined for this instance in the destination configuration on the cloud side. You can also enter $
{header.headername} or ${property.propertyname} to dynamically read the value from a
header or a property.
Authenticat Defines the tenant authenticates itself against the receiver.
ion Type
There are the following options:
●
None
No authentication is configured.
●
Basic Authentication
The tenant authenticates itself against the receiver based on user credentials (user and password).
Note that when this authentication option is selected, the required security artifact (User Credentials)
has to be deployed on the tenant.
●
Certificate-Based Authentication
The tenant authenticates itself against the receiver based on X.509 certificates.
Note that when this authentication option is selected, the required security artifact (Keystore) has to be
deployed on the tenant.
●
Principal Propagation
The tenant authenticates itself against the receiver by forwarding the principal of the inbound user to the
cloud connector, and from there to the back end of the relevant on-premise system. You can only use
principal propagation if you have selectedBest Effort as the Quality of Service.

Note
This authentication method can only be used with the following sender adapters: HTTP, SOAP, IDoc,
XI sender (and Quality-of-Service Best Effort)

Note
Please note that the token for principal propagation expires after 30 minutes.
If it takes longer than 30 minutes to process the data between the sender and receiver channel, the
token for principal propagation expires, which leads to errors in message processing.
For special use cases, this authentication method can also be used with the AS2 adapter.
Credential
Name of User Credentials artifact that needs to be deployed separate on the tenant (it contains user name
Name
and password for the user to be authenticated).
(Only when
You can configure this parameter by entering a dynamic expression such like $
you have
{property.property_name} or ${header.header_name} (see: Dynamically Configure Integra­
selected
tion Flow Parameters [page 1084]).
Basic
Authenticat
ion as
Authenticat
ion Type)
196
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Private Key
Optional entry to specify the alias of the private key to be used for authentication. If you leave this field empty,
Alias
the system checks at runtime for any valid key pair in the tenant keystore.
(Only when
You can configure this parameter by entering a dynamic expression such like $
you have
{property.property_name} or ${header.header_name} (see: Dynamically Configure Integra­
selected
tion Flow Parameters [page 1084]).
CertificateBased
Authenticat
ion as
Authenticat
ion Type)
Timeout (in Specifies the amount of time (in milliseconds) that the client waits for a response before the http connection
ms)
is interrupted.
The default value set to 60000 milliseconds (1 minute).
Compress
Enables the tenant to send compressed request messages to the receiver (which acts as WS provider) and to
Message
indicate to the receiver that it can handle compressed response messages.
Allow
Used for enabling chunking of data while sending messages.
Chunking
Return
HTTP
Response
Code as
Header
When selected, writes the HTTP response code received in the response message from the called receiver
system into the header CamelHttpResponseCode.
This feature is disabled by default.

Note
You can use this header, for example, to analyze the message processing run (when level Trace has been
enabled for monitoring). Furthermore, you can use this header to define error handling steps after the
integration flow has called the XI receiver.
You can't use the header to change the return code since the return code is defined in the adapter and
can't be changed.
Clean Up
Select this option to clean up the adapter-specific headers after the receiver call.
Request
Headers
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
197
Parameter
Description
●
XI
Communication Party
Specifies the Communication Party header value of the request message sent to the receiver system.
Identifiers
for Sender

An XI mes­
Note
If you configure this value dynamically, the default values are taken. You can't define this value dy­
sage con­
namically if you use Delivery assurance options Exactly Once or At Least Once. In this case, you use
tains spe­
pre-defined values.
cific header
elements
A communication party typically represents a larger unit involved in an integration scenario. You usually
that are
use a communication party to address a company.
used to ad­
dress the
●
Communication Component
sender or a
Specifies the Communication Component header value of the request message sent to the receiver sys­
receiver of
tem.
the mes­
sage, such

Note
as commu­
If you configure this value dynamically, the default values are taken. You can't define this value dy­
nication
namically if you use Delivery assurance options Exactly Once or At Least Once. In this case, you use
party, com­
pre-defined values.
munication
compo­
nent, and
service in­
You typically use a communication component to address a business system as the sender or receiver of
messages.
terface. For
more infor­
mation on
the con­
cepts be­
hind these
entities,
see the
documen­
tation of
SAP Proc­
ess Integra­
tion at
https://
help.sap.co
m/viewer/
product/
SAP_NET­
WEA­
VER_PI/
ALL/.
198
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
XI
Description
●
Communication Party
Identifiers
Specifies the Communication Party header value of the response message received from the receiver
for Receiver
system.
A communication party typically represents a larger unit involved in an integration scenario. You usually
An XI mes­
use a communication party to address a company.
sage con­
You can configure this parameter by entering a dynamic expression such like $
tains spe­
{property.property_name} or ${header.header_name} (see: Dynamically Configure Inte­
cific header
elements
that are
gration Flow Parameters [page 1084]).
●
Communication Component
Specifies the Communication Component header value of the response message received from the re­
used to ad­
ceiver system.
dress the
You typically use a communication component to address a business system as the sender or receiver of
sender or a
messages.
receiver of
the mes­
You can configure this parameter by entering a dynamic expression such like $
sage, such
{property.property_name} or ${header.header_name} (see: Dynamically Configure Inte­
as commu­
gration Flow Parameters [page 1084]).
nication

party, com­
Note
munication
To get this information, go to the receiver system and choose transaction SLDCHECK. In section
compo­
LCR_GET_OWN_BUSINESS_SYSTEM, you find the business system ID (which typically has the form
nent, and
<SID>_<client>).
service in­
terface. For
●
Service Interface and Service Interface Namespace
more infor­
These attributes specify the service interface that determines the data structure of the response mes­
mation on
sage received from the receiver system.
the con­
The receiver interface is described according to how interfaces are defined in the Enterprise Services Re­
cepts be­
pository, that means, with a name and a namespace.
hind these
You can configure this parameter by entering a dynamic expression such like $
entities,
{property.property_name} or ${header.header_name} (see: Dynamically Configure Inte­
see the
gration Flow Parameters [page 1084]).
documen­
tation of
SAP Proc­
ess Integra­
tion at
https://
help.sap.co
m/viewer/
product/
SAP_NET­
WEA­
VER_PI/
ALL/.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
199
Delivery Assurance Tab
Receiver: Delivery Assurance
Parameter
Description
XI Message
Select this option to specify how the XI Message ID shall be defined.
ID
Determinati
You can choose among the following options:
●
on
Generate (default)
Generates a new XI message ID.
●
Reuse
Take over the message ID passed with the header SapMessageIdEx. If the header is not available in
runtime, a new message ID is generated.
●
Map
Maps a source message ID to the new XI message ID.
For more information on how to use this option in an end-to-end scenario, check out the SAP Community
blog Cloud Integration – Configuring ID Mapping in XI Receiver Adapter
Source for
XI Message
ID (only in
To map the source message ID to the XI message ID enter:
${header.headername} or ${property.propertyname}
case you

selected
Note
If no header or property is available at runtime, a new message ID is generated.
Map as XI
Message ID
Determinati
on)
Quality of
Service
Defines how the message (from the tenant) is expected to be processed by the receiver.
There are the following options:
●
Best Effort
The message is sent synchronously; this means that the tenant waits for a response before it continues
processing.
No temporary storage of the message needs to be configured, as message request and response are
processed immediately after another.
●
Exactly Once
The message is sent asynchronously. This means that the tenant does not wait for a response before
continuing processing. It is expected that the receiver guarantees that the message is processed exactly
once.
If you choose this option, the message needs to be temporarily stored on the tenant (in the storage con­
figured under Temporary Storage). As soon as the message is store there, the sender receives success­
fully received status message. If an error occurs, the message is retried from the temporary storage.
200
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Temporary
Temporary storage location for messages that are processed asynchronously. Messages for which processing
Storage
runs into an error can be retried from the temporary storage.
(only in
You can choose among the following storage types:
case
Exactly
●
Data Store
The message is temporarily stored in the database of the tenant (in case of an error). In case of success­
Once is se­
ful message processing, the message is immediately removed from the data store.
lected for
You can monitor the content of the data store in the Monitor section of the Web UI under Manage Stores
Quality of
in the Data Stores tile.
Service)

Note
The data store name is automatically generated and contains the following parts:
<name of participant connected with XI adapter>_< XI channel name>
This automatically generated name is subject to a length restriction and must be no more than 40
characters (including the underscore). If the data store name exceeds this limit, you must shorten
the participant name or channel name accordingly.
Below the data store name, you find a reference to the associated integration flow in the following
form: <integration flow name>/XI
●
JMS Queue
The message is stored temporarily in a JMS queue on the configured message broker.
If possible, use this option as it comes with a better performance.
You can monitor the content of the data store in the Monitor section of the Web UI under Manage Stores
in the Message Queues tile.

Note
The name of the JMS queue is automatically generated and contains the following parts:
XI.<Integration Flow Name>.<Channel Name>.<Guid>

Note
This option is only available if you have an Enterprise Edition license.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
201
Parameter
Description
Lock
Specify how long the client should wait before trying to process the message again, for example in the event
Timeout (in of a cluster outage. The amount of time you choose should be higher than the processing time.
min)
The default is set to 10 minutes.
(only in
case
Exactly One
is selected
for Quality
of Service
and Data
Store is se­
lected for
Temporary
Storage)
Retry
Interval (in
min)
Enter a value for the amount of time to wait before retrying message delivery (in case of an error).
Exponential Select this option to double the retry interval after each unsuccessful retry.
Backoff
Maximum
Retry
Interval (in
min)
You can set an upper limit on that value to avoid an endless increase of the retry interval. The default value is
60 minutes. The minimum value is set to 10 minutes.
(only con­
figurable
when
Exponential
Backoff is
selected)
Dead-Letter Select this option to place the message in the dead-letter queue if it can't be processed after three retries
Queue
caused by an out-of-memory. Processing of the message is stopped then.
(only if as
In such cases, a lock entry is created which you can view and release in the Monitor section of the Web UI
Temporary
under Managing Locks.
Storage the
option JMS
Use this option to avoid out-of-memory situations (caused in many cases by large messages).
Queue is
For more information, read the SAP Community blog Cloud Integration – Configure Dead Letter Handling in
selected)
JMS Adapter
202
PUBLIC
.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Encrypt
Select this option in case the messages should be stored in an encrypted way during certain processing
Message
steps. It is recommended to choose this option if the message can contain sensitive data. Note that this set­
during
ting might decrease performance of the integration scenario.
Persistence
(only in
case you
have se­
lected
Exactly
Once as
Quality of
Service)
2.5.2.18 Configuring a Channel with RFC Receiver Adapter
You can use Remote Function Call (RFC) to integrate on-premise ABAP systems with the systems hosted on
the cloud using the Cloud connector.
Prerequisites
Ensure that following prerequisites are met:
● You have defined the RFC destination in the SAP Cloud connector for your application. To create
destinations you need to either have administrator or developer role in SAP Cloud Platform cockpit.
 Note
For more information on how to create RFC destinations in the Cloud connector, see Creating an RFC
Destination [page 716] .
● You have opened the integration flow in the editor for editing purposes.
● SAP Netweaver ABAP system is up and running.
● You have generated the remote function module XSD file. For more information on how to generate XSD
file, see Generating XSD/WSDL for Function Modules Using ESR (Process Integration) [page 716].
Context
RFC executes the function call using synchronous communication, which means that both systems must be
available at the time the call is made. When the call is made for the function module using the RFC interface,
the calling program must specify the parameters of the connection in the form of an RFC destination. RFC
destinations provide the configuration needed to communicate with an on-premise ABAP system through an
RFC interface.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
203
The RFC destination configuration settings are used by the SAP JAVA Connector (SAP JCo) to establish and
manage the connection.
 Remember
● The RFC adapter supports SAP NetWeaver 7.31 and higher.
● From RFC adapter version 1.2.0, function modules that contains "/" in their names are also supported.
For these function modules you need to replace "/" with "_-" (underscore and hyphen) in the input
XML.
● The date provided in the input XML must be of format "YYYY-MM-DD".
● If the parameters of the ABAP function are changed, the integration flow containing the RFC adapter
must be redeployed for the new parameters to be reflected in the output XML. However, this doesn't
hold good in case the RFC adapter is configured with dynamic destination. For the changed parameters
to be reflected in the output, the integration flow must be redeployed with the static destination only.
Parameter and Value of the RFC Receiver Adapter
Field
Description
Destination
RFC destination configured in SAP Cloud Platform for your
application.
Send Confirm Transaction
(Applicable to BAPI functions) By default this option is disa­
bled. You can enable this option if you want to support BAPI
functions that require BAPI_TRANSACTION_COMMIT to be
invoked implicitly by the RFC receiver adapter.

Note
Ensure the following ABAP functions are whitelisted in
Cloud connector before using this option:
●
BAPI_TRANSACTION_COMMIT
●
BAPI_TRANSACTION_ROLLBACK

Caution
If you enable this option for non-BAPI functions,
BAPI_TRANSACTION_COMMIT can still be invoked,
which is redundant and hence may impact RFC function
execution time.
 Note
You can create dynamic destinations by using regular expressions (header, property) in the Content
Modifier. To do that, you need to first select the Content Modifier in the integration flow. Then go to Message
Header and assign corresponding value to the header name as the destination name. Select your RFC
adapter and assign dynamic destination by using the expression: ${header/property.<header/property
name>}. For example ${header.abc} or ${property.abc} where abc is the value of the header or property.
204
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the Model Configuration editor, double-click the channel that you want to configure.
2. Go to General tab. Select RFC from the Adapter Type dropdown.
3. Go to the Adapter Specific tab and enter the value for the field shown in the table below:
Parameter and Value of the RFC Receiver Adapter
Field
Description
Destination
RFC destination configured in SAP Cloud Platform for your
application.
Send Confirm Transaction
(Applicable to BAPI functions) By default this option is dis­
abled. You can enable this option if you want to support
BAPI functions that require BAPI_TRANSACTION_COM­
MIT to be invoked implicitly by the RFC receiver adapter.

Note
Ensure the following ABAP functions are whitelisted in
Cloud connector before using this option:
○
BAPI_TRANSACTION_COMMIT
○
BAPI_TRANSACTION_ROLLBACK

Caution
If you enable this option for non-BAPI functions,
BAPI_TRANSACTION_COMMIT can still be invoked,
which is redundant and hence may impact RFC func­
tion execution time.
 Note
You can create dynamic destinations by using regular expressions (header, property) in the Content
Modifier. To do that, you need to first select the Content Modifier in the integration flow. Then go to
Message Header and assign corresponding value to the header name as the destination name. Select
your RFC adapter and assign dynamic destination by using the expression: ${header/
property.<header/property name>}. For example ${header.abc} or ${property.abc} where abc is the
value of the header or property.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
205
2.5.2.19 Configuring a Channel with ProcessDirect Adapter
Use ProcessDirect adapter (sender and receiver) to establish fast and direct communication between
integration flows by reducing latency and network overhead provided both of them are available within a same
tenant.
Prerequisites
● Deployment of the ProcessDirect adapter must support N:1 cardinality, where N (producer) → 1
(consumer).
 Caution
Multiple producers can connect to a single consumer, but the reverse is not possible. The cardinality
restriction is also valid across integration projects. If two consumers with the same endpoint are
deployed, then the start of the second consumer fails.
● The Address mentioned in ProcessDirect configuration settings must match for producer and consumer
integration flows at any given point.
Context
ProcessDirect Receiver Adapter: If the ProcessDirect adapter is used to send data to other integration flows,
the integration flow is considered as a producer integration flow. In this case, the integration flow has a receiver
ProcessDirect adapter.
ProcessDirect Sender adapter: If the ProcessDirect adapter is used to consume data from other integration
flows, the integration flow is considered as a consumer integration flow. In this case, the integration flow has a
sender ProcessDirect adapter.
The ProcessDirect adapter supports the following features:
● Decompose large integration flows: You can split a large integration flow into smaller integration flows
and maintain the in-process exchange without network latency.
● Customize the standard content: SAP Cloud Integration enables integration developers to customize
their integration flows without modifying them entirely. The platform provides plugin touchpoints where
integration developers can add custom content. This custom content is currently connected using HTTP or
SOAP adapters. You can also use the ProcessDirect adapter to connect the plugin touchpoints at a lower
network latency.
● Allow multiple integration developers to work on the same integration flow: In some scenarios,
integration flows can be large (100 steps or more), and if they are owned or developed by just one
integration developer this can lead to an overreliance on one person. The ProcessDirect adapter helps you
to split a large integration flow into smaller parts that can be owned and managed by multiple integration
developers independently. This allows several people to work on different parts of the same integration
flow simultaneously.
● Reuse of integration flows by multiple integration processes spanning multiple integration projects:
Enables the reuse of integration flows such as error handling, logging, extension mapping, and retry
206
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
handling across different integration projects and Camel context. Integration developers therefore only
need to define repetitive logic flows once and can then call them from any integration flow using the
ProcessDirect adapter.
● Dynamic endpoint: Enables the producer integration flow to route the message dynamically to different
consumer integration flow endpoints. The producer integration flow look ups the address in the headers,
body, or property of the exchange and the corresponding value is then resolved to the endpoint to which
the exchange is to be routed.
● Multiple MPLs: MPL logs are interlinked using correlation IDs.
● Transaction processing: Transactions are supported on integration flows using the ProcessDirect adapter.
However, the scope of the transaction is isolated and restricted to a single integration flow.
● Header propagation: Header propagation is not supported across producer and consumer integration
flows unless configured in <Allowed Header(s)> in the integration flow's runtime configuration.
● Property propagation: Property propagation is not supported across producer and consumer integration
flows, except for SAP_SAPPASSPORT property. This property is for internal use only and users are not
allowed to modify it.
 Tip
ProcessDirect adapter improves network latency, as message propagation across integration flows do not
involve load balancer. For this reason, we recommend that you consider memory utilization as a parameter
in scenarios involving heavy payloads and alternatively use HTTP adapter in such scenarios because, the
behavior will be the same.
 Restriction
Cyclic loop deployment of integration flows must be avoided.
Procedure
1. In the Model Configuration editor, double-click the channel that you want to configure.
2. Go to General tab. Select ProcessDirect from the Adapter Type dropdown.
3. Go to the Adapter Specific tab and enter the value for the field shown in the table below:
Parameters of the ProcessDirect Adapter
Parameter
Description
Address
URL of the target system that you are connecting to. For
example, /localiprequiresnew.

Note
It may or may not start with "/". It can contain alpha­
numeric characters and special characters such as
underscore "_" or hyphen "-". You can also use simple
expressions, for example, ${header.address}.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
207
 Remember
○ If the consumer has an <Escalated End Event> in the <Exception Sub-Process>, then in
case of exception in the consumer, the MPL status for the producer varies based on the following
cases:
○ If the producer integration flow starts with <Timer>, the MPL status for the consumer will be
Escalated and for Producer, it will be Completed.
○ If the producer integration flow starts with <HTTP> Sender, the MPL status for the consumer
will be Escalated and for producer, it will be Failed.
○ The combination of <Iterating Splitter> and <Aggregator> in the producer integration
flow might generate an extra MPL (Aggregator MPL) due to the default behavior of Aggregator.
○ The <Send> component is incompatible with the ProcessDirect adapter as the adapter supports
asynchronous mode for message exchange and it expects a response.
To learn more about the adapter, see blog on ProcessDirect Adapter in SAP Community
.
2.5.3 Defining Message Transformers
Context
Procedure
2.5.3.1
Assigning Mapping
Prerequisites
● You have configured the connections to an On-Premise repository if you have to import mapping from that
repository into the workspace.
 Note
For more information on setting the connections to the repository, see the task 'Setting the
Connections to the External Repository' in Configuring the Tool Settings [page 20]. You can import
208
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
message mappings (.mmap) from ES Repository with server version 7.1 onwards, and operation
mapping from ES Repository with server version 7.3 EHP1 SP3 .
● You have imported the mappings to your local workspace from the On-Premise repository.
 Note
For more information about how to import mappings from the ES Repository, see Importing SAP
NetWeaver PI Objects from On-Premise Repository [page 27].
Context
You perform this task to assign a mapping that is available in your local workspace.
Your local workspace can contain mappings that are already imported from an external repository, such as the
ES Repository, or you have obtained them from some other integration project.
 Caution
You have to be cautious in distributing the mappings imported from ES Repository if they contain any
sensitive data. Although you securely import mappings from the repository by providing the user
credentials, copying the imported mappings from one Integration Project to another does not require any
authorization.
In an integration flow project, the src.main.resources.mapping package can contain message mapping
(.mmap), operation mapping (.opmap), XSL mapping and XSLT mapping.
Procedure
1. To add a mapping element to an integration flow model, perform the steps below:
a. In the Model Configuration editor, select the sequence flow within the pool.
b. From the context menu of the sequence flow, choose Add Message Transformers and then select
Mapping.
2. Select the mapping in the integration flow.
3. From the context menu, you can choose one of the mapping options: Assign Mapping, New Message
Mapping, Switch to XSLT Mapping or Switch to Operation Mapping
4. Open the Properties view.
5. If you want to assign mapping then execute the following substeps:
a. To select a mapping for the integration flow, choose Browse….
 Note
You can assign an operation mapping only if the sender and receiver channel is configured with
SOAP adapters.
b. In the Choose Mapping dialog, choose the dropdown icon and select Local to obtain the mapping.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
209
 Note
Local option shows mapping of different types, such as message mapping (.mmap), operation
mapping (.opmap), XSL mapping and XSLT mapping, available within the current project.
c. Select a mapping.
d. Choose OK.
6.
 Note
XSLT Mapping version 1.1 supports functions to set header, exchange properties.
It allows you also to access the partner directory.
You can set header and property as shown in the example below.
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hci="http://sap.com/it/"
exclude-result-prefixes="hci">
<xsl:param name="exchange"/>
<xsl:output method="xml" encoding="UTF-8" indent="no" />
<xsl:template match="/">
<xsl:value-of select="hci:setHeader($exchange, 'myname',
'myvalue')"/>
<xsl:value-of select="hci:setProperty($exchange, 'myname',
'myvalue')"/>
<Test1/>
</xsl:template>
</xsl:stylesheet>
Here the header/property name is myname and value is myvalue.
Execute the following substeps for XSLT mapping version 1.1:
a. From the context menu, choose Switch to XSLT Mapping.
b. In the Properties view, select either Integration Flow or Header as source for the mapping.
c. If you select header as source, then enter name for the header in the Header Name field.
 Note
To assign xslt mapping for partner directory, the valid format for value of header name is
pd:<Partner ID>:<Parameter ID>:<Parameter Type>, where the parameter type is either
binary or string. For example, the correct header name is pd:SenderABC:SenderXSD:Binary.
You can
To access access headers via the xsl:param element
For example, when you like to access the header myHeader, you need the following expression:
<xsl:param name="myHeader"/>
d. Choose OK.
210
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
○ To view or modify the definition of message mapping in the mapping editor, click Name in the
Properties view. If you have assigned an operation mapping, the navigation to the mapping editor is
not supported.
○ For XSLT mapping, you can select the output format of the message to be either string or bytes
from the Output Format field.
 Restriction
Message mapping does not work if the integration flow project contains whitespaces.
Related Information
Avoiding Encoding Issues [page 863]
2.5.3.2
Defining Content Modifier
Context
You can also use content modifier to define local properties for storing additional data during message
processing. These properties can be further used in connectors and conditions.
Example
In SFTP Connector, the user can specify the receiver file name as - File_${property.count}.txt.
In Router, the user can define the condition as ${property.count} = '5'.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a content modifier in the integration flow, choose
Content Modifier
Add Message Transformers
from the context menu of a connection within the pool.
3. Select the added content modifier in the integration flow model to configure it.
4. To configure the content modifier with a saved configuration that is available as a template, choose Load
Element Template from the context menu of the Content Modifier element.
5. In the Properties view, select the Header tab.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
211
6. In the Action column you can either Create additional headers, set values for existing headers of messages
(by using constants, another header, an XPath, a property, an external parameter, or by forming an
expression).
a. To enter an XPath, select xpath in the Type column and browse for an XPath from the lookup in the
Value column.
 Note
○ The Data Type column is mainly used for the XPath type. The data type can belong to any Java
class. An example of a data type for an XPath is java.lang.String.
○ If the XPath contains a namespace prefix, specify the association between the namespace and
the prefix on the Runtime Configuration tab page of the integration flow Properties view.
Note that data written into the message header at a certain processing step (for example, in a Content
Modifier or Script step) will also be part of the outbound message addressed to a receiver system.
Because of this, it is important to consider the following restriction regarding the header size if you use
an HTTP-based receiver adapter:
If the message header exceeds 8 KB, it might lead to situations that the receiver cannot accept the
inbound call. (Relevant for all http-based receiver adapters)
b. To enter a header, select header in the Type column, and browse for a header from the lookup in the
Value column.
 Note
○ This lookup dialog shows you a list of headers that you have specified:
○ In the Header tab page of Content Modifier flow steps
○ In the Allowed Headers field of the Runtime Configuration tab page
c. To enter a property, select property in the Type column and define a value based on the selected value
type.
d. To enter an external parameter, select external parameter in the Type column and define the parameter
key. For more information, see Externalizing Parameters of Integration Flow [page 377].
 Note
Defining multiple parameters in the same field or column is not supported for tables.
7. If you are using version 1.2 then you can specify name or expression of the header/property to Delete an
existing header/property through the Action column, by executing the following substeps.
a. If you click on the icon
in Name field, then Specify Header or Expression dialog appears.
b. If you want to delete header using header name then enter the required name in Header field.
c. If you want to delete headers using expression then enter the required name or expression in
Expression field.
○ In Include field you can enter name or expression of the header you want to delete. For example, if
you enter 'test*', then all headers starting with test are deleted.
○ In Exclude field you can enter name or expression of the header you do not want to delete. For
example, if you enter 'test*', then all headers starting with test are not deleted.
8. In the same way as for headers, in Action column, the user can either Create additional properties, set
values for existing properties of messages (by using constants, another header, an XPath, a property, an
212
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
external parameter, or by forming an expression) or Delete properties as explained above, by selecting the
Property tab in the Properties view.
 Note
○ Special characters like {}, [] are not allowed in header name, for a header of type Constant.
○ Header values can be lost following the external system call, whereas properties will be available
for complete message execution.
○ During outbound communication, headers will be handed over to all message receivers and
integration flow steps, whereas properties will remain within the integration flow and will not be
handed over to receivers.
○ You must specify name of the property you want to delete.
9. Save the changes.
10. To save the configuration of the modifier as a template, choose Save as Template from the context menu of
the Content Modifier element.
 Note
○ When you save the configuration of the Content Modifier element as a template, the tool stores the
template in the workspace as <ElementTemplateName>.fst.
○ If you add a content modifier without header, body and property then you cannot trace the
element.
Example
Suppose the incoming message has the following information:
<order>
<book>
<BookID>A1000</BookID>
<Count>5<Count>
</book>
</order>
In the Body tab of the Content Modifier, you specify the content expected in the outgoing message. Keep a
placeholder for the header information to modify the content as shown below:
<invoice>
<vendor>${header.vendor}</vendor>
${in.body}
<deliverydate>${header.date}</delivery>
</invoice>
In the Header tab of the Content Modifier, enter the following:
Name
Type
Value
vendor
constant
ABC Corp
delivery date
constant
25062013
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
213
The output message would look like this:
<invoice>
<vendor>ABC Corp</vendor>
<order>
<book>
<BookID>A1000</BookID>
<Count>5<Count>
</book>
</order>
<deliverydate>25062013</deliverydate>
</invoice>
Related Information
Content Modifier Basics [page 214]
Avoiding Encoding Issues [page 863]
Headers and Exchange Properties [page 8]
Specifying Runtime Configuration [page 370]
2.5.3.2.1
Content Modifier Basics
An integration flow is a BPMN (Business Process Model and Notation)-like model that allows you to specify
how a message is to be processed on a tenant.
To interpret an integration flow model at runtime, it is transformed into an XML structure that is compatible
with Apache Camel (http://camel.apache.org ), an Open Source integration framework for Java that
supports the mediation and routing of messages of any format.
The only prerequisite for a message that is to be processed by the Camel framework is that it comprises the
following elements:
● Headers
Contain information related to the message, for example, information for addressing the message sender.
● Attachments
Contain optional data that is to be attached to the message.
● Body
Contains the payload (usually with the business-related data) to be transferred in the message.
For as long as a message is being processed, a data container (referred to as Exchange) is available. This
container is used to store additional data besides the message that is to be processed. An Exchange can be
seen as an abstraction of a message exchange process as it is executed by the Camel framework. An Exchange
is identified uniquely by an Exchange ID. In the Properties area of the Exchange, additional data can be stored
temporarily during message processing. This data is available for the runtime during the whole duration of the
message exchange.
You can use the Content Modifier step to modify a message by adding additional data to it.
More precisely, this step type allows you to modify the content of the following three data containers during
message processing:
214
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● Message Header
You can add headers to the message, and edit and delete headers.
● Message Body
You can modify the message body part.
● Exchange Property
You can write data to the message exchange, and edit and delete the properties.
For example, you can retrieve the value of a particular element of the payload of an inbound message and write
this value to the header of the message (to make it available for subsequent processing steps).
You need to specify additional parameters in the Content Modifier step to tell the integration runtime how
exactly to access the data from the incoming message (which is to be written to one of the three data
containers above).
Here's a simple example to show how this works: Let's say you want to write the value of the element
CustomerNumber from an inbound XML message to the message header, to make it available for subsequent
process steps.
In this case, you could configure the Content Modifier as follows:
On the Message Header tab of the Content Modifier, add a new entry. Specify XPath as the Type (because you
want to address the CustomerNumber element in an incoming XML message). For Value, enter the exact XPath
expression that is to be used to address this element (for example, /Order/Customer/CustomerNumber). In an
additional field, you now need to specify the data format expected for the content of the CustomerNumber
element. To express that this is a String element, you need to specify a valid Java data type, which is
java.lang.string in this case. For Name, enter the desired name of the message header (which should
contain the CustomerNumber value), for example, CustomerNo.
Example
The following example shows how to modify both the header and body data container of a message using the
Content Modifier step.
Suppose that the incoming message has the following information:
<order>
<book>
<BookID>A1000</BookID>
<Count>5</Count>
</book>
</order>
On the Header tab of the Content Modifier, enter the following to write constant values to the message header:
Name
Type
Value
vendor
constant
ABC Corp
delivery date
constant
25062013
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
215
On the Body tab, keep placeholders for the header information specified in the first Content Modifier step ($
{header.vendor} and ${header.date}) to modify the content as shown below. Additionally, use a
placeholder ${in.body} for the incoming message.
<invoice>
<vendor>${header.vendor}</vendor>
${in.body}
<deliverydate>${header.delivery date}</delivery>
</invoice>
The output message would look like this:
<invoice>
<vendor>ABC Corp</vendor>
<order>
<book>
<BookID>A1000</BookID>
<Count>5</Count>
</book>
</order>
<deliverydate>25062013</deliverydate>
</invoice>
2.5.3.3
Defining Encoders
You use this task to encode messages using an encoding scheme to secure any sensitive message content
during transfer over the network.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you did not select the encoder pattern when creating the integration flow, choose
Transformers
Encoder
Add Message
from the context menu of a connection within the pool.
3. Select the encoder in the integration flow model to configure it.
4. In the Properties view, select the encoding scheme from the dropdown list. You can select one of the
following encoding schemes:
○ Base64 Encode
Encodes the message content using base64.
○ GZIP Compress: Compresses the message content using GNU zip (GZIP).
○ ZIP Compress: Compresses the message content using zip (only zip archives with a single entry
supported).
○ MIME Multipart Encode: Transforms the message content into a MIME multipart message.
If you want to send a message with attachments, but the protocol (for example, HTTP or SFTP) does
not support attachments, you can send the message as a MIME multipart instead.
216
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
Note that SAP Cloud Integration does not support the processing of MIME multipart messages
that contain multiple attachments with the same file name.
5. Save the changes.
Example
A message with the header Content-Type "text/plain" is sent to a MIME multipart encoder. The add multipart
headers inline functionality is activated.
 Sample Code
from("...").marshal().mimeMultipart("related", true, true, "(included|x-.*)",
true);
The resulting message body will be:
 Sample Code
Message Body
Message-ID: <...>
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_0_1134128170.1447659361365"
------=_Part_0_1134128170.1447659361365
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Body text
------=_Part_0_1134128170.1447659361365
Content-Type: application/binary
Content-Transfer-Encoding: binary
Content-Disposition: attachment; filename="Attachment File Name"
[binary content]
------=_Part_0_1134128170.1447659361365
Consider the input XML payload structure to the encoder:
<message>
Input for encoder
</message>
If you select Base64 Encode, the output message would look like this:
PG1lc3NhZ2U+DQoJSW5wdXQgZm9yIGVuY29kZXINCjwvbWVzc2FnZT4NCg==
Related Information
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
217
MIME Multipart Messages [page 218]
2.5.3.3.1
MIME Multipart Messages
A Multipurpose Internet Mail Extensions (MIME) multipart message allows you to combine different kinds of
content in one message (for example, plain text and attachments).
To mention a use case, if you want to send a message with attachments, but the protocol (for example, HTTP or
SFTP) does not support attachments, you can send the message as a MIME multipart instead.
With a multipart subtype you can specify how the different content types are combined as MIME multipart
message. The property Multipart Subtype in the Encoder step allows you to specify the Content-Type property
of the MIME message. For more information on the different options for Multipart Subtype, refer to the general
definition of the Multipart Content-Type.
An input message for the MIME Multipart Encoder step doesn’t have to be composed in a specific way.
An inbound message for a MIME Multipart Decoder step has to be a MIME multipart message. Hereby, the
multipart headers can either be stored as Camel headers or as part of the message body.
Usage of Dynamic Headers
You have the option to dynamically (based on the content of the processed message) add custom headers to a
MIME multipart message. Do enable this option, you have to activate Add Multipart Header Inline. In that case,
the option Include Headers is displayed.
You can now enter regular expressions for the headers which are to be added dynamically. With such regular
expressions (regex), you can define placeholders for the custom headers:
 Tip
Example:
When you enter for Include Headers the string (x-.*|myAdditionalHeader), all headers that start with
x- and the header myAdditionalHeader are added dynamically.
MIME Multipart Encoder
The following table summarizes how the Encoder step transforms the message depending on whether you
select or deselect the option Add Multipart Header Inline.
218
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Encoder: Add Multipart Header Inline Option
Add Multipart Header Inline
Description
Selected
The Encoder transforms the inbound message into a new message where the message
body (of the resulting message) is a MIME multipart message with headers.
Body and attachments (if available) of the inbound message will be added as separate
parts of the multipart message. The attachments are removed from the resulting message.
Note that the message will also always be transformed into a MIME multipart message, re­
gardless whether it contains attachments or not.
Deselected
The following cases can occur:
●
The inbound message has attachments: Encoder transforms message body and at­
tachments of the inbound message into a MIME multipart message. The headers of
the multipart message will be added as Camel headers. The message body will be re­
placed by the rest of the message.
●
The inbound message has no attachments: Encoder does not change the inbound
message.
The following figures illustrate how the property Add Multipart Header Inline influences the processing of the
message.
Add Multipart Header Inline selected
Add Multipart Header Inline deselected
MIME Multipart Decoder
The following table summarizes how the Decoder step transforms the message depending on whether you
select or deselect the option Multipart Headers Inline.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
219
Decoder: Multipart Headers Inline Option
Multipart Headers Inline
Description
Selected
The Decoder transforms the first part of the multipart message into the message body of
the resulting message and the following parts (if available) will be transformed into attach­
ments of the resulting message.
In case the inbound message is, other than expected, no MIME multipart message with in­
line headers, the complete message body is interpreted as a preamble of the MIME multi­
part, and the resulting message is empty.
Deselected
The following cases can occur:
●
The inbound message either doesn’t contain the multipart header as Camel header or
the Content-Type is no multipart, the Decoder step doesn’t change the inbound mes­
sage.
●
In all other cases, the header of the inbound message will be used as header of the
multipart message (and deleted). The message body of the resulting message will be
built up out of those parts which are contained in the message body (and, if available,
out of the attachments).
2.5.3.4
Defining Decoders
You use this task to decode the message received over the network to retrieve original data.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a decoder in the integration flow, choose
from the context menu of a connection within the pool.
Add Message Transformers
Decoder
3. Select the newly added decoder in the integration flow model to configure it.
4. In the Properties view, select the decoding scheme from the dropdown list. You can select one of the
following decoding schemes:
○ Base64 Decode: Decodes base64-encoded message content.
○ GZIP Decompress: Decompresses the message content using GNU zip (GZIP).
○ ZIP Decompress: Decompresses the message content using zip.
○ MIME Multipart Decode: Transforms a MIME multipart message into a message with attachments.
If the multipart headers are part of the message body, select Multipart Headers Inline.
 Note
If this option is not selected and the content type camel-header is not set to a multipart type, no
decoding takes place.
If this option is selected and the body of the message is not a MIME multipart (with MIME headers
in the body), the message is handled as a MIME comment and the body is empty afterwards.
220
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
Note that SAP Cloud Integration does not support the processing of MIME multipart messages
that contain multiple attachments with the same file name.
5. Save the changes.
Example
Let us suppose that an input message to the decoder is a message encoded in Base64 that looks like this:
PG1lc3NhZ2U+DQoJSW5wdXQgZm9yIGVuY29kZXINCjwvbWVzc2FnZT4NCg==
The output message of the decoder would be as follows:
<message>
Input for encoder
</message>
2.5.3.5
Defining Content Filter
Context
You use this task if you want to filter information by extracting a specific node from the incoming message.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor
2. If you want to add content filter in the integration flow, choose
Filter
Add Message Transformers
Content
from the context menu of a connection within the pool.
3. Select the added content filter in the integration flow model to configure it.
4. In the Properties view, enter an Xpath to extract a specific message part from the body. For example, in the
Xpath Expression field, enter /ns0:MessageBulk/Message/MessageContent/text() .
 Tip
To quickly specify the Xpath in the content filter, select Define Content Filter from the context menu of
the element.
5. In the Properties view, select a particular value for the output, from the Value Typedropdown menu.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
221
Value Type
Description
String
The output is of type string.
Integer
The output is of type integer.
Boolean
The output is of type boolean.
Node
The output is of type node.
Nodelist
The output is collection of nodes.
6. Save the changes.
Example
Consider an XML payload structure<Message>
<orders>
<order>
<clientId>I0001</clientId>
<count>100</count>
</order>
<order>
<clientId>I0002</clientId>
<count>10</count>
</order>
</orders>
</Message>
If you enter an Xpath- /Message/orders/order/count/text(). The output of the Content Filter would be10010
Related Information
Avoiding Encoding Issues [page 863]
222
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.3.6
Define Message Digest
This integration flow step is used to calculate a digest of the payload or parts of it and store the result in a
message header.
Context
In detail, the Message Digest integration flow step transforms a message into a canonical XML document. From
this document, a digest (hash value) is calculated and written to the message header.
 Tip
A digest (also referred to as hash value) is an expression with a fixed size calculated from an input value
(which can be of any size). Performing the same hash algorithm on the same data results in the same
digest. However, the inverse operation isn’t possible: The input value can’t be reproduced out of the hash
value.
You can use this feature to implement scenarios like the following ones:
● Instead of a signature, you can send the digest along with a certain value in a message. That way, you
enable the receiver to check if the value has been changed during processing.
In general, the Message Digest step provides you with a simple-to-use method to check if a message has
been changed during processing without the need to check the payload itself. Check out Simple
Integration Flow Using a Message Digest Step [page 923] to learn how to quickly check if a response
message from an external data source has been changed between two message processing runs.
● Instead of a certain value, you can store its digest. To check for the correctness of the value, by checking
the digest.
 Note
Canonicalization transforms an XML document into a form (the canonical form) that makes it possible to
compare it with other XML documents. With the Message Digest integration flow step, you can apply
canonicalization to a message (or to parts of a message), calculate a digest out of the transformed
message, and add the digest to the message header.
In simple terms, canonicalization skips nonsignificant elements from an XML document. To give some
examples, the following changes are applied during the canonicalization of an XML document: Unification
of quotation marks and blanks, or encoding of empty elements as start/end pairs.
The original message remains unchanged.
You also have the option to define a filter to apply canonicalization only to a sub-set of the message.
Procedure
1. If the Message Digest step is present in the integration flow, select it to edit the properties.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
223
2. If you want to add a Message Digest step to the integration flow, perform the following substeps:
a. In the palette, choose  (Message Transformers)and then choose  (Message Digest).
b. Place Content Modifier step in the integration process.
3. Specify the following attributes for the step.
Option
Description
Filter
(XPath)
If you only want to transform part of the message, enter an XPath expression to specify the part (op­
tional attribute).
You can also define a prefix namespace mapping.
Canonicali­
zation
Method
You can choose between the following methods.
○
Canonical XML Version 1.0
More information: http://www.w3.org/TR/2001/REC-xml-c14n-20010315
○
Canonical XML with Comments Version 1.0
○
Exclusive XML Canonicalization Version 1.0
More information: http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
More information: http://www.w3.org/2001/10/xml-exc-c14n
○
Exclusive XML Canonicalization with Comments Version 1.0
More information: http://www.w3.org/2001/10/xml-exc-c14n#WithComments
○
Digest Algo­
rithm
Target
Header
Name
None
Select the hash algorithm to be used to calculate the digest (mandatory attribute).
You can choose between the following hash algorithms:
○
MD5
○
SHA-1
○
SHA-256
○
SHA-384
○
SHA-512
Enter the name of the target header element, which is to contain the hash value (mandatory attribute).
The value of this header contains the base64-encoded message digest.
By default, the header has the name SAPMessageDigest, but you can also define another header
name.
2.5.3.7
Defining Converter
Context
The converter element enables you to transform an input message in one format to another. You can also
specify some conditions that are used as reference to transform the message.
224
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
The CSV to XML converter transforms a message in CSV format to XML format. Conversely, the XML to CSV
converter transforms a message in XML format to CSV format.
 Restriction
You cannot use XML to CSV converter to convert complex XML files to CSV format.
Procedure
You use this procedure to define a converter element in an integration process.
1. Open the integration flow in the Model Configuration editor.
2. Access the palette and choose Message Transformers.
3. Drag
from palette to the integration process and define the message path.
 Note
Alternatively, you can also add the converter from context menu. Choose
Message Transformers
Converter
4. If you want to use CSV to XML Converter, perform the following substeps.
a. Select the Converter element and access Properties tab page.
b. Provide values in fields based on description in table.
Field
Description
Name
Provide a name for the converter step. This field is op­
tional.
XML Schema
Choose Browse and select the file path to the XML
schema file that is used as the basis for message trans­
formation. The XML file schema format is used as the
basis for creation of the payload. This file has to be in
the package source.main.resources.xsd
Path to Target Element in XSD
XPath in the XML Schema File where the content from
CSV has to be placed.
Record Marker in CSV
The corresponding record in the CSV file that has to be
considered for conversion. This entry is the first text in
every new record of the CSV.

Note
If this value is not specified then all the records
would be considered for conversion.
c. In the Field Separator in CSV field, choose the character that you want to use as the field separator in
CSV file from the dropdown list.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
225
 Note
If you want to use a field separator that is not available in the dropdown list, manually enter the
character in Field Separator in CSV field.
d. If you want to exclude headers in the first line of CSV file for conversion, select Exclude First Line
Header checkbox.
e. Save changes.
5. If you want to use XML to CSV Converter, right-click on the CSV to XML Converter and choose Switch to
XML to CSV Converter. Perform the following substeps:
a. In the context menu of Converter, choose Switch to XML to CSV Converter.
b. Access the Properties tab page.
c. In the Path to Source Element field, enter the path of the source element in XML file.
d. In the Field Separator in CSV field, select the field separator from the dropdown list.
 Note
If you want to use a field separator that is not available in the dropdown list, manually enter the
character in Field Separator in CSV field.
e. If you want to use the field names in the XML file as headers in CSV file, select the Field Names as
Headers in CSV checkbox.
f. If you want to include the parent element of the XML file in the CSV file, in the Advanced tab page
select Include Parent Element checkbox.
g. If you want to include the attribute values of the XML file in the CSV file, in the Advanced tab page
select Include Attribute Values checkbox.
h. Save changes.
Example
Consider a CSV file that is in the following format:
COMPETENCY,
Role Specific,
Computer Skills,
"Skilled in the use of computers, adapts to new technology, keeps abreast of
changes, learns new programs quickly, uses computers to improve productivity."
Consider the Schema XML File in the following format:
<?xml version="1.0" encoding="UTF-8"?>
<CompetencyList>
<Competency>
<id></id>
<name></name>
<description></description>
</Competency>
</CompetencyList>
Value for the field XPath of Record Identifier in XSD is given as CompetencyList\Competency.
226
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
After it is processed by the CSV to XML converter, the XML output appears in the following format:
<?xml version="1.0" encoding="UTF-8"?>
<CompetencyList>
<Competency>
<id>Role Specific</id>
<name>Computer Skills</name>
<description>Skilled in the use of computers, adapts to new technology, keeps
abreast of changes, learns new programs quickly, uses computers to improve
productivity.</description>
</Competency>
</CompetencyList>
2.5.3.7.1
Defining the JSON-to-XML Converter
The JSON-to-XML converter enables you to transform messages in JSON format to XML format.
Procedure
1. Open the integration flow in the Model Configuration editor.
2. Access the palette and choose Message Transformers.
3. Drag Converter from the palette to the integration process.
4. From the context menu, choose Switch to JSON to XML Converter.
5. On the properties tab page, define the conversion parameters, see table below:
Option
Description
Name
Enter the name of the converter.
JSON Prefix (only if the option Use Namespace Mapping
is selected)
Enter the mapping of the JSON prefix to the XML name­
space. The JSON namespace/prefix must begin with a let­
ter and can contain aA-zZ and 0-9.
JSON Prefix Separator
Enter the JSON prefix separator to be used to separate
the JSON prefix from the local part. The value used must
not be used in the JSON prefix or local name.
The following characters are allowed: colon(:), comma(,),
dot(.), pipe(|), semicolon(;), and space.
6. Save the changes.
2.5.3.7.1.1 Conversion Rules for JSON to XML Conversion
To ensure a successful conversion of you data, you should make yourself familiar with the conversion rules.
The conversion from JSON format to XML format follows the following rules:
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
227
● The value of a complex element (having attributes for example) is represented by a separate member
"$":"value".
● An element with multiple child elements of the same name is represented by an array. This also holds if
between the children with the same name other children with another name reside.
Example: <root><childA>A1</childA><childB>B</childB><childA>A2</childA></root> is
transformed in the non-streaming case to {"root":{"childA":["A1","A2"],"childB":"B"}},
which means that the order of the children is not preserved.
In the streaming case, the result is: {"root":{"childA":["A1"],"childB":"B","childA":
["A2"]"}}, which means that a non-valid JSON document is created because the member "childA"
appears twice.
● An element with no characters or child elements is represented by "element" : ""
● JSON members whose names start with ‘@’ are transformed to XML attributes. For example, if the
member name is “@pre1.attr1”, if the JSON delimiter is ‘.’ and if there is a JSON prefix to namespace
mapping “pre1” to “https://test.com/”, then an XML attribute with local name “attr1” and
namespace “https://test.com/” is created.
JSON members whose name start with ‘@’ must appear at the beginning of the child members of the
parent member, for example:
 Sample Code
{"parent":{
"@attr1":123,
"@attr2":1234,
"id": "000039002",
"href": "",
"externalId": "Test_3"
}
}
This representation can be transformed because the “@attr1” and “@attr2” members appear at the
beginning of the child members of the “parent” member. The following example would result in the error
"Trying to write an attribute when there is no open start element" because the “@attr1” and “@attr2”
child members do not appear at the beginning of the child members of the “parent” member:
 Sample Code
{"parent":{
"id": "000039002",
"@attr1":123,
"href": "",
“@attr2”:1234,
"externalId": "Test_3"
}
}
● An element is represented as JSON member whose name is the concatenation of JSON prefix
corresponding to the XML namespace, JSON delimiter, and the element name. If the element has no
namespace, no prefix and JSON delimiter is added to the JSON name.
● A member with JSON null value is transformed to empty element; example: "C":null is converted to
<C/>.
● Conversion of "@attr":null to XML is not supported (you get a NullPointerException, since cluster
version 1.21 you get a JsonXmlException).
228
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● The result XML document is encoded in UTF-8 and gets the XML header "<?xml version='1.0'
encoding='UTF-8'?>".
● The content of the XML-Namespace-to-JSON-Prefix map is transformed to namespace prefix declarations
on the root element.
● If for a JSON prefix no XML Namespace is defined, then the full member name with the prefix and JSON
delimiter is set as element name: "p.A" leads to <p.A>.
Related Information
Define JSON to XML Converter [page 873]
Conversion Rules for XML to JSON Conversion [page 233]
2.5.3.7.1.2 Limitations for JSON to XML Conversion
To ensure a successful conversion frrm JSON to XML format you have to know the limitations for this
conversion.
The JSON to XML conversion has the following limitations:
● The XML element and attribute names must not contain any delimiter characters, because the delimiter is
used in JSON to separate the prefix from the element name.
● Elements with mixed content are not supported.
● Conversion of "@attr":null to XML is not supported. You get a NullPointerException; as of cluster version
1.21 you get a JsonXmlException.
● JSON member names must not contain in their local or prefix part any characters that are not allowed for
XML element/attribute names (for example, space or column (':') are not allowed). XML element/attribute
names are of type NCName (see http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName
).
● JSON texts that start with an array (for example, [{"a":{"b":"bvalue"}}] ) are not supported. The
JSON text must start with a JSON object such as {{"a":{"b":"bvalue"}}}. A
javax.xml.stream.XMLStreamException is thrown. As of cluster version 1.21, a JsonXmlException is thrown.
● The root JSON object must contain exactly one member. If the root JSON object contains more than one
member (for example, {"a":"avalue","b":"bvalue"}), a javax.xml.stream.XMLStreamException is
thrown. If the root JSON object is empty ({}), a javax.xml.stream.XMLStreamException is thrown. As of
cluster version 1.21, a JsonXmlException or IllegalStateException (for {}) is thrown.
 Tip
If you need to convert a JSON file that doesn't fulfil this requirement, you can do the following:
Add a content modifier before the JSON to XML converter that changes the message body. In the entry
field in tab Message Body, enter:
{"root": ${in.body}}
● If no XML namespace is defined for a JSON prefix, the full member name with the prefix and JSON
delimiter is set as the element name: "p:A" -> <p:A>.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
229
Related Information
Define JSON to XML Converter [page 873]
Conversion Rules for JSON to XML Conversion [page 875]
Limitations for XML-to-JSON Conversion [page 234]
2.5.3.7.1.3 Example: Transformations from JSON format to
XML format with and without Namespace
Mapping
Whether you select the option Use Namespace Mapping or not, leads to different transformation results.
Using Namespace Mapping
For this example we look at the following JSON document:
{"abc:A":{"xyz:B":{"@xyz:attr1":"1","@attr2":"2","$":"valueB"},"C":
["valueC1","valueC2"],"D":"","E":"valueE"}}
For the transformation of this document we choose the following settings:
● The character ':' is used as the JSON prefix separator.
● The option Use Namespace Mapping is selected.
● The JSON-prefix-to-XML-namespace mapping is as follows:
JSON Prefix
XML Namespace
abc
http://com.sap/abc
xyz
http://com.sap/xyz
We get the following XML document:
<?xml version='1.0' encoding='UTF-8'?>
<abc:A xmlns:abc="http://com.sap/abc" xmlns:xyz="http://
com.sap/xyz"><xyz:B xyz:attr1="1" attr2="2">valueB</xyz:B><C>valueC1</
C><C>valueC2</C><D/><E>valueE<E></abc:A>
No Namespace Mapping
For this example we look at the following JSON document:
{"abc.A":{"xyz.B":{"@xyz.attr1":"1","@attr2":"2","$":"valueB"},"C":
["valueC1","valueC2"],"D":"","E":"valueE"}}
230
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
For the transformation of this document we choose the following settings:
● The character ':' is used as the JSON prefix separator.
● The option Use Namespace Mapping is not selected.
We get the followingXML document:
<?xml version='1.0' encoding='UTF-8'?><A><B attr1="1" attr2="2">valueB</
B><C>valueC1</C><C>valueC2</C><D/><E>valueE<E></A>
2.5.3.7.2
Defining the XML-to-JSON Converter
The XML-to-JSON converter enables you to transform messages in XML format to JSON format.
Procedure
You use this procedure to define a converter element in an integration process.
1. Open the integration flow in the Model Configuration editor.
2. Access the palette and choose Message Transformers.
3. Drag Converter from the palette to the integration process.
4. From the context menu, choose Switch to XML to JSON Converter.
5. On the XML to JSON Converter properties tab page, define the parameters to convert the XML data format
to JSON data format.
Option
Description
Name
Enter the name of the converter.
JSON Output Encoding
Enter the JSON output encoding. The default value is from
header or property.
If you select from header or property, the converter tries to
read the encoding from the message header or exchange
property CamelCharsetName. If there is no value de­
fined, UTF-8 is used.
XML Namespace (only if the option Namespace Mapping
is selected)
If you select from header or property, the converter tries
to read the encoding from the message header or ex­
change property CamelCharsetName. If there is no value
defined, UTF-8 is used.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
231
Option
Description
JSON Prefix Separator (only if the option Namespace
Enter the JSON prefix separator to be used to separate
Mapping is selected)
the JSON prefix from the local part. The value used must
not be used in the JSON prefix or local name.
The following characters are allowed: colon(:), comma(,),
dot(.), pipe(|), semicolon(;), and space.
Suppress JSON Root Element
Choose this option to create the JSON message without
the root element tag.
6. Specify whether to enable Streaming or not.
You can specify whether the whole XML document or only specified XML elements are to be presented by
JSON arrays.
All
All elements are presented as JSON arrays.
Specific Ones
Only the specified elements will be represented as JSON
arrays, the others as JSON objects.

Note
A JSON object is an unordered set of name/value
pairs that begins with { and ends with }. Each name
is followed by : and the name/value pairs are sepa­
rated by ,.
A JSON array is an ordered collection of values. An ar­
ray begins with [ and ends with ]. Values are sepa­
rated by ,.
Enter the absolute paths to the XML elements to be con­
verted to JSON arrays. Specify all elements with a multi­
plicity larger than one. Otherwise, it cannot be ensured
that streaming will result in a valid JSON document.
Familiarize yourself with streaming in the XML-to-JSON
converter, as documented in a separate topic.
7. Save the changes.
Related Information
Limitations for XML-to-JSON Conversion [page 234]
How Streaming in the XML-to-JSON Converter Works [page 235]
Conversion Rules for XML to JSON Conversion [page 233]
232
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.3.7.2.1 Conversion Rules for XML to JSON Conversion
To ensure a successful conversion from XML format to JSON format, you should make yourself familiar with
the conversion rules.
The conversion from XML format to JSON format follows the following rules:
● An element is represented as JSON member whose name is the concatenation of JSON prefix
corresponding to the XML namespace, JSON delimiter, and the element name. If the element has no
namespace, no prefix and JSON delimiter is added to the JSON name.
● JSON members whose names start with ‘@’ are transformed to XML attributes. For example, if the
member name is “@pre1.attr1”, if the JSON delimiter is ‘.’ and if there is a JSON prefix to namespace
mapping “pre1” to “https://test.com/”, then an XML attribute with local name “attr1” and
namespace “https://test.com/” is created.
JSON members whose name start with ‘@’ must appear at the beginning of the child members of the
parent member, for example:
 Sample Code
{"parent":{
"@attr1":123,
"@attr2":1234,
"id": "000039002",
"href": "",
"externalId": "Test_3"
}
}
This representation can be transformed because the “@attr1” and “@attr2” members appear at the
beginning of the child members of the “parent” member. The following example would result in the error
"Trying to write an attribute when there is no open start element" because the “@attr1” and “@attr2”
child members do not appear at the beginning of the child members of the “parent” member:
 Sample Code
{"parent":{
"id": "000039002",
"@attr1":123,
"href": "",
“@attr2”:1234,
"externalId": "Test_3"
}
}
● An element with no characters or child elements is represented by "element" : ""
● An element with multiple child elements of the same name is represented by an array. This also holds if
between the children with the same name other children with another name reside.
Example: <root><childA>A1</childA><childB>B</childB><childA>A2</childA></root> is
transformed in the non-streaming case to {"root":{"childA":["A1","A2"],"childB":"B"}},
which means that the order of the children is not preserved.
In the streaming case, the result is: {"root":{"childA":["A1"],"childB":"B","childA":
["A2"]"}}, which means that a non-valid JSON document is created because the member "childA"
appears twice.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
233
● The value of a complex element (having attributes for example) is represented by a separate member
"$":"value".
● Elements with mixed content (for example. <A>mixed1_value<B>valueB</B>mixed2_value</A>) are
not supported. Currently you get wrong results for XML to JSON: {"A":
{"B":"valueB","$":"mixed1_valuemixed2_value"}} in the non-streaming case or
{"A":"$":mixed1_value","B":"valueB","$":"mixed2_value"}} in the streaming case.
● All element/attribute values are transformed to JSON string.
● No namespace declaration is written into the JSON document.
● Tabs, spaces, new lines between elements and attributes are ignored. However, a white space value of an
element with simple type is represented in JSON; example <A> </A> is represented by "A":" ".
● If you have an element with namespace but without XML prefix whose namespace is not contained in the
XML-namespace-to-Json-prefix map, then you get an exception: <A xmlns="http://test"/> leads to
IllegalStateException Invalid JSON namespace: http://test.
This is not the case if you choose the streaming option. With streaming the namespace is just ignored: <A
xmlns="http://test"/>v</A> leads to {"A":"v"}.
● If you have an element with namespace and XML prefix whose namespace is not contained in the XMLnamespace-to-Json-prefix map then the XML prefix is used as JSON prefix <ns:A xmlns:ns:="http://
test"/> leads to "ns.A":"" (if JSON delimiter is '.').
Related Information
Define XML to JSON Converter [page 878]
How Streaming in the XML-to-JSON Converter Works [page 235]
Limitations for XML-to-JSON Conversion [page 234]
Example: Transformation to a JSON Message without Root Element Tag [page 238]
2.5.3.7.2.2 Limitations for XML-to-JSON Conversion
To ensure a successful conversion form XML to JSON format you have to know the limitations for this
conversion.
The XML to JSON conversion has the following limitations:
● The XML element and attribute names must not contain any delimiter characters, because the delimiter is
used in JSON to separate the prefix from the element name.
● Elements with mixed content are not supported.
● XML comments (<!-- comment -->) are not represented in the JSON document; they are ignored.
● DTD declarations are not represented in the JSON document; they are ignored.
● XML processing instructions are not represented in the JSON document; they are ignored.
● No conversion to JSON primitive types for XML to JSON. All XML element/attribute values are transformed
to a JSON string.
● Entity references (except the predefined entity references & < > " ') are not
represented in the JSON document; they are ignored.
234
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● If a sibling with another name resides between XML sibling nodes with the same name, then the order of
the siblings is not kept in JSON in the non-streaming case, because siblings with the same name are
represented by one array. Example: <root><childA>A1</childA><childB>B</
childB><childA>A2</childA></root> leads to {"root":{"childA":
["A1","A2"],"childB":"B"}}.
In the streaming case this leads to an invalid JSON document: {"root":{"childA":
["A1"],"childB":"B","childA":["A2"]}.
● If you have an element with a namespace but no XML prefix whose namespace is not contained in the XMLnamespace-to-JSON-prefix map, you get an exception: <A xmlns="http://test"/> -> IllegalStateException
Invalid JSON namespace: http://test.
If you choose the streaming option, the namespace is ignored: <A xmlns="http://test"/>v</A> leads
to {"A":"v"}.
Related Information
Define XML to JSON Converter [page 878]
Conversion Rules for XML to JSON Conversion [page 233]
How Streaming in the XML-to-JSON Converter Works [page 235]
Example: Transformation to a JSON Message without Root Element Tag [page 238]
2.5.3.7.2.3 How Streaming in the XML-to-JSON Converter
Works
During streaming the XML document is processed in parts or segments:
The individual tags of an XML document are processed consecutively,irrespective of where in the overall
structure the tag occurs and how often (multiplicity). This means that during the streaming process the
converter cannot know if an element occurs in the structure more than once. In other words, during the
streaming process the object model that reflects the overall structure of the XML document (and, therefore,
also all information that can only be derived from the object model, like the multiplicity of elements) is not in
place. This is different to the non-streaming case, where the converter can calculate the multiplicity of the XML
elements from the object model of the complete XML document. The multiplicity is needed to create a correct
JSON document. Elements whose multiplicity is greater than one must be transformed to a JSON member
with an array. For example, you may think that for the XML document <root><B>b1</B><B>b2</B></root>,
you create the JSON document {“root”:{“B”:”b1”,”B”:”b2”}}. However, this JSON document is invalid,
because the member name “B” occurs twice on the same hierarchy level.
To ensure nevertheless a conversion that creates correct JSON documents during streaming, you need to
either manually provide the information about which XML elements are multiple in advance, or decide that
every XML element is converted to a JSON array (when configuring the converter in the Integration Designer).
To illustrate this behavior, let’s consider how the following simple XML structure has to be converted to JSON:
<root>
<A>a</A>
<B>b1</B>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
235
<B>b2</B>
<C>c</C>
</root>
Note that the element root/B occurs twice (multiplicity = 2).
Without streaming, the converter would produce the following JSON structure:
{"root":{"A":"a","B":["b1","b2"],"C":"c"}}
As expected, the XML element root/B would transform into a JSON member with an array as value, where the
array has two values (b1 and b2) – according to the multiplicity of root/B. Note that a JSON array is indicated
by the following type of brackets: [ … ].
With streaming with all elements to JSON arrays, the converter would produce the following JSON structure:
{"root":[{"A":["a"],"B":["b1","b2"],"C":["c"]}]}
All XML elements are transformed into members with a JSON array as value.
With streaming and specific elements as arrays (where root/A and root/B are specified), the converter would
produce the following JSON structure:
{"root":{"A":["a"],"B":["b1","b2"],"C":"c"}}
An array is produced only for the XML elements root/A and root/B, but not for root/C.
With streaming and specific elements as arrays (where only root/A is specified), the converter would produce
the following invalid JSON structure:
{"root":{"A":["a"],"B":"b1",”B”:"b2","C":"c"}}
2.5.3.7.2.4 Example: Transformations from XML format to
JSON format with and without Namespace
Mapping
Whether you select the option Use Namespace Mapping or not, leads to different transformation results.
Using Namespace Mapping
Example
For this example we look at the following XML document:
xyz">
236
PUBLIC
<?xml version='1.0' encoding='UTF-8'?>
<n1:A xmlns:n1="http://com.sap/abc" xmlns:n2="http://com.sap/
<n2:B n2:attr1="1" attr2="2">valueB</n2:B>
<C>valueC1</C>
<C>valueC2</C>
<D/>
<E>valueE<E>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
</n1:A>
For the transformation of this document we choose the following settings:
● The character ':' is used as the JSON prefix separator.
● The option Use Namespace Mapping is selected.
● The XML-namespace-to-JSON-prefix mapping is as follows:
XML Namespace
JSON Prefix
http://com.sap/abc
abc
http://com.sap/xyz
xyz
We get the following JSON document:
{"abc:A":{"xyz:B":{"@xyz:attr1":"1","@attr2":"2","$":"valueB"},"C":
["valueC1","valueC2"],"D":"","E":"valueE"}}
 Note
Line breaks and spaces between the elements are ignored.
No Namespace Mapping
Example
For this example we look at the following XML document:
<?xml version='1.0' encoding='UTF-8'?>
<abc:A xmlns:abc="http://com.sap/abc"
xmlns:xyz="http://com.sap/xyz"><xyz:B xyz:attr1="1" attr2="2">valueB</
xyz:B><C>valueC1</C><C>valueC2</C><D/><E>valueE</E></abc:A>
For the transformation we choose the following settings:
● The character ':' is used as the JSON prefix separator.
● The option Use Namespace Mapping is not selected.
We get the following JSON Document:
{"A":{"B":{"@attr1":"1","@attr2":"2","$":"valueB"},"C":
["valueC1","valueC2"],"D":"","E":"valueE"}}
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
237
2.5.3.7.2.5 Example: Transformation to a JSON Message
without Root Element Tag
Examples and Special Cases of JSON Message without Root Element Tag
The following examples apply to XML-to-JSON conversion:
Example
The following example shows the transformation from XML to JSON (option Suppress JSON Root Element is
selected).
Input XML Message
<root>
</root>
<A>a</A>
<B>b</B>
<C>c</C>
<D>d</D>
Output JSON Message
{
}
"A":
"B":
"C":
"D":
"a",
"b",
"c",
"d"
Special Cases
Input XML Message: Root Element with Simple Value
<root>v</root>
Output JSON Message
"v"
Input XML Message: Root Element with no Value
<root></root>
Output JSON Message
""
238
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Input XML Message: Root Element with Simple Value (options Suppress JSON Root Element, Steaming All are
selected)
<root><A>a<A><B><C>c</C></B></root>
Output JSON Message
{"A":["a"],"B":[{"C":["c"]}]}
with dropRootElement=false
{"root":{["A":["a"],"B":[{"C":["c"]}]]}}
2.5.3.7.3
Defining EDI to XML Converter
The EDI to XML converter enables you to transform messages in EDI format to XML format. You can convert
EDIFACT and ASC-X12 format into XML format.
Context
 Note
Contact the SAP Cloud Integration Team to obtain EDI related XSD files.
Procedure
1. Open the integration flow in the Model Configuration editor.
2. Choose
pool.
Add Message Transformers
Converter
from the context menu of a connection within the
3. Choose Switch to EDI to XML Converter, from the context menu,.
4. On the EDI to XML Converter properties tab page, define the following parameters to convert the EDI data
format to XML data format.
Field
Description
Name
Enter the name of the converter.
Source Encoding
Select encoding format for the incoming payload.
EDI Schema Definition
Select the source of schema definition.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
239
Field
Description
Schemas
If you select Integration Flow as EDI Schema
Definition, then you can see the table Schemas, in
Properties view. Select the valid schemas against which
the conversion will take place.

Note
○
You can add XSD files to the integration flow. For
more details, please refer to the topic Validating
Message Payload against XML Schema, in de­
veloper's guide.
○
The file name of the xml schema for EDIFACT
should have the following format:
UN-EDIFACT_ORDERS_D96A.xsd
The file name comprises of following three parts
separated by '_':
○
First part "UN-EDIFACT" refers to the EDI
standard with organization name. This value
is fixed and cannot be customised.
○
Second part "ORDERS" refers to the mes­
sage type.
○
○
Third part "D96A" refers to the version .
The file name of the xml schema for ASC-X12
should have the following format:
ASC-X12_810_004010.xsd
The file name comprises of following three parts
separated by '_':
○
First part "ASC-X12" refers to the ASC-X12
standard with organization name. This value
is fixed and cannot be customised.
○
Second part "810" refers to the message
type.
○
○
Third part "004010" refers to the version .
The above mentioned values should match with
schema content.
240
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
HeaderName
If you select Header as EDI Schema Definition, then you
can see the field HeaderName, in Properties view. Enter a
valid header name for the field.

Note
This header name is fetched from camel header. The
header is added in script element. This script element
is added before converter element. You can add value
for this header in the script element.
For example, you can add the value, /xsd/UN-
EDIFACT_ORDERS_D96A.xsd for EDIFACT.
For example, you can add the value, /xsd/ASC-
X12_810_004010.xsd for ASC-X12.
5. Save the changes.
 Note
○ Any EDIFACT message is an interchange. An interchange can have multiple groups. And each
group consists of message types. For EDIFACT message, the EDI elements in SAP Cloud
Integration support only 1 message type per interchange but does not support any group segment
(GS) per interchange segment.
○ Any ASC-X12 message is an interchange. An interchange can have multiple groups. And each
group consists of transaction sets. For ASC-X12 message, the EDI elements in SAP Cloud
Integration support only 1 group segment (GS) per interchange segment and only 1 transaction set
(ST) per group segment.
○ SAP Cloud Integration does not support repetition characters. Repetition character is a single
character which separates the instances of a repeating data element. For example, ^ (caret sign) is
a repetition character.
 Note
EDI_Document_Number header contains document number for the incoming EDI file.
Example
● The following example shows the transformation from EDI to XML format of EDIFACT message.
Input sample EDIFACT EDI Message
UNA:+.? '
UNB+UNOC:3+SENDERABC:14:XXXX+ReceiverXYZ:14:YYYYY+150831:1530+1+HELLO WORLD++A
+++1'
UNH+1+ORDERS:D:96A:UN++2'
BGM+220+MY_ID+9+NA'
DTM+137:201507311500:203'
DTM+2:201508010930:203'
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
241
CNT+16:10'
UNT+5+1'
UNZ+1+1'
Output sample EDIFACT XML Message
<?xml version="1.0" encoding="UTF-8"?><Interchange>
<S_UNA>:+.? '</S_UNA>
<S_UNB>
<C_S001>
<D_0001>UNOC</D_0001>
<D_0002>3</D_0002>
</C_S001>
<C_S002>
<D_0004>SENDERABC</D_0004>
<D_0007>14</D_0007>
<D_0008>XXXX</D_0008>
</C_S002>
<C_S003>
<D_0010>ReceiverXYZ</D_0010>
<D_0007>14</D_0007>
<D_0014>YYYYY</D_0014>
</C_S003>
<C_S004>
<D_0017>150831</D_0017>
<D_0019>1530</D_0019>
</C_S004>
<D_0020>1</D_0020>
<C_S005>
<D_0022>HELLO WORLD</D_0022>
</C_S005>
<D_0029>A</D_0029>
<D_0035>1</D_0035>
</S_UNB>
<M_ORDERS>
<S_UNH>
<D_0062>1</D_0062>
<C_S009>
<D_0065>ORDERS</D_0065>
<D_0052>D</D_0052>
<D_0054>96A</D_0054>
<D_0051>UN</D_0051>
</C_S009>
<C_S010>
<D_0070>2</D_0070>
</C_S010>
</S_UNH>
<S_BGM>
<C_C002>
<D_1001>220</D_1001>
</C_C002>
<D_1004>MY_ID</D_1004>
<D_1225>9</D_1225>
<D_4343>NA</D_4343>
</S_BGM>
<S_DTM>
<C_C507>
<D_2005>137</D_2005>
<D_2380>201507311500</D_2380>
<D_2379>203</D_2379>
</C_C507>
</S_DTM>
<S_DTM>
<C_C507>
<D_2005>2</D_2005>
<D_2380>201508010930</D_2380>
<D_2379>203</D_2379>
242
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
</C_C507>
</S_DTM>
<S_CNT>
<C_C270>
<D_6069>16</D_6069>
<D_6066>10</D_6066>
</C_C270>
</S_CNT>
<S_UNT>
<D_0074>5</D_0074>
<D_0062>1</D_0062>
</S_UNT>
</M_ORDERS>
<S_UNZ>
<D_0036>1</D_0036>
<D_0020>1</D_0020>
</S_UNZ>
</Interchange>
● The following example shows the transformation from EDI to XML format of ASC-X12 message.
Input sample ASC-X12 EDI Message
 Sample Code
ISA*00*
*00*
*01*784849291
*01*315029991
*051007*0928*/*4010 *000000001*0*P*^~
GS*PO*784849291*315029991*20051007*0928*1*U*004010~
ST*850*10001~
BEG*00*NE*228914**20051006~
CUR*BY*EUR*0100~
N1*SF*BEHR SERVICE GMBH*92*1939~
N1*ST*BEHR SERVICE AMERICA*92*1939~
PO1*10000*17*EA*91.8074*EA*BP*2112910003*PD*Radiator~
LIN**MF*2109308~
SCH*17*EA***002*20060401~
CTT*1~
SE*10*10001~
GE*1*1~
IEA*1*000000001~
Output sample ASC-X12 XML Message
<?xml version="1.0" encoding="UTF-8"?><ns0:Interchange
xmlns:ns0="urn:sap.com:typesystem:b2b:116:asc-x12:850:004010">
<S_ISA>
<D_I01>00</D_I01>
<D_I02>
</D_I02>
<D_I03>00</D_I03>
<D_I04>
</D_I04>
<D_I05_1>01</D_I05_1>
<D_I06>784849291
</D_I06>
<D_I05_2>01</D_I05_2>
<D_I07>315029991
</D_I07>
<D_I08>051007</D_I08>
<D_I09>0928</D_I09>
<D_I10>/</D_I10>
<D_I11>4010 </D_I11>
<D_I12>000000001</D_I12>
<D_I13>0</D_I13>
<D_I14>P</D_I14>
<D_I15>^</D_I15>
</S_ISA>
<S_GS>
<D_479>PO</D_479>
<D_142>784849291</D_142>
<D_124>315029991</D_124>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
243
<D_373>20051007</D_373>
<D_337>0928</D_337>
<D_28>1</D_28>
<D_455>U</D_455>
<D_480>004010</D_480>
</S_GS>
<M_850>
<S_ST>
<D_143>850</D_143>
<D_329>10001</D_329>
</S_ST>
<S_BEG>
<D_353>00</D_353>
<D_92>NE</D_92>
<D_324>228914</D_324>
<D_373>20051006</D_373>
</S_BEG>
<S_CUR>
<D_98_1>BY</D_98_1>
<D_100_1>EUR</D_100_1>
<D_280>0100</D_280>
</S_CUR>
<G_N1>
<S_N1>
<D_98_1>SF</D_98_1>
<D_93>BEHR SERVICE GMBH</D_93>
<D_66>92</D_66>
<D_67>1939</D_67>
</S_N1>
</G_N1>
<G_N1>
<S_N1>
<D_98_1>ST</D_98_1>
<D_93>BEHR SERVICE AMERICA</D_93>
<D_66>92</D_66>
<D_67>1939</D_67>
</S_N1>
</G_N1>
<G_PO1>
<S_PO1>
<D_350>10000</D_350>
<D_330>17</D_330>
<D_355>EA</D_355>
<D_212>91.8074</D_212>
<D_639>EA</D_639>
<D_235_1>BP</D_235_1>
<D_234_1>2112910003</D_234_1>
<D_235_2>PD</D_235_2>
<D_234_2>Radiator</D_234_2>
</S_PO1>
<S_LIN>
<D_235_1>MF</D_235_1>
<D_234_1>2109308</D_234_1>
</S_LIN>
<G_SCH>
<S_SCH>
<D_380>17</D_380>
<D_355>EA</D_355>
<D_374_1>002</D_374_1>
<D_373_1>20060401</D_373_1>
</S_SCH>
</G_SCH>
</G_PO1>
<G_CTT>
<S_CTT>
<D_354>1</D_354>
</S_CTT>
</G_CTT>
244
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
<S_SE>
<D_96>10</D_96>
<D_329>10001</D_329>
</S_SE>
</M_850>
<S_GE>
<D_97>1</D_97>
<D_28>1</D_28>
</S_GE>
<S_IEA>
<D_I16>1</D_I16>
<D_I12>000000001</D_I12>
</S_IEA>
</ns0:Interchange>
2.5.3.7.4
Defining XML to EDI Converter
The XML to EDI converter transforms a message in XML format to EDI format. You can convert EDIFACT and
ASC-X12 format into XML format.
Context
 Note
Contact the SAP Cloud Integration Team to obtain EDI related XSD files.
Procedure
1. Open the integration flow in the Model Configuration editor.
2. Choose
pool.
Add Message Transformers
Converter
from the context menu of a connection within the
3. Choose Switch to XML to EDI Converter, from the context menu,.
4. Provide values in fields based on description in table:
Tab
Field
Description
General
Name
Enter a name for the flow step.
EDIFACT
Source Encoding
Select encoding format for the incom­
ing payload.
EDI Schema Definition
Select the source of schema definition.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
245
Tab
Field
Schemas
Description
If you select Integration Flow as EDI
Schema Definition, then you can see
the table Schemas, in Properties view.
Select the valid schemas against
which the conversion will take place.

Note
○
You can add XSD files to the
integration flow. For more de­
tails, please refer to the topic
Validating Message Payload
against XML Schema.
○
The file name of the xml
schema for ASC-X12 should
have the format, ASCX12_810_004010.xsd. It con­
tains three parts separated
by _:
○
246
PUBLIC
○
First part ASC-X12 refers
to the ASC-X12 standard
with organization name.
This value is fixed and
cannot be customised.
○
Second part 810 refers
to the message type.
○
Third part 004010 refers
to the version.
The aforementioned values
should match with the
schema content.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Tab
Field
Description
HeaderName
If you select Header as EDI Schema
Definition, then you can see the field
HeaderName, in Properties view. Enter
a valid header name for the field.

Note
This header name is fetched from
Camel header. The header is
added in script element. This
script element is added before
the converter element. You can
add value for this header in the
script element.
For example, you can add the
value, /xsd/UN-
EDIFACT_ORDERS_D96A.xs
d.
Use Custom Separators
Select this option if you want to spec­
ify which separators are to be used in
the converted message. You can se­
lect the characters available in the
dropdown list for each separator.

Note
You can also manually specify the
custom separator.
○
Enter the hexadecimal value
for the separator you want to
use in the respective field.
For example, enter #x2b to
use + as the separator.
○
Enter the header value to
fetch the sepatator from
header. For example, $
{header.HEADER_NAME
}
X12
Source Encoding
Select encoding format for the incom­
ing payload.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
247
Tab
Field
Description
EDI Schema Definition
If you select Integration Flow as EDI
Schema Definition, then you can see
the table Schemas, in Properties view.
Select the valid schemas against
which the conversion will take place.

Note
○
You can add XSD files to the
integration flow. For more de­
tails, please refer to the topic
Validating Message Payload
against XML Schema, in de­
veloper's guide.
○
The file name of the xml
schema for ASC-X12 should
have the format, ASCX12_810_004010.xsd. It con­
tains three parts separated
by _:
○
First part ASC-X12 refers
to the ASC-X12 standard
with organization name.
This value is fixed and
cannot be customised.
○
Second part 810 refers
to the message type.
○
Third part 004010 refers
to the version.
○
The aforementioned values
should match with the
schema content.
○
During runtime only XSD’s
from Integration Advisor (IA)
are supported.
248
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Tab
Field
Description
Header Name
If you select Header as EDI Schema
Definition, then you can see the field
HeaderName, in Properties view. Enter
a valid header name for the field.

Note
This header name is fetched from
camel header. The header is
added in script element. This
script element is added before
converter element. You can add
value for this header in the script
element.
For example, you can add the
value, /xsd/ASC-
X12_810_004010.xsd.
Use Custom Separators
Select this option if you want to spec­
ify which separators are to be used in
the converted message. You can se­
lect the characters available in the
dropdown list for each separator.

Note
You can also manually specify the
custom separator.
○
Enter the hexadecimal value
for the separator you want to
use in the respective field.
For example, enter #x2b to
use + as the separator.
○
Enter the header value to
fetch the sepatator from
header. For example, $
{header.HEADER_NAME
}
5. Save the changes.
 Note
○ Any EDIFACT message is an interchange. An interchange can have multiple groups. And each
group consists of message types. For EDIFACT message, the EDI elements in SAP Cloud
Integration support only 1 message type per interchange but does not support any group segment
(GS) per interchange segment.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
249
○ Any ASC-X12 message is an interchange. An interchange can have multiple groups. And each
group consists of transaction sets. For ASC-X12 message, the EDI elements in SAP Cloud
Integration support only 1 group segment (GS) per interchange segment and only 1 transaction set
(ST) per group segment.
○ SAP Cloud Integration does not support repetition characters. Repetition character is a single
character which separates the instances of a repeating data element. For example, ^ (caret sign) is
a repetition character.
○ SAP Cloud Integration generates EDI file which uses the following separators for EDIFACT
message:
○ Data Element separator +
○ Component Data Element separator :
○ Segment separator ‘
○ SAP Cloud Integration generates EDI file which uses the following separators for ASC-X12
message:
○ Data Element separator *
○ Component Data Element separator :
○ Segment separator ~
 Note
EDI_Document_Number header contains document number for the incoming EDI file.
Example
● The following example shows the transformation from XML to EDI format of EDIFACT message.
Input sample EDIFACT XML Message
<?xml version="1.0" encoding="UTF-8"?><Interchange>
<S_UNA>:+.? '</S_UNA>
<S_UNB>
<C_S001>
<D_0001>UNOC</D_0001>
<D_0002>3</D_0002>
</C_S001>
<C_S002>
<D_0004>SENDERABC</D_0004>
<D_0007>14</D_0007>
<D_0008>XXXX</D_0008>
</C_S002>
<C_S003>
<D_0010>ReceiverXYZ</D_0010>
<D_0007>14</D_0007>
<D_0014>YYYYY</D_0014>
</C_S003>
<C_S004>
<D_0017>150831</D_0017>
<D_0019>1530</D_0019>
</C_S004>
<D_0020>1</D_0020>
<C_S005>
<D_0022>HELLO WORLD</D_0022>
</C_S005>
<D_0029>A</D_0029>
250
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
<D_0035>1</D_0035>
</S_UNB>
<M_ORDERS>
<S_UNH>
<D_0062>1</D_0062>
<C_S009>
<D_0065>ORDERS</D_0065>
<D_0052>D</D_0052>
<D_0054>96A</D_0054>
<D_0051>UN</D_0051>
</C_S009>
<C_S010>
<D_0070>2</D_0070>
</C_S010>
</S_UNH>
<S_BGM>
<C_C002>
<D_1001>220</D_1001>
</C_C002>
<D_1004>MY_ID</D_1004>
<D_1225>9</D_1225>
<D_4343>NA</D_4343>
</S_BGM>
<S_DTM>
<C_C507>
<D_2005>137</D_2005>
<D_2380>201507311500</D_2380>
<D_2379>203</D_2379>
</C_C507>
</S_DTM>
<S_DTM>
<C_C507>
<D_2005>2</D_2005>
<D_2380>201508010930</D_2380>
<D_2379>203</D_2379>
</C_C507>
</S_DTM>
<S_CNT>
<C_C270>
<D_6069>16</D_6069>
<D_6066>10</D_6066>
</C_C270>
</S_CNT>
<S_UNT>
<D_0074>5</D_0074>
<D_0062>1</D_0062>
</S_UNT>
</M_ORDERS>
<S_UNZ>
<D_0036>1</D_0036>
<D_0020>1</D_0020>
</S_UNZ>
</Interchange>
Output sample EDIFACT EDI Message
UNA:+.? '
UNB+UNOC:3+SENDERABC:14:XXXX+ReceiverXYZ:14:YYYYY+150831:1530+1+HELLO WORLD++A
+++1'
UNH+1+ORDERS:D:96A:UN++2'
BGM+220+MY_ID+9+NA'
DTM+137:201507311500:203'
DTM+2:201508010930:203'
CNT+16:10'
UNT+5+1'
UNZ+1+1'
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
251
● The following example shows the transformation from XML to EDI format of ASC-X12 message.
Input sample ASC-X12 XML Message
<?xml version="1.0" encoding="UTF-8"?><ns0:Interchange
xmlns:ns0="urn:sap.com:typesystem:b2b:116:asc-x12:850:004010">
<S_ISA>
<D_I01>00</D_I01>
<D_I02>
</D_I02>
<D_I03>00</D_I03>
<D_I04>
</D_I04>
<D_I05_1>01</D_I05_1>
<D_I06>784849291
</D_I06>
<D_I05_2>01</D_I05_2>
<D_I07>315029991
</D_I07>
<D_I08>051007</D_I08>
<D_I09>0928</D_I09>
<D_I10>/</D_I10>
<D_I11>4010 </D_I11>
<D_I12>000000001</D_I12>
<D_I13>0</D_I13>
<D_I14>P</D_I14>
<D_I15>^</D_I15>
</S_ISA>
<S_GS>
<D_479>PO</D_479>
<D_142>784849291</D_142>
<D_124>315029991</D_124>
<D_373>20051007</D_373>
<D_337>0928</D_337>
<D_28>1</D_28>
<D_455>U</D_455>
<D_480>004010</D_480>
</S_GS>
<M_850>
<S_ST>
<D_143>850</D_143>
<D_329>10001</D_329>
</S_ST>
<S_BEG>
<D_353>00</D_353>
<D_92>NE</D_92>
<D_324>228914</D_324>
<D_373>20051006</D_373>
</S_BEG>
<S_CUR>
<D_98_1>BY</D_98_1>
<D_100_1>EUR</D_100_1>
<D_280>0100</D_280>
</S_CUR>
<G_N1>
<S_N1>
<D_98_1>SF</D_98_1>
<D_93>BEHR SERVICE GMBH</D_93>
<D_66>92</D_66>
<D_67>1939</D_67>
</S_N1>
</G_N1>
<G_N1>
<S_N1>
<D_98_1>ST</D_98_1>
<D_93>BEHR SERVICE AMERICA</D_93>
<D_66>92</D_66>
<D_67>1939</D_67>
</S_N1>
</G_N1>
<G_PO1>
<S_PO1>
252
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
<D_350>10000</D_350>
<D_330>17</D_330>
<D_355>EA</D_355>
<D_212>91.8074</D_212>
<D_639>EA</D_639>
<D_235_1>BP</D_235_1>
<D_234_1>2112910003</D_234_1>
<D_235_2>PD</D_235_2>
<D_234_2>Radiator</D_234_2>
</S_PO1>
<S_LIN>
<D_235_1>MF</D_235_1>
<D_234_1>2109308</D_234_1>
</S_LIN>
<G_SCH>
<S_SCH>
<D_380>17</D_380>
<D_355>EA</D_355>
<D_374_1>002</D_374_1>
<D_373_1>20060401</D_373_1>
</S_SCH>
</G_SCH>
</G_PO1>
<G_CTT>
<S_CTT>
<D_354>1</D_354>
</S_CTT>
</G_CTT>
<S_SE>
<D_96>10</D_96>
<D_329>10001</D_329>
</S_SE>
</M_850>
<S_GE>
<D_97>1</D_97>
<D_28>1</D_28>
</S_GE>
<S_IEA>
<D_I16>1</D_I16>
<D_I12>000000001</D_I12>
</S_IEA>
</ns0:Interchange>
Output sample ASC-X12 EDI Message
ISA*00*
*00*
*01*784849291
*01*315029991
*051007*0928*/*4010 *000000001*0*P*^~
GS*PO*784849291*315029991*20051007*0928*1*U*004010~
ST*850*10001~
BEG*00*NE*228914**20051006~
CUR*BY*EUR*0100~
N1*SF*BEHR SERVICE GMBH*92*1939~
N1*ST*BEHR SERVICE AMERICA*92*1939~
PO1*10000*17*EA*91.8074*EA*BP*2112910003*PD*Radiator~
LIN**MF*2109308~
SCH*17*EA***002*20060401~
CTT*1~
SE*10*10001~
GE*1*1~
IEA*1*000000001~
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
253
2.5.3.8
Defining Script
Context
You use this task to execute custom Java script or Groovy script for message processing. SAP Cloud
Integration provides a Java API to support this use case.
 Note
Note that data written into the message header at a certain processing step (for example, in a Content
Modifier or Script step) will also be part of the outbound message addressed to a receiver system. Because
of this, it is important to consider the following restriction regarding the header size if you use an HTTPbased receiver adapter:
If the message header exceeds 8 KB, it might lead to situations that the receiver cannot accept the inbound
call (relevant for all http-based receiver adapters).
 Note
The Java standard libraries of Java 8 can be used.
Cloud Integration supports the XML Document Object Model (DOM) to process XML documents.
 Note
Any application that parses XML data is prone to the risk of XML External Entity (XXE) Processing attacks.
More information: https://www.owasp.org/index.php/XML_External_Entity_%28XXE%29_Processing
To overcome this issue, you should take the following measures to protect integration flows that contain
Script steps (using Groovy script or Java Script) against XXE Processing attacks:
● Do not use XML parsing (for example, DocumentBuilderFactory) at all or
● Switch off the processing of external entities as described at https://www.owasp.org/index.php/
XML_External_Entity_%28XXE%29_Prevention_Cheat_Sheet#Java .
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Add script in the integration flow, choose Add Message Transformers>Script from the context menu of a
connection within the pool.
3. Select the added script in the integration flow model to configure it.
4. If you already have an existing java script or groovy script, copy it to the folder src.main.resources.script. To
assign this script, choose Assign Script from the context menu of the Script element.
254
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
5. To create a new java script or groovy script, choose New Script from the context menu of the Script
element.
6. In the Properties view, specify the script step name in Name.
7. In the Properties view, specify a custom function that will take the “message” object as the argument in
Script Function.
In the script you require Script Function, which will be executed at runtime. The function definition is as
follows:
import com.sap.gateway.ip.core.customdev.util.Message
def Message processData(Message message) {
def body = message.getBody()
//modify body
message.setBody(body + "enhancements")
//modify headers
def map = message.getHeaders()
def value = map.get("oldHeader");
message.setHeader("oldHeader", value + "modified")
message.setHeader("newHeader", "headerValue")
}
//modify properties
map = message.getProperties()
value = map.get("oldProperty")
message.setProperty("oldProperty", value + "modified")
message.setProperty("newProperty", "script")
return message
8. Add or modify Header, Body, and Property by using the interfaces below on the "message" object.
1. You can use the following interfaces for Header:
○ public java.util.Map<java.lang.String,java.lang.Object> getHeaders()
○ public void setHeaders(java.util.Map<java.lang.String,java.lang.Object> exchangeHeaders)
○ public void setHeader(java.lang.String name, java.lang.Object value)
2. You can use the following interfaces for Body:
○ public java.lang.Object getBody()
○ public void setBody(java.lang.Object exchangeBody)
○ public java.lang.Object getBody(java.lang.String fullyQualifiedClassName)
 Note
SAP Cloud Integration framework supports conversion of payload into the following formats:
○ String
○ InputStream
○ byte[]
To convert the payload into String or InputStream use the following fullyQualifiedClassName:
○ java.lang.String
○ java.io.InputStream
To convert the payload into byte[] use the following:
○ For groovy script - def body = message.getBody(java.lang.String) as byte[]
○ For java script - var body = [message.getBody()]
3. You can use the following interfaces for Property:
○ public java.util.Map<java.lang.String,java.lang.Object> getProperties()
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
255
○ public void setProperties(java.util.Map<java.lang.String,java.lang.Object> exchangeProperties)
○ public void setProperty(java.lang.String name, java.lang.Object value)
4. You can use the following interfaces for Attachment:
○ public java.util.Map<java.lang.String,javax.activation.DataHandler> getAttachments()
○ public void setAttachments(Map<java.lang.String, javax.activation.DataHandler>)
 Note
○ You can now use content assist feature for groovy script which means that you can view list of
existing methods of message class, once you start typing initial letters of the required method. You
can add content assist jar file in integration project to use this feature. Please refer to https://
tools.hana.ondemand.com/#cloudintegration to download the file.
○ You should not add or modify a Property name starting with sap.
○ If no Script Function is specified in the script flow step, the Script Function name will be
processData by default.
 Caution
When converting parts of the message object like the body or even headers or properties into a string
(as string) or into a byte array (as byte[]) please consider copies of the existing data is created which
requires extra memory. This resource consumption may even exceed the memory size of the original
object if string conversion is executed.
Example:
def body = message.getBody(java.lang.String) as String;
Depending on the size of the object byte[] or string conversion can endanger worker node of OOM
failure. Please consciously decide which part of the message object should be converted.
9. If you want to access the security artifacts such as secure store and keystore that are deployed using the
deployment wizard, refer the table below:
256
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Artifact Type
Sample Groovy Script
Secure Store
Import packages
import com.sap.it.api.ITApiFactory;
import com.sap.it.api.securestore.SecureStoreService;
import com.sap.it.api.securestore.UserCredential;
import
com.sap.it.api.securestore.exception.SecureStoreException;

Sample Code
def service =
ITApiFactory.getApi(SecureStoreService.class, null);
if( service != null)
{
//Get UserCredential containing user credential
details deployed on the node with the given alias.
def credential =
service.getUserCredential(aliasname);
}
Keystore
Import packages
import com.sap.it.api.ITApiFactory;
import com.sap.it.api.keystore.KeystoreService;
import com.sap.it.api.keystore.exception.KeystoreException;

Sample Code
def service = ITApiFactory.getApi(KeystoreService.class,
null);
if( service != null)
{
//Get all trust manager implementation instances
using the service for the default trust store
def trustmanager = service.getTrustManagers();
//Get all KeyManager implementation instances using
the service
}
def keymanagers = service.getKeyManagers(alias);
……………………………
10. If you want to access artificats like value mapping, number ranges refer to the table below:
Artifact
Sample Script
Value Mapping
Import packages
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
257
Artifact
Sample Script
import com.sap.it.api.ITApiFactory;
import
com.sap.it.api.keystore.KeystoreService
;
import
com.sap.it.api.keystore.exception.Keyst
oreException;

Sample Code
def service =
ITApiFactory.getApi(KeystoreServic
e.class, null);
if( service != null)
{
//Get all trust manager
implementation instances using
the service for the default trust
store
def trustmanager =
service.getTrustManagers();
//Get all KeyManager
implementation instances using
the service
def keymanagers =
service.getKeyManagers(alias);
……………………………
}
11. Save the changes.
 Note
○ The script should be saved in the src.main.resources.script folder.
○ In the Properties view, you can also choose Browse to select java scripts or groovy scripts for
custom processing.
○ You can also store external jar(s) in src.main.resources.lib. You can then invoke functions from
these external jar(s) in the script.
Next Steps
There are the following additional Java interfaces for the message processing log (MPL) which you can address
with the script step (either in Groovy Script or JavaScript):
● MessageLogFactory
Provides access to the message processing log.
258
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● MessageLog
Supports writing properties and adding attachments to the message processing log.
The interface MessageLogFactory can be used through the variable messageLogFactory in order to
retrieve an instance of MessageLog.
You can use the following methods in an instance of MessageLog in order to set a property of a given type in
the message processing log:
● void setStringProperty(String name, String value)
● void setIntegerProperty(String name, Integer value)
● void setLongProperty(String name, Long value)
● void setBooleanProperty(String name, Boolean value)
● void setFloatProperty(String name, Float value)
● void setDoubleProperty(String name, Double value)
● void setDateProperty(String name, Date value)
You can use the following method in an instance of MessageLog in order to add string to an attachment using
message processing log:
● void addAttachmentAsString(String name, String text, String mediaType)
You can use the following method in an instance of MessageLog in order to add, set, get, remove headers to/
from an attachment using message processing log:
● void addAttachmentHeader(String headerName, String headerValue,AttachmentWrapper
attachment)
● void setAttachmentHeader(String headerName, String headerValue,AttachmentWrapper
attachment)
● getAttachmentHeader(String headerName,AttachmentWrapper attachment)
● void removeAttachmentHeader(String headerName, AttachmentWrapper attachment);
You can use the following method in an instance of MessageLog in order to add, set attachment objects as a
map using message processing log:
● Map<String, AttachmentWrapper> getAttachmentWrapperObjects()
● void setAttachmentWrapperObjects(Map<String, AttachmentWrapper>
attachmentObjects)
● void addAttachmentObject(String id, AttachmentWrapper content)
Use method addAttachmentAsString to add a longer, structured document to the message processing log
(MPL). Use method setStringProperty only for short strings (containing one or a few words).
If the value "null" is specified for the parameter mediaType, then the value "text/plain" is assumed as
media type.”
As an example, the following code lines allow you to set a string property:
Groovy:
def messageLog = messageLogFactory.getMessageLog(message)
messageLog.setStringProperty("Greeting", "Hello World!")
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
259
JavaScript:
var messageLog = messageLogFactory.getMessageLog(message)
messageLog.setStringProperty("Greeting", "Hello World!")
 Caution
Note that the properties provided by the script step are displayed in alphabetical order in the resulting
message processing log (MPL). That means that the sequence of properties in the MPL does not
necessarily reflect the sequence applied in the script.
Related Information
Avoiding Encoding Issues [page 863]
2.5.3.8.1
Script Example for Exception Handling in HTTP
Receiver
You can use the Script step to identify exceptions that arise when sending messages using the HTTP receiver
adapter.
This Groovy Script example performs the following tasks:
● Saves the value of HTTP response as a message attachment
● Copies the value of the HTTP error to property http.ResponseBody
● Copies the value of the HTTP error to the message body
● Copies the HTTP error text and error code to exchange properties
 Sample Code
import com.sap.gateway.ip.core.customdev.util.Message;
def Message processData(Message message) {
// get a map of properties
def map = message.getProperties();
// get an exception java class instance
def ex = map.get("CamelExceptionCaught");
if (ex!=null) {
// an http adapter throws an instance of
org.apache.camel.component.ahc.AhcOperationFailedException
if
(ex.getClass().getCanonicalName().equals("org.apache.camel.component.ahc.AhcOp
erationFailedException")) {
response as a message attachment
messageLogFactory.getMessageLog(message);
260
PUBLIC
// save the http error
def messageLog =
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
messageLog.addAttachmentAsString("http.ResponseBody", ex.getResponseBody(),
"text/plain");
// copy the http error
response to an exchange property
message.setProperty("http.ResponseBody",ex.getResponseBody());
// copy the http error
response to the message body
message.setBody(ex.getResponseBody());
error code (i.e. 500) to a property
// copy the value of http
message.setProperty("http.StatusCode",ex.getStatusCode());
// copy the value of http
error text (i.e. "Internal Server Error") to a property
message.setProperty("http.StatusText",ex.getStatusText());
}
}
return message;
}
 Note
Make sure to call the Script step in an exception subprocess.
2.5.4 Defining Message Persistence
Context
Procedure
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
261
2.5.4.1
Defining Data Store Operations
You can use the transient data store to temporarily store messages.
Context
The transient data store (data store for sakes of simplicity) supports four types of operations:
Data Store Operations
Operation
Used to ...
Write
Store the messages temporarily in the data store.
If you use a Write operation, you can store the messages in the data store by configuring the data store
name and a unique Entry ID.
Delete
Trigger the deletion of messages in the data store.
Select
Fetch messages in bulk from the data store.
You can also specify the number of messages you fetch in each poll.
If you use Select operation, you can transfer only overwritten data fetched from the data store.
Get
Fetch a specific message from the data store.
 Note
A data store operations step has to be triggered explicitly, for example, by a Timer event.
Next Steps
You can display the content of the data store in the Data Store Viewer of the Integration Operations feature.
 Note
● In the case of Select operations, you can select multiple messages. The content of the selected
messages will appear in the following format:
<messages>
<message id=”<Entry ID>”>
<Content of selected message>
</message>
<message id=”<Entry ID>”>
………..
……….
……….
</message>
262
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
<message id=”<Entry ID>”>
………..
……….
……….
</message>
</messages>
Related Information
Defining Data Store Select Operations [page 263]
Defining Data Store Write Operations [page 265]
Defining Data Store Get Operations [page 267]
Defining Data Store Delete Operations [page 269]
2.5.4.1.1
Defining Data Store Select Operations
You can perform a select operation on the transient data store.
Context
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a Data Store Operations step to the integration flow, choose Add Message Persistence>Data Store Operations from the context menu of a connection within the pool.
 Note
Adding data store operations enables Write operations by default. Click the Switch to option to choose
the Select operation.
3. Enter the attributes of the step.
 Note
When retrieving a message body from a data store operation, only XML is supported.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
263
Attribute
Description
Data Store Name
Specifies the name of the data store (no white spaces).
You can dynamically define the data store name based on a header or exchange
property. Use the format ${header.headername} to dynamically read the
name from a header, or ${property.propertyname} to read it from an
exchange property.
The maximum length allowed for the data store name is 40 characters. If you enter
a longer string, a validation error is raised. Note that this length restriction applies
to the value that is used for this parameter at runtime. Therefore, if you configure
this parameter dynamically, make sure that the expected header or property value
does not exceed this length restriction. Otherwise, a runtime error will be raised.
Visibility
Defines whether the data store is shared by all integration flows (deployed on the
tenant) or only by one specific integration flow.
○
Global: Data store is shared across all integration flows deployed on the
tenant.
○
Number of Polled Messages
Integration Flow: Data store is used by one integration flow.
Specifies the maximum number of messages to be fetched from the data store
within one poll (default is 1).
If the number of messages fetched per poll is specified in the header
SapDataStoreMaxResults, the header takes the precedence.
You can also configure this property in such a way that the number of fetched
messages per poll is dynamically evaluated at runtime based on the incoming
message. To do this, you can enter the following kind of expressions:
○
${header.headername} to dynamically retrieve the number of fetched
messages per poll from the message header
○
${xpath.<xpath>} to dynamically retrieve the number of fetched
messages per poll from an element in the message indicated by an xPath
expression
Delete on Completion
Select this option to delete a message from the data store after having
successfully processed the message.
4. Save the changes.
Results
There is no in-order processing of data store entries. In other words, the sequence of data store entries
selected with a Select operation is random and non-deterministic. If you have restricted the number of
entries to be fetched (with the Number of Polled Messages attribute), the selection of retrieved entries is also
random.
264
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Related Information
Dynamic Parameters (Example) [page 15]
2.5.4.1.2
Defining Data Store Write Operations
You can perform a select operation on the transient data store.
Context
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a Data Store Operations step to the integration flow, choose Add Message Persistence>Data Store Operations from the context menu of a connection within the pool.
 Note
Adding data store operations enables Write operations by default.
The data store write operation stores the payload only, not the headers.
Headers are only stored if they are primitive data types, serializable standard data types (such as
strings), or lists/sets of these entities. Any other data types do remain part of the processed message,
but are not considered during a data store operation and so cannot be retrieved from the data store in
subsequent steps.
3. Enter the attributes of the step.
Attribute
Description
Data Store Name
Specifies the name of the data store (no white spaces).
You can dynamically define the data store name based on a header or exchange
property. Use the format ${header.headername} to dynamically read the
name from a header, or ${property.propertyname} to read it from an
exchange property.
The maximum length allowed for the data store name is 40 characters. If you enter
a longer string, a validation error is raised. Note that this length restriction applies
to the value that is used for this parameter at runtime. Therefore, if you configure
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
265
Attribute
Description
this parameter dynamically, make sure that the expected header or property value
does not exceed this length restriction. Otherwise, a runtime error will be raised.
Visibility
Defines whether the data store is shared by all integration flows (deployed on the
tenant) or only by one specific integration flow.
○
Global: Data store is shared across all integration flows deployed on the
tenant.
○
Entry ID
Integration Flow: Data store is used by one integration flow.
Specify an entry ID that will be stored together with the message content.
Details for the entry ID are read from the incoming message. You can enter the
following kinds of expressions:
○
${header.headername} to dynamically generate the entry ID from the
message header
○
${property.propertyname} to dynamically generate the entry ID from
the exchange property of the message
○
${xpath.<xpath>} to dynamically generate the entry ID from an element
in the message indicated by an xPath expression
Example: ${xpath./CustomerReviews/CustomerReview/
ProductId}
When you dynamically define the Entry ID value for a Data Store Delete
operation, note that you use the following kind of XPath expression;
otherwise, the scenario will not work as expected.
${xpath./CustomerReviews/CustomerReview/ProductId/
text()}
In the case of Write operations, if the Entry ID is not defined, the data store
component uses the value of the SapDataStoreId header as the entry ID. If
this header is not defined, the data store component generates an entry ID and
sets the SapDataStoreId header with the generated value.

Tip
If you like the system to generate an entry ID for the data store operation,
remove the header SapDataStoreId before the data store write step and
leave the Entry ID field in the data store empty.
In the case of Delete and Get operations, you can explicitly define an Entry ID or
pass the header SapDataStoreId.
Retention Threshold for Alerting
Time period (in days) within which the messages have to be fetched before an alert
in (d)
is raised.
Expiration Period in (d)
Number of days after which the stored messages are deleted (default is 90 days,
maximum possible value is 180 days).
266
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Attribute
Description
The minimum value of Expiration Period should be at least twice that of Retention
Threshold for Alerting.
Encrypt Stored Message
Select this option to encrypt the message in the data store.
Overwrite Existing Message
Select this option to overwrite an existing message in the data store.
Trying to overwrite an existing entry without having this option selected will result
in a DuplicateEntryException.
Include Message Headers
Select this option to store message headers in addition to the payload.

Note
Camel* and SAP_* headers will not be stored.

Note
Only select this option if you want to read the message afterwards by
retrieving it with Get operations.

Caution
Consider that all headers will be stored and it may take up a lot of space.
4. Save the changes.
Related Information
Dynamic Parameters (Example) [page 15]
2.5.4.1.3
Defining Data Store Get Operations
n perform a select operation on the transient data store.
Context
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
267
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a Data Store Operations step to the integration flow, choose Add Message Persistence>Data Store Operations from the context menu of a connection within the pool.
 Note
Adding data store operations enables Write operations by default. Click the Switch to option to choose
the Get operation.
3. Enter the attributes of the step.
Attribute
Description
Data Store Name
Specifies the name of the data store (no white spaces).
You can dynamically define the data store name based on a header or exchange
property. Use the format ${header.headername} to dynamically read the
name from a header, or ${property.propertyname} to read it from an
exchange property.
The maximum length allowed for the data store name is 40 characters. If you enter
a longer string, a validation error is raised. Note that this length restriction applies
to the value that is used for this parameter at runtime. Therefore, if you configure
this parameter dynamically, make sure that the expected header or property value
does not exceed this length restriction. Otherwise, a runtime error will be raised.
Visibility
Defines whether the data store is shared by all integration flows (deployed on the
tenant) or only by one specific integration flow.
○
Global: Data store is shared across all integration flows deployed on the
tenant.
○
Entry ID
Integration Flow: Data store is used by one integration flow.
Specify an entry ID that will be stored together with the message content.
Details for the entry ID are read from the incoming message. You can enter the
following kinds of expressions:
○
${header.headername} to dynamically generate the entry ID from the
message header
○
${property.propertyname} to dynamically generate the entry ID from
the exchange property of the message
○
${xpath.<xpath>} to dynamically generate the entry ID from an element
in the message indicated by an xPath expression
Example: ${xpath./CustomerReviews/CustomerReview/
ProductId}
When you dynamically define the Entry ID value for a Data Store Delete
operation, note that you use the following kind of XPath expression;
otherwise, the scenario will not work as expected.
268
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Attribute
Description
${xpath./CustomerReviews/CustomerReview/ProductId/
text()}
In the case of Write operations, if the Entry ID is not defined, the data store
component uses the value of the SapDataStoreId header as the entry ID. If
this header is not defined, the data store component generates an entry ID and
sets the SapDataStoreId header with the generated value.

Tip
If you like the system to generate an entry ID for the data store operation,
remove the header SapDataStoreId before the data store write step and
leave the Entry ID field in the data store empty.
In the case of Delete and Get operations, you can explicitly define an Entry ID or
pass the header SapDataStoreId.
Delete on Completion
Select this option to delete a message from the data store after having
successfully processed the message.
Throw Exception on Missing
Entry
You have the option to throw an exception if the entry with the specified Entry ID
does not exist in the datastore.
This checkbox is selected by default.

Remember
If you disable this option, the header SAP_DatastoreEntryFound is set
to false and no exception is thrown, even if the Entry ID does not exist.
4. Save the changes.
Related Information
Dynamic Parameters (Example) [page 15]
2.5.4.1.4
Defining Data Store Delete Operations
You can perform a select operation on the transient data store.
Context
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
269
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a Data Store Operations step to the integration flow, choose Add Message Persistence>Data Store Operations from the context menu of a connection within the pool.
 Note
Adding data store operations enables Write operations by default. Click the Switch to option to choose
the Delete operation.
3. Enter the attributes of the step.
Attribute
Description
Data Store Name
Specifies the name of the data store (no white spaces).
You can dynamically define the data store name based on a header or exchange
property. Use the format ${header.headername} to dynamically read the
name from a header, or ${property.propertyname} to read it from an
exchange property.
The maximum length allowed for the data store name is 40 characters. If you enter
a longer string, a validation error is raised. Note that this length restriction applies
to the value that is used for this parameter at runtime. Therefore, if you configure
this parameter dynamically, make sure that the expected header or property value
does not exceed this length restriction. Otherwise, a runtime error will be raised.
Visibility
Defines whether the data store is shared by all integration flows (deployed on the
tenant) or only by one specific integration flow.
○
Global: Data store is shared across all integration flows deployed on the
tenant.
○
Entry ID
Integration Flow: Data store is used by one integration flow.
Specify an entry ID that will be stored together with the message content.
Details for the entry ID are read from the incoming message. You can enter the
following kinds of expressions:
○
${header.headername} to dynamically generate the entry ID from the
message header
○
${property.propertyname} to dynamically generate the entry ID from
the exchange property of the message
○
${xpath.<xpath>} to dynamically generate the entry ID from an element
in the message indicated by an xPath expression
Example: ${xpath./CustomerReviews/CustomerReview/
ProductId}
When you dynamically define the Entry ID value for a Data Store Delete
operation, note that you use the following kind of XPath expression;
otherwise, the scenario will not work as expected.
270
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Attribute
Description
${xpath./CustomerReviews/CustomerReview/ProductId/
text()}
In the case of Write operations, if the Entry ID is not defined, the data store
component uses the value of the SapDataStoreId header as the entry ID. If
this header is not defined, the data store component generates an entry ID and
sets the SapDataStoreId header with the generated value.

Tip
If you like the system to generate an entry ID for the data store operation,
remove the header SapDataStoreId before the data store write step and
leave the Entry ID field in the data store empty.
In the case of Delete and Get operations, you can explicitly define an Entry ID or
pass the header SapDataStoreId.
4. Save the changes.
Related Information
Dynamic Parameters (Example) [page 15]
2.5.4.2
Defining Write Variables
You use write variables to specify values for variables and support message flow execution.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. To add write variables in the integration flow, choose
the context menu of a connection within the pool.
Add Message Persistence
Write Variables
from
3. Select the Write Variables tab in the Properties view.
4. Choose Add.
5. Specify a name for the variable and perform the following substeps to assign values to the variable.
a. To assign a value using an XPath, select xpath in the Type column and enter the XPath expression in the
Value column.
b. If the XPath contains a namespace prefix, specify the association between the namespace and the
prefix on the Runtime Configuration tab page of the integration flow Properties view.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
271
 Note
○ The value for name of the variable must be constant and should not be a reference to some
other value. For example, a valid value is Variable1 and not ${header.source}.
○ The Data Type column is applicable for the xpath and expression types. The data type can be
any Java class. An example of a data type for an XPath is java.lang.String.
c. To assign a value using a header, select header in the Type column and enter the header in the Value
column.
d. To assign an external parameter, select external parameter in the Type column and define a parameter
key.
 Note
Defining multiple parameters in the same field or column is not supported for tables.
e. To assign a property, select property in the Type column.
6. Save the changes.
 Note
○ If you want the variable to be used in multiple integration flows, select the global scope checkbox.
○ By default, stored variables are deleted 400 days after the last update; the system raises an alert 2
days before the variables expire.
○ The default data store name for variables is ‘sap_global_store’. You should not use this value as the
data store name for data store operations.
○ Variables should not have same name as header id in integration flow.
○ Properties are local variables.
○ Variables cannot be downloaded using data store viewer.
2.5.4.3
Configuring Message Storage at a Process Step
Context
You use this task to configure a process step to store a message payload so that you can access the stored
message and analyze it at a later point in time.
In the integration flow, you mark a process step for persistence by specifying a unique step ID, which can be a
descriptive name or a step number. For example, a step ID configured after a mapping step could be
MessageStoredAfterMapping.
At runtime, the runtime node of the cluster stores information, such as GUID, MPL GUID, tenant ID, timestamp,
or payload, for the messages at the process steps that have been marked for persistence.
The message storage feature is useful for the following cases
272
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
● Auditing: The SaaS Admin can use this feature to analyze messages that have been processed.
 Note
Messages can be stored in the runtime node for 90 days, after which the messages are automatically
deleted.
● Providing access to data owned by the customer : Since messages are processed on behalf of the
customer, you might need to access the customer-owned data after the messages have been processed to
provide it to the customer.
Procedure
1. Open the <integration flow>.iflw on the Model Configuration editor page.
2. Determine if you want to store the message payload before or after a process step.
For example, you can store the message payload before and after a mapping step, so you add Persist
Message at the two points.
3. In the Model Configuration editor, right-click the connection at the determined point within the pool and
choose the Add Persist Message option.
4. In the Model Configuration editor, select the Persist Message element.
5. In the Properties view, retain the auto-generated step ID for the process step, or edit it if required.
6. If you want to encrypt the message payload that is stored at the step ID, choose Encrypt the stored
message payload.
7. Save the changes.
2.5.5 Validating Message Payload against XML Schema
The XML validator validates the message payload in XML format against the configured XML schema.
Prerequisites
You have the XML schema (XSD files) added in the .src.main.resources.xsd location of your integration flow
project. If you do not thave the specified location in your project, you need to create one first and then add the
XSD files.
Context
You use this procedure to assign XML schema (XSD files) to validate the message payload in a process step.
The validator checks the message payload against configured XML schema, and report discrepencies in
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
273
message payload. If the validation fails, the SAP Cloud Integration system stops the whole message processing
by default.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. To add a XML Validator step to the integration flow, choose Message Validator->Validator from the context
menu of a connection within the pool.
3. Select the XML Validator tab in the Properties view.
4. In the Name field, enter an appropriate validator flow step name.
5. In the XML Schema field, select Browse.
6. Choose an XSD file that you want to use to validate the format.
 Note
○ You can have references to other XSDs within the same project. XSDs residing outside the projects
cannot be referred.
○ You can enter a value less than 5000 for attribute maxOccurs, in input xsd. You can also enter
unbounded, if you do not want to check for max occurrence but would like to support any number
of nodes.
○ If there are any validation errors in the payload, the details of the error is visible in MPL
attachment. The link for the attachment is available in MPL log.
○ Use ${header.XmlValidationResult to get more details on validation excecptions.
7. If you want to continue the processing even if the system encounters error while validating, then select the
check box Prevent Exception on Failure.
 Note
If an exception occurs, then the error payload is added to SAP_XmlValidationResult header.
8. Save the changes.
2.5.6 Defining Message Routing
Context
274
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
2.5.6.1
Defining Router
Prerequisites
You have selected the Content-Based Router (Multiple Interfaces/Multiple Receivers) pattern or you have added
the router element to the integration flow model from the palette.
Context
You perform this task when you have to specify conditions based on which the messages are routed to a
receiver or an interface during runtime. If the message contains XML payload, you form expressions using the
Xpath-supported operators. If the message contains Non-XML payload, you form expressions using the
operators shown in the table below:
Usage of Operators in Non-XML Conditions
Operator
Example
=
${header.SenderId} = '1'
!=
${header.SenderId} != '1'
>
${header.SenderId} > '1'
>=
${header.SenderId} >= '1'
<
${header.SenderId} < '1'
<=
${header.SenderId} <= '1'
and
${header.SenderId}= '1' and ${header.ReceiverId} = '2'
or
${header.SenderId}= '1' or ${header.ReceiverId}= '2'
contains
${header.SenderId} contains '1'
not contains
${header.SenderId} not contains '1'
in
${header.SenderId} in '1,2'
not in
${header.SenderId} not in '1,2'
regex
${header.SenderId} regex '1.*'
not regex
${header.SenderId} not regex '1.*'
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
275
 Example
A condition with expression ${header.SenderId} regex '1.*' routes all the messages having Sender
ID starting with 1.
 Note
● You can define a condition based on property or exception that may occur.
● If condition ${property.SenderId} = '1' is true, then router routes the message to a particular
sender having Sender ID as 1.
● If condition ${exception.message}contains 'java.lang.Exception' is true, then router
routes the message to a particular receiver else it routes to other receiver.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a router at any point in the integration flow, follow the steps below:
a. Right-click a connection within the pool and choose Add Routing.
b. Right-click the added Router notation and choose the relevant option, either Add Receiver or Add
Interface.
3. In the Model Configuration editor, select one of the routing branches splitting from the router.
4. On the Route tab of the Properties view, enter a descriptive name for the routing branch.
5. From the Expression Type dropdown, select the type of expression used to formulate the routing condition.
a. Select XML to form an expression using Xpath.
b. Select Non-XML to form an expression using message header, property or exception.
6. In the Condition field, formulate a valid XML or non-XML condition that routes the message to its
associated receiver.
 Recommendation
We recommend you to ensure that the routing branches of a router are configured with the same type
of condition, either XML or non-XML, and not a combination of both. At runtime, the specified
conditions are executed in the same order as displayed in the Properties view of the Router. If the
conditions are a combination of both non-XML and XML type, the evaluation fails.
 Tip
To quickly configure routing conditions, select Define Condition from the context menu of the routing
branch.
7. If you want to set the selected route as the default, such that, its associated receiver handles the error
situation if no receiver is found, select the Default Route option.
 Note
Only the route that was recently selected as Default Route is considered as the default route.
276
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Tip
To quickly set a route as a default route from the Model Configuration editor tab page, select Set as
Default Route from the context menu of routing branch.
8. In the Model Configuration editor, select the Router notation.
9. In the Properties view, under Routing Behavior, select Raise Alert or Throw Exception to set the behavior if
no receiver is found.
 Note
To configure an alert, see the Alert Configuration section in the Operations Guide.
10. To model the integration flow when no receiver is found, follow the steps below:
a. From the Palette select the Terminate End notation and drop it inside the pool in the Model
Configuration.
b. Place the cursor on the Router to select the connection from the hover menu and drag the connection
to the Terminate End notation.
 Note
If you do not add the Terminate End notation in your integration flow model, the Raise Alert or
Throw Exception option does not apply.
11. Select the Router notation and, in the Properties view, check the overview of all the routes and their
conditions that you have defined for the scenario.
2.5.6.2
Defining Splitter
A splitter step decomposes a composite message into a series of individual messages and sends them to a
receiver.
Prerequisites
You have selected the Splitter step or you have explicitly added the splitter step to the integration flow model.
Context
You perform this task if you need to break down a composite message into a series of individual messages and
send them to a receiver. You split the composite message based on the message type, for example, IDoc or
PKCS#7/CMS Signature-Content, or the manner in which the message is to be split, for example, general or
iterative splitter.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
277
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a splitter to the integration flow, choose Add Splitter from the context menu of the
connection within the pool.
3. In the Model Configuration editor, select the splitter element.
4. In the Properties view, select a Splitter Type.
Splitter Types
Splitter Type
IDoc
Description
Is used to split a composite IDoc messages into a series of
individual IDoc messages with the enveloping elements of
the composite IDoc message.
PKCS#7/CMS Signature-Content
Is used when an agent sends a PKCS7 Signed Data mes­
sage that contains a signature and content. This splitter
type breaks down the signature and content into separate
files.
General
Is used to split a composite message comprising of N
messages into N individual messages each containing one
message with the enveloping elements of the composite
message.

Note
A possible use case for this splitter type is where a
message obtained from a sender contains multiple
account statements and needs to be split into sepa­
rate individual messages, each containing the account
statement for one specific account owner.
Typically, the target message also needs to contain
enveloping information such as the bank name or
other attributes to make the account statement com­
plete. In this case, it would make sense to choose the
general splitter pattern.
278
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Splitter Type
Iterating
Description
Is used to split a composite message into a series of mes­
sages without copying the enveloping elements of the
composite message.

Note
A possible use case for this splitter type is where a
message obtained from a sender contains multiple or­
ders from different customers and needs to be split
into individual messages. Each resulting message
should contain the order of one customer only and is
to be routed to this customer. In this case it might
make more sense for the resulting split messages to
contain only data that is related to the corresponding
customer, without any of the additional information
that is contained in enveloping elements.
5. Specify the properties of the splitter.
6. Save the changes.
Example
Consider the following XML payload structure as input for the Splitter step:
<orders>
<order>
<clientId>I0001</clientId>
<count>100</count>
</order>
<order>
<clientId>I0002</clientId>
<count>10</count>
</order>
</orders>
If you use Token as Expression Type and enter the order as Token, the XML payload is split into two output files.
Output1.xml contains the following:
<order>
<clientId>I0001</clientId>
<count>100</count>
</order>
Output2.xml contains the following:
<order>
<clientId>I0002</clientId>
<count>10</count>
</order>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
279
Using XPath as Expression Type, you can achieve the same behavior by entering one of the following two
expressions (as XPath)::
● /orders/order (absolute expression for the element <order>))
● //order (relative expression for the element <order>)
Next Steps
When a message is split (as configured in a Splitter step of an integration flow), the Camel headers listed below
are generated every time the runtime finishes splitting an Exchange. You have several options for accessing
these Camel headers at runtime. For example, suppose that you are configuring an integration flow with a
Splitter step before an SFTP receiver adapter. If you enter the string split_${exchangeId}_Index$
{header.CamelSplitIndex} for File Name, the file name of the generated file on the SFTP server contains
the Camel header CamelSplitIndex. In other words, the information on the number of split Exchanges
induced by the Splitter step.
● CamelSplitIndex
Provides a counter for split items that increases for each Exchange that is split (starts from 0).
● CamelSplitSize
Provides the total number of split items (if you are using stream-based splitting, this header is only
provided for the last item, in other words, for the completed Exchange).
● CamelSplitComplete
Indicates whether an Exchange is the last split.
 Note
You can use the Gather step after Splitter in an integration flow if you have configured the Splitter Type as
General or Iterating.
 Restriction
● You cannot use Splitter after Multicast.
● You cannot use two consecutive Splitter elements ending in Gather.
● You cannot use PKCS#7/CMS Splitter within a Subprocess.
Related Information
Defining a General Splitter [page 281]
Defining an Iterating Splitter [page 285]
Defining a PKCS#7/CMS Signature-Content Splitter [page 305]
General and Iterating Splitter [page 306]
280
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.6.2.1
Defining a General Splitter
A general splitter is used to split a composite message comprising of N messages into N individual messages
each containing one message with the enveloping elements of the composite message.
Context
A possible use case for this splitter type is where a message obtained from a sender contains multiple account
statements and needs to be split into separate individual messages, each containing the account statement for
one specific account owner.
Typically, the target message also needs to contain enveloping information such as the bank name or other
attributes to make the account statement complete. In this case, it would make sense to choose the general
splitter pattern.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a splitter to the integration flow, choose Add Splitter from the context menu of the
connection within the pool.
3. In the Model Configuration editor, select the splitter element.
4. In the Properties view, select General as Splitter Type.
5. Specify the attributes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
281
Field
Description
Expression Type
Specify the expression type you want to use to define the

Note
split point (the element in the message structure below
which the message is to be split).
In the following cases certain features might not be

available for your current integration flow:
○
○
Note
A feature for a particular adapter or step was re­
The defined Stop on Exception handling takes priority
leased after you created the corresponding
over the end event defined in an exception subpro­
shape in your integration flow.
cess with respect to continuing with the next split. It
You are using a product profile other than the one
means that the next split is only executed if Stop on
expected.
Exception is not set.
More information: Updating your Existing Integration
If Stop on Exception is set, the next split is not exe­
Flow [page 410]
cuted, irrespective of the end event used in an excep­
tion subprocess.
The following options are available:
○
XPath
The splitter argument is specified by an XPath ex­
pression.
○
Line Break
If the input message is a non-XML file, it is split ac­
cording to the line breaks in the input message.
Empty lines in input messages is ignored and no
empty messages are created.
282
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
XPath Expression
XPath to the split term
(Enabled only if you select XPath in the Expression Type
You can specify the absolute or relative path.
field)

Note
Note that only the following types of XPath expres­
sions are supported:
○
Absolute XPath expressions, for exam­
ple, /A/B/C/D
○
Relative XPath expressions, for example, //D
The following characters are not supported in an
XPath expression:

○
|
○
+
○
*
○
>
○
<
○
>=
○
<=
○
[
○
]
○
@
Note
When addressing elements with namespaces in the
Splitter step, you have to specify them in a specific
way in the XPath expression, and the namespace dec­
laration in the incoming message must follow a cer­
tain convention:
Assume that the incoming message contains an ele­
ment root with a namespace, for example:
<root xmlns:n0=“http://
myspace.com“></root>
To address this element in the Splitter step, you need
to enter the following XPath expression: /n0:root.
Using XPath expression /root leads to an error in
that case.

Caution
You cannot split by values of message elements.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
283
Field
Description
Consider the following inbound message:
<customerList>
<customers>
<customerNumber>0001</
customerNumber>
<customerName>Paul Smith</
customerName>
</customers>
<customers>
<customerNumber>0002</
customerNumber>
<customerName>Seena
Kumar</customerName>
</customers>
</customerList>
In that case, using the following XPath expression is
not supported to split the message at the
customerNumber node with the value 0001:
/customerList/customers/
customerNumber=0001

Note
Note the following behavior if the specified XPath ex­
pression does not match the inbound payload: If no
split point is found for the specified XPath, no out­
bound payload will be generated from the Splitter
step and the integration flow will be ended with status
Completed.
Grouping
The size of the groups into which the composite message
is to be split.
For example, if a message has 10 nodes and grouping is
defined as 2, the message is split into 5 messages with 2
nodes each.
Streaming
Select this option if you want to stream the process of
splitting a large composite message.
If you activate streaming, the system already starts proc­
essing parts (chunks) of the composite message before
the message is fully transferred to the memory (of the
runtime node).
If you deactivate this option, the message is transferred
fully to the memory before it is split and processed fur­
ther. Deactivating streaming is more memory-intensive
than activating it.
284
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Parallel Processing
Select this checkbox if you want to enable (parallel) proc­
essing of all the split messages at once.
Number of Concurrent Processes
(Enabled only if Parallel Processing is selected)
If you have selected Parallel Processing, the split mes­
sages are processed concurrently in threads. Define how
many concurrent processes to use in the splitter. The de­
fault is 10. The maximum value allowed is 50.
Timeout (in s)
Maximum time in seconds that the system waits for proc­
(Enabled only if Parallel Processing is selected)
essing to complete before it is aborted. The default value
is 300 seconds.

Caution
Note that after the specified timeout the splitter proc­
essing stops without exception.
This behavior can lead to unexpected results (even
data loss) if not all message splits are processed
within the timeout period.
Stop On Exception
Select this option to stop message processing if an excep­
tion occurs.
6. Save the changes.
Related Information
General and Iterating Splitter [page 1010]
https://blogs.sap.com/2018/01/16/stop-on-exception-for-iteratinggeneral-splitter/
2.5.6.2.2
Defining an Iterating Splitter
An iterating splitter is used to split a composite message into a series of messages without copying the
enveloping elements of the composite message.
Context
A possible use case for this splitter type is where a message obtained from a sender contains multiple orders
from different customers and needs to be split into individual messages. Each resulting message should
contain the order of one customer only and is to be routed to this customer. In this case it might make more
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
285
sense for the resulting split messages to contain only data that is related to the corresponding customer,
without any of the additional information that is contained in enveloping elements.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a splitter to the integration flow, choose Add Splitter from the context menu of the
connection within the pool.
3. In the Model Configuration editor, select the splitter element.
4. In the Properties view, select Iterating as Splitter Type.
5. Specify the attributes.
Field
Expression Type
Description
Specify the expression type you want to use to define the
split point (the element in the message structure below
which the message is to be split).

Note
The defined Stop on Exception handling takes priority
over the end event defined in an exception subpro­
cess with respect to continuing with the next split. It
means that the next split is only executed if Stop on
Exception is not set.
If Stop on Exception is set, the next split is not exe­
cuted, irrespective of the end event used in an excep­
tion subprocess.
The following options are available:
○
XPath
The splitter argument is specified by an XPath ex­
pression.
○
Token
The splitter argument is specified by a keyword.
○
Line Break
If the input message is a non-XML file, it is split ac­
cording to the line breaks in the input message.
Empty lines in input messages will be ignored and no
empty messages are created.
286
Token (Enabled only if you select Token in the Expression
The keyword or token to be used as a reference for split­
Type field)
ting the composite message
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
XPath
XPath to the split term
(Enabled only if you select XPath in the Expression Type
You can specify the absolute or relative path.
field)

Note
Note that only the following types of XPath expres­
sions are supported:
○
Absolute XPath expressions, for exam­
ple, /A/B/C/D
○
Relative XPath expressions, for example, //D
The following characters are not supported in an
XPath expression:

○
|
○
+
○
*
○
>
○
<
○
>=
○
<=
○
[
○
]
○
@
Note
When addressing elements with namespaces in the
Splitter step, you have to specify them in a specific
way in the XPath expression, and the namespace dec­
laration in the incoming message must follow a cer­
tain convention:
Assume that the incoming message contains an ele­
ment root with a namespace, for example:
<root xmlns:n0=“http://
myspace.com“></root>
To address this element in the Splitter step, you need
to enter the following XPath expression: /n0:root.
Using XPath expression /root leads to an error in
that case.

Caution
You cannot split by values of message elements.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
287
Field
Description
Consider the following inbound message:
<customerList>
<customers>
<customerNumber>0001</
customerNumber>
<customerName>Paul Smith</
customerName>
</customers>
<customers>
<customerNumber>0002</
customerNumber>
<customerName>Seena
Kumar</customerName>
</customers>
</customerList>
In that case, using the following XPath expression is
not supported to split the message at the
customerNumber node with the value 0001:
/customerList/customers/
customerNumber=0001
Grouping
The size of the groups into which the composite message
is to be split.
For example, if a message has 10 nodes and grouping is
defined as 2, the message is split into 5 messages with 2
nodes each.
Streaming
Select this option if you want to stream the process of
splitting a large composite message.
If you activate streaming, the system already starts proc­
essing parts (chunks) of the composite message before
the message is fully transferred to the memory (of the
runtime node).
If you deactivate this option, the message is transferred
fully to the memory before it is split and processed fur­
ther. Deactivating streaming is more memory-intensive
than activating it.
Parallel Processing
Select this checkbox if you want to enable processing of all
the split messages at once.
Number of Concurrent Processes
(Enabled only if Parallel Processing is selected)
If you have selected Parallel Processing, the split mes­
sages are processed concurrently in threads. Define how
many concurrent processes to use in the splitter. The de­
fault is 10. The maximum value allowed is 50.
288
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Timeout (in s)
Maximum time in seconds that the system will wait for
(Enabled only if Parallel Processing is selected)
processing to complete before it is aborted. The default
value is 300 seconds.

Caution
Note that after the specified timeout the splitter proc­
essing stops without exception.
This behavior can lead to unexpected results (even
data loss) if not all message splits are processed
within the timeout period.
Stop On Exception
Select this option to stop message processing if an excep­
tion occurs.
6. Save the changes.
Related Information
General and Iterating Splitter [page 1010]
https://blogs.sap.com/2018/01/16/stop-on-exception-for-iteratinggeneral-splitter/
https://blogs.sap.com/2018/01/26/grouping-option-of-iteratinggeneral-splitter/
2.5.6.2.3
Defining EDI Splitter
Context
You use the EDI splitter to split inbound bulk EDI messages, and during processing you can configure the
splitter to validate and acknowledge the inbound messages. If you choose to acknowledge the EDI message,
then the splitter transmits a functional acknowledgement after processing the bulk EDI message. A bulk EDI
message can contain one or more EDI formats, such as EDIFACT, EANCOM, and ASC-X12. You can configure
the EDI splitter to process different EDI formats depending on the business requirements of the trading
partners.
Consider a use case where a bulk EDI message received from a sender contains more than one business
document in EDIFACT format. According to the requirement, the bulk EDI message needs to be split at
message level and routed to specific partners as shown in the figure below. After splitting, the EDI splitter
validates the document and creates a functional acknowledgement that can be routed and transmitted to the
sender. In the next process, the individual EDI messages are converted and extracted. Then the process routes
individual messages to specific business partners.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
289
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. From the Message Routing context menu, drag and drop the splitter element into the integration flow.
3. Right click on the Splitter, and choose Switch to EDI Splitter.
4. In the Properties view, provide values in the fields based on the descriptions in the table.
Field
Description
Name
Define a relevant name for the EDI splitter or
use the default name.
Parallel Processing
This mode creates multiple processes for
each split message, and individual EDI mes­
sages are processed simultaneously.
290
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Timeout (in sec)
Description
Set the time limit in seconds for the EDI split­
ter to process individual split messages. If
there are any processes still pending once the
time has lapsed, the splitter terminates the
processes and updates the MPL status.
EDIFACT
Source Encoding
Use the appropriate encoding format of the in­
bound EDIFACT interchange. The following en­
coding formats are available in the EDI split­
ter:
○
UTF-8
○
ISO-8859-1
You can also set this field using the header
EDISPLITTER_EDIFACT_SOURCE_ENCO
DING. The values for the headers can be one
of the following:
Validate Message
○
UTF-8
○
ISO-8859-1
This mode initiates the validation of the split
EDI messages.
You can also set this field using the header
EDISPLITTER_EDIFACT_VALIDATE_ME
SSAGE. The values for the headers can be one
of the following:
Validate
○
true
○
false
The EDI splitter performs validation of either
Envelope or Envelope and Message for the EDI
content.
You can also set this field using the header
EDISPLITTER_EDIFACT_VALIDATION_
METHOD. The values for the headers can be
one of the following:
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
○
envelop
○
envelopAndMessage
PUBLIC
291
Field
Description
Transaction Mode
This feature is available only in Envelope and
Message validation mode. The following two
options are available:
○
Interchange: Allows the splitter to validate
the entire EDI interchange as a single en­
tity.
○
Message: Allows the splitter to validate
the entire EDI interchange as independ­
ent individual entities.

Example
Consider a scenario where you receive a
bulk EDI message containing five pur­
chase orders. In Interchange mode, if a
single EDI message fails, the entire inter­
change is rejected. However, in Message
mode, if a single EDI message fails, only
the invalid message is rejected and the
valid messages are dispatched for further
processing.
You can also set this field using the header
EDISPLITTER_EDIFACT_TRANSACTION
_MODE. The values for the headers can be one
of the following:
292
PUBLIC
○
interchange
○
message
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
EDI Schema Definition
Description
Validates an EDI interchange against the XSD
schema for conversion. Deploy the schema by
selecting it from an integration flow or by de­
fining the location of the schema.
Follow the steps here to add an *.xsd file to
the integration flow:
1.
In the EDI Schema Definition, select
Integration Flow.
2. Choose Add from the Schemas table.
3. Select a row from the table, and choose
to add an XML Schema file from
the XSD folder found in the integration
project.

Note
If you wish to remove an XSD file
from the project, then select the rele­
vant XSD file and choose Remove.
You can also set this field using the header
EDISPLITTER_EDIFACT_SCHEMA_SOUR
CE. The values for the headers can be one of
the following:
Process Invalid Messages
○
Header
○
IntegrationProject
If you select this option, then all the invalid
split messages are routed through new route
where the condition is defined as
EDI_MESSAGE_STATUS=failure.
In the acknowledgement header, if you find
EDI_INTERCHANGE_STATUS=failure
it notifies you that an error has occurred while
processing the interchange.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
293
Field
Description
Header Name
If you select Header as EDI Schema
Definition, then you can see the field
HeaderName, in Properties view. Enter a valid
header name for the field.

Note
This header name is fetched from camel
header. The header is added in script ele­
ment. This script element is added before
converter element. You can add value for
this header in the script element.
For example, you can add the
value, /xsd/UN-
EDIFACT_ORDERS_D96A.xsd for ED­
IFACT.
For example, you can add the
value, /xsd/ASC-
X12_810_004010.xsd for ASC-X12.
294
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Create Acknowledgement
Description
The following options are available to process
the functional acknowledgement:
○
Not Required: Does not transmit the func­
tional acknowledgement.
○
Check EDI Envelop: Allows the splitter to
check the request for a functional ac­
knowledgement in the UNB segment of
an EDI interchange.
○
Required: The splitter creates and trans­
mits a functional acknowledgement.
You can also set this field using the header
EDISPLITTER_EDIFACT_CREATE_ACK.
The values for the headers can be one of the
following:
○
required
○
notRequired
○
checkEDIEnvelop

Note
In case of rules violation, you see the ac­
knoedgement in a specific format. Here's
how the acknowledge is formatted:
AK4 is represented only for the first ele­
ment of the conditional rule. For example,
AK4*2*358*2.
If there are two or more violations for a
single element, the same AK4 segment is
repeated for each violation. For example,
AK4*2*358*2 AK4*2*358*2
If there is an exclusive violation, AK4 is
represented for only the first element. For
example, AK4*2*358*10.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
295
Field
Description
Interchange Number
The splitter uses the interchange number of
an EDI message in the functional acknowledg­
ment. It allows the splitter to read the inter­
change number either from the EDI message
or from an assigned set of number ranges.
You can also set this field using the header
EDISPLITTER_EDIFACT_INTERCHANGE
_NUMBER. The values for the headers can be
one of the following:
Number range
○
useFromEDIMessage
○
numberRange
Define the number range assigned to an inter­
change number in the functional acknowl­
edgement.
You can also set this field using the header
EDISPLITTER_EDIFACT_NUMBER_RANG
E. The value for the header should be the
number range artifact name.
CONTRL Message Version
Determine the appropriate EDIFACT CONTRL
message version to be transmitted to the
trading partner.
You can also set this field using the header
EDISPLITTER_EDIFACT_CONTRL_MSG_
VERSION. The values for the headers can be
one of the following:
Include UNA Segment
○
defaultVersion
○
useFromEDIMessage
The trading partner uses the UNA segment in
the CONTRL message to define special char­
acters, such as separators and indicators.
This option enables the splitter to include spe­
cial characters in the CONTRL message. If not
selected, the UNA segment is not included in
the CONTRL message.
You can also set this field using the header
EDISPLITTER_EDIFACT_INCLUDE_UNA
. The values for the headers can be one of the
following:
296
PUBLIC
○
true
○
false
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
X12
Source Encoding
Use the appropriate encoding format of the in­
bound X12 interchange. The following encod­
ing formats are available in the EDI splitter:
○
UTF-8
○
ISO-8859-1
You can also set this field using the header
EDISPLITTER_X12_SOURCE_ENCODING
. The values for the headers can be one of the
following:
Validate Message
○
UTF-8
○
ISO-8859-1
The EDI splitter performs validation on incom­
ing ASC X12 message against the XSD
scheme, and has the following options availa­
ble during validation:
○
No Validation: Validation is not performed
on the incoming payload.
○
Standard Validation : Validates the incom­
ing payload for the structural violations
defined in XSD schema.
You can also set this field using the header
EDISPLITTER_X12_VALIDATE_MESSAG
E_OPTION. The values for the headers can
be one of the following:
Transaction Mode
○
none
○
basic
The splitter has two modes for validating a
transaction:
○
Interchange: Allows the splitter to validate
the entire EDI interchange as a single en­
tity.
○
Message: Allows the splitter to validate
the entire EDI interchange as independ­
ent individual entities.
You can also set this field using the header
EDISPLITTER_X12_TRANSACTION_MOD
E. The values for the headers can be one of
the following:
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
○
interchange
○
message
PUBLIC
297
Field
EDI Schema Definition
Description
Validates an EDI interchange against the XSD
schema for conversion. Deploy the schema by
selecting it from an integration flow or by de­
fining the location of the schema.
Follow the steps here to add an *.xsd file to
the integration flow:
1.
In the EDI Schema Definition, select
Integration Flow.
2. Choose Add from the Schemas table.
3. Select a row from the table, and choose
to add an XML Schema file from
the XSD folder found in the integration
project.

Note
If you wish to remove an XSD file
from the project, then select the rele­
vant XSD file and choose Remove.
You can also set this field using the header
EDISPLITTER_X12_SCHEMA_SOURCE.
The values for the headers can be one of the
following:
298
PUBLIC
○
Header
○
IntegrationProject
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Field
Description
Header Name
If you select Header as EDI Schema
Definition, then you can see the field
HeaderName, in Properties view. Enter a valid
header name for the field.

Note
This header name is fetched from camel
header. The header is added in script ele­
ment. This script element is added before
converter element. You can add value for
this header in the script element.
For example, you can add the
value, /xsd/UN-
EDIFACT_ORDERS_D96A.xsd for ED­
IFACT.
For example, you can add the
value, /xsd/ASC-
X12_810_004010.xsd for ASC-X12.
Create Acknowledgement
The following options are available for proc­
essing a functional acknowledgement:
○
Not Required: Does not transmit the func­
tional acknowledgement.
○
Check EDI Envelop: Allows the splitter to
check the request for a functional ac­
knowledgement in the UNB segment of
an EDI interchange.
○
Required: The splitter creates and trans­
mits a functional acknowledgement.
You can also set this field using the header
EDISPLITTER_X12_CREATE_ACK. The
values for the headers can be one of the fol­
lowing:
○
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
required
○
notRequired
○
checkEDIEnvelop
PUBLIC
299
Field
Description
Interchange Number
The splitter uses the interchange number of
an EDI message in the functional acknowledg­
ment. It allows the splitter to read the inter­
change number either from the EDI message
or from an assigned set of number ranges.
You can also set this field using the header
EDISPLITTER_X12_INTERCHANGE_NUM
BER. The values for the headers can be one of
the following:
Number Range
○
useFromEDIMessage
○
numberRange
Define the number range assigned to an inter­
change number in the functional acknowl­
edgement.
You can also set this field using the header
EDISPLITTER_X12_NUMBER_RANGE.
The value for the header should be the num­
ber range artifact name.
Exclude AK3 and AK4
Notifies the splitter to exclude the AK3 and
AK4 segments from the functional acknowl­
edgement message. However, it retains the
details of the AK1, AK2, AK5, and AK9 seg­
ments in the functional acknowledgement.
You can also set this field using the header
EDISPLITTER_X12_EXCLUDE_AK3_AK4
. The values for the headers can be one of the
following:
○
true
○
false
Error Codes for EDI Splitter
The error codes for UN-EDIFACT interchange and message levels are given below:
Interchange Level
Error Code
Error Text NotifiesThat...
2
Syntax version and/or level is not supported by the recipi­
ent.
300
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
 Note
If you select Interchange transaction mode, the splitter treats the entire EDI interchange as a single
entity, and includes interchange errors in the acknowledgement.
Interchange and Message Level
Error Code
Error Text NotifiesThat...
18
An error has been identified, but the nature of the error is
not reported.
28
The control reference in UNB, UNG, or UNH does not
match the one in UNZ, UNE, or UNT respectively.
29
The number of groups, messages, or segments does not
match the number given in the UNZ, UNE, or UNT seg­
ment.
30
Groups have been mixed with messages/packages out­
side of groups in the interchange.
Message Level
Error Code
Error Text Notifies That...
12
The value of a stand-alone data element, composite data
element, or component data element does not conform to
the relevant specifications for the value.
13
Mandatory (or otherwise required) service or user seg­
ment, data element, composite data element, or compo­
nent data element is missing.
16
The identified segment contains too many data elements
or the identified composite data element contains too
many component data elements.
31
Different message types are contained in a functional
group.
35
A segment was repeated too many times.
36
A segment group is repeated to many times.
37
One or more numeric characters were used in an alpha­
betic (component) data element or one or more alpha­
betic characters were used in a numeric (component)
data element.
38
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
A decimal sign is not preceded by one or more digits.
PUBLIC
301
Error Code
39
Error Text Notifies That...
The length of the data element received exceeds the maxi­
mum length specified in the data element description.
40
The length of the data element received is shorter than
the minimum length specified in the data element descrip­
tion.
The error codes for ASC-X12 are given below:
AK3 Segment Level Error Codes
Error Codes
Error Text Notifies That...
3
Mandatory segment is missing.
4
Maximum number of loops exceeded.
5
Segment exceeds maximum use.
6
Segment is not defined in transaction set.
7
Segment is not in proper sequence.
AK4 Data Element Level Error Codes
Error Code
Error Text Notifies That...
1
Mandatory data element is missing.
3
Too many data elements.
4
Data element is too short.
5
Data element is too long.
6
Invalid character in data element.
7
Invalid code value.
8
Invalid date.
AK5 Transaction Set Level Error Codes
Error Code
Error Text Notifies That...
3
Transaction set control number in header and trailer do
not match.
4
Number of included segments does not match actual
count.
302
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
AK9 Functional Group Level Error Codes
Error Code
Error Text Notifies That...
4
Group control number in the functional group header and
trailer do not match.
5
Number of included transaction sets does not match ac­
tual count.
Example
EANCOM Document Standard
The following segments are part of message payload of EANCOM, and the table below mentions the headers
and values for the given payload.
UNB+UNOC:3+4006501000002:14+5790000016839:14+100818:0028+0650+++++XXXXX'
UNH+1+INVOIC:D:96A:EN:EAN008'
Value for EANCOM Document Standard
Header Name
Value
SAP_EDI_Payload_Format
XML or Flat-File
SAP_EDI_Document_Standard
EANCOM
SAP_EDI_Sender_ID
4006501000002
SAP_EDI_Sender_ID_Qualifier
14
SAP_EDI_Receiver_ID
5790000016839
SAP_EDI_Receiver_ID_Qualifier
14
SAP_EDI_Interchange_Control_Number
0650
SAP_EDI_Message_Type
INVOIC
SAP_EDI_Message_Version
D
SAP_EDI_Message_Release
96A
SAP_EDI_Message_Controlling_Agency
EN
SAP_EDI_Message_Association_Assign_Code
EAN008
EDIFACT Document Standard
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
303
The element creates camel headers and populates it with respective extracted values. For example, if following
segments are part of message payload of EDIFACT, then respective headers and values for the same are given
in the table below.
UNB+UNOC:3+4006501000002:14+5790000016839:14+100818:0028+0650+++++XXXXX'
UNH+1+INVOIC:D:96A:UN'
Value for EDIFACT Document Standard
Header Name
Value
SAP_EDI_Payload_Format
XML or Flat-File
SAP_EDI_Document_Standard
UN-EDIFACT
SAP_EDI_Sender_ID
4006501000002
SAP_EDI_Sender_ID_Qualifier
14
SAP_EDI_Receiver_ID
5790000016839
SAP_EDI_Receiver_ID_Qualifier
14
SAP_EDI_Interchange_Control_Number
0650
SAP_EDI_Message_Type
INVOIC
SAP_EDI_Message_Version
D
SAP_EDI_Message_Release
96A
SAP_EDI_Message_Controlling_Agency
UN
ASC-X12 Document Standard
If following segments are part of message payload of ASC-X12 , then respective headers and values for the
same are given in the table below.
ISA*00* *00* *ZZ*WWRESNDR *ZZ*WWRERCVR *020709*0816*U*00401*000046668*0*P*:~
GS*IN*GSRESNDR*GSRERCVR*20030709*0816*12345*X*004010~
810*0001~
Value for ASC-X12 Document Standard
Header Name
Value
SAP_EDI_Payload_Format
XML or Flat-File
SAP_EDI_Document_Standard
ASC-X12
SAP_EDI_Sender_ID
WWRESNDR
SAP_EDI_Sender_ID_Qualifier
ZZ
304
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Header Name
Value
SAP_EDI_Receiver_ID
WWRERCVR
SAP_EDI_Receiver_ID_Qualifier
ZZ
SAP_EDI_Interchange_Control_Number
000046668
SAP_EDI_Message_Type
810
SAP_EDI_Message_Version
004010
SAP_EDI_GS_Sender_ID
GSRESNDR
SAP_EDI_Receiver_ID
GSRERCVR
SAP_EDI_GS_Control_Number
12345
SAP_GS_Functional_Id_Code
IN
SAP_GS_Responsible_Agency_Code
X
SAP_ISA_Acknowledgment_Requested
0
SAP_ISA_Auth_Information_Qualifier
00
SAP_ISA_Control_Standards_Identifier
SAP_ ISA_Security_Information_Qualifier
00
SAP_ISA_Usage_Indicator
P
SAP_ISA_Version_Number
004010
SAP_MessageProcessingLogID
SAP_ST_Control_Number
2.5.6.2.4
Defining a PKCS#7/CMS Signature-Content
Splitter
The PKCS#7/CMS Signature-Content splitter is used when an agent sends a PKCS7 Signed Data message that
contains a signature and content. This splitter type breaks down the signature and content into separate files.
Context
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
305
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a splitter to the integration flow, choose Add Splitter from the context menu of the
connection within the pool.
3. In the Model Configuration editor, select the splitter element.
4. In the Properties view, select PKCS#7/CMS Signature-Content as Splitter Type.
5. Specify the attributes.
Field
Description
Payload File Name
Name of the file that will contain the payload after the
splitting step
Signature File Name
Name of the file (extension .sig) that will contain the sig­
nature after the splitting step
Wrap by Content Info
Select this option if you want to wrap PKCS#7 signed data
containing the signature into PKCS#7 content.
PayloadFirst
Select this option if you want the payload to be the first
message returned.
BASE64 Payload
Select this option if you want to encode the payload with
the base64 encoding scheme after splitting.
BASE64 Signature
Select this option if you want to encode the signature us­
ing the base64 encoding scheme after splitting.
6. Save the changes.
Related Information
Signing the Message Content with PKCS#7/CMS Signer [page 320]
2.5.6.2.5
General and Iterating Splitter
The two splitter types General Splitter and Iterative Splitter behave differently in their handling of the
enveloping elements of the input message.
The following figures illustrate the behavior of both splitter types. In both cases an input message comprising a
dedicated number of items is split into individual messages.
306
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
General Splitter
The General Splitter splits a composite message comprising N messages into N individual messages, each
containing one message with the enveloping elements of the composite message. We use the term enveloping
elements to refer to the elements above and including the split point. Note elements that follow the one which
is indicated as split point in the original message (but on the same level), are'nt counted as enveloping
elements. They will not be part of the resulting messages.
General Splitter
 Caution
Note that in case there are elements in the original message that follow the one indicated as split point (and
on the same level), the General Splitter generates result messages where these elements are missing. In the
following example (for sakes of simplicity with only two instead of three split messages), the split point is
set to element C that is followed by element E. As shown in the figure, element E is missing in each result
message.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
307
General Splitter (Example for Specific Case)
Iterating Splitter
The Iterating Splitter splits a composite message into a series of messages without copying the enveloping
elements of the composite message.
308
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Iterating Splitter
Related Information
General and Iterating Splitter (Examples) [page 1013]
2.5.6.3
Defining an Aggregator
You can use the Aggregator step to combine multiple incoming messages into a single message.
Prerequisites
 Caution
Usage of an Aggregator step in a Local Integration Process or Exception Subprocess is not supported.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
309
Context
 Note
When you use the Aggregator step in combination with a polling SFTP sender adapter and you expect a
high message load, please consider the following recommendation:
For the involved in SFTP sender adapter set the value for Maximum Messages per Poll to a small number
which is larger than 0 (for example, 20) (under Advanced Parameters). That way, you ensure a proper
message processing status logging at runtime.
Procedure
1. Open the related integration flow and select an Aggregator step (in the palette under Message Routing).
2. Open the Properties view for the step.
3. Specify which incoming messages belong together and are to be aggregated. To do that, open Correlation
tab and enter an XPath expression that identifies an element based on which the incoming messages
should be correlated (in the field Correlation Expression (XPath)).
This attribute determines the messages which are to be aggregated in the following way: messages with
the same value for the message element defined by the XPATH expression are being stored in the same
aggregate.
4. Open the Aggregation Strategy tab and specify the following attributes:
Attribute
Description
Correlation Expression (XPath)
XPath expression that identifies an element based on
which the incoming messages should be correlated.
Incoming Format
Content type of the incoming message
Currently, only XML (Same Format) can be selected.
It is important that the incoming messages have the same
format.
310
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Attribute
Description
Aggregation Algorithm
Specifies how the correlated messages should be treated.
You can select one of the following options:
○
Combine in Sequence
Aggregated message contains all correlated incoming
messages, and the original messages are put into a
sequence.
○
Combine
Aggregated message contains all correlated incoming
messages.
The Aggregator step generates an SAP Process Integra­
tion multi mapping as specific format. This is important
to know because the integration developer typically has to
create a mapping from the generated format to the mes­
sage structure required by the receiver.
Message Sequence Expression (XPath)
(only if for Aggregation Algorithm the option Combine in
Sequence has been selected)
Enter an XPath expression for that message element
based on which a sequence is being defined.
You can use only numbers to define a sequence. Each se­
quence starts with 1.
Last Message Condition (XPath)
Define the condition (XPATH = value) to identify the
last message of an aggregate.
You have the option to use an Router step after the
Aggregator in order to evaluate the Camel $
{header.CamelAggregatedCompletedBy} at­
tribute, and, based on the value, decide how to continue.
Note that the header attribute can only have one of the
following values:
○
timeout
Processing of the aggregate has been finished be­
cause the configured Completion Timeout has been
reached.
○
predicate
Processing of the aggregate has been finished be­
cause the Completion Condition has been fulfilled.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
311
Attribute
Completion Timeout
Description
Defines the maximum time between two messages before
aggregation is being stopped (period of inactivity).
You have the option to use an Router step after the
Aggregator in order to evaluate the Camel $
{header.CamelAggregatedCompletedBy} at­
tribute, and, based on the value, decide how to continue.
Note that the header attribute can only have one of the
following values:
○
timeout
Processing of the aggregate has been finished be­
cause the configured Completion Timeout has been
reached.
○
predicate
Processing of the aggregate has been finished be­
cause the Completion Condition has been fulfilled.
Data Store Name
Enter the name of the transient data store where the ag­
gregated message is to be stored. The name should begin
with a letter and use characters (aA-zZ, 0-9, - _ . ~ ).
Note that only local data stores (that apply only to the in­
tegration flow) can be used. Global data stores cannot be
used for this purpose.

Note
The Integration Operations feature provides a Data
Store Viewer that allows you to monitor your transient
data stores.
Results
The Aggregator step creates a message in the multi-mapping format with just one message instance:
<?xml version="1.0" encoding="UTF-8"?>
<sm:Messages xmlns:sm="http://sap.com/xi/XI/SplitAndMerge">
<Message1>
...
</Message1>
</sm:Messages>
312
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Next Steps
The following header is supported by this step:
● AggregatedCompletedBy
This header is relevant for use cases with message aggregation.
The header attribute can only have one of the following values:
○ timeout
Processing of the aggregate has been stopped because the configured Completion Timeout has been
reached.
○ predicate
Processing of the aggregate has finished because the Completion Condition has been met.
Related Information
Multi-Mappings [page 384]
2.5.6.4
Defining Multicast of Messages
Prerequisites
● You have created an integration project and integration flow.
● You have opened the Integration Designer perspective.
Context
Multicast enables you to send the same message to more than one receiver. This allows you to perform
multiple operations on the same message in a single integration flow. Without multicast, you require separate
integration processes to perform different operations on the same incoming message.
There are two types of multicast that you can choose:
1. Parallel multicast
2. Sequential multicast
Parallel multicast initiates message transfer to all the receiver nodes in parallel.
Sequential multicast provides an option to define the sequence in which the message transfer is initiated to the
receiver nodes.
If you want to aggregate the message that is sent to more than one receiver node, you can use the join and
gather elements.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
313
 Restriction
1. You cannot use Process in Batches option in SuccessFactors adapter with SOAP message protocol
within a multicast branch. For more information, see Configuring SuccessFactors Adapter with SOAP
Message Protocol [page 155].
2. You cannot use Splitter within a Multicast branch.
3. If you are using SFTP receiver with parallel multicast, the message might be corrupted in one or more
of the Multicast branches. The message is corrupted in the branches where the SFTP receiver does not
write the complete data in its respective SFTP files.
You can overcome this limitation in two ways:
1. Add a content modifier before the SFTP receiver. In the content modifier, specify the Body as $
{bodyAs(byte[])}.
2. You can switch from parallel multicast to sequential multicast.
 Remember
You cannot use Exception Subprocess with Multicast as Exception Subprocess is not executed in case of an
exception within the Multicast branches.
If you want to enable the execution of Exception Subprocess when an exception occurs in one of the
Multicast branches, ensure that you use version 1.1 of both Multicast and Integration Process.
Procedure
You use this procedure to add a multicast and join elements to your integration flow.
1. In the Model Configuration editor, access the palette.
2. If you want to add a multicast or join element, perform the following substeps.
a. Choose Message Routing.
b. If you want to add parallel multicast, drag the
flow.
c. If you want to add sequential multicast, drag the
integration flow.
element from palette to the integration
element from the palette to the
3. If you want to combine the messages, see Defining Join and Gather [page 315].
4. Add the necessary elements based on your scenario to complete the integration flow.
5. Save the changes.
314
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.6.5
Defining Join and Gather
Context
The Join element enables you to bring together the messages from different routes before combining them into
a single message. You use this in combination with the Gather element. Join only brings together the messages
from different routes without affecting the content of messages.
The Gather step enables you to merge messages from more than one route in an integration process. You
define conditions based on the type of messages that you are gathering using the Gather step. You can choose
to gather:
1. XML messages of different format
2. XML messages of the same format
3. Plain text messages
Based on this, you choose the strategy to combine the two messages.
● For XML messages of the same format, you can combine without any conditions (multimapping format) or
specify the XPath to the node at which the messages have to be combined.
● For XML messages of different formats, you can only combine the messages
● For plain text messages, you can only specify concatenation as the combine strategy
● Specify valid xpath expression that includes namespace prefixes if incoming payload contains namespace
declarations, including default namespace declarations.
 Remember
● If you want to combine messages that are transmitted to more than one route by Multicast, you need to
use Join before using Gather.
● If you want to combine messages that are split using Splitter, you use only Gather.
If your incoming payload contains namespace declarations including default namespace, ensure that you
specify xpath with namespace prefixes. Also ensure that the namespace prefix mapping is defined in the
runtime configuration. If the xpath you have defined does not exist in any of the branches of the incoming XML,
the scenario fails with an exception.
Consider the following XML:
 Sample Code
<root xmlns="http:defaultnamespace.com">
<f:table xmlns:f="http://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
</root>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
315
f and d are the prefixes defined in the Namespace Mapping field of Runtime Configuration and mapped to the
namespaces http://www.w3schools.com/furniture and http:defaultnamespace.com respectively. Examples
of valid xpaths for the above XML are:
● //f:table
● /d:root/f:table
● /d:root/d:table
Procedure
You use this procedure to combine messages using Gather in an integration process.
1. Open the integration flow in Model Configuration editor.
2. In the palette of the Model Configuration editor, choose Message Routing.
3. To add Join, drag
from the palette to the integration process.
4. Connect all the messages that you want to merge to the
5. To add Gather, drag
element.
from the palette to the integration process.
6. In the Properties tab page, select value in Incoming Format field based on description in table.
Value
Description
XML (Same Format)
If messages from different routes are of the same format
XML (Different Format)
If messages from different routes are of the different for­
mat
Plain Text
If messages from different routes are of the plain text for­
mat
7. Select value for Aggregation Algorithm field based on description given in table.
316
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Incoming Format
Aggregation Algo­
rithm
XML (Same Format)
Combine
Description
Additional Fields
Description
Combine the incoming
messages without any
conditions. The mes­
sages are combined in
Multimapping format.
NA
NA

Note
In case you are us­
ing the mapping
step to map the
output of this
strategy you can
have the source
XSD in the LHS
and specify the
Occurrence as
0..Unbounded.
Combine at XPath
XML (Different For­
mat)
Combine
Combine the incoming Combine from Source
messages at the speci­ (XPath)
fied XPath
Combine the incoming
messages without any
conditions in multi
mapping format.

XPath of the node that
you are using as refer­
ence in the source
message to retrieve
the information.
Combine at Target
(Path)
Path to node which
would act as the root
for combined message
NA
NA
Note
In case you are us­
ing the mapping
step to map the
output of this
strategy you can
add the XSD’s
from the different
multicast
branches one after
another in LHS.
The sequence of
the messages is
important and so
this strategy
makes sense only
with the sequential
multicast.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
317
Incoming Format
Aggregation Algo­
rithm
Plain Text
Concatenate
Description
Additional Fields
Description
Concatenate the infor­
mation from the different sources one after
another
NA
NA
8. Save changes.
This flow element does not work directly with Router. It is recommended to model the flow using Local
Integration Process.
2.5.7 Defining Security Elements
Message-level security features allow you to digitally encrypt/decrypt or sign/verify a message (or both). The
following standards and algorithms are supported.
Context
Ensuring security is important, during message exchange, to preserve the integrity of messages. A sender
participant uses signatures to ensure authenticity of the sender, and encryption to prevent non-repudiation of
messages during the message exchange.
Procedure
Related Information
Signing the Message Content with PKCS#7/CMS Signer [page 320]
Signing the Message Content with an XML Digital Signature [page 323]
Verifying the PKCS#7/CMS Signature [page 338]
Verifying the XML Digital Signature [page 339]
Encrypting and Signing the Message Content with PKCS#7/CMS [page 345]
Encrypting and Signing the Message Content with OpenPGP [page 348]
Decrypting and Verifying the Message Content with OpenPGP [page 350]
Signing the Message Content with Simple Signer [page 319]
318
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.7.1
Signing the Message Content with Simple Signer
Simple Signer makes it easy to sign messages to ensure authenticity and data integrity when sending a
message to participants on the cloud.
Context
You work with the Simple Signer to make the identity of the sender known to the receiver(s) and thus ensure
the authenticity of the messages. This task guarantees the identity of the sender by signing the messages with
a private key using a signature algorithm.
In the integration flow model, you configure the Simple Signer by providing a private key alias. The signer uses
the alias name to get the private key of type DSA or RSA from the keystore. You also specify the signature
algorithm for the key type, which is a combination of digest and encryption algorithms, for example,
SHA512/RSA or SHA/DSA. The Simple Signer uses the algorithm to generate the corresponding signature.
Procedure
1. In the Model Configuration editor, select the Signer element and, from the context menu, select the Switch
to Simple Signer option.
2. To configure the signer with a saved configuration that is available as a template, choose Load Element
Template from the context menu of the Signer element.
3. On the Simple Signer tab page, enter the parameters to create a signature for the incoming message.
Option
Description
Name
Enter a name for the signer. It must consist of alphanumeric ASCII characters or underscores and
start with a letter. The minimum length is 3, the maximum length is 30.
Private Key Alias
Enter an alias to select the private key from the keystore.
You can also specify that the alias is read dynamically from a message header; for example, if you
specify ${header.abc} then the alias value is read from the header with the name "abc“.
Signature
Algorithm
Select a signature algorithm for the RSA or DSA private key type.
Signature Header Enter the name of the message header where the signature value in Base64 format is stored.
Name
4. Save the changes.
5. To save the configuration of the signer as a template, choose Save as Template from the context menu of
the Signer element.
 Note
When you save the configuration of the Signer element as a template, the tool stores the template in
the workspace as <ElementTemplate>.fst.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
319
2.5.7.2
Signing the Message Content with PKCS#7/CMS
Signer
Context
You work with the PKCS#7/CMS signer to make your identity known to the participants and thus ensure the
authenticity of the messages you are sending on the cloud. This task guarantees your identity by signing the
messages with one or more private keys using a signature algorithm.
Working with PKCS#7/CMS Signer
In the integration flow model, you configure the PKCS#7/CMS signer by providing one or more private key
aliases. The signer uses the alias name to get the private keys of type DSA or RSA from the keystore. You also
specify the signature algorithm for each key type, which is a combination of digest and encryption algorithms,
for example, SHA512/RSA or SHA/DSA. The PKCS#7/CMS signer uses the algorithm to generate
corresponding signatures. The data generated by the signer is known as the Signed Data.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Right-click a connection within the pool and choose
Add Security Element
Message Signer .
3. In the Model Configuration editor, select the Signer element.
 Note
By default, the Signer is of type PKCS#7/CMS. If you want to work with XML Digital Signature or Simple
Signature, choose the relevant option from the context menu.
4. To configure the signer with a saved configuration that is available as a template, choose Load Element
Template from the context menu of the Signer element.
5. In the Properties view, enter the details to sign the incoming message with one or more signatures.
Parameters and Values of PKCS#7/CMS Signer
Parameter
Description
Block Size (in bytes)
Enter the size of the data that is to be encoded.
If you enter a value equal to or less than 0, the whole data
is encoded.
320
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Include Content in Signed Data
You can choose to include the original content that is to be
signed in the SignedData element. This SignedData ele­
ment is written to the message body.
You also have the option to keep the original content in the
message body and to include the signed data elsewhere:
Up to version 1.2 of the PKCS#7/CMS Signer you can
choose to include the signed data in the
SapCmsSignedData header. From version 1.3 of the
PKCS#7/CMS Signer onwards, you can include the signed
data in the SapCmsSignedData property.
Encode Signed Data with Base64
You can also Base64-encode the signed data in either the
message body or the message header, to further protect it
during message exchange.

Note
When you Base64-encode the signed data, you en­
code either the message header or body, depending
on where the signed data is placed. When verifying
the message, make sure you specify which part of the
message (header or body) was Base64-encoded.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
321
Parameter
Description
Signer Parameters
For each private key alias, define the following parameters:
○
Private Key Alias
Enter an alias for selecting a private key from the key­
store. You can enter ${header.headername} or
${property.propertyname} to read the name
dynamically from a header or exchange property

Note
Consider the security implications when deriving
key aliases from header attributes as they might
be influenced by inbound adapters or exported/
published by outbound adapters. It is more se­
cure to use (exchange) properties for this pur­
pose.
○
Signature Algorithm
Specify the signature (digest) algorithm.
○
Include Certificates
If you activate this option (value true), the certificate chain corresponding to the private key will be
added to the SignedData element.
○
Include Signing Time
If you activate this option (value true), the signing
time for the signed attributes will be added to the
SignedData element.
6. Save the changes.
7. To save the configurations of the signer as a template, choose Save as Template from the context menu of
the Signer element.
 Note
When you save the configuration of the Signer element as a template, the tool stores the template in
the workspace as <ElementTemplate>.fst.
322
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.7.3
Signing the Message Content with an XML Digital
Signature
You sign with an XML digital signature to ensure authenticity and data integrity while sending an XML resource
to the participants on the cloud.
Context
Procedure
1. In the Model Configuration editor, select the Signer element and, from the context menu, select the Switch
to XML Digital Signer option.
2. To configure the signer with a saved configuration that is available as a template, choose Load Element
Template from the context menu of the Signer element.
3. On the XML Digital Signer tab page, enter the parameters to create an XML digital signature for the
incoming message.
Parameter
Private Key Alias
Description
Enter an alias for selecting a private key from keystore.
You can also enter ${header.headername} or ${prop­
erty.propertyname} to read the name dynamically from a
header or exchange property.
Signature Algorithm
Signature algorithm for the RSA or DSA private key type
Using the private key, the sender encrypts the digest.
Digest Algorithm
Digest algorithm that is used to calculate a digest from the
canonicalized XML document
Note that if the digest algorithm is not specified, the digest
algorithm of the signature algorithm is used by default.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
323
Parameter
Signature Type
Description
○
Enveloping XML Signature
The input message body is signed and embedded in
the signature. This means that the message body is
wrapped by the Object element, where Object is
a child element of the Signature element.
○
Enveloped XML Signature
The digital signature is embedded in the XML mes­
sage to be signed. This means that the XML message
contains the Signature element as one of its child
elements.
○
Detached XML Signature
The digital signature is a sibling of the signed ele­
ment. There can be several XML signatures in one
XML document.
XML Schema file path (only if the option Detached XML
Choose Browse and select the file path to the XML
Signatures is selected)
schema file that is used to validate the incoming XML
document. This file has to be in the package
source.main.resources.xsd
Signatures for Elements (only if the option Detached XML
Choose Add to enter the XPath to the attribute of type ID,
Signatures is selected)
in order to identify the element to be signed. Example: /
nsx:Document/SubDocument/@Id
Namespaces prefixes must be defined in the namespaces
mapping of the runtime configuration.
Parent Node (only if the option Enveloped XML Signature is Specify how the parent element of the Signature element
selected for the attribute Signature Type)
is to be specified. You have the following options:
○
Specified by Name and Namespace (using local name
and namespace)
○
Specified by XPath expression (using an XML Path
Language (XPath))
Parent Node Name (only if the option Enveloped XML
A local name of the parent element of the Signature ele­
Signature is selected for the attribute Signature Type and
ment
Specified by Name and Namespace is selected for Parent
Node)
This attribute is only relevant for Enveloped XML Signa­
ture case. The Signature element is added at the end of
the children of the parent.
Parent Node Namespace (only if the option Enveloped
Namespace of the parent element of the Signature ele­
XML Signature is selected for the attribute Signature Type
ment
and Specified by Name and Namespace is selected for
Parent Node)
This attribute is only relevant for Enveloped XML Signa­
ture case. In the Enveloped XML Signature case, a null
value is also allowed to support no namespaces. An empty
value is not allowed.
324
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
XPath Expression (only if the option Enveloped XML
Enter an XPath expression for the parent node to be speci­
Signature is selected for the attribute Signature Type and
fied.
Specified by XPath expression is selected for Parent Node)
This attribute is only relevant for Enveloped XML Signa­
ture case.
Key Info Content
Specifies which signing key information will be included in
the KeyInfo element of the XML signature. You can select a
combination of the following attribute values:
○
X.509 Certificate Chain
X509Certificate elements representing the certificate
chain of the signer key

Note
The KeyInfo element might not contain the whole
certificate chain, but only the certificate chain
that is assigned to the key pair entry.
○
X.509 Certificate
X509Certificate element containing the X.509 certificate of the signer key
○
Issuer Distinguished Name and Serial Number
X509IssuerSerial element containing the issuer dis­
tinguished name and the serial number of the X.509
certificate of the signer key
○
Key Value
Key Value element containing the modulus and expo­
nent of the public key

Note
You can use any combination of these four attrib­
ute values.
Sign Key Info
With this attribute you can specify a reference to the Key­
Info element.
For more information about the various attributes, see the following:
http://www.w3.org/TR/xmldsig-core/
4. On the Advanced tab page, under Transformation, specify the following parameters.
Property
Description
Canonicalization Method for SignedInfo
Specify the canonicalization method to be used to trans­
form the SignedInfo element that contains the digest
(from the canonicalized XML document).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
325
Property
Description
Transform Method for Payload
Specify the transform method to be used to transform the
inbound message body before it is signed.
○ CamelXmlSignatureTransformMethods
Specifies transformation methods in a comma-separated list.
You can use this header to specify transformation methods in a comma-separated list. This header will
overwrite the value of the option Transform Method for Payload.
 Example
 Sample Code
Example of this use case: The XML signature verifier of the receiving system expects an XML
signature as shown in the following code snippet.
The signature is a detached signature, because the signature element is a sibling of the signed
element B. However, the receiving system requires the enveloped-signature transform method to
be specified in the Transforms list. To ensure this, you have to configure a detached signature in the
XML Signer step, then add a Content Modifier step before the XML Signer step, where you specify
the header "CamelXmlSignatureTransformMethods" with the constant value “http://www.w3.org/
2000/09/xmldsig#enveloped-signature,http://www.w3.org/TR/2001/REC-xml-c14n-20010315".
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<B ID="IDforB">
...
</B>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
Id="_6bf13099-0568-4d76-8649-faf5dcb313c0">
<ds:SignedInfo>
...
<ds:Reference URI="#IDforB">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/
2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://
www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</ds:Transforms>
...
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>aUDFmiG71</ds:SignatureValue>
</ds:Signature>
<root>
For more information about the various methods, see the following:
http://www.w3.org/2000/09/xmldsig#enveloped-signature,http://www.w3.org/TR/2001/REC-xmlc14n-20010315
http://www.w3.org/2000/09/xmldsig#enveloped-signature
http://www.w3.org/TR/2001/REC-xml-c14n-20010315
http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments
326
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
http://www.w3.org/2001/10/xml-exc-c14n#
http://www.w3.org/2001/10/xml-exc-c14n#WithComments
5. On the Advanced tab page, under XML Document Parameters, specify the following parameters.
Property
Description
Reference Type
Enter the value of the type attribute of the content refer­
ence.
If you enter null or empty, no reference type is created.
More information: http://www.w3.org/2000/09/
xmldsig#Object
Namespace Prefix
Enter a prefix for the XML signature namespace.
Default value is ds.
Signature Id
Specifies the value of the Id attribute of the Signature ele­
ment.
If you specify no value, no Id attribute is added to the Sig­
nature element.
Output Encoding
Select an encoding scheme for the output XML document.
The encoded output document will be written into the
message header. If no encoding scheme is specified, the
output will be UTF-8-encoded.
Exclude XML Declaration
Specify whether the XML declaration header shall be
omitted in the output XML message.
Disallow DOCTYPE Declaration
Specify whether DTD DOCTYPE declarations shall be dis­
allowed in the incoming XML message.
6. Save the changes.
7. To save the configurations of the signer as a template, choose Save as Template from the context menu of
the Signer element.
 Note
When you save the configuration of the Signer element as a template, the tool stores the template in
the workspace as <ElementTemplate>.fst.
Related Information
XML Digital Signature [page 328]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
327
2.5.7.3.1
XML Digital Signature
The following types of XML digital signatures are supported:
● Enveloping XML Signature: The input message body is signed and embedded within the signature. This
means that the message body is wrapped by the Object element, where Object is a child element of the
Signature element.
 Example
A template of the enveloping signature is shown below and describes the structure supported by XML
signature implementation. ("?" denotes zero or one occurrence; the brackets [] denote variables whose
values can vary.)
<Signature>
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<Reference URI="#[generated object_id]"
type="[optional_type_value]">
<Transform Algorithm="canonicalization method">
<DigestMethod>
<DigestValue>
</Reference>
(<Reference URI="#[generated keyinfo_id]">
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xmlc14n-20010315"/>
<DigestMethod>
<DigestValue>
</Reference>)?
</SignedInfo>
<SignatureValue>
(<KeyInfo Id="[generated keyinfo_id]">)?
<--!The Id attribute is only added if there exists a reference-->
<Object Id="[generated object_id]"/>
</Signature>
● Enveloped XML Signature: The digital signature is embedded in the XML message to be signed. This
means that the XML message contains the Signature element as one of its child elements. The Signature
element contains information such as:
○ Algorithms to be used to obtain the digest value
○ Reference with empty URI, which means the entire XML resource
○ Optional reference to the KeyInfo element (attribute Also Sign Key Info)
 Example
A template of the enveloped signature is shown below and describes the structure supported by XML
signature implementation. ("?" denotes zero or one occurrence; the brackets [] denote variables whose
values can vary):
<[parent element]>
...
<Signature>
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<Reference URI="" type="[optional_type_value]">
328
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
<Transform Algorithm="http://www.w3.org/2000/09/
xmldsig#enveloped-signature"/>
<Transform Algorithm=[canonicalization method]/>
<DigestMethod>
<DigestValue>
</Reference>
(<Reference URI="#[generated keyinfo_Id]">
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xmlc14n-20010315"/>
<DigestMethod>
<DigestValue>
</Reference>)?
</SignedInfo>
<SignatureValue>
(<KeyInfo Id="[generated keyinfo_id]">)?
<--!The Id attribute is only added if there exists a reference-->
</Signature>
</[parent element]>
● Detached XML Signature: The digital signature is a sibling of the signed element. There can be several
XML signatures in one XML document.
You can sign several elements of the message body. The elements to be signed must have an attribute of
type ID. The ID type of the attribute must be defined in the XML schema that is specified during the
configuration.
Additionally, you specify a list of XPath expressions pointing to attributes of type ID. These attributes
determine the elements to be signed. For each element, a signature is created as a sibling of the element.
The elements are signed with the same private key. Elements with a higher hierarchy level are signed first.
This can result in nested signatures.
 Example
A template of the detached signature is shown below and describes the structure supported by XML
signature implementation. ("?" denotes zero or one occurrence; the brackets [] denote variables whose
values can vary):
 Sample Code
(<[signed element] Id="[id_value]">
<!-- signed element must have an attribute of type ID -->
...
</[signed element]>
<other sibling/>* <!-- between the signed element and the corresponding
signature element, there can be other siblings -->
<Signature>
<!-- signature element becomes the last sibling of the signed element -->
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<Reference URI="#[id_value]" type="[optional_type_value]">
<!-- reference URI contains the ID attribute value of the
signed element -->
<Transform Algorithm=[canonicalization method]/>
<DigestMethod>
<DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>
<!-- The Id attribute is only added if there exists a reference with
the corresponding URI -->
</Signature>)+
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
329
Note that the following elements are generated and cannot be configured with the Integration Designer:
● Key Info ID
● Object ID
The sender canonicalizes the XML resource to be signed, based on the specified transform algorithm. Using a
digest algorithm on the canonicalized XML resource, a digest value is obtained. This digest value is included
within the 'Reference' element of the 'SignedInfo' block. Then, a digest algorithm, as specified in the signature
algorithm, is used on the canonicalized SignedInfo. The obtained digest value is encrypted using the sender's
private key.
 Note
Canonicalization transforms the XML document to a standardized format, for example, canonicalization
removes white spaces within tags, uses particular character encoding, sorts namespace references and
eliminates redundant ones, removes XML and DOCTYPE declarations, and transforms relative URIs into
absolute URIs. The representation of the XML data is used to determine if two XML documents are
identical. Even a slight variation in white spaces results in a different digest for an XML document.
2.5.7.4
Signing the Message Content with XML Advanced
Electronic Signature
XML Advanced Electronic Signature (XAdES) allows you to create digital signatures based on XML Digital
Signature that include additional qualifying properties.
Context
The additional properties allow you to create signatures that are compliant with the European Directive (http://
eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2000:013:0012:0020:EN:PDF ).
XAdES is an industry standard based on XML Signature and issued by the European Telecommunications
Standards Institute (ETSI). It allows you to enhance the digital signature with additional data, for example,
timestamps to provide evidence that the signature key was valid at the time the signature was created.
The following XAdES forms are supported:
XAdES Forms
Form
Allows you to ...
XAdES-BES (XAdES-BES (1) and XAdES- Create an electronic signature based on XML Digital Signature that includes ad­
BES (2))
ditional properties to further qualify the signature.
(XAdES Basic Electronic Signature)
330
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Form
Allows you to ...
XAdES-EPES
Create an electronic signature based on XML Digital Signature that unambigu­
(XAdES Explicit Policy based Electronic
ously refers to a signature policy agreed between signer and verifier. An elec­
Signature)
tronic signature built in this way enforces the usage of the signature policy for
signature validation and thus increases the security level of the usage of the digi­
tal signature.
 Note
There are additional XAdES forms defined by the specification. SAP currently only supports XAdES-BES
and XAdES-EPES.
For more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf
.
Procedure
Related Information
Signing the Message Content with XAdES-BES (1) [page 332]
Signing the Message Content with XAdES-BES (2) [page 334]
Signing the Message Content with XAdES-EPES [page 336]
Message Headers [page 337]
Limitations [page 331]
2.5.7.4.1
Limitations
SAP currently only supports XAdES-BES and XAdES-EPES. There are a number of additional limitations.
● No support for the QualifyingPropertiesReference element (see section 6.3.2 of the XAdES
specification at http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf
).
● No support for signature forms XAdES-T and XAdES-C.
● No support for the Transforms element contained in the SignaturePolicyId element contained in the
SignaturePolicyIdentifier element.
● No support of the CounterSignature element; this implies that there is no support for the
UnsignedProperties element.
● At most one DataObjectFormat element is supported.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
331
More than one DataObjectFormat element does not make any sense in the use cases supported by the
Signer step, because only one signed data object is expected (the incoming message body to the XML
signer).
● At most one CommitmentTypeIndication element is supported.
More than one CommitmentTypeIndicationelement does not make any sense in the use cases
supported by the Signer step, because only one signed data object is expected (the incoming message
body to the XML signer).
● A CommitmentTypeIndication element always contains the AllSignedDataObjects element.
The ObjectReference element within a CommitmentTypeIndication element is not supported.
● No support of the AllDataObjectsTimeStamp element (it requires a time authority).
● No support of the IndividualDataObjectsTimeStamp element (it requires a time authority).
2.5.7.4.2
Signing the Message Content with XAdES-BES (1)
This option allows you to add timestamps (for the signing time), a reference to the signer's key certificate, and
other information that further qualifies the signature.
Context
For more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf
.
Procedure
1. In the Model Configuration editor, select the Signer element and, from the context menu, select the Switch
to XAdES-BES (1) option.
2. Add the signing time and the certificate to the signature.
Option
Description
Time
Select this option if you want to add the signing time to the signature.
This measure helps to provide evidence that the signature key was valid at the time the signa­
ture was created.
Certificate
Specify whether the certificate of the signing key is to be added to the signature.
You have the following options:
○
None
○
Certificate Only
○
Certificate Chain
Add no certificate.
Add digest value, issuer, and serial number of the signing certificate.
Add digest value, issuer, and serial number of the certificates of the certificate chain.
332
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Option
Description
Digest Algorithm
(only when either
Specify a digest algorithm that is to be used to calculate a digest value from the certificate.
This measure helps to control whether the certificate that is used to verify the message content
Certificate
Only or
Certificate
Chain is selected
corresponds to the one that has been used to sign the message content.
SHA256 is proposed as the default.
for Certificate)
Specify a reference to the certificate.
Certificate URI
If as Certificate you have selected Certificate Only, only one URI is allowed.
If as Certificate you have selected Certificate Chain, you can add for each certificate in
the certificate chain an URI. The URI must be added at the position where the corresponding
certificate in the chain is located. At the position 0 the signing certificate URI must be placed. If
for a certain certificate in the chain no URI is available, enter an empty string at the correspond­
ing place in the URI list.
Adding the signer's key certificate and its digest value to the signed document makes sure that the signed
document contains an unambiguous reference to the signer's certificate.
3. Specify the signer role.
These properties allow you to specify the role of the signer in order to make clear the signer's position in
the company or organization. Doing this helps provide evidence to the verifier that the signer is empowered
by the organization to perform the signing task.
Option
Description
Claimed Roles
(optional)
Specify the claimed roles of the signer.
To specify a claimed role, choose Add and enter a text or an XML fragment with the root element
ClaimedRole.
Certified Roles
(optional)
Specify the roles of the signer which are certified by an attribute certificate.
An attribute certificate associates the identifier of a certificate to some attributes of its owner, in this
case, to a role
The specified attribute certificates must be base-64 encoded.
To specify a certified role, choose Add and specify the following attributes:
○
Encoding
Select the encoding scheme.
An empty string indicates that the Encoding attribute is not specified. In this case, it is assumed
that the PKI data is ASN.1 data encoded in DER.
○
ID (optional)
4. Under Data Object Format, specify the format of the signed data.
Option
Description
Description (optional)
Provide an informal text to describe the format of the signed data.
MIME Type (optional)
Specify the Internet Media Type (MIME type) that determines the data object format.
You need to enter the MIME type manually.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
333
Option
Description
Example: text/xml
This information can help to parse the signed document correctly.
5. Specify the Identifier of the data object format.
Option
Description
Name
Specify an identifier to indicate the format of a signed data.
You can specify the identifier by one of the following options:
○
By means of a Uniform Resource Identifier (URI) (preferred option when deal­
ing with XML documents)
In this case, the Name of the identifier consists of the identifying URI. In this
○
By means Object Identifier (OID) when using ASN.1 (Abstract Syntax Notation
One)
To support an OID, the content of Identifier consists of an OID, either encoded
case, the property Qualifier must not be specified (empty string).
as Uniform Resource Name (URN) or as Uniform Resource Identifier (URI). The
optional Qualifier attribute can be used to provide a hint about the applied en­
coding (values OIDAsURN or OIDAsURI).
Qualifier (only relevant if an
Identifier Name has been
specified)
Further qualify how the identifier is defined in case Abstract Syntax Notation One
(ASN 1) is used.
You can select one of the following values:
○
○
○
Description (only relevant if an
Identifier Name has been
specified)
empty string
OIDAsURI – uses Uniform Resource Name.
OIDAsURN – uses Uniform Resource Name.
Provide a reference to further documentation of the identifier.
Documentation Reference (only
relevant if an Identifier Name
has been specified)
2.5.7.4.3
Signing the Message Content with XAdES-BES (2)
This option allows you to add further contextual information to the signature, like, for example, the place where
the signature has been created, or the type of commitment assured by the signer when creating the signature.
Context
For more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf
334
PUBLIC
.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the Model Configuration editor, select the Signer element and, from the context menu, select the Switch
to XAdES-BES (2) option.
2. Under Production Place enter information on the purported place where the signer claims to have
produced the signature (City, State/Province, Postal Code, and Country Name).
3. Specify the commitment to be undertaken by the signer (for example, proof of origin, proof of receipt,
proof of creation).
Option
Description
Commitment
Specify the commitment. You can select one of the following values:
○ Proof of origin
Indicates that the signer recognizes to have created, approved and sent the signed data ob­
ject.
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfOrigin
○
.
Proof of receipt
Indicates that signer recognizes to have received the content of the signed data object.
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfReceipt
○
.
Proof of delivery
Indicates that the trusted service provider (TSP) providing that indication has delivered a
signed data object in a local store accessible to the recipient of the signed data object.
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfDelivery
○
.
Proof of sender
Indicates that the entity providing that indication has sent the signed data object (but not
necessarily created it).
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfSender
○
.
Proof of approval
Indicates that the signer has approved the content of the signed data object.
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfApproval
○
.
Proof of creation
Indicates that the signer has created the signed data object (but not necessarily approved,
nor sent it).
The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfCreation
Description
Enter a free text description of the commitment.
Documentation
Reference
Enter references (URIs) to one or more documents where the commitment is described.
Commitment
Qualifier
Enter additional qualifying information on the commitment made by the signer.
.
Enter a text or an XML fragment with the root element CommitmentTypeQualifier.
Adding these properties helps to avoid legal disputes as the commitment undertaken by the signer can be
compared with the commitment made in the context of an applied signature policy.
4. Under XML Document Parameters, select the namespace of the XAdES version and enter a namespace
prefix.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
335
2.5.7.4.4
Signing the Message Content with XAdES-EPES
This option allows you to create a digital signature based on XML Digital Signature that unambiguously refers
to a signature policy agreed between signer and verifier. An electronic signature created this way enforces the
usage of the signature policy for signature validation and thus increases the security level of the digital
signature.
Context
A signature policy is a set of rules for the creation and validation of a digital signature.
For more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf
.
Procedure
1. In the Model Configuration editor, select the Signer element and, from the context menu, select the Switch
to XAdES-EPES option.
2. Specify the properties of the signature.
Option
Description
Signature Policy
Specify whether a signature policy is to be added, and, if yes, in which form this should
be done.
○ None
○
Implied
The signature policy can be unambiguously derived from the semantics of the type
of data object(s) being signed, and some other information.
Using this option, the SignaturePolicyImplied element will be part of the signature.
○
Explicit ID
The signature contains an identifier of a signature policy together with a hash value
of the signature policy that allows verification that the policy selected by the signer
is the one being used by the verifier.
Identifier (only if the value
Explicit ID has been
selected for Signature
Policy)
Specify an identifier that uniquely identifies a specific version of the signature policy.
You can specify the identifier by one of the following options:
○
By means of a Uniform Resource Identifier (URI) (preferred option when dealing
with XML documents)
In this case, the Name of the Identifier consists of the identifying URI. In this case,
the property Qualifier must not be specified (empty string).
○
By means of an Object Identifier when using ASN.1 (Abstract Syntax Notation One)
To support an OID, the content of Identifier consists of an OID, either encoded as a
Uniform Resource Name (URN) or as a Uniform Resource Identifier (URI). The op­
tional Qualifier attribute can be used to provide information about the applied en­
coding (values OIDAsURN or OIDAsURI).
336
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Option
Description
Identifier Qualifier (only if
the value Explicit ID
has been selected for
Signature Policy)
Qualify how the identifier is defined in case Abstract Syntax Notation One (ASN 1) is
used.
You can select one of the following values:
○
○
○
Empty string
OIDAsURI – uses Uniform Resource Name.
OIDAsURN – uses Uniform Resource Name.
Description (only if the
value Explicit ID has
been selected for
Signature Policy)
Enter a description of the signature policy.
Documentation Reference
(only if the value
Explicit ID has been
selected for Signature
Policy)
Provide a reference to further documentation of the signature policy.
Digest Algorithm (only if
the value Explicit ID
has been selected for
Signature Policy)
Specify the digest algorithm used to calculate the digest value of the signature policy
document.
Digest Value (only if the
value Explicit ID has
been selected for
Signature Policy)
Specify the digest value of the signature policy document (base 64-encoded).
As default, SHA256 is used.
You can either enter the digest value manually or calculate it.
To calculate the digest value, you have the following options:
○
Calculate from Identifier
Calculates the digest value from the value of the Identifier provided above. Note that
the Identifier must be a valid URL and start with http:// or https://.
○
Policy Qualifier (only if the
value Explicit ID has
been selected for
Signature Policy)
2.5.7.4.5
Browse to local File
Calculates the digest value from the content of a file.
Enter additional information qualifying the signature policy. To do this, enter text or an
XML fragment with the root element SigPolicyQualifier.
Message Headers
For certain message headers you can define specific elements in the XAdES form.
● CamelXmlSignatureXAdESQualifyingPropertiesId
Specifies the Id attribute value of the QualifyingProperties element.
● CamelXmlSignatureXAdESSignedDataObjectPropertiesId
Specifies the Id attribute value of the SignedDataObjectProperties element.
● CamelXmlSignatureXAdESSignedSignaturePropertiesId
Specifies the Id attribute value of the SignedSignatureProperties element.
● CamelXmlSignatureXAdESDataObjectFormatEncoding
Specifies the value of the Encoding element of the DataObjectFormat element.
● CamelXmlSignatureXAdESNamespace
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
337
Overwrites the namespace parameter value.
● CamelXmlSignatureXAdESPrefix
Overwrites the prefix parameter value.
2.5.7.5
Verifying the PKCS#7/CMS Signature
You perform this task to ensure that the signed message received over the cloud is authentic.
Context
In the integration flow model, you configure the Verifier by providing information about the public key alias, and
whether the message header or body is Base64-encoded, depending on where the Signed Data is placed. For
example, consider the following two cases:
● If the Signed Data contains the original content, then in the Signature Verifier you provide the Signed Data
in the message body.
● If the Signed Data does not contain the original content, then in the Signature Verifier you provide the
Signed Data in the header SapCmsSignedData and the original content in the message body.
The Verifier uses the public key alias to obtain the public keys of type DSA or RSA that are used to decrypt the
message digest. In this way the authenticity of the participant who signed the message is verified. If the
verification is not successful, the Signature Verifier informs the user by raising an exception.
Under Public Key Alias you can enter one or multiple public key aliases for the Verifier.
 Note
In general, an alias is a reference to an entry in a keystore. A keystore can contain multiple public keys. You
can use a public key alias to refer to and select a specific public key from a keystore.
You can use this attribute to support the following use cases:
● Management of the certificate lifecycle. Certificates have a certain validity period. Using the Public Key
Alias attribute in the Verifier step, you can enter both an alias of an existing certificate (which will expire
within a certain time period) and an alias for a new certificate (which does not necessarily have to exist
already in the keystore). In this way, the Verifier is configured to verify messages signed by either the old or
the new certificate. As soon as the new certificate has been installed and imported into the keystore, the
Verifier refers to the new certificate. In this way, certificates can be renewed without any downtime.
● You can use different aliases to support different signing senders with the same Verifier step. Using the
Public Key Alias attribute, you can specify a list of signing senders.
 Note
Exceptions that occur during runtime are displayed in the Message Processing Log view of the Operations
Integration perspective.
338
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Right-click a connection within the pool and choose
Add Security Element
Signature Verifier .
3. In the Model Configuration editor, select Verifier.
 Note
By default, the Verifier is of type PKCS#7/CMS. If you want to work with XML Signature Verifier, then
choose the Switch to XML Signature Verifier option from the context menu.
4. In the Properties view, enter the details to verify the signatures of the incoming message.
Parameters and Values of PKCS#7/CMS Signature Verifier
Parameter
Description
Header is Base64 Encoded
Select this option to verify if the Signed Data encoded in
Base64 is included in the header.
Body is Base64 Encoded
Select this option to verify if the Signed Data encoded in
Base64 is included in the message body.
Public Key Alias
Enter an alias name to select a public key and correspond­
ing certificate from the keystore. You can enter $
{header.headername} or $
{property.propertyname} to read the name dy­
namically from a header or exchange property.

Note
Consider the security implications when deriving key
aliases from header attributes as they might be influenced by inbound adapters or exported/published by
outbound adapters. It is more secure to use (ex­
change) properties for this purpose.
5. Save the changes.
2.5.7.6
Verifying the XML Digital Signature
Context
The XML Signature Verifier validates the XML signature contained in the incoming message body and returns
the content which was signed in the outgoing message body.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
339
This step supports the following options:
● Enveloping and enveloped XML signatures
In this case, the following references are supported: First, one reference whose URI references the only
allowed 'Object' element via ID, and, secondly, an optional reference to the optional KeyInfo element via ID.
 Note
For enveloping and enveloped XML signatures the incoming message body must contain only one XML
signature.
● Detached XML signatures
Working of XML Signature Verifier
In the validation process, a public key is required and it is fetched from the worker node keystore. On receiving
the XML message, the Verifier canonicalizes the data identified by the 'Reference' element and then digests it
to give a digest value. The digest value is compared against the digest value available under the 'Reference'
element of the incoming message. This helps to ensure that the target elements were not tampered with.
Then, the digest value of the canonicalized 'SignedInfo' is calculated. The resulting bytes are verified with the
signature on the 'SignedInfo' element, using the sender's public key. If both the signature on the 'SignedInfo'
element and each of the 'Reference' digest values verify correctly, then the XML signature is valid.
Procedure
1. In the Model Configuration editor, select Verifier element and from the context menu, select Switch to XML
Signature Verifier option.
2. In the XML Signature Verifier tab page, enter the parameters to verify XML digital signature for the
incoming message.
340
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameters and Values of XML Signature Verifier
Parameter
Description
Expected Signature Type
Select the expected Signature type:
○
Enveloping or Enveloped XML Signature: If the sig­
nature is contained within the content or the signa­
ture contains the signed data.
Verifying Enveloping Signature: If the incoming
message has enveloping signature
○
an optional 'Reference' to the optional 'KeyInfo'
element via ID is supported
○
'References' can have one optional transform
whose algorithm must be a canonicalization
method
So it implies, an enveloping XML signature with only
the following structure is supported ("?" denotes zero
or one occurrence, the brackets [] denotes variables
whose values can vary).
<Signature>
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<Reference
URI="#[object_id]">
(<Transform
Algorithm=[canonicalization
method]/>)?
<DigestMethod>
<DigestValue>
</Reference>
(<Reference
URI="#[keyinfo_id]">
(<Transform
Algorithm=[canonicalization
method]/>)?
<DigestMethod>
<DigestValue>
</Reference>)?
</SignedInfo>
<SignatureValue>
(<KeyInfo
(Id="[keyinfo_id]")?>)?
<Object Id="[object_id]"/>
</Signature>
Verifying Enveloped Signature: If the incoming mes­
sage has enveloped signature
○
One reference with empty URI and an optional
reference to the KeyInfo element via its ID is al­
lowed
○
An additional transform containing a canonicali­
zation method is supported, beside the trans­
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
341
Parameter
Description
form with algorithm "http://www.w3.org/
2000/09/xmldsig#enveloped-signature".
So it implies, an enveloped XML signature with only
the following structure is supported ("?" denotes zero
or one occurrence, the brackets [] denotes variables
whose values can vary).
<[parent]>
<Signature>
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<Reference URI="">
<Transform
Algorithm="http://www.w3.org/
2000/09/xmldsig#envelopedsignature"/>
(<Transform
Algorithm="[canonicalization
method]"/>)?
<DigestMethod>
<DigestValue>
</Reference>
(<Reference
URI="#[keyinfo_id]">
(<Transform
Algorithm="[canonicalization
method]"/>)?
<DigestMethod>
<DigestValue>
</Reference>)?
</SignedInfo>
<SignatureValue>
(<KeyInfo
(Id="[keyinfo_id]")?>)?
</Signature>
</[parent]>
○
Detached XML Signatures: If the signature is con­
tained within the content or the signature contains
the signed data.
Verifying Detached Signature If the incoming mes­
sage has detached signature:
○
Signature element must be a sibling of the
signed element
○
Signed element must have an attribute of type ID
○
Signature references signed element via the ID
value
So it implies, a detached XML signature with only the
following structure is supported ("?" denotes zero or
342
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
one occurrence, the brackets [] denotes variables
whose values can vary).
(<[signed element]
Id="[id_value]">
<!-- signed element must
have an attribute of type ID -->
...
</[signed element]>
<other sibling/>* <!-between the signed element and
the corresponding signature
element, there can be other
siblings -->
<Signature>
<SignedInfo>
<CanonicalizationMethod>
<SignatureMethod>
<ReferenceURI="#[id_value]"type="
[optional_type_value]">
<!-- reference URI
contains the ID attribute value
of the signed element -->
<TransformAlgorithm=[canonicaliza
tion method]/>
<DigestMethod>
<DigestValue>
</Reference>
(<ReferenceURI="#[generated_keyin
fo_Id]">
<TransformAlgorithm="http://
www.w3.org/TR/2001/REC-xmlc14n-20010315" />
<DigestMethod>
<DigestValue>
</Reference>)?
</SignedInfo>
<SignatureValue>
(<KeyInfoId="[generated_keyinfo_i
d]">)?
<Signature>)+
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
343
Parameter
Check for Key Info Element
Description
Select this option to check that the XML Signature con­
tains a Key Info element
The KeyInfo element has to contain either the certificate
chain, the certificate, the Issuer Distinguished Name and
Serial Number, or the Key Value element (or combinations
of these attributes).

Note
In case multiple public key aliases are specified (using
the Public Key Alias attribute), this option is manda­
tory (to make sure that from the KeyInfo the public
key can be derived).
Disallow DOCTYPE Declaration
Select this option to disallow DTD DOCTYPE declaration in
the incoming XML message
344
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Public Key Alias
Enter an alias name to select a public key and correspond­
ing certificate
Using the Public Key Alias, you can enter one or multiple
public key aliases for the Verifier.

Note
In general, an alias is a reference to an entry in a key­
store. A keystore can contain multiple public keys. You
can use a public key alias to refer to and select a spe­
cific public key from a keystore.
You can use this attribute to support the following use
cases:
○
Management of the certificate lifecycle: Certificates
have a certain validity period. Using the Public Key
Alias attribute in the Verifier step, you can enter both
an alias of an existing certificate (which will expire
within a certain time period) and an alias for a new
certificate (which not necessarily has to exist already
in the keystore). That way, the Verifier is configured to
verify messages signed by either the old or the new
certificate. As soon as the new certificate has been in­
stalled and imported into the keystore, the Verifier re­
fers to the new certificate. That way, certificates can
be renewed without any downtime.
○
You can use different aliases to support different sign­
ing senders with the same Verifier step. Using the
Public Key Alias attribute, you can specify a list sign­
ing senders.
3. Save the changes.
2.5.7.7
Encrypting and Signing the Message Content with
PKCS#7/CMS
Context
You perform this task to protect the message content from being altered while it is being sent to other
participants on the cloud, by encrypting the content. In the integration flow model, you configure the Encryptor
by providing information on the public key alias, content encryption algorithm, and secret key length. The
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
345
encryptor uses one or more receiver public key aliases to find the public key in the keystore. The encryption
process uses a symmetric key of specified length for content encryption. The symmetric key is encrypted by
the public recipient key with the cipher. The encryption is determined by the type of Content Encryption
Algorithm that you select. The encrypted content and the receiver information containing the symmetric
encryption key are placed in the message body.
In addition to encrypting the message content, you can also sign the content to make your identity known to
the participants and thus ensure the authenticity of the messages you are sending. This task guarantees your
identity by signing the messages with one or more private keys using a signature algorithm.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Right-click a connection within the pool and choose
Add Security Element
Content Encryptor .
3. In the Model Configuration editor, select Encryptor.
4. To configure the encryptor with a saved configuration that is available as a template, choose Load Element
Template from the context menu of the Encryptor element.
5. In the Properties view, specify the general settings for encryption.
Block Size (in bytes)
Enter the size of the data that is to be encoded.
If you enter a value equal to or less than 0, the whole data
is encoded.
Encode Body with Base64
Select this option if the message body will be base64-en­
coded.
Signatures
Select one of the following options:
○
Enveloped Data Only
Select this option if you want to apply encryption
only.
○
Signed and Enveloped Data
Select this option if you want to apply both encryp­
tion and signing.
6. Specify the settings for the encryption process (under Encryption).
Content Encryption Algorithm
Specify the algorithm that is to be used to encrypt the
payload.
Secret Key Length
Specify the key length.
The offered key lengths depend on the chosen encryption
algorithm.
346
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Receiver Public Key Alias
Specify one or more aliases.
Enter an alias to select the public key from the keystore.
You can enter ${header.headername} or $
{property.propertyname} to read the name dy­
namically from a header or exchange property.
7. Specify the settings for the signing process under Signature (only if you selected Signed and Enveloped
Data for Signatures in PKCS7 Message).
For each private key alias (specified under Signer Parameters), you define the following parameters:
Signer Parameters
For each private key alias, define the following parameters:
○
Private Key Alias
Enter an alias for selecting a private key from the key­
store. You can enter ${header.headername} or
${property.propertyname} to read the name
dynamically from a header or exchange property.

Note
Consider the security implications when deriving
key aliases from header attributes as they might
be influenced by inbound adapters or exported/
published by outbound adapters. It is more se­
cure to use (exchange) properties for this pur­
pose.
○
Signature Algorithm
Specify the signature (digest) algorithm.
○
Include Certificates
If you activate this option (value true), the certificate chain corresponding to the private key will be
added to the SignedAndEnvelopedData element.
8. Save the changes.
9. To save the configuration of the encryptor as a template, choose Save as Template from the context menu
of the Encryptor element.
 Note
When you save the configuration of the Encryptor element as a template, the tool stores the template
in the workspace as <ElementTemplateName>.fst.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
347
2.5.7.8
Encrypting and Signing the Message Content with
OpenPGP
You have the option to encrypt the message content using Open Pretty Good Privacy (OpenPGP).
Context
You have the following options to protect communication at message level based on the OpenPGP standard:
● You can encrypt a payload.
● You can sign and encrypt a payload.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Right-click a connection within the pool and choose
Add Security Element
Content Encryptor .
3. In the Model Configuration editor, position the cursor on the Content Encryptor step and in the context
menu select Switch to PGP.
4. Open the Properties view.
5. Specify whether or not to sign the payload (in addition to applying payload encryption). To do this, select
one of the following options for Signatures in PGP Message:
Option
Description
Include Signature
Select this option if you want to apply both encryption and signing.
No Signature
Select this option if you want to apply encryption only.
6. Under Encryption, specify the following parameters for message encryption:
Parameter
Description
Signatures
Select this option if you want to sign the payload with a
signature.
Content Encryption Algorithm
In the dropdown list, select the algorithm you want to use
to encrypt the payload.
Secret Key Length
Enter the secret key length.

Note
The length of the secret key depends on the encryp­
tion algorithm that you choose.
348
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Compression Algorithm
Select the algorithm you want to use to compress the pay­
load.
Armored
Select if you want the output to be radix 64 (base64) en­
coded with additional header.
Integrity Protected Data Packet
Select if you want to create an Encrypted Integrity Pro­
tected Data Packet. This is a specific format where an ad­
ditional hash value is calculated (using SHA-1 algorithm)
and added to the message.
This increases the message security level.
Encryption User ID of Key(s) from Public Keyring
You can specify the encryption key user IDs (or parts of
them). Based on this, system look for the public key in
PGP public keyring.
You can specify multiple user IDs.
7. Under Signature, specify the following parameters for message signing (only if you have selected Include
Signature for Signatures in PGP Message):
Option
Description
Digest Algorithm
Specify the digest algorithm (or hash algorithm) that is to be applied.
The sender calculates a digest (or hash value) from the message content using a digest algo­
rithm. To finalize the payload signing step, this digest is encrypted by the sender using a private
key.
Signer Key User ID
Parts of Keys from
the Secret Keyring
Specify the signer key user ID parts.
Based on the signer key user ID parts, the private key (for message signing) is looked up in the
PGP secret keyring.
8. Save the changes.
Next Steps
You can provide a file name with the PGP message in the Literal Packet, according to the specification at
https://tools.ietf.org/html/rfc4880 , chapter 5.9 Literal Data Packet (Tag 11).
By default, this file name is set to an empty string.
A file name that differs from an empty string can be specified by the header CamelFileName.
 Note
The SFTP adapter sets the header CamelFileName automatically.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
349
2.5.7.9
Decrypting and Verifying the Message Content with
OpenPGP
You have the option to decrypt the message content using Open Pretty Good Privacy (OpenPGP).
Context
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Right-click on a connection within the pool and choose
Add Security Element
Content Decryptor .
3. In the Model Configuration editor, position the cursor on the Content Decryptor step and in the context
menu select Switch to PGP.
4. Open the Properties view.
5. Specify the following parameters for message decryption:.
Option
Description
Name
Name of the selected PGP Decryptor element. The default name is PGP Decryptor.
If you add a second PGP Decryptor to the integration flow, you have to change the name because the
Decryptor name must be unique.
Signatures
in PGP Mes­
sage
Specify the expected payload content type which is to be decrypted. You have the following options:
○ No Signatures Expected
When you select this option, the decryptor expects an inbound message that doesn't contain a sig­
nature.

Note
If you select this option, inbound messages that contain a signature cannot be processed.
○
Signatures Optional
When you select this option, the decryptor can process messages that either contain a signature
or not.
○
Signer User
ID of Key(s)
from the
Public Key­
ring
Signatures Required
When you select this option, the decryptor expects an inbound message that contains a signature.
Specify the signer user ID of key(s) parts of all expected senders.
Based on the signer user ID of key(s) parts, the public key (for message verification) is looked up in the
PGP public keyring.
The signer user ID of key(s) key parts specified in this step restrict the list of expected senders and, in
this way, act as an authorization check.
6. Save the changes.
350
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.8 Defining Events
Context
Procedure
2.5.8.1
Configuring an End Message Event
An End Message event ends a message processing sequence.
Context
This is how using an End Message event has an impact on the message status (shown in the message
processing log).
 Note
To catch any exceptions thrown in the integration process and handle them, you can use an Exception
Subprocess.
If an exception occurs during the processing sequence which has been handled in an Exception Subprocess,
the message status displayed in the message processing log is Failed.
When there is no error during exception handling, the message status displayed in the message processing log
is Completed.
If you like to configure your integration flow that way that the message status displayed in the message
processing log is Failed (even in case an exception occurs during the processing sequence which has been
handled successfully in an Exception Subprocess), you have the following options:
● Use an Error End event.
● Use an Escalation End event (sets message status to Escalated in that case).
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
351
Procedure
2.5.8.2
Configuring Timer Start
You can configure an integration flow to automatically start and run on a particular schedule.
Context
If you want to configure a process to automatically start and run on a particular schedule, you can use this
procedure to set the date and time on which the process should run once or repetitively. The day and time
combinations allow you to configure the schedule the process requires. For example, you can set the trigger
just once on a specific date or repetitively on that date, or you can periodically trigger the timer every day,
specific days in a week or specific days in a month along with the options of specific or repetitive time.
A Timer Start event and a Start Message event (sender channel) must not be modelled in the same integration
flow. This would result in an error ERROR: Multiple 'Start Events' not allowed within an
Integration Process pool.
 Note
When you delploy or undeploy an integration flow with Scheduler, the system automatically releases all the
scheduler locks.
 Note
You cannot externalize the timer element in older integration flows. If you want to externalize the timer in
existing integration flows, reconfigure the timer and save the integration flow. Extract parameters for the
timer properties to appear in Externalized Parameters tab page.
When you deploy small integration flows with Timer Start (for example, an integration flow with timer,
content modifier and mail adapter), due to extremely fast processing times, multiple schedules are
triggered.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. From the Palette, expand the Event category.
3. Select the Timer Start notation and drop it within the Integration Process pool wherever required.
4. From the speed button of the Timer Start, select the sequence flow and connect to the following element
within the Integration Process pool of the integration flow.
352
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
5. Select the Timer Start and in the Properties view, provide values in fields based on description in table.
Parameters & Values of Timer
Field
Description
Run once
Runs a data polling process immediately after deploying
the project
On Date
Specific date on which the data polling process has to be
initiated to fetch data from the SuccessFactors system
Daily
Run message polling every day to fetch data from the Suc­
cessFactors system
Weekly
Run the message polling every week on specified days of
the week to fetch data from the SuccessFactors system.
Monthly on Day
Execute the message polling every month on the specified
date to fetch data from the SuccessFactors server.

Note
If the specified date is not applicable to a month, the
data polling is not executed in that specific month. For
example, if 30th day is selected in the month of Febru­
ary, polling is not executed as 30th is not a valid day
for February.
Time
The time at which the data polling cycle has to be initiated.
For example, if you want the data polling to be started at
4.10 PM, enter 16:10. Note that the time must be entered
in 24-hour format.
Every xx minutes between HH hours and HH hours
The connector fetches data from the SuccessFactors sys­
tem, every ‘xx’ minutes between HH hours and HH hours.

Note
If you want the polling to run for the entire day, enter 1
and 59.
Time Zone
Select the Time Zone that you want to use as reference for
scheduling the data polling cycle.
6. Save the changes.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
353
2.5.8.3
Configuring an Escalation Event
An escalation event stops message processing. For synchronous messages, an error messages is sent to the
sender.
Context
A retry or any other error handling mechanism is not triggered. The message status changes to ESCALATED.
In certain situations it does not make sense to retry the message processing until it finally gets delivered to the
receiver. For example, in case a wrong receiver is configured in the integration flow, it does not make any sense
to retry the processing of the message without having corrected the integration flow configuration. In that case,
it makes more sense to stop message processing and notify the sender that an error occurred.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. From the Palette, expand the Event category.
3. Select the Escalation notation and drop it within the Integration Process pool at the position where the
escalation should be placed.
4. Specify the Escalation Category (in the Properties view).
There are the following Escalation Categories:
Escalation Event
Routing condition has not been met.
Receiver not reachable
Receiver could not be reached, because it is temporarily
down or not accessible (for example, due to overload or
maintenance work).
Receiver not found
Receiver could not be found because the URL points to a
non-existent resource (for example, HTTP 404 error).
Not authenticated to invoke receiver
Receiver could not be called because authentication has
failed (for example, HTTP 401 error).
Not authorized to invoke receiver
Receiver could not be called because of insufficient per­
missions (for example, HTTP 403 error).
Receiver tries to redirect
Internal server error in receiver
Receiver could not be reached (HTTP 302 error).
Internal server error occurred in the receiver system (for
example, HTTP 500 error).
354
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Others – not further qualified
Escalation category has not been further qualified.
2.5.9 Defining Tasks
Context
Procedure
2.5.9.1
Defining Service Call
Prerequisites
You have added the service call element to the integration flow model from the palette.
Context
Service Call is used to call an external system. Such calls enable transaction of data from or to the target
system. It can be used for following types of operations:
1. Request-Reply
2. Content Enrichment
2.5.9.1.1
Defining Request-Reply
Context
You can use this task to enable request and reply interactions between sender and receiver systems.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
355
Example:
Suppose a currency conversion is required for a transaction between Indian and German business partners. In
such a scenario, using the Request Reply pattern, a user can successfully convert Indian currency to German
currency and vice versa. As shown in the integration flow, the request mapping converts the currency in the
payload to Euro and reply mapping converts the currency in the payload back to Indian Rupee.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. If you want to add a Request-Reply element in the integration flow, choose Add Service Call from the
context menu of a connection within the pool.
3. From the Palette, select
Others
Receiver , and drop it outside the Integration Process pool.
4. From the speed button of the Request-Reply element, create a connection that represents a channel from
the Request-Reply element to the Receiver.
5. Configure the channel with the required adapter details.
6. You can add integration flow elements between the Request-Reply and End Message element, for
processing response payload from Receiver system.
7. You can also connect End Message element back to the sender. Also, ensure that no adapter is configured
for this channel (as highlighted in the integration flow screenshot).
 Note
In this release, the channel connecting the external system with the Request-Reply element can be
configured with the SOAP, SuccessFactors, HTTP and IDOC adapters.
356
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.9.1.2
Defining Content Enricher
Prerequisites
You have created an integration project and integration flow.
Context
The content enricher adds the content of a payload with the original message in the course of an integration
process. This converts the two separate messages into a single enhanced payload. This feature enables you to
make external calls during the course of an integration process to obtain additional data, if any.
Consider the first message in the integration flow as the original message and the message obtained by making
an external call during the integration process as the lookup message. You can choose between two strategies
to enrich these two payloads as a single message:
● Combine
● Enrich
Consider the following original and lookup messages.
Original Message
<EmployeeList>
<Employee>
<id>111</id>
<name>Santosh</name>
<external_id>ext_111</external_id>
</Employee>
<Employee>
<id>22</id>
<name>Geeta</name>
<external_id>ext_222</external_id>
</Employee>
</EmployeeList>
Lookup Message
<EmergencyContacts>
<contact>
<c_id>1</c_id>
<c_code>ext_111</c_code>
<isEmergency>0</isEmergency>
<phone>9999</phone>
<street>1st street</street>
<city>Gulbarga</city>
</contact>
<contact>
<c_id>2</c_id>
<c_code>ext_111</c_code>
<isEmergency>1</isEmergency>
<phone>1010</phone>
<street>23rd Cross</street>
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
357
<city>Chitapur</city>
</contact>
<contact>
<c_id>3</c_id>
<c_code>ext_333</c_code>
<isEmergency>1</isEmergency>
<phone>007</phone>
<street></street>
<city>Raichur</city>
</contact>
</EmergencyContacts>
If you use Combine as the aggregation strategy, the enriched message appears in the following format.
Enriched Message
<multimap:messages xmlns:multimap=”http://sap.com/xi/XI/SplitAndMerge”>
<message1>
<EmployeeList>
<Employee>
<id>111</id>
<name>Santosh</name>
<external_id>ext_111</external_id>
</Employee>
<Employee>
<id>22</id>
<name>Geeta</name>
<external_id>ext_222</external_id>
</Employee>
</EmployeeList>
</message1>
<message2>
<EmergencyContacts>
<contact>
<c_id>1</c_id>
<c_code>ext_111</c_code>
<isEmergency>0</isEmergency>
<phone>9999</phone>
<street>1st street</street>
<city>Gulbarga</city>
</contact>
<contact>
<c_id>2</c_id>
<c_code>ext_111</c_code>
<isEmergency>1</isEmergency>
<phone>1010</phone>
<street>23rd Cross</street>
<city>Chitapur</city>
</contact>
<contact>
<c_id>3</c_id>
<c_code>ext_333</c_code>
<isEmergency>1</isEmergency>
<phone>007</phone>
<street></street>
<city>Raichur</city>
</contact>
</EmergencyContacts>
</message2>
</multimap:messages xmlns:multimap=”http://sap.com/xi/XI/SplitAndMerge”>
Enrich offers you control on how you can merge the original and lookup message. In this example, we consider
the node <ext_111> as the reference to enrich the original message with the lookup message.
Consequently, you specify the following values while configuring the Content Enricher.
358
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Section
Field
User input
Original Message
Path to Node
Employees/Employee
Key Element
location
Path to Node
EmployeeLocations\emplocation
Key Element
locationid
Lookup Message
The enriched message will be in the following format.
<EmployeeList>
<Employee>
<id>111</id>
<name>Santosh</name>
<external_id>ext_111</external_id>
<contact>
<c_id>1</c_id>
<c_code>ext_111</c_code>
<isEmergency>0</isEmergency>
<phone>9999</phone>
<street>1st street</street>
<city>Gulbarga</city>
</contact>
<contact>
<c_id>2</c_id>
<c_code>ext_111</c_code>
<isEmergency>1</isEmergency>
<phone>1010</phone>
<street>23rd Cross</street>
<city>Chitapur</city>
</contact>
</Employee>
<Employee>
<id>22</id>
<name>Geeta</name>
<external_id>ext_222</external_id>
</Employee>
</EmployeeList>
In the enriched message, you can see the content of the lookup message after the node <location>.
 Remember
If lookup message contains more than one entry of the key element, content enricher enhances the
enriched message with all the entries referred by the key element in lookup message. In the above example,
the lookup message contains the key element ext_111 in two places. You can see that the enriched
message contains both the <contact> entries that the key element refers to.
Procedure
You use this procedure to add Content Enricher element to an integration flow.
1. Open the integration flow in Model Configuration editor.
2. From the context menu of integration flow, choose
Add Tasks
Service Call .
3. From the context menu of the service call element, choose Switch to Content Enricher.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
359
4. In the Properties view, choose the Aggregation Strategy field.
5. Perform the required subprocedure below based on the strategy you want to use.
Using Combine Strategy
Procedure
You use this subprocedure for using the Combine strategy.
1. In the dropdown list, choose Combine.
2. Save changes.
Using Enrich Strategy
Procedure
You use this subprocedure for using the Enrich strategy.
1. In the dropdown list, choose Enrich.
2. Provide values in fields based on description in table.
Section
Field
Description
Original Message
Path to Node
Path to the node in the original mes­
sage where content has to be en­
riched. Ensure that you provide it in
the format <xx>/<yy>/<zz> with
<xx> being the root node and <zz>
being the node where new content will
reside
Key Element
Key element in the original message
contained in the Path to Node speci­
fied above. Ensure that you provide
only the key element name.
Path to Node
Path to the node that would be used in
the lookup message to enrich the con­
tent. Ensure that you provide it in the
format <xx>/<yy>/<zz> with <xx>
being the root node and <zz> being
the reference node
Key Element
Key element in the lookup message
contained in the Path to Node speci­
fied above. Ensure that you provide
only the key element name.
Lookup Message
3. Save the changes.
360
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.9.1.3
Defining a Send Step
You use the Send step type to configure a service call to a receiver system for scenarios and adapters where no
reply is expected.
Prerequisites
You have created an integration project and an integration flow.
Context
You can use this step in combination with the following adapter types (for the channel between the send step
and the receiver):
● Mail adapter
● SFTP adapter
● SOAP (SAP RM) adapter
Procedure
1. Open the integration flow in the Model Configuration editor.
2. From the context menu of the integration flow, choose
Add Tasks
Service Call .
3. From the context menu of the service call element, choose Switch to Send.
4. Create a connection between the send step and the receiver and configure the channel (use either an
SFTP, Mail adapter or a SOAP (SAP RM) adapter).
2.5.9.2
Defining a Process Call
You can invoke a local integration process from the main integration process by using a local call.
Related Information
Assigning a Local Integration Process [page 362]
Defining a Looping Process Call [page 362]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
361
2.5.9.2.1
Assigning a Local Integration Process
Prerequisites
You have created a local integration process.
Context
Procedure
1. In the palette, choose
Tasks
Process Call
and drop the shape into the modelling area.
2. Position the cursor on the Process Call shape and in the context menu choose Assign Local Integration
Process.
3. Enter the name of the local integration process you like to assign.
4. Choose Ok.
Related Information
Defining a Local Integration Process [page 366]
2.5.9.2.2
Defining a Looping Process Call
You can execute a local integration process in a loop.
Context
362
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Procedure
1. In the palette, choose
Tasks
Process Call
and drop the shape into the modelling area.
2. Position the cursor on the Process Call shape and in the context menu choose Assign Local Integration
Process.
3. Specify the following attributes.
Field
Description
Expression Type
Specify the kind of expression you want to enter in the
Condition Expression field.
You have the following options:
○
XML
For XPath expressions, for example: //
customerName = ‘Smith’
○
Non-XML
For Camel Simple Expression Language
Note

Examples:
${header.SenderId}, which indicates the
SenderId header field.
${in.body}, which indicates the body of the
incoming message.
For more information about Camel Simple Expression
Language, see: http://camel.apache.org/simple.html
.
Condition
Enter the condition (XML or Non-XML, as specified by the
property Expression Type).
Do not use a mixed expression (containing both XML and
Non-XML expressions).
For more information about the usage of operators, see
Defining Router [page 275]
Max. Number of Iterations
Maximum number of iterations that the loop can perform
before it stops (99999 iterations maximum).
You can use this setting to prevent a never-ending loop.
Example Scenario for the Local Loop Process.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
363
 Note
The local loop process refers to a while loop. The sub process will run as long as the loop condition is
fulfilled.
To explain how a local loop process works, we provide a simple example.
Every morning, an account owner wants to check all transactions performed on his account. He calls a
specific web service and has defined this request:
<accountID>12345<accountID>
<action>Transaction_of_last_Day</action>
</accountinfo>
The appropriate response for this request is:
<accountinforesponse>
<transaction>
<id>1</id>
...
</transaction>
...
<transaction>
<id>55</id>
...
</transaction>
<hasMore>true</hasMore>
</accountinforesponse>
The account owner has to call the web service again and again until there are no more transactions
available and he gets the response:
<hasMore>false</hasMore>
To simplify the call, he can use the loop embedded in the HCP Integration Service. He needs to define a
while condition in the Xpath such as/accountinforesponse[hasMore = ‘true’].
As long as data are available, the call will continue. The sub-process inducing the loop uses the ServiceCall
step in the Request-Reply mode to call the web service. As soon as the web service gets the response
<hasMore>false</hasMore>, the processing exits the loop and continues with the next step. The last
response of the web service is the new payload, that will be taken as message body into the next step.
364
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Related Information
Defining a Local Integration Process [page 366]
2.5.10 Defining Additional Elements (Others)
Context
Procedure
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
365
2.5.10.1 Defining a Local Integration Process
You can use this task if you want to simplify your integration process. It enables you to fragment your
integration process into smaller processes (local integration processes), which are in turn called from the main
integration process or from other local integration processes.
Context
 Note
For the main integration process the SAP icon is displayed in the top left corner, whereas for the local
integration processes this icon is not displayed.
 Restriction
You cannot use the following integration flow steps within the Local Integration Process step:
● Another Local Integration Process
● End Message
● Sender
● Receiver
● Aggregator
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. Add a local integration process.
a. If you want to add a local integration process to the integration flow, choose
Integration Process
Others
Local
from the palette. On the Properties tab, provide a name.
b. You can add various elements between the start event and end event of the process.
A local integration process does not support multicast and splitter elements.
3. Invoke the local integration process.
a. If you want to call the local integration process from the main integration process, add a process call in
the main integration process. To do this, choose
Tasks
Process Call
from the palette.
b. Choose Assign Local Integration Process from the context menu of the process call within the pool.
Select the local integration process that needs to be assigned to the process call in the integration
flow.
 Note
You can use an Error End event to throw the exception to default exception handlers.
4. Save the changes.
366
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.5.10.2 Defining Exception Subprocess
Context
You use this element to catch any exceptions thrown in the integration process and handle them.
 Restriction
You cannot use Exception Subprocess in a Multicast branch.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. To add an exception subprocess to the integration flow, choose Others Exception Subprocess from
the palette. The subprocess can be dropped into the integration process and should not be connected to
any of the elements of the integration flow.
3. Select the exception subprocess you have added to the integration flow model to configure it.
4. Start the process with Error Start event always.
5. End the process with either End Message or an Error End or Escalation End event.
 Note
○ You can use an End Message event to wrap the exception in a fault message and send it back to the
sender in the payload.
○ You can use an Error End event to throw the exception to default exception handlers.
6. You can also add other flow elements between the start and end events .
 Note
○ For example, you can choose Add Service Call from the context menu of a connection within the
pool. This enables you to call another system to handle the exception.
○ The following elements are not supported within an Exception Subprocess:
○ Another Exception Subprocess
○ Integration Process
○ Local Integration Process
○ Sender
○ Receiver
○ Start Message
○ Terminate Message
○ Timer Start
○ Start Event
○ End Event
○ Router
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
367
7. Save the changes.
 Note
○ The message processing log will be in an error state even if a user catches an exception and
performs additional processing on it.
○ You can get more details on exception using ${exception.message} or $
{exception.stacktrace}.
○ You cannot catch exceptions of local integration process in the main integration process.
2.5.11 Defining the Error Configuration
You can define how to handle errors when message processing fails at runtime.
Context
Procedure
1. In the Model Configuration editor, click on the graphical area outside the integration flow model.
2. In the Properties view, select the Error Configuration tab.
3. Select one of the following options.
Error Configuration Parameters
Parameter
Description
Error Handler Strategy
Select one of the following options:
○
None
When a message exchange could not be processed,
no error handling strategy is used.
○
Raise Exception
When a message exchange could not be processed,
an exception is raised back to the sender.
○
Raise Exception (Deprecated)
When a message exchange could not be processed
and there is IDoc or SOAP SAP RM channel in the in­
tegration flow, then an exception is raised back to the
sender.
368
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Parameter
Description
Return Exception to Sender
When defining the error handling strategy for SOAP mes­
sages, you can now define if in case of an exception the
SOAP fault exception is to be returned to the sender. If you
don’t select this option, an error message containing a
URL is sent back to the sender instead. You can use this
URL to access the message processing log.
2.5.12 Error Classification
At design time of an integration project, the way how a message is to be processed is specified by a number of
integration flow steps (for example, content modifier, encryptor or routing step). When an integration flow is
being processed at runtime, errors can occur at several individual steps within the process flow (referred to as
processing steps to differentiate them from the integration flow steps as modelled at design time).
Integration flow steps can specify message processing at different levels of complexity. Therefore, in general an
integration flow step (design time) can result in multiple processing steps steps at runtime.
Each processing step gets a unique Step ID which is displayed in the message processing log.
For example, a content modifier step in an integration flow can (at runtime) be related to multiple processing
steps: The content modifier step can be configured in a way that one processing step changes the message
header, one the message body, and another one an exchange property.
This content modifier will get three different Step IDs at runtime, for example: CallActivity_9, setBody4
and setProperty1.
To relate a modelled integration flow step (like the content modifier mentioned above) to an error occurring at
a certain processing step at runtime, you can use an identifier which is referred to as Model Step ID.
To allow an integration flow developer to relate to a certain integration flow step during error handling, the
runtime provides the Model Step ID of the integration flow step where the error occurred as Exchange Property
SAP_ErrorModelStepID. The content of the property can then be evaluated in the error handling.
 Note
You can use the property for instance in a condition definition of a Router step to choose a different error
handling strategy depending on the step where the error occurred.
Example for a routing condition : ${property.SAP_ErrorModelStepID} = ‘CallActivity_1’
When referring to an integration flow step for error handling, you need to know which Model Step ID has been
defined for an integration flow step. To display this attribute, position the cursor on the step and in the tooltip
you get the Model Step ID displayed as ID. To display this attribute for an adapter, position the cursor on the
connection shape in the integration flow model and in the context menu choose Technical Information.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
369
2.5.13 Specifying Runtime Configuration
With the Runtime Configuration you can specify general properties of the integration flow.
Context
Procedure
1. In the Model Configuration editor page, select the graphical area outside the integration flow model.
2. In the Properties view, choose the Runtime Configuration tab.
3. Specify the following properties.
370
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Runtime Configuration Properties
Property
Allows you to ...
Namespace Mapping
Map a prefix to a namespace at runtime.
Enter a namespace-prefix pair with a format
xmlns:<prefix>=<namespace>.
This parameter is required for elements such as the con­
tent-based router, content modifier or content filter that
can use namespaces in their configuration. You can either
enter the namespace-prefix pair or the tool automatically
fills the namespace-prefix pair whenever a lookup is per­
formed for the assigned WSDL.
You can also enter multiple namespace-prefixes as shown
in the example: xmlns:test=http://sapcd.com/
testABC;xmlns:test2=http://sapcd.com/
testPQR.

Note
xmlns:ns0=https://
hcischemas.netweaver.neo.com/hciflow
Here, ns0 is the prefix and https://
hcischemas.netweaver.neo.com/hciflow
is the namespace. That way, in a router, you can spec­
ify the routing condition for an XML message as:
/ns0:HCIMessage/
SenderID='Sender01'
Message Processing Log
Configure the log level to display in the Monitoring editor.
Select one of the log levels from the Message Processing
Log dropdown.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
○
All Events: Allows all messages to be logged and dis­
played
○
Error Events: Allows only error messages to be logged
and displayed
○
No Logging: Hides logging information
PUBLIC
371
Property
Allows you to ...
Allowed Header(s)
Specify the headers to be retained when the incoming
message is processed.
Enter one or more names of headers by separating them
with pipe (|).

Note
If you want to enter several headers with similar
names, use wildcards to make the entering faster.
The wildcards are regular expressions, such as .*
and ?.? substitutes exactly one non-space charac­
ter..* substitutes zero or more non-space charac­
ters.
Example: You want to enter the headers A, A1, A2, A3.
Instead of entering all of them singularly, simply enter
A .*. This will allow all headers starting with A.
In general, headers used by the runtime components are
retained and other headers are removed during message
processing. This field is useful when you need specific
header information along with the message body.
For inbound SSL connections (when a sender calls SAP
Cloud Integration), senders have to authenticate against a
load balancer component. The load balancer sets the fol­
lowing message header fields: SSL_CLIENT_CERT
(contains the Base64-encoded sender client certificate)
and SSL_CLIENT_USER. Entering these values in the
Allowed Header(s) field, allowes you to forward these
headers during message processing.
372
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Property
Allows you to ...
HTTP Session Handling
Choose one of the following options:
○
None
○
On Exchange
Session handling is switched off
Each exchange corresponds to a single session (use
this option for stateful services)
○
On Integration Flow
Only one session will be used across the whole inte­
gration flow (only use this option for stateless serv­
ices)

Note
Once an HTTP session has been initialized, there
is usually no further authentication for the dura­
tion of the session (one of the advantages of us­
ing sessions). This means that all further HTTP
requests on that server are processed in the con­
text of the user that was logged on when the ses­
sion was initialized. If, however, this behavior
does not meet your requirements (for example,
the user is dynamic and can change from request
to request), you can select either an exchange
session scope (if the user remains the same for
at least the processing of a single message) or no
session.

Note
SuccessFactors (OData V4) and SuccessFactors
(REST) adapters do not support HTTP session
handling.
4. Save the changes.
Related Information
Defining Router [page 275]
Defining Content Filter [page 221]
Defining Content Modifier [page 211]
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
373
2.5.14 Defining Transaction Handling
You can configure transaction handling on integration process or local integration process level.
Context
Transactional processing means that the message (as defined by the steps contained in a process) is
processed within one transaction.
For example, consider a process with a Data Store Write operation. When transaction handling is activated, the
Data Store entry is only committed if the whole process is executed successfully. In an error case, the
transaction is rolled back and the Data Store entry is not written. When transaction handling is deactivated, the
Data Store entry is committed directly when the integration flow step is executed. In an error case, the Data
Store entry is nevertheless persisted (and not removed or rolled back).
Note the following limitations and recommendations related to transaction handling:
Integration Flow Contains the Following El­
ements
Recommendet Settings/Limitations
Aggregator steps
Required for JDBC (mandatory)

Caution
Choosing JDBC transaction handling is mandatory to ensure that ag­
gregations are executed consistently.
Data Store operations
Required for JDBC (recommended but not mandatory)
In case you choose Not Required, the related database operation is commit­
Write
ted per single step and no end-to-end transaction handling is implemented.
JMS sender adapter
Not Required
This applies also for scenarios that include
In general, no transaction handling is required.
the AS2 adapter.

Note
These adapters do not require JMS transaction handling. Their retry
handling works independent from the selected transaction handler.
JMS sender adapter together with JDBC re­
Required for JDBC
sources (Data Store, Aggregator, Write varia­

bles)
Note
This applies also for scenarios that include
However, note that it is not recommended to use transactional JMS re­
the AS2 adapter.
sources and JDBC resources in parallel.
374
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Integration Flow Contains the Following El­
ements
Recommendet Settings/Limitations
JMS receiver adapter in a Send step
Required for JMS (mandatory)
This setting is mandatory to ensure that the data is consistently updated in
the JMS queue.
Several JMS receiver adapter together with a
JMS sender adapter
Required for JMS (mandatory)
This setting is mandatory to ensure that the data is consistently updated in
the JMS queue.
One JMS receiver adapter (without Splitter or
sequential Multicast)
Not Required
No JMS transaction handler is required.

Note
Distributed transactions between JMS and JDBC resources are not
supported.
Several JMS receiver adapter or a sequential
Multicast or Splitter step followed by a JMS
receiver adapter
Required for JMS
This setting is mandatory to ensure that the data is consistently updated in
all JMS queues.
Note that aynchronous parallel processing of messages cannot be transactional.
For more details on parallel processing, check the documentation of General or Iterating Splitter and Parallel
Multicast.
Let us assume that you like to configure a message multicast and the integration flow also contains a Data
Store operations step. In this case, you can choose one of the following options to overcome the mentioned
limitation:
● Deactivate transactional processing.
● Use a Sequential Multicast instead of a Parallel Multicast.
Procedure
1. Depending on whether you like to configure transaction handling for an integration process or a local local
integration process, select the header of the corresponding shape in the integration flow modelling area.
2. Specify the details for transactional processing:
To configure transactional process for an Integration Process, select one of the following options for the
Transaction Handling property.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
375
Transaction Handling for Integration Process
Attribute
Required for JDBC
Description
You can specify that Java Database Connectivity (JDBC)
transactional database processing is applied (to ensure
that the process is accomplished within one transaction).
You can define a Transaction Timeout (in minutes). Maxi­
mum value is 12 hours. Only specify timeouts longer than
1 hour in cases where this is absolutely necessary because
long running transactions might cause issues with the sys­
tem database.
Required for JMS
You can specify that Java Message Service (JMS) transac­
tional database processing is applied (to ensure that the
process is accomplished within one transaction).
You can define a Transaction Timeout (in minutes). Maxi­
mum value is 12 hours. Only specify timeouts longer than
1 hour in cases where this is absolutely necessary because
long running transactions might cause issues with the sys­
tem database.
Not Required
No specific transactional processing is configured. The in­
tegration process does not process transactions even if
(for example) data store operations are included.
To configure transactional process for a local Integration Process, select one of the following options for
the Transaction Handling property.
Transaction Handling for Local Integration Process
Attribute
From Calling Process
Description
Transactional processing is inherited from the calling
process. The value defined for the calling process is used
as the timeout.
Required for JMS
You can specify that Java Message Service (JMS) transac­
tional database processing is applied.
You can define a Transaction Timeout (in minutes). Maxi­
mum value is 12 hours. Only specify timeouts longer than
1 hour in cases where this is absolutely necessary because
long running transactions might cause issues with the sys­
tem database.
376
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Attribute
Required for JDBC
Description
You can specify that Java Database Connectivity (JDBC)
transactional database processing is applied (to ensure
that the process is accomplished within one transaction).
You can define a Transaction Timeout (in minutes). Maxi­
mum value is 12 hours. Only specify timeouts longer than
1 hour in cases where this is absolutely necessary because
long running transactions might cause issues with the sys­
tem database.
2.5.15 Externalizing Parameters of Integration Flow
Context
Externalizing parameters is useful when the integration content has to be used across multiple landscapes,
where the endpoints of the integration flow can vary in each landscape. This method helps you to declare a
parameter as a variable entity to allow you to customize the parameters on the sender and receiver side with a
change in landscape.
When you externalize a parameter, it will be available in the integration flow configuration when you import
content in SAP Cloud Integration Web Application.
Partial Parameterization enables to change part of a field rather than the entire field. This variable entity of the
field is entered within curly braces.
List of parameters that can be externalized on the sender side
● SOAP (SAP RM) adapter: Address, URL to WSDL
● SOAP (SOAP 1.x) adapter: Address, URL to WSDL, WS Security, Private Key Alias for Response Signing,
Private Key Alias for Encrypting
● IDoc (IDoc-SOAP) adapter: Address, URL to WSDL
● SFTP adapter: Server Host , Server Path, File Name,User Name , Archive Directory
The following parameters under Processing Parameters: Post-Processing (all options that can be selected
in this drodown list), Idempotent Repository, Read Lock Strategy
● SuccessFactors Adapter: Address, Page Size Credential Name, Address Suffix, Parameters
● Sender Authorization: Subject DN and Issuer DN
List of parameters that can be externalized on the receiver side
● Mail Adapter: Address, Protection, Authentication, Credential Name, Mail Attributes (From, To, Cc, Bcc,
Subject, Mail Body)
● IDoc (IDoc SOAP)Adapter: Address, Proxy Type, URL to WSDL, Private Key Alias, Credential Name,
Authentication, Allow Chunking.
● SOAP (SAP RM) adapter: Address, Proxy Type, URL to WSDL, Private Key Alias, Allow Chunking.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
377
● SOAP (SOAP 1.x) adapter: Address, Proxy Type, URL to WSDL, Authentication, Private Key Alias, Credential
Name, User Name Token, Private Key Alias for Signing, Private Key Alias for Encrypting, Allow Chunking.
● HTTP Adapter: Address, Query, Proxy Type, Authentication, Private Key Alias, Credential Name
● SFTP adapter: File Name,User Name , Archive Directory, Address
● SuccessFactors Adapter: Address, Page Size, Credential Name, Address Suffix, Parameters
● OData Adapter: Address, Proxy Type, Authentication, Custom Query Options, Page Size
● Twitter Adapter: Endpoint, User, Page Size, Number of Pages, Locations, Keywords, User Names,
Language, Consumer Key, Consumer Secret, Access Token, Access Token Secret.
 Note
If you externalize the Proxy Type parameter, you do not see the display values from the UI in the parameter
file, but the technical representatives of these values (for example, sapcc for the value On-Premise, and
default for the value Internet).
 Note
You can externalize all attributes related to the configuration of the authentication option. This includes the
attributes with which you specify the authentication option as such, as well as all attributes with which you
specify further security artifacts that are required for any configurable authentication option (Private Key
Alias or Credential Name).
Apply one of the following recommendations when externalizing such attributes.
● Externalize all attributes related to the configuration of all options, for example, Authentication and
Credential Name and Private Key Alias.
● Externalize only one of the following attributes: Private Key Alias or Credential Name.
Avoid incomplete externalization, for example, only externalizing the attribute for the Authentication
parameter but not the related Credential Name parameter. In such cases, the integration flow configuration
(based on the externalized parameters) cannot work properly.
The reason for this is the following: If you have externalized the Authentication parameter and only the
Private Key Alias parameter (but not Credential Name), all authentication options in the integration flow
configuration dialog (Basic, Client Certificate, and None) are selectable in a dropdown list. However, if you
now select Basic from the dropdown list, no Credential Name can be configured.
Procedure
1. Externalize parameters by extraction.
 Note
You can extract certain parameters that are already configured in the integration flow, so that the
parameters are externalized. You can view the extracted parameters in the Externalized Parameter
view. If you have already extracted a parameter, the parameter cannot be extracted again.
a. From the Project Explorer view, open the <integration flow>.iflw in the editor.
b. In the Model Configuration editor, right-click the graphical area outside the model and choose Extract
Parameters from the context menu.
378
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
c. In the Extract Parameters dialog, select the parameters that have to be extracted and be available for
externalization.
 Note
In the Console view, you can see a summary of the parameter extraction.
d. Open the Externalized Parameters view.
 Note
You can view the externalized parameters of the field in the integration flow. The field is now
available as a variable.
e. From the toolbar of the view, choose
(Sync with Editor icon) to synchronize the integration flow
that is currently open with the Externalized Parameters view.
f. You can edit parameter values and then choose
view.
(Save Parameters icon), from the toolbar of the
 Note
The Save Parameters icon is enabled only if the parameter values and the type are consistent. For
drop down or combo box the values should be edited from here else, the parameter references are
lost.
g. Choose
(Reload icon) to update the view with the list of externalized parameters.
h. If you have made modifications to the integration flow model and there are unused parameters then
you must choose
(Remove Unused Parameters icon) to remove unused parameters.
2. Externalize parameters by manual configuration.
 Remember
You can use this method to externalize fields that allow text input.
Here's a list of attributes that you cannot externalize using manual configuration method:
○ Channel name
Example: If you are using SuccessFactors adapter, you cannot externalize the Name field in the
General tab.
○ Flow step name
Example: If you are using CSV to XML Converter, you cannot externalize the Name field in the
Properties tab.
○ Branch name in Multicast
Example: When you use Multicast, you can assign a name to each outgoing branch from the
Multicast step in the Branch Name field. You cannot externalize this Branch Name field.
○ Table Elements
Example: If you are configuring the Sender step, you cannot externalize the Subject DN or Issuer
DN fields when you are using certificate-based authentication.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
379
 Note
You can use the step below if you want to externalize certain parameters in such a way that you do
provide any values in the integration flow but want to manually configure the attributes in the
Externalized Parameters view.
a. In the Project Explorer view, open the <integration flow>.iflw in the editor.
b. In the Model Configuration editor, double-click the channel or select the flow step field that you want to
externalize.
c. In the Properties view or the Adapter Specific tab for adapters, enter a value for the field that you want
to externalize in this format: {{<parameter_name>}}.
 Note
○ You can use alphanumeric characters, underscore and hyphen for parameter name.
○ You can externalize the value of the field so that the field is now a variable. For example, you
might need to change the 'Address' field of a connector at the receiver without making any
other changes to the integration flow. So, you enter {{server}} in the 'Address' field. The
steps below show how you can specify data for the externalized parameters.
Only part of the field can also be changed. For example, in the given URL, http://{{host}}:
{{port}}/FlightBookingScenario, host and port are the variable entities.
d. Save the changes in the channel editor.
e. Open the Externalized Parameters view.
f. From the toolbar of the view, choose Sync with Editor (icon) to synchronize the integration flow that is
currently open with the Externalized Parameters view.
 Note
In the Externalized Parameters view, you can see all the parameters that have been externalized in
the integration flow. For example, if you have externalized the 'Address' field of a connector as
{{server}} or you have selected this field for extraction, you can see the parameter under the
Name column.
g. Open the Externalized Parameters view and choose
(Reload icon).
 Note
In the Externalized Parameters view, you can view all the parameters that have been externalized in
the integration flow. For example, if you have externalized the 'Address' field of a connector as
{{server}} or you have selected this field for extraction, you can see the parameter under the
Name.
h. From the toolbar of the Externalized Parameters view, choose
(Save Parameters icon).
 Note
○ The Save Parameters icon in the Externalized Parameters view is enabled only if the parameter
values and the type are consistent.
○ If you do not save the view using the Save Parameters icon, the parameters.prop file is not
updated with the new externalized parameters, which is indicated with an error marker in the
Integration Flow editor. If the editor has no unsaved changes, the error marker remains even
380
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
though the parameter content is saved. In such a case, you can execute the consistency check
by using the Execute Checks context menu option in the Model Configuration editor.
2.5.15.1 Configuring Multiple Externalized Parameters
Prerequisites
You have enabled mass configuration of system properties.
 Note
Please refer to the below procedure steps for enabling mass configuration of system properties.
Context
You use this task when you want to provide the same values for the common parameterized attributes across
multiple integration projects. The tool offers quick parameterization with the Configurations view that displays
a list of externalized parameters from all the projects. If multiple integrations require same values for the
externalized parameters, you can choose the Mass Parameterize option to fill values for all the common
parameters.
Procedure
1. For receiver system, you must have a single participant for every logical system.
 Note
○ If all receivers are the same logical system then you can have one participant rather than multiple
participants in the integration flow to which all channels can be connected.
○ If the channel names are same or not added, then you must add unique channel names.
2. To externalize certificate information at the sender system, execute the following substeps:
a. In the Certificate Based Authentication table, enter the key names( {{sender}}, {{issuer}}).
b. In the Externalized Parameters view, enter the values.
 Note
Do not use Extract Parameters option directly.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
381
3. To externalize private key alias and credential details at the receiver, execute the following substeps:
a. In the channel editor table, enter the key name ({{privatekeyalias}}).
b. In the Externalized Parameters view, enter the values.
c. Select Basic Authentication table.
d. In the channel editor table, enter the key name( {{credential}}).
e. In the Externalized Parameters view, enter the values.
 Note
Do not use Extract Parameters option directly.
4. To externalize system details for receiver address, execute the following substep:
a. In the Address field, enter the value in the format https://{{host}}:{{port}}/<appDetails>?
client={{client}} .
5. To externalize authentication modes at sender and receiver systems, execute the following substeps:
a. Extract all parameters relevant to sender authentication mode using the format
<sender>_enableBasicAuthentication_<randomnumber>.
b. Extract all parameters relevant to receiver channel authentication mode using the format
<receiver>_enableBasicAuthentication_<randomnumber>.
6. In the context menu, select Execute Checks.
7. To view and configure parameters, execute the following substeps:
a. In the main menu, choose
Window
b. In the Show View dialog, choose
Show View
Others
c. In the Configurations view toolbar, choose
Others .
Configurations .
(Mass Configure).
d. In the Mass Configuration wizard, select the projects that contain the common parameters and choose
Next.
e. Enter values for the list of parameters and choose Next. These values get applied to their
corresponding parameters that are common across the selected projects.
 Note
A common parameter that has been assigned different values, is indicated using the tag Parameter
has Different Values. If you delete this tag and enter a new value or keep it empty, the value of the
common parameter changes accordingly across all the projects that use it.
f. Confirm if you want to update the common parameters with the new values.
g. If you want to view or change externalized parameters in the integration flow from the Configurations
view, double-click any file under the Configurations view to open the Model Configuration editor and the
Externalized view.
h. If you want to deploy the projects, select Deploy Integration Content and enter the Tenant ID.
i.
Choose Finish.
Results
The completion of this task triggers the build automatically and your projects get deployed with the updated
externalized parameters.
382
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.6
Working with the Mapping Editor
Context
Procedure
2.6.1 Creating a Message Mapping
Context
You perform this task to create a message mapping when the receiver system accepts a different message
format than that of the sender system. The message mapping defines the logic that maps input message
structures with the required format of output message structures.
You define a message mapping using the mapping editor by following the steps below:
Procedure
1. Create a mapping object under the package src.main.resources.mapping under the Project Explorer view.
2. Define the signature for message mapping by specifying the source and target elements under the
Signature section.
3. Define the mapping logic in the Definition tab page.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
383
2.6.1.1
Multi-Mappings
A multi-mapping is a mapping that allows you to transform a source (input) message to multiple target
(output) messages or multiple source to multiple target messages.
Multi-mappings reference multiple message structures. You can, for example, use a multi-mapping to map a
message to multiple different (and generally smaller) messages. In that case, the cardinality of the mapping is
1:n.
In your mapping, always add the namespace http://sap.com/xi/XI/SplitAndMerge to the root tag.
For the format of a multi-mapping, see below:
<?xml version="1.0" encoding="UTF-8"?>
<sm:Messages xmlns:sm="http://sap.com/xi/XI/SplitAndMerge">
<Message1>
...
</Message1>
<MessageN>
...
</MessageN>
</sm:Messages>
2.6.1.2
Creating a Mapping Object
Context
You perform this task to create a mapping object required for message mapping.
Procedure
1. In the Project Explorer, select the integration project.
2. Expand the integration project and select the src.main.resources. mapping package.
3. From the context menu, choose
4. In the New wizard, select
New
Other... .
SAP NetWeaver Cloud Integration
Message Mapping .
5. Choose Next.
6. In the New Message Mapping wizard, enter a name for the mapping.
7. Choose Finish.
384
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
Results
The new message mapping object is created under src.main.resources. mapping package and the Message
Mapping Overview editor opens.
2.6.1.3
Defining the Mapping Signature
Context
You perform this task to define the signature of a mapping object.
Procedure
1. In the Message Mapping Overview editor, under the
Signature
Source Elements
section, Add a file.
 Note
○ If you have selected an XSD or WSDL file, you can also perform multi mapping by selecting another
source WSDL or XSD.
○ If you have selected an EDMX file as your first source element or you are choosing an edmx file as
your next source element then you will not be able to perform multi mapping. The new file will
overwrite the existing file and only a single file can be seen as source elements.
 Restriction
In the content used for mapping, if the XSD indicator maxOccurs value exceeds 65535, replace it with
unbounded. Otherwise, it will cause the tenant to crash.
2. If you are performing multi mapping then change the cardinality of mapping to the required cardinality.
The default cardinality for single mapping is 1:1.
3. Choose OK.
4. Under Target Elements section, repeat steps 1 to 3.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
385
2.6.1.4
Defining the Mapping
Context
You perform this task to the define a mapping for the mapping object.
Procedure
1. In the Definition tab page editor, to map a source field to target field, drag a source node and drop onto a
target node in the tree structure.
 Note
○ Alternately, you right-click on the source field, drag and drop it onto the target node and select Map
automatically
○ If you have selected multiple messages under source or target elements, system creates a new
node Messages, which has all the other nodes under it.
.
2. If you want to perform any of the actions such as duplicating the subtree, disabling a field or adding a
variable, then from the context menu of the selected node, choose the required option.
When you need to map different node structures of the source message to only one node structure of the
target message you use the option of duplicating the subtrees.
3. If you want to map the child elements of a recursive node (if any), from the context menu choose the
option of Expand Recursive Node.
 Note
○ Recursive node acts as a design time placeholder to indicate creation of a node at this location at
runtime of the type indicated in the repeatedNode property.
○ In case you do not want to use the child elements or variable of the recursive node, then from the
context menu, choose the option of Collapse Recursive Node.
4. Double-click a node to view the graphical representation of mapping in the graphical editor.
 Note
If you want to perform mapping directly in the graphical editor, then drag the source and target nodes
from the tree structure into the graphical area.
5. In the graphical editor, connect the source and target node using connectors.
6. If you want to add a function to the connection between the source and target nodes, double-click on the
functions displayed under the Functions folder on the right-side of the graphical editor.
7. Connect the function to the required node with the use of connectors.
386
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
8. If you want to add parameters to a function, choose Properties from the context menu of the function.
 Note
○ You can also double-click on the function to add parameters
○ The functions, in which you can add parameters, are displayed with a wheel symbol
a. Add a value for the parameter.
b. Choose OK
9. If you want to find the hierarchy of the node in the tree structure, then from the context menu of the node
in graphical editor, choose Find Field.
10. If you want to change context of the node, then from the context menu, choose Context and select an
option.
11. If the resulting mapping layout in the graphical editor is not in order, from the toolbar of the Properties view,
choose
(Organize Layout) to automatically arrange the layout.
12. Save the mapping.
 Note
To check the correctness of the mapping, you can right-click on the editor and choose Execute Checks,
if there are any errors, you get notified by a red error mark close to the field or in Problems view. Some
such errors are described below:
○ In case, there are any unassigned mandatory fields, an error is indicated by a red error mark appears
close to such fields in the Definition tab page.
○ If source or target messages are not assigned, an error message is displayed in the Problems view.
○ If any of the source or target messages are not available in required location, an error mark in red
appears on the element in the Overview tab page.
○ Also, if the mapping is not present in the folder src.main.resources.mapping then an error is shown in
the Problems view.
○ The above errors are also displayed once you have saved the mapping.
2.6.2 Handling Inconsistencies in Mapping Editor
Context
You use this task to handle the inconsistencies in the message structures or mappings that occur due to
modification of source or target elements.
Scenarios where such inconsistencies occur are:
● When you change an XSD or WSDL that are being used in existing mapping as source or target element
● When you change the source or target nodes in the message mapping tree structure
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
387
 Note
Whenever you open a mapping where any changes have been made to the source or target element,
the editor notifies you about the change.
Procedure
1. In the Definition tab page editor, choose the icon
structures ).
( Check for consistencies between changed message
2. In the Reload Confirmation dialog, choose OK to continue with correcting of structural inconsistencies.
 Note
This action discards any recent changes or additional mappings that you have done after changing the
source or target element.
3. In the Missing Fields wizard, you can choose to reassign or delete the inconsistent fields.
 Note
○ A red mark appears on the fields with inconsistencies.
○ If there are changes in both source and target structures, then in the Missing Fields wizard,
changes in source structure are displayed first and the follow on screen displays the changes in the
target structure.
4. If you want to reassign the missing fields, then follow the substeps below:
a. Right-click on the missing field in the old structure.
b. Drag the missing field from the old structure and drop it on the required field in the new structure.
c. If you want to map all the children fields related to the selected missing field in old structure with the
matching fields in the new structure, choose the option Map Automatically.
d. If you want to map only the single selected field, then choose Create mapping option.
 Note
○ Alternatively, you can simply drag the fields from old structure and drop onto the fields in the new
structure.
○ In case you have moved a disabled missing field, then the mapping also moves along with the field
but the new field is not marked as disabled.
○ In case you have moved a missing field with a variable defined under it, then the variable also
appears under the new field, and the mapping of the old variable is assigned to the new variable.
5. If you do not require the missing fields in your mapping, then select the missing field and choose the icon
(Delete Field) to mark for deletion.
 Note
If you want to use the field marked for deletion, then select the icon (Delete Field icon) again to cancel
the delete action.
388
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
6. Choose Next to check the missing fields of target structure.
7. Repeat the steps above to reassign or delete the missing fields of target structure.
8. Choose Finish.
Now the fields are reassigned and the fields marked for deletion are removed from the structure.
9. Save the mappings.
2.6.3 Exporting Mapping Details to Excel
Context
You use this procedure when you want to see the mapping details offline without signing into the Eclipse or
NWDS.
Procedure
1. Select the required mapping from the package main.resources.mapping .
2. From the context menu of the selected mapping, choose Export to Excel.
3. In the Save As dialog, select the location for saving the excel containing the mapping details.
4. Select Save.
 Note
○ If the mapping is exported to the selected location without any error, a dialog box with message
Export to excel is completed, is displayed.
○ If you are performing Export to Excel on the mapping for the second time, then it displays a dialog
to replace the earlier excel with the new excel.
○ If you trying to export a mapping, for which an excel is already created and in use by another user,
then the excel does not open and an error is displayed.
○ If any target node is disabled in the mapping, then the node is greyed out in excel and it displays
the value Disabled under the under the corresponding cell of column Type.
○ Similarly, if a node or field is recursive, it displays the value ...[Recursive] under the under the
corresponding cell of column Type.
○ Also, currently only .xlsx format of excel is supported.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
389
2.7
Testing an Integration Flow
Context
Procedure
2.7.1 Checking the Consistency
Context
You can execute consistency checks to validate if the configurations of the integration flow elements are
adhering to their definition. This helps you validate the integration flow model and the configured attributes are
supported at runtime. The inconsistencies can occur if the integration flow model does not adhere to the
modeling constraints that SAP supports for specific scenarios. When you trigger consistency check execution,
the tool validates the consistency of your integration flow model against the predefined constraints set by the
SAP supported scenarios.
Procedure
1. Right-click on the project and choose Execute Checks.
 Tip
You can also click on the graphical model outside the Integration Process pool, and choose Execute
Checks from the context menu.
2. Open the Problems view for the consistency check results.
390
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.8
Operations-Related Tasks
Context
Procedure
2.8.1 Deploying an Integration Project
Prerequisites
You have obtained the details about the system management node from the SaaS Admin and entered in
Windows
Preferences
SAP Cloud Integration
Operations Server
page.
You have ensured that the supported version of Eclipse IDE, Eclipse Juno (Classic 4.2.2), is installed on your
system to avoid deployment failure.
Context
You perform this task to trigger deployment of the integration project. The deployment action triggers the
project build and deployment on the Tenant Management Node (Secure).
Procedure
1. If you are deploying only one integration flow project, follow the steps below:
a. Right-click on the project and choose Deploy Integration Content from the context menu.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
391
 Note
You can distinguish each deployment of the project bundle by adding a qualifier in the
MANIFEST.MF file. Open the MANIFEST.MF file of the project and enter the value for BundleVersion as <version>.qualifier. For example, 1.0.0.qualifier.
b. In the Integration Runtime dialog, enter the Tenant ID of the Tenant Management Node.
c. Choose OK.
2. Check the deployment status of the integration project in the runtime by following the steps below:
a. In the Node Explorer view, select the Tenant that is represented as
<Tenant ID>.
b. Open the Tasks view and check if the 'Generate and Build' task is available.
c. In the Node Explorer, select the worker node type represented as
project bundle that is deployed in the Component Status view.
IFLMAP and check for the
 Note
You can identify the project bundle by checking the Version column. If you have specified the
qualifier, the Version column displays the bundle version along with the timestamp.
2.8.2 Viewing Error Logs
Context
You use this procedure to view the errors of an integration content artifact for monitoring purposes.
Procedure
1. Launch SAP Cloud Integration.
2. Choose
Window
Open Perspective
Other .
3. In the Open Perspective dialog box, choose Integration Designer.
4. Choose OK.
5. In the Node Explorer pane, expand
cluster
<node name>
TM:<VM Name> .
6. Choose the Component Status View tab.
7. In the context menu of an artifact in error state, select Show Error Details.
392
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
2.8.3 Activating Tracing
You activate tracing to check the message payload after each and every integration flow step.
Prerequisites
 Caution
Do not activate integration flow tracing for productive scenarios. This feature was designed for support use
cases and testing purposes. It can cause problems if used in productive scenarios, especially if you expect a
high message load.
● You have obtained the following roles to retrieve and view traces.
Roles
Operations
Roles
View Message Trace
IntegrationOperationServer.read
Export MPL
IntegrationOperationServer.read
esbmessagestorage.read
NodeManager.read
● You have verified that the integration flow for which tracing is required is deployed.
Context
You use tracing to track the message flow of processed messages, view the relevant message payload at
various points in the message flow, and identify any errors that occur during message execution. Tracing
details are displayed in an integration flow as little yellow envelopes.
You can set the log level for an integration flow scenario in the Manage Integration Content page of the Webbased Monitor.
Select your integration flow in the Manage Integration Content and set the log level for this integration flow in
the Log Configuration section.
Procedure
1. In Eclipse, in the Node Explorer, double-click the tenant management node to open the tenant editor. To
enable the trace in
2. On the Trace Configuration tab, select the integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
393
3. Choose Enable.
 Note
On the Trace Configuration tab, under the Trace Status attribute, you can view the following statuses:
Enabled: The trace is enabled.
Disabled: The trace is disabled.
Expired: The trace has expired after being enabled (default duration of expiration time is 10 minutes).
Suspended: The SaaS administrator has switched off the trace temporarily for operational reasons.
4. Run the scenario.
5. In the Node Explorer, double-click the tenant management node to open the tenant editor.
6. On the Message Monitoring tab, select the message.
7. Choose View Trace.
 Note
○ Once you enable the trace, it is enabled for 10 minutes by default.
○ After message processing, the trace data is deleted after 60 minutes.
○ You must run a scenario again after making any configuration changes.
○ If you add a content modifier without a header, body, and property, you cannot trace the element.
○ Tracing is supported only if the total payload size across the entire integration flow is
approximately 50 MB.
○ When tracing is enabled, the message processing log will be written at the highest possible detail
level and the message content gets collected and stored. After expiry of trace during an execution
of an integration flow the collection of message content is stopped but the message processing log
will still be written on the most detailed level. For subsequent executions, the log level falls back to
the one which was set for the integration flow prior to trace.
2.8.3.1
View Trace
You use this task to display message trace for a particular integration flow.
In the Message Monitoring editor, for a completed or failed message, the Properties view displays the message
processing log (MPL) for this message. The MPL provides information on the steps during processing of a
particular message and the View MPL button opens the particular integration flow with the message trace,
displaying path of message flow. If the particular project does not exist in workspace then it automatically
imports project.
If the current project state is different from deployed state then tracing of message flow occurs till the point,
sequence of elements match.
View Trace imports trace content in project with name same as bundle id. If existing project name is not same
as that of bundle id, then view trace creates a new project in the workspace with same bundle-id.
Payload and header tabs appear in property sheet, on clicking the message icon in the message trace. If in any
case splitter is used, then there are multiple message payloads and the icon has multiple message symbols. In
394
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
such a scenario, the message heading is displayed between dashed lines and below the heading, payload
content appears. The same is shown below.
------------------------Message 1
-----------------------<ns0:BSNMessage xmlns:ns0="https://bsnschemas.netweaver.neo.com/bsnflow">
<SenderId>Token</SenderId>
<ReceiverId></ReceiverId>
<MessageType></MessageType>
<FileName></FileName>
<NumberOfRecords></NumberOfRecords>
<MessageId></MessageId>
<MessageContent></MessageContent>
</ns0:BSNMessage>
There are multiple sequences which traverse one path. The property sheet displays this information. For
example, “Displaying content for message 1 (out of 3)”. Here, ‘3’ denotes number of times the sequence
traverses a particular path. Clicking on the text enables user to switch to a different sequence.
In case of huge payload, the whole information is not visible. In such a scenario, we can use ‘Export Payload’
button to view content using external tool/application.
 Note
● You cannot trace a configure-only integration flow.
● You cannot view trace for multiple messages. Please select one message only.
2.8.3.2
Export MPL
Context
You enable this element to export and analyze a trace.
Procedure
Select a processed message in Message Monitoring editor. On clicking the same, Message Processing Log
dialog box opens. Select one of the following from the dialog box:
○ Export Log – Exports message flow sequence only
○ Export Log with Trace – Exports message flow sequence, message payload and headers at different trace
points
○ Export Log with Trace and Integration Project
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
395
 Note
○ You can export only message processing log for a configure-only integration flow.
○ You cannot export MPL for multiple messages. Please select one message only.
2.8.3.3
Import Trace
Context
You can import the content by using Import Trace. Import Trace imports content with trace only.
Procedure
1. Right click on the Project Explorer.
2. Select Import.
3. Select Message Processing Log Archive and click on Next.
4. In the dialog box, select the archived file where the content is saved.
5. The integration flow opens with the message trace.
2.9
References to Additional Help
Cheatsheet
Cheatsheets guide you in performing simple end-to-end use cases. Cheatsheets are very useful if you are
working with the tool for the first time and you want to understand the related steps to complete a task. It
shows you the flow of steps and has UI controls to automatically open the relevant UI elements, such as a
wizard or a view.
To open cheatsheets, follow the steps below:
1. From the main menu, choose
Help
Cheatsheets... .
2. In the Cheatsheet Selection dialog, expand SAP Cloud Integration folder.
3. Select the most appropriate cheatsheet from the list and choose OK.
396
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
4. Follow the instructions mentioned in the cheatsheet.
Context-sensitive Help
Context -sensitive help provides more details about a specific view, wizard or page. It is useful when you want
more information about the parameters in the UI elements.
Select the UI element and press F1 .
Developer's Guide: Managing Integration Content
Developing Integration Content Using the Eclipse Integration Designer
PUBLIC
397
3
Packaging Integration Content in SAP
Cloud Integration
SAP Cloud Integration allows you to assemble integration contents into packages and publish them, so that
integration developers can use these packages in their integration scenarios.
As an integration developer, you can now create integration packages for your specific domain or organization.
You can also view different packages published by other integration developers and consume them for your
integration purposes. You can modify these packages based on your requirements and upload them through
the web application.
Related Information
Creating an Integration Package [page 398]
Importing Integration Packages [page 400]
Working with an Integration Package [page 400]
Editing an Integration Package [page 401]
Update on Integration Packages [page 403]
Exporting Integration Packages [page 406]
3.1
Creating an Integration Package
You use this procedure to create an integration package that is specific to your integration scenario.
Procedure
1. Launch SAP Cloud Integration.
2. Enter your credentials to log on to it.
3. Choose the Design tab.
4. Choose Create.
5. In the <integration package name> editor page, enter the required data.
6. Perform the following substeps as required:
○ If you want to add an integration flow as an artifact, perform the following substeps:
1. Choose
398
PUBLIC
Add
Process Integration
in the Artifacts ( ) section.
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
2. Enter the required details in the Add Integration Flow Artifact dialog box.
3. Choose Browse in the Integration Flow field to import an integration flow from your local system.
4. Choose the required file in the Open dialog box.
5. Choose Open.
6. Choose OK.
 Note
○ Create a zip file of the required integration flow in your project folder before importing it as an
artifact. The zip file must not contain any bin folder, and you must not keep the integration flow
in any sub folder.
You can also select Import to upload an integration flow from your local system.
○ If you want to add a value mapping as an artifact, perform the following substeps:
1. Choose
Add
Value Mapping
in the Artifacts ( ) section.
2. Enter the required details in the Create Value Mapping Artifact Artifact dialog box.
3. Choose Browse in the File Upload field to import a file from your local system.
4. Choose the required file in the Open dialog box.
5. Choose Open.
6. Choose OK.
 Note
Create a zip file of the required value mapping in your project folder before importing it as an
artifact.
○ If you want to add a data integration as an artifact, perform the following substeps:
1. Choose
Add
Data Integration
in the Artifacts ( ) section..
2. Enter the required details in the Create Data Integration Artifact dialog box.
3. Choose OK.
○ If you want to add an OData API as an artifact, choose
section. For more information, see .
Add
OData API
in the Artifacts ( )
7. Choose to either:
○ Delete Package to remove the integration package
○ Save to keep the integration package or
○ Cancel to terminate the creation of the package before saving it
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
PUBLIC
399
3.2
Importing Integration Packages
You use this procedure to upload your existing integration packages that suits your integration scenario in the
application. This reduces redundancy and duplication efforts of creating a package from scratch.
Context
Procedure
1. Launch SAP Cloud Integration.
2. Enter your credentials to log on to it.
3. Choose Import in the Design tab to upload an integration package.
Importing a new version of a package (zip import) over an existing package will not overwrite the
externalized parameters' configured values of the existing package.
4. Browse and select the integration package for uploading.
5. Choose OK.
Import of package will fail with Uniqueness Conflict, when the package contains one or more artefacts that
exists already in other packages in the tenant.
Uploaded file appears in the Design tab of the application.
3.3
Working with an Integration Package
You use this procedure to perform various miscellaneous functions with the artifacts of an integration package.
Procedure
1. Launch SAP Cloud Integration.
2. Enter your credentials to log on to it.
3. Choose the Design tab to view the list of integration packages.
4. If you want to view the details of an integration package, choose <integration package name>.
5. Choose 
View metadata
6. Choose 
Deploy
400
PUBLIC
to view the metadata of the artifact.
to deploy the artifact.
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
You can only deploy data flows, integration flows, and value mappings. You can deploy multiple value
mappings at a time.
7. Choose 
Configure
to configure the artifact.
You can configure only integration flows. For more information, see Configure Externalized Parameters of
an Integration Flow [page 1110].
8. Choose 
Download to download an artifact. The integration flow download feature allows users to
download the integration flow artifact with two options:
a. Default Values Only: Downloads the integration flow with default values only.
 Note
When the downloaded integration flow imported into the system with default values, these values
are seen to the user under externalized parameter view.
b. Merged Configured and Default Values: Downloads the integration flow with values that consists of
configured and default values. This option would replace the default value with the configured value
and accept it as a new default value.
 Note
When you import the integration flow in the tenant, the configured values become the default
value. For more information, see Externalize Parameters of an Integration Flow [page 1105]
You can only download integration flows, files, and value mappings. Your local file system stores the
downloaded artifacts with name as <artifact name>.zip file. If you want to use the artifact in Eclipse, you
need to import it in eclipse after extracting it from the zip file.
3.4
Editing an Integration Package
Edit your integration package to revise the header and overview sections, add or remove content to the
artifacts, and delete the package.
Procedure
1. Log in to SAP Cloud Integration.
2. Choose the  icon to open the Design workspace.
3. Select the required integration package.
4. In the integration package editor, choose Edit.
You can edit the existing information in the following tabs:
○ Header
○ Overview
○ Artifacts
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
PUBLIC
401
○ Documents
○ Tags
5. In the Header tab, you can maintain the name of the package, a short description, a version, and the vendor
of the package.
All this data is displayed on top of the integration package. Furthermore, in the list of integration packages
within your design workspace, the name, the short description, and the version are displayed.
 Note
Although the technical name of the integration package is displayed in the Header tab, you can't
change it. The technical name can only be defined either when creating a new package or when copying
it from the Discover area.
6. In the Overview tab, you can maintain a more detailed description of your integration package.
You can also add hyperlinks.
Furthermore, you've the option to upload a package image. The image is placed on top of the overview
page.
7. In the Artifacts tab, choose  .
You get the following functions. The list of functions varies for different artifact types.
○ Delete
○ Copy
○ View metadata
○ Download
○ Configure (only for integration flows)
○ Deploy (only for data flows and integration flows)
8. To edit the metadata of an artifact, perform the following steps:
a. Choose View metadata.
b. In the <Artifact Name Details> dialog box, choose Edit.
 Note
The name of integration flow must begin with an underscore '_' or alphabets. It can contain
numbers '0–9', space ' ', dot '.', and hyphen '-'.
c. Choose Save to keep the changes.
d. Choose Save as version to retain a copy of the current artifact. For more information, see Versioning of
Artifacts [page 412].
You can view the version history of an artifact by choosing the current version mentioned along with it.
You can save versions of a single or multiple artifacts, or an integration package. You can also view the
list of existing versions of the required artifacts or integration packages. You can choose to make an
existing version as the latest one with or without saving a draft of it.
e. Choose Cancel to revert the changes.
9. In the Documents tab, you can upload files, such as configuration guides, and add URLs.
10. In the Tags tab, you can maintain standard tags such as Product, Country/Region, Lines of Business and
Industry.
402
PUBLIC
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
Furthermore, you can add custom tags to identify and track your packages based on your custom-defined
attributes. For more information, see Creating Custom Tags [page 423].
11. Choose Save to keep the changes made to the integration package.
12. Choose Cancel to discard the changes.
13. Choose Delete Package to permanently delete the integration package.
a. Provide your consent to delete the package.
 Remember
You can’t recover the package and its content after you delete them.
3.5
Update on Integration Packages
SAP provides preshipped content to address various integration scenarios. You can copy these integration
packages from the Discover section to the Design space. SAP also publishes updates with new enhancements
and bug fixes.
Whenever there's an update (planned or available) for the content that you've copied into your workspace,
you're informed by a label that is displayed below your corresponding artifact.
 Note
You see a notification for all updates performed on all standard content packages that have been copied
from the Discover view to the Design view of your tenant. This is even the case if the content isn't deployed
on your tenant.
There are two modes through which the package update is done:
1. Manual
2. Automatic
1. Immediate
2. Scheduled
 Note
The update mode is defined by the content package publisher.
Only in case of a manual update, you've the option not to implement the change. In case of an automatic
update, the update is always applied.
In case of non-configure-only content, you've the option to revert back to an older version, regardless of the
update mode. However, in case of automatic update you don't receive any automatic update of this content
anymore.
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
PUBLIC
403
Manual
1. If you've copied a package into your Design space and an update is available, only then Update Available
label appears next to the package name.
2. Open the package and choose Update Package.
Automatic
If the content is set to update automatically , the update of the packages in the Design space happens in one of
two ways.
Automatic Update - Immediate
The package gets updated within 12 hours. Updates are pushed immediately when the update includes
important bug fixes. These packages have the label Will be updated within 12 hrs next to their names.
Automatic Update - Scheduled
The content of the package is set to be updated on a particular date as configured during publication. Packages
that are scheduled to update automatically have the label Will be updated on <date>.
You can always update the package manually even if the package is set to be updated automatically.
404
PUBLIC
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
 Note
If an artifact is already deployed on the tenant, and an automatic update is released for that content
package, the automatic update process also updates the deployed instance of the artifact in addition to the
stored instance in the Design view.
Post Update
After successful update, the updated packages display the last modified details next to the package names,
and the design-time artifacts are replaced with the new updated content.
If the artifacts contain previously deployed content, the update procedure triggers the deployment of the new
design-time content. If the deployment of updated design-time content fails, then the system retries the
deployment three times with an interval of 1 hour. With every iteration, if the deployment fails, the artifact is
rolled back to the previously deployed runtime version.
If this happens, your tenant contains content with a newer version of the design time, as there's no rollback of
the design time content to an older version.
You need to manually deploy the newly updated design-time content. If the manual deployment also fails,
contact your tenant administrator with the relevant log details of the issue.
Updates for Edited Content
We recommend to only configure the standard integration content.
In some scenarios, you can customize the content according to your needs. But once the artifact is modified, it
does no longer receive any updates. Such artifacts appear with the grayed-out label of Update Available.
 Note
● Package update only updates the content of the package. All attributes and configured externalized
parameters of the package maintained by the user are retained.
● Updates are available even if the packages are renamed.
● A renamed artifact does no longer receive any updates.
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
PUBLIC
405
3.6
Exporting Integration Packages
You use this procedure to download your integration packages in your local system, so that you can provide it
to your content management team to upload and publish them. Publishing integration packages makes them
available to non-SAP integration developers.
Procedure
1. Choose the Design tab.
2. Select the required integration package from the list.
3. Choose Export.
The destination of export depends on the default browser setting. By default, the downloaded file takes the
name of the integration package. In case the name contains special characters, the browser changes the
file name by appending them.
 Note
Configure-only content can't be downloaded.
406
PUBLIC
Developer's Guide: Managing Integration Content
Packaging Integration Content in SAP Cloud Integration
4
Developing Integration Content with SAP
Cloud Integration
You can use SAP Cloud Integration to access and design integration content.
Use
SAP Cloud Integration provides you with an interface for accessing and managing integration content. You can
either directly use the prepackaged integration content from the catalog or upload it to your workspace to
adapt it to your requirements.
You can use the artifacts available in integration packages to solve the integration challenges of your scenario.
Optionally, you can also upload integration packages from your local folder and use them. You can use the
integration flows available in packages by configuring and deploying them. You can also edit the integration
flows by adding or removing elements, before you configure and deploy them.
The application consists of the following components which allow you to perform different tasks:
Component
Allows you to...
Discover
View all available integration packages.
Which integration packages are available to you depends on
the permissions for the user (which has logged-in to SAP
Cloud Integration). You can view the description of integra­
tion packages and copy integration packages to your cus­
tomer workspace (see Design tab below).
This component is also known as catalog.
Design
Configure or model integration flows.
After completing this task, you can save the changes, save
as a version or deploy the integration flow.
This component is also known as customer workspace.
Monitor
Monitor the message processing and manage integration ar­
tifacts such as integration flows, value mappings and secur­
ity-related artifacts.
You can check the status of messages and integration arti­
facts for your tenant cluster.
You can also access the dedicated message monitor and in­
tegration content monitor to view more information.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
407
Component
Allows you to...
Settings
Select the product profile to specify the target runtime for
your content.
Related Information
Understanding the Basic Concepts [page 408]
Working with Integration Packages [page 419]
Content Transport [page 427]
Creating an Integration Flow [page 452]
Using Flow Step Recommendation [page 454]
Integration Flow Extension [page 456]
Importing Custom Integration Adapter in the Cloud Foundry Environment [page 494]
Configure Integration Flow Components [page 497]
Simulation of an Integration Flow [page 1114]
Deploying Data Flows [page 1122]
Unlocking Integration Packages and Artifacts [page 1123]
4.1
Understanding the Basic Concepts
This section provides an overview of the concepts of integration content design.
Related Information
Elements of an Integration Flow [page 408]
The Camel Data Model in a Nutshell [page 410]
Updating your Existing Integration Flow [page 410]
Adapting Standard Integration Content to Your Requirements [page 411]
Product Profiles [page 413]
4.1.1 Elements of an Integration Flow
An integration flow allows you to specify how a message is processed on a tenant.
You can use integration flows to specify specific integration patterns like mapping or routing.
408
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
A graphical editor allows you, the integration developer, to model the message processing steps and specify in
detail what happens to the message during processing.
In detail, you define the following aspects in an integration flow:
● The senders and receivers of the message
● How the senders and receivers are connected to the tenant (adapters)
● The steps that define the message processing
The following figure provides a simplified and generalized representation of an integration flow.
Senders and Receivers
You define a participant of an integration scenario as a sender or receiver. The senders and receivers typically
represent the customer systems that are connected to the tenant and exchange messages with each other.
Connectivity (Adapters)
An integration flow channel allows you to specify which technical protocols should be used to connect a sender
or a receiver to the tenant.
 Note
To specify an adapter, click the connection arrow between the sender/receiver and the Integration Process
box.
Message Processing (Steps)
You use integration flow steps to specify what should happen to a message during processing. Various step
types support the wide range of integration capabilities of the Cloud-based integration platform.
 Note
To insert a step into an integration flow, drag and drop the desired step type from the palette on the right of
the graphical modeling area.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
409
Message Flows
You use message flows to connect various integration flow elements.
Related Information
Configure Adapter in Communication Channels [page 517]
4.1.2 The Camel Data Model in a Nutshell
An integration flow is a BPMN (Business Process Model and Notation)-like model that allows you to specify
how a message is to be processed on a tenant.
To interpret an integration flow model at runtime, it is transformed into an XML structure that is compatible
with Apache Camel (http://camel.apache.org ), an Open Source integration framework for Java that
supports the mediation and routing of messages of any format.
The only prerequisite for a message that is to be processed by the Camel framework is that it comprises the
following elements:
● Headers
Contain information related to the message, for example, information for addressing the message sender.
● Attachments
Contain optional data that is to be attached to the message.
● Body
Contains the payload (usually with the business-related data) to be transferred in the message.
For as long as a message is being processed, a data container (referred to as Exchange) is available. This
container is used to store additional data besides the message that is to be processed. An Exchange can be
seen as an abstraction of a message exchange process as it is executed by the Camel framework. An Exchange
is identified uniquely by an Exchange ID. In the Properties area of the Exchange, additional data can be stored
temporarily during message processing. This data is available for the runtime during the whole duration of the
message exchange.
4.1.3 Updating your Existing Integration Flow
Some new features might not be available for your current integration flow due to the following reason:
A feature for a particular adapter or step was released after you created the corresponding shape in your
integration flow.
You have the following options:
● You can continue using the older version of the integration flow shape (adapter or step).
● You can use the new integration flow shape (adapter or step).
410
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
To do this, you first have to delete the old flow step or channel and then create it again.
Related Information
Versioning of Artifacts [page 412]
4.1.4 Adapting Standard Integration Content to Your
Requirements
When you use standard (predefined) integration content published on SAP API Business Hub, there are two
different ways how to adapt such content to meet the requirements of your concrete business scenario.
● Modifying/editing the standard integration flow
● Configuring externalized integration flow parameters
Modifying/Editing the Standard Integration Flow
Using this option, you modify the integration flow in Edit mode and change its design, for example, by adding
new integration flow steps or channels. Modifying an integration flow this way allows you also to change
parameter values predefined in the integration flow model.
However, be aware of the fact that when using this option you can run into conflicts when SAP provides an
update of the associated integration package. Note that as soon as you've modified a predefined integration
flow, you don’t get any further updates to it when SAP provides an update of the related integration package.
Furthermore, if you copy an updated standard integration package from SAP API Business Hub to the Design
workspace of your tenant, you overwrite all changes that you have made to that package before this action.
If you, nevertheless, like to modify standard integration content, it's recommended that you decouple your
modifications from the standard content.
More information:
 Note
You can only modify content of a standard integration package if its mode is set to Editable.
There are dedicated standard integration packages that don't allow a user to modify its content (Configureonly mode). In such a case, you can only configure externalized parameters of the contained integration
content (as described under Configuring Externalized Integration Flow Parameters).
Configuring Externalized Integration Flow Parameters
When you use a predefined integration flow, it’s likely that certain parameters are defined as externalized
parameters. When having copied an integration package from SAP API Business Hub to the Design workspace
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
411
of your tenant, you have the option to configure the values of externalized integration flow parameters.
Choosing this option allows you to adapt the integration flow without the need to modify the integration flow
model in Edit mode.
Typically, the integration developer who provides the standard integration flow has externalized parameters
such like, for example, address parameters of adapters. Such parameters typically can't be foreseen by the
provider of the standard integration package. The reason is that the values of such parameters depend on the
concrete environment and system landscape where the integration flow is finally to be deployed. To enable the
integration flow to run in a dedicated environment, such parameters anyway need to be adapted by the
consumer of the standard integration package.
When you have configured externalized parameters of integration flow parameters, you can still receive
updates of the associated standard integration package.
More information: Configure Externalized Parameters of an Integration Flow [page 1110]
4.1.5 Versioning of Artifacts
SAP Cloud Integration offers an easy version management capability for your integration artifacts.
You can version both the integration package and its artifacts and documents.
When editing an artifact, you can either choose Save as Version to save your changes. Choose Save to save
your artifact as Draft version. Choose Save as Version to create a new version of the artifact. In this case, you
can specify the version in the upcoming Version Information dialog. In the Comment section, you can add
additional information specific to the artifact for later reference. This helps you determine the purpose of each
version.
● The artifact version management is specific to the tenant that you are using it in. It will not work across
tenants.
● When you create a new artifact, it is created with the version 1.0.0 by default.
● If you choose Save after editing an artifact, the artifact version will be Draft. You can only see the latest
Draft version.
● If you choose Save as Version, by default the micro version is increased, for example, from 1.0.0 to
1.0.1. You can either confirm the proposed version number or change according to your policy.
By default, artifact versions follow the versioning convention of <major>.<minor>.<micro>. Although SAP
Cloud Integration does not prevent you from maintaining any version number, it is recommended to follow this
convention. In combination with a well-defined versioning policy, thie measure helps you to understand to
which extent changes of the package or artifact were done.
 Note
Example
● If you add a new integration flow step to an existing integration flow, increase the micro version, for
example, from version 1.0.1 to 1.0.2.
● If you enhance an integration flow with a further integration process or an exception subprocess,
increase the minor version,for example, from version 1.0.1 to 1.1.0.
● If you have updated an existing integration flow within an integration package, increase the micro
version of the package.
412
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● If you have added a new integration flow to an integration package, increase the minor version of the
package.
By default, you only see the latest version of the artifact in the integration package. However, the older versions
of the artifact are available for you in the backend. If you want to switch to a different version of that artifact,
you can do that by selecting the version and choosing the  icon corresponding to the version. This feature
allows you to replace integration content of the current version with the selected version.
 Example
You are currently using the 1.2.0 version of the artifact, but you want to switch to version 1.1.8. You click
on the version number 1.2.0, and in the Version History dialog, you choose  icon next to 1.1.8 to
replace the integration content of the 1.2.0 version with 1.1.8 version. You can choose More to see
comments about each version, if any.
4.1.6 Product Profiles
The Cloud Integration Web UI (also known as Content Hub) allows you to use Cloud integration content for
different target integration platforms. Accordingly, different product profiles are available to adapt the user
interface of the integration content designer to the specifications and capabilities of the target integration
platform.
A product profile defines a set of capabilities for Cloud integration content design supported by a specific
target integration platform. In particular, a specific product profile supports the configuration of a specific set
of adapter types and integration flow steps.
The following product profiles are available:
● SAP Cloud Integration
Cloud-based integration runtime of SAP Cloud Integration
● SAP Process Orchestration (for specific Process Orchestration release)
For example: SAP Process Orchestration 7.5, SP5
On premise integration runtime of SAP Process Integration (for the available release)
Prior to start working with Cloud integration content, you need to know on which target integration platform(s)
the Cloud integration content is to be deployed and executed.
If you encounter use cases where both on premise and Cloud-based integration platforms are involved, you
might like to have several options and, accordingly, both product profiles are of interest for you.
The following figure illustrates the use case for the product profiles SAP Cloud Integration and SAP Process
Orchestration 7.5 SP0.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
413
When you’ve decided on the product profiles in question, the process is as follows:
Based on your choice, you request an account and tenant at SAP.
As soon as the tenant is available, you connect to it using the Web application (using the Web UI URL provided
in the mail you received from SAP).
Under Settings, you choose the default product profile. When you create a new integration flow, this choice is
applied by default.
All the profiles are visible under the Settings. You can enable or disable the availability of the product profile in
the tenant under the enable option. Only enabled product profiles appear in the integration flow under Runtime
Configuration.
 Note
● Product profiles are shown as enabled under the Settings tab.
● Using the switch option, tenant administrator can enable or disable product profiles. Users can edit the
profiles page and save the settings.
● The SAP Cloud Integration profile can’t be disabled. The switch option is grayed out.
● Tenant administrator can decide to enable or disable the SAP Process Orchestration supported
packages (SP's). They can take the decision based on the availability of SP’s in the on-premise
integration platform.
● If you make support packages of SAP Process Orchestration profile as a default and disable it, SAP
Cloud Integration automatically becomes a default profile.
● If you disable the product profile already used in the integration flow
○ The palette shows an alert message indicating that the product profile set in the integration flow
isn’t available; default profile set at the workspace level will be used for loading the palette and
validations.
○ Disabled Product profile is grayed out in the integration flow under Runtime Configuration.
The integration flow editor shows the options and executes checks based on the chosen product profile. The
reason for this is that the target integration platform imposes specific restrictions on the Cloud integration
content.
414
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
You have the option to configure a product profile also for an individual integration flow (under Runtime
Configuration).
Related Information
Set Default Product Profile [page 416]
Configure Product Profile for an Integration Flow [page 415]
4.1.6.1
Configure Product Profile for an Integration Flow
You can use product profile in an integration flow, to develop content for a particular runtime.
Prerequisites
● You have connected toSAP Cloud Integration.
● Your user is assigned with integration developer role.
● You have opened an integration flow in the editor.
Context
Product profile is a collection of capabilities such as success factor adapter, splitter or datastore elements,
available for a particular product. You can consume these capabilities at the time of designing integration flows.
The tool enables you to design for multiple runtimes at the same time. You should select specific product
profile to develop content for the respective runtime.
 Note
If a product profile does not support a particular capability then the checks report errors for unsupported
components in the integration flow.
Procedure
1. Choose Runtime Configuration tab page.
2. Select relevant product profile from the Product Profile dropdown list.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
415
 Note
○ If you want to publish content in the catalog, then it is a recommendation to select a specific
product profile.
○ If you switch product profiles, then the system reloads the palette and displays relevant
capabilities.
3. Choose Save or Deploy as appropriate.
Related Information
Product Profiles [page 413]
4.1.6.2
Set Default Product Profile
The tenant administrator can view and configure the product profile, to mark one of them as default for the
tenant.
Prerequisites
● You have connected to SAP Cloud Integration.
● You have assigned WebToolingSettingsProductProfiles.savetenantconfiguration or the tenant
administrator role.
Context
Product profile is a collection of capabilities such as success factor adapter, splitter or datastore elements,
available for a particular product. You can consume these capabilities at the time of designing integration flows.
The tool enables you to design for multiple runtimes at the same time. You should select specific product
profile to develop content for the respective runtime. You can execute the following steps to configure a
product profile for a tenant.
Procedure
1. Choose Settings tab page.
416
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
 Note
You can click on the product profile name under Name field to see the available capabilities for the
relevant profile.
2. Choose Edit in the Product Profiles tab page.
3. Select the radio button for the product profile you want to mark as default.
4. Choose Save or Cancel as appropriate.
 Note
You can also configure product profile at integration flow level. For more details please refer to Define
Product Profile [page 415].
Related Information
Product Profiles [page 413]
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
417
4.1.7 Restrictions
The Integration Designer allows you to model specific patterns which are handled at runtime in an unexpected
way.
Restrictions and Alternative Configuration Settings
Modelled Pattern
Expected Behavior at Run­
time
Actual Behavior at Runtime
Alternative Modeling Option
Integration flow step with
more than one outgoing se­
quence flows
The same message is proc­
essed in parallel after the in­
tegration flow step.
The messages are delivered
to the different receivers in a
sequence.
Configure only one outgoing
sequence flow and parallel
processing using a multicast
of messages.
For example, after a Message
Hereby, the order in that the
Persistence step the mes­
messages are delivered is
sage is supposed to be sent
randomly generated.
to multiple receivers in paral­
lel.
In addition to that, the follow­
ing behavior may occur: the
message which results from
the processing in the previ­
ous sequence flow is taken
as input for the next se­
quence flow.

Note
As an example, consider
two parallel sequence
flows where the first one
contains an encryption
step and the second one
not. In that case, the re­
ceiver of the second se­
quence flow also gets an
encrypted message (al­
though in the second se­
quence flow no encryp­
tion step has been con­
figured).
Comment on Database Transactions
The following step types include transactional database processing.
If one of the below listed steps is contained in an integration flow, the processing of the message is executed in
one transaction.
● Data Store Operations step
○ Select (in case delete=true)
○ Write
○ Get (in case delete=true)
○ Delete
● Usage of Write variables
418
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● Aggregator step
● Content Enricher
 Caution
Such steps might lead to resource shortages because long running transactions can cause node instability
and impede other processes that are running in transactions.
Some of the above mentioned steps or adapters persist data in the database. In case of an error, the whole
process is rolled back and the original state is being re-established. That means, data from failed processes
remain and, in case message processing fails, customers normally cannot access data about the failed
processing (due to the roll-back).
In case an error is propagated back to the calling component, all data that have been written in the course
of the (failed) transaction are being removed (in other words: not persisted in the database). For the calling
component, an error implies, therefore, to restart the integration flow.
Transactional processing is also to be considered in scenarios that contain asynchronous decoupling. Let’s
assume integration flow A contains a Data Store Operation step. Integration flow B contains a Select
operation on the Data Store and runs into an error. In that case, that data is preserved that has been written
to the database by integration flow A. This behavior makes sense in particular when you consider the case
that integration flow B changes or deletes the data that has been stored by integration flow A. In case
integration flow B fails, the original data from integration flow A can be retrieved.
4.2
Working with Integration Packages
Related Information
Working with Prepackaged Integration Content [page 419]
Configure Multiple Integration Flows [page 420]
Generating Integration Content using APIs [page 421]
Add Integration Packages to the Customer Workspace [page 422]
Creating Custom Tags [page 423]
Importing Content from ES Repository [page 424]
4.2.1 Working with Prepackaged Integration Content
SAP delivers rich prepackaged integration content out of the box that enables you get started quickly. These
integration packages are created for some of the commonly used integration scenarios. They contain
integration flows, value mappings, documentation, and so on. By using this content, you can easily get started
with minimal integration developer effort.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
419
 Note
You can also find integration content from SAP partners in the Discover tab. If you are viewing the package
in Highlights section, they can be identified by the tag Partner on the top-right part of the integration
package tile. You can also find these packages by filtering for the Vendor with any other available value
apart from SAP.
You cannot download content from integration packages by SAP partner vendors.
You can access this content on the SAP API Business Hub here: https://api.sap.com/shell/integration . Copy
the content to your workspace (Design tab), configure it and deploy it. Here's a representation of the typical
workflow:
You can also watch this video for more information on prepackaged integration content:
4.2.2 Configure Multiple Integration Flows
You use this feature to configure parameters of multiple integration flows. You can save and deploy all from a
single window with minimal effort.
Context
The feature offers a mass update capability where you can configure multiple integration flows. It allows you to
enter the configuration details in the mass configuration view. Using the embedded configure view you need to
configure the integration flows one by one. You can save and deploy all the configured integration flows in one
click and it minimizes your efforts.
With the mass configuration, you can configure all the externalized parameters of the integration flow. If there
are any errors during configuration of the fields, it’s notified as a check error along with detailed message. You
can see an indicator referring to the respective integration flow after you close the error message window.
Benefits
● Reduction in steps and time for configuring multiple integration flows.
● Save and deploy all integration flows simultaneously.
● Validation checks help you to resolve the errors with the clear message.
420
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Procedure
You use the following procedure to configure multiple integration flows.
1. Launch SAP Cloud Integration using the application URL.
2. Choose 
Design .
3. Select the package that contains the integration flows that you want to configure and choose Package
content.
4. In the Artifacts screen area, select one or more integration flows you want to configure.
5. Choose
Actions
Configure .
6. Select the integration flows one after the other in the mass configure view and make necessary changes.
7. If you want to save the configuration, choose Save All.
8. If you want to deploy the integration flows, choose Deploy All.
You can see a message confirming that the integration flows has been deployed.
4.2.3 Generating Integration Content using APIs
Use APIs to generate integration flows and access them using the SAP Cloud Integration tenant.
Prerequisites
● You have logged-on to SAP Cloud Integration.
● You have created an integration package.
Context
Based on specific end-to-end business integration requirement you can filter and choose prepackaged APIs
from the Discover page. These prepackaged APIs displayed here are from the SAP API Business Hub. Use them
to generate and deploy generic integration flow templates to accelerate your integration process. Prepackaged
API content contains different types of APIs, and each API contains a set of resources and operations. The
operations are available in the open API specification format.
Supported APIs and Operations
APIs
Operations
OData
GET, POST, and DELETE
REST
GET, POST, PUT, and DELETE
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
421
 Example
Let us consume an API to create an integration flow. In the Discover page, select the All tab to search and
filter the relevant API. Here we use SAP BTP API package that contains an artifact for managing the
lifecycle of your application. Select the API that is of the type REST.
Before you generate an integration flow, it is recommended you understand the resources and its
operations. Choose Generate Integration Flow, and provide relevant details for creating an integration flow.
The next action is:
● In the Design tab, find the generated integration flow in the pre-existing package.
● Optional: You can enhance the integration flow and then deploy it.
 Note
Creation of integration flow is only possible for APIs that have Basic Authentication, and DELETE, GET,
POST, PUT, and GET_ID operations.
To generate an integration flow and add it to the workspace of an existing integration package, do as follows:
Procedure
1. Choose
Discover
APIs
to access the prepackaged APIs.
2. Choose an API content package, and then choose the Artifacts tab to select the relevant API type.
3. Choose Generate Integration Flow, and provide the relevant details to create and add the integration flow.
Results
You have generated an integration flow and added it to an existing integration package.
4.2.4 Add Integration Packages to the Customer Workspace
Prerequisites
You have logged-on to the Web application with the integration developer role.
Context
You have to add the integration packages to your customer workspace (Design tab page). This enables you to
access the artifacts in that package, configure, and deploy them. There are two options to do this:
422
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
1. Copy integration package from catalog (Discover tab page) to your customer workspace.
2. Upload integration package from your local file system to your customer workspace.
You use this procedure to add integration packages to your customer workspace.
Procedure
1. If you want to copy integration package in catalog to your customer workspace, mouse-over the integration
package tile and choose  .
2. If you want to upload an integration package from your local file system to your customer workspace,
perform the following substeps.
a. Choose  , then Design.
b. Choose Import.
c. Navigate to the folder in your local file system in which you have saved the integration package.
 Note
The integration package must be a .zip file.
d. Choose Open.
You see the integration package that you uploaded in your customer workspace.
4.2.5 Creating Custom Tags
You can maintain custom attributes in your editable integration packages.
You can tag your integration package using custom attributes that can be created under the Settings tab. The
tags can help you identify and track your packages based on attributes, for example, such as Author, Line of
Business etc.
 Remember
You must have the tenant administrator role assigned to access the Custom Tags settings. See .
1. Navigate to the Settings ( ) in the web UI and choose Custom Tags.
2. Choose Edit and select Add to add custom attributes.
3. Enter a name for the tag under Tag Name.
4. By default, the Mandatory check box is enabled. Uncheck the check box if you don’t want to set your tag
mandatory.
5. In the Permitted Values field, type in the possible custom values from which you want the integration
developers to choose. For example, with a custom tag name Department, you can provide permitted
values like HR, Finance, Sales, and Marketing. Leave the field blank, if you want the integration
developers to type their own values.
6. Choose Save. You can’t rename the tags after saving them. The tags become read-only.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
423
 Note
○ After adding the necessary custom tags, you can inform the integration developers to maintain the
custom tags in the existing packages.
○ For transport scenarios, the custom tags can be exported from source tenants and imported into
the target tenant before the package transport, to reflect the custom tag values maintained at
source.
The integration developers can now start maintaining the attribute values under the Tags tab in the newly
created packages. For existing packages without the attributes, the values can be added by editing the package
or using OData API.
To know how to work with custom tags using OData API, see .
Saving of an edited package or a newly created package fails if the mandatory attributes aren’t maintained.
 Note
Deleting a custom tag in the Settings that is already maintained in a package only hides the tag from the
Tags section of the package. But the value of the tag along with the tag name is persisted in the package for
easy retrieval. Read this blog
to know more about custom tags and their behaviours.
4.2.6 Importing Content from ES Repository
SAP Cloud Integration enables you fetch content directly from ES repository. This enables you to reuse the
integration content that you already have in your ES repository and avoid the overhead of creating that content
again in the Cloud Integration web application.
To enable this content import feature, you have to configure the connection settings to connect to ES
repository. Since this is an on-premise system, you need to connect to it via Cloud Connector.
For more information on Cloud Connector, see SAP Cloud Connector documentation.
You can also check out this blog on SAP Cloud Integration community: Importing Message Mapping from ES
Repository in SAP Cloud Integration .
424
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.2.6.1
Configuring Connectivity to ES Repository
Prerequisites
You have logged in to SAP Cloud Integration web application.
Context
You have to configure connectivity to the ES Repository from SAP Cloud Integration in the Settings( ) tab of
your application. You need to have tenant administrator role to access this tab. If you do not see the icon,  in
your application, please contact your tenant administrator to obtain this role or configure connectivity to the
ES Repository.
Procedure
1. Choose  .
2. Choose the ES Repository tab.
You see some fields that enable to configure connectivity to ES Repository.
3. Choose Edit. Provide values in fields based on description in table:
Field
Description
Name
Enter a connection name for your reference. This can be
any value of your choice.
Address
Enter the URL configured in the cloud connector that con­
nects to the ES Repository.
Credential Name
Enter the credential name that you have deployed in the
operations view of this application.
Location ID
Enter the location ID that you have specified in your cloud
connector.
4. Choose Save.
Results
This establishes a communication to the ES Repository from your
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
425
4.2.6.2
Importing Mapping Content from ES Repository
Prerequisites
You have configured a connection to ES Repository in the Settings( ) tab. For more information, see
Configuring Connectivity to ES Repository [page 425].
You have opened the integration flow in which you want to add the integration content and you are editing it.
Context
After you have configured the connection to ES Repository, you can import content from it in the Resources tab
of the integration flow editor. Currently, you can import:
● Message mapping
● Operation mapping
● WSDL
 Restriction
● Import of operation mapping will fail if
○ It contains XSLT references
○ The interfaces contain more than one cardinality
○ The interfaces are asynchronous in type
● The import process will fail if the message mapping contains
○ User Defined Functions with function libraries or imported archives
○ Parameters
● Message mapping import with Java UDF is supported, but viewing and editing of the UDF is not
supported.
● Message Mapping containing reference to Value Mapping is not supported at runtime.
Here's how you can do it:
Procedure
1. Choose Resources tab in the integration flow settings.
If you do not see the Resources tab, click the empty space in the integration flow editor. You will see the
Resources tab at the bottom of the integration flow editor.
2. Choose Add
to import.
426
PUBLIC
Mapping
Message Mapping/Operation Mapping
depending on the resource you want
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
An Add Message Mapping prompt, where you can select the source and select target system details is
displayed.
3. Choose ES Repository as the source. You see the details populated in Name and Address fields. Connect.
A connection is established to the ES Repository. A table with the list of available content is displayed.
4. Choose the content that you want to import and choose Select.
A summary of all the artifacts that will be imported is displayed.
5. Choose Add.
You see a confirmation about all the artifacts that are successfully imported.
4.3
Content Transport
The content transport mechanism enables you to reuse content across multiple tenants. When transporting
integration content, you export it from one (source) tenant and import it on another (target) tenant.
Let us consider an example where you have two tenants, test and production. You design and test an
integration flow on the test landscape and it works as expected. Instead of redesigning the integration flow on
the production landscape, you can use the same integration content that you've tested in the test landscape in
the production landscape.
 Note
Content transport across two different landscapes isn't supported. You can't transport a content between a
Neo and a Cloud Foundry tenant.
There are four content transport options:
Transport Option
Description
CTS+
Transport integration content from one landscape to
another through the CTS+ system.
With a single click, you can transport integration content
from one landscape to another.
For more information, see Content Transport Using CTS+
[page 437].
Transport Management Service
Transport integration content from one landscape to
another through Transport Management Service (TMS).
With a single click, you can transport integration content
from one landscape to another.
For more information, see Content Transport Using
Transport Management Service [page 438].
MTAR Download
Download an MTAR file from the source tenant and
manually upload this MTAR file to a CTS+ system or TMS.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
427
Transport Option
Description
In the Neo environment, you can deploy an MTAR file to a
target Cloud Integration tenant from the subscriber account
(through Solutions).
For more information, see Content Transport using MTAR
Download [page 439].
Manual export and import
Manually export integration content from the source tenant
and manually import this content to the target tenant.
For more information, see Content Transport using Manual
Export and Import [page 440].
 Note
● If the configuration or the transport results in an error, the error codes are displayed along with the
error message.
● The externalized parameters/configured values of the integration flows won't be overwritten during a
content retransport.
● If the standard/pre-shipped integration packages are transported to target tenant, the updates on
those packages won't be available in the target tenant.
428
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● Content Transport Using CTS+ [page 437]
● Content Transport Using Transport Management Service [page 438]
● Content Transport using MTAR Download [page 439]
● Content Transport using Manual Export and Import [page 440]
The procedure to set up content transport depends on whether you use Cloud Integration in the Cloud Foundry
or in the Neo environment.
Enabling Content Transport, Cloud Foundry Environment
For more information, see:
Enabling Content Transport, Cloud Foundry Environment [page 433]
Enabling Content Transport, Neo Environment
If you run Cloud Integration in the Neo environment, the procedure how to set up content transport is different.
For more information, see:
Enabling Content Transport, Neo Environment [page 429]
Content Transport Guidelines
For guidelines and best practices related to integration content transport, see Guidelines and Best Practices for
Content Transport [page 444].
Related Information
Guidelines and Best Practices for Content Transport [page 444]
4.3.1 Enabling Content Transport, Neo Environment
All the tasks mentioned here are one-time activities. It’s recommended that the tenant administrator performs
these tasks to facilitate content transport.
Enabling Solutions Lifecycle Management
 Note
To use the automatic transport options (CTS+ or Transport Management Service), you need to enable the
additional service Solutions Lifecycle Management. This service is responsible for packaging the
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
429
integration content objects (integration packages with their artifacts) into MTA files and handing them over
to the transport mechanism. This service is always needed independently of the transport mechanism,
whether CTS+ or Transport Management Service.
 Note
This information is relevant only when you use SAP Cloud Integration in the Neo environment.
You enable the service Solutions Lifecycle Management in your account. Ensure that you perform this step in all
the accounts where you want to use content transport. This step is a one-time activity. You can do that by
performing the following steps:
1. Log in to your account in the SAP BTP.
2. Choose
Services
Solutions Lifecycle Management .
3. Choose Enable.
Selecting the Transport Mode
The content transport mechanism provides you the flexibility of directly exporting integration content to CTS+
system, or exporting the content as an MTAR file to a local file system. To use either of the modes, you need to
enable the Transport Mode found in the Settings ( (settings)). You can perform this step by navigating to 
(settings)in the Web UI and then choosing the Transport tab. Based on your requirement select either CTS+ or
Transport Management Service or MTAR Download from the dropdown list.
 Remember
● Please note that this step needs to be performed on the tenant from which you want to export content.
For example, if you're exporting content from your Test tenant, you need to perform this step only in
the Test tenant.
● Transport Settings are available for you only if you have the tenant administrator role assigned to your
account. Please assign the role to your user if you don't see the Transport Settings.
 Tip
If you don't see the Settings( ) options, please contact your tenant administrator for performing this
step.
Next Steps
You have to create HTTP destinations to facilitate connections between your tenant, Solutions Lifecycle
Management service, and the CTS+/Transport Management Service systems. If you want to use:
● MTAR Download option, create an HTTP destination in Solutions Lifecycle Management for your tenant
management node.
● CTS+ option, create two HTTPS destinations in Solutions Lifecycle Management, one for your tenant
management node (Cloud Integration application) and one for the CTS+ system.
● Transport Management Service option, create three HTTPS destinations in Solutions Lifecycle
Management, one for your tenant management node (Cloud Integration application), another one for
getting OAuth tokens, and the third one to the Transport Service backend.
More information:
Creating HTTP Destination in Solutions Lifecycle Management, Neo Environment [page 431] (explains how to
create HTTP destinations).
430
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Configuring the Access to the Solution Lifecycle Management Service
If you like to use Transport Management Service, this service has to be active in a Cloud Foundry
environment. For more information on the required steps, see:
Setting up Transport Management for SAP Cloud Integration
Cloud Integration – Using Transport Management Service for a Simple Transport Landscape
For more information on how to configure CTS+ for the transport of integration content, see:
Content Transport using CTS – Cloud Integration – Part 1
Content Transport using CTS – Cloud Integration – Part 2
Change and Transport System
Resources on CTS+
(SAP Community Wiki)
Configuring CTS+ in SAP Solution Manager 7.1 and 7.2
4.3.1.1
(SAP Community Wiki)
Creating HTTP Destination in Solutions Lifecycle
Management, Neo Environment
You must create a destination in solutions lifecycle management as the first step to enable content transport.
Prerequisites
You must enable the Solutions Lifecycle Management service. For information on how to do this, see Enabling
Content Transport, Neo Environment [page 429].
Context
 Note
This information is relevant only when you use SAP Cloud Integration in the Neo environment.
You should create a destination in the Solutions Lifecycle Management service to enable import of content into
your target tenant.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
431
Procedure
1. Access Solutions Lifecycle Management by choosing
Services
Solutions Lifecycle Management .
 Tip
You see the page header as Service: Solutions Lifecycle Management - Overview.
2. Choose Configure Destinations.
3. Choose New Destination.
4. In Destination Configuration section, provide values in fields based on description in table.
Field
Description
Name
Provide value as CloudIntegration. Please note that this value is case-sen­
sitive.
Type
HTTP
Description
You can provide a description for your reference. This field is optional.
URL
Provide the URL of the system that you want to create a destination to.
If it is SAP Cloud Integration tenant, it will be in the format: https://<CPI tenant
name>-tmn.hci.int.cn1.hana.ondemand.com/itspaces/. For more information on
exporting the content, see Set Up a Direct Upload of MTA Archives to a CTS+
Transport Request.
If it is the Transport Management Service, you have to provide the URL of the
Transport Management Service system.
Since the Transport Management Service is now generally available, the configuration of the destination need to be updated.
For more information, see Transport Management.
Proxy Type
Internet
Authentication
Basic Authentication

Remember
For Cloud Integration only: Please ensure that the credentials of the user
used in the destination is a member of the SAP Cloud Integration account
from which you want to transport content. The user should also have role
AuthGroup.IntegrationDeveloper and IntegrationContent.Transport.
5. Choose Save.
432
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.3.2 Enabling Content Transport, Cloud Foundry
Environment
All the tasks mentioned here are one-time activities. It is recommended that the tenant administrator performs
these tasks to facilitate content transport.
 Note
To use the automatic transport options (CTS+ or Transport Management Service), you need to enable the
additional service Content Agent. This service is responsible for packaging the integration content objects
(integration packages with their artifacts) into MTA files and handing them over to the transport
mechanism. This service is always needed independently of the transport mechanism, whether CTS+ or
Transport Management Service.
 Note
This information is relevant only when you use SAP Cloud Integration in the Cloud Foundry environment.
Enabling Content Transport in Cloud Foundry involves two major steps:
1. Subscribing to Content Agent
2. Subscribing to CPI Service Broker
Subscribing to Content Agent
1. Login to SAP BTP cockpit and navigate to your subaccount where you want to use content transport.
2. From the Overview page of your subaccount, choose Spaces from the left pane.
3. Choose Create Space and enter a Space Name and choose Create.
4. Navigate to the newly created Space and choose Service Marketplace under Services tab from the left
pane.
5. Search for and choose Content Agent.
6. In the resulting screen, choose Instances from the left pane.
7. Choose New Instance and provide the necessary details and an Instance Name and select Finish.
8. Open the newly created instance and choose Service Keys from the left pane.
9. Choose Create Service Key and enter a service key name and choose Create.
 Note
Make note of the values of url, clientid and clientsecret as these details would be needed while
creating HTTP destination ContentAssemblyService for Content Agent.
Subscribing to CPI Service Broker
1. Using SAP BTP cockpit, under your subaccount, choose Entitlements from the left pane.
2. Choose Configure Entitlements and choose Add Service Plans.
3. In the resulting screen, search for and choose Process Integration Runtime under the Entitlements section
and select the api checkbox under the Available Plans.
4. Choose Add 1 Service Plan.
5. Choose Save to save the entitlement.
6. Navigate to Spaces from the left pane of your subaccount and open the space that you created in the
previous steps.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
433
7. In the resulting screen, choose Service Marketplace under Services tab from the left pane.
8. Search for and open Process Integration Runtime.
9. Go to Instances from the left pane and choose New Instance.
10. Under Choose Service Plan, select api from the drop-down list for the Plan field and choose Next.
11. Under Specify Parameters(Optional) step, enter the following parameter details in JSON format and
choose Next:
 Sample Code
{
}
"roles": [
"WorkspacePackagesTransport"
]
12. After maintaining the necessary details, enter a name for the instance under the Confirm step and choose
Finish.
13. Open the newly created instance and go to Service Keys from the left pane.
14. Choose Create Service Key and provide a name for the service key and choose Save.
 Note
Make note of the values of url, clientid and clientsecret as these details would be needed while
creating HTTP destination CloudIntegration.
Selecting the Transport Mode
The content transport mechanism provides you the flexibility of directly exporting integration content to CTS+
and TMS system, or exporting the content as an MTAR file to a local file system. To use either of the modes, you
need to enable the Transport Mode found in the Settings ( (settings)). You can do this by navigating to 
(settings)in the Web UI and then choosing the Transport tab. Based on your requirement select either CTS+ or
Transport Management Service or MTAR Download from the dropdown list.
 Remember
● Please note that this step needs to be performed on the tenant from which you want to export content.
For example, if you are exporting content from your Test tenant, you need to perform this step only in
the Test tenant.
● You need to have the tenant administrator role assigned to your account to access the Transport
Settings . Please assign the role to your user if you do not see the Transport Settings.
 Tip
If you do not see the Settings( ) options, please contact your tenant administrator for performing this
step.
Next Steps
You have to create HTTP destinations to facilitate connections between your tenants to transport integration
packages. For information on how to create HTTP destinations, see Creating HTTP Destinations, Cloud
Foundry Environment [page 435]
434
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
More information:
Introduction to Content Agent Service
Introducing Content Agent: Enhanced Transport Capabilities for SAP Integration Suite Content
Community blog on Content Agent)
(SAP
If you like to use Transport Management Service, this service has to be active in a Cloud Foundry
environment. For more information on the required steps, see:
Content Transport Using Transport Management Service in SAP CPI CF Environment
How to use the integration of Transport Management into SAP Solution Manager Change Request
Management and Quality Gate Management
What Is Transport Management
For more information on how to configure CTS+ for the transport of integration content, see:
Content Transport using CTS – Cloud Integration – Part 1
Content Transport using CTS – Cloud Integration – Part 2
Change and Transport System
Resources on CTS+
(SAP Community Wiki)
Configuring CTS+ in SAP Solution Manager 7.1 and 7.2
4.3.2.1
(SAP Community Wiki)
Creating HTTP Destinations, Cloud Foundry
Environment
You need to create destinations in your SAP BTP subaccount in order to transport integration packages from a
source tenant to the target tenant.
Prerequisites
You need to enable content transport by subscribing to Content Assembly Service and Service Broker. Refer
Enabling Content Transport, Cloud Foundry Environment [page 433] to know more.
Context
 Note
This information is relevant only when you use SAP Cloud Integration in the Cloud Foundry environment.
Destinations are used to enable content transport from a source tenant to the target tenant.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
435
Procedure
1. Login to SAP BTP cockpit and navigate to the subaccount where you have enabled content transport.
2. Navigate to
Connectivity
Destinations
from the left pane and choose New Destination.
3. In Destination Configuration section, provide values in fields based on description in table.
Field
Description
Name
Provide value as ContentAssemblyService. Please
note that this value is case-sensitive.
Type
HTTP
Description
You can provide a description for your reference. This field
is optional.
URL
Provide the URL of the system that you want a create a
destination to.
You can obtain the URL from the url field from the service
key created while subscribing to the Content Assembly
Service.
For more information, see Enabling Content Transport,
Cloud Foundry Environment [page 433]
Proxy Type
Internet
Authentication
OAuth2ClientCredentials
You can obtain the values of the following fields from the
service key created while subscribing to the Content As­
sembly Service.
For more information, see Enabling Content Transport,
Cloud Foundry Environment [page 433]
○
Client ID: value of the uaa → clientid field from
○
Client Secret: value of the uaa → clientsecret
the service key
field from the service key
○
Token Service URL: value of the uaa → url field
from the service key

Note
Append the value oauth/token to the Token
Service URL.
4. Choose Save.
5. Repeat Steps 3 and 4 to create another destination with the following values
436
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
FieldField
Description
Name
Provide value as CloudIntegration. Please note that
this value is case-sensitive.
Type
HTTP
Description
You can provide a description for your reference. This field
is optional.
URL
Provide the URL of the system that you want a create a
destination to.
The format is: <oauth → url>/api/1.0/
transportmodule/Transport
Proxy Type
Internet
Authentication
OAuth2ClientCredentials
For more information, see Enabling Content Transport,
Cloud Foundry Environment [page 433]
○
Client ID: value of the uaa → clientid field from
the service keyYou can obtain the values of the follow­
ing fields from the service key created while subscrib­
ing to the CPI Service Broker.
○
Client Secret: value of the uaa → clientsecret
field from the service key
○
Token Service URL: value of the tokenurl field from
the service key
 Note
You also need to create a HTTP destination for TMS and CTS.
○ For more information on how to create destination for TMS, see Create Transport Destinations
○ You can obtain the values of the following fields from the service key created while subscribing to
the CPI ServiceFor more information on how to set up this configuration in CTS, see How To...
Configure Cloud Foundry for CTS
4.3.3 Content Transport Using CTS+
Prerequisites
 Note
This information is relevant only when you use SAP Cloud Integration in the Cloud Foundry environment.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
437
● You've set the Transport Mode as CTS+ in the tenant Transport settings. For more information, see Enabling
Content Transport, Cloud Foundry Environment [page 433].
● You've created two HTTP destinations on Solutions Lifecycle Management. One for the tenant management
node. For more information, see Creating HTTP Destinations, Cloud Foundry Environment [page 435]. The
other one is for CTS+ system via cloud connector. For more information, see Integration with Transport
Management Tools.
Context
SAP Cloud Integration provides an option to transport integration content directly to CTS+ system. You can
then transport this content from the CTS+ system to your target SAP Cloud Integration tenant. Here's how you
can transport content to CTS+.
Procedure
1. Select the integration package that you want to transport.
2. Choose Transport.
If you don't see the Transport button, ensure that you've the role WorkspacePackagesTransport. If you still
don't see the Transport icon, contact your tenant administrator. For more information on the roles, see
and .
3. In the Transport Comments prompt, you can see the type of transport under the Mode field configured by
the tenant administrator. Provide comments under the Comments section and choose Transport.
 Remember
You aren't allowed to use the character "_" in the Transport Comments field.
You see a prompt with the Transport ID. The integration package is transported to the CTS+ system.
4. Import the content in the target system.
4.3.4 Content Transport Using Transport Management
Service
Prerequisites
● You have set the Transport Mode as Transport Management Service in the tenant Transport settings. For
more information, see Enabling Content Transport, Neo Environment [page 429].
438
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● You have created two HTTP destinations on Solutions Lifecycle Management, one for the tenant
management node and one for the Transport Management Service system. For more information, see
Creating HTTP Destination in Solutions Lifecycle Management, Neo Environment [page 431].
● For more information on integration with Transport Management tools, see: Integration with Transport
Management Tools
Context
SAP Cloud Integration provides an option to transport integration content directly to Transport Management
Service system. You can then transport this content from the Transport Management Service system to your
target SAP Cloud Integration tenant.
For more detailed information with screenshots on working with Transport Management Service, see Cloud
Integration – Using Transport Management Service for a Simple Transport Landscape
on SAP Community.
Here's how you can transport content to Transport Management Service directly:
Procedure
1. Select the integration package that you want to transport.
2. Choose Transport.
If you do not see the Transport button, ensure that you have the role IntegrationContent.Transport. If you
still do not see the Transport icon, please contact your tenant administrator.
3. In the Transport Comments prompt, you can see the type of transport under the Mode field configured by
the tenant administrator. Provide comments under the Comments section and choose Transport.
 Remember
You are not allowed to use the character "_" in the Transport Comments field.
You see a prompt with the Transport ID. The integration package will be transported to the CTS+ system.
4. To import the content in the target system, follow the steps mentioned in official documentation for
Transport Management Service .
4.3.5 Content Transport using MTAR Download
Prerequisites
● You have logged in to SAP Cloud Integration on source and target tenants. Access the  (Design) menu.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
439
● You have selected MTAR Download as your Transport Mode. For more information, see Enabling Content
Transport, Neo Environment [page 429].
Context
You can use the MTAR Download option to download a MTAR file/s of the integration content to be transported
Procedure
1. Select the integration package that you want to transport.
2. Choose Transport.
If you do not see the Transport button, ensure that you have the role IntegrationContent.Transport. If you
still do not see the Transport icon, please contact your tenant administrator.
3. In the Transport Comments prompt, you can see the type of transport under the Mode field configured by
the tenant administrator. Provide comments under the Comments section and choose Transport.
 Remember
You are not allowed to use the character "_" in the Transport Comments field.
A file with extension mtar is downloaded to your local file system in the download path configured in your
browser.
4. To import the content in the target system, follow the steps mentioned here.
4.3.6 Content Transport using Manual Export and Import
Prerequisites
You have logged in to SAP Cloud Integration on source and target tenants. Access the  (Design) tab
(workspace).
Context
One of the options to transport content from one tenant to another is to use the Export and Import options for
your integration package. The application imports the integration package to your local file system in the form
of a .zip file. You can import the same file in the target tenant using the Import option.
440
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Procedure
1. Select the integration package that you want to export.
2. Choose Export.
A .zip file is downloaded to the default browser download location on your local file system.
3. Log in to the SAP Cloud Integration web application to which you want to import the content. Choose  .
4. Choose Import.
A new window opens in your file system explorer, allowing you to access your local file system.
5. Navigate to the folder path where the .zip file was downloaded in step 3.
6. Select the file and choose Open.
You see a prompt indicating the successful import of the .zip file. You can see the imported integration
package in the Design tab of your target tenant.
4.3.7 Handling Integration Artifacts When Reusing an
Integration Flow on Multiple Tenants
SAP Cloud Integration allows you to transport integration packages from a source tenant to a target tenant in
order to re-use the content of the integration package (integration flows, value mappings, OData APIs) on the
target tenant.
However, having transported an integration package to a target tenant does not mean that the contained
integration flows run without any further actions.
For example, you need to make sure that security material and keystore content that is used/referenced by the
integration flow is as well available on the target tenant. If that is not the case, the integration flow will fail.
This topic provides an overview of how to handle the different kinds of artifacts to make sure that integration
content can be executed without errors also on the target tenant.
Required Actions to After Content
Web UI Section
Artifact Type
Transport
Design view
Integration flow, value mapping, OData
Can be transported as part of an
API
integration package (with one of the
chosen transport options such like
manual export/import, usage of SAP
CTS+ or usage of the SAP BTP
Transport Service).
More information: Content Transport
[page 427]
Design view
Integration flow resources (schemas,
Are transported along with the
mappings)
integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
441
Required Actions to After Content
Web UI Section
Artifact Type
Transport
Operations view/Keystore
Public key or certificate
Download public part of key pair
(certificate, certificate chain, root
certificate, signing request) from
source tenant and import to target
tenant.
More information:
Operations view/Keystore
Private/public key pair
You need to newly create the key pair
and upload it to the keystore of the
target tenant..
More information:
Operations view/Security Material
User Credentials artifact
Cannot be reused; newly create artifact
on target tenant (and use same artifact
name in order not to break any
integration flow references to the
artifact).
More information:
Operations view/Security Material
Secure Parameter artifact
Cannot be reused; newly create artifact
on target tenant (and use same artifact
name in order not to break any
integration flow references to the
artifact).
More information:
Operations view/Security Material
OAuth2 Credentials
Cannot be reused; newly create artifact
on target tenant (and use same artifact
name in order not to break any
integration flow references to the
artifact).
More information:
Operations view/Security Material
Known Hosts
Newly upload the known hosts file to
the target tenant.
More information:
Operations view/Security Material
PGP Public Keyring
Newly upload the keyring file to the
target tenant.
More information:
Operations view/Security Material
PGP Secret Keyring
Newly upload the keyring file to the
target tenant.
442
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Required Actions to After Content
Web UI Section
Artifact Type
Transport
More information:
Operations view/Certificate-to-User
Certificate-to-User Mapping
Mappings
Newly create certificate-to-user
mapping on target tenant. You can
reuse an existing certificate (by manual
upload from your computer). Make
sure that the role specified in the
related integration flow (sender
adapter) is defined on the target tenant
and assigned to the user.
More information:
Operations view/JDBC Data Sources
Operations view/JDBC Data Source
Cannot be reused; newly create artifact
on target tenant (and use same artifact
name in order not to break any
integration flow references to the
artifact).
More information:
Additional Content
Artifact T
Partner Directory content
More information:
You need to migrate the Partner Directory content using the
OData API.
More information:
When you plan to automate certain manual steps described in this topic, you can use the SAP Cloud
Integration OData API.
For example, you can facilitate steps like:
● Reading a security artifact from the source tenant and adding it to the target tenant
● Exporting a certificate from the source tenant and importing it to the target tenant
● Generating a key pair
● Creating a certificate-to-user mapping
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
443
4.3.8 Guidelines and Best Practices for Content Transport
Cloud Integration offers different options to transport integration content. There are certain criteria that help
you to decide which option to choose for your integration project.
To find out more about the different content transport options, see Content Transport [page 427].
The mentioned options allow you to transport always complete integration packages and their content.
Integration artifacts transported with an integration package are:
● Integration flows
● Value mappings
● OData APIs
● REST APIs
● SOAP APIs
 Note
However, additional artifacts are required to use integration content on a tenant that cannot be transported
along with integration content.
For example, to run an integration flow that uses authentication to a receiver system based on OAuth2
client credentials grant, you also need to deploy an OAuth2 Client Credentials artifact on the tenant and
refer to the artifact alias in the integration flow.
After you have transported an integration flow using this authentication type, you need to separately deploy
a new OAuth2 Client Credentials artifact on the target tenant (ideally with the same alias as used on the
source tenant).
Other examples for non-transportable content are keystore entries (key pairs and certificates).
For more information on objects that cannot be transported and how to deal with them in a transport scenario,
see Handling Integration Artifacts When Reusing an Integration Flow on Multiple Tenants [page 441].
Related Information
Decision Help for Choosing the Right Content Transport Option [page 444]
Decoupling Development from Transport Using Externalized Parameters [page 447]
Guidelines on Role Assignments [page 447]
Content Transport - Sequence of Steps (Example) [page 451]
4.3.8.1
Decision Help for Choosing the Right Content
Transport Option
There are different criteria that help you to decide on a transport option.
The following table lists the characteristics and advantages and disadvantages of the different transport
options.
444
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Transport Option
Recommendations
Manual export/import
Use this option only in exceptional cases, for example for
urgent fixes in case the transport system is down.
This option is easy-to-use out-of-the-box (no configuration
required).
However, there is no control and logging of the transport
events and the involved users.
You have the risk of losing control of who is transporting
what and when. Using this option, you don't have any
advantage of the tool support provided by a transport
system, like, for example, logging. For this reason, manual
exports and imports should be avoided in an integration
project or while operating SAP Cloud Integration. It could be
used.
CTS+
This is a recommended option.
This option provides a fully-automated transport
mechanism (allows the assignment of roles, definition of
transport routes, approvals, and comes with additional
useful features like logging).
If an on-premise CTS+ is already installed and used for
other systems or objects, it is an option of choice to use
CTS+ also for integration content transport.

Note
CTS+ is available for many years to transport onpremise non-ABAP content. This concept has been
extended some time ago to support SAP BTP. However,
only cloud content that can be packaged in MTAR files
can be transported. For integration content transport,
this constraint is fulfilled. Therefore, if you use MTARbased content only in SAP BTP, CTS+ is a valid choice.
Transport Management Service (TMS)
This is a recommended option.
This option provides a fully automated transport
mechanism (allows the assignment of roles, definition of
transport routes, approvals, and comes with additional
useful features like logging).
If there is no on-premise CTS+ available in your landscape, a
good option is to go for TMS. TMS is the solution for
transporting content in SAP BTP. Compared to using CTS+,
this option initially implies a smaller investment in
implementation and operation. Note that TMS is a cloud
service (subscription-based and maintenance and updates
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
445
Transport Option
Recommendations
by SAP). TMS is therefore the way to go for customers
planning to implement projects using SAP BTP services.
MTAR Download
This is a semi-automated option (in between manual
export/import on the one and using CTS+ or TMS on the
other hand).
This option allows you to download an integration package
manually from a source tenant as an .mtar file. In a
subsequent step, you can upload this file to the transport
system and, finally, transport it to the target tenant.
Using this option, you benefit of having certain advantages
of a transport system. However, there is still a manual step.
As manual steps should be avoided as far as possible, it is
recommended to use this option only in exceptional cases,
for example for urgent fixes in case the connection between
source tenant and transport system is down.
Both options, CTS+ and TMS are recommended as summarized in the table. In the long run, a good practice is
to perform all cloud-related transports via TMS and the on-premise transport with CTS+. For more information
and a comparison between TMS and CTS+, see Interplay of Transport Management, CTS+ and ChaRM in
hybrid landscapes .
The following table provides a further decision help along certain typical requirements that you encounter in an
integration project.
Criteria
Requirement
Recommended Transport Option
Lifecycle phase
Exploring Cloud Integration
Manual Export/Import
Lifecycle phase
Operating Cloud Integration
Automated transport (TMS/CTS+)
Exceptional Case: Urgent Intervention
Transport system down
Manual Export/Import
Exceptional Case: Urgent Intervention
Connection to transport system down
MTAR Download
Facts given by your current landscape
CTS+ already implemented and used
CTS+
(benefit from available infrastructure)
Facts given by your current landscape
CTS+ already implemented and used
TMS
Facts given by your current landscape
CTS+ not implemented
TMS
Strategy
On-premise
CTS+
Strategy
Cloud
TMS
446
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.3.8.2
Decoupling Development from Transport Using
Externalized Parameters
Consider decoupling development from transport when designing integration content.
When designing integration content, there are certain configurations that depend on the landscape where the
content is deployed.
Let us assume that you design an integration flow that calls an external system (with OAuth authentication).
Let us furthermore assume that you design the integration flow first on a development tenant and, in a
subsequent step, transport it to a production tenant.
In such a case, you can assume that the URL used to address the external system and the OAuth credentials
differ in the development and the production environment.
If you specify the URL of the external system for the development environment in the related receiver adapter,
the integration scenario doesn't work anymore after you've transported it to the production tenant.
To overcome this issue, you or another integration developer need to edit the integration flow on the production
tenant after content transport and deploy it again. Such an activity leads to inconsistencies in the transport
mechanism. Furthermore, this activity also decreases productivity, as additional steps are needed before
deployment.
To avoid this behavior, the best practice is to use externalized parameters. If you've designed your integration
flows using externalized parameters, you benefit from the following advantages:
● After you've transported the integration flow and before deploying it on the target tenant, you only need to
configure the externalized parameters. You don't have to do any changes in the integration flow model at
all.
● Configuring the externalized parameters after transport is usually a one-time activity. After subsequent
transports, you don't need to configure these parameters again if the values remain the same (as the
initially configured values aren't overwritten).
Related Information
Externalize Parameters of an Integration Flow [page 1105]
4.3.8.3
Guidelines on Role Assignments
The combined usage of the following role collections, respectively, authorization groups (as described under )
gives you full control of the tenant in terms of design, monitoring, and administration.
Assigning these role collections/authorization groups to a user is a good choice for the source tenant
(development system). However, assigning these role collections/authorization groups to a user on target
tenants can lead to undesired behavior and inconsistencies with the transport system. To avoid that a user gets
too many permissions in the target system, it's necessary to define permissions on a more detailed level on the
target tenant (test and production).
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
447
Required on Target Tenant
Avoid on Target Tenant
Description
AuthGroup.IntegrationDeveloper (Neo) Allows user to connect to Cloud
Integration and to display, download,
PI_Integration_Developer (Cloud
and deploy artifacts.
Foundry)
AuthGroup.BusinessExpert (Neo)
Allows user to perform business tasks
PI_Business_Expert (Cloud Foundry)
like, for example, examining the
payload, monitor integration flows,
status of integration artifacts.
AuthGroup.Administrator (Neo)
Allows user to connect to Cloud
Integration and to perform
PI_Administrator (Cloud Foundry)
administrative tasks.
WebToolingWorkspace.Write (Neo)
Allows user to update a package,
create/edit/import/delete a package
WorkspacePackagesEdit (Cloud
and its artifacts.
Foundry)

Tip
Updating, creating, editing,
importing, or deleting a package or
its artifacts on a target tenant isn't
recommended. Changes made on
the target tenant are overridden
when the package is
retransported. In addition, objects
not properly saved after editing
lead to errors while transporting.
For that reason, those roles must
not be assigned to a user on the
target tenant.
TransportModule.write (Neo)
Allows user to export, import, and
WorkspacePackagesTransport (Cloud
Foundry)
update packages.

Tip
Export for transport and import or
update a package from transport
must be also restricted on the
target tenant (as the transport
works with CTS+ or TMS as
recommended options). However,
still the export, import, and update
of packages can be available just in
source tenant with these roles.
448
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Required on Target Tenant
Avoid on Target Tenant
WebToolingWorkspace.Read (Neo)
Description
Allows user to view packages and
artifacts.
WorkspacePackagesRead (Cloud
Foundry)

Tip
On the target tenant, it's still
needed to access and view the
transported packages and
artifacts.
WebTooling.IntegrationFlowConfigure
Allows user to configure artifacts
(Neo)
(integration flows and value
mappings).
WorkspacePackagesConfigure (Cloud
Foundry)

Tip
After transporting a package from
source tenant to target tenant,
artifacts (integration flows and
value mappings) must be
configured on the target tenant.
Allows user to deploy artifacts.
NodeManager.read,
GenerationAndBuild.generationandbuil
Tip
dcontent, NodeManager.deploycontent

(Neo)
After transport to target tenant
WorkspaceArtifactsDeploy (Cloud
and configuring the artifacts,
Foundry)
artifacts must be deployed.
WebToolingCatalog.OverviewRead,
Allows user to access SAP API
WebToolingCatalog.DetailsRead,
Business Hub (Discover section).
WebToolingWorkspace.Write (Neo)

CatalogPackagesRead,
Tip
CatalogPackageArtifactsRead,
Standard packages are published
CatalogPackagesCopy (Cloud Foundry)
on SAP API Business Hub. A good
practice is to subscribe only a
single tenant to the SAP Business
Hub (see ). If you apply this rule,
the standard packages are copied
only to the workspace of the
source tenant and transported to
the target tenant. If there's an
update for those packages, then
this update can only be applied to
the source tenant. Standard
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
449
Required on Target Tenant
Avoid on Target Tenant
Description
packages that are transported to a
target tenant do not get updates
on that target tenant. To have the
updates applied, the package with
the update applied must be
transported from source to target
tenant. To implement this
behavior, you can restrict the
access to the SAP Business Hub
on the target tenant assigning
these roles just to the source
tenant.
All roles related to the Monitor area
Allows user to perform tasks
(see )
associated with monitoring and
operations.

Tip
There are objects that can't be
transported using the transport
system. In addition, monitoringand operations-related tasks must
be allowed on the target tenant.
WebToolingSettingsProductProfiles.sav Allows user configure the transport
etenantconfiguration
option.

Tip
The selection of what transport
mechanism to use is done just on
the source tenant.
For more information on the individual roles and tasks, see .
Certain roles must be assigned also in the transport system to determine the responsibilities of who can do
what (for example, import a transport order into a queue, release an order).
For more information on roles in CTS+, see CTS Roles and Authorizations.
For more information on roles in TMS, see Security.
If you have implemented complex transport routes, it's a good practice to assign attributes to certain roles in
TMS to restrict the corresponding authorizations to specific transport nodes only. For example, one person is
responsible for releasing one order to test environment while a second one is responsible for production. You
can find more information in section Transport Node-Specific Attributes under Security.
450
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.3.8.4
Content Transport - Sequence of Steps (Example)
There are the following prerequisites:
● The tenant administrator of the source system has configured the transport mode (SAP Cloud Integration
under Settings).
● The integration developer has granted the required transport permissions (see Guidelines on Role
Assignments [page 447]).
The following diagram shows a typical sequence of steps when transporting integration content. We assume
that content is transported first from a dev tenant to a test tenant and from there to the prod tenant.
1. The integration developer initiates transport of the desired integration package by creating a transport
order in the transport system.
2. The transport responsible logs in to the transport system and releases the request in the test node queue.
3. Once the package is imported on the test tenant, the integration developer configures the integration flows
and deploys them on the test tenant. If necessary, the integration developer also configures and deploys
the associated security artifacts.
4. If the request is to go to production, the transport responsible forwards transport to production node
queue.
5. Either manually or by means of a job, the request is imported in the production node.
6. The integration developer configures the integration flows and deploys them (on the prod tenant). If
necessary, the integration developer also configures and deploys the associated security artifacts.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
451
4.4
Creating an Integration Flow
You can add an integration flow to an integration package.
Prerequisites
● You’ve logged on to SAP Cloud Integration.
● You’ve created an integration package. For more information, see Add Integration Packages to the
Customer Workspace [page 422].
Context
An integration flow is a graphical representation of the flow and processing of messages between two or more
participants using an integration runtime platform, ensuring successful communication.
Here's how you can create an integration flow in SAP Cloud Integration.
Procedure
1. Choose  to access your workspace.
2. Select the integration package in which you want to add an integration flow and choose Edit to enable
editing of the package.
3. Navigate to the Artifacts tab and choose
Add
Integration Flow .
4. If you want to create a new integration flow, execute the following substeps:
a. Choose the Create radio button.
b. Enter a valid name for the integration flow in the Name field. The ID field gets auto-filled.
For the new integration flow you can define two attributes, Name and ID.
452
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
 Note
○ The integration flow ID needs to be unique across the tenant, whereas you can specify the
same Name multiple times. When you create a new integration flow, by default the entry for ID
is generated automatically based on the string entered for Name (with underscore replacing
space characters).
○ However, you can also manually edit the ID field and, once it’s modified manually, changing the
name of the integration flow doesn’t make any auto-changes to the ID field again.
c. You can select the product profile for the integration flow in the Product Profile field. The integration
flow templates used during creation adhere to the latest version of a component available in the
product profile. For more information, see Product Profiles [page 413].
d. Enter Description of the integration flow.
e. Choose  search values to add Sender and Receiver system. The search values provide a list of sender
and receiver systems maintained by SAP.
 Tip
If you don't find a sender or receiver system of your choice, or want to add your own values, type in
the Sender and Receiver field and press tab button in your keyboard. You can also add multiple
values if it's necessary.
f. Choose OK.
You see a message confirming that the integration flow has been created.
5. If you want to upload an integration flow, execute the following substeps:
a. Choose the Upload radio button.
b. Choose Browse to select the integration project archive from your local file system. When you select
the archive file, the Name and ID fields in the dialog box are filled automatically.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
453
 Note
○ The integration flow ID needs to be unique across the tenant, whereas you can specify the
same Name multiple times. When you create a new integration flow, by default the entry for ID
is generated automatically based on the string entered for Name (with underscore replacing
space characters).
○ However, you can also manually edit the ID field and, once it’s modified manually, changing the
name of the integration flow doesn’t make any auto-changes to the ID field again.
c. Choose OK.
 Note
You can copy an integration flow by choosing  in the Action column, and then Copy.
○ An integration flow can be copied within the same package or to a different package.
○ The copied integration flow has the same version as the source.
○ An integration flow can be copied from a configure-only package to a non-configure-only
package.
○ An integration flow can’t be copied from a non-configure-only package to a configure-only
package.
An integration flow template contains the following shapes:
○ Sender: Represents your sender system.
○ Receiver: Represents the receiver system.
○ Integration Process: This shape contains all the steps that define how a message is processed in the
tenant. This shape has two tabs:
○ General: allows you to set the name of the integration process
○ Processing: allows you to maintain the Transaction Handling and the Timeout details under
Transaction Management.
4.5
Using Flow Step Recommendation
The flow step recommendation in an integration flow development helps you to easily add flow steps. You get
the recommendations based on prepackaged SAP integration content.
Prerequisites
● You’ve created an integration package. For more information, see Create an Integration Package.
● You've created an integration flow. For more information, see Creating an Integration Flow [page 452].
454
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Context
With flow step recommendation, there’s no need to find the next flow steps from the palette. You get a dialog
with a list of flow steps in the editor itself where you need them. You get a suggestion for next possible flow step
at the time of integration scenario development. For example, when you’re adding a content modifier in your
integration flow, it comes with a flow step recommendation that helps you select the next flow step without
navigating to the palette. The selected flow step automatically gets added to the sequence connector.
You see the following sections in the flow step recommendation dialog:
● Recommended Steps: From an existing flow step or sequence connector, you get recommendations for the
next step. The recommendations are made by a machine learning study on the prepackaged SAP
integration content.
● All Steps: The dialog also provides a list of all flow steps where you can either scroll or search for the
required flow step.
Procedure
Here's how you can use flow step recommendation for adding flow step in an integration flow.
1. Choose  (Design) tab to access your workspace.
2. Choose
Integration Package
Artifacts
Integration Flow
Edit .
3. Select an existing flow step or a sequence connector.
4. Choose  (Add Flow Step) button.
A dialog opens up showing the recommended steps first and then all the steps.
5. Select a step that is required for your integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
455
4.6
Integration Flow Extension
SAP Cloud Integration allows you to extend the capabilities of standard integration content provided by SAP.
This approach allows you to implement specific integration scenarios relevant to your business use case
without changing the content provided by SAP.
SAP (or SAP partners) provide prepackaged integration content (also referred to as standard content) that
covers a large variety of integration requirements. This content usually comprises a set of integration flows,
value mappings, and other integration artifacts that cover a standard integration use case. If you want to adapt
these capabilities to specific business requirements, you might consider directly editing and modifying the
related integration flows contained in the standard integration package.
However, this does have some disadvantages. For example, you will not get any further updates to modified
standard integration content. Furthermore, if you copy the updated standard package from the SAP Integration
Content Catalog to the Design workspace of your tenant, you will overwrite all changes that you have made to
that package.
To avoid such implications, we recommend decoupling the modifications (required for your specific business
scenario) from the standard content provided by SAP. To support this pattern, SAP Cloud Integration comes
with dedicated concepts and features. Using these features, a customer can specify requirements in one or
more dedicated custom integration flows, without touching any integration flows from the standard content.
Both the standard and the custom integration flows are deployed on the same tenant and are processed in
conjunction, communicating with each other using a specific adapter, the ProcessDirect adapter.
 Note
Using the described concepts, the customer can keep the standard integration content unchanged and
specify any required enhancements (for example, specific mappings) in one or more custom integration
flows separate from the standard integration flow.
We can summarize the advantages as follows:
● Ensures better lifecycle management of prebuilt integration flows. If you make custom changes to a
standard integration flow (prebuilt by SAP), this has an impact on lifecycle management, as you will not
receive future updates related to modified artifacts on your tenant. Additionally, if you copy the
updated standard package from the content catalog to the Design workspace of your tenant that
contains the modified packages, you will overwrite all changes that have been made to that package.
Therefore, defining all required changes in a dedicated integration flow helps you to better manage the
lifecycle of your integration packages.
● Provides flexibility to integration developers to customize their integration flows without modifying
them entirely.
● Enables the reuse of integration flows for mapping across different integration projects.
Involved Target Groups
As an integration flow extension is based on the interplay of standard integration content with one or more
custom integration flows, two target groups are involved in the overall process:
● Content publisher (at SAP or an SAP partner)
456
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● Customer doing the actual extension (referred to as customer in the following)
This documentation is structured as follows to serve both groups:
Section
Target Group
Integration Flow Extension - Concepts [page 457]
Content publisher
Provides an overview of the concept and the involved com­
Customer
ponents; shows how standard content and extended content
work in conjunction.
Mapping Extension Step by Step (Demo Example) [page
463]
Provides a step-by-step description of a simple demo exam­
ple and covers both sides of the extension story:
●
Creating the Standard Integration Flow [page 467]
Content publisher
Customer
This scenario is also feasible as a learning scenario: You
should be able to set up and run this example in about an
hour.
Shows how to design the standard integration content
(with a post-exit step)
●
Creating the Custom Integration Flow with the Post-Exit
Mapping [page 480]
Shows how to design a post-exit integration flow (with
the customer mapping extension)
Mapping Extension Step by Step (Example from SAP Hybris
Customer
C4C) [page 486]
Shows how a mapping extension is done for a real-life use
case (covering pre-exit and post-exit mappings).
4.6.1 Integration Flow Extension - Concepts
This section provides an overview of the concepts and components required to implement an extension.
 Note
The use cases that we use to explain the concept in detail are all mapping extensions, and we use variations
of mapping extensions for our examples and tutorials as well.
Note that you can, however, extrapolate the concept to any other kind of extension.
Customer Exits
The basic concept is that a standard integration flow (predefined by SAP or an SAP partner as part of a
standard integration package) contains one or more customer exits, through which one or more customer
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
457
integration flows (designed by the customer who is extending the standard content) are called. The standard
integration flow and the custom integration flows (called through the customer exit) have to be deployed on the
same tenant.
To support mapping extensions, standard integration flows can provide two types of customer exits:
● Pre-exit
This exit is only required if the customer needs to extend the source message of the mapping. Using this
exit, the standard integration flow calls a pre-exit integration flow (which is designed by the customer).
Within the pre-exit integration flow, the extended source message is mapped to the message that is
consumed by the mapping predefined in the standard integration flow.
● Post-exit
This exit is always required. It calls a post-exit custom integration flow that maps the output of the
standard mapping and the extended source structure to the extended target structure.
The following figure shows the general overview of the message flow when a pre-exit and a post-exit are
involved in the extension scenario.
The message flow in such an extension scenario works in the following way:
Let us assume that the mapping predefined in the standard integration flow defines the transformation of an
original message A to message B.
We also assume that the customer has enhanced the source structure of the mapping (resulting in message
A'). The pre-exit integration flow contains a mapping that transforms message A' to message A. Message A is
then handed over to the standard integration flow and can be consumed by the predefined mapping.
The predefined mapping transforms message A to message B. Message B is then passed to the post-exit
integration flow, where it is mapped against the actual enhancement of the target structure (defined as
message C).
458
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
As indicated in the figure, the standard integration flow merges the original message (with the extended
structure, message A') with message B before handing it over to the post-exit integration flow. How this is done
is explained further below. The post-exit mapping then consumes the merged message. Merging the message
is a prerequisite for using fields from the original message A' that might have got lost during the standard
mapping step in the post-exit mapping.
 Note
Technically, the communication between the standard integration flow and the pre-exit and post-exit
integration flow is accomplished through the ProcessDirect adapter.
This adapter allows you to directly connect different integration flows deployed on the same tenant. In
contrast to any of the available HTTP-based adapters ( for example, the HTTP or SOAP adapter),
communication through the ProcessDirect adapter is not routed through the load balancer and, therefore,
does not imply any network latency.
The ProcessDirect adapter (both sender and receiver) has only one parameter, which is Address. When two
integration flows need to communicate with each other through this adapter, the value specified for
Address (in the related sender and receiver ProcessDirect adapters) has to match in both integration flows.
More information: ProcessDirect Adapter [page 709]
 Note
The standard integration flow is developed as part of an integration package that is made available in the
Integration Content Catalog (either by SAP or an SAP partner). For the sake of simplicity, we refer to this
target group as the integration content publisher.
The custom integration flows (pre-exit and post-exit integration flows) are developed by customers who
want to consume the integration package and build the extension on top. For the sake of simplicity, we refer
to this target group as the customer.
Depending on whether the standard integration flow contains both a pre-exit and a post-exit, or only a postexit, the customer needs to create either two integration flows (a pre-exit and a post-exit integration flow)
or only one post-exit integration flow to specify its own extensions.
Structure of the Standard Integration Flow
We first describe the structure of the standard integration flow, and then the structure of the custom (pre-exit/
post-exit) integration flows.
The standard integration flow that supports mapping extensions is generally structured in the following way. It
contains one or more customer exits (pre-exit or post-exit). These exits are encapsulated within local
integration processes. From the local integration process, the related pre-exit or post-exit integration flow is
called by the ProcessDirect receiver adapter.
The following figure shows the general structure of the standard integration flow containing both a pre-exit
and a post-exit. Furthermore, the message flow is illustrated using the same notation for the different
messages as already used above.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
459
The standard integration flow contains a main integration process shape and two local integration process
shapes (as we assume that both a pre-exit and a post-exit are involved in this scenario):
● The main integration process contains the main business logic (in this section, we'll just look at a mapping)
and two routing steps leading to two different message processing paths (both containing a Process Call
step).
● The local integration processes contain further steps to modify the message and – most important – the
outbound call to a receiver. The receiver represents the pre-exit or post-exit integration flow. The outbound
communication with the receiver is defined in a ProcessDirect adapter.
In the model, the local integration process on the left represents the pre-exit, and the local integration
process on the right represents the post-exit.
Let's go into more detail. The integration flow is designed so that the message is processed in the following way
at runtime:
Main Integration Process
● The sender system sends a message (A', which is the extended source message structure) to SAP Cloud
Integration through a sender channel.
● The Content Modifier creates two exchange properties:
○ custom_extension_enabled
This exchange property is used as a parameter to control whether the extension concept should be
applied to the standard integration flow or not. If its value is set to true, the pre-exit and post-exit
integration flows are called. If its value is false, the standard mapping is applied without any further
extension.
This parameter is externalized so that the value can be specified during integration flow configuration
without the need to edit the integration flow model.
○ original_payload
In this exchange property, the content of the original message received by the sender is stored (to
make it available in a later step where the original message is merged with the transformed message
as preparation for the post-exit mapping step).
460
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● The first router step opens two alternative processing paths. Which path is processed depends on the
routing condition, which uses the exchange property custom_extension_enabled defined in the
preceding Content Modifier.
○ If the value of the property custom_extension_enabled is false, the default route (upper path) is
taken.
The default route directly leads to the standard mapping.
○ If the value of the property custom_extension_enabled is true, the second route (lower path) is
taken. This route contains a Process Call step that passes the message to the local integration process
on the left (pre-exit).
This route is processed under the condition that the value of the exchange property
custom_extension_enabled is true.
● The mapping step transforms the inbound message to the target message B. The mapping step in this
integration flow contains the standard mapping predefined by SAP or an SAP partner. This step always
expects a predefined original message structure (message A). If the customer has extended the source
structure (to message A'), the message needs to be processed by the pre-exit before the standard mapping
step, to be transformed to the original structure A (as already explained above).
● The subsequent router step also opens two alternative processing paths, using the same routing condition
as the first router step (using the exchange property custom_extension_enabled defined in the
Content Modifier).
○ If the value of the property custom_extension_enabled is false, the default route (upper path) is
taken.
The default route now ends message processing. In this case, the message is not subjected to any
further processing other than the standard mapping.
○ If the value of the property custom_extension_enabled is true, the second route (lower path) is
taken. This route contains a Process Call step that passes the message to the local integration process
on the right (post-exit).
Local Integration Process (Pre-Exit)
If the message is first handed over to the local integration process with the pre-exit, the following steps are
executed on the message:
A Request-Reply step calls a receiver (which represents the pre-exit integration flow) through a ProcessDirect
receiver adapter.
The address of the ProcessDirect adapter is externalized and can be configured during integration flow
configuration. The customer needs to make sure that the address of the ProcessDirect receiver adapter (of the
standard integration flow) is the same as the one used in the ProcessDirect sender adapter of the pre-exit
integration flow (to be connected).
Local Integration Process (Post-Exit)
If the message is first handed over to the local integration process with the post-exit, the following steps are
executed on the message:
● A Content Modifier constructs a message body that is composed of the following two parts:
○ The original payload received from the sender (contained in the original_payload exchange
property created in the Content Modifier of the main integration process)
(message A' in the figure)
○ The message that results as output from the Mapping step in the main process
(message B in the figure)
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
461
With this step, the original payload from the sender system (A') is merged with the output message (B)
resulting from the standard mapping step. The concatenated message is denoted as message A',B.
This measure is required for the following reason: The standard mapping step transforms the original
message into a new one (B), which means that certain fields from the original message (A) may no longer
be available in the resulting message B. However, the customer might require such fields in the custom
mapping step (which will be executed in the custom integration flow, as explained below). The message
merge is done in order to make sure that all fields of the original message are still available in the message
that is handed over to the post-exit integration flow.
● A Request-Reply step calls a receiver (which represents the post-exit integration flow) through a
ProcessDirect receiver adapter.
The address of the ProcessDirect adapter is externalized and can be configured during integration flow
configuration. The customer needs to make sure that the address of the ProcessDirect receiver adapter (of
the standard integration flow) is the same as the one used in the ProcessDirect sender adapter of the postexit integration flow (to be connected).
Structure of the Pre-Exit and Post-Exit Integration Flows (Designed by
Customer)
The following figure shows the general structure of a pre-exit or post-exit integration flow.
● The sender shape represents the standard integration flow, which passes on the original message. The
sender component is connected to the integration process component through a ProcessDirect sender
adapter.
● Detailed instructions about the mapping are provided in a separate topic. In short, the mapping steps in
the pre-exit and the post-exit integration flow process the inbound message in the following way:
○ Pre-exit mapping: Transforms the extended source message A' into the original message A, which can
be consumed by the standard mapping.
○ Post-exit mapping: Transforms the message A',B from the standard integration flow into the final
message C.
462
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Procedure
The following list contains the main tasks in an integration flow extension process:
Tasks accomplished by the content publisher (SAP or SAP partner):
Create and publish the standard integration flow. Make sure that it contains the required customer exits (postexit and, if applicable, pre-exit point). Externalize those parameters that the customer needs to configure the
required parameters (for example, the addresses of the involved ProcessDirect adapters) without changing the
standard integration flow.
Tasks accomplished by the customer (extending the content):
 Note
It is a prerequisite that you, the customer, have imported the integration package that contains the
standard integration flow (that is to be extended) into your own workspace.
1. Copy the desired standard integration flow (as contained in the Integration Content Catalog) into your own
workspace.
2. Create the required custom integration flows (with the pre-exit and post-exit steps).
Make sure you deploy the custom integration flows on the same tenant as the standard integration flow.
3. Configure the standard integration flow so that it can be used together with the custom integration flows.
To access the configuration user interface with the externalized parameters, open the standard integration
flow and select Configure.
Examples:
○ For the custom_extension_enabled parameter, enter the value true.
○ For the Address parameter of the ProcessDirect receiver adapter, enter the same value as used in the
Address field of the custom integration flow's ProcessDirect sender adapter.
Related Information
ProcessDirect Adapter [page 709]
Configure Externalized Parameters of an Integration Flow [page 1110]
Define Process Call [page 957]
Define Local Integration Process [page 513]
Define Content Modifier [page 854]
4.6.2 Mapping Extension Step by Step (Demo Example)
A demo example, explained step by step, covers the key aspects of integration flow extension.
This section provides a more detailed view of the concept overview given in Integration Flow Extension Concepts [page 457]. We walk you through the most important concepts and involved components using a
simple demo scenario.
You should be able to set up and run the scenario within approximately one hour.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
463
 Note
The demo scenario covers both the design of the standard integration flow and of the custom integration
flow. Consider the following:
● This demo scenario covers both sides of the extension concept: the design of the standard integration
content and the customer extension (in a post-exit integration flow). Note that these tasks are typically
accomplished by different target groups. Therefore, the demo scenario is aimed at experts from both
target groups who want a more detailed understanding of the concepts and also hands-on experience
of the tasks.
The tasks described in the two parts of the demo scenario are associated with the different target
groups as follows:
○ Creating the Standard Integration Flow [page 467]
Describes the tasks accomplished by the content publisher (at SAP or an SAP partner
organization) who makes this integration flow available as part of a predefined integration package
that customers can copy into their own workspace.
○ Creating the Custom Integration Flow with the Post-Exit Mapping [page 480]
Describes the tasks accomplished by the customer who is extending the content.
● The example scenario does not reflect a real-life integration use case. We keep the mapping as simple
as possible and focus on the main principles and concepts so that you can see the differences between
the standard mapping provided by SAP and the customer extension. To make it easy for you to
reproduce the example, the integration flows are based on the scenario described in SOAP Sender
Adapter: Example Integration Flow [page 772].
● To find instructions for a mapping extension based on a real-life example, check out Mapping Extension
Step by Step (Example from SAP Hybris C4C) [page 486].
● The demo scenario does not use a pre-exit step.
Overview of the Demo Scenario
This section covers the following extension scenario with a post-exit.
464
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
In this scenario, the standard integration flow passes a message to a post-exit integration flow (which contains
the custom mapping).
In this demo scenario, the sender system is simulated by a SOAP client, which sends a SOAP message toCloud
Integration. The original message has a simple structure (only four elements). The standard mapping is also
kept simple and concatenates (me.res) two of the original fields
More information: Standard Mapping [page 465]
The mapping extension in the post-exit integration flow (the customer extension) adds an additional field to the
target message and fills it with the value of a field from the original message ( changing uppercase letters to
lowercase letters).
More information: Post-Exit Mapping [page 466]
To learn how to design the standard integration flow, see Creating the Standard Integration Flow [page 467].
To learn how to design the post-exit integration flow, see Creating the Standard Integration Flow [page 467].
To learn how to execute the scenario, see Executing the Scenario [page 484].
4.6.2.1
Standard Mapping
The following figure shows the mapping used in this demo scenario.
The figure also indicates which fields correspond to the messages A and B as used in the concept overview in .
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
465
In the standard mapping, the original message A is transformed in the following way:
The fields supplierForename and supplierForename are concatenated (resulting in the field
supplierName of target message B).
4.6.2.2
Post-Exit Mapping
The following figure shows the custom mapping extension in the post-exit integration flow.
466
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Here, the only mapping extension is the addition of the field AdditionalField to the target structure.
The custom mapping maps the supplierSurname field of the source message to the new field
AdditionalField and applies a simple function (changing uppercase characters to lowercase characters).
4.6.2.3
Creating the Standard Integration Flow
 Note
This section is targeted at the content publisher at SAP or an SAP partner organization.
The standard integration flow is depicted in the following figure, where the key elements are highlighted.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
467
This is a summary of the elements of the integration flow. Check out the detailed topics below to find out how
to design these shapes.
● Sender and SOAP sender adapter
The sender is simulated by using a SOAP client that calls the integration flow endpoint using the SOAP 1.x
sender adapter. The SOAP client sends message A to Cloud Integration.
● Content Modifier
This step performs the following tasks:
○ Stores the body of the inbound message in an exchange property (originalpayload).
○ Creates another exchange property custom_extension_enabled, which is used in the subsequent
routing step to separate message processing depending on whether the custom extension is activated
or not.
We show how to externalize this parameter so that you can easily specify its value during the
integration flow configuration without having to redesign the integration flow.
● Message Mapping
This step defines the standard mapping according to Standard Mapping [page 465].
● Router
The Router step leads to two different message processing paths. The routing conditions are expressed
using the exchange property custom_extension_enabled in the following way:
○ Default route: Ends message processing without any further message processing.
○ Route taken if the following condition is met: custom_extension_enabled=true
This message processing path contains a Process Call step, which calls the local integration process
(post-exit).
After the Process Call step, a filter is added. This step filters the relevant parts from the message that
is received from the post-exit integration flow.
The local integration process has the following elements:
● Filter
468
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
This step filters the elements from message B (which is the result of the standard mapping step) that are
needed in the merged message (A,B), which is to be sent to the post-exit integration flow. This step is used
to prepare the content of message B before it is merged with the original message A in the subsequent
Content Modifier step.
● Content Modifier
Merges message A and message B by constructing a new message body using dynamic expressions for
the original message A and the processed message B.
● Request-Reply step connected through ProcessDirect adapter with receiver
Uses the ProcessDirect receiver adapter to call the custom integration flow.
At runtime, the target integration flow is called based on the endpoint address configured in the adapter.
You will learn how to externalize this parameter.
The integration flow does not have a receiver component. The result of the mapping can be analyzed in the
response that is sent back to the SOAP client.
Related Information
Configure the SOAP (SOAP 1.x) Sender Adapter [page 763]
Defining the Content Modifier [page 469]
Defining the Standard Message Mapping [page 471]
Defining the Local Integration Process [page 476]
Defining the Router, Process Call, and Filter Steps [page 478]
4.6.2.3.1
Defining the Content Modifier
1. Add a Content Modifier after the start message event.
You find the Content Modifier shape in the palette under
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Message Transformation
Content Modifier .
PUBLIC
469
2. On the Exchange Property tab, enter the following property (by selecting Add and specifying the property):
Parameter
Select Option/Enter
Name
Enter original_payload
Type
Select Expression
Value
Enter ${in.body}
This property stores the content of the inbound message (message A, which is retrieved from the
WebShop) by dynamically evaluating the Camel simple expression ${in.body} at runtime.
We define the second property as an externalized parameter.
1. Select Externalize.
2. Go to the Exchange Property tab.
3. Enter custom_extension_enabled under Name, select Expression as the Type, , and enter
{{ custom_extension_enabled }} in the Value field.
4. Click Define Value (in the Value field), and on the next screen enter false. Then, choose OK
470
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
The final Content Modifier has the following settings:
When the integration flow is being processed, the Content Modifier does the following:
● It writes the complete message body (retrieved from the external OData API) into the property
original_payload.
● Secondly, it writes the value specified during integration flow configuration for the externalized parameter
custom_extension_enabled into the Exchange property. This property is used in the subsequent
routing step to determine whether the default route is taken (where only the SAP mapping is processed
and nothing else is done to the message) or whether the customer exit is taken (if the value of
custom_extension_enabled is set to true).
Related Information
Define Content Modifier [page 854]
4.6.2.3.2
Defining the Standard Message Mapping
Before defining the standard mapping, you need to upload to the tenant certain resource files (Web Services
Definition Language, or WSDL files for short) that define the structure of source message (A) and target
message (B) of the mapping. To facilitate the design of the demo scenario, we provide you with the content of
the WSDL files in this section.
To upload the WSDL files, perform the following steps:
1. Copy the content of the following coding example into a text editor and save it as a file with
extension .wsdl (for example, A.wsdl).
This WSDL file defines the structure of the source message of the standard mapping (corresponding to the
original message A, which is sent to the integration flow through the SOAP client).
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="SendOrder_Async"
targetNamespace="http://cpi.sap.com/demo" xmlns:p1="http://cpi.sap.com/
demo"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation />
<wsp:UsingPolicy wsdl:required="true" />
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
471
<wsp:Policy wsu:Id="OP_SendOrder_Async" />
<wsdl:types>
<xsd:schema targetNamespace="http://cpi.sap.com/demo"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://
cpi.sap.com/demo">
<xsd:element name="Order_MT" type="Order_DT" />
<xsd:complexType name="Order_DT">
<xsd:sequence>
<xsd:element name="orderNumber" type="xsd:string" />
<xsd:element name="supplierForename"
type="xsd:string" />
<xsd:element name="supplierSurname"
type="xsd:string" />
<xsd:element name="productName" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Order_MT">
<wsdl:documentation />
<wsdl:part name="Order_MT" element="p1:Order_MT" />
</wsdl:message>
<wsdl:portType name="SendOrder_Async">
<wsdl:documentation />
<wsdl:operation name="SendOrder_Async">
<wsdl:documentation />
<wsp:Policy>
<wsp:PolicyReference URI="#OP_SendOrder_Async" />
</wsp:Policy>
<wsdl:input message="p1:Order_MT" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SendOrder_AsyncBinding" type="p1:SendOrder_Async">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="SendOrder_Async">
<soap:operation soapAction="http://sap.com/xi/WebService/
soap1.1"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://
schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
You will notice that the WSDL contains exactly the same fields that are shown in the topic Standard
Mapping [page 465] for message A.
2. Do the same with the following code sample, but save it under a different name, for example, B.wsdl.
This WSDL file defines the structure of the target message B of the standard mapping.
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="SendOrder_Async"
targetNamespace="http://cpi.sap.com/demo" xmlns:p2="http://cpi.sap.com/
demo"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation />
<wsp:UsingPolicy wsdl:required="true" />
472
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
<wsp:Policy wsu:Id="OP_SendOrder_Async" />
<wsdl:types>
<xsd:schema targetNamespace="http://cpi.sap.com/demo"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://
cpi.sap.com/demo">
<xsd:element name="Order_MT" type="Order_DT" />
<xsd:complexType name="Order_DT">
<xsd:sequence>
<xsd:element name="orderNumber" type="xsd:string" />
<xsd:element name="supplierName" type="xsd:string" />
<xsd:element name="productName" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Order_MT">
<wsdl:documentation />
<wsdl:part name="Order_MT" element="p2:Order_MT" />
</wsdl:message>
<wsdl:portType name="SendOrder_Async">
<wsdl:documentation />
<wsdl:operation name="SendOrder_Async">
<wsdl:documentation />
<wsp:Policy>
<wsp:PolicyReference URI="#OP_SendOrder_Async" />
</wsp:Policy>
<wsdl:input message="p2:Order_MT" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SendOrder_AsyncBinding" type="p2:SendOrder_Async">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="SendOrder_Async">
<soap:operation soapAction="http://sap.com/xi/WebService/
soap1.1"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://
schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
 Tip
You might have noticed that in this WSDL document the namespace prefix p2 is used instead of the
namespace prefix p1 (used in the WSDL for message A). For example, note the following entry:
p2="http://cpi.sap.com/demo.
This is an important detail. Using the correct namespace prefixes (and making some further related
settings in the integration flow as shown below) makes sure that the merged message that is passed on
to the post-exit mapping can be interpreted in the right way. Using namespaces correctly is critical
because the merged message contains the structures of messages A and B, which have many
elements with the same name.
We map the namespaces in the next step to complete this configuration.
3. In the integration flow editor, click somewhere outside the Integration Process shape and select Runtime
Configuration. In field Namespace Mapping enter the following:
xmlns:p1=http://cpi.sap.com/demo;xmlns:p2=http://sap.com/xi/XI/SplitAndMerge
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
473
The namespace mapped to the prefix p2 relates to the final merged message.
4. In the integration flow editor, click somewhere outside the Integration Process shape and select Resources.
5. Choose
Add
Schema
WSDL
and browse to the A.wsdl file.
6. Repeat these steps for the B.wsdl file.
Now you can define the mapping step.
1. In the integration flow model, select the Message Mapping shape from the palette (under Mapping) and
place it in the model after the second Content Modifier.
2. Choose the + icon next to the message mapping shape and enter a name for the message mapping (for
example, standardmapping).
3. Choose Create.
4. The graphical mapping editor is opened.
5. Choose Add source message and browse to the WSDL file of the source message (in our example, the file
A.wsdl). Choose Upload from file system.
474
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
6. Choose Add target message and repeat the steps with the WSDL file for the target message (B.wsdl).
7. Connect the fields of the source and target message in the following way using the cursor:
○ Connect orderNumber in the source message with orderNumber in the target message.
○ Connect supplierForename in the source message with supplierName in the target message.
○ Connect supplierSurname in the source message with supplierName in the target message.
○ Connect productName in the source message with productName in the target message.
8. Click supplierForename in the source message. The connectors between supplierForename and
supplierSurname (in the source message) and supplierName (in the target message) are highlighted.
9. In the section below the graphical mapping editor, select the function Text Concat . Connect the
source and target fields in the following way:
Connect supplierForename with string1 and supplierSurname with string2. Connect concat with
supplierName.
Furthermore, you can add a delimiter string (for example, / or an empty space).
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
475
Your mapping should now look like this:
This mapping function merges the fields supplierForename and supplierSurname from the source
message to one single field supplierName in the target message (where the values are separated in the
target field by the delimiter string).
10. Choose OK. The integration flow model is displayed again.
4.6.2.3.3
Defining the Local Integration Process
Before continuing to the routing step, we first add a local integration process shape to the integration flow
model.
1. In the palette, select Process
Integration Process shape.
Local Integration Process
2. In the palette, select Transformation
the local integration process.
Filter
and position the shape below the (main)
and place the filter shape to the right of the start event of
3. Click the Filter shape and, on the Processing tab, enter the following string in the XPath Expression field: /
p1:Order_MT
Keep the default setting of Value Type as Nodelist.
This step will filter the required elements from the message structure Order_MT (associated with the
namespace mapped to prefix p1) from the processed message B (to prepare the message for the
subsequent merge step).
4. Add a Content Modifier to the right of the Filter step (you can find this under Message Transformers in the
palette).
476
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
On the Message Body tab, enter the following:
 Sample Code
<ns1:Messages xmlns:ns1="http://sap.com/xi/XI/SplitAndMerge">
<ns1:Message1>
${property.originalpayload}
</ns1:Message1>
<ns1:Message2>
${in.body}
</ns1:Message2>
</ns1:Messages>
This step creates the message (A,B), which will be passed on to the custom integration flow.
Again, you will notice the following dynamic expressions:
○ Expression ${property.original_payload} is replaced at runtime by the content of the original
message A (which was stored prior to the standard mapping step in the Exchange property).
○ Expression ${in.body} is replaced at runtime by the content of the message that enters the Content
Modifier. This is message B, which results from the standard mapping.
5. Add a Request-Reply step (you can find this in the palette under
Content Modifier.
Call
External Call ) to the right of the
6. Add a receiver shape below the local integration process and connect it to the Request-Reply step.
7. When connecting the shapes, select ProcessDirect as the Adapter Type.
8. The ProcessDirect adapter has only one parameter that you need to configure. Specify the Address as an
externalized parameter.
Select Externalize and, on the next screen, enter {{endpoint}} as Address.
9. Choose Define Value and enter any value starting with /.
10. Choose OK.
The local integration process should now look something like this:
Click in the area outside the integration process and the local integration process shapes and select
Externalized Parameters.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
477
You will find the two parameters that you have already defined as externalized parameters (one from the
Content Modifier on the More tab and the endpoint address of the ProcessDirect adapter on the Receiver tab).
4.6.2.3.4
Defining the Router, Process Call, and Filter Steps
Now that you have defined the local integration process, you can continue with the design of the main
integration process.
1. In the main integration process, add a Router step to the right of the message mapping. You can find the
step type in the palette under
Message Routing
Router .
2. Add another end message event (from the palette under Events) and place it below the existing one.
3. Connect the Router step with the second end message event.
4. Click the upper route (connection of router step and upper end message event) and, on the Processing tab,
select Default Route.
5. Click the lower route and, on the Processing tab, specify the following:
○ Select Non-XML as Expression Type.
○ Under Condition, enter the following routing condition:
${property.custom_extension_enabled} = 'true'
This condition will be evaluated at runtime in the following way: The value of the (externalized)
parameter custom_extension_enabled is checked. If the value is true, this route will be
processed. If not, the default route is processed (which means that message is not subjected to any
further processing after the standard mapping step).
478
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
6. In the lower route, add a Process Call step (which you can find in the palette under Call Local Call ).
Select the Process Call shape and, on the Processing tab, choose Select. You can now select the local
integration process that you have already defined in a preceding step.
7. In the lower route, after the Process Call shape, add a Filter step (you can find this in the palette under
Transformation Filter ).
This part of the integration flow model should now look like this:
8. On the properties sheet of the Filter step. under Processing, add the following expressing in the XPath
Expression field:
/p2:Messages/p2:Message1/p1:Order_MT
Note that this setting contains two different namespace prefixes, p1 and p2. The mapping of these prefixes
with the relevant namespaces is defined on the Runtime Configuration tab of the integration flow (as shown
in Defining the Standard Message Mapping [page 471]).
Using different namespace prefixes and addressing them correctly as described is necessary to make sure
that the correct parts of the message are filtered. Note that this Filter step comes after the Process Call
step, and so it gets the message processed in the post-exit integration flow as input.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
479
4.6.2.4
Creating the Custom Integration Flow with the
Post-Exit Mapping
 Note
This section is targeted at the customer who is doing a mapping extension.
This integration flow is kept very simple.
● The sender shape in this model represents the standard integration flow (which is the source integration or
producer integration flow). The custom integration flow receives the message from the producer
integration flow through the ProcessDirect adapter (as both integration flows are deployed on the same
tenant).
● The post-exit message mapping step contains the mapping as explained under Post-Exit Mapping [page
466].
Related Information
Configuring the ProcessDirect Sender Adapter [page 480]
Creating the Custom Mapping [page 481]
4.6.2.4.1
Configuring the ProcessDirect Sender Adapter
1. Create a new integration flow (this will be the custom integration flow).
2. Remove the receiver component.
3. Connect the sender shape with the start message event and select ProcessDirect as Adapter Type.
4. Configure the address of the ProcessDirect adapter as an externalized parameter in the same way as
described in Defining the Local Integration Process [page 476] for the ProcessDirect receiver adapter in the
standard integration flow.
480
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.6.2.4.2
Creating the Custom Mapping
It is a prerequisite for the custom mapping that you upload the WSDL files defining the source and target
message structures to the Resources tab of the integration flow (as shown for the standard mapping in Defining
the Standard Message Mapping [page 471]). As you can see, three message structures, A, B, and C, are
involved in the mapping, and the corresponding resource files (WSDLs) have to be made available to the
integration flow.
To make it easy for you to define the mapping step, we provide the content of the WSDL files below.
You can use this content to create the WSDL file for the source and target message of the custom mapping:
For the source message, import two WSDL files:
● The WSDL file describing the original message A (as contained in the standard integration content)
Use file A.wsdl from Defining the Standard Message Mapping [page 471].
● The WSDL file describing the message structure after the standard mapping (message B)
Use file B.wsdl from Defining the Standard Message Mapping [page 471].
However, note one important detail: In this WSDL file, you need the original namespace prefix p1.
Otherwise, message processing results in a namespace conflict and the mapping step cannot be executed
without an error.
Correspondingly, to define the WSDL file for message B (B.wsdl), copy the following content:
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="SendOrder_Async"
targetNamespace="http://cpi.sap.com/demo" xmlns:p1="http://cpi.sap.com/
demo"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation />
<wsp:UsingPolicy wsdl:required="true" />
<wsp:Policy wsu:Id="OP_SendOrder_Async" />
<wsdl:types>
<xsd:schema targetNamespace="http://cpi.sap.com/demo"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://
cpi.sap.com/demo">
<xsd:element name="Order_MT" type="Order_DT" />
<xsd:complexType name="Order_DT">
<xsd:sequence>
<xsd:element name="orderNumber" type="xsd:string" />
<xsd:element name="supplierName" type="xsd:string" />
<xsd:element name="productName" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Order_MT">
<wsdl:documentation />
<wsdl:part name="Order_MT" element="p1:Order_MT" />
</wsdl:message>
<wsdl:portType name="SendOrder_Async">
<wsdl:documentation />
<wsdl:operation name="SendOrder_Async">
<wsdl:documentation />
<wsp:Policy>
<wsp:PolicyReference URI="#OP_SendOrder_Async" />
</wsp:Policy>
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
481
<wsdl:input message="p1:Order_MT" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SendOrder_AsyncBinding" type="p1:SendOrder_Async">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="SendOrder_Async">
<soap:operation soapAction="http://sap.com/xi/WebService/
soap1.1"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://
schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
 Note
Both WSDL files together define the structure of the merged message (A, B), which is passed on from the
standard integration flow (as you will see when defining the message mapping).
For target message C, create a WSDL file with the following content and import it to the integration flow
Resources tab:
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="SendOrder_Async"
targetNamespace="http://cpi.sap.com/demo" xmlns:p1="http://cpi.sap.com/
demo"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation />
<wsp:UsingPolicy wsdl:required="true" />
<wsp:Policy wsu:Id="OP_SendOrder_Async" />
<wsdl:types>
<xsd:schema targetNamespace="http://cpi.sap.com/demo"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://
cpi.sap.com/demo">
<xsd:element name="Order_MT" type="Order_DT" />
<xsd:complexType name="Order_DT">
<xsd:sequence>
<xsd:element name="orderNumber" type="xsd:string" />
<xsd:element name="supplierName" type="xsd:string" />
<xsd:element name="productName" type="xsd:string" />
<xsd:element name="additionalField" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="Order_MT">
<wsdl:documentation />
<wsdl:part name="Order_MT" element="p1:Order_MT" />
</wsdl:message>
<wsdl:portType name="SendOrder_Async">
<wsdl:documentation />
<wsdl:operation name="SendOrder_Async">
<wsdl:documentation />
<wsp:Policy>
482
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
<wsp:PolicyReference URI="#OP_SendOrder_Async" />
</wsp:Policy>
<wsdl:input message="p1:Order_MT" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SendOrder_AsyncBinding" type="p1:SendOrder_Async">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:operation name="SendOrder_Async">
<soap:operation soapAction="http://sap.com/xi/WebService/soap1.1"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://
schemas.xmlsoap.org/wsdl/soap/" />
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
Note that message structure C is similar to message structure B; it has one additional field
additionalField. Save the file with the name C.wsdl.
Perform the following steps to define the mapping:
1. Add a message mapping shape between the start message and the end message event.
Choose the + icon and define a name for the message mapping.
2. Choose Create.
The mapping editor opens.
3. Select Add source message and browse to the file A.wsdl.
4. Choose the Edit message icon.
The Source and Target Messages editor opens.
The structure of message A is already displayed under Source Messages.
5. Choose the + icon beneath Source Messages and add file B.wsdl.
6. In the same way, choose the + icon beneath Target Messages and add file C.wsdl.
After this step, messages A and B are shown under Source Messages and message C is shown under Target
Messages.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
483
7. Choose OK to go back to the mapping editor.
8. In the source message structure on the left side, open the nodes under ns1:Message2 (the lower part of
the source structure), and on the right side open the nodes of the target structure. Then, connect each
field of the source structure to the field with the same name in the target structure. Leave out the field
additionalField in the target structure.
9. Now, open the upper part of the source structure and connect the field supplierSurname in the source
structure with the field additionalField in the target structure.
The figure below shows the final mapping and also indicates which parts are associated with the messages
A, B, and C.
10. Finally, to apply the mapping function for the connection of the fields supplierSurname (source
structure) and AdditionalField (target structure), open the mapping expression
Text
toLowerCase . Connect the source and target field in the following way: supplierSurname with
toLowerCase and connect the latter with AdditionalField.
11. Choose OK to return to the integration flow model.
12. Save and deploy the integration flow.
4.6.2.5
Executing the Scenario
To execute the scenario, you need to install a SOAP client (for example, SoapUi) and configure it accordingly.
You need to configure the SOAP client so that it calls the endpoint address of the standard integration flow.
More information: Set Up the SOAP Client and Start Message Processing [page 775]
484
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
To define the inbound message (sent by the SOAP client), upload the file A.wsdl in the SOAP client. When the
SOAP client has been configured accordingly, and the message structure is shown, you can enter any values for
the elements, for example:
 Sample Code
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:demo="http://cpi.sap.com/demo">
<soapenv:Header/>
<soapenv:Body>
<demo:Order_MT>
<orderNumber>1</orderNumber>
<supplierForename>WALTER</supplierForename>
<supplierSurname>SMITH</supplierSurname>
<productName>Notebook</productName>
</demo:Order_MT>
</soapenv:Body>
</soapenv:Envelope>
1. Configure the standard integration flow (open the standard integration flow and choose Configure).
2. Specify a value for the Address parameter of the ProcessDirect adapter (or leave the default value as it is).
3. Go to the More tab and leave the default value for the custom_extension_enabled parameter as false.
4. Choose Save and then Deploy.
5. Choose the Operations view of the Web UI and under Manage Integration Content check the deploy status
of your standard integration flow.
6. As soon as the integration flow deployment has finished (status Started), copy the endpoint address to
your clipboard and paste it into the address field of your SOAP client.
7. Now configure and deploy the custom integration flow. Make sure that you configure the same
ProcessDirect adapter Address parameter as in the standard integration flow.
When the custom integration flow is also deployed, trigger message processing from your SOAP client as
explained in Set Up the SOAP Client and Start Message Processing [page 775].
The SOAP client should receive a response where the standard mapping has been applied to the original
message.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
485
The fields supplierForename and supplierSurname of the original message have been concatenated
in the field supplierName.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ...>
<soap:Header/>
<soap:Body>
<ns0:Order_MT xmlns:ns0="http://cpi.sap.com/demo">
<orderNumber>1</orderNumber>
<supplierName>WALTER / SMITH</supplierName>
<productName>Notebook</productName>
</ns0:Order_MT>
</soap:Body>
</soap:Envelope>
8. Repeat all these steps, but with the externalized parameter custom_extension_enabled of the standard
integration flow specified as true.
9. The SOAP client should receive a response in which the custom mapping has been applied.
The field additionalField is available and contains the content from the original field
supplierSurname (but uppercase characters have been transformed to lowercase characters).
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ...>
<soap:Header/>
<soap:Body>
<ns0:Order_MT xmlns:ns0="http://cpi.sap.com/demo">
<orderNumber>1</orderNumber>
<supplierName>WALTER / SMITH</supplierName>
<productName>Notebook</productName>
<additionalField>smith</additionalField>
</ns0:Order_MT>
</soap:Body>
</soap:Envelope>
4.6.3 Mapping Extension Step by Step (Example from SAP
Hybris C4C)
This section explains how to do mapping extensions based on a real example from the product area SAP Hybris
Cloud for Customer (C4C).
 Note
This section is targeted at the customer who is doing a mapping extension.
 Note
For more background information regarding this example, check out the following blog in SAP Community:
Extending standard integration flow to support Customer extensions .
Let's assume that you want to do a mapping extension that also includes the extension of the source message
structure. This means that both a pre-exit and a post-exit are involved. The integration flows discussed in this
section have the same structure as those explained in Integration Flow Extension - Concepts [page 457].
486
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
We also assume the following:
● The sender is an SAP ERP system sending an IDoc message to Cloud Integration. An IDoc adapter is used
as the sender channel for the standard integration flow.
● The receiver is an SAP Cloud application that expects a SOAP message (through the SOAP adapter).
● You also need to extend the source IDoc message. To support this use case, the standard integration flow
contains a pre-exit. The pre-exit step will then enable you to design a corresponding pre-exit integration
flow in order to map the extended source message to the original message structure. The message
processed by the pre-exit integration flow can then be consumed by the standard mapping.
You need to create two integration flows, one for the pre-exit mapping and another one for the post-exit
mapping. We explain the required steps to extend the mapping and to connect the custom integration flows
with the standard integration flow.
The following figure shows the overall message flow between the standard integration flow and the pre-exit and
post-exit integration flows, including sender and receiver.
The following message structures are involved in the extension scenario:
● Message A
Contains the original source message structure that is defined by the requirements of the sender system
and can be consumed by the standard mapping.
● Message A'
Contains an extended source structure (defined by the customer-specific requirements with regard to the
sender system).
Typically, the customer derives message structure A' from message structure A by adding additional fields.
In our example, the sender system is an SAP ERP system that sends an IDoc to SAP Cloud for Customer.
Messages A and A' are IDoc messages.
● Message B
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
487
This is the target structure of the standard mapping. In other words, the standard integration flow maps
message A to message B.
In order to enable the standard mapping to consume the inbound message in the customer-specific
scenario, message A' first has to be mapped to the original message structure A, which is defined in the
standard integration flow. For this purpose, the message is passed to the pre-exit integration flow and
mapped to message A, which can then be mapped within the standard integration flow.
● Message C
This is the message that results from the post-exit mapping.
Note that the letters A, A', and so on correspond to the notation as used in the general concept description in
Integration Flow Extension - Concepts [page 457].
Related Information
Prerequisites [page 488]
Creating the Pre-Exit Integration Flow [page 490]
Creating the Post-Exit Integration Flow [page 492]
Connecting Pre-Exit and Post-Exit Integration Flows with the Standard Integration Flow [page 493]
4.6.3.1
Prerequisites
Standard Integration Flow with Customer Exits
The standard integration flow (provided as part of a predelivered integration content package) with both a preexit and a post-exit has the following design. The message flow as explained above is also depicted.
488
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Required Integration Flow Resources (WSDLs)
Prerequisite: You have copied the integration package with the standard integration flow into your own
workspace.
We also assume that you, the customer, have already defined the source message structure (the extended IDoc
structure A') and the target message structure that depends on the intended final mapping (this is referred to
as message C).
 Note
The WSDL files defining the message structures A and B (source and target message of the standard
mapping) are contained as part of the standard integration flow (from the predelivered integration
package).
You can get these by deploying the standard integration flow (from the predelivered integration package)
on your customer tenant, opening the standard integration flow, clicking in the area outside the (local)
integration process shapes, and selecting the Resources tab. Here, you will find the related WSDL files and
you can download them.
The following figure shows the resources as uploaded to the standard integration flow:
● COD_STOCK_REPLICATE.COD_STOCK_REPLICATE01.wsdl describes the original source structure for
the standard mapping, which is an IDoc message (message A).
● DOC_INTF_II_STOCK_LOCATION_REPLIC_IN.wsdl describes the target structure of the standard
mapping (message B)
.
The standard integration flow contains a mapping that transforms message A to message B. The following
figure shows this mapping as displayed in the mapping editor:
 Note
You must not change the standard integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
489
4.6.3.2
Creating the Pre-Exit Integration Flow
Creating the Pre-Exit Mapping
Let's assume that you want to extend the source structure by additional fields.
1. Extend the source structure of the message (to get message A').
You want to add additional elements to the source message, for example, the following element:
Z101YANEXT2.
Edit the WSDL file for message A (COD_STOCK_REPLICATE.COD_STOCK_REPLICATE01.wsdl)
accordingly (using the WSDL for message A from the Resources tab of the standard integration flow).
Save the new WSDL file under any name (for example, YANCOD_STOCK_REPLICATE01.wsdl).
2. Create a new integration flow.
We recommend that you add this new integration flow to the package that contains the standard
integration flow (both have to be deployed on the same tenant).
3. Model the integration flow according to the following figure:
4. When connecting the sender shape with the message start event, select the ProcessDirect adapter type.
Go to the Connection tab of the ProcessDirect adapter and as Address enter any value starting with a slash
(/), for example /preexit_flow.
5. In the integration flow editor, click somewhere outside the Integration Process shape and select Resources.
6. Choose
Add
Schema
WSDL
and browse to the WSDL file defining the source message (message A',
this is file YANCOD_STOCK_REPLICATE01.wsdl).
In the same way, add the WSDL file for message A to the integration flow (file
COD_STOCK_REPLICATE.COD_STOCK_REPLICATE01.wsdl).
7. Repeat these steps for the target message (here, add the WSDL file for message A). Note that the pre-exit
steps map the extended source message A' to the original message A. As mentioned above, you get the
490
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
resource for message A from the standard integration flow, whereas the resource for message A' depends
on the specific enhancements of the source structure. Typically, it is similar to message A, but contains
additional custom fields.
8. In the integration flow model, select the Message Mapping shape from the palette (under Mapping) and
place it in the model between the message start and message end event.
9. Choose the + icon next to the message mapping shape and enter a name for the message mapping (for
example, pre_exit_mapping).
10. Choose Create.
11. The graphical mapping editor is opened.
12. Choose Add source message and browse to the WSDL file of the source message (message A'). Choose
Upload from file system.
13. Choose Add target message and repeat the steps with the WSDL file for the target message (message A).
14. Connect all fields that are identical in the source and target mapping without assigning any mapping
function. Do not connect the additional fields (which have no equivalence in the target message A) to any
target field.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
491
15. Save and deploy the integration flow.
4.6.3.3
Creating the Post-Exit Integration Flow
Creating the Post-Exit Mapping
Create another integration flow with the same shapes as in the pre-exit integration flow (also within the same
integration package). Make the following specific settings:
● In the Address field of the ProcessDirect adapter, enter a string that is different to the one in the pre-exit
integration flow, for example /postexit_flow.
● Click in the area outside the integration process shape, go to the Resources tab, and upload the WSDL files
for the messages A', B, and C.
Note that you get the resource for message B from the standard integration flow, whereas the resource for
message C depends on the specific custom enhancements related to the target structure. Typically,
message C is similar to message B, but contains additional fields.
● Configure the message mapping in the following way:
For the source message, upload both resource files for messages A' and B. For the target message, upload
the resource file for message C.
You can proceed in the same way as described for the demo example in Creating the Custom Mapping
[page 481].
492
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
You will notice that the source message consists of two messages, A' and B.
Connect all fields in the structure below Message2 with the corresponding fields in the target structure.
● Define connections between selected (additional) fields of the extended original message A' (in the
structure below Message1) and selected fields in the target message C (typically, using fields that have
been added in the target structure).
4.6.3.4
Connecting Pre-Exit and Post-Exit Integration Flows
with the Standard Integration Flow
Connecting Custom Integration Flows with the Standard Integration Flow
To make sure that the standard integration flow and post- and pre-exit integration flows are processed in
conjunction as expected, make sure that the ProcessDirect adapter addresses match in the right way.
The ProcessDirect adapter address of the pre-exit integration flow must match the ProcessDirect adapter
address in the pre-exit of the standard integration flow.
The same applies for the ProcessDirect adapter address of the post-exit integration flow and the corresponding
ProcessDirect adapter address in the post-exit of the standard integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
493
4.7
Importing Custom Integration Adapter in the Cloud
Foundry Environment
Use the integration adapter artifact type to import custom integration adapter in your integration package.
Prerequisites
● You’ve developed a custom integration adapter using Adapter SDK. For more information, see .
● You have exported integration adapter content, which is essentially an *.esa file in your local file system.
● You’ve assigned the role template WorkspacePackagesEdit and WorkspaceArtifactsDeploy that are required
to accomplish the various tasks when working with custom integration adapter. For more information, see .
● You’ve created an integration package. For more information, see Create an Integration Package.
Context
SAP Cloud Integration has the ability to connect to a multitude of systems in the cloud and on-premise. It
already comes with an impressive number of adapters that allow communication with SAP and Non-SAP
systems, security standards, and business-specific requirements.
Custom integration adapter facilitates the integration of a business based on your requirements and it has the
following lifecycle operations:
Design Time Operations
Monitoring view Operations
The adapter is available for modeling in the integration flow
You can monitor the status of deployed custom integration
adapter. The status details show the status of the integration
adapter with regard to its usage at runtime.
once the custom adapter is imported as an artifact in the in­
tegration package.
The version history shows the versions of the adapters that
are maintained in the design workspace.
You can Restart, Undeploy, and Download from the Manage
Integration Content view.
You can Delete, Download, and Deploy the imported custom
integration adapter through Actions. You can also edit via
View metadata.
Procedure
Here's how you can import an integration adapter in SAP Cloud Integration in the cloud foundry environment.
1. Choose  Design tab to access your workspace.
2. Select the integration package, in which you want to add a custom integration adapter.
494
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
3. Choose Edit to enable editing of the package
4. Go to the Artifacts tab and choose
Add
Integration Adapter .
5. Choose Browse to import integration adapter file (*.esa). Name, ID, and Version fields get auto filled.
6. Choose Deploy.
 Note
You need to be familiar with the following aspects:
○ The integration adapter ID needs to be unique across the tenant. When you create a new
integration adapter, by default the entry for Name and ID is automatically imported from the file.
○ If there’s already an integration adapter with the same ID, the system throws an error.
○ To find more information about the integration adapter with the same ID (for example, the
integration package name and the integration adapter name), click Show More below the error
message.
○ The adapter won’t be available for modeling once you delete it from the integration package.
○ The integration adapter must be deployed first before deploying the integration flow that
consumes the integration adapter.
○ Once you undeploy the integration adapter artifact, it’s removed from the Manage Integration
Content view.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
495
○ If you are unable to find the imported integration adapter when modelling the integration flow, the
browser cache need to be cleared. To clear browser cache, choose Empty cache and hard reload
from the application browser window.
Deploying an Integration Adapter
You 've now completed all steps to develop your adapter project, imported as an artifact in the package and
consumed for modeling an integration flow. To use the adapter in the integration flow for processing, you need
to deploy the adapter.
Context
The procedure how to do is depends on the environment where you run SAP Cloud Integration.
You import the adapter in the design workspace and use the following steps to deploy the adapter then it’s
available for modeling in the integration flow.
Procedure
1. Open the integration package.
2. Go to the Artifacts tab.
3. Select the Actions button next to the name of a custom integration adapter.
496
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4. Select Deploy.
You can monitor the status of custom integration adapter deployed on your tenant. For more information,
see .
4.8
Configure Integration Flow Components
SAP Cloud Integration Web application allows you to configure integration flow components in an editor.
Components of the Integration Flow Editor
Component
Allows you to...
General
Provide a name for the integration flow artifact and give a
brief description about the flow.
Runtime Configuration
You can specify general properties of the integration flow.
For more information, see Specify the Runtime Configuration [page 503].
Error Configuration
Define how to handle errors when message processing fails
at runtime. For more information, see Define Error Configuration [page 507].
Resources
Manage different different categories of file types associated
within an integration content. For more information, see
Manage Resources of an Integration Flow [page 507].
Externalized Parameters
Configure an integration flow individually or multiple integra­
tion flows at once. For more information, see Configure Ex­
ternalized Parameters of an Integration Flow [page 1110].
Problems
See all errors and warnings associated with integration com­
ponents and resources. For more information, see Problems
View [page 511].
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
497
4.8.1 Overview of Integration Flow Editor
SAP Cloud Integration provides an integration flow editor that comes with highly responsive features. It helps
you to work more efficiently in the development of an integration scenario.
Benefits of an Integration Flow Editor
The editor comes with a simplified approach and provides you the following benefits:
● Horizontal placement of palette gives more space for the modeling area.
● You can see the minimized property sheet to have a better modeling area by design.
● Double click to open the property sheet whenever you want to navigate to the detail section.
● Availability of simulation tool in the palette helps you to run the simulation during any phase of the
development.
● A new search field in the palette helps you to search or select the flow steps. It reduces your development
time.
Integration Flow Editor Views
The editor has the following views:
● Editor View: The view of the editor displays and allows you to edit the content of the currently opened
integration flow. It also displays tabs of the property sheet, so that you can move between them easily. The
editor view provides sufficient space for modeling your integration scenarios. For more information about
using components in the editor view, see Configure Integration Flow Components [page 497].
498
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
● Palette View: The palette view shows all the options required to model an integration flow. For more
information about the using different components during the development, see Developing Integration
Content with SAP Cloud Integration [page 407].
Integration Flow Editor Toolbar
The following table shows the icons in the toolbar and their actions.
Icon
Name of the Icon
Action

Participants
Specify the end points or sender and
receiver participants. For more informa­
tion, see Assign Sender and Receiver
Components [page 515].

Process
Define different processes, which are
required to process the message trans­
fer between the sender and receiver
systems, to simplify your integration
process and identify any exceptions ap­
pears in the integration process. For
more information, see Define Process
Shapes [page 511].

Events
Define different events of message
processing. For more information, see
Define Events [page 835].

Connectors
Establish connection between the two
flow steps.

Delete
Delete the selected component or the
integration flow step.

Mapping
Define different kinds of mapping, if you
want to define an association between
fields of messages with different struc­
turing you use message mapping. If you
want to relate an Outbound service in­
terface operation with an Inbound serv­
ice interface operation, you use opera­
tion Mapping. For more information,
see Working with Mapping [page 841].

Message Transformers
Convert messages from one format to
another. For more information, see De­
fine Message Transformer Steps [page
853].
Call
Define various steps that execute a call
into a remote (external) component or
into a sub process of the integration
flow. For more information, see Define
Call Steps [page 948].
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
499
Icon
Name of the Icon
Action

Message Routing
Define the message path to perform dif­
ferent operations like splitting and rout­
ing messages. For more information,
see Define Routing Steps [page 960].

Security Elements
Encrypt, decrypt, sign, and verify mes­
sages in the integration flow. For more
information, see Define Security-Re­
lated Steps [page 1021].

Persistence
Define different steps to access your
tenant database. You can share data
across different integration flows and
store the messages. For more informa­
tion, see Define Message Persistence
Steps [page 1047].

Message Validator
Check the content of the message
against a defined schema. For more in­
formation, see Define Validator Steps
[page 1070].

Run Simulation
Run the simulation once the start and
end point have been defined. For more
information, see Simulation of an Inte­
gration Flow [page 1114].

Clear Simulation
Remove all the simulation elements
such as the start point, end point, and
message processing output. For more
information, see Configure Simulation
[page 1118].

Context Sensitive Help
Access the help information of a partic­
ular Flow step. It gives direct access to
the information.
Search Step
Easy way to search a required flow step.
You can either type in the search field or
scroll down to select the flow step.
Capabilities of an Integration Flow Editor
Zoom
You can easily zoom in and out of the editor with your mouse scroll or the '+' and '-' action buttons on the top
right of the editor. This feature is helpful when you have to edit large and complex integration flows.
Action Buttons for Integration Flow Steps
All integration flow steps and adapters provide quick action buttons that help you to connect, delete, view
information, or do more such quick actions. This is helpful in quickly building an integration flow. For example,
when you want to delete an adapter, you just need to select the channel and then select the Delete icon in the
palette. This process just takes two clicks with the editor.
500
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Quick Buttons
In the editor, the quick buttons are used to connect, delete, or see the technical information when you select
the component to access them.
Overview Mode
When you have a large integration flow, you need a visualization that helps you see the entire integration flow
and navigate to a specific area in that flow. The overview mode provides you that option. By choosing the
dedicated button on the bottom right of the screen, you get a bird's eye view of the integration flow.
Modeling Constraints
The editor also has some constraints to help you ensure that you don’t make a mistake while modeling an
integration flow. For example, the editor doesn't allow you to add integration flow steps outside the integration
process.
The editor also prevents you from adding multiple incoming messages to integration flow steps. Currently, isn’t
supported for Request Reply, Content Enricher and Send steps.
Search for Steps
You use search step to find the required flow step during the development of an integration scenario. You can
search the step with free text. For example, filter, sender, content modifier etc. When you enter a text as a
search, the system looks for it and displays the flow step. You can just select and drop it in the modeling area.
Double Click
You use double click to open the properties view of step and integration flow. You have to double click on the
respective step to view its properties. You can use the following methods to open the properties view:
● Use splitter icon located at the bottom of the screen to move properties view up and down.
● Use  Restore button to open properties view.
Auto-Save
Consider a scenario where you’ve exited the integration editor while modeling an integration flow or
encountered a session timeout. In both these cases, you haven’t saved the changes made to the integration
flow. To identify an unsaved integration flow artifact, you can find the Unsaved Changes text appearing under
the name of the artifact.
In such scenarios, the Auto-Save functionality helps you recover the unsaved version of the integration flow.
The next time when you open the specific integration flow in the WebUI, a pop-up appears asking if you would
like to recover the unsaved integration flow. If you choose Recover, the application restores the integration flow
you were working on before. If you don’t want to keep the version that you were working before then choose
Discard.
 Note
The Auto-save also helps you to recover the unsaved version of your script or an XSLT resource.
This feature prevents you from losing work and by default, the application saves your work for every 60
seconds.
Copy and Paste Adapter Configurations
You can copy and paste adapter configurations within an integration flow.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
501
Copy and paste only works between two sender adapters and two receiver adapters. Copy of a sender adapter
details to a receiver adapter (or vice versa) isn’t supported.
 Example
To copy and paste the configuration between two receiver adapters, navigate to the Design tab, and under
your integration package, open an artifact in Edit mode. Select one of the receiver adapters and choose the
Copy  button to copy its configuration details. Choose another receiver adapter and click on Paste 
button. The configuration details are copied into this receiver adapter.
 Note
● The paste function overwrites any existing configuration on the adapter including its type.
● The copy and paste only works between two sender adapters and two receiver adapters. Copy of a
sender adapter details to a receiver adapter or the vice versa, isn’t supported.
● This Copy-Paste feature is available only for adapter within the communication channel.
Context Sensitive Help
Context sensitive help paves a way for accessing the help information of a particular adapter or flow step,
thereby reducing the time spent in searching for the information.
Consider a scenario where you need to know more about how to define a script for message processing. Select
the Script shape in the editor and click Help  icon in the property sheet. This opens the context-specific
information in a new window or tab.
 Note
● The context sensitive help can be accessed in both read-only and editable mode of an integration flow.
This feature is available only for integration flow artifacts and not for OData artifacts.
● This feature can also be accessed in Discover and Monitor views.
● This feature isn’t available for custom adapters.
4.8.2 Define Settings for the Integration Flow
When clicking the area outside the Integration Process shape, you can configure settings that are related to the
whole integration flow.
Related Information
Specify the Runtime Configuration [page 503]
Define Error Configuration [page 507]
502
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Manage Resources of an Integration Flow [page 507]
Externalized Parameter View [page 510]
Problems View [page 511]
4.8.2.1
Specify the Runtime Configuration
With Runtime Configuration you can specify general properties of the integration flow.
Procedure
1. Open the integration flow and select the graphical area outside the integration flow model.
2. Choose the Runtime Configuration tab.
3. Specify the following properties.
With the property Product Profile you choose the target runtime environment for the integration content
designed with the application.
A product profile defines a set of capabilities for Cloud integration content design supported by a specific
target integration platform. For example, a specific product profile supports the configuration of a specific
set of adapter types and integration flow steps.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
503
Runtime Configuration Properties
Property
Allows you to ...
Namespace Mapping
Map a prefix to a namespace at runtime.
Enter a namespace-prefix pair with a format
xmlns:<prefix>=<namespace>.
This parameter is required for elements such as the con­
tent-based router, content modifier or content filter that
can use namespaces in their configuration. You can either
enter the namespace-prefix pair or the tool automatically
fills the namespace-prefix pair whenever a lookup is per­
formed for the assigned WSDL.
You can also enter multiple namespace-prefixes as shown
in the example: xmlns:test=http://sapcd.com/
testABC;xmlns:test2=http://sapcd.com/
testPQR.

Note
xmlns:ns0=https://
hcischemas.netweaver.neo.com/hciflow
Here, ns0 is the prefix and https://
hcischemas.netweaver.neo.com/hciflow
is the namespace. That way, in a router, you can spec­
ify the routing condition for an XML message as:
/ns0:HCIMessage/
SenderID='Sender01'
Message Processing Log
Configure the log level to display in the Monitoring editor.
Select one of the log levels from the Message Processing
Log dropdown.
504
PUBLIC
○
All Events: Allows all messages to be logged and dis­
played
○
Error Events: Allows only error messages to be logged
and displayed
○
No Logging: Hides logging information
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Property
Allows you to ...
Allowed Header(s)
Specify the headers to be retained when the incoming
message is processed.
Enter one or more names of headers by separating them
with pipe (|).

Note
If you want to enter several headers with similar
names, use wildcards to make the entering faster.
The wildcards are regular expressions, such as .*
and ?.? substitutes exactly one non-space charac­
ter..* substitutes zero or more non-space charac­
ters.
Example: You want to enter the headers A, A1, A2, A3.
Instead of entering all of them singularly, simply enter
A .*. This will allow all headers starting with A.
In general, headers used by the runtime components are
retained and other headers are removed during message
processing. This field is useful when you need specific
header information along with the message body.
For inbound SSL connections (when a sender calls SAP
Cloud Integration), senders have to authenticate against a
load balancer component. The load balancer sets the fol­
lowing message header fields: SSL_CLIENT_CERT
(contains the Base64-encoded sender client certificate)
and SSL_CLIENT_USER. Entering these values in the
Allowed Header(s) field, allowes you to forward these
headers during message processing.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
505
Property
Allows you to ...
HTTP Session Handling
Choose one of the following options:
○
None
○
On Exchange
Session handling is switched off
Each exchange corresponds to a single session (use
this option for stateful services)
○
On Integration Flow
Only one session will be used across the whole inte­
gration flow (only use this option for stateless serv­
ices)

Note
Once an HTTP session has been initialized, there
is usually no further authentication for the dura­
tion of the session (one of the advantages of us­
ing sessions). This means that all further HTTP
requests on that server are processed in the con­
text of the user that was logged on when the ses­
sion was initialized. If, however, this behavior
does not meet your requirements (for example,
the user is dynamic and can change from request
to request), you can select either an exchange
session scope (if the user remains the same for
at least the processing of a single message) or no
session.

Note
SuccessFactors (OData V4) and SuccessFactors
(REST) adapters do not support HTTP session
handling.
4. Save the changes.
Related Information
Product Profiles [page 413]
Define Content Modifier [page 854]
506
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.8.2.2
Define Error Configuration
You can define how to handle errors when message processing fails at runtime.
Context
Error messages can include sensible data about systems. Therefore, error messages aren't directly returned to
the sender by default. Instead, an error template is returned. With this template, you can access the error
message after authenticating against SAP Cloud Integration. You can enable this setting if you want to provide
the error message to the sender without any indirection.
Procedure
1. Open the Design tab and select the integration flow.
2. Click the area outside the Integration Process shape and choose Error Configuration.
3. Specify the error handling strategy.
If you select Return Exception to Sender, certain adapters send the complete exception information back to
the sender in case of an error. This setting is not recommended for security reasons as, when selected,
internal details of the SAP Cloud Integration runtime can be exposed.
If you like to ensure that no detailed exception information is sent back to the sender, make sure that
Return Exception to Sender is deselected (which is the default setting). In this case, an error template is
returned to the sender that contains the message processing log ID for further error analysis.
4.8.2.3
Manage Resources of an Integration Flow
Use Resources to manage different resources associated within an integration content optimally. The term
"resources" refers to a collection of different categories of file types. A table in the resources view displays files
grouped by categories and their filenames alphabetically sorted. Expanding each resource category shows the
files within the category.
Resource files with a link allows you to view or modify the content in a file-specific editor. You can modify the
file content only when the integration content is in edit mode.
 Note
Mouseover the filename to view the access path.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
507
Category
File Type
Extensions
Archives
Archive
.jar
Mappings
Message Mapping
.mmap
Operation Mapping
.opmap
XSLT Mapping
.xslt
.xsl
Scripts
Groovy Script
.gsh
.gy
.groovy
Schemas
Java Script
.js
XSD
.xsd
WSDL
.wsdl
EDMX
.edmx
.xml
Adding Resources
To add files from the file system, do the following:
You can add multiple resources from the file system and also add dependent resources by archiving the parent
along with its dependent resources in a single *.zip file.
But you cannot add multiple archive (*.zip) files or an archive file along with other resource files, only
resources with the following extensions and dependencies are uploaded:
Resource Type
Dependent Resources
You can...
WSDL
WSDL, XSD
Upload individual files or an archive file
that contains multiple WSDL or XSD or
both type resources.
XSD
XSD
Upload individual files or an archive file
that contains only XSD resources.
508
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Resource Type
Dependent Resources
You can...
EDMX
EDMX, XML
Upload individual EDMX or XML files, or
an archive file that contains multiple
EDMX or XML files or both type resour­
ces.
Ensure that your XML file contains the
valid EDMX tag.
XSLT mapping
XSL
Upload individual files or an archive file
that contains only XSL resources.
 Note
The above resource view uploaders is supported for Remote APIs as well
1. In the Resources tab, choose Add and select a file type.
2. Select the File System as the source.
3. Choose Browse to select one or more files from the file system.
4. Choose OK to upload the files.
To add files from an integration flow project, do the following:
1. In the Resources tab, choose Add and select a file type.
2. Select the Integration Flow as the source.
3. To import files from other integration projects, select the relevant Package and the Integration Flow.
4. In the Resources table, select one or more files and choose OK to upload the files.
5. To add dependent resources select Include Additional Resources.
 Note
MMAP files can be added from ESR. To know more, see: Importing Mapping Content from ES
Repository [page 426]
You can also copy MMAP files from other integration flows. While adding a MMAP file, the dependant
resources get copied along with the file. You get to see a summary of the list of dependant resources in
a dialog box before adding the file.
6. In the Resources table, select one or more dependent files and choose OK to upload the files.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
509
Quick Actions
You can perform the following actions for managing resource files:
Actions
Description
 (Delete)
Removes relevant resource file from the integration flow. Be­
fore deleting make sure that the selected file is not being re­
ferred in other integration flows.
 (Download)
Downloads the respective resource file to your local file sys­
tem.

Note
While downloading a MMAP file, all dependent resources
get downloaded along with the file in a ZIP format.
Read this blog
to know more about download and up­
load of Message Mapping
4.8.2.4
Externalized Parameter View
Use this view to compare the default and configured values of the integration flow. The advantage of this view is
that you can see the consolidated view of all parameter values externalized.
Context
The integration developer uses this externalized parameter view to compare the default and configured values
for quality assurance.
Default values of parameters can be updated from the Externalize Parameter view and the configured value
displayed in the read-only fashion.
 Note
Modifying the default value of a parameter replaces the current value at all locations. Configured values are
always preceded by the default value. Select Configure option if any changes are required to the configured
value.
This view offers two more options. You can use Filter by Name/Value option to filter externalized
parameter values either by entering name or by values.
You can use Remove Used option to remove unused externalized parameters. This option allows you to
permanently remove the parameters that aren’t consumed by any components of an integration flow.
For more information, see Externalize Parameters of an Integration Flow [page 1105].
510
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Procedure
To view and edit externalized parameters, perform the following steps:
1. Choose the Externalized Parameters tab from the Integration Flow section, and the table displays all the
used and unused externalized parameters.
2. You can search for and modify the parameter values.
3. Choose Save to save all your changes.
4.8.2.5
Problems View
Use this view to see all errors and warnings associated with integration components and resources.
The Problems view displays all issues related to integration components and resources occurred during design
time. This helps you identify and resolve issues that have an impact during runtime.
The first column in the table displays the Severity status of an issue. In the second column, there is a
Description of the issue. The third column highlights the Location of the integration component or resource
where the issue was encountered. When you click the location ID, the application redirects you to the affected
configuration of the integration component or to the affected resource.
 Example
Consider a location is displayed as SFTP [Receiver_1]. Here the issue is related to a SFTP receiver adapter.
This is identified by noticing the name and ID displayed in brackets, sometimes components may only have
ID displayed. You must note that for resources ID's are not displayed.
 Note
Content validation issues of resources when edited in their respective editors are not propagated to the
Integration Flow.
4.8.3 Define Process Shapes
Related Information
Define Integration Processes [page 512]
Define Local Integration Process [page 513]
Define Exception Subprocess [page 514]
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
511
4.8.3.1
Define Integration Processes
You use an Integration Process to define the steps to process the message transfer between the sender and
receiver systems.
An integration flow template contains the following shapes: Sender (this represents your sender system),
Receiver (this represents a receiver system), and Integration Process. The Integration Process shape contains a
Start event and an End event.
The following values are displayed in the General tab.
General
Parameter
Description
Name
If you want to provide a name for the integration process, en­
ter a name here. The default is set to Integration Process.
Select the Processing tab and provide values in the fields as follows.
Transaction Management
Parameter
Description
Transaction Handling
Select the relevant transactional database processing:
●
Required for JDBC
●
Required for JMS
●
Not Required

Note
See Defining Transaction Handling [page 1079] for more
information.
Timeout (in min) (only if Required for JDBC or Required for
Enter the time in minutes.
JMS is selected in Transaction Handling)

Note
This value refers to the transaction itself (for example,
data base operations). The timeout will only terminate
processes referenced in the transaction, not any other
operations that are part of the integration flow.
512
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.8.3.2
Define Local Integration Process
You use the local integration process to simplify your integration process. You can break down the main
integration process into smaller fragments by using local integration processes. You combine these fragments
to achieve your main integration process.
Prerequisites
● You have accessed the customer workspace in SAP Cloud Integration web application.
● You are editing the integration flow containing local integration process element.
Context
You use the Local Integration Process to define an integration process that is specific to the integration flow in
which it is created. You can use this integration process with the Process Call step.
 Restriction
You cannot use the following integration flow steps within the Local Integration Process step:
● Another Local Integration Process
● End Message
● Sender
● Receiver
Procedure
1. Choose the local integration process element you want to configure.
2. If you want to provide a name for the local integration process element, in the Name field under the General
tab, enter name.
3. If you want to specify the transaction handling of the message, choose a value for Transaction Handling
under the Processing tab.
To know more about Transcation Handling, see: Defining Transaction Handling [page 1079]
4. If you want to configure the elements inside the local integration process, refer to the documentation
relevant to those elements.
 Note
There should not be any empty element in the Local Integration Process.
5. If you want to add the local integration process to a process call element, perform the following substeps:
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
513
a. Select the process call element in integration flow editor.
b. In Local Integration Process field, choose Select.
c. In Select Local Integration Process window, select the local integration process you want to assign to
the process call.
 Note
You can use an Error End event to throw the exception to default exception handlers.
6. Save or deploy the configuration.
4.8.3.3
Define Exception Subprocess
Context
You use this element to catch any exceptions thrown in the integration process and handle them.
Procedure
1. Open the <integration flow>.iflw in the Model Configuration editor.
2. To add an exception subprocess to the integration flow, choose Process Exception Subprocess from
the palette. The subprocess can be dropped into the integration process and should not be connected to
any of the elements of the integration flow.
3. Select the exception subprocess.
a. In the property sheet specify a name.
4. Start the process with Error Start event always.
5. End the process with either End Message or Error End or Escalation event.
 Note
○ You can use an End Message event to wrap the exception in a fault message and send it back to the
sender in the payload.
○ You can use an Error End event to throw the exception to default exception handlers.
6. You can also add other flow elements between the start and end events .
 Note
○ For example, you can choose Add Service Call from the context menu of a connection within the
pool. This enables you to call another system to handle the exception.
○ The following elements are not supported within an Exception Subprocess:
○ Another Exception Subprocess
514
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
○ Integration Process
○ Local Integration Process
○ Sender
○ Receiver
○ Start Message
○ Terminate Message
○ Timer Start
○ Start Event
○ End Event
○ Router
○ If a Data Store Write step fails because the entry already exists (duplicate key exception), this
exception cannot be handled by an Exception subprocess. The reason is that the database
transaction is rolled back even if an Exception subprocess is used.
7. Save the changes.
 Note
○ The message processing log will be in an error state even if a user catches an exception and
performs additional processing on it.
○ You can get more details on exception using ${exception.message} or $
{exception.stacktrace}.
○ You cannot catch exceptions of local integration process in the main integration process.
○ When an error is thrown during integration runtime and the same is caught by the Exception
Subprocess, the processing gets terminated.
4.8.4 Assign Sender and Receiver Components
You use the Sender and Receiver elements to model remote systems that are connected to your integration
flow (either as sender or receiver of messages).
Context
Procedure
1. Open the integration flow in the editor.
2. From the palette, choose
Participants
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
( ) and then Sender or Receiver.
PUBLIC
515
Next Steps
You can now connect the Sender or Receiver shape with an integration flow Start Message or End Message
event. When performing this step, you also select the desired adapter type.
4.8.5 Assign Adapter to Communication Channel
Prerequisites
● You have logged on to Cloud Integration.
● You are editing an integration flow.
Context
You must create a communication channel between SAP Cloud Integration and the sender/receiver system to
facilitate communication between them.
 Note
You must click on the participant’s name of sender and receiver elements, to view the header and property
information. Also, you must drag and drop message flow over the participant's name, to assign
communication channels.
You use this procedure if you want to change the adapter assigned to the communication channel in integration
flows.
Procedure
1. Choose 
Design .
2. Select the integration package that contains the integration flow or create a new one.
3. Select the integration flow and choose Edit.
 Note
In the case of OData API artifacts in integration packages, you have to edit the OData API artifact in
order to edit the required integration flow.
4. If you want to define a sender channel, choose Sender, click on the arrow icon, and drag to Start.
516
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
 Note
In the case of integration flows in OData API artifacts, you cannot change the OData sender adapter.
5. If you want to define receiver channel, choose End, click on the arrow icon, and drag to Receiver.
6. In Adapter Type dialog, select the adapter you want to assign. Choose the message protocol that you want
to use, if prompted.
7. Save or deploy the changes after configuring the adapter and other integration flow elements.
 Note
In the case of integration flows in OData API artifacts, you can save the integration flow and deploy the
OData API.
4.8.6 Configure Adapter in Communication Channels
You should configure the adapters assigned to communication channels before deploying the integration flow.
The following adapter types are available:
Adapter
Feature
Description
AmazonWebServic
Connects SAP Cloud Integration to Amazon Web Services.
es
Sender adapter
AmazonWebServic
es
Receiver adapter
AMQP
Sender adapter
The adapter supports the following protocols:
●
S3: Simple Cloud Storage
●
SQS: Simple Queue Service
Connects SAP Cloud Integration to Amazon Web Services.
The adapter supports the following protocols:
●
S3: Simple Cloud Storage
●
SQS: Simple Queue Service
●
SNS: Simple Notification Service
●
SWF: Simple Workflow Service
Enables SAP Cloud Integration to consume messages from queues or topic subscriptions in an exter­
nal messaging system.
Supported message protocol: AMQP (Advanced Message Queuing Protocol) 1.0
Supported transport protocols: TCP, WebSocket
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
517
Feature
Description
AMQP
Enables SAP Cloud Integration to send messages to queues or topics in an external messaging sys­
Receiver adapter
tem.
Supported message protocol: AMQP (Advanced Message Queuing Protocol) 1.0
Supported transport protocols: TCP, WebSocket
Ariba
Connects SAP Cloud Integration to the Ariba Network. Using this adapter, SAP and non-SAP cloud ap­
Sender adapter
plications can receive business-specific documents in commerce eXtensible Markup Language
(cXML) format from the Ariba network.
The sender adapter allows you to define a schedule for polling data from Ariba.
Ariba
Connects SAP Cloud Integration to the Ariba network. Using this adapter, SAP and non-SAP cloud ap­
Receiver adapter
AS2
plications can send business-specific documents in commerce eXtensible Markup Language (cXML)
format to the Ariba network.
Enables SAP Cloud Integration to exchange business-specific documents with a partner through the
Sender adapter
Applicability Statement 2 (AS2) protocol.
Sender adapter: Can return an electronic receipt to the sender of the AS2 message (in the form of a
Message Disposition Notification (MDN))
AS2
Enables SAP Cloud Integration to exchange business-specific documents with a partner through the
Receiver adapter
AS4
Applicability Statement 2 (AS2) protocol.
Enables SAP Cloud Integration to securely process incoming AS4 messages using Web Services. The
Sender adapter
AS4 sender adapter is based on the ebMS 3.0 specification that supports the ebMS handler conform­
ance profile.
●
Supports one-way/ebMS3 push message exchange pattern (MEP).
●
Support on-way/ebMS3 pull that allows the message party to pick the corresponding message
from the partner.
AS4
●
Supports signature verification and decryption of the message.
●
Generates receipts after processing the incoming AS4 message.
●
Allows you to set a size limit for the body and attachment of an incoming message.
Enables SAP Cloud Integration to establish a connection between any two message service handlers
Receiver adapter
(MSHs) for exchanging business documents. The AS4 receiver adapter uses the Light Client conform­
ance policy and supports only message pushing for the sending MSH and selective message pulling
for the receiving MSH.
Receiver adapter:
●
Supports one-way/push message exchange pattern (MEP) that involves the transfer of business
documents from a sending MSH to a receiving MSH.
●
Supports one-way/selective-pull message exchange pattern (MEP) that involves the receiving
MSH initiating a selective pull request to the sending MSH. The sending MSH responds by send­
ing the specific user message.
●
518
PUBLIC
Supports storing and verification of receipts.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Feature
Description
ELSTER
Enables SAP Cloud Integration to send a tax document to the ELSTER server.
Receiver adapter
ELSTER (acronym for the German term Elektronische Steuererklärung) is used in German fiscal man­
agement to process tax declarations exchanged over the Internet.
The adapter supports the following operations: Getting the version of the ERiC (ELSTER Rich Client)
library, validating a tax document, and sending a tax document.
Facebook
Receiver adapter
Enables SAP Cloud Integration to access and extract information from Facebook based on certain cri­
teria such as keywords or user data.
Using OAuth, the SAP BTP tenant can access resources on Facebook on behalf of a Facebook user.
FTP
Sender adapter
Enables SAP Cloud Integration to connect to a remote system using TCP (Transmission Control Proto­
col) to receive files from the system.
FTP stands for File Transfer Protocol.
The sender adapter allows you to define a schedule for polling data from the connected system.
FTP
Receiver adapter
Enables SAP Cloud Integration to connect to a remote system using TCP (Transmission Control Proto­
col) to write files to the system.
FTP stands for File Transfer Protocol.
HTTPS
Establishes an HTTPS connection between SAP Cloud Integration and a sender system.
Sender adapter
HTTP
Establishes an HTTP connection between SAP Cloud Integration and a receiver system.
Receiver adapter
Receiver adapter:
●
Supports HTTP 1.1 only (target system must support chunked transfer encoding and may not rely
●
Supports the following methods: DELETE, GET, HEAD, POST, PUT, TRACE
on the existence of the HTTP Content-Length header)
Method can also be determined dynamically by reading a value from a message header or prop­
erty during runtime.
IDoc
Sender adapter
Allows SAP Cloud Integration to exchange Intermediate Document (IDoc) messages with a sender
system that supports communication via SOAP Web services.
A size limit for the inbound message can be configured for the sender adapter.
IDoc
Receiver adapter
JDBC
Receiver adapter
Allows SAP Cloud Integration to exchange Intermediate Document (IDoc) messages with a receiver
system that supports communication via SOAP Web services.
Allows SAP Cloud Integration to connect to a JDBC (Java Database Connectivity) database and to ex­
ecute SQL commands on the database.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
519
Feature
Description
JMS
Enables asynchronous messaging by using message queues.
Sender adapter
The sender adapter consumes messages from a queue. The messages are processed concurrently.
To prevent situations where the JMS adapter tries again and again to process a failed (large) message,
you can store messages (where the processing stopped unexpectedly) in a dead-letter queue after
two retries.
Certain constraints apply with regard to the number and capacity of involved queues, as well as for the
headers and exchange properties defined in the integration flow before the message is saved to the
queue (as described in the product documentation).
JMS
Enables asynchronous messaging by using message queues.
Receiver adapter
The receiver adapter stores messages and schedules them for processing in a queue. The messages
are processed concurrently.
Kafka
Sender adapter
Kafka
Receiver adapter
Allows SAP Cloud Integration to connect to an external Kafka broker via Kafka protocol and to fetch
Kafka records (messages).
Allows SAP Cloud Integration to connect to an external Kafka broker via Kafka protocol and to send
Kafka records (messages).
Mail
Enables SAP Cloud Integration to read e-mails from an e-mail server.
Sender adapter
To authenticate against the e-mail server, you can send the user name and password in plain text or
encrypted (the latter only if the e-mail server supports this option).
You can protect inbound e-mails at the transport layer with IMAPS, POP3S, and STARTTLS.
The sender adapter allows you to define a schedule for polling data from the connected system.
For more information on possible threats when processing e-mail content with the Mail adapter, see
the product documentation.
Mail
Enables SAP Cloud Integration to send e-mails to an e-mail server.
Receiver adapter
To authenticate against the e-mail server, you can send the user name and password in plain text or
encrypted (the latter only if the e-mail server supports this option).
●
You can protect outbound e-mails at the transport layer with STARTTLS or SMTPS.
●
You can encrypt outbound e-mails using S/MIME (supported content encryption algorithms:
AES/CBC/PKCS5Padding, DESede/CBC/PKCS5Padding).
Microsoft
Connects SAP Cloud Integration to Microsoft Dynamics Customer Relationship Management (CRM).
Dynamics CRM
Receiver adapter
520
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Feature
Description
OData
Connects SAP Cloud Integration to systems using the Open Data (OData) protocol in either ATOM or
Sender adapter
JSON format (only synchronous communication is supported).
Supported versions: OData version 2.0
●
The adapter receives incoming requests in either ATOM or JSON format.
●
Supported operations: Create (POST), Delete (DELETE), Query (GET), Read (GET), Update (PUT)
Using the GET or POST method, the sender adapter can also invoke operations that are not cov­
ered by the standard CRUD (Create, Retrieve, Update, and Delete) methods (function import).
OData
Connects SAP Cloud Integration to systems using the Open Data (OData) protocol.
Receiver adapter
Supported versions:
●
OData version 2.0
Supported operations: Create (POST), Delete (DELETE), Merge (MERGE), Query (GET), Read
(GET), Update (PUT), Patch (PATCH)
●
OData version 4.0
●
The outgoing request payload must be in XML format.
Supported operations: Create (POST), Query (GET), Update (PUT)
ODC
Connects SAP Cloud Integration to SAP Gateway OData Channel (through transport protocol HTTPS).
Receiver adapter
Supported operations: Create (POST), Delete (DELETE), Merge (MERGE), Query (GET), Read (GET),
Update (PUT)
OpenConnectors
Receiver adapter
ProcessDirect
Sender adapter
Connects SAP Cloud Integration to more than 150 non-SAP Cloud applications that are supported by
SAP Open Connectors.
●
Uses APIs to fetch data from specific third-party applications.
●
Is designed to handle large volumes of incoming data.
●
Supports messages in both JSON and XML format, for request and response calls.
●
Allows you to define specific values for variables.
Connects an integration flow with another integration flow deployed on the same tenant.
An integration flow with a ProcessDirect sender adapter (as consumer) consumes data from another
integration flow.
N:1 cardinality of producer and consumer integration flows is supported.
ProcessDirect
Connects an integration flow with another integration flow deployed on the same tenant.
Receiver adapter
An integration flow with a ProcessDirect receiver adapter (as producer) sends data to another integra­
tion flow.
N:1 cardinality of producer and consumer integration flows is supported.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
521
Feature
Description
RFC
Connects SAP Cloud Integration to a remote receiver system using Remote Function Call (RFC).
Receiver adapter
RFC is the standard interface used for integrating on-premise ABAP systems to the systems hosted
on the cloud using SAP Cloud Connector.
The adapter supports SAP NetWeaver, version 7.31 or higher.
Salesforce
Connects SAP Cloud Integration to Salesforce.
Receiver adapter
ServiceNow
Connects SAP Cloud Integration to ServiceNow. Supports basic authentication and OAuth.
Receiver adapter
SFTP
Connects SAP Cloud Integration to a remote system using the SSH File Transfer protocol to read files
Sender adapter
from the system. SSH File Transfer protocol is also referred to as Secure File Transfer protocol (or
SFTP).
Supported versions:
SSH version 2 (as specified at http://tools.ietf.org/html/rfc4251
), SSH File Transfer Protocol
(SFTP) version 3 or higher
The sender adapter allows you to define a schedule for polling data from the connected system.
SFTP
Connects SAP Cloud Integration to a remote system using the SSH File Transfer protocol to write files
Receiver adapter
to the system. SSH File Transfer protocol is also referred to as Secure File Transfer protocol (or SFTP).
Supported versions:
SSH version 2 (as specified at http://tools.ietf.org/html/rfc4251
), SSH File Transfer Protocol
(SFTP) version 3 or higher
SOAP SOAP 1.x
Sender adapter
Exchanges messages with a sender system that supports Simple Object Access Protocol (SOAP) 1.1
or SOAP 1.2.
The message exchange patterns supported by the sender adapter are one-way messaging or requestreply.
The adapter supports Web services Security (WS-Security).
A size limit for the inbound message can be configured for the sender adapter.
SOAP SOAP 1.x
Receiver adapter
Exchanges messages with a receiver system that supports Simple Object Access Protocol (SOAP) 1.1
or SOAP 1.2.
The adapter supports Web services Security (WS-Security).
SOAP SAP RM
Sender adapter
Exchanges messages with a sender system based on the SOAP communication protocol and SAP Re­
liable Messaging (SAP RM) as the message protocol. SAP RM is a simplified communication protocol
for asynchronous Web service communication that does not require the use of Web Service Reliable
Messaging standards.
A size limit for the inbound message can be configured for the sender adapter.
522
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Feature
Description
SOAP SAP RM
Exchanges messages with a receiver system based on the SOAP communication protocol and SAP
Receiver adapter
Reliable Messaging (SAP RM) as the message protocol. SAP RM is a simplified communication proto­
col for asynchronous Web service communication that does not require the use of Web Service Relia­
ble Messaging standards.
SuccessFactors
Connects SAP Cloud Integration to a SuccessFactors sender system using the REST message proto­
REST
col.
Sender adapter
The adapter supports the following operations: GET
SuccessFactors
Connects SAP Cloud Integration to a SuccessFactors receiver system using the REST message proto­
REST
col.
Receiver adapter
The adapter supports the following operations: GET, POST
SuccessFactors
Connects SAP Cloud Integration to SOAP-based Web services of a SuccessFactors sender system
SOAP
(synchronous or asynchronous communication).
Sender adapter
The adapter supports the following operations: Query
SuccessFactors
Connects SAP Cloud Integration to SOAP-based Web services of a SuccessFactors receiver system
SOAP
(synchronous or asynchronous communication).
Receiver adapter
The adapter supports the following operations: Insert, Query, Update, Upsert
SuccessFactors
Connects SAP Cloud Integration to a SuccessFactors system using OData V2.
OData V2
Receiver adapter
Features of OData version 2.0 supported by the adapter:
●
Operations: GET (get single entity as an entry document), PUT (update existing entry with an en­
try document), POST (create new entry from an entry document), DELETE (Delete an entry from
an entry document), UPSERT (combination of Update OR Insert)
SuccessFactors
OData V4
Receiver adapter
●
Query options: $expand, $skip,and $top
●
Server-side pagination
●
Client-side pagination
●
Pagination enhancement: Data retrieved in chunks and sent to Cloud Integration
●
Deep insert: Creates a structure of related entities in one request
●
Authentication options: Basic authentication
●
Reference links: Link two entities using the <link> tag
Connects SAP Cloud Integration to a SuccessFactors system using OData V4.
Features of OData version 4.0 supported by the adapter:
●
Operations: GET, POST, PUT, DELETE
●
Navigation
●
Primitive types supported according to OData V4 specification
●
Structural types supported for create/update operations:
Edm.ComplexType, Edm:EnumType, Collection(Edm.PrimitiveType) and Collection(Edm.Com­
plexType)
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
523
Feature
Description
SugarCRM
Connects SAP Cloud Integration to SugarCRM.
Receiver adapter
Twitter
Enables SAP Cloud Integration to access Twitter and read or post tweets.
Receiver adapter
Using OAuth, the SAP BTP tenant can access resources on Twitter on behalf of a Twitter user.
Workday
Connects SAP Cloud Integration to Workday. Supports Workday SOAP API with basic authentication.
Receiver adapter
XI
Connects SAP Cloud Integration to a remote sender system that can process the XI message proto­
Sender adapter
XI
col.
Connects SAP Cloud Integration to a remote receiver system that can process the XI message proto­
Receiver adapter
col.
If you are quick configuring an integration flow, you can configure a few adapter parameters. Refer to the
relevant adapter configuration details for information on those parameters.
If you are developing an OData API, you can configure a SOAP, OData or HTTP adapter assigned to the receiver
channel and the OData adapter assigned to the sender channel.
 Note
Note regarding the timeout behavior for HTTP communication:
In HTTP communication spanning multiple components (for example, from a sender, through the load
balancer, to a Cloud Integration tenant, and from there to a receiver), the actual timeout period is
influenced by each of the timeout settings of the individual components that are interconnected between
sender and receiver (precisely spoken, of those components that can control the Transmission Control
Protocol (TCP) session). The component or device with the lowest number set for the idle session timeout
will determine the timer that will be used.
● When considering inbound communication (through HTTP-based sender adapters), note that in
particular the load balancer has an own timeout setting that has an influence on the overall timeout.
For the inbound side, SAP Cloud Integration supports no communication that waits for longer than 10
minutes.
● When considering outbound communication, note that in the involved HTTP-based receiver channel
you can configure a dedicated timeout. However, timeout setting has no influence on the TCP timeout
when the receiver or any additional component interconnected between the Cloud Integration tenant
and the receiver have a lower timeout. For example, consider that you have configured a receiver
channel timeout of 10 minutes and there is another component involved with a timeout of 5 minutes. In
case, nothing is transferred for a certain time, the connection will be closed after the 5th minute.
524
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Related Information
AMQP Adapter [page 525]
Ariba Adapter [page 533]
AS2 Adapter [page 538]
AS4 Sender Adapter [page 554]
AS4 Receiver Adapter [page 571]
AmazonWebServices Receiver Adapter [page 584]
ELSTER Receiver Adapter [page 589]
Facebook Receiver Adapter [page 592]
FTP Adapter [page 594]
HTTP Receiver Adapter [page 611]
HTTPS Sender Adapter [page 620]
IDoc Adapter [page 626]
JDBC Receiver Adapter [page 638]
JMS Adapter [page 642]
LDAP Receiver Adapter [page 661]
Mail Adapter [page 666]
Microsoft Dynamics CRM Receiver Adapter [page 683]
OData Adapter [page 687]
ODC Receiver Adapter [page 702]
Open Connectors Receiver Adapter [page 705]
ProcessDirect Adapter [page 709]
RFC Receiver Adapter [page 713]
Salesforce Receiver Adapter [page 717]
SFTP Adapter [page 727]
SOAP (SAP RM) Adapter [page 753]
SOAP (SOAP 1.x) Adapter [page 762]
SuccessFactors (OData V2) Adapter [page 788]
SuccessFactors (OData V4) Receiver Adapter [page 795]
SuccessFactors (REST) Adapter [page 796]
SuccessFactors (SOAP) Adapter [page 799]
SugarCRM Receiver Adapter [page 807]
Twitter Receiver Adapter [page 810]
XI Adapter [page 815]
4.8.6.1
AMQP Adapter
In many integration scenarios, messages or events have to be exchanged between applications or systems via
message brokers. With the Advanced Message Queuing Protocol (AMQP) adapter, SAP Cloud Integration can
be used as a provider or a consumer of such messages or events. Cloud Integration can connect to external
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
525
message brokers using the AMQP protocol, consume messages or events using the AMQP sender adapter, or
store messages or events in the message broker using the AMQP receiver adapter.
 Note
Note that customer-specific headers with prefix JMS aren’t allowed. These headers aren’t forwarded by the
message brokers.
 Note
Queues, topics, and messages can only be created and monitored by using tools provided by the message
broker provider. Those monitors aren’t integrated into Cloud Integration. In Cloud Integration, the
integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from
the message broker.
Related Information
Configure the AMQP Sender Adapter [page 526]
Configure the AMQP Receiver Adapter [page 530]
4.8.6.1.1
Configure the AMQP Sender Adapter
You use the Advanced Message Queuing Protocol (AMQP) sender adapter to consume messages in SAP Cloud
Integration from queues or topic subscriptions in an external message broker.
 Note
Queues, topics, and messages can only be monitored by using tools provided by the message broker
provider. Those monitors are not integrated into Cloud Integration. In Cloud Integration, the integration
flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message
broker.
 Note
To be able to connect to queues or topics, you have to create queues and/or topics in the message broker.
This needs to be done in the message broker, with the configuration tools provided by the message broker.
In some messaging systems, you need to configure a Lock Duration to make sure that the message is not
consumed more than once. This timeout must be longer than the expected processing time of the
message, otherwise this would lead to duplicate messages.
Once you have created a sender channel and selected the AMQP sender adapter (TCP or WebSocket), you can
configure the following attributes. See Overview of Integration Flow Editor [page 498].
The following values are displayed in the General tab after a channel has been established. If you want to
change the configurations, you need to configure a new channel.
526
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
General
Parameter
Description
Name/Adapter Type
AMQP
Transport Protocol
The protocol that the message broker supports:
Message Protocol
●
TCP
●
WebSocket
AMQP 1.0
Select the Connection tab and provide values in the fields as follows:
Connection
Parameter
Description
Host
Specify the hostname of the message broker.
Port
Specify the port of the message broker.
Proxy Type
The type of proxy that you’re using to connect to the target
system.
Select Internet if you’re connecting directly to the message
broker.
Select On-Premise if you’re connecting to an on-premise
message broker.
For more information, see .
Path (only if WebSocket is selected as the Transport Protocol
Specify the access path of the message broker.
in the General tab)
Connect with TLS
Select if TLS has to be used for the connection.
Location ID (only if On-Premise is selected for Proxy Type)
To connect to an SAP Cloud Connector instance associated
with your account, enter the location ID that you defined for
this instance in the destination configuration on the cloud
side.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
527
Parameter
Description
Authentication
Select the authentication method supported by the message
broker. SASL is selected by default.
●
SASL
●
OAuth2 Client Credentials
●
None

Note
OAuth2 Client Credentials are only available for the
WebSocket transport protocol.
Credential Name (only if SASL or OAuth2 Client Credentials
Specify the alias of the deployed credentials.
are selected for Authentication)
Select the Processing tab and provide values in the fields as follows.
Processing
Parameter
Description
Queue Name
Specify the name of the queue or topic subscription to consume from.
Number of Current Processes
Specify the number of processes used for parallel message processing. Note, that these
processes are started from each worker node.

Note
The maximum number of parallel processes cannot exceed 99. The default is set to
1.
528
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Max. Number of Prefechted
Messages
Enter the max. number of messages that may be prefechted by one worker. The allowed
value range is 1 to 100.
The prefetch value is the number of messages that the sender adapter fetches in ad­
vance from the broker, and then gradually processes. The prefetch reduces the commu­
nication overhead and ensures that when a message has been processed, another is al­
ready there and is ready for processing.
If the integration flows that are triggered by the AMQP sender adapter run for longer
than a few seconds, it makes sense to set a lower prefetch value. In particular, if the inte­
gration flow runs for more than a minute, you should consider setting the value to 1. You
can expect then a performance deterioration in the two-digit millisecond range, per mes­
sage. On the other hand, load balancing between several nodes works better even with
short backlogs.
If you need to process a large number of messages with the integration flow, and the
processing of the individual message only runs for a few milliseconds, it can be useful to
increase the prefetch value.

Note
If you increase the value, this can lead to lock timeouts and the load balancing be­
tween the nodes deteriorates. In return, you can expect performance gains in the
three-digit microsecond range, per message. For example, with a prefetch value of
100, 10000 messages process approximately a second or two faster.
Max. Number of Retries
Define the number of retries to be executed before a different delivery status is sent to
the message broker.

Note
The default is set to 0, meaning there are no retries executed and the delivery status
you defined for Delivery Status After Max. Retries is sent directly to the message
broker. The maximum number of retries can't exceed 99. If you do not specify the
number of retries, endless retries are executed. In this case, the delivery status you
defined for Delivery Status After Max. Retries will never be sent.
Delivery Status After Max.
Define one delivery status that is to be sent to the message broker after the maximum
Retries
number of retries. Choose between the following options:
●
REJECTED
●
MODIFIED_FAILED_UNDELIVERABLE

Note
See this general information on AMQP
See this blog
on delivery statuses and their meaning.
for a summary of the capabilities supported by the different brok­
ers.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
529
Related Information
AMQP.org
https://blogs.sap.com/2019/11/20/cloud-integration-connecting-to-external-messaging-systems-using-theamqp-adapter/
https://blogs.sap.com/2020/01/17/cloud-integration-how-to-connect-to-an-on-premise-amqp-server-viacloud-connector/
4.8.6.1.2
Configure the AMQP Receiver Adapter
You se the Advanced Message Queuing Protocol (AMQP) receiver adapter to send messages from Cloud
Integration to queues or topics in an external message broker.
 Note
To be able to connect to queues or topics, you have to create queues and/or topics in the message broker.
This needs to be done in the message broker with the configuration tools provided by the message broker.
 Note
Queues, topics, and messages can only be monitored using tools provided by the message broker. Those
monitors are not integrated into Cloud Integration. In SAP Cloud Integration, the integration flows using the
AMQP adapter are monitored and the messages send to or consumed from the message broker.
Once you have created a receiver channel and selected the AMQP receiver adapter (TCP or WebSocket), you
can configure the following attributes. See Overview of Integration Flow Editor [page 498].
The following values are displayed in the General tab after a channel has been established. To change the
configurations, you need to configure a new channel.
General
Parameter
Description
Name/Adapter Type
AMQP
Transport Protocol
The protocol that the message broker supports:
Message Protocol
●
TCP
●
WebSocket
AMQP 1.0
Select the Connection tab and provide values in the fields as follows.
530
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Connection
Parameter
Description
Host
Specify the hostname of the message broker.
Port
Specify the port of the message broker.
Proxy Type
The type of proxy that you’re using to connect to the target
system.
Select Internet if you’re connecting directly to the message
broker.
Select On-Premise if you’re connecting to an on-premise
message broker.
For more information, see .
Path (only if WebSocket is selected as the Transport Protocol
Specify the access path of the message broker.
in the General tab)
Connect with TLS
Select if TLS has to be used for the connection.
Location ID (only if On-Premise is selected for Proxy Type)
To connect to an SAP Cloud Connector instance associated
with your account, enter the location ID that you defined for
this instance in the destination configuration on the cloud
side.
Authentication
Select the authentication method the message broker sup­
ports. SASL is selected by default.
●
SASL
●
OAuth2 Client Credentials
●
None

Note
OAuth2 Client Credentials are only available for Web­
Socket.
Credential Name (only if SASL or OAuth2 Client Credentials
Specify the alias of the deployed credentials.
is selected for Authentication)
Select the Processing tab and provide values in the fields as follows.
Processing
Parameter
Destination Type
Description
Specify if messages should be sent to queues or topics in
the message broker.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
531
Parameter
Description
Destination Name
Enter the name of the topic or queue.
This value can be defined dynamically by using the following
expressions: ${header.queueabc} or $
{property.queueabc}.
Expiration Period (in s)
Specify the Time to Live (TTL) for the message. If nothing is
specified, the setting for the queue or topic subscription in
the message broker applies.
Delivery
Specify whether the message broker has to make sure that
the message is not lost, even in case of unexpected termina­
tions.
Message Type
●
Persistent
●
Non-Persistent
Define the message type to be used for sending the message
to the message broker. Choose between the following op­
tions:
●
Automatic (recommended): In this case, the adapter
sets the message type based on the message format
before the receiver channel.
●
Binary: In this case, the adapter converts the message
into a binary message before sending.
●
Text: In this case, the adapter converts the message into
a string before sending.

Note
Select Binary or Text only if your application receiving
the message requires a specific message type.
Also, if you select Binary or Text, you can define the
character encoding with the help of
CamelCharsetName (either header or property) in
the Content Modifier. In case you don't set the
CamelCharsetName header or property, the trans­
formation will use UTF-8 character encoding. See Con­
tent Modifier Basics [page 860] and About Headers
and Exchange Properties [page 1090].
Related Information
AMQP.org
532
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
https://blogs.sap.com/2019/11/20/cloud-integration-connecting-to-external-messaging-systems-using-theamqp-adapter/
https://blogs.sap.com/2020/01/17/cloud-integration-how-to-connect-to-an-on-premise-amqp-server-viacloud-connector/
4.8.6.2
Ariba Adapter
You use this procedure to configure a sender and receiver channel of an integration flow with the Ariba Network
adapter. These channels enable the SAP and non-SAP cloud applications to send and receive business-specific
documents in cXML format to and from the Ariba Network. Examples of business documents are purchase
orders and invoices.
 Restriction
An integration flow you deploy in SAP Cloud Integration deploys in multiple IFLMAP worker nodes. Polling is
triggered from only one of the worker nodes. The message monitoring currently displays the process status
from the worker nodes where the Scheduler is not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the schedule was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
Related Information
Configure the Ariba Sender Adapter [page 533]
Configure the Ariba Receiver Adapter [page 536]
4.8.6.2.1
Configure the Ariba Sender Adapter
The Ariba sender adapter connects SAP Cloud Integration to the Ariba Network. Using this adapter, SAP and
non-SAP cloud applications can receive business-specific documents in commerce eXtensible Markup
Language (cXML) format from the Ariba network. The sender adapter allows you to define a schedule for
polling data from Ariba.
Once you have created a sender channel and selected the Ariba sender adapter, you can configure the
following attributes. See Overview of Integration Flow Editor [page 498].
Select the General tab and provide values in the fields as follows.
General
Parameter
Description
Name
Enter the name of the channel.
Select the Processing tab and provide values in the fields as follows.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
533
Processing
Parameter
Description
Ariba Network ID
Enter the ID associated with the Ariba Network. The default
value is set to AN01000000001.
cXML version
Default value provided by SAP is 1.2.025. If you are entering
the version, it must be above 1.2.018.
User Agent
Enter the user agent details. The convention is a textual
string representing the client system conducting the cXML
conversation. It must consist of the software company name
and the product name.
Language
Language used for constructing the cXML conversation. The
only language supported is EN.
Select the Connection tab and provide values in the fields as follows.
Connection
Parameter
Description
Ariba Network URL
Specify the URL to which the cXML requests are posted, or
from where the cXMLs are polled.
Connection Mode
Select one of the options based on the description given be­
low:
●
Production: If you select this option, the Ariba Network
processes the messages. This connection mode is set
as the default deployment mode.
●
Test: If you select this option, the Ariba Network will not
process the messages, and treats the messages as test
data.
Account Type
Select one of the options based on the description given be­
low:
●
Buyer: Select this option, if you hold a buyer account on
the Ariba Network.
●
Supplier: Select this option, if you hold a supplier ac­
count on the Ariba Network.
Request Type
Select one of the options based on the request types of
buyer/supplier that you want to poll.
Use Quote Message to poll the quote request for Buyer ac­
count type.
Maximum Messages
Enter the number of messages to be polled from the Ariba
Network for the above-selected Request Type. The maxi­
mum allowed value is 200.
534
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
System ID
Provide the System ID for receiving the requests from a spe­
cific ERP system belonging to a supplier. If the system ID is
not provided, then the adapter fetches all requests from ev­
ery ERP systems belonging to that specific supplier.

Note
If the buyers’ account is enabled with multi-ERP. It is
mandatory to provide the system ID for multi-ERP sys­
tems belonging to the buyer.
Authentication Domain
Select one of the options based on the description given be­
low:
●
Network ID: A unique alphanumeric value assigned to
every organization registered on Ariba SN; for example,
AN01000000001.
●
Network User ID: A login name of an Ariba SN user.
These names typically have the format of an e-mail ad­
dress; for example, xyz@abc.com.
Authentication
Select one of the options based on the description given be­
low:
●
Shared Key: If you have set the shared key in your Ariba
account.
●
Client Certificate: If you have configured your certificate
from a trusted certificate authority in the Ariba account.
Credential Name
Enter a name. This name is treated as an alias to the secure
store where the user credentials are deployed. This value
should be set according to the Authentication selected
above. If you have selected Client Certificate, then enter the
alias details in the Private Key Alias field.
This alias is used to identify the keystore credentials de­
ployed on the SAP Cloud Integration account.
Select the Scheduler tab and provide values in the fields as follows.
Scheduler
Parameter
Description
Schedule on Day
Specify a date and time or interval for executing the data
polling.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
535
Parameter
Description
Schedule to Recur
Specify a recurring pattern for consistently running the poll­
ing process. It can be scheduled on daily, weekly, or monthly
basis.
●
Daily: Run message polling every day to fetch data from
the Ariba system.
●
Weekly: Run the message polling every week on speci­
fied days of the week to fetch data from the Ariba sys­
tem.
●
Monthly: Execute the message polling every month on
the specified date to fetch data from the Ariba server.

Note
If the specified date is not applicable in a particular
month, the data polling is not executed in that
month. For example, if the 30th day is selected,
polling will not be executed in the month of Febru­
ary, as 30th is not a valid day for February.
On Date (only if Schedule on Day is selected)
Specific date on which the data polling process has to be ini­
tiated to fetch data from the Ariba system.
On Time
The time at which the data polling cycle has to be initiated.
For example, if you want the data polling to be started at 4:10
p.m., enter 16:10. Note that the time must be entered in 24hour format.
Every xx minutes between HH hours and HH hours
The connector fetches data from the Ariba system every ‘xx’
minutes between HH hours and HH hours.

Note
If you want the polling to run for the entire day, enter 1
and 59.
Time Zone
4.8.6.2.2
Select the time zone you want to use as reference for sched­
uling the data polling cycle.
Configure the Ariba Receiver Adapter
The Ariva receiver adapter connects SAP Cloud Integration to the Ariba network. Using this adapter, SAP and
non-SAP cloud applications can send business-specific documents in commerce eXtensible Markup Language
(cXML) format to the Ariba network.
Once you have created a receiver channel and selected the Ariba receiver adapter, you can configure the
following attributes. See Overview of Integration Flow Editor [page 498].
Select the General tab and provide values in the fields as follows.
536
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
General
Parameter
Description
Name
Enter the name of the channel.
Select the Processing tab and provide values in the fields as follows.
Processing
Parameter
Description
Ariba Network ID
Enter the ID associated with the Ariba Network. The default
value is set to AN01000000001.
cXML Version
Default value provided by SAP is 1.2.025. If you are entering
the version, it must be above 1.2.018.
User Agent
Enter the user agent details. The convention is a textual
string representing the client system conducting the cXML
conversation. It must consist of the software company name
and the product name.
Language
Language used for constructing the cXML conversation. The
only language supported is EN.
Select the Connection tab and provide values in the fields as follows.
Connection
Parameter
Description
Ariba Network URL
Specify the URL to which the cXML requests are posted, or
from where the cXMLs are polled.
Connection Mode
Select one of the options based on the description given be­
low:
●
Production: If you select this option, the Ariba Network
processes the messages. This connection mode is set
as the default deployment mode.
●
Test: If you select this option, the Ariba Network will not
process the messages, and treats the messages as test
data.
Account Type
Select one of the options based on the description given be­
low:
●
Buyer: Select this option, if you hold a buyer account on
●
Supplier: Select this option, if you hold a supplier ac­
the Ariba Network.
count on the Ariba Network.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
537
Parameter
Description
Authentication Domain
Select one of the options based on the description given be­
low:
●
Network ID: A unique alphanumeric value assigned to
every organization registered on Ariba SN; for example,
AN01000000001.
●
Network User ID: A login name of an Ariba SN user.
These names typically have the format of an e-mail ad­
dress; for example, xyz@abc.com.
Authentication
Select one of the options based on the description given be­
low:
●
Shared Key: If you have set the shared key in your Ariba
account.
●
Client Certificate: If you have configured your certificate
from a trusted certificate authority in the Ariba account.
Credential Name
Enter a name. This name is treated as an alias to the secure
store where the user credentials are deployed. This value
should be set according to the Authentication selected
above. If you have selected Client Certificate, then enter the
alias details in the Private Key Alias field.
This alias is used to identify the keystore credentials de­
ployed on the SAP Cloud Integration account.
4.8.6.3
AS2 Adapter
You use the AS2 adapter to exchange business documents with your partner using the AS2 protocol. You can
use this adapter to encrypt/decrypt, compress/decompress, and sign/verify the documents.
 Note
If you (the tenant admin) want to provision the message broker to use AS2 adapter scenarios, you must
have the Enterprise Edition license. You have to set up a cluster to use the message broker. For more
information, see .
 Note
There are certain limitations with regard to the usage of JMS resources.
More information: JMS Resource Limits and Optimizing their Usage [page 649]
 Caution
Do not use this adapter type together with Data Store Operations steps, Aggregator steps, or global
variables, as this can cause issues related to transactional behavior.
538
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
 Restriction
If you deploy an integration flow in SAP Cloud Integration, it deploys in multiple IFLMAP worker nodes.
Polling is triggered from only one of these nodes. The message monitor displays the process status for the
worker nodes in which the Scheduler has not started. This results in the message monitor displaying
messages with less than a few milliseconds, where the scheduler was not triggered. These entries contain
firenow=true in the log. You can ignore these entries.
 Note
When you deploy an integration flow with AS2/ AS2 MDN adapter, you can see the endpoint information of
this integration flow in Manage Integration Content section of the operations view.
Related Information
Configure the AS2 Sender Adapter [page 539]
Configure the AS2 Receiver Adapter [page 547]
4.8.6.3.1
Configure the AS2 Sender Adapter
 Remember
This component or some of its features might not be available in the Cloud Foundry environment. For more
information on the limitations, see SAP Note 2752867 .
 Note
In the following cases certain features might not be available for your current integration flow:
● A feature for a particular adapter or step was released after you created the corresponding shape in
your integration flow.
● You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
 Note
● If you are configuring the sender channel to receive AS2 messages, select the AS2 message protocol.
● If you are configuring the sender channel to receive asynchronous AS2 MDN, select the AS2 MDN
message protocol.
● If you want to call the AS2 sender channel, then use the pattern http://<host>:<port>/as2/as2;
to call the AS2 MDN sender channel, use http://<host>:<port>/as2/mdn .
● The JMS queue name contains the name of the AS2 sender channel. provide this name in a to make
troubleshooting easier. To analyze a troubleshooting scenario better, we recommend to mention the
name of the AS2 sender channel.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
539
● The expiration period for stored messages is 90 days, after which the messages are deleted.
● The retention threshold for alerting is two days, by which the messages have to be fetched before an
alert is raised.
Once you have created a sender channel and selected the AS2 adapter, you can configure the following
attributes. See Overview of Integration Flow Editor [page 498].
The General tab shows general information such as the adapter type, its direction (sender or receiver), the
transport protocol, and the message protocol.
Select the Processingtab and provide values in the fields as follows.
Processing
Parameter
Description
Message ID Left Part
Specify the left side of the AS2 message ID. Regular expres­
sion or '.*' is allowed.
Message ID Right Part
Specify the right side of the AS2 message ID. Regular ex­
pression or '.*' is allowed.
Partner AS2 ID
Specify your partner's AS2 ID. Regular expression or '.*' is al­
lowed.
Own AS2 ID
Specify your own AS2 ID. Regular expression or '.*' is al­
lowed.
Message Subject
Specify the AS2 message subject. Regular expression or '.*'
is allowed.
Number of Concurrent Processes
Define how many processes can run in parallel for each
worker node. The value depends on the number of worker
nodes, the number of queues on the tenant, and the incom­
ing load, and must be less than 99.
540
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Authorization
Select User Role if you want to authorize a sender based on
the roles defined on the tenant for the user associated with
the inbound request. You can use this option together with
the following authentication options:
●
Basic authentication (using the credentials of the user)
The authorizations for the user are checked based on
user-to-role assignments defined on the tenant.
●
Client-certificate authentication and certificate-to-user
mapping
The authorizations for the user derived from the certificate-to-user mapping are checked based on user-torole assignments defined on the tenant.
Select Client Certificate if you want to authorize a sender
based on a certificate. If you select this option, you have to
add and enter the Subject DN (information used to authorize
the sender) and Issuer DN (information about the Certificate
Authority that issues the certificate). You can use this option
together with the following authentication option: Client-cer­
tificate authentication (without certificate-to-user mapping).
For more information, see .
For more information, see .
AS2 Sender Adapter with Role Based Authentication only,
support Certificate to User Mapping and hence call from
AS2 partner should be sent using Client Certificate Authenti­
cation.
User Role
(only if you select User Role for Authorization).
The user role that you are using for inbound authorization.
Choose Select to get a list of all the available user roles for
your tenant and select the one that you want to use.
The default value is ESBMessaging.send. This role au­
thorizes a sender system to process messages on a tenant.

Caution
The role name must not contain any umlaut characters
(for example, ä).
For more information on user roles, see .
Client Certificate Authorization
(only if you select Client Certificate for Authorization).
The client certificates that you are using for inbound authori­
zation. Choose Add to add a new row and then choose Select
to select a certificate stored locally on your computer. You
can also delete certificates from the list.
Message Settings
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
541
Parameter
Description
Mandatory File Name
Select to check the incoming AS2 message contains a filename. If not found, then an negative MDN is sent as per the
request of the AS2 sender.
Duplicate Message ID
Select to ensure that the AS2 message with the same mes­
sage ID is not processed more than once.
Define the Persist Duration instant in minutes to store mes­
sages for duplicate check. You can also select the appropri­
ate MDN Response type when you encounter a duplicate
message ID.
Duplicate File Name
Select to ensure that the AS2 message with the same filename is not processed more than once.
Define the Persist Duration instant in minutes to store mes­
sages for duplicate check. You can also select the appropri­
ate MDN Response type when you encounter a duplicate filename.
 Note
● Ensure that the combination of Message ID Left Part, Message ID Right Part, Partner AS2 ID, Own AS2
ID, and Message Subject parameters is unique across all AS2 sender channels.
● If you use regular expressions for the above-mentioned AS2 sender parameters, then you must ensure
that the regular expression configuration is unique across the endpoints.
● The runtime identifies the relevant channel and integration flow for the incoming AS2 sender message
based on the above-mentioned parameters.
Select the Securitytab and provide values in the fields as follows.
Security
Parameter
Description
Decrypt Message
Select this checkbox to ensure that the message is de­
crypted.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Inbound_Decrypt_Message.
The valid values are:
●
true
●
false

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
542
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Private Key Alias
Specify the private key alias to decrypt the AS2 message.

(only if you select Decrypt Message).
Note
The private key alias for Cloud Integration is,
sap_cloudintegrationcertificate
Verify Signature
Select this checkbox to ensure that the signature is verified
using one of the following options:
●
Not Required
●
Trusted Certificate: Used to verify the Signature.
●
Trusted Root Certificate: The trust chain begins with the
use of the public alias as an intermediate certificate to
verify the inbound certificate. After successful verification the inbound certificate is used to verify the Signa­
ture.

Note
If Trusted Root Certificate is selected mention the
public key alias immediate root certificate of the in­
coming message.
When verification is successful by using trusted root
certificate the following exchange properties are gener­
ated:
○
SAP_AS2_Inbound_Certificate
○
SAP_AS2_Inbound_Certificate_DN
You can also set the value of this attribute dynamically using
the header SAP_AS2_Inbound_Verify_Signature.

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Public Key Alias
Specify the public key alias to verify the signature of the AS2
message.
(only if you select Verify Signature).
Select the MDNtab and provide values in the fields as follows.
MDN
Parameter
Description
Private Key Alias for Signature
Specify the private key alias to sign the MDN on partner's re­
quest.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
543
Parameter
Description
Signature Encoding
Select the MDN signature encoding type.
Proxy Type
Select the type of proxy you want to use to connect asyn­
chronously to an AS2 sender system.
●
●
Select Internet if you are connecting to a cloud system.
Select On-Premise if you are connecting to an on-prem­
ise system.

Note
If you select the On-Premise option, the following
restrictions apply to other parameter values:
○
Do not use an HTTPS address for Location ID,
as it leads to errors when performing consis­
tency checks or during deployment.
○
Do not use Certificate-Based Authentication as
the Authentication Type, as it leads to errors
when performing consistency checks or during
deployment

Note
If you select the On-Premise option and use the
SAP Cloud Connector to connect to your on-prem­
ise system, the Location ID field of the adapter re­
fers a virtual address which has to be configured in
the SAP Cloud Connector settings.
Authentication
Select the authentication type for asynchronous MDN.
You can select one of the following authentication methods:
●
None
●
Basic Authentication
The tenant authenticates itself against the receiver us­
ing user credentials (user name and password).
It is a prerequisite that user credentials are specified in
a Basic Authentication artifact and deployed on the re­
lated tenant.
Timeout (in ms)
Specify how long in milliseconds the client has to accept the
asynchronous MDN. Enter the value '0' if you want the client
to wait indefinitely.
Select the Delivery Assurancetab and provide values in the fields as follows.
544
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Delivery Assurance
Parameter
Quality of Service
Description
Defines how the message from the AS2 sending partner is
processed by the tenant.
Based on your requirements you can select one of the fol­
lowing options:
●
Exactly Once
The AS2 message is temporarily stored in the JMS
queue and an MDN is transmitted to the sending part­
ner. If an error occurs during processing, the message is
retried from the JMS queue.
●
Best Effort
This option allows you to transmit customized MDN ac­
knowledgments to the AS2 sending partner. The AS2
messages are processed immediately and the MDN is
only transmitted to the sending partner if the process­
ing is successful.
By introducing a Script into the integration flow, you
can customize the original MDN found in the exchange
property SAP_AS2_MDN. For more information, see
Define Script [page 925].
Retry Interval (in min)
Define how many minutes to wait before retrying message
delivery.
Exponential Backoff
Select this checkbox to double the retry interval after each
unsuccessful retry.
Maximum Retry Interval (in min)
Specify the maximum amount of time to wait before retrying
message delivery.
Dead-Letter Queue
Select this checkbox to store those messages that cannot be
successfully processed after the second retry during a ten­
ant crash. This helps you to analyse and resolve the cause of
failure.
Encrypt Message During Persistence
Select this option to encrypt the message in the data store.
Select the Conditionstab and provide values in the fields as follows.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
545
Conditions
Parameter
Description
The parameters in Maximum Message Size allows you to set a maximum size limit for processing inbound messages. All
inbound messages that exceeds the configured limit are rejected from further processing and the sender receives an error
message.

Note
The minimum allowable size limit is 1MB.
Body Size (in MB)
Define the allowable size limit for processing the message
body.
Attachments Size (in MB)
Define the allowable size limit for processing the attach­
ment.
● The AS2 sender passes the following headers to the integration flow for message processing:
○ AS2PartnerID
○ AS2OwnID
○ AS2MessageSubject
○ AS2Filename
○ AS2MessageID
○ AS2PartnerEmail
○ AS2MessageContentType
● The AS2 MDN sender passes the following headers to the integration flow for message processing:
○ AS2PartnerID
○ AS2OwnID
○ AS2MessageID
○ AS2MessageContentType
○ AS2OriginalMessageID
● Use the following attributes to reference the values that are associated with MPL:
○ AS2 MDN sender adapter attributes:
○ AdapterId
○ adapterMessageId
○ SAP_MplCorrelationId
○ MDNStatus
○ Message Id
○ ErrorDescription
For example:
{AdapterId=AS2 MDN Sender,
adapterMessageId=<qwesdt_123sourcewe_AS2-1479283341389-0@endionAS2_CPIAS2>,
SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,
MDNStatus=error,
Message Id=<c31b53255-d799-4219-9f1c-5e63a044e4@CPIAS2>,
ErrorDescription=insufficient-message-security}
○ AS2 sender adapter attributes:
546
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
○ AdapterId
○ adapterMessageId
○ ReceiverAS2Name
○ MessageDirection
○ MDNType
○ MDNStatus
○ MPL ID
○ MDNRequested
○ SenderAS2Name
○ AS2MessageID
For example:
{AdapterId=AS2 Sender,
adapterMessageId=<define _AS2-147665710-6@endionAS2_CPIAS2>,
ReceiverAS2Name=HCIAS2,
MessageDirection=Inbound,
MDNType=Sending,
MDNStatus=Success,
MPL ID=AFgsPspcD-eYhvHFdfOZYKydBmzw,
MDNRequested=Synchronous,
SenderAS2Name=endionAS2,
AS2MessageID=<define _AS2-147665710-6@endionAS2_HCIAS2>}
4.8.6.3.2
Configure the AS2 Receiver Adapter
 Remember
This component or some of its features might not be available in the Cloud Foundry environment. For more
information on the limitations, see SAP Note 2752867 .
 Note
In the following cases certain features might not be available for your current integration flow:
● A feature for a particular adapter or step was released after you created the corresponding shape in
your integration flow.
● You are using a product profile other than the one expected.
More information: Updating your Existing Integration Flow [page 410]
Once you have created a receiver channel and selected the AS2 receiver adapter, you can configure the
following attributes. See Overview of Integration Flow Editor [page 498].
The General tab shows general information such as the adapter type, its direction (sender or receiver), the
transport protocol, and the message protocol.
Select the Connection tab and provide the recipient information.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
547
Connection
Parameter
Description
Receipient URL
Enter the URL of the receiver system.
URL Parameters Pattern
Define query parameters that are attached to the end of re­
cipient URL.
Proxy Type
Select the type of proxy you want to use for connecting to re­
ceiver system.
Location ID(only if On-Premise is selected for Proxy Type.)
●
Internet
●
On-Premise
Enter the location ID to identify a specific Cloud Connector
that is unique to your subaccount.
Authentication Type
Select one of the following authentication methods:
●
None
●
Basic authentication
●
Client Certificate (only if Internet is selected for Proxy
Type.)
Private Key Alias(only if you select Client Certificate.)
Enter the private key alias that enables the system to fetch
the private key from keystore for authentication.
Credential Name(only if you select Basic authentication.)
Provide the name of the User Credentials artifact that con­
tains the credentials for basic authentication.
Timeout (in ms)
Specify the maximum time (in milliseconds) the adapter
waits for receiving a response before terminating the con­
nection.
Select the Processing tab and provide values in the fields as follows.
Processing
Parameter
Description
File Name
Specify the AS2 file name. If no file name is specified, the de­
fault file name <Own AS2 ID>_File is used. Simple ex­
pressions, ${header.<header-name>}, or $
{property.<property-name>} are allowed.
Message ID Left Part
Specify the left side of the AS2 message ID. Regular expres­
sion or '.*' is allowed.
Message ID Right Part
Specify the right side of the AS2 message ID. Regular ex­
pression or '.*' is allowed.
548
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Own AS2 ID
Specify your own AS2 ID. Regular expression or '.*' is al­
lowed.
Partner AS2 ID
Specify your partner's AS2 ID. Regular expression or '.*' is al­
lowed.
Message Subject
Specify the AS2 message subject. Regular expression or '.*'
is allowed.
Own E-mail Address
Specify your own e-mail ID. Simple expressions, $
{header.<header-name>}, or $
{property.<property-name>} are allowed.
Content Type
Specify the content type of the outgoing message. For exam­
ple: application/edi-x12. Simple expressions, $
{header.<header-name>}, or $
{property.<property-name>} are allowed.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Content_Type.

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Custom Headers Pattern
Specify a regular expression to pick message headers and
add them as AS2 custom headers.
For example, if you want to pick all EDI headers starting with
the name EDI, specify the expression as EDI.*.
Content Transfer Encoding
Specify the AS2 message encoding type.
Select the Security tab and provide values in the fields as follows.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
549
Security
Parameter
Description
Compress Message
Select this checkbox to ensure that the outgoing AS2 mes­
sage is compressed.
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Compress_Message.
The valid values are:
●
true
●
false

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Sign Message
Select this checkbox to ensure that the outgoing AS2 mes­
sage is signed.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Sign_Message.
The valid values are:
●
true
●
false

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Algorithm
Select the AS2 message signing algorithm.
(only if you select Sign Message.)
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Signing_Algorithm.
The valid values are:
●
SHA1
●
SHA224
●
SHA256
●
SHA384
●
SHA512
●
MD5

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
550
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Private Key Alias
Specify the private key alias to sign the AS2 message. Sim­
(only if you select Sign Message.)
ple expressions, ${header.<header-name>}, or $
{property.<property-name>} are allowed.
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Signing_Private_Key_Ali
as.
Encrypt Message
Select this checkbox to ensure that the message is en­
crypted.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Encrypt_Message.
The valid values are:
●
true
●
false

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Algorithm
Select the AS2 message encryption algorithm.
(only if you select Encrypt Message).
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Encryption_Algorithm.
The valid values are:
●
3DES
●
AES128
●
AES192
●
AES256
●
RC2

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Public Key Alias
(only if you select Encrypt Message).
Specify the public key alias to encrypt the AS2 message.
Simple expressions, ${header.<header-name>}, or $
{property.<property-name>} are allowed. The
header or property can contain a public key alias or X509
certificate.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
551
Parameter
Description
Key Length
Specify the public key length.
(only if you select Encrypt Message and select RC2 in the
Algorithm field).
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Encryption_Key_Length.

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Select the MDN tab and provide values in the fields as follows.
MDN
Parameter
Description
Type
Enable this option to request the partner to send a Message
Integrity Check (MIC) in AS2 MDN.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Mdn_Type.

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
Target URL
(only if you select the Asynchronous MDN type).
Specify the URL where the AS2 MDN will be received from
the partner. Simple expressions, ${header.<header-name>},
or ${property.<property-name>} are allowed.
Request Signing
Enable this option to request the partner to sign AS2 MDN.
(only if you select the Asynchronous or Synchronous MDN
You can also set the value of this attribute dynamically using
type.)
the header
SAP_AS2_Outbound_Mdn_Request_Signing.
Algorithm
Select the appropriate algorithm.
(only if you enable the Request Signing option.)
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Mdn_Signing_Algorithm.

Note
If the header value is set, it takes precedence over the
actual value configured in the channel.
552
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Verify Signature
You can enable this option to verify the signature of AS2
(only if you select the Synchronous MDN type.)
MDN.
You can also set the value of this attribute dynamically using
the header
SAP_AS2_Outbound_Mdn_Verify_Signature
Public Key Alias
(only if you select Verify Signature.)
Specify the public key alias to verify the MDN signature. Sim­
ple expressions, ${header.<header-name>}, or ${prop­
erty.<property-name>} are allowed. The header or property
can contain a public key alias or X509 certificate.
Request MIC
Enable this option if you want to request an integrity check.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Mdn_Request_Mic.
Verify MIC
Enable this option to verify the MIC of AS2 MDN.
(only you select the synchronous MDN type.)
You can also enable this option if you enable the Request
MIC option and want to verify the integrity of the message.
You can also set the value of this attribute dynamically using
the header SAP_AS2_Outbound_Mdn_Verify_Mic.
 Note
● You can configure the AS2 receiver channel for the Request-Reply integration flow element. If you
request synchronous MDN, the adapter sets the received MDN response as the message payload.
● If you request synchronous MDN in the receiver channel, you may receive positive or negative MDN. In
both cases, the status of the message on the Message Monitoring tab is COMPLETED. You can process
the MDN message on your own and take the required action for positive or negative MDN, post AS2 call
for synchronous MDN.
● In an MDN message, positive MDN is represented as follows:
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<MDNDeliveryReport>
................
<MDNDispositionNotification>
...............
<Disposition>
<DispositionMode ActionMode="automatic-action" SendingMode="MDN-sentautomatically"/>
<DispositionType>processed</DispositionType>
</Disposition>
<ReceivedContentMIC mic="9I2W0DSFpQOVRH75/1sLGpWAgtc=" alg="sha1"></
ReceivedContentMIC>
</MDNDispositionNotification>
</MDNDeliveryReport>
● In an MDN message, negative MDN is represented as follows:
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
553
 Sample Code
<?xml version="1.0" encoding="UTF-8"?>
<MDNDeliveryReport>
................
<MDNDispositionNotification>
................
<Disposition>
<DispositionType>processed</DispositionType>
<DispositionModifier>error</DispositionModifier></Disposition>
<Error>insufficient-message-security</Error>
</Disposition>
<ReceivedContentMIC mic="9I2W0DSFpQOVRH75/1sLGpWAgtc=" alg="sha1"></
ReceivedContentMIC>
</MDNDispositionNotification>
</MDNDeliveryReport>
● If MDN signature validation fails or an incorrect message integrity check (MIC) is received, the status of
the message is FAILED.
4.8.6.4
AS4 Sender Adapter
You use AS4 message exchange protocol to securely process incoming business documents using Web
services.
The SAP Applicability Statement4 (AS4) sender adapter is based on the ebMS specification that supports the
ebMS handler conformance profile. For more information, see AS4 Profile of ebMS 3.0 Version 1.0 .
Let's look at how a message is processed: the incoming AS4 message consists of a SOAP body and the
business payload as an attachment. During processing, the payload is extracted from the attachment and
allocated to the related Camel routes. To get a more detailed understanding of the functionality of the AS4
adapter,explained with a scenario, read the blog on Cloud Integration – Working with AS4 adapter .
 Note
It is expected that the incoming AS4 message has an empty SOAP body, otherwise processing-related
errors can occur.
Related Information
Configuring Sender Channel with ebMS3 Pull [page 555]
Configuring Sender Channel with ebMS3 Push [page 559]
Configuring Sender Channel with ebMS3 Receipt [page 566]
554
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.8.6.4.1
Configuring Sender Channel with ebMS3 Pull
Configure the sender channel with the AS4 adapter with ebMS3 Pull as a sending Message Service Handler
(MSH).
Context
You use AS4 message exchange protocol to securely process incoming business documents using Web
services.
Connection
Parameter
Description
Address
Specify the relative endpoint of the receiving MSH. For ex­
ample, /orders.

Note
When you specify the endpoint address /path, a
sender can also call the integration flow through the
endpoint address /path/<any string> (for exam­
ple, /path/test/).
Be aware of the following related implication: When you
in addition deploy an integration flow with endpoint ad­
dress /path/test/, a sender using the /path/
test endpoint address will now call the newly deployed
integration flow with the endpoint address /path/
test/. When you now undeploy the integration flow
with endpoint address /path/test, the sender again
calls the integration flow with endpoint address /path
(original behavior). Therefore, be careful reusing paths
of services. It is better using completely separated end­
points for services.
Agreement
Define the message exchange pattern agreed between the
MSHs. For example, urn:fdc:peppol.eu:
2017:agreements:tia:ap_provider.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
555
Parameter
Description
Authorization
Select User Role if you want to authorize a user to send mes­
sage based on the ESBMessaging.send.
Select Client Certificate if you want to authorize a user to
send message based on a certificate. If you select this op­
tion, you have to add and enter the Subject DN (information
used to authorize the sender) and Issuer DN (information
about the Certificate Authority who issues the certificate).
Select the Processing tab and provide values in the fields as described.
Processing
Parameter
Initiator Party: Party ID
Description
Specify the ID of the initiating partner. For example,
APP_10000000100.
Initiator Party: Party Type
Specify a party type to identify the initiating partner. For ex­
ample, urn:fdc:peppol.eu:
2017:identifiers:ap
Initiator Party: Role
Specify the role of the initiating partner. For example,
http://docs.oasis-open.org/ebxml-msg/
ebms/v3.0/ns/core/200704/initiator
Responder Party: Party ID
Specify the ID of the responding partner. For example,
APP_10000000200.
Responder Party: Party Type
Specify a party type to identify the responding partner. For
example, urn:fdc:peppol.eu:
2017:identifiers:ap
Responder Party: Role
Specify the role of the responding partner. For example,
p://docs.oasis-open.org/ebxml-msg/ebms/
v3.0/ns/core/200704/responder
Service
Specify the process identifier of the business document. For
example,
urn:www.cenbii.eu:profile:bii01:ver2.0.
Service Type
Specify the process identifier schema of the business docu­
ment. For example, cenbii-procid-ublui.
Action
Specify the document type identifier of the business docu­
ment with the following format:
urn:www.cenbii.eu:profile:bii01:ver2.0 .
556
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Attachment Name
Define the name for the payload attached to the AS4 mes­
sage.
Additional Message Properties
Define a key and value to modify an existing message pa­
rameter in the property sheet. For example, if you want to
modify the MSH details, you must define a key and its value.
Payload Properties
Define a key and value to modify the payload attached to
AS4 message.
Select the Security tab and provide values in the fields as follows.
Security
Parameter
Description
Verify Signature
Select the checkbox to ensure that the signature is verified
using one of the following options:
●
Not Required
●
Trusted Certificate: Used to verify the signature.
●
Trusted Root Certificate: The trust chain begins with the
use of the public alias as an intermediate certificate to
verify the inbound certificate. After successful verification, the inbound certificate is used to verify the signa­
ture.

Note
If Trusted Root Certificate is selected, mention the
immediate root certificate of the public key alias of
the incoming message.
Public Key Alias
Define the public key alias or aliases to verify the signature of
the AS4 message.
(only if you select Trusted Certificate.)
Public Key Aliases
(only if you select Trusted Root Certificate.)
Select the Response tab and provide values in the fields as follows.
Response
Parameter
Description
Compress Message
Compresses the AS4 message.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
557
Parameter
Description
WS-Security Type
Specify either of the folllowing WS-Security type to protect
message integrity and confidentiality:
●
None
●
Sign and Encrypt Message: Signs and encrypts the pay­
load of a message (to be decrypted by the receiver).
●
Sign Message: Signs the payload of a message (to be
verified by the receiver).

Note
For exchange of message specific communication rules
apply as been agreed between the administrators of the
Web service client and Web service provider (for exam­
ple, if certificates are to be sent with the message).
Private Key Alias for Signing
Specify the private key alias to sign the AS4 message.
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
Public Key Alias for Encryption
Specify the public key alias to sign the AS4 message.
(only if you select Sign and Encrypt Message.)
Encryption Algorithm
Select the algorithm you want to use to encrypt the payload.
(only if you select Sign and Encrypt Message.)
Key Encryption Algorithm
(only if you select Sign and Encrypt Message.)
Security Token Type
Select the key encryption algorithm and the system uses the
related mask generation functions (MGFs) to encrypt the
payload.
Select the type of security token reference to encode the
payload.
Select the Conditions tab and provide values in the fields as follows.
Conditions
Parameter
Description
The parameters in Maximum Message Size allow you to set a maximum size limit for processing inbound messages. Any
inbound message that exceeds the configured limit is rejected from further processing and the sender receives an error
message.
Body Size (in MB)
Define the size limit for processing the message body.
Attachment Size (in MB)
Define the size limit for processing the attachment.
558
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.8.6.4.2
Configuring Sender Channel with ebMS3 Push
Allows you configure the sender channel with the AS4 adapter with ebMS3 Push as a receiving Message
Service Handler (MSH).
Context
You use AS4 message exchange protocol to securely process incoming business documents using Web
services.
Connection
Parameter
Description
Address
Specify the relative endpoint of the receiving MSH. For ex­
ample, /orders.

Note
When you specify the endpoint address /path, a
sender can also call the integration flow through the
endpoint address /path/<any string> (for exam­
ple, /path/test/).
Be aware of the following related implication: When you
in addition deploy an integration flow with endpoint ad­
dress /path/test/, a sender using the /path/
test endpoint address will now call the newly deployed
integration flow with the endpoint address /path/
test/. When you now undeploy the integration flow
with endpoint address /path/test, the sender again
calls the integration flow with endpoint address /path
(original behavior). Therefore, be careful reusing paths
of services. It is better using completely separated end­
points for services.
Agreement
Define the message exchange pattern agreed between the
MSHs. For example, urn:fdc:peppol.eu:
2017:agreements:tia:ap_provider.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
559
Parameter
Description
Authorization
Select User Role if you want to authorize a user to send mes­
sage based on the ESBMessaging.send.
Select Client Certificate if you want to authorize a user to
send message based on a certificate. If you select this op­
tion, you have to add and enter the Subject DN (information
used to authorize the sender) and Issuer DN (information
about the Certificate Authority who issues the certificate).
Select the Processing tab and provide values in the fields as follows.
Processing
Parameter
Initiator Party: Party ID
Description
Specify the ID of the initiating partner. For example,
APP_10000000100.
Initiator Party: Party Type
Specify a party type to identify the initiating partner. For ex­
ample, urn:fdc:peppol.eu:
2017:identifiers:ap
Initiator Party: Role
Specify the role of the initiating partner. For example,
http://docs.oasis-open.org/ebxml-msg/
ebms/v3.0/ns/core/200704/initiator
Responder Party: Party ID
Specify the ID of the responding partner. For example,
APP_10000000200.
Responder Party: Party Type
Specify a party type to identify the responding partner. For
example, urn:fdc:peppol.eu:
2017:identifiers:ap
Responder Party: Role
Specify the role of the responding partner. For example,
p://docs.oasis-open.org/ebxml-msg/ebms/
v3.0/ns/core/200704/responder
Service
Specify the process identifier of the business document. For
example,
urn:www.cenbii.eu:profile:bii01:ver2.0.
Service Type
Specify the process identifier schema of the business docu­
ment. For example, cenbii-procid-ublui.
Action
Specify the document type identifier of the business docu­
ment with the following format:
urn:www.cenbii.eu:profile:bii01:ver2.0 .
Select the Security tab and provide values in the fields as follows.
560
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Security
Parameter
Description
Verify Signature
Select the checkbox to ensure that the signature is verified
using one of the following options:
●
Not Required
●
Trusted Certificate: Used to verify the signature.
●
Trusted Root Certificate: The trust chain begins with the
use of the public alias as an intermediate certificate to
verify the inbound certificate. After successful verification, the inbound certificate is used to verify the signa­
ture.

Note
If Trusted Root Certificate is selected, mention the
immediate root certificate of the public key alias of
the incoming message.
Decrypt Message
Used to decrypt AS4 message.
Private Key Alias
Determine the private key alias to decrypt the AS4 message.
Public Key Alias
Define the public key alias or aliases to verify the signature of
the AS4 message.
(only if you select Trusted Certificate.)
Public Key Aliases
(only if you select Trusted Root Certificate.)
Select the Receipt tab and provide values in the fields as follows.
Receipt
Parameter
Description
Signing
Ensures that the outgoing AS4 message is signed.
Private Key Alias
Specify the private key alias to sign the AS4 message.
(only if you select Required in Signing.)
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
(only if you select Required in Signing.)
Select the Response tab and provide values in the fields as follows.
Response
Parameter
Description
Type
Specify the response type.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
561
Parameter
Description
The following options are available only if you select Push and Push in Type.
Target URL
Specify receipient's URL to which the AS4 message is trans­
mitted.
Agreement
Provide the message exchange pattern agreed between the
MSHs. For example, https://sbr.gov.au/
agreement/Gateway/1.0/Push/PKI.
Authentication Type
Defines the tenant authenticates itself against the sender.
There are the following options:
●
None
●
Basic Authentication
No authentication is configured.
The tenant authenticates itself against the sender
based on user credentials (user and password).

Note
When this authentication option is selected, the re­
quired security artifact (User Credentials) has to be
deployed on the tenant.
●
Client Certificate
The sender authenticates itself (as trusted server)
against the tenant when the connection is being set up.

Note
As prerequisite for this authentication process, the
client root certificate of the tenant has to be im­
ported into the senders keystore (prior to the con­
nection set up).
Credential Name
(only if you select Basic Authentication.)
Private Key Alias
(only if you select Client Certificate.)
Compress Message
562
PUBLIC
Provide the alias you used while deploying basic authentica­
tion credentials.
Specify the private key alias, used to sign the incoming AS4
message.
Compresses the AS4 message.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
WS-Security Type
Specify either of the folllowing WS-Security type to protect
message integrity and confidentiality:
●
None
●
Sign and Encrypt Message: Signs and encrypts the pay­
load of a message (to be decrypted by the receiver).
●
Sign Message: Signs the payload of a message (to be
verified by the receiver).

Note
For exchange of message specific communication rules
apply as been agreed between the administrators of the
Web service client and Web service provider (for exam­
ple, if certificates are to be sent with the message).
Private Key Alias for Signing
Specify the private key alias to sign the AS4 message.
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
Public Key Alias for Encryption
Specify the public key alias to sign the AS4 message.
(only if you select Sign and Encrypt Message.)
Encryption Algorithm
Select the algorithm you want to use to encrypt the payload.
(only if you select Sign and Encrypt Message.)
Key Encryption Algorithm
(only if you select Sign and Encrypt Message.)
Save Receipt
Select the key encryption algorithm and the system uses the
related mask generation functions (MGFs) to encrypt the
payload.
Check to save the receipt in the message store.
Select the Delivery Assurance tab and provide values in the fields as follows.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
563
Delivery Assurance
Parameter
Description
Quality of Service
Defines how the message is processed by the tenant.
There are the following options:
●
Best Effort
The message is sent synchronously; this means that the tenant waits for a re­
sponse before it continues processing.
No temporary storage of the message needs to be configured, as message re­
quest and response are processed immediately after another.
●
At Least Once
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing. It is expected that the receiver
guarantees that the message is processed exactly once.
This option guarantees that the message is processed at least once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender, all of them will be processed.
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
●
Exactly Once (Only possible if as Temporary Storage the option Data Store is se­
lected)
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing.
This option guarantees that the message is processed exactly once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender, only the first one will be processed. The subsequent messages can be
identified as duplicates and will not be processed.
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
564
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Temporary Storage
Temporary storage location for messages that are processed asynchronously. Mes­
(only if as Quality of Service the op­
tion Exactly Once or At Least Once is
selected)
sages for which processing runs into an error can be retried from the temporary
storage.
You can choose among the following storage types:
●
Data Store
The message is temporarily stored in the database of the tenant (in case of an
error). In case of successful message processing, the message is immediately
removed from the data store.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Data Stores tile.

Note
The data store name is automatically generated and contains the following
parts:
<name of participant connected with AS4 adapter>_<
AS4 channel name>
This automatically generated name is subject to a length restriction and
must be no more than 40 characters (including the underscore). If the data
store name exceeds this limit, you must shorten the participant name or
channel name accordingly.
Below the data store name, you find a reference to the associated integra­
tion flow in the following form: <integration flow name>/AS4
●
JMS Queue
The message is stored temporarily in a JMS queue on the configured message
broker.
If possible, use this option as it comes with a better performance.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Message Queues tile.

Note
The name of the JMS queue is automatically generated and contains the
following parts:
AS4.<Integration Flow Name>.<Channel Name>.<Guide>

Note
This option is only available if you have an Enterprise Edition license.
Lock Timeout (in min)
Enter a value for the retry timeout of the in-progress repository.
(only configurable if Data Store is se­
lected
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
565
Parameter
Description
Retry Interval (in min)
Enter a value for the amount of time to wait before retrying message delivery.
Exponential Backoff
Select this option to double the retry interval after each unsuccessful retry.
Maximum Retry Interval (in min)
You can set an upper limit on that value to avoid an endless increase of the retry in­
(only configurable when Exponential
terval. The default value is 60 minutes. The minimum value is 10 minutes.
Backoff is selected)
Dead-Letter Queue
Select this option to place the message in the dead-letter queue if it cannot be proc­
(only if as Temporary Storage the op­
tion JMS Queue is selected)
essed after three retries caused by an out-of-memory. Processing of the message is
stopped then.
In such cases, a lock entry is created which you can view and release in the Monitor
section of the Web UI under Managing Locks.
Use this option to avoid out-of-memory situations (caused in many cases by large
messages).
For more information, read the SAP Community blog Cloud Integration – Configure
Dead Letter Handling in JMS Adapter
Encrypt Message During Persistence
.
Select this option in case the messages should be stored in an encrypted way during
certain processing steps.
Select the Conditions tab and provide values in the fields as follows.
Conditions
Parameter
Description
The parameters in Maximum Message Size allow you to set a maximum size limit for processing inbound messages. Any
inbound message that exceeds the configured limit is rejected from further processing and the sender receives an error
message.
Body Size (in MB)
Define the size limit for processing the message body.
Attachment Size (in MB)
Define the size limit for processing the attachment.
4.8.6.4.3
Configuring Sender Channel with ebMS3 Receipt
Allows the sender channel to transmit the receipt for an incoming push message.
Context
You configure with the AS4 sender adapter with ebMS3 Receipt to support non-repudiation of receipt, which
assures the receiver has received the message without being modified during the message exchange.
566
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Connection
Parameter
Agreement
Description
Define the message exchange pattern agreed between the
MSHs.
Address
Specify the relative endpoint of the receiving MSH. For ex­
ample, /orders.

Note
When you specify the endpoint address /path, a
sender can also call the integration flow through the
endpoint address /path/<any string> (for exam­
ple, /path/test/).
Be aware of the following related implication: When you
in addition deploy an integration flow with endpoint ad­
dress /path/test/, a sender using the /path/
test endpoint address will now call the newly deployed
integration flow with the endpoint address /path/
test/. When you now undeploy the integration flow
with endpoint address /path/test, the sender again
calls the integration flow with endpoint address /path
(original behavior). Therefore, be careful reusing paths
of services. It is better using completely separated end­
points for services.
Authorization
Select User Role if you want to authorize a user to send mes­
sage based on the ESBMessaging.send.
Select Client Certificate if you want to authorize a user to
send message based on a certificate. If you select this op­
tion, you have to add and enter the Subject DN (information
used to authorize the sender) and Issuer DN (information
about the Certificate Authority who issues the certificate).
User Role
(only if you select User Role in Authorization)
Select a role to authorize the user to access the receiving
MSH endpoint.
Select the Security tab and provide values in the fields as follows.
Security
Parameter
Description
Save Incoming Receipt
Saves the incoming receipt in the message store.
Verify the Receipt Signature
Verifies the signature of the incoming receipt.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
567
Parameter
Description
Public Key Alias
Define the public key alias or aliases to verify the signature of
the AS4 message.
Select the Delivery Assurance tab and provide values in the fields as follows.
Delivery Assurance
Parameter
Description
Quality of Service
Defines how the message is processed by the tenant.
There are the following options:
●
Best Effort
The message is sent synchronously; this means that the tenant waits for a re­
sponse before it continues processing.
No temporary storage of the message needs to be configured, as message re­
quest and response are processed immediately after another.
●
At Least Once
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing. It is expected that the receiver
guarantees that the message is processed exactly once.
This option guarantees that the message is processed at least once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender, all of them will be processed.
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
●
Exactly Once (Only possible if as Temporary Storage the option Data Store is se­
lected)
The message is sent asynchronously. This means that the tenant does not wait
for a response before continuing processing.
This option guarantees that the message is processed exactly once on the ten­
ant. If a message with identical message ID is received multiple times from a
sender, only the first one will be processed. The subsequent messages can be
identified as duplicates and will not be processed.
If you choose this option, the message needs to be temporarily stored on the
tenant (in the storage configured under Temporary Storage). As soon as the
message is store there, the sender receives successfully received status mes­
sage. If an error occurs, the message is retried from the temporary storage.
568
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Temporary Storage
Temporary storage location for messages that are processed asynchronously. Mes­
(only if as Quality of Service the op­
tion Exactly Once or At Least Once is
selected)
sages for which processing runs into an error can be retried from the temporary
storage.
You can choose among the following storage types:
●
Data Store
The message is temporarily stored in the database of the tenant (in case of an
error). In case of successful message processing, the message is immediately
removed from the data store.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Data Stores tile.

Note
The data store name is automatically generated and contains the following
parts:
<name of participant connected with AS4 adapter>_<
AS4 channel name>
This automatically generated name is subject to a length restriction and
must be no more than 40 characters (including the underscore). If the data
store name exceeds this limit, you must shorten the participant name or
channel name accordingly.
Below the data store name, you find a reference to the associated integra­
tion flow in the following form: <integration flow name>/AS4
●
JMS Queue
The message is stored temporarily in a JMS queue on the configured message
broker.
If possible, use this option as it comes with a better performance.
You can monitor the content of the data store in the Monitor section of the Web
UI under Manage Stores in the Message Queues tile.

Note
The name of the JMS queue is automatically generated and contains the
following parts:
AS4.<Integration Flow Name>.<Channel Name>.<Guide>

Note
This option is only available if you have an Enterprise Edition license.
Lock Timeout (in min)
Enter a value for the retry timeout of the in-progress repository.
(only configurable if Data Store is se­
lected
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
569
Parameter
Description
Retry Interval (in min)
Enter a value for the amount of time to wait before retrying message delivery.
Exponential Backoff
Select this option to double the retry interval after each unsuccessful retry.
Maximum Retry Interval (in min)
You can set an upper limit on that value to avoid an endless increase of the retry in­
(only configurable when Exponential
terval. The default value is 60 minutes. The minimum value is 10 minutes.
Backoff is selected)
Dead-Letter Queue
(only if as Temporary Storage the op­
tion JMS Queue is selected)
Select this option to place the message in the dead-letter queue if it cannot be proc­
essed after three retries caused by an out-of-memory. Processing of the message is
stopped then.
In such cases, a lock entry is created which you can view and release in the Monitor
section of the Web UI under Managing Locks.
Use this option to avoid out-of-memory situations (caused in many cases by large
messages).
For more information, read the SAP Community blog Cloud Integration – Configure
Dead Letter Handling in JMS Adapter
Encrypt Message During Persistence
.
Select this option in case the messages should be stored in an encrypted way during
certain processing steps.
Select the Conditions tab and provide values in the fields as follows.
Conditions
Parameter
Description
The parameters in Maximum Message Size allow you to set a maximum size limit for processing inbound messages. Any
inbound message that exceeds the configured limit is rejected from further processing and the sender receives an error
message.
Body Size (in MB)
Define the size limit for processing the message body. De­
fault value is 40 MB.
Attachment Size (in MB)
Define the size limit for processing the attachment. Default
value is 100 MB.
570
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
4.8.6.5
AS4 Receiver Adapter
Provides basic insights on how the AS4 messaging protocol enables message exchange between message
service handlers (MSHs).
Use
The SAP Applicability Statement 4 (AS4) receiver adapter is a secure, reliable, and payload-agnostic protocol.
It uses Web services to transmit business-to-business documents. For more information on AS4 conformance
profile defined by OASIS standard, see AS4 Profile of ebMS 3.0 Version 1.0 .
The SAP AS4 receiver adapter uses the Light Client conformance profile to address the functional
requirements of e-commerce and e-governance services. The profile only supports message pushing for
sending MSH and selective message pulling for receiving MSH. The adapter uses secure SAML tokens for
authentication and authorization between two MSHs.
Message Exchange Patterns (MEPs)
The AS4 receiver adapter uses the following message exchange patterns (MEPs) for exchanging business
documents:
● One-way/push: In this pattern, the AS4 receiver adapter is the sending MSH (initiator) that transfers
business documents to the receiving MSH. The initiator receives a acknowledgment as part of the HTTP
response.
● One-way/selective pull: In this pattern, the AS4 receiver adapter is the receiving MSH (initiator) and sends
a selective pull request to the sending MSH. The sending MSH initiates the pull request by identifing the
specific user message using the message ID provided by the initiator.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
571
Visit the blog , to understand how to integrate Business-to-Authority (B2A) Manager of SAP with ATO
(Australian Taxation Office).
Related Information
Configure Receiver Channel with Push Message Protocol [page 572]
Configure Receiver Channel with Pull Message Protocol [page 577]
4.8.6.5.1
Configure Receiver Channel with Push Message
Protocol
Configure the AS4 receiver channel as a sending Message Service Handler (MSH) to send business
documents.
Prerequisites
● You must deploy the private key pair in theCloud Integration keystore for signing the AS4 message.
● You must have configured an integration flow in the editor. For more information, see Overview of
Integration Flow Editor [page 498].
Context
Use the ebMS3 Push message protocol to transmit AS4 message.
Connection
Select the Connectiontab and provide values in the fields as follows.
572
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Configure the Connection Details of the Receiving MSH
Parameter
Description
Address
Define the endpoint URL of the receiving MSH.
Agreement
Define the type of the message exchange pattern as agreed
between the MSHs for a specific type of business transac­
tion.
Authentication Type
Select the authentication type to process the outbound
message:
●
None
●
Basic Authentication
●
Client Certificate
●
SAML Authentication
You can also set the value of this attribute dynamically using
the header
SAP_AS4_Outbound_Authentication_Type.
The valid values are:
SAML Endpoint URL
●
saml
●
basic
●
clientCert
●
none
Provide the specific endpoint URL to support SAML-based
authentication that allows access to the sending MSH.
Private Key Alias
Determine the private key alias for SAML authentication.
Timeout (in sec.)
Provide a connection timeout period (in seconds) to define
how long the receiving MSH waits for the AS4 message to be
received by the sending MSH.
Compress Message
Enable if you want to compress the message.
Select the Processingtab and provide values in the fields as follows.
Processing
Parameter
Description
Initiator Party: Party ID
Define the ID of the sending MSH.
Initiator Party: Party Type
Provide the type of the sending MSH. For example:
http://abr.gov.au/PartyIdType/ABN
Initiator Party: Role
Define the role of the sending MSH. For example: http://
sbr.gov.au/ato/Role/Business
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
573
Parameter
Description
Responder Party: Party ID
Define the ID of the receiving MSH.
Responder Party: Party Type
Provide the type of the receiving MSH. For example:
http://abr.gov.au/PartyIdType/ABN
Responder Party: Role
Define the role of the receiving MSH. For example: http://
sbr.gov.au/agency
Message Partition Channel
Specify the partner channel details to enable the partitioned
transfer of AS4 messages between AS4 exchange partners.
Service
Define the business service of the recipient. For example,
payment details of employees for a specific year: http://
sbr.gov.au/ato/payevnt/2017
Service Type
Action
Define the type of service from the recipient.
Define the type of action that the user message is intended
to invoke. For example: Submit.002.00
Attachment Name
Define the name for the payload attached to the AS4 mes­
sage.
Additional Properties
Specify the Key, Kype, and Value attributes to modify an ex­
isting parameter in the property sheet. For example, if you
want to modify the MSH details, you must define a key and
its value. The Type attribute is used in AS4 message in order
to identify the payload.
Payload Properties
Define a key and value to modify the payload attached to
AS4 message.
Select the Security tab and provide values in the fields as follows.
Security
Parameter
Description
WS-Security Type
Ensures security implemented in web services for SOAP
based messages.
574
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Sign and Enrypt Message
Used to sign and encrypt the payload.
You can also set the value of this attribute dynamically by us­
ing the header SAP_AS4_Outbound_Security_Type.
The valid values are:
Sign Message
●
sign
●
signAndEncrypt
●
none
Ensures that the outgoing AS4 message is signed.
You can also set the value of this attribute dynamically by us­
ing the header SAP_AS4_Outbound_Sign_Message.
The valid values are:
Private Key Alias for Signing
●
true
●
false
Specify an alias for the tenant private key that is to be used
to sign the message. The tenant private key is used to sign
the request message (that is sent to the WS provider (re­
ceiver)). The tenant private key has to be part of the tenant
keystore.
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
You can also set the value of this attribute dynamically by us­
ing the header
SAP_AS4_Outbound_Signing_Algorithm.
The valid values are:
Public Key Alias for Encryption
(only if you select Sign and Encrypt Message)
●
SHA256/RSA
●
SHA384/RSA
●
SHA512/RSA
Specify an alias for the public key that is to be used to en­
crypt the message.
The receiver (WS provider) public key is used to encrypt the
request message (that is sent to the receiver). This key has
to be part of the tenant keystore.
You can also set the value of this attribute dynamically by us­
ing the header
SAP_AS4_Outbound_Encryption_Cert. Use this
header to set the certificate value to X509 certificate object.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
575
Parameter
Description
Encryption Algorithm
Specify a encryption algorithm to be applied when encrypt­
(only if you enable Sign and Encrypt Message)
ing the message.
You can also set the value of this attribute dynamically using
the header
SAP_AS4_Outbound_Encryption_Algorithm.
The valid values are:
●
3DES
●
AES128
●
AES256
Select the Receipt tab and provide values in the fields as follows.
Receipt
Parameter
Description
Save Incoming Receipt
Saves incoming receipt in the Message Store for 90 days.
You can refer these receipts for auditing purposes.
You can also set the value of this attribute dynamically using
the header SAP_AS4_Outbound_Save_Receipt.
The valid values are:
Verify Receipt Signature
●
true
●
false
Verifies the incoming receipt signature against the public key
alias.
You can also set the value of this attribute dynamically using
the header SAP_AS4_Outbound_Verify_Receipt.
●
true
●
false

Note
You can use the
SAP_AS4_Outbound_Verify_Receipt_Cert
header to set the certificate value to X509 certificate
object.
Public Key Alias
Enter an alias name to select a public key and corresponding
certificate.
576
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
 Note
Set the value, provided by ATO, to the SAP_AS4_Outbound_ATO_SAML_AppliesTo header for AppliesTo
parameter to fetch SAML token from Vanguard.
Related Information
Externalize Parameters of an Integration Flow [page 1105]
4.8.6.5.2
Configure Receiver Channel with Pull Message
Protocol
Configure the AS4 receiver channel as a receiving MSH to exchange business documents.
Prerequisites
● You must deploy the public certificate in the Cloud Integration keystore for verification of the business
response.
● You must have configured an integration flow in the editor. For more information, see Overview of
Integration Flow Editor [page 498].
Context
Use the ebMS3 Pull message protocol to receive AS4 message (User Message).
Select the Connection tab and provide values in the fields as follows.
Connection
Parameter
Description
Address
Define the endpoint URL of the sending MSH.
Reference Message ID
Define the reference ID of the signal message.
Message Partition Channel
Define the partition for the AS4 message that needs to be
exchanged between the participants.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
577
Parameter
Description
Authentication Type
Authentication method that you want to use for connecting
to the sending MSH. You can select one of the following:
Credential Name
(only if you select Basic Authentication.)
Private Key Alias
●
None
●
Basic Authentication
●
Client Certificate
●
SAML Authentication
Provide the alias you used while deploying basic authentica­
tion credentials.
Specify the private key alias to sign the message.
(only if you select Client Certificate.)
SAML Endpoint URL
(only if you select SAML Authentication.)
Private Key Alias
Timeout (in sec.)
Provide the specific endpoint URL to support SAML-based
authentication that allows access to the sending MSH.
Determine the private key alias for SAML authentication.
Provide a connection timeout period (in seconds) to define
how long the sending MSH waits for the AS4 message to be
received by the receiving MSH.
Select the Securitytab and provide values in the fields as follows.
Security
Paramter
Description
Sign Message
Ensures that the outgoing message is signed.
You can also set the value of this attribute dynamically by us­
ing the header SAP_AS4_Inbound_Sign_Message.
The valid values are:
Private Key Alias
●
true
●
false
Specify the private key alias to sign the AS4 message.
(only if Sign Message is enabed)
578
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Paramter
Description
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
(only if Sign Message is enabled)
You can also set the value of this attribute dynamically by us­
ing the header
SAP_AS4_Inbound_Signing_Algorithm.
The valid values are:
Verify Signature
●
sha256rsa
●
sha384rsa
●
sha512rsa
Ensures that the signature is verified.
You can also set the value of this attribute dynamically by us­
ing the header SAP_AS4_Inbound_Verify_Sign.
The valid values are:
Public Key Alias
(only if Verify Signature is enabled)
●
true
●
false
Provide the public key alias to verify the signature of the AS4
message.
Decrypt Message
Select to decrypt outgoing AS4 message.
Private Key Alias
Provide the private key alias used to decipher the outgoing
(only if Decrypt Message is enabled)
AS4 message.
 Note
Set the value, provided by ATO, to the SAP_AS4_Outbound_ATO_SAML_AppliesTo header for AppliesTo
parameter to fetch SAML token from Vanguard.
Select the Receipttab and provide values in the fields as follows.
Receipt
Parameter
Description
Receipt
Ensures that the outgoing AS4 message is signed.
Target URL
Provide the URL of the relevant host system for authenticat­
ing the user against the system.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
579
Parameter
Description
Authentication Type
Defines the tenant authenticates itself against the receiver.
There are the following options:
●
None
●
Basic Authentication
No authentication is configured.
The tenant authenticates itself against the receiver
based on user credentials (user and password).

Note
When this authentication option is selected, the re­
quired security artifact (User Credentials) has to be
deployed on the tenant.
●
Client Certificate
The receiver authenticates itself (as trusted server)
against the tenant when the connection is being set up.

Note
As prerequisite for this authentication process, the
client root certificate of the tenant has to be im­
ported into the receiver keystore (prior to the con­
nection set up).
Credential Name
(only if you select Required in Basic Authentication.)
Private Key Alias
Provide the alias you used while deploying basic authentica­
tion credentials.
Specify the private key alias to sign the AS4 message.
(only if you select Required in Client Certificate.)
Timeout (in sec)
Specifies the time (in seconds) that the client will wait for a
response before the connection is interrupted.
Signing
Select Required if you want to sign the outgoing AS4 mes­
sage. This guarantees your identity by signing the messages
with one or more private keys using a signature algorithm.
Private Key Alias
Provide an alias for selecting a private key from the keystore.
Signature Algorithm
Use the relevant algorithm to sign the AS4 message.
(only if you select Required in Signing.)
580
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Related Information
Externalize Parameters of an Integration Flow [page 1105]
4.8.6.6
AmazonWebServices Sender Adapter
Amazon Web Services (AWS) sender adapter enables your SAP Cloud Integration tenant to do transfer of data
with AWS cloud platform.
Use the sender adapter to accelerate the implementation time and reduce the complexity of connecting to
AWS. The adapter supports the following protocols:
● S3: Simple Cloud Storage
● SQS: Simple Queue Service
 Note
You need to download the adapter from SAP Software Download Center. You can find more information on
the download navigation path here .
After you complete the download, uncompress and extract the files to your local system. Then deploy the
adapter on your tenant.
● For more information on deploying the adapter in multicloud environment, see Importing Custom
Integration Adapter.
● For tenants hosted on Neo environment, you must import the adapter to your Eclipse tool and deploy
the adapter project. For more information see, Develop Adapter.
The following tables describe the parameters that you need to configuration for a selected protocol.
S3 Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Bucket Name
Specify the name of the bucket to be used.
Polling Interval (in ms)
Specifies the value of the Polling Interval in milliseconds.
The default value is 300000.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Requester Pays
Select the checkbox to make the requester pay for the data
transfer and the request.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
581
Processing
Parameter
Description
Directory
Specify the location on the S3 bucket where the file is writ­
ten.

Example
Directory/SubDirectory

Note
You can use an exchange header or a property to dy­
namically read the value.
File Name
Specify the name of the file to be written. If the field is left
blank, the filename is created using the Cloud Integration
message ID.

Example
Test.json

Note
You can use an exchange header or a property to dy­
namically read the value.
Sorting
Specify which property should be used for sorting while poll­
ing files. The sorting will be done in ascending order of the
selected property. It is possible to choose from the following
options:
●
None
●
File Name
●
File Size
●
Time Stamp
Include Sub-Directories
Select to read all the files in the directory and subdirectory.
Post-Processing
Select the action that should be taken after the file has been
processed. It is possible to choose from the following op­
tions:
582
PUBLIC
●
Delete File
●
Keep File and Process Again
●
Move File to an Archive directory
●
Copy file to an Archive Bucket
●
Move file to an Archive Bucket
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Optional S3 Metadata
Specify the property parameter to be populated from S3 ob­
ject metadata. If specified, then a property with the name
will be created in Cloud Integration.
S3 Pre-Signed URL
Select this option to generate a pre-signed URL. Select the
HTTP method and the expiration duration of the pre-signed
URL.
HTTP Method of Pre-Signed URL
Select the HTTP method that should be used for the presigned URL. Select from the following options:
Expired Duration of Pre-Signed URL (secs)
●
GET
●
DELETE
●
HEAD
●
PATCH
●
POST
●
PUT
Specify the duration in seconds for the Pre-Signed URL to
expire. The default value is 86400.
Customer Decryption Key Alias
Specify the name of the secured parameter that contains
the decryption key for the Amazon S3 to decrypt data.
SQS Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Account Number
Specify the 12-digit AWS account number for the queue.
Queue Name
Specify the AWS Queue name where the data needs to be
written.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Processing
Parameter
Description
Max Number of Messages
Specifies the maximum number of messages to be read
from the queue. Possible values can be between 1 and 10.
The default value is set to 10.
Wait Time (in sec)
Specifies the duration in seconds to wait for a message to ar­
rive in the queue. The default value is set to 20.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
583
Parameter
Description
Visibility Timeout (in sec)
Specifies the duration in seconds that the message is hidden
from subsequent retrieval requests. The default value is set
to 30.
Post-Processing
Specifies the action to be performed after the message
processing in the queue. It is possible to choose from the fol­
lowing options:
Optional SQS Metadata
4.8.6.7
●
Keep Message in the queue
●
Delete Message from the queue
Specify the header parameters to be populated from SQS
object metadata. Separate the metadata with comma “,”.
AmazonWebServices Receiver Adapter
Amazon Web Services (AWS) receiver adapter enables your SAP Cloud Integration tenant to do transfer of data
with AWS cloud platform.
Use the receiver adapter to accelerate the implementation time and reduce the complexity of connecting to
AWS. You configure the receiver channel with the AWS adapter, based on a desired protocol, to streamline
Outbound data transfer to AWS platform. The adapter supports the following protocols:
● S3: Simple Cloud Storage
● SQS: Simple Queue Service
● SNS: Simple Notification Service
● SWF: Simple Workflow Service
 Note
You need to download the adapter from SAP Software Download Center. You can find more information on
the download navigation path here .
After you complete the download, uncompress and extract the files to your local system. Then deploy the
adapter on your tenant.
● For more information on deploying the adapter in multicloud environment, see Importing Custom
Integration Adapter.
● For tenants hosted on Neo environment, you must import the adapter to your Eclipse tool and deploy
the adapter project. For more information see, Develop Adapter.
The following tables describe the parameters that you need to configuration for a selected protocol.
584
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
S3 Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Bucket Name
Specify the name of the bucket to be used.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Requester Pays
Select the checkbox to make the requester pay for the data
transfer and the request.
Processing
Parameter
Description
Operation
Select to specify if the files are written or read from the S3
bucket. The default value is Write Operation. Select from the
following options:
Directory
●
Write Operation
●
Read Operation
Specify the location on the S3 bucket where the file is writ­
ten.

Example
Directory/SubDirectory

Note
You can use an exchange header or a property to dy­
namically read the value.
File Name
Specify the name of the file to be written. If the field is left
blank, the filename is created using the Cloud Integration
message ID.

Example
Test.json

Note
You can use an exchange header or a property to dy­
namically read the value.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
585
Parameter
Description
Append Timestamp
Select to append the date and timestamp to the filename.
Content Type
Specify the MIME type of the file to be written.

Example
"application/xml" or "text/plain"

Note
You can use an exchange header or a property to dy­
namically read the value.
Content Encoding
Specify the content encoding of the file.

Example
gzip

Note
You can use an exchange header or a property to dy­
namically read the value.
Storage Class
Existing File Handling
Select the AWS Storage Class from the following options:
●
Glacier
●
Glacier Deep Archive
●
Intelligent-Tiering
●
One Zone-Infrequent Access
●
Reduced Redundancy
●
Standard
●
Standard-Infrequent Access
Select the file handling behavior, if a file with the same name
exists in the directory, from the following options:
●
Fail: Select this option to raise an exception
●
Ignore: Select this option to ignore the file
●
Overwrite: Select this option to overwrite the existing
file
586
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Post-Processing
Specify the action taken after the file is processed. Select
(only if Operation is Write Operation)
from the following options:
Customer Decryption Key Alias
(only if Operation is Write Operation)
●
Delete File
●
Keep File
●
Move File to an Archive directory
●
Copy file to an Archive Bucket
●
Move file to an Archive Bucket
Specify the name of the secured parameter that contains
the decryption key for the Amazon S3 to decrypt data.
Advanced
Parameter
Encryption Option
Description
Select the server-side encryption, used for storing the file in
AWS, from the following options:
●
SSE-C (with Customer-Provided Key)
●
SSE-KMS (with Customer Master Keys Stored in AWS
Key Management Service)
Custom Metadata
●
SSE-S3 (with Amazon S3-Managed Keys)
●
The default value is NONE
Specify any additional header name-value pairs that you
want to send to AWS.

Note
You can use an exchange header or a property to dy­
namically read the value.
SQS Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Account Number
Specify the 12-digit AWS account number for the queue.
Queue Name
Specify the AWS Queue name where the data needs to be
written.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
587
Processing
Parameter
Description
Delays
Specify the duration (in seconds) after which messages be­
come available for processing. Valid values: 0–900 .
Message Deduplication ID
Specify the message deduplication ID.

Note
You can use an exchange header or a property to dy­
namically read the value.
Message Group ID
Specify the message group ID.

Note
You can use an exchange header or a property to dy­
namically read the value.
Advanced
Parameter
Description
Message Attribute
Specify any additional message attribute name-value pairs
that you can send to AWS.
SNS Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Account Number
Specify the 12-digit AWS account number for the queue.
Topic Name
Specify the AWS Topic name where the data needs to be
written.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Processing
Parameter
Description
Subject
Specify the subject of the message.

Note
You can use an exchange header or a property to dy­
namically read the value.
588
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Parameter
Description
Message Structure
Select the structure of the message from the following op­
tions:
●
Identical Payload for all Delivery Protocols
●
Custom Payload for each Delivery Protocol
Message Attribute
Specify any additional message attribute name-value pairs
that you can send to AWS.
Response
Specify the format of the response message sent by AWS.
Possible values include Application/XML and Application/
JSON. The default value is Application/XML.
SWF Protocol
Connection
Parameter
Description
Region Name
Select the AWS Region. If the region doesn’t exist in the pre­
configured list, then the user can manually enter the region
name in the text box.
Access Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS access key needed to connect to AWS.
Secret Key Alias
Specify the name of the Secure Parameter artifact that con­
tains the AWS secret key needed to connect to AWS.
Processing
Parameter
Description
Action
Select the API action to be performed in AWS Simple Work­
flow.

Example
List Domains, List Activity Types.
Request
Specify the format of the request message to send to AWS.
Possible values include Application/XML and Application/
JSON. The default value is Application/XML.
Response
Specify the format of the response message sent by AWS.
Possible values include Application/XML and Application/
JSON. The default value is Application/XML.
4.8.6.8
ELSTER Receiver Adapter
This adapter enables an SAP BTP tenant to send a tax document to the ELSTER server.
ELSTER (acronym for the German term Elektronische Steuererklärung) is used by the German fiscal
management to process tax declarations exchanged over the Internet.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
589
To enable a client to send tax data to German tax authorities, those organizations provide the ERiC (ELSTER
Rich Client) library for sending tax documents. The ELSTER adapter is designed that way that it complies with
the requirements of this library and, therefore, enables Cloud Integration to connect as a client to the ELSTER
server.
 Note
Using this adapter makes only sense in the context of a standard integration scenario (predefined by SAP
or an SAP partner) that includes the communication with German tax authorities.
The adapter supports validate and send operations.
The input payload for the ELSTER adapter is supposed to be a complete, valid payload (tax document)
including the transfer header. Note that, however, the XML document can have an arbitrary encoding (if this is
properly defined in the XML preamble). The adapter ensures that the payload is converted to the encoding the
ELSTER server supports (currently ISO-8859-15, in future versions this will change to UTF-8).
The output payload (sent by Cloud Integration through the ELSTER receiver adapter) will be validated by the
ELSTER server.
The inclusion of the transfer header implies that only applications that are registered with the German tax
authorities and have a valid vendor ID can actually send messages through the ELSTER adapter.
 Note
This software collects personal data according to Article 4, Number 1 and Article 9, Paragraph 1 of the
German General Data Protection Regulation (Datenschutzgrundverordnung, DSGVO). In addition to data
that is required for the assessment of taxes, this software also collects data related to the kind of operating
system used by the user and transfers it to the fiscal authorities. This information ensures the proper
processing of the data and avoids errors in the process.
This data is used by the fiscal authorities according to Article 6, Paragraph 1, Letter e in connection with
Paragraph 3, Subparagraph 1, Letter b DSGVO in connection with federal and state tax regulations and
exclusively for the purposes mentioned.
Headers
The validate and send operation of the ELSTER receiver adapter sets a header (SAP_ERiCResponse) that
contains a technical status created by the ERiC library.
The adapter does not read any headers.
Once you have created a receiver channel and selected the Elster Receiver Adapter, you can configure the
following attributes. See Overview of Integration Flow Editor [page 498].
Select the General tab and provide values in the fields as follows.
General
Parameter
Description
Name
Enter the name of the channel.
Select the Connection tab and provide values in the fields as follows.
590
PUBLIC
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
Connection
Parameter
Description
Operation
The following operations are supported:
●
Get Version
Gets the versions of the ERiC library provided by the
server.
The response contains the major, minor, and micro
ERiC version (for example, 29.6.2).
●
Validate
Validates the tax document.
Validation of a tax document without sending it only re­
quires the document type (Data Type). Key aliases
(Private Key Alias for Encryption and Private Key Alias
for Signing) are not required in that case.
●
Validate and Send
Validates the tax document sent to the ELSTER server.
In case the server cannot accept the document (maybe
it is wrong formatted) or in case the server is down, an
error message is provided. In such a case, check the
message processing log and, in case you need more in­
formation, the default trace.
Data Type
Indicates the type of the document provided as payload. In­
formation about the type is required by the ELSTER server to
determine the method to be applied by the tax authority.
For example, if the value LStA_2019 is specified, the
method ElsterAnmeldung can be executed by the server for
the year 2019. Other examples are: DUeAbmelden,
DUeAnmelden, UStVA_2018 or UStVA_2019.
You can also dynamically configure this parameter with an
expression such like ${header.datatype} or $
{property.datatype} to retrieve the data format dy­
namically at runtime.
Private Key Alias for Encryption
Alias for the key to be used for message encryption
Note that X.509 key pair needs to be uploaded to the tenant
keystore to set up this scenario.
You can also dynamically configure this parameter with an
expression such like ${header.encryptionkey} or $
{property.encryptionkey} to dynamically retrieve
its value at runtime.
Developer's Guide: Managing Integration Content
Developing Integration Content with SAP Cloud Integration
PUBLIC
591
Parameter
Description
Private Key Alias for Signing
Alias for the key pair (private part) to be used for message
signing. Note that X.509 key pair needs to be uploaded to
the tenant keystore
Alias for the key pair (private part) to be used for message
signing. Note that X.509 key pair needs to be uploaded to
the tenant keystore.
You can also dynamically configure this parameter with an
expression such like ${header.signaturekey} or $
{property.signaturekey} to dynamically retrieve its
value at runtime.
You can also dynamically configure this parameter with an
expression such like ${header.signaturekey} to dynamically
retrieve its value at runtime.
4.8.6.9
Facebook Receiver Adapter
You use the Facebook receiver adapter to extract information from Facebook (which is the receiver platform)
based on
Download