Developer's Guide: Managing Integration Content - SAP Cloud Platform Integration for Processes 2018-02-15 Developer's Guide: Managing Integration Content

  • Published on
    12-Mar-2018

  • View
    607

  • Download
    330

Transcript

PUBLICSAP Cloud Platform Integration for Processes2018-05-11Developer's Guide: Managing Integration ContentContent1 Managing Integration Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Developing Integration Content Using the Eclipse Integration Designer. . . . . . . . . . . . . . . . . . .62.1 Understanding the Basic Concepts and the Development Environment . . . . . . . . . . . . . . . . . . . . . . .6Elements of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Understanding the Integration Content Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2 Installing and Configuring the Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Opening the Integration Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Configuring the SAP Cloud Platform Integration Preferences. . . . . . . . . . . . . . . . . . . . . . . . . . . 19Uninstalling a Feature. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232.3 Developing Integration Flows and Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Creating Integration Project for an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23(Optional) Creating a Working Set of Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Importing SAP NetWeaver PI Objects from On-Premise Repository. . . . . . . . . . . . . . . . . . . . . . .26Modifying an Integration Flow Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Saving Integration Flow as a Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Using Custom Functions in Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.4 Developing Value Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Creating a Value Mapping Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Editing the Value Mapping Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Exporting and Importing Value Mapping Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Referencing Value Mappings from a Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Checking the Value Mapping Consistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392.5 Configuring an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Assigning the Sender and Receiver Participants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Defining Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Defining Message Transformers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190Defining Message Persistence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242Validating Message Payload against XML Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252Defining Message Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253Defining Security Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Defining Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Defining Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Defining Additional Elements (Others). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Defining the Error Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346Error Classification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3472 P U B L I CDeveloper's Guide: Managing Integration ContentContentSpecifying Runtime Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Defining Transaction Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352Externalizing Parameters of Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3552.6 Working with the Mapping Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Creating a Message Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Handling Inconsistencies in Mapping Editor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Exporting Mapping Details to Excel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3672.7 Testing an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Checking the Consistency. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3682.8 Operations-Related Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Deploying an Integration Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Viewing Error Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Activating Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3712.9 References to Additional Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3743 Packaging Integration Content in SAP Cloud Platform Integration Web Application. . . . . . . .3763.1 Uploading Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3763.2 Creating an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3773.3 Working with an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3783.4 Editing an Integration Package. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3793.5 Locking Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3803.6 Updating Integration Packages and their Contents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3813.7 Exporting Integration Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3824 Developing Integration Content With the SAP Cloud Platform Integration Web Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3834.1 Understanding the Basic Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .384Elements of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384Product Profiles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .394Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3984.2 Working with Prepackaged Integration Content. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3994.3 Add Integration Packages to the Customer Workspace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4004.4 Creating an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4014.5 Content Transport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Enabling Content Transport. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404Creating HTTP Destination in Solutions Lifecycle Management. . . . . . . . . . . . . . . . . . . . . . . . 405Content Transport Using CTS+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406Content Transport Using Transport Management Service (Beta). . . . . . . . . . . . . . . . . . . . . . . 407Content Transport using Manual Export and Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Content Transport using MTAR Download. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4094.6 Importing Content from ES Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Configuring Connectivity to ES Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Developer's Guide: Managing Integration ContentContent P U B L I C 3Importing Mapping Content from ES Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4114.7 Working with Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412Viewing Mapping Details in Mapping Viewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413Create Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415Create Message Mapping Definition Resource. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Create Custom Mapping Expression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418Test Message Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419Creating Value Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421Configuring Value Mappings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422Create XSLT Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4234.8 Migrate to New Version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4244.9 Specify the Runtime Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4254.10 Configure Externalized Parameters of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4294.11 Configure Multiple Integration Flows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4314.12 Configure Integration Flow Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432Integration Flow Editor for SAP Cloud Platform Integration. . . . . . . . . . . . . . . . . . . . . . . . . . . 432Assign Sender and Receiver Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436Assign Adapter to Communication Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437Configure Adapter in Communication Channels. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438Define Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584Define Message Transformers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588Define Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .649Define Security Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687Define Message Persistence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709Validating Message Payload against XML Schema in Web UI. . . . . . . . . . . . . . . . . . . . . . . . . . . 719Define Call. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .720Define Additional Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730Defining Transaction Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733Externalize Parameters of an Integration Flow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .736Define Error Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739Manage Resources of an Integration Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740Problems View. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742Error Classification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7424.13 Deploying Data Flows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7434.14 Tracing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7444 P U B L I CDeveloper's Guide: Managing Integration ContentContent1 Managing Integration ContentDesign integration content in order to specify how messages are to be exchanged between the connected components.SAP Cloud Platform 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.Quick Links: Developing Integration Content With the SAP Cloud Platform Integration Web Application [page 383] Developing Integration Content Using the Eclipse Integration Designer [page 6]Since the tasks are performed by different roles, in different working environment such as, Integration Designer on Eclipse platform or SAP Cloud Platform Integration Web application on SAP UI5, the figure below helps you understand the relationship between the roles, tools/applications, and tasks:Developer's Guide: Managing Integration ContentManaging Integration Content P U B L I C 52 Developing Integration Content Using the Eclipse Integration DesignerSAP Cloud Platform 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 Platform Integration infrastructure.Installing Features of SAP Cloud Platform IntegrationTo develop and configure integration content, install the features as described on the installation page SAP Cloud Platform Integration Tools.2.1 Understanding the Basic Concepts and the Development Environment 2.1.1 Elements of an Integration FlowAn 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 processingThe following figure provides a simplified and generalized representation of an integration flow.6 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttps://tools.hana.ondemand.com/#cloudintegrationhttps://tools.hana.ondemand.com/#cloudintegrationSenders and ReceiversYou 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.NoteTo 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.NoteTo 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 FlowsYou use message flows to connect various integration flow elements.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 72.1.1.1 Headers and Exchange PropertiesThe 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: Message headerThis 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.NoteNote that data written to the message header during a processing step (for example, in a Content Modifier or Script step) will also be part of the outbound message addressed to a receiver system (whereas properties will remain within the integration flow and will not be 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 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 propertyFor 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.8 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteA subset of these parameters is provided by the associated Open Source components, such as Apache Camel.Headers Relevant for Signing with XML Digital Signature CamelXmlSignatureTransformMethodsSpecifies 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.ExampleSample CodeExample 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". ... ... ... aUDFmiG71 Headers Relevant for Message Signing with XML Advanced Electronic Signature CamelXmlSignatureXAdESQualifyingPropertiesIdSpecifies the Id attribute value of the QualifyingProperties element. CamelXmlSignatureXAdESSignedDataObjectPropertiesIdSpecifies the Id attribute value of the SignedDataObjectProperties element.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 9 CamelXmlSignatureXAdESSignedSignaturePropertiesIdSpecifies the Id attribute value of the SignedSignatureProperties element. CamelXmlSignatureXAdESDataObjectFormatEncodingSpecifies the value of the Encoding element of the DataObjectFormat element. CamelXmlSignatureXAdESNamespaceOverwrites the namespace parameter value. CamelXmlSignatureXAdESPrefixOverwrites the prefix parameter value.Headers Relevant for Message Splitting CamelSplitIndexProvides a counter for split items that increases for each Exchange that is split (starts from 0). CamelSplitSizeProvides 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). CamelSplitCompleteIndicates whether an Exchange is the last split.Headers Relevant for Content Encoding CamelCharsetNameSpecifies the character encoding to be applied for message processing.Is relevant for content encoding steps.Headers Relevant for the HTTP and HTTPS Adapter CamelHttpUriOverrides the existing URI set directly in the endpoint.This header can be used to dynamically change the URI to be called. CamelHttpUrlRefers to the complete URL called, without query parameters.For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello. CamelHttpQueryRefers 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. CamelHttpMethodRefers to the incoming method names used to make the request. These methods are GET, POST, PUT, DELETE, and so on. CamelServletContextPathRefers 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. CamelHttpResponseCodeThis header can be used to manually set the HTTP response code. Content-TypeHTTP 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 text10 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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 formatMore information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.htmlThe 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 .NoteIf 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-8The 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-EncodingHTTP 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/http-parameters.xhtml#content-coding .Headers Relevant for the SFTP Adapter CamelFileNameOverrides 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 AdapterNoteThe 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 11http://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.w3.org%2FProtocols%2Frfc1341%2F4_Content-Type.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fmedia-types%2Fmedia-types.xhtmlhttp://help.sap.com/disclaimer?site=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc2616http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-codinghttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-coding SubjectSpecifies the subject of the e-mail message. ToSpecifies the e-mail address that the message is sent to. CcSpecifies the additional e-mail address that the message is sent to. FromSpecifies the e-mail address that the message comes from. DateSpecifies the date and time when the e-mail was sent. Content-TypeSpecifies the format of the e-mail (html or plaintext) Message-IDSpecifies the ID that the mail system assigned to the e-mail when it was first created. Reply-toSpecifies the message ID of the message that this e-mail is a reply to. SenderSpecifies the actual sender (acting on behalf of the e-mail address stated in the From header). Archived-AtSpecifies a link to the archived form of an e-mail.Headers Relevant for the Aggregator Step CamelAggregatedCompletedByThis header is relevant for use cases with message aggregation.The header attribute can only have one of the following values: timeoutProcessing of the aggregate has been stopped because the configured Completion Timeout has been reached. predicateProcessing of the aggregate has finished because the Completion Condition has been met.Headers Relevant for JMS Messages JMSTimestampSpecifies the time when a JMS message was created.Headers Relevant for the SOAP (SOAP 1.x), SOAP (SAP RM), and IDoc Adapter SOAPAction HeaderThis header is part of the Web service specification. SapAuthenticatedUserNameContains 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 HeaderYou can specify one of the following headers (under Message Header in the Name field):12 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer SAP_ApplicationIDWhen 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_MessageTypeYou can use this property to categorize messages. SAP_MessageProcessingLogIDYou 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 PropertiesYou can specify one of the following Exchange properties (under Exchange Property in the Name field): SAP_CorrelateMPLsYou 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_ReceiverOverwriteHeaders 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.NoteExample configuration:Name: SAP_ReceiverOverwriteType: ConstantValue: True SAP_ErrorModelStepIDYou 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. SAPJMSRetriesDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 13Contains the number of retries of a JMS message.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. SAPJMSAlerttimeSpecifies the time when an alert needs to be sent. SAPJMSRetryAtSpecifies the time when a JMS message must be retried.Related InformationDynamic Parameters [page 14]2.1.1.1.1 Dynamic ParametersYou can define placeholders for attributes of certain adapters or step types. The values of these attributes 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 AdapterFor 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.14 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAs 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.Dynamic Parameters for the different AdaptersAdapter Type Parameters that can be set dynamically at runtimeMail Adapter Receiver: From, To, Cc, Bcc, Subject, Mail Body, Attachment NameAS2 Adapter Receiver: Own AS2 ID, Partner AS2 ID, Message Subject, Own e-mail Address, Content Type, Signing Algorithm, Encryption Algorithm, Public Key of certificate to be used for encryption, MDN Type (None/Sync/Async), MDN Asynch URL, MDN Signing Algorithm, MDN Signature verfication public key alias, AS2 receipient URL, AS2 MDN SenderHTTP Adapter Receiver: Address, QuerySuccess Factors (SOAP) Adapter Receiver/Sender: Query, ParametersOData Adapter Receiver: Query, Custom Query Options, Resource PathSFTP Adapter File NameDynamic Parameters for the different Step TypesAdapter Type Parameters that can be set dynamically at runtimeData Store Operations Select Data Store NameData Store Operations Write Data Store NameEntry IDData Store Operations Get Data Store NameEntry IDData Store Operations Delete Data Store NameEntry ID2.1.2 Understanding the Integration Content TypesSAP Cloud Platform 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 Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 15associated 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.NoteAnother feature, called the Integration Operation Monitoring, provides options to monitor the deployed integration projects in runtime.Types of Integration ProjectsThe sections below introduce you to different project types that the tooling provides based on the entities.Integration Flow Project TypeThe Integration Flow project type contains packages for creating integration content, where each package consists of a particular entity.Integration Flow Project StructureElements in Project Structure Descriptionsrc.main.resources.mapping Package for mappings to be used in scenariosrc.main.resources.scenarioflows.integrationflow Package for BPMN integration flowsrc.main.resources.wsdl Package for interfaces like IDOC , WSDL used in scenarioMANIFEST.MF File contains dependencies to runtime components and integration content metadataNoteAdditional files that are available in the Integration Flow project types are:Additional Elements in Project Structure Descriptionsrc.main.resources Package for parameters.prop and parameters.propdef filesparameters.prop File contains externalized attributes representing a variable such as a the customer's landscape information.parameters.propdef File contains metadata such as value type of the parameterized attribute, its description and whether the attribute should be configured mandatorily.Value Mapping Project TypeThe 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.16 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerValue Mapping Project StructureElements in Project Structure DescriptionMANIFEST.MF File contains dependencies to runtime componentsvalue_mapping.XML File contains value mapping groups that hold the objects and their corresponding representations2.1.3 RestrictionsThe Integration Designer allows you to model specific patterns which are handled at runtime in an unexpected way.The following table lists the restrictions.Restrictions and Alternative Configuration SettingsModelled Pattern Expected Behavior at RuntimeActual Behavior at Runtime Alternative Modeling OptionIntegration flow step with more than one outgoing sequence flowsFor example, after a Message Persistence step the message is supposed to be sent to multiple receivers in parallel.The same message is processed in parallel after the integration flow step.The messages are delivered to the different receivers in a sequence.Hereby, the order in that the messages are delivered is randomly generated.In addition to that, the following behavior may occur: the message which results from the processing in the previous sequence flow is taken as input for the next sequence flow.NoteAs an example, consider two parallel sequence flows where the first one contains an encryption step and the second one not. In that case, the receiver of the second sequence flow also gets an encrypted message (although in the second sequence flow no encryption step has been configured).Configure only one outgoing sequence flow and parallel processing using a multicast of messages.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 17Comment 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 EnricherCautionSuch 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. Lets 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 RestrictionsUsage of an Aggregator step in a Local Integration Process or Exception Subprocess is not supported.2.2 Installing and Configuring the ToolYou install the features of SAP Cloud Platform Integration on the Eclipse integrated development environment (IDE) to access the Integration Designer functions.18 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.2.1 Opening the Integration DesignerYou open the Integration Designer as perspective in Eclipse.ContextProcedure1. Start Eclipse.2. In the main menu, choose Windows Open Perspective Other...3. In the Open Perspective dialog, select Integration Designer.2.2.2 Configuring the SAP Cloud Platform Integration PreferencesYou can make specific settings for SAP Cloud Platform Integration in the Eclipse Preferences.ContextYou 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 Platform Integration under Window Preferences SAP Cloud Platform Integration .Related InformationOperations Server [page 20]Personalize [page 20]Repository Connection [page 22]Testing Configuration [page 23]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 192.2.2.1 Operations ServerYou 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 SettingsProperty DescriptionURL Tenant management node URL (also referred to as management URL)Enter the URL that was provided during tenant provisioning.User User and password for this connectionPasswordChoose 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 Preferences General Network Connections ).2.2.2.2 PersonalizeYou can specify personal settings that control how to deal with integration flow templates and how to handle integration project/integration flow creation.Personal SettingsProperty DescriptionStore integration flow templates at Location where to store integration flow templates on your local computer20 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProperty DescriptionAlways 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 ( FileIntegration Project New ), 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.2.2.2.3 Working with Product ProfilesProduct 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.ContextSAP Cloud Platform 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.Procedure1. 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 Platform Integration-> Product Profiles.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 21b. Select the required profile.Note If no product profile is selected, by default it is SAP Cloud Platform 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 icon (on eclipse toolbar) to manually download it.Related InformationProduct Profiles [page 394]2.2.2.4 Repository ConnectionIf 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 SettingsProperty DescriptionURL URL of the on-premise repository in the format http(s)://:User User and password for this connectionPasswordChoose Test Connection to test whether the specified URL and user/password enable you to connect to the repository.22 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.2.2.5 Testing ConfigurationYou can specify settings that control how integration tests are executed.2.2.3 Uninstalling a FeatureContextYou use this task only if you need to uninstall a feature of an installed software plugin.Procedure1. 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 Projects2.3.1 Creating Integration Project for an Integration FlowContextAn 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 Platform Integration, and thus, ensure successful communication.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 23You 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 userdefined templates.NoteYou 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.RestrictionIn this release, SAP supports only limited number of possible integration scenarios.Procedure1. In the main menu, choose Window Open Perspective Integration Designer to open the perspective.2. In the main menu, choose File New Integration Project 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.NoteIf 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 25].5. If you want to create an integration flow of a specific pattern for the new integration project, choose Next.NoteYou can also create an integration project together with a point-to-point integration flow. To enable this option, choose Window Preferences SAP Cloud Platform 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.24 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer8. 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.NoteYou 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 29].10. Choose Finish.A new project with .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.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 ProjectsContextYou 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.NoteThe actions available in the context menu of the projects that are added to the Working Set remain as before.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 25Procedure1. In the Project Explorer view of the Integration Designer perspective, select the dropdown icon from the toolbar of the view.2. Choose Select Working Set3. 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 Top Level Elements Working Sets to display the Working Set and its content in the Project Explorer.10. Select Top Level Elements Projects to display only the projects belonging to the existing working sets, .NoteIf 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 RepositoryContextYou 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).RestrictionSee the table below to know about the list of unsupported functionalities of the mappings being imported:Unsupported functionalities of imported mappingsType of Mappings LimitationsMessage Mapping User Defined Functions with Channel type parameterRFC and JDBC lookups used in Mappings26 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerType of Mappings LimitationsParameters declared through Parameter section of mapping editor (in ES Repository Builder )Used Imported ArchivesUsed Function LibrariesContaining schema from .xml or .zip filesOperation Mapping Operations (source or target) with cardinality '0..unbonded' are not supportedOperation mappings with cardinality 0..1 are not supportedOperation mapping containing multiple operations are not supportedSince parameters are not supported in Message Mapping, so operation mappings with binding are also not supportedOperation Mappings with Java Mappings (Imported Archives, Java programs) and external programs are not supportedOperation Mappings, with Do Not Resolve XOP Includes, Read Attachments are not supportedOnly synchronous operation mappings with at least one mapping program present- either request, response or fault, is supported.If the WSDL is already present, WSDLs are not overwrittenProcedure1. 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.ResultsThe imported objects are placed under their respective src.main.resources. 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 27The 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.2.3.4 Modifying an Integration Flow ModelContextYou 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.NoteThe integration flow should match the SAP supported scenarios to avoid deployment failure.ExampleConsider 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 interfacesThe list of elements that you require to model a multiple pool integration flow are:1. One Sender element2. N Receiver elements3. N Integration Process pools for each incoming message from the Sender to a Receiver4. 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.28 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. Open the .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.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 TemplatePrerequisitesYou have specified the location path to store the userdefined templates at Windows Preferences SAP Cloud Platform Integration Personalize .ContextYou 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.Procedure1. In the Project Explorer view, open the .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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 29NoteIf 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.ResultsYou 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 MappingPrerequisitesMake sure you have created a valid Integration project with Message Mapping associated scripts.ContextIn 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.Procedure1. 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 Browse30 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerThe 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 Add7. 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.NoteIn 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 is displayed. 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 File Switch workspaceOther... and select the required workspace.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 312.3.6.1 Guidelines for Creating Mapping Scripts using Custom FunctionsYou 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 contextGuidelines for Creating Mapping Script for Single Value Type of ExecutionIf 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 functions 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.Exampleimport com.sap.it.api.mapping.* def String extParam(String P1,String P2,MappingContext context) { String value1 = context.getHeader(P1); String value2 = context.getProperty(P2); return value1+value2;} Guidelines for Creating Mapping Script for All Values of Context Type of ExecutionFor 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.32 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerExampleimport 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 MappingsContextProcedure2.4.1 Creating a Value Mapping ProjectContextYou 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 33Procedure1. In the main menu, choose File New Project .2. In the New Project wizard, select SAP Cloud Platform 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 ProjectContextYou 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.Procedure1. 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. UK Food Items Aubergine US Food Items Eggplant UK Food Items Coriander US34 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer Food Items Cilantro TipIf you want to edit the values, you can switch to the Design tab page editor. 2.4.3 Exporting and Importing Value Mapping GroupsContextYou 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 35Procedure1. Export the value mapping groups into your local file systema. 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.ExampleThe image below shows an example of a vale mapping group exported into a .csv file.2. Import the value mapping groupsa. 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.NoteYou 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.36 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerExampleThe 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 MappingPrerequisites 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.ContextYou 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 37Procedure1. In the Project Explorer view, expand the integration flow project.2. Under src.main.resources.mapping folder, double-click the .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.38 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerFor 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 ConsistencyContextYou 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.Procedure1. Right-click on the project and choose Execute Checks.2. Open the Properties view, and view the result of the check.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 392.5 Configuring an Integration FlowContextYou 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 Q40 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAfter configuration, the resulting integration flow should be similar to the example shown below:NoteYou 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 ParticipantsContextYou 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.Procedure1. Assign the Sender Participanta. 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 AuthenticationSelect this options if you like to configure one of the following use cases: Basic authentication Client certificate authentication with certificatetouser mapping Client Certificate AuthenticationDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 41Select 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 Participanta. 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 ChannelsPrerequisites You have configured connections to an On-Premise repository if you have to obtain interface WSDL from the repository into this project.NoteYou 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 On-Premise Repository under Configuring the Tool Settings [page 19]. 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.ContextYou 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.Procedure1. 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.42 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer3. To specify new configurations, follow the instructions mentioned in the adjacent topic for the required connector.TipIf 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.NoteWhen you save the configuration of the channel as a template: The tool stores the template in the workspace as .fst. The tool saves the parameter key of the externalized parameters and not the values.2.5.2.1 Configuring a Channel with Mail AdapterThe 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.ContextYou 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 attachmentsNoteThe 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.NoteTo 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 43NoteTo access an attachment, you have to use Groovy script or JavaScript.For more information about how to access attachments, see the documentation for the Script step.NoteIt is not possible to authenticate the sender of an e-mailUnlike with other adapters, if you are using the sender mail adapter, the Cloud Integration system cannot 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 contentE-mails can contain malware, such as viruses or Trojan horses.These will not 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 systemE-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 dataSending 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), is not reliable without further verification.CautionIf 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.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.44 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. 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.Parameters and Values of Sender Mail Adapter/ConnectionParameters DescriptionAddress 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 servers: 143 for IMAP+STARTTLS 993 for IMAPS 110 for POP3+STARTTLS 995 for POP3SProxy Type The type of proxy that you are using to connect to the target system.Select None if you are connecting directly to the email server.Select On-Premise if you are 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.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, or enter ${header.headername} to dynamically read the value from a header.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 45Parameters DescriptionProtection Specifies the method to use to establish an encrypted (secure) connection.There are the following options: OffNo encryption is initiated by the client. POP3S (only when transport protocol POP3 has been selected when creating the channel)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)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 MandatoryIf the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, the connection stops with an error. STARTTTLS OptionalIf the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, client and server remain connected but communicate without encryption.Using STARTTLS, an existing connection without encryption can be changed to an encrypted one using TLS (without the need to establish a new connection).Authentication Specifies which mechanism is used to protect user name and password combination. Plain User Name/PasswordThe 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 password. Encrypted User/Password The user name and password are hashed before being sent to the server. This authentication mechanism (CRAM-MD5 and DIGEST-MD5) is secure even without encryption.Credential Name Specifies the name of the User Credentials artifact that contains user name and password (used to authenticate at the email account).46 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters and Values of Sender Mail Adapter/ProcessingParameters DescriptionFolder(only if as Transport Protocol the option IMAP4 has been selected)Specify the IMAP folder containing the mails to be read.Selection(only if as Transport Protocol the option IMAP4 has been selected)Specify which mails will be processed (all mails or only unread ones).Max. Messages per Poll Defines the maximal number of messages that will be read from the email server in one polling step.Post-Processing Specify how to handle processed mails on the server.NoteIf Post-Processing is set to Mark as Read and the poll strategy is set to poll for all mails (Selection: All), then already processed 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 process might become inefficient.Remove Attachments Select this options if attachments should be removed from the mail prior to polling.Parameters and Values of Sender Mail Adapter/SchedulerScheduler Option Field DescriptionSchedule on Day(mails are to be polled at a specific day)On Date Specify the date on which you want the operation to be executed.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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 47Scheduler Option Field DescriptionSchedule to Recur(mails are to be polled periodically)Daily 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).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 operation 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.48 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters and Values of Receiver Mail Adapter (General)Parameters DescriptionAddress 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: 587 for SMTP+STARTTLS 465 for SMTPSIf you are using GMail Server, make sure that you allow insecure applications (GMail considers only communication based on OAuth2 as secure) when configuring the server. You can use port 25 for connections to GMail server.Timeout (in ms) Specifies the network timeout for the connection attempt to the server.This is only used for Transmission Control Protocol (TCP), there is no timeout for SMTP commands.The default value is 30000. The timeout should be more than 0, but less than five minutes.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 .Location ID (only if On-Premise is selected 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, or enter ${header.headername} to dynamically read the value from a header.Protection Defines whether encryption is used. The possible values are: STARTTLS Mandatory If the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, the connection fails. STARTTLS OptionalIf 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 does not support this option, client and server remain connected but communicate without encryption. SMTPSThe TCP connection to the server is encrypted using SSL/TLS. This usually requires an SSL proxy on the server side and access to the port it runs on. Off No encryption is initiated, whether the server requests it or not.Using STARTTLS, an existing connection without encryption can be changed to an encrypted one using TLS (without the need to establish a new connection).Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 49Parameters DescriptionAuthentication Specifies which mechanism is used to authenticate against the server with a user name and password combination. Possible values are: NoneNo authentication is attempted. No credential can be chosen. Plain User Name/PasswordThe 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 password. Encrypted User/PasswordThe user name and password are hashed before being sent to the server. This authentication mechanism (CRAM-MD5 and DIGEST-MD5) is secure even without encryption.Credential Name Specifies the name of a deployed credential to use for authentication.From E-mail address that the message comes from.To E-mail address that the message is sent to.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comCc Additional e-mail addresses that the e-mail is to be sent to.These addresses are visible to the receiver.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comBcc Additional e-mail addresses that the e-mail is to be sent to.These addresses are not visible to the receiver.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comSubject Subject of the e-mail message.Mail Body Specifies the text of an e-mail message.Body MIME Type Specifies the type of the message body. This type determines how the message is displayed by different user agents.50 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionBody Encoding Specifies the character encoding (character set) of the message body. The content of the input message will be converted to this encoding, and any character that is not available will be replaced with a question mark ('?'). To ensure that data is passed unmodified, select a Unicode encoding, for example, UTF-8.Name (under Attachments) Specifies the file name of the attachment.MIME Type (under Attachments)The Multipurpose Internet Mail Extensions (MIME) type specifies the data format of the e-mail.You can select from the following MIME types: Text/Plain Text/CSV Text/HTML Application/XML Application/JSON Application/Octet-StreamSource Specifies the source of the data. This can be either Body, meaning the body of the input message, or Header, meaning a header of the input message.Header Name If the source is Header, this parameter specifies the name of the header that is attached.Add Message Attachments Select this option to add all attachments contained in the message exchange to the e-mail.Parameters and Values of Receiver Mail Adapter/SecuritySection Parameters DescriptionSecurity Encryption Type This parameter configures an encryption scheme 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.Content Encryption Algorithm Specifies the symmetric (block) cipher. DESede should only be chosen if the destination system or mail client does not 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 51Section Parameters DescriptionReceiver 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.NoteThe 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.htmlRelated InformationDynamic Parameters [page 14]Headers and Exchange Properties [page 8]Define Script [page 635]2.5.2.2 Configuring a Channel with IDoc (IDoc SOAP) AdapterContextThe 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): SapAuthenticatedUserNameContains 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 HeaderThis header is part of the Web service specification.52 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlProcedure1. 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:Parameters and Values of Sender IDoc (IDoc SOAP) Adapter (Connection Details)Parameters DescriptionAddress Relative endpoint address on which ESB Bus listens to the incoming requests, for example, /HCM/GetEmployeeDetails.URL to WSDL You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.NoteAs of now this parameter is no longer available.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 53Parameters DescriptionAuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit. When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well.54 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters Description If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Parameters and Values for Sender Adapter/AuthorizationSection Parameter DescriptionConnection AuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Specifies the authorization option for the sender. Client CertificateSender 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 authentication option: Clientcertificate authentication (without certificatetouser mapping). User RoleSender 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 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. Clientcertificate authentication and certificatetouser mappingThe authorizations for the user derived from the certificatetouser mapping are checked based on user-to-role assignments defined on the tenant.Client Certificate Authorization(only if you have selected Client Certificate as 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 authorization for the selected adapter. You can then select a certificate stored locally on your computer. You can also delete certificates from the list.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 55Section Parameter DescriptionUser 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 predefined role provided by SAP which 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 choosing Select, a selection of all custom roles defined that way is offered.Conditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.56 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters and Values of Receiver IDoc (IDoc SOAP) Adapter (Connection Details)Parameters DescriptionAddress Endpoint address on which the ESB Bus posts the outgoing message, for example http://:/payment.You can dynamically configure the address field of the IDoc SOAP 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 message) 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 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).Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 57Parameters DescriptionProxy 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically 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 provide the WSDL by: Directly entering /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. Selecting a source to browse for a WSDL, either from an On-Premise ES Repository or your local workspace.NoteAs of now this parameter is no longer available.58 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionIDoc Content Type Application/x-sap.doc Allows only single IDoc record for each request Enables Exactly-Once processing Enables message sequencingText/XML Allows multiple IDoc records for each requestRequest 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 compressed response messages.Allow Chunking Used for enabling HTTP chunking of data while sending messages.Clean up Request Headers Select this option to clean up the adapter specific headers after the receiver call.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 59Parameters DescriptionConnect using Basic Authentication Select this option to allow the ESB to connect to the receiver system using the deployed basic authentication credentials. When you select this option, you need to provide the credential name.Credential Name: Enter the credential name of the username-password pair specified during the deployment of basic authentication credentials on the cluster.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.The reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured.60 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionPrivate Key Alias Allows you to enter the private key alias name that gets the private key from the keystore and authenticates you to the receiver in an HTTPs communication.If you have selected the option of Connect using Basic Authentication, 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 performance.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 61Parameters DescriptionAuthentication You can select one of the following authentication methods: BasicThe 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 CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDoc.The AS2 adapter also supports this option.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 prop62 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlParameters Descriptionerty ${exchangeProperty.MyCredentialName}.6. Save the changes.ResultsIn 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) AdapterPrerequisitesContextYou 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+SOAPYou have the option to set SOAP headers using Groovy script (for example, using the Script step).Supported Header (Sender Adapter): SapAuthenticatedUserNameContains 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 HeaderThis header is part of the Web service specification.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 63http://help.sap.com/disclaimer?site=http%3A%2F%2Fwiki.scn.sap.com%2Fwiki%2Fdisplay%2FABAPConn%2FPlain%2BSOAPProcedure1. 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:NoteNote regarding WSDL import:Parameters and Values of Sender SOAP (SAP RM) Adapter - Connection DetailsParameters DescriptionAddress Relative endpoint address at which the ESB listens to the incoming requests, for example, /HCM/GetEmployeeDetails.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.NoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.64 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionProcessing 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 65Parameters DescriptionAuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit.66 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters Description When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well. If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Parameters and Values for Sender Adapter/AuthorizationSection Parameter DescriptionConnection AuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Specifies the authorization option for the sender. Client CertificateSender 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 authentication option: Clientcertificate authentication (without certificatetouser mapping). User RoleSender 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 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. Clientcertificate authentication and certificatetouser mappingThe authorizations for the user derived from the certificatetouser mapping are checked based on user-to-role assignments defined on the tenant.Client Certificate Authorization(only if you have selected Client Certificate as 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 authorization for the selected adapter. You can then select a certificate stored locally on your computer. You can also delete certificates from the list.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 67Section Parameter DescriptionUser 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 predefined role provided by SAP which 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 choosing Select, a selection of all custom roles defined that way is offered.NoteFor Exactly-Once handling, the sender SOAP (SAP RM) adapter save the protocolspecific 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 headerSOAP (SAP RM) Header Camel HeaderMessageId SapMessageIdEx und SapMessageIdQualityOfService SapPlainSoapQoSExactlyOnce ExactlyOnceExactlyOnceInOrder ExactlyOnceInOrderQueueId SapPlainSoapQueueId68 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerConditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.NoteNote regarding WSDL import:Parameters and Values of Receiver SOAP (SAP RM) Adapter - Connection DetailsParameters DescriptionAddress Endpoint address at which the ESB posts the outgoing message, for example http://:/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 message) 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 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).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 .Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 69Parameters DescriptionLocation ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically 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.NoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.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.NoteUsing the same port names across receivers is not supported. 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 keystore and authenticates you to the receiver in an HTTPS communication.NoteIf 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 performance.70 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionCompress 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.Clean Up Request Headers Select this option to clean up the adapter specificheaders 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).Authentication You can select one of the following authentication methods: BasicThe 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 CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, AS2, SOAP, IDOCNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 ${exchangeProperty.MyCredentialName}.4. Save the configurations in both the sender and receiver channel editors.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 71http://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlResultsIn 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 Informationhttps://wiki.scn.sap.com/wiki/display/ABAPConn/Plain+SOAP?original_fqdn=wiki.sdn.sap.com2.5.2.4 Configuring a Channel with SOAP (SOAP 1.x) AdapterPrerequisitesSince the adapter implements web services security, you have ensured that the related certificates are deployed in the truststore.ContextSOAP (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): SapAuthenticatedUserNameContains 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 HeaderThis header is part of the Web service specification.72 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwiki.scn.sap.com%2Fwiki%2Fdisplay%2FABAPConn%2FPlain%2BSOAP%3Foriginal_fqdn%3Dwiki.sdn.sap.comProcedure1. 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::NoteNote regarding WSDL import:Parameters and Values of Sender SOAP (SOAP 1.x) Adapter/Connection SettingsParameters DescriptionAddress Relative endpoint address on which the integration runtime expects incoming requests, for example, "/HCM/GetEmployeeDetails".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. WSDL: The service behavior is defined via WSDL configuration.Message Exchange Pattern(only if Service Definition:Manual is selectedSpecifies the kind of messages that are processed by the adapter. Request-Reply: The adapter processes both request and response.TipWhen using this option, the response code can accidently be overwritten by a called receiver. For example, when your integration flow contains an SOAP sender adapter (with a Request-Reply pattern) and an HTTP receiver adapter, and the HTTP receiver returns an HTTP response code 202 (as it has accepted the call), 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. One-WayDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 73Parameters DescriptionURL to WSDL(only if as Service Definition the option WSDL is selected)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 resources. For example, you can upload a WSDL which contains an imported XSD referred by an xsd:import statement. That means, when you like 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 that currently the WSDL file referenced in the SOAP channel needs to reside directly in the uppermost folder, not in any sub-folder. The referenced XSDs and WSDLs can be in sub-folders.NoteIf 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: :Example: p1:MyServiceNoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.Service Name of the selected service contained in the referenced WSDLEndpoint(only if Service Definition: The adapter only: WSDL is selected)Name of the selected port of a selected service (that you provide in the Service Name field) contained in the referenced WSDL74 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionProcessing Settings(only if one of the following options is selected: Service Definition: WSDL Service Definition: Manual andMessage Exchange Pattern: One-Way WS 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 75Parameters DescriptionAuthorization 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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit. When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well.76 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters Description If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Parameters and Values of Sender SOAP (SOAP 1.x) Adapter/WS-Security SettingsParameters DescriptionWS-Security Configuration Specifies the way how WS-Security settings are to be configured. Via Manual Configuration in ChannelThe security settings are manually to be configured (see below listed attributes). NoneNo WS-Security is applied for message exchange.If you select this option, no further WS-Security-relevant settings can be applied.WS-Security Type Specifies the combination of message protection methods that are to be applied. There are the following options: Verify MessageA signed payload is expected by the tenant, and the signature has to be verified. Verify and Decrypt MessageA signed and encrypted payload is expected by the tenant. The signature has to be verified and the payload has to be decrypted.Private Key Alias for Response SigningSpecify an alias for the private key that is to be used to sign the response message.You can also enter ${header.headername} or ${property.propertyname} to read the name dynamically from a header or exchange property.The tenant private key is used to sign the response message (that is sent to the WS consumer). The tenant private key has to be part of the tenant keystore.Public Key Alias for Response Encryption(only in case Verify and Decrypt Message is selected for WS-Security Type)Specify an alias for the public key that is to be used to encrypt the response message..The sender (WS consumer) public key is used to sign the response message (that is sent to the WS consumer). This key has to be part of the tenant keystore.Save Incoming Signed MessageSelect this option if the incoming signed (and encrypted) message is to be stored.Signature Algorithm Specify a signature algorithm to be applied when signing the response message.Possible values: SHA1 (default value) SHA256 SHA512Check Time Stamp Select this option, if the sender (WS consumer) sends a time stamp along with the message.In case a request-response pattern is configured, a time stamp is added to the response message.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 77Parameters DescriptionSender is Basic Security Profile CompliantAs default setting, select this option.This option should be selected in case the sender system supports a dedicated security level which is described by the Basic Security Profile (as assumed to be the case for most systems). Only in case the sender system does not support this security profile, de-select this option.Algorithm Suite Assertion Specifies which algorithms are to be used by the WS consumer.Initiator Token Include StrategyPre-set value Always to Recipient ensures that the WS consumer sends the certificate along with the message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.Recipient Token Include StrategyValue Always to Initiator adds the certificate to the response message.78 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters and Values for Sender Adapter/AuthorizationSection Parameter DescriptionConnection AuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Specifies the authorization option for the sender. Client CertificateSender 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 authentication option: Clientcertificate authentication (without certificatetouser mapping). User RoleSender 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 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. Clientcertificate authentication and certificatetouser mappingThe authorizations for the user derived from the certificatetouser mapping are checked based on user-to-role assignments defined on the tenant.Client Certificate Authorization(only if you have selected Client Certificate as 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 authorization for the selected adapter. You can then select a certificate stored locally on your computer. You can also delete certificates from the list.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 79Section Parameter DescriptionUser 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 predefined role provided by SAP which 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 choosing Select, a selection of all custom roles defined that way is offered.Conditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.80 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteNote regarding WSDL import:Parameters and Values of Receiver SOAP (SOAP 1.x) Adapter - Connection DetailsParameters DescriptionAddress Endpoint address on which the ESB Bus posts the outgoing message, for example http://:/payment.You can dynamically configure the address field of the SOAP (SOAP 1.x) 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 message) 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 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).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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically read the value from a header or a property.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 81Parameters DescriptionURL 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 resources. For example, you can upload a WSDL which contains an imported XSD referred by an xsd:import statement. That means, when you like 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 that currently the WSDL file referenced in the SOAP channel needs to reside directly in the uppermost folder, not in any sub-folder. The referenced XSDs and WSDLs can be in sub-folders.NoteIf you specify a WSDL, you also have to specify the name of the selected service, the name of the port selected for this service and the name of the operation selected for this service. These fields must have a namespace prefix.Expected format: :Example: p1:MyServiceNoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.Service Name Name of the selected service contained in the referenced WSDL cPort Name Name of the selected port of a selected service (that you provide in the Service Name field) contained in the referenced WSDL .Same port names across receivers is not supported. 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 selected service (that you provide in the Service Name field) contained in the referenced WSDL.Request 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).82 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionCompress Message Enables the WS endpoint to send compressed request messages to the WS Provider and to indicate the WS Provider that it can handle compressed response messages.Allow Chunking Used for enabling HTTP chunking of data while sending messages.Clean Up Request Headers Select this option to clean up the adapterspecific headers after the receiver call.Connect Without Client AuthenticationThis feature corresponds to the Authentication setting None and is shown when you use 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product profile) that you continue editing an integration flow which exists already for a certain 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.Connect Using Basic AuthenticationThis feature corresponds to Authentication setting Basic and is shown when you use 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product profile) that you continue editing an integration flow which exists already for a certain time.Select this option to allow the tenant to connect to the receiver system using the deployed 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 83Parameters DescriptionAuthentication You can select one of the following authentication methods: BasicThe 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.When you have selected Basic authentication option, you can enter a Credential Name. Client CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDoc.The AS2 adapter also supports this option.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 ${exchangeProperty.MyCredentialName}.84 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlParameters DescriptionPrivate Key Alias Allows you to enter the private key alias name that gets the private key from the keystore and authenticates you to the receiver in an HTTPs communication.If you have selected the option of Connect using Basic Authentication, 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 performance.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.The reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured.WS-Security Configuration Specifies the way how WS-Security settings are to be configured. Via Manual Configuration in ChannelThe security settings are manually to be configured (see below listed attributes). Based on Policies in WSDLThe security settings are specified as part of the receiver endpoint (within the endpoint WSDL) in elements as NoneNo WS-Security is applied for message exchange.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 85Parameters DescriptionUsername Token Specifies the way how Username Token is to be configured. Select this option to authenticate at message level based on a user ID and a password (transported within a SOAP message).UsernameToken defined in the WS Security standard. Plain Text PasswordThe Password is transferred in plain text (https encrypted). Hashed Password (Password Digest)Cryptographic hash function is applied for password. NoneNo User Name Token is applied.If you have selected the option Plain Text Password or Hashed Password (Password Digest), enter the credential name, that is, the alias that was assigned to the authorized user and password during tenant deployment.NoteIt depends on additional adapter settings how the token is treated during runtime (in particular, with regard to whether the token will be encrypted or not).When the security settings are defined by the endpoint WSDL (when for WS-Security Configuration you have selected Based on Policies in WSDL), the token is treated according to what is defined within the WSDL.When the security settings are defined manually (when for WS-Security Configuration you have selected Via Manual Configuration in Channel), it depends on the selected WS-Security Type how the token is treated: Sign Message selected: The token is not encrypted. Sign and Encrypt Message selected: The token is encrypted.Credential Name(only configurable when for WS-Security Configuration the option Based on Policies in WSDL is selected)WS-Security Type Specifies the combination of message protection methods that are to be applied. There are the following options: Sign MessageTenant signs the payload. Sign and Encrypt MessageTenant signs and encrypts the payload NoneNo WS-Security Type is applied.86 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionPrivate Key Alias for Signing Specify an alias for the tenant private key that is to be used to sign the message.You can also enter ${header.headername} or ${property.propertyname} to read the name dynamically from a header or exchange property.The tenant private key is used to sign the request message (that is sent to the WS provider (receiver)). The tenant private key has to be part of the tenant keystore.Public Key Alias for Encryption(only configurable when for WS-Security Type the option Sign and Encrypt Message is selected)Specify an alias for the public key that is to be used to encrypt 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.Signature Algorithm Specify a signature algorithm to be applied when signing the request message.Possible values: SHA1 (default value) SHA256 SHA512Set Time Stamp Select this option to send a time stamp along with the message.In case a request-response pattern is configured, a time stamp is expected in the response message.Receiver is Basic Security Profile CompliantLeave this option selected if the receiver system complies with the basic security profile (as assumed to be the case for most systems). Deselect this option if the receiver system does not support this security profile.Layout StrictItems are added to the security header following numbered layout rules according to a general principle of 'declare before use'. LaxItems are added to the security header in any order that conforms to WSS: SOAP Message SecurityAlgorithm Suite Assertion Specifies which algorithms are used by the WS consumerInitiator Token These entries define policies for the WS consumer. Include StrategyValue Always to Recipient ensures that the WS consumer sends the certificate along with the message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 87Parameters DescriptionRecipient Token These entries define policies for the WS consumer. Include StrategyValue Always to Initiator adds the certificate to the response message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.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 InformationWS-Security Configuration for the Sender SOAP 1.x Adapter [page 88]WS-Security Configuration for the Receiver SOAP 1.x Adapter [page 90]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-soap-adapter/2.5.2.4.1 WS-Security Configuration for the Sender SOAP 1.x AdapterYou use a sender channel to configure how inbound messages are to be treated at the tenants 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)88 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F25%2Fcloud-integration-soap-adapter-web-service-security%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F24%2Fcloud-integration-wss-between-cloud-integration-and-sap-po-soap-adapter%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F24%2Fcloud-integration-wss-between-cloud-integration-and-sap-po-soap-adapter%2FThe following figure illustrates the setup of components:Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 89The sender SOAP 1.x adapter allows the following combination of message-level security options: Verifying a payload Verifying and decrypting a payload2.5.2.4.2 WS-Security Configuration for the Receiver SOAP 1.x AdapterWith a receiver channel you configure the outbound communication at the tenants 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.90 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 91The receiver SOAP 1.x adapter allows to configure the following combinations of message security methods: Signing a payload Signing and encrypting a payloadConfiguration Options for WS-SecuritySigning 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 WSDLUsing 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 standardThat 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/ws-securitypolicy/v1.3/os/ws-securitypolicy-1.3-spec-os.html . Manual Configuration in ChannelUsing 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 information on the standard, see http://www.w3.org/TR/ws-policy/ and http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.pdf .2.5.2.5 Configuring a Channel with AS2 AdapterPrerequisitesYou (tenant admin) can provision message broker to AS2 adapter scenarios only if you have Enterprise Edition license.NoteYou have to set up a cluster for the usage of message broker. For more details refer .CautionDo not use this adapter type together with Data Store Operations steps, Gather (message aggregator) steps, or global variables, as this can cause issues related to transactional behavior.92 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Fws-sx%2Fws-securitypolicy%2Fv1.3%2Fos%2Fws-securitypolicy-1.3-spec-os.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Fws-sx%2Fws-securitypolicy%2Fv1.3%2Fos%2Fws-securitypolicy-1.3-spec-os.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2Fws-policy%2Fhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Fws-sx%2Fws-securitypolicy%2F200702%2Fws-securitypolicy-1.2-spec-os.pdfhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Fws-sx%2Fws-securitypolicy%2F200702%2Fws-securitypolicy-1.2-spec-os.pdfContextYou 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 businessspecific documents with your partner through AS2 protocol. You can use this adapter to encrypt/decrypt, compress/decompress and sign/verify the documents.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.Procedure1. 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.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://:/as2/as2 and for as2 mdn sender channel the pattern should be http://:/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 DescriptionMessage 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 93Fields DescriptionPartner AS2 ID Specify partner's AS2 ID. Regular expression or '.*' is allowed.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 incoming 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 Authentication.User Role (For sender only) Provide a role as defined in the tenant system, to check inbound sender authorization.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 _File. Use of simple expression, ${header.} or ${property.}, is allowed.Own E-mail address (For receiver only) Specify own email ID. Use of simple expression, ${header.} or ${property.}, is allowed.Content Type (For receiver only) Specify content type of the outgoing message. For e.g. application/edi-x12. Use of simple expression, ${header.} or ${property.}, is allowed.You can also set value of this attribute dynamically using header AS2_outbound_content_type.94 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerFields DescriptionNoteIf 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.Field DescriptionMessage 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 falseNoteIf 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 95Field DescriptionVerify 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 falseNoteIf 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 falseNoteIf header value is set, it takes precedence over actual value configured in the channel.Algorithm (For receiver only) If you select Sign Message, then this field is enabled. Select 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 MD596 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionNoteIf 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 simple expression, ${header.} or ${property.}, 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 falseNoteIf 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: 3DES AES128 AES192 AES256 RC2NoteIf 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.} or ${property.}, 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 Algorithm field then this field is enabled. Specify public key length.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 97Field DescriptionYou can also set value of this attribute dynamically using header AS2_outbound_encryption_key_length.NoteIf 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 DescriptionPrivate Key Alias for Signature (For sender only) Specify private key alias to sign the MDN on partner's request.Signature Encoding (For sender only) Select MDN signature encoding type.Authentication for Asynchronous MDN (For sender only)Select authentication type for asynchronous MDN.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 incoming load.Type (For receiver only) Enable this option to request partner to send Message Integrity Check(MIC) in AS2 MDN.You can also set value of this attribute dynamically using header AS2_outbound_mdn_type.NoteIf 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.} or ${property.}, is allowed.98 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerFields DescriptionNoteIf 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 Platform Integration, then for AS2 mdn sender channel the pattern should be http://:/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 request 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 enabled.You can also set value of this attribute dynamically using header AS2_outbound_mdn_signing_algorithm.NoteIf 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 enabled. You can enable this option to verify signature of AS2 MDN.Public Key Alias (For receiver only) If you select Verify Signature, then this field is enabled. Specify public key alias to verify MDN signature. Use of simple expression, ${header.} or ${property.}, is allowed. The header or property can conatin public key alias or X509 certificate.Request MIC (For receiver only) If you want to requst for integrity check then you can enable this option.You can also set value of this attribute dynamically using header AS2_outbound_mdn_request_micVerify MIC (For receiver only) If you choose synchronous MDN type, then this field is enabled. You can enable this option to verify MIC of AS2 MDN.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 99Fields DescriptionIf 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 ................ ............... processed In MDN message, negative MDN is represented as shown below:Sample Code ................ ................ processed error insufficient-message-security If MDN signature validation fails or incorrect message integrity check (MIC) is received, then in that case, status of message is FAILED.100 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer9. Choose the Retry and enter the retry handling details.Parameters DescriptionRetry Interval (in min) Enter a value for the amount of time to wait before retrying message delivery.Exponential Backoff Enter a value to double the retry interval after each unsuccessful retry.Maximum Retry Interval (in min) Enter a value for the maximum amount of time to wait before 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 DescriptionRecipient URL (For reciever only) Specify partner's AS2 URL. Use of simple expression, ${header.} or ${property.}, is allowed.NoteIf 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 Platform Integration, then for as2 sender channel the pattern should be http://:/as2/as2 and for as2 mdn sender channel the pattern should be http://:/as2/mdn .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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 101Fields DescriptionPrivate 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. 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 MDNType102 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer MPL ID MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Receiver, adapterMessageId=,SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,ReceiverAS2Name=ASCDSSCSAS2,MessageDirection=Outbound,MDNType=Receiving,MPL ID=AFgsEosepT9fR54od_XHp6yWu6Gs,MDNRequested=Asynchronous,SenderAS2Name=HCIAS2,AS2MessageID=} AS2 MDN sender adapter attributes: AdapterId adapterMessageId SAP_MplCorrelationId MDNStatus Message Id ErrorDescriptionFor example:{AdapterId=AS2 MDN Sender, adapterMessageId=,SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,MDNStatus=error, Message Id=,ErrorDescription=insufficient-message-security} AS2 sender adapter attributes: AdapterId adapterMessageId ReceiverAS2Name MessageDirection MDNType MDNStatus MPL ID MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Sender, adapterMessageId=,ReceiverAS2Name=HCIAS2,MessageDirection=Inbound,MDNType=Sending,MDNStatus=Success,MPL ID=AFgsPspcD-eYhvHFdfOZYKydBmzw,Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 103MDNRequested=Synchronous,SenderAS2Name=endionAS2,AS2MessageID=} AS2 sender adapter attributes: AdapterId adapterMessageId ReceiverAS2Name MessageDirection MDNType MDNStatus MPL ID MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Sender, adapterMessageId=,ReceiverAS2Name=HCIAS2,MessageDirection=Inbound,MDNType=Sending,MDNStatus=Success,MPL ID=AFgsQ0_3KdRx-UiOjcwGruy6Xw4V,MDNRequested=Asynchronous,SenderAS2Name= gibsonAS2,AS2MessageID=} Related InformationConfiguring a Channel with JMS Adapter [page 174]2.5.2.6 Configuring a Channel with HTTP Receiver AdapterThe HTTP adapter allows you to configure an outbound HTTP connection from SAP Cloud Platform Integration to a receiver.PrerequisitesIf 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).104 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerSet the value of the CamelCharsetName property or header to the desired character set (for example, UTF-8).NoteIf 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.ContextThe 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: CamelHttpUriOverrides the existing URI set directly in the endpoint.This header can be used to dynamically change the URI to be called. CamelHttpQueryRefers 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-TypeHTTP 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 formatMore information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.htmlThe 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 .NoteIf 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-8The 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 105http://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.w3.org%2FProtocols%2Frfc1341%2F4_Content-Type.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fmedia-types%2Fmedia-types.xhtmlText 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-EncodingHTTP 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/http-parameters.xhtml#content-coding .ProcedureNote1. 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:106 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc2616http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-codinghttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-codingField Name and Description for HTTP AdapterField DescriptionAddress URL of the target system that you are connecting to, for example, https://mysystem.comNote 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. However, if you select the HTTP method POST, parameters are usually sent in the body. You therefore get a warning message 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 bufferSizeYou 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 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).Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 107Field DescriptionQuery Query string that you want to send with the HTTP requestQuery 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 contained in the incoming message) will be written into the Camel header CamelHttpQuery.NoteIf 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=abcYou must specify the following in the query field: parameter1=123¶meter2=abcExample 2)Manufacturer = Mars Inc. Product = M&MYou must specify the following in the query field: Manufacturer =Mars+Inc.&Product=M%26M108 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionProxy 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically read the value from a header or a property.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 109Field DescriptionMethod Action that the HTTP request should perform POSTRequests that the receiver accepts the data enclosed in the request body. DeleteRequests that the origin server delete the resource identified by the Request-URl DynamicThe method is determined dynamically by reading a value from a message header or property such as ${header.abc} or ${property.abc} during runtime. GETSends a GET request to the receiver. HEADSends a HEAD request which is similar to a GET request but does not return a message body. PUTUpdates or creates the enclosed data on the receiver side. TRACESends a TRACE request to the receiver that sends back the message to the caller.Send BodyThis field is enabled only if you select for Method the option GET, DELETE, HEAD or "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.ExpressionThis field is enabled only if you select for Method the option Dynamic.The expression field allows you to enter a simple expression that specifies the HTTP method for the HTTP call . For example, you can define that the method is determined dynamically by reading a value from a message header or property such as ${header.abc} or ${property.abc}. If the header or property does not exist or its value is empty, the POST method is used by default.110 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionAuthentication Defines how the tenant (as the HTTP client) will authenticate itself against the receiver.You can select one of the following authentication methods: None BasicThe 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 CertificateThe 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.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 111Field DescriptionThe reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured. Principal PropagationThe 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 systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDOCFor special use cases, this authentication method can also be used with the AS2 adapter.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]112 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionCredential NameNoteThis field is enabled only if you select for Authentication the option Basic.Identifies the User Credential artifact that contains the credentials (user name and password).You can dynamically configure the Credential Name property by specifying either a header or a parameter name in 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-encoded 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 supported 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 AliasNoteThis option is enabled only if you select client certificate authentication.Enter the private key alias that enables the system to fetch the private key from keystore for authentication.RestrictionThe values true and false are not supported for this field.Timeout (in ms) Maximum time that the tenant waits for a response before terminating message processingThe default value is 60000 milliseconds (1 minute).4. Save the configuration in the receiver channel editor.Related InformationDynamic Parameters [page 14]Script Example for Exception Handling in HTTP Receiver [page 241]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1132.5.2.7 Configuring a Channel with HTTPS Sender AdapterThe HTTPS sender adapter allows you to accept incoming http request on a specific address.ContextSupported Header:Supported Header: SapAuthenticatedUserNameContains 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: CamelHttpUrlRefers to the complete URL called, without query parameters.For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello. CamelHttpQueryRefers 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. CamelHttpMethodRefers to the incoming method names used to make the request. These methods are GET, POST, PUT, DELETE, and so on. CamelServletContextPathRefers 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.Procedure1. 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.114 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters of the HTTPS Sender AdapterParameter DescriptionAddress Enter the URL of the HTTP system to connect to.Note Use the following pattern: http://:/http . This should be appended by the unique address apecified in the channel. The field value supports these characters ~, -, . , $ and * . The Address field should start with '/ ' and can contain alphanumeric values, '_' and '/ '. For example 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 address after /. You can use* only at the extreme end of the address and no characters are allowed after *. A * can only be preceded with /. You cannot begin address with., - or ~ . Alphanumeric value or _ must succeed these characters. If you are using /*, it implies that uri containing the prefix preceding the /* is supported. For example. if the address is /Customer/* then uris supported are http://:/http/Customer/. Uris are case insensitive. So, http://:/http/test and http://:/http/Test is treated as same.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 115Parameter DescriptionAuthorization 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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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.116 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameter DescriptionCSRF Protected This option prevents Cross-Site Request Forgery (CSRF), which is a malicious online attack. Such attacks exposes user content without their authorization.NoteInclude 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 processingAlso, you can set the header CamelHttpResponseCode to customize the response code. You can invoke the HTTP endpoints using the syntax /http/. 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. 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1172.5.2.8 Configuring a Channel with SFTP AdapterThe SFTP adapter uses the SSH protocol to transfer files.ContextUnlike 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.NoteThe 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: CamelFileNameOverrides 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 HeaderName Type Data Type ValueCamelFileName xpath java.lang.String /p:MessageBulk/Message/FileName/text()CamelFileNameNoteBe aware of the following behavior if you have configured the file name dynamically: If you have selected the Append Timestamp option, the timestamp overrides the file name defined dynamically via the header (CamelFileName).expression java.lang.String /template/out/output${date:now:yyyyMMddHHmmss}.xmlSAP Cloud Platform Integration for processes currently supports the following ciphers for SSH (SFTP) communication: blowfishcbc,3descbc,aes128cbc,aes192cbc,aes256cbc,aes128ctr,aes192ctr,aes256ctr,3desctr,arcfour,arcfour128,arcfour256.118 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerCautionThe 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.CautionIf 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 InformationConfiguring a Channel with SFTP Sender Adapter [page 119]Configuring a Channel with SFTP Receiver Adapter [page 129]2.5.2.8.1 Configuring a Channel with SFTP Sender AdapterYou can use the SFTP sender adapter to transfer files from an SFTP server to the tenant using the SSH protocol.ContextHow the Sender SFTP Adapter WorksIf 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 serverRestrictionAn integration flow you deploy in SAP Cloud Platform Integration deploys in multiple IFLMAP worker nodes. Polling is triggered from only one of the worker nodes. The message monitoring currently displays the Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 119process 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.Procedure1. 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.Field DescriptionDirectory Use the relative path to read the file from a directory, for example, /.120 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionFile Name Name of the file to be read.NoteIf you do not enter a file name and the parameter remains blank, all the files in the specified directory are read.NoteUsage 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 corresponding integration content with the SAP Process Orchestration (SAP PO) runtime in releases lower than SAP PO 7.5 SP5.CautionFiles with file names longer than 100 characters will be processed with the following limitations: If two files with names longer than 100 characters are available for processing, 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 processing 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 121Field DescriptionAuthenticationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Authentication option for the connection to the SFTP server.You have the following options: User Name/PasswordSFTP 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 KeySFTP server authenticates the calling component based on a public key.Credential Name(Only available if you have selected User Name/Password for Authentication)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Name of the User Credential artifact that contains the user name and password.122 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionUser Name(Only available if you have selected Public Key for Authentication)ID of the user performing the file transfer.Make sure that the user name contains no other characters 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 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 connection or performing a read operation.Default value: 10000 msThe 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: 3Use 0 to disable this behavior.Reconnect Delay (in ms) How long the system waits before attempting to reconnect to the SFTP server.Default Value: 1000msAutomatically 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 123Fields and Descriptions for SFTP Adapter Sender ChannelField DescriptionRead 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 capabilities 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 completely written. Rename: Renames the file before reading. The Rename 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 operation 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 processed is ready for consumption. This file must be in the same folder as the file to be processed. Placeholders are allowed. Default: ${file:name}.done.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]124 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionSorting Select the type of sorting to use to poll files from the SFTP server: 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 fileSorting Order Select whether to sort in ascending or descending order.Lock Timeout (in min):* 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.Change Directories Stepwise Select this option to change directory levels one at a time.Include Subdirectories Selecting this option allows you to look for files in all the subdirectories of the directory.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 125Field DescriptionPost-Processing 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 Post-Processing settings are not effective.You can select one of the following options from the dropdown 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 prevent a file from being consumed twice. Select this option for SFTP servers that do not allow deletion or moving of files, but the files are to be read only once. 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 runtime node is restarted.NoteIf there is a system crash or disaster, this data will be lost and cannot be recovered later. Database: Stores the file names in a database to prevent the files from being read again when the runtime node is restarted. File name entries are deleted by default after 90 days.NoteThe database uses the server name, directory, and file name as key values to identify files uniquely across integration flows of a tenant.If you have also selected Done File Expected as Read Lock Strategy, an entry will be created in the idempotent 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. Move File: The file is moved to another directory. If you select this option, you need to specify the target 126 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField Descriptiondirectory. You can specify the target directory dynamically, for example, using the timestamp of the message. The following example uses backup folders with timestamps and replaces the file extension with bak: backup/${date:now:yyyyMMdd}/${file:name.noext}.bakIf 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.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.NoteIf 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 DescriptionBuffer Size Write file content using the specified buffer size.Default: 128 KBFlatten File Names Flatten the file path by removing the directory levels so that only the file names are considered and they are written under a single directory.Max. Messages per Poll (for sender channel only) Maximum number of messages to gather in each poll.Default: 0 Example: 1000 can be set as a limit.NoteIf you are using the sender SFTP adapter in combination with an Aggregator step and you expect a high message load, consider the following recommendation:Set the value for Maximum Messages per Poll to a small number larger than 0 (for example, 20). This ensures proper logging of the message processing status at runtime.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 127Field DescriptionPrevent Directory Traversal If the file contains any backward path traversals such as \..\ or /../.. , this carries a potential risk of directory traversal. In such a case, message processing is stopped with an error. The unique message ID is logged in the message processing log.NoteWe 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.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]SchedulerScheduler Option Field DescriptionRun Once NA Select to execute the operation immediately after deploying the integration content.NoteThis option is only recommended for testing puposes, not for productive scenarios. If this option is selected, the integration flow will also poll after each restart, after each new deployment and after each cluster update.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.128 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerScheduler Option Field DescriptionEvery Specify the interval at which the operation 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 operation 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.2.5.2.8.2 Configuring a Channel with SFTP Receiver AdapterYou can use the SFTP receiver adapter to transfer files the tenant to an SFTP server using the SSH protocol.ContextHow the Receiver SFTP Adapter WorksIf 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 Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 129direction, 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 serverProcedure1. 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.Field DescriptionDirectory Use the relative path to write the file to a directory, for example /.130 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionFile Name Name of the file to be written.NoteIf you do not enter a file name and the parameter remains blank, the content of the CamelFileName header is used as file name. If this header is not specified, 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 displayed in the message processing log (MPL) in the message 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 Appends a timestamp at the end of the file name.If the file has an extension (for example, .xml), the timestamp 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.xmlNoteBe aware of the following behavior if you have configured the file name dynamically: If you have selected the Append Timestamp option, the timestamp overrides the file name defined dynamically via the header (CamelFileName).CautionNote 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 optional port, for example, wdfd00213123:22.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 131Field DescriptionAuthenticationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Authentication option for the connection to the SFTP server.You have the following options: User Name/PasswordSFTP 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 KeySFTP server authenticates the calling component based on a public key.Credential Name(Only available if you have selected User Name/Password for Authentication)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Name of the User Credential artifact that contains the user name and password.User Name(Only available if you have selected Public Key for Authentication)ID of the user performing the file transfer.Make sure that the user name contains no other characters 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 anonymous login is made which results in an error.132 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionTimeout (in ms) Maximum time to wait for the SFTP server to be contacted while establishing connection or performing a read operation.Default value: 10000 msThe 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: 3Use 0 to disable this behavior.Reconnect Delay (in ms) How long the system waits before attempting to reconnect to the SFTP server.Default Value: 1000msAutomatically 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 ChannelField DescriptionHandling 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 133Field DescriptionChange Directories Stepwise Changes directory levels one at a time.Create Directories Automatically creates missing directory levels as provided in the file's path name.Temporary File Name(Only visible when Handling for Existing Files is set to Override)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Allows you to specify a name for a temporary file.If you override an existing file (on the SFTP server) with a new one, the following situation can occur: The subsequent 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.CautionMake 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 Exchange 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 transfer)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).temp6. Choose Advanced tab page.134 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionBuffer Size Write file content using the specified buffer size.Default: 128 KBFlatten File Names Flatten the file path by removing the directory levels so that only the file names are considered and they are written under a single directory.Max. Messages per Poll (for sender channel only) Maximum number of messages to gather in each poll.Default: 0 Example: 1000 can be set as a limit.NoteIf you are using the sender SFTP adapter in combination with an Aggregator step and you expect a high message load, consider the following recommendation:Set the value for Maximum 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 traversal. In such a case, message processing is stopped with an error. The unique message ID is logged in the message processing log.NoteWe 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1352.5.2.9 Configuring a Channel with OData AdapterPrerequisitesYou have created an integration project and an integration flow.ContextOData 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.TipIf 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.ProcedureYou 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 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField Channel DescriptionAuthorization Sender only Select User Role if you want to authorize a user to send OData requests based on the ESBMessaging.sendSelect 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.Proxy Type Receiver only 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.For more information, see .Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 137Field Channel DescriptionLocation ID Receiver only in case you choose Proxy Type as On-PremiseEnter the Location ID that you have provided in the account configuration in the cloud connectorAuthentication Receiver only Select Basic from the dropdown list if you want to use basic authentication to connect to the OData service providerSelect Client Certificate from the dropdown list if you want to use a certificate for authentication while connecting to the OData service provider.RestrictionYou 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 forwarding the principal of the inbound user to the cloud connector. 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 AdapterQuery 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.138 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteFor 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.Process in Batches option is available only for Query (GET) operation.TipIn 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..} 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 AdapterPrerequisitesYou have configured OData adapter assigned to the receiver channel.ContextYou 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.NoteIf you are connecting to a system that supports https communication, you must ensure the following: Java development kit is installed on your systemDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 139 You have referred JDK in the Eclipse configuration fileNoteFor 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 keystoreNoteFor information on importing certificate to JDK keystore, refer to JDK documentation.ProcedureYou 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:RememberIf 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 DescriptionAddress URL of OData service provider you are connecting toUsername Username you are using for authenticationPassword Password you are using for authenticationNoteYou 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.140 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerOperation DescriptionQuery (GET) Used to fetch data from the OData serviceCreate (POST) Used to insert data to an OData serviceUpdate (PUT) Used to update data to an OData serviceRestrictionThis operation is not supported for associated entitiesMerge (MERGE) Used to merge data with existing data in OData serviceRestrictionThis operation is not supported for associated entitiesRead (GET) Used to fetch a unique entity from the OData Service.Passes the key fields along with the Entity in the URI.Format: (keyfield 1, keyfield x,..)8. Select the required fields for the operation form the Fields screen area.NoteIN 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 DescriptionTop If you enter a value 'x', the system fetches the top x records form the OData service providerSkip If you enter a value 'x', the system skips x records from top and fetches the remaining records from the OData service provider10. 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 DescriptionFilter Field Field that is used in the WHERE clause for filtering.NoteField set contains the set of filterable fields returned from the OData service provider that you can use in the Filter ConditionDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 141Field DescriptionOperation Operator to be used in the WHERE condition Example < , >Type Value that the filter filed has to be compared against.When the Type is Text then specify the exact valueWhen the Type is XPath specify the entire XPath value. In case the previous Integration flow step is a content enricher, 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 element.Value Value that the filter filed has to be compared against.When the Type is Text then specify the exact valueWhen the Type is XPath specify the entire XPath value. In case the previous Integration flow step is a content enricher, 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 SuccessFactors QueryNoteMultiple conditions can be added if requiredRemove Any condition that is already added to the list can be selected and removed from the final Query12. Choose Finish.ResultsChoosing 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.142 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerDefining Mapping for OData Batch ProcessingPrerequisites 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 projectContextWhen 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.ProcedureThis 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 Platform 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 143NoteRefer to 2031746 for more details on the structure of request and response XSD.Mapping Definition for Reference InsertWhen 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 tag.You can use a mapping step to do this. Consider the following example. 0 Description Name 0 0 The primary key is . You need to map the key element to your reference to for successfully executing reference insert operation.2.5.2.10 Configuring a Channel with Ariba AdapterPrerequisites 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.144 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https://launchpad.support.sap.com/#/notes/2031746ContextYou 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 businessspecific documents in cXML format to and from the Ariba Network. Examples of business documents are purchase orders and invoices.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.Procedure1. 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 AdapterSection Parameter DescriptionConnection Details Connectivity URL You need URL to which the cXML requests 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 request to this URL which internally takes care of sending payload to the correct URL.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 145Section Parameter DescriptionConnection 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 messages.Default deployment mode is Production.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 account 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.146 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerSection Parameter DescriptionAuthentication 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 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 CertificateClient, then enter the alias details in the Private Key Alias field.This alias is used to identify the keystore credentials deployed on the SAP Cloud Platform Integration account.For User, you can enter Network User Id or Network ID, depending 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 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 that is conducting the cXML conversation. It must consist of the software company name and the product name.Language Language that is used for constructing the cXML conversation.The only supported language is EN.Scheduler (only valid for the sender channel)Run Once Run a data polling process immediately after deploying the project.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 147Section Parameter DescriptionOn Date Specific date on which the data polling 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.NoteIf 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 February, 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 p.m., enter 16:10. Note that the time must be entered in 24-hour format.Every xx minutes between HH hours and HH hoursThe connector fetches data from the Ariba system every xx minutes between HH hours and HH hours.NoteIf 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.NoteYou 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}148 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer ${property.credentialName}ResultsIn 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 AdapterPrerequisitesYou 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).ContextYou 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 elses 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/ .NoteNote that externalization is supported only for string fields of the adapter (User, Keywords, User Name, and OAuth settings).Do not externalize other properties. Although the user interface allows this, the integration flow check will be erroneous.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 149http://help.sap.com/disclaimer?site=https%3A%2F%2Fdev.twitter.com%2FProcedure1. 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 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 DescriptionEndpoint To access Twitter content, you can choose among the following general options. Send TweetAllows you to send content to a specific user timeline. SearchAllows you to do a search on Twitter content by specifying keywords. Send Direct MessageAllows you to send messages to Twitter (write access, direct message).User(only in case as Endpoint you have selected Send Direct Message)Specifies the Twitter user from which account the information is to be extracted.Page Size Specifies the maximum number of results (tweets) per page.Number Of PagesSpecifies the number of pages which you want the tenant to consume.Attributes of the Twitter Receiver Adapter (Filter Settings)Field DescriptionKeywords(only in case as Endpoint you have selected Search)Specifies the keywords used to filter the results.Use commas to separate different keywords or a valid Twitter Search API query (for more information, go to https://dev.twitter.com/rest/public/search ).150 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdev.twitter.com%2Frest%2Fpublic%2FsearchField DescriptionLanguage(only in case as Endpoint you have selected Search)Specifies the search language.Attributes of the Twitter Receiver Adapter (OAuth Settings)Field DescriptionConsumer Key An alias by which the consumer (tenant) that requests Twitter resources is identifiedConsumer SecretAn alias by which the shared secret is identified (that is used to to define the token of the consumer (tenant))Access Token An alias by which the access token for the Twitter user is identifiedIn order to make authorized calls to the TwitterAPI, your application must first obtain an OAuth access token on behalf of a Twitter userAccess Token SecretAn alias by which shared secret is identified that is used to define the token of the Twitter userThe 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 AdapterContextYou 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 151The 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 elses 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/ .Procedure1. 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 DescriptionEndpoint To access Facebook content, you can choose among the following general options. Get PostsAllows you to fetch specific Facebook posts. Get Post CommentsAllows you to fetch specific Facebook post comments. Get UsersAllows you to fetch details of a specific user. Get Visitor FeedsAllows you to fetch feed of all the visitors to a specific user or a page.User/Page ID Specifies the Facebook user from which account the information is to be extracted.Timeout (ms) Specifies a timeout (in miliseconds) after which the connection to te Facebook platform should be terminated.152 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2FAttributes of the Facebook Receiver Adapter (OAuth Settings)Field DescriptionApplication ID An alias by which the consumer (tenant) that requests Facebook resources is identifiedApplication SecretAn alias by which the shared secret is identified (that is used to to define the token of the consumer (tenant))Access Token An alias by which the access token for the Facebook user is identifiedIn order to make authorized calls to the Facebook API, your application must first obtain an OAuth access token on behalf of a Facebook userThe 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 AdapterPrerequisitesYou 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.NoteFirst, 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 Platform Integration runtime worker node and the systems you are using to connect to the SuccessFactors system are in the list of allowed IP addresses.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 153ContextThe SuccessFactors adapter provides three message protocols for you to communicate with the SuccessFactors system. They are:1. SOAP - Configuring SuccessFactors Adapter with SOAP Message Protocol [page 155]2. OData V2 - Configuring SuccessFactors Adapter with OData V2 Message Protocol [page 164]NoteThis is available only for the receiver channel.3. OData V4 - Configuring SuccessFactors Adapter with OData V4 Message Protocol [page 170]NoteThis is available only for the receiver channel.4. REST - Configuring SuccessFactors Adapter with REST Message Protocol [page 171]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 intervalsNoteThe scheduler is available only for the sender channel.NoteThe password for connecting to the SuccessFactors system should be deployed onto the tenant via the Credentials deployment wizard available in the Node Explorer.TipYou 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.154 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.2.13.1 Configuring SuccessFactors Adapter with SOAP Message ProtocolContextYou use this procedure to configure the SuccessFactors adapter with the SOAP message protocol.NoteYou can now pass filter conditions via header or property while performing an asynchronous or ad-hoc operation.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.Procedure1. 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 DescriptionAddress 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 credentials on the tenant.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 155Field DescriptionProxy Type Type of proxy you want to use to connect to the SuccessFactors 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 Platform 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 information, 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 SuccessFactors systemOperation: Query/Insert/Update/UpsertQuery: SFQL (SuccessFactors Query Language) query type that is used to communicate with the SuccessFactors systemNoteQuery 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 Syntaxkey1=value1&key2=value2NoteYou can specify the custom parameters in four ways:=;=,value>156 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField Description=value;=value;; here, the variable contains both the key and its value.ExampleexternalKeyMapping=costCenter;processinactiveEmployees=trueExample${property.ECERP_PARAMETERS}=costCenter;${header.ECERP_PARAMETERS}=trueExample${property.ECERP_PARAMETERS};${header.ECERP}, which contains the key-value pair.Example${property.ECERP_PARAMETERS}=processinactiveEmployees=true;resultOptions=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.CautionIf you find that the Query operation stops due to a timeout, reduce the Page Size and execute the operation again.In the case of Insert/Update/Upsert operations, this value indicates the maximum number of records you can send in a payload.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 157Field DescriptionCautionSince the SuccessFactors system supports a maximum page size of 800, you must ensure that the maximum number of records in the payload for data manipulation 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.TipThe 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.RestrictionYou cannot use Process in Batches option with Query operation if the Process Call step is used in a Multicast branch.NoteBy 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.TipIn 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.} 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.158 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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.Parameters and Values of SuccessFactors Adapter SchedulerField DescriptionRun 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 system.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.NoteIf 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 executed 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 initiated. 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.NoteIf 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 the reference for scheduling the data polling cycle.9. Save the changes.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1592.5.2.13.1.1 Modeling Operations for SuccessFactors SOAP Web ServicePrerequisites 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.ContextYou 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.Procedure1. In the Connect to System window, provide values in the fields based on the descriptions in the table below and choose Next.Field DescriptionAddress URL of the SuccessFactors system that you are connecting toCompany ID SuccessFactors company IDUser Name Your user name for authenticationPassword Relevant password for the specified user nameProxy Communication Select this checkbox if you want to manually specify the proxy detailsProxy Host Proxy host nameProxy Port Proxy port number2. 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.160 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer3. 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 162]. Refer to the following table when specifying filter conditions.Field DescriptionFilter Field Field that is used in the SuccessFactors API WHERE clause for filtering.NoteThe field set contains the set of filterable fields returned 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 element.Value Value that the filter field has to be compared against.If the type is Text, specify the exact valueIf 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 AND or OR condition that needs to be used in the query WHERE clause filter condition.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 161Field DescriptionAdd The condition will be added to the generated SuccessFactors query.NoteMultiple conditions can be added if required.Remove Any condition that is already added to the list can be selected 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 _$XX, only 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 ScenariosYou 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.NoteThe following steps guide you through the configuration of the delta sync conditions only. For an end-to-end procedure for creating and executing operations, see Modeling Operations.Delta SyncWith 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: lastModified2. In the Operation field, select >.3. In the Type field, select Delta Sync. maxDateFromLastRun is automatically populated in the Value field.162 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteIf 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 ConfigurationWith 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 ConfigurationYou 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.CautionChoose 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 RunsWith 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: lastModified3. 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1635. Choose Add.6. Select a field of type DATETIME for the Filter Field. Example: lastModified7. 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 ProtocolContextYou use this procedure to configure the SuccessFactors adapter with the OData V2 message protocol.RememberThe OData V2 message protocol is only available if you are using the SuccessFactors adapter in the receiver channel.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.TipIf 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.Procedure1. 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.164 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer6. Provide values in the fields based on the descriptions in the following table.Field DescriptionAddress 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 credentials on the tenant.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.You can choose Internet or On-premise.Operation Details Operation that you have created using the operations modeler. For more information, see . [page 166]Content Type Format of the request payload. You can select Atom or JSON.Content Type Encoding Encoding standard to be used for encoding content. Currently, UTF-8 is supported.Page Size This field is only applicable for Query operations. It indicates the number of records that the SAP Cloud Platform 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, reduce 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.RestrictionYou cannot use Process in Batches option with Query operation if the Process Call step is used in a Multicast branch.NoteBy 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 165TipIn 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...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 ServicePrerequisites 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.ContextYou 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.Procedure1. If you want to use a local EDMX file to connect to the system, perform the following substeps:166 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designera. Select the Local EDMX File checkbox.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 DescriptionAddress URL of the SuccessFactors system that you are connecting toCompany ID SuccessFactors company IDUser Name Your user name for authenticationPassword Relevant password for the specified user nameProxy Communication Select this checkbox if you want to manually specify the proxy detailsProxy Host Proxy host nameProxy Port Proxy port numberNoteIf 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.NoteFor 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.NoteFor 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.RememberIf you are performing the Insert (POST) operation and the payload contains one level of sub-entities, choose 1 from the dropdown list.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 167CautionEnsure that you select values for the Sub-Levels field only from the dropdown list.NoteThe 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 DescriptionQuery (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 (Universal Resource Indicator). Format:(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 SuccessFactors 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.RestrictionThis 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.RememberIf 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 DescriptionTop 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.168 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionFilter Field Field that is used in the SuccessFactors API WHERE clause for filtering.NoteThe field set contains the set of filterable fields returned 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 SuccessFactors query.NoteMultiple conditions can be added if required.Remove Any condition that is already added to the list can be selected and removed from the final SuccessFactors query.9. Choose Finish.ResultsChoosing Finish generates an XSD and EDMX files.The SAP Cloud Platform 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1692.5.2.13.3 Configuring SuccessFactors Adapter with OData V4 Message ProtocolContextYou use this procedure to configure the SuccessFactors adapter with the OData V4 message protocol.RememberThe OData V2 message protocol is only available if you are using the SuccessFactors adapter in the receiver channel.TipIf 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.Procedure1. 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 DescriptionAddress URL of the SuccessFactors data center that you would like to connect to.Credential Name Credential name that you have used while deploying credentials on the tenant.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.You can choose Internet or On-premise.Operation Operation that you want to perform on the OData V4 service.170 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionQuery(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 service 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 166].7. Save the changes.2.5.2.13.4 Configuring SuccessFactors Adapter with REST Message ProtocolContextYou use this procedure to configure the SuccessFactors adapter with the OData V2 message protocol.Procedure1. 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 DescriptionAddress 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 171Field DescriptionCredential Name Credential name that you have used while deploying credentials on the tenant.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.You can choose Internet or On-premise.Operation Select the operation you want to perform from the dropdown list.NoteOnly GET for the sender channel and GET andPOST for the receiver channel are currently supported.Entity LMS entity you are accessing.NoteYou can find the entity name in the relevant API documentation.Parameters Parameters to be sent to the REST service.Example: creationDate=1&active=trueNoteIn the case of the GET operation, you can fetch just the modified records in subsequent runs by using the condition lastModifiedDate=${deltasync.maxDateFromLastRun}.Page Size The number of records that are read from the SuccessFactors system in one request.If you find that the Operation stops due to a timeout, reduce 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 SchedulerField DescriptionRun Once Run a data polling process immediately after deploying the project.172 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionOn 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 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.NoteIf 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 executed 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 initiated. 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.NoteIf 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 the reference for scheduling the data polling cycle.CautionIf 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1732.5.2.14 Configuring a Channel with JMS AdapterYou configure the JMS adapter to enables asynchronous messaging by using message queues.PrerequisitesThe 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: 5GBThere 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.NoteThe 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.CautionDo not use this adapter type together with Data Store Operations steps, Gather (message 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.ContextYou 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.174 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteThe JMS adapter stores only simple data types, which includes in particular: exchange properties that do not start with Camel, as well as header (in so far they are primitive data types or strings).NoteYou 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: JMSTimestampSpecifies the time when a JMS message was created.Procedure1. 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 AdapterSection Parameters DescriptionProcessing Details Queue Name Enter the name of the message queue.Number of Concurrent Processes Enter the number of concurrent processes for each worker node. The recommended value depends on the number of worker nodes, the number of queues on the tenant, and the incoming load. The value should be as small as possible (1-5).Retry Handling Retry Interval (in s)* Enter a value for the amount of time to wait before retrying message delivery.Exponential Backoff Enter a value to double the retry interval after each unsuccessful retry.Maximum Retry Interval (in s)* Enter a value for the maximum amount of time to wait before retrying message delivery.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 175Section Parameters DescriptionDead-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.Parameters and Values of Receiver JMS AdapterSection Parameters DescriptionProcessing Details Queue Name 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 (default is 90).The minimum value for Expiration Period should be at least twice the value for Retention Threshold for Alerting.Encrypt Stored Message Select this option to encrypt the message 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 exchange properties are subject to size restrictions, which can result in problems or errors.JMS Retry HandlingNote 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.176 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerIn the setup shown, integration flow 1 receives a message from a sender, processes it, and writes the result to JMS queue 1, from where it is picked up by integration flow 2. The latter processes the message and writes it to another queue, JMS queue 2. From there, integration flow 3 picks up the message, processes it, and sends it to a receiver.Each integration flow generates a message processing log (MPL1, MPL 2, and MPL3), but all MPLs can be correlated with each other using a correlation ID. You can use the OData API to correlate the MPLs.Involved Message Processing Logs (MPLs)MPL Description CorrelationIDMPL 1 Shows that message is received from sender and submitted to JMS queue queue1XYZMPL 2 Shows that message is received from JMS queue queue1 and submitted to JMS queue queue2XYZMPL 3 Shows that message is received from JMS queue queue2 and submitted to receiverXYZIf an error occurs when sending the message to the receiver (for example, the receiver cannot be reached), and you have configured a retry handling (in the Retry Interval property), the following happens:During a retry, the message is written to an error queue, from which it is again picked up by integration flow 3. For each retry, a separate MPL is generated as indicated in the figure (MPL 3a, MPL 3b, and so on). However, all the MPLs that are associated with these retries are grouped in the Monitoring application within one MPL (and can be accessed using one MPL ID).Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1775. Save and deploy the configuration of the channel editor.ResultsManaging Locks for JMS Dead Letter HandlingIn certain cases, usage of the JMS sender adapter can cause a node failure. Such cases can, for example, occur when the JMS adapter tries to process a failed (large) message again and again. The classical approach in such cases is to undeploy the integration flow and to reprocess the message. However, in this case the content of the original message is lost.To overcome such situations, the JMS adapter provides the option Dead-Letter Queue (switched on by default). When this option is selected, the message will be 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 in order to again process the message.When operating scenarios with the JMS sender adapter, the Managing Locks editor supports you to deal with messages that cannot be processed.After the last retry, a lock entry is written that can be investigated in the Message Monitoring application under Managing Locks.NoteThe lock entry is also visible under Managing Message Queues.You can identify such lock entries by the following attributes:Attribute ValueComponent JmsDeadLetter178 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAttribute ValueEntry The message IDNoteYou 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 StepsNoteNote that the following specific exchange properties are available to be used in context of the JMS adapter:SAPJMSRetries, SAPJMSAlerttime, SAPJMSRetryAtRefer to more information on the headers and exchange properties.Related Informationhttps://blogs.sap.com/2017/07/17/cloudintegrationconfiguredeadletterhandlinginjmsadapter/Headers and Exchange Properties [page 8]Defining a Send Step [page 339]2.5.2.15 Configuring a Channel with ODC AdapterContextThe 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 179http://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F07%2F17%2Fcloud-integration-configure-dead-letter-handling-in-jms-adapter%2Fhttps://help.sap.com/saphelp_gateway20sp12/helpdata/en/3a/8e956126d741d183b93fa87f30c857/content.htmProcedure1. 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 DescriptionAddress URL of the SAP NetWeaver Gateway OData Channel that you are accessingClient Backend sytem client that you want to connect toNamespace Namespace of the serviceService Name Name of the serviceVersion Version of the serviceCredential Name Alias that you used while deploying basic authentication credentialsOperation Select the operation that you want to perform from the dropdown list.Resource Path Path to the resource that you want to perform the operation on6. In the 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.Field DescriptionAddress URL of the system that you are connecting toClient Backend system client that you are connecting toNamespace Namespace of the serviceService Name Name of the serviceVersion Version of the serviceUsername User name for authenticationPassword Relevant password for the specified username180 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer8. Save or deploy the integration flow.2.5.2.16 Configuring a Channel with LDAP AdapterPrerequisitesYou have created an integration project and integration flow.ContextThe 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. The LDAP adapter is available only in the receiver channel.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 181NoteYou cannot update multiple records in a single processing cycle. You can only perform a given operation on one record at a time.RememberYou must use SAP Cloud Platform 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 Platform Connector.Procedure1. 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 DescriptionAddress Enter the URL of the LDAP directory service that you are connecting toProxy 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. Currently, only simple option is supported.Credential Name Enter the credential name that you have deployed in the tenantOperation 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.182 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttps://help.hana.ondemand.com/help/frameset.htm?e6c7616abb5710148cfcf3e75d96d596.html2.5.2.16.1 Specific Use Cases for LDAP AdapterUsing Input Type Java (JNDI) AttributesThe 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.Adding Attributes to Template SchemaThe 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.Heres how the edited schema will look like:Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 183 Add Additional Attributes to the Message after Mapping using ScriptLet 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) { 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; }184 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerUsing Modify Operation to Change DNYou can use the Modify operation to change the DN of an LDAP record. You can do this by adding the tag to the input payload with the old DN. Specify the modified DN in tag and perform the Modify operation.Here's an example that shows a sample input payload for modiying the DN of an LDAP record: CN=CMD ABC,CN=Users,DC=dev109,DC=dev-wdf,DC=sap,DC=corp CN=CMD,CN=Users,DC=dev109,DC=dev-wdf,DC=sap,DC=corp user 123@xyz.com 123456789 2.5.2.17 Configuring a Channel with RFC Receiver AdapterYou can use Remote Function Call (RFC) to integrate on-premise ABAP systems with the systems hosted on the cloud using the Cloud connector.PrerequisitesEnsure 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.NoteFor more information on how to create RFC destinations in the Cloud connector, see Creating RFC Destination in Cloud Connector [page 581] . 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 581].ContextRFC 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, Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 185the 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.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 AdapterField DescriptionDestination RFC destination configured in SAP Cloud Platform for your application.Send Confirm Transaction (Applicable to BAPI functions) By default this option is disabled. 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.NoteEnsure the following ABAP functions are whitelisted in Cloud connector before using this option: BAPI_TRANSACTION_COMMIT BAPI_TRANSACTION_ROLLBACKCautionIf 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.NoteYou 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.}. For example ${header.abc} or ${property.abc} where abc is the value of the header or property.186 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. 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 AdapterField DescriptionDestination RFC destination configured in SAP Cloud Platform for your application.Send Confirm Transaction (Applicable to BAPI functions) By default this option is disabled. 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.NoteEnsure the following ABAP functions are whitelisted in Cloud connector before using this option: BAPI_TRANSACTION_COMMIT BAPI_TRANSACTION_ROLLBACKCautionIf 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.NoteYou 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.}. For example ${header.abc} or ${property.abc} where abc is the value of the header or property.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1872.5.2.18 Configuring a Channel with ProcessDirect AdapterUse 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).CautionMultiple 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.ContextProcessDirect 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 Platform 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 188 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhandling 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 in the integration flow's runtime configuration.TipProcessDirect 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.RestrictionCyclic loop deployment of integration flows must be avoided.Procedure1. 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 AdapterParameter DescriptionAddress URL of the target system that you are connecting to. For example, /localiprequiresnew.NoteIt may or may not start with "/". It can contain alphanumeric characters and special characters such as underscore "_" or hyphen "-". You can also use simple expressions, for example, ${header.address}.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 189Remember If the consumer has an in the , 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 , the MPL status for the consumer will be Escalated and for Producer, it will be Completed. If the producer integration flow starts with Sender, the MPL status for the consumer will be Escalated and for producer, it will be Failed. The combination of and in the producer integration flow might generate an extra MPL (Aggregator MPL) due to the default behavior of Aggregator. The 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 TransformersContextProcedure2.5.3.1 Assigning MappingPrerequisites You have configured the connections to an On-Premise repository if you have to import mapping from that repository into the workspace.NoteFor 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 19]. You can import message 190 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F02%2F14%2Fprocessdirect-adapter%2Fmappings (.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.NoteFor more information about how to import mappings from the ES Repository, see Importing SAP NetWeaver PI Objects from On-Premise Repository [page 26].ContextYou 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.CautionYou 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.Procedure1. 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 Mapping4. 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.NoteYou can assign an operation mapping only if the sender and receiver channel is configured with SOAP adapters.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 191b. In the Choose Mapping dialog, choose the dropdown icon and select Local to obtain the mapping.NoteLocal 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. NoteXSLT 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 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.NoteTo assign xslt mapping for partner directory, the valid format for value of header name is pd:::, where the parameter type is either binary or string. For example, the correct header name is pd:SenderABC:SenderXSD:Binary.You canTo access access headers via the xsl:param element192 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerFor example, when you like to access the header myHeader, you need the following expression:d. Choose OK.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.RestrictionMessage mapping does not work if the integration flow project contains whitespaces.Related InformationAvoiding Encoding Issues [page 627]2.5.3.2 Defining Content ModifierContextYou 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.ExampleIn 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'.Procedure1. Open the .iflw in the Model Configuration editor.2. If you want to add a content modifier in the integration flow, choose Add Message TransformersContent Modifier from the context menu of a connection within the pool.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1933. 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.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 pagec. 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 355].NoteDefining 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.194 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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 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 .fst. If you add a content modifier without header, body and property then you cannot trace the element.ExampleSuppose the incoming message has the following information: A10005 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: ${header.vendor}${in.body}${header.date} In the Header tab of the Content Modifier, enter the following:Name Type Valuevendor constant ABC CorpDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 195Name Type Valuedelivery date constant 25062013The output message would look like this: ABC Corp A1000525062013 Related InformationContent Modifier Basics [page 196]Avoiding Encoding Issues [page 627]Headers and Exchange Properties [page 8]Specifying Runtime Configuration [page 348]2.5.3.2.1 Content Modifier BasicsAn 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: HeadersContain information related to the message, for example, information for addressing the message sender. AttachmentsContain optional data that is to be attached to the message. BodyContains 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 196 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.orgtemporarily 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: Message HeaderYou can add headers to the message, and edit and delete headers. Message BodyYou can modify the message body part. Exchange PropertyYou 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.ExampleThe 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: A1000 5 On the Header tab of the Content Modifier, enter the following to write constant values to the message header:Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 197Name Type Valuevendor constant ABC Corpdelivery date constant 25062013On 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. ${header.vendor}${in.body}${header.date} The output message would look like this: ABC Corp A1000 5 25062013 2.5.3.3 Defining EncodersYou use this task to encode messages using an encoding scheme to secure any sensitive message content during transfer over the network.Procedure1. Open the .iflw in the Model Configuration editor.2. If you did not select the encoder pattern when creating the integration flow, choose Add Message Transformers Encoder 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 EncodeEncodes 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).198 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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.5. Save the changes.ExampleA message with the header Content-Type "text/plain" is sent to a MIME multipart encoder. The add multipart headers inline functionality is activated.Sample Codefrom("...").marshal().mimeMultipart("related", true, true, "(included|x-.*)", true);The resulting message body will be:Sample CodeMessage Body Message-ID: MIME-Version: 1.0Content-Type: multipart/related; boundary="----=_Part_0_1134128170.1447659361365"------=_Part_0_1134128170.1447659361365Content-Type: text/plainContent-Transfer-Encoding: 8bit Body text------=_Part_0_1134128170.1447659361365Content-Type: application/binaryContent-Transfer-Encoding: binaryContent-Disposition: attachment; filename="Attachment File Name" [binary content]------=_Part_0_1134128170.1447659361365 Consider the input XML payload structure to the encoder: Input for encoder If you select Base64 Encode, the output message would look like this:PG1lc3NhZ2U+DQoJSW5wdXQgZm9yIGVuY29kZXINCjwvbWVzc2FnZT4NCg==Related InformationMIME Multipart Messages [page 200]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 1992.5.3.3.1 MIME Multipart MessagesA 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 doesnt 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 HeadersYou 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:TipExample: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 EncoderThe following table summarizes how the Encoder step transforms the message depending on whether you select or deselect the option Add Multipart Header Inline.200 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerEncoder: Add Multipart Header Inline OptionAdd Multipart Header Inline DescriptionSelected 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, regardless whether it contains attachments or not.Deselected The following cases can occur: The inbound message has attachments: Encoder transforms message body and attachments 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 replaced 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 selectedAdd Multipart Header Inline deselectedMIME Multipart DecoderThe 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 201Decoder: Multipart Headers Inline OptionMultipart Headers Inline DescriptionSelected 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 attachments of the resulting message.In case the inbound message is, other than expected, no MIME multipart message with inline headers, the complete message body is interpreted as a preamble of the MIME multipart, and the resulting message is empty.Deselected The following cases can occur: The inbound message either doesnt contain the multipart header as Camel header or the Content-Type is no multipart, the Decoder step doesnt change the inbound message. 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 DecodersYou use this task to decode the message received over the network to retrieve original data.Procedure1. Open the .iflw in the Model Configuration editor.2. If you want to add a decoder in the integration flow, choose Add Message Transformers Decoderfrom the context menu of a connection within the pool.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.NoteIf this option is not selected and the content type camel-header is not set to a multipart type, no decoding takes place.202 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerIf 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.5. Save the changes.ExampleLet 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: Input for encoder 2.5.3.5 Defining Content FilterContextYou use this task if you want to filter information by extracting a specific node from the incoming message.Procedure1. Open the .iflw in the Model Configuration editor2. If you want to add content filter in the integration flow, choose Add Message Transformers Content Filter 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() .TipTo 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 203Value Type DescriptionString 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.ExampleConsider an XML payload structure- I0001 100 I0002 10 If you enter an Xpath- /Message/orders/order/count/text(). The output of the Content Filter would be- 10010Related InformationAvoiding Encoding Issues [page 627]2.5.3.6 Defining Message DigestThis integration flow step is used to calculate a digest of the Payload or parts of it and store the result in a message header.ContextIn 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.204 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteCanonicalization transforms an XML document into a form (the canonic 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.Procedure1. Open the integration flow in the Model Configuration editor.2. Select the Message Digest step and add it to the integration flow.3. Specify the following attributes for the step.Option DescriptionFilter If you only want to transform part of the message, enter an XPath expression to specify the part (optional attribute).You can also define a prefix namespace mapping (open the Properties view to do that).Canonicalization MethodYou can choose between the following methods. Canonical XML Version 1.0More information: http://www.w3.org/TR/2001/REC-xml-c14n-20010315 Canonical XML with Comments Version 1.0More information: http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments Exclusive XML Canonicalization Version 1.0More information: http://www.w3.org/2001/10/xml-exc-c14n Exclusive XML Canonicalization with Comments Version 1.0More information: http://www.w3.org/2001/10/xml-exc-c14n#WithCommentsThis is an optional attribute.Digest AlgorithmSelect the hash algorithm to be used to calculate the digest.You can choose between the following hash algorithms: SHA-1 SHA-256 SHA-384 SHA-512 MD5This is a mandatory attribute.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 205http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315%23WithCommentshttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2001%2F10%2Fxml-exc-c14nhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2001%2F10%2Fxml-exc-c14n%23WithCommentsOption DescriptionTarget Header NameEnter the name of the target header element which is to contain the hash value (digest).This is a mandatory attribute.2.5.3.7 Defining ConverterContextThe 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.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.RestrictionYou cannot use XML to CSV converter to convert complex XML files to CSV format.ProcedureYou 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.NoteAlternatively, you can also add the converter from context menu. Choose Message TransformersConverter4. 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.206 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionName Provide a name for the converter step. This field is optional.XML Schema Choose Browse and select the file path to the XML schema file that is used as the basis for message transformation. 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.xsdPath 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.NoteIf 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.NoteIf 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.NoteIf 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 207ExampleConsider 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: Value for the field XPath of Record Identifier in XSD is given as CompetencyList\Competency.After it is processed by the CSV to XML converter, the XML output appears in the following format: Role SpecificComputer SkillsSkilled in the use of computers, adapts to new technology, keeps abreast of changes, learns new programs quickly, uses computers to improve productivity. 2.5.3.7.1 Defining the JSON-to-XML ConverterThe JSON-to-XML converter enables you to transform messages in JSON format to XML format.Procedure1. 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:208 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerOption DescriptionName 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 namespace. The JSON namespace/prefix must begin with a letter 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 ConversionTo 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: 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: A1BA2 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" : "" An attribute is represented as JSON member whose name is the concatenation of '@' , the JSON prefix corresponding to the XML namespace, JSON delimiter, and the attribute name. If the attribute has no namespace, no prefix and JSON delimiter are added to the JSON name. 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 . Conversion of "@attr":null to XML is not supported (you get a NullPointerException, since cluster version 1.21 you get a JsonXmlException). The result XML document is encoded in UTF-8 and gets the XML header "". The content of the XMLNamespacetoJSONPrefix 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 .Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 209Related InformationDefine JSON to XML Converter [page 592]Conversion Rules for XML to JSON Conversion [page 213]2.5.3.7.1.2 Limitations for JSON to XML ConversionTo 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. 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" -> .Related InformationDefine JSON to XML Converter [page 592]Conversion Rules for JSON to XML Conversion [page 593]Limitations for XML-to-JSON Conversion [page 214]210 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F1999%2FREC-xml-names-19990114%2F%23NT-NCNamehttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F1999%2FREC-xml-names-19990114%2F%23NT-NCName2.5.3.7.1.3 Example: Transformations from JSON format to XML format with and without Namespace MappingWhether you select the option Use Namespace Mapping or not, leads to different transformation results.Using Namespace MappingFor 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 JSONprefixtoXMLnamespace mapping is as follows:JSON Prefix XML Namespaceabc http://com.sap/abcxyz http://com.sap/xyzWe get the following XML document: valueBvalueC1valueC2valueE No Namespace MappingFor 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 not selected.We get the followingXML document:valueBvalueC1valueC2valueEDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2112.5.3.7.2 Defining the XML-to-JSON ConverterThe XML-to-JSON converter enables you to transform messages in XML format to JSON format.ProcedureYou 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 DescriptionName 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 defined, 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 exchange property CamelCharsetName. If there is no value defined, UTF-8 is used.JSON Prefix Separator (only if the option Namespace Mapping is selected)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.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.212 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAll All elements are presented as JSON arrays.Specific Ones Only the specified elements will be represented as JSON arrays, the others as JSON objects.NoteA 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 separated by ,.A JSON array is an ordered collection of values. An array begins with [ and ends with ]. Values are separated by ,.Enter the absolute paths to the XML elements to be converted to JSON arrays. Specify all elements with a multiplicity 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 InformationLimitations for XML-to-JSON Conversion [page 214]How Streaming in the XML-to-JSON Converter Works [page 215]Conversion Rules for XML to JSON Conversion [page 213]2.5.3.7.2.1 Conversion Rules for XML to JSON ConversionTo 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. An attribute is represented as JSON member whose name is the concatenation of '@' , the JSON prefix corresponding to the XML namespace, JSON delimiter, and the attribute name. If the attribute has no namespace, no prefix and JSON delimiter are added to the JSON name. An element with no characters or child elements is represented by "element" : ""Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 213 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: A1BA2 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. The value of a complex element (having attributes for example) is represented by a separate member "$":"value". Elements with mixed content (for example. mixed1_valuevalueBmixed2_value) 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 is represented by "A":" ". If you have an element with namespace but without XML prefix whose namespace is not contained in the XMLnamespacetoJsonprefix map, then you get an exception: 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: v leads to {"A":"v"}. If you have an element with namespace and XML prefix whose namespace is not contained in the XMLnamespacetoJsonprefix map then the XML prefix is used as JSON prefix leads to "ns.A":"" (if JSON delimiter is '.').Related InformationDefine XML to JSON Converter [page 596]How Streaming in the XML-to-JSON Converter Works [page 215]Limitations for XML-to-JSON Conversion [page 214]Example: Transformation to a JSON Message without Root Element Tag [page 218]2.5.3.7.2.2 Limitations for XML-to-JSON ConversionTo 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.214 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer XML comments () 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. 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: A1BA2 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 XMLnamespacetoJSONprefix map, you get an exception: -> IllegalStateException Invalid JSON namespace: http://test.If you choose the streaming option, the namespace is ignored: v leads to {"A":"v"}.Related InformationDefine XML to JSON Converter [page 596]Conversion Rules for XML to JSON Conversion [page 213]How Streaming in the XML-to-JSON Converter Works [page 215]Example: Transformation to a JSON Message without Root Element Tag [page 218]2.5.3.7.2.3 How Streaming in the XML-to-JSON Converter WorksDuring 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 b1b2, 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 215To 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, lets consider how the following simple XML structure has to be converted to JSON: a b1 b2 c 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"}}216 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.3.7.2.4 Example: Transformations from XML format to JSON format with and without Namespace MappingWhether you select the option Use Namespace Mapping or not, leads to different transformation results.Using Namespace Mapping ExampleFor this example we look at the following XML document: valueB valueC1 valueC2 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 XMLnamespacetoJSONprefix mapping is as follows:XML Namespace JSON Prefixhttp://com.sap/abc abchttp://com.sap/xyz xyzWe get the following JSON document:{"abc:A":{"xyz:B":{"@xyz:attr1":"1","@attr2":"2","$":"valueB"},"C":["valueC1","valueC2"],"D":"","E":"valueE"}}NoteLine breaks and spaces between the elements are ignored.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 217No Namespace MappingExampleFor this example we look at the following XML document: valueBvalueC1valueC2valueE 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"}}2.5.3.7.2.5 Example: Transformation to a JSON Message without Root Element TagExamples and Special Cases of JSON Message without Root Element TagThe following examples apply to XML-to-JSON conversion:ExampleThe following example shows the transformation from XML to JSON (option Suppress JSON Root Element is selected).Input XML Message a b c d Output JSON Message { "A": "a", "B": "b", "C": "c", "D": "d" } Special Cases218 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerInput XML Message: Root Element with Simple Valuev Output JSON Message"v" Input XML Message: Root Element with no Value Output JSON Message"" Input XML Message: Root Element with Simple Value (options Suppress JSON Root Element, Steaming All are selected)ac 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 ConverterThe 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.ContextNoteContact the SAP Cloud Platform Integration Team to obtain EDI related XSD files.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 219Procedure1. Open the integration flow in the Model Configuration editor.2. Choose Add Message Transformers Converter from the context menu of a connection within the pool.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 DescriptionName Enter the name of the converter.Source Encoding Select encoding format for the incoming payload.EDI Schema Definition Select the source of schema definition.220 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionSchemas 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 developer's guide. The file name of the xml schema for EDIFACT should have the following format:UN-EDIFACT_ORDERS_D96A.xsdThe 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 message 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.xsdThe 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 221Field DescriptionHeaderName 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.NoteThis 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 Platform 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 Platform Integration support only 1 group segment (GS) per interchange segment and only 1 transaction set (ST) per group segment. SAP Cloud Platform 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.NoteEDI_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'CNT+16:10'UNT+5+1'UNZ+1+1'222 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer Output sample EDIFACT XML Message :+.? ' UNOC 3 SENDERABC 14 XXXX ReceiverXYZ 14 YYYYY 150831 1530 1 HELLO WORLD A 1 1 ORDERS D 96A UN 2 220 MY_ID 9 NA 137 201507311500 203 2 201508010930 203 Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 223 16 10 5 1 1 1 The following example shows the transformation from EDI to XML format of ASC-X12 message.Input sample ASC-X12 EDI MessageSample 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 00 00 01 784849291 01 315029991 051007 0928 / 4010 000000001 0 P ^ PO 784849291 315029991 20051007 0928224 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 1 U 004010 850 10001 00 NE 228914 20051006 BY EUR 0100 SF BEHR SERVICE GMBH 92 1939 ST BEHR SERVICE AMERICA 92 1939 10000 17 EA 91.8074 EA BP 2112910003 PD Radiator MF 2109308 17 EA 002 20060401 1 10Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 225 10001 1 1 1 000000001 2.5.3.7.4 Defining XML to EDI ConverterThe XML to EDI converter transforms a message in XML format to EDI format. You can convert EDIFACT and ASC-X12 format into XML format.ContextNoteContact the SAP Cloud Platform Integration Team to obtain EDI related XSD files.Procedure1. Open the integration flow in the Model Configuration editor.2. Choose Add Message Transformers Converter from the context menu of a connection within the pool.3. Choose Switch to XML to EDI Converter, from the context menu,.4. Provide values in fields based on description in table:Tab Field DescriptionGeneral Name Enter a name for the flow step.EDIFACT Source Encoding Select encoding format for the incoming payload.EDI Schema Definition Select the source of schema definition.226 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerTab Field DescriptionSchemas 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. The file name of the xml schema for ASC-X12 should have the format, ASC-X12_810_004010.xsd. It contains 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 227Tab Field DescriptionHeaderName 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.NoteThis 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.xsd.Use Custom Separators Select this option if you want to specify which separators are to be used in the converted message. You can select the characters available in the dropdown list for each separator.NoteYou 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 incoming payload.228 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerTab Field DescriptionEDI 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 details, please refer to the topic Validating Message Payload against XML Schema, in developer's guide. The file name of the xml schema for ASC-X12 should have the format, ASC-X12_810_004010.xsd. It contains 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 229Tab Field DescriptionHeader 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.NoteThis 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 specify which separators are to be used in the converted message. You can select the characters available in the dropdown list for each separator.NoteYou 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 Platform 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 Platform 230 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerIntegration support only 1 group segment (GS) per interchange segment and only 1 transaction set (ST) per group segment. SAP Cloud Platform 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 Platform Integration generates EDI file which uses the following separators for EDIFACT message: Data Element separator + Component Data Element separator : Segment separator SAP Cloud Platform Integration generates EDI file which uses the following separators for ASC-X12 message: Data Element separator * Component Data Element separator : Segment separator ~NoteEDI_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 :+.? ' UNOC 3 SENDERABC 14 XXXX ReceiverXYZ 14 YYYYY 150831 1530 1 HELLO WORLD A 1 1 ORDERSDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 231 D 96A UN 2 220 MY_ID 9 NA 137 201507311500 203 2 201508010930 203 16 10 5 1 1 1 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' The following example shows the transformation from XML to EDI format of ASC-X12 message.Input sample ASC-X12 XML Message 00232 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 00 01 784849291 01 315029991 051007 0928 / 4010 000000001 0 P ^ PO 784849291 315029991 20051007 0928 1 U 004010 850 10001 00 NE 228914 20051006 BY EUR 0100 SF BEHR SERVICE GMBH 92 1939 ST BEHR SERVICE AMERICA 92 1939 10000 17 EA 91.8074 EA BP 2112910003 PDDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 233 Radiator MF 2109308 17 EA 002 20060401 1 10 10001 1 1 1 000000001 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~ 234 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.3.8 Defining ScriptContextYou use this task to execute custom Java script or Groovy script for message processing. SAP Cloud Platform Integration provides a Java API to support this use case.NoteNote 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).NoteThe Java standard libraries of Java 7 can be used.Cloud Integration supports the XML Document Object Model (DOM) to process XML documents.NoteAny 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_ProcessingTo 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 .Procedure1. Open the .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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 235http://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FXML_External_Entity_%2528XXE%2529_Processinghttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FXML_External_Entity_%2528XXE%2529_Prevention_Cheat_Sheet%23Javahttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.owasp.org%2Findex.php%2FXML_External_Entity_%2528XXE%2529_Prevention_Cheat_Sheet%23Java5. 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 getHeaders() public void setHeaders(java.util.Map 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)NoteSAP Cloud Platform 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.InputStreamTo 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:236 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer public java.util.Map getProperties() public void setProperties(java.util.Map 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 getAttachments() public void setAttachments(Map)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.CautionWhen 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:Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 237https://tools.hana.ondemand.com/#cloudintegrationhttps://tools.hana.ondemand.com/#cloudintegrationArtifact Type Sample Groovy ScriptSecure Store Import packagesimport 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 Codedef 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 packagesimport com.sap.it.api.ITApiFactory; import com.sap.it.api.keystore.KeystoreService;import com.sap.it.api.keystore.exception.KeystoreException;Sample Codedef 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 ScriptValue Mapping Import packages238 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerArtifact Sample Scriptimport com.sap.it.api.ITApiFactory; import com.sap.it.api.keystore.KeystoreService;import com.sap.it.api.keystore.exception.KeystoreException;Sample Codedef 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); } 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 StepsThere 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): MessageLogFactoryProvides access to the message processing log.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 239 MessageLogSupports 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 getAttachmentWrapperObjects() void setAttachmentWrapperObjects(Map 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!")240 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerJavaScript:var messageLog = messageLogFactory.getMessageLog(message) messageLog.setStringProperty("Greeting", "Hello World!") CautionNote 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 InformationAvoiding Encoding Issues [page 627]2.5.3.8.1 Script Example for Exception Handling in HTTP ReceiverScript example to identify any exceptions that arise when sending messages using the HTTP receiver.You can use Groovy programming language (Groovy script) to identify any exceptions that arise when sending messages using the HTTP receiver.The Groovy script provides examples how to do following: Save the value of http response as a message attachment Copy the value of the http error to a http.ResponseBody property Copy the value of the http error to the message body Copy http error text and error code to properties1. Copy the following script to the script flow step.Sample Codeimport com.sap.gateway.ip.core.customdev.util.Message; def Message processData(Message message) { // get a map of iflow 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.AhcOperationFailedException")) { Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 241 // save the http error response as a message attachment def messageLog = messageLogFactory.getMessageLog(message); messageLog.addAttachmentAsString("http.ResponseBody", ex.getResponseBody(), "text/plain"); // copy the http error response to an iflow's property message.setProperty("http.ResponseBody",ex.getResponseBody()); // copy the http error response to the message body message.setBody(ex.getResponseBody()); // copy the value of http error code (i.e. 500) to a property 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; }2. Call the script flow step in an exception subprocess.2.5.4 Defining Message PersistenceContextProcedure242 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.4.1 Defining Data Store OperationsYou can use the transient data store to temporarily store messages.ContextThe transient data store (data store for sakes of simplicity) supports four types of operations:Data Store OperationsOperation 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.NoteIt is required to explicit trigger a Data Store Operations step, for example, by a Timer event.Next StepsYou 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:....Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 243....Related InformationDefining Data Store Select Operations [page 244]Defining Data Store Write Operations [page 246]Defining Data Store Get Operations [page 247]Defining Data Store Delete Operations [page 249]2.5.4.1.1 Defining Data Store Select OperationsYou can perform a select operation on the transient data store.ContextProcedure1. Open the .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.NoteAdding 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.NoteWhen retrieving a message body from a data store operation, only XML is supported.244 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAttribute DescriptionData Store Name Specifies the name of the data store (no white spaces).The default data store name for variables is sap_global_store. You must not use this name for data store operations.You can dynamically define this property based on a header. As dynamic parameter for the data store name, enter a header name in the following form: ${header.}.Visibility Defines if 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. Integration Flow: Data store is used by one integration flow.Number of Polled Messages Specifies 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.} to dynamically retrieve the number of fetched messages per poll from the message header ${xpath.} to dynamically retrieve the number of fetched messages per poll from an element in the message indicated by an xPath expressionDelete After Fetch Select this option to delete a message from the data store after successfully having fetched the message.4. Save the changes.ResultsThere 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. In case 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.Related InformationDynamic Parameters [page 14]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2452.5.4.1.2 Defining Data Store Write OperationsYou can perform a select operation on the transient data store.ContextProcedure1. Open the .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.NoteAdding 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 DescriptionData Store Name Specifies the name of the data store (no white spaces).The default data store name for variables is sap_global_store. You must not use this name for data store operations.You can dynamically define this property based on a header. As dynamic parameter for the data store name, enter a header name in the following form: ${header.}.Visibility Defines if 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. Integration Flow: Data store is used by one integration flow.Entry ID Specify an entry ID that will be stored together with the message content.246 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAttribute DescriptionDetails for the entry ID are read from the incoming message. You can enter the following kind of expressions: ${header.} to dynamically generate the entry ID from the message header ${xpath.} to dynamically generate the entry ID from an element in the message indicated by an xPath expressionIn the case of Write operations, if the Entry ID is not defined, the data store component generates an entry ID.In the case of Delete and Get operations, you can explicitly define an Entry ID or pass header SapDataStoreId.Retention Threshold for Alerting in (d) Time period (in days) by which the messages have to be fetched before an alert is raised.Expiration Period in (d) Number of days after which the stored messages are deleted (default is 90 days).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.4. Save the changes.Related InformationDynamic Parameters [page 14]2.5.4.1.3 Defining Data Store Get Operationsn perform a select operation on the transient data store.ContextDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 247Procedure1. Open the .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.NoteAdding 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 DescriptionData Store Name Specifies the name of the data store (no white spaces).The default data store name for variables is sap_global_store. You must not use this name for data store operations.You can dynamically define this property based on a header. As dynamic parameter for the data store name, enter a header name in the following form: ${header.}.Visibility Defines if 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. Integration Flow: Data store is used by one integration flow.Entry ID 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 kind of expressions: ${header.} to dynamically generate the entry ID from the message header ${xpath.} to dynamically generate the entry ID from an element in the message indicated by an xPath expressionIn the case of Write operations, if the Entry ID is not defined, the data store component generates an entry ID.In the case of Delete and Get operations, you can explicitly define an Entry ID or pass header SapDataStoreId.Delete After Fetch Select this option to delete a message from the data store after successfully having fetched the message.4. Save the changes.248 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRelated InformationDynamic Parameters [page 14]2.5.4.1.4 Defining Data Store Delete OperationsYou can perform a select operation on the transient data store.ContextProcedure1. Open the .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.NoteAdding 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 DescriptionData Store Name Specifies the name of the data store (no white spaces).The default data store name for variables is sap_global_store. You must not use this name for data store operations.You can dynamically define this property based on a header. As dynamic parameter for the data store name, enter a header name in the following form: ${header.}.Visibility Defines if 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. Integration Flow: Data store is used by one integration flow.Entry ID Specify an entry ID that will be stored together with the message content.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 249Attribute DescriptionDetails for the entry ID are read from the incoming message. You can enter the following kind of expressions: ${header.} to dynamically generate the entry ID from the message header ${xpath.} to dynamically generate the entry ID from an element in the message indicated by an xPath expressionIn the case of Write operations, if the Entry ID is not defined, the data store component generates an entry ID.In the case of Delete and Get operations, you can explicitly define an Entry ID or pass header SapDataStoreId.4. Save the changes.Related InformationDynamic Parameters [page 14]2.5.4.2 Defining Write VariablesYou use write variables to specify values for variables and support message flow execution.Procedure1. Open the .iflw in the Model Configuration editor.2. To add write variables in the integration flow, choose Add Message Persistence Write Variables from the context menu of a connection within the pool.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.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}.250 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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.NoteDefining 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 StepContextYou 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 Auditing: The SaaS Admin can use this feature to analyze messages that have been processed.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 251NoteMessages 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.Procedure1. Open the .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 SchemaThe XML validator validates the message payload in XML format against the configured XML schema.PrerequisitesYou 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.ContextYou 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 message payload. If the validation fails, the SAP Cloud Platform Integration system stops the whole message processing by default.252 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. Open the .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.NoteIf an exception occurs, then the error payload is added to SAP_XmlValidationResult header.8. Save the changes.2.5.6 Defining Message RoutingContextProcedureDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2532.5.6.1 Defining RouterPrerequisitesYou 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.ContextYou 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 ConditionsOperator Example= ${header.SenderId} = '1'!= ${header.SenderId} != '1'> ${header.SenderId} > '1'>= ${header.SenderId} >= '1'< ${header.SenderId} < '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.Procedure1. Open the .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.RecommendationWe 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.TipTo 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.NoteOnly the route that was recently selected as Default Route is considered as the default route.TipTo 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2558. 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.NoteTo 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.NoteIf 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 SplitterA splitter step decomposes a composite message into a series of individual messages and sends them to a receiver.PrerequisitesYou have selected the Splitter step or you have explicitly added the splitter step to the integration flow model.ContextYou 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.256 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. Open the .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 TypesSplitter Type DescriptionIDoc 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 message 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.NoteA 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 257Splitter Type DescriptionIterating Is used to split a composite message into a series of messages without copying the enveloping elements of the composite message.NoteA 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 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.ExampleConsider the following XML payload structure as input for the Splitter step: I0001 100 I0002 10 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: I0001 100 Output2.xml contains the following: I0002 10 258 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerUsing 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 (relative expression for the element )Next StepsWhen 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). CamelSplitIndexProvides a counter for split items that increases for each Exchange that is split (starts from 0). CamelSplitSizeProvides 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). CamelSplitCompleteIndicates whether an Exchange is the last split.NoteYou 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 InformationDefining a General Splitter [page 260]Defining an Iterating Splitter [page 263]Defining a PKCS#7/CMS Signature-Content Splitter [page 283]General and Iterating Splitter [page 284]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2592.5.6.2.1 Defining a General SplitterA 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.ContextA 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.Procedure1. Open the .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.Field DescriptionExpression TypeNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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).The following options are available: XPathThe splitter argument is specified by an XPath expression. Line BreakIf the input message is a non-XML file, it is split according to the line breaks in the input message.Empty lines in input messages will be ignored and no empty messages are created.260 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionXPath Expression(Enabled only if you select XPath in the Expression Type field)XPath to the split termYou can specify the absolute or relative path.NoteNote that only the following types of XPath expressions are supported: Absolute XPath expressions, for example, /A/B/C/D Relative XPath expressions, for example, //DThe following characters are not supported in an XPath expression: | + * >< >= Field DescriptionConsider the following inbound message: 0001 Paul Smith 0002 Seena Kumar In that case, using the following XPath expression will not be supported to split the message at the customerNumber node with the value 0001:/customerList/customers/customerNumber=0001Grouping 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.Timeout (in s) Maximum time in seconds that the system will wait for processing to complete before it is aborted.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 processing 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 further. Deactivating streaming is more memory-intensive than activating it.Parallel Processing Select this checkbox if you want to enable (parallel) processing of all the split messages at once.Stop On Exception Select this option to stop message processing if an exception occurs.6. Save the changes.262 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRelated InformationGeneral and Iterating Splitter [page 676]https://blogs.sap.com/2018/01/16/stop-on-exception-for-iteratinggeneral-splitter/2.5.6.2.2 Defining an Iterating SplitterAn iterating splitter is used to split a composite message into a series of messages without copying the enveloping elements of the composite message.ContextA 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 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.Procedure1. Open the .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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 263http://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F16%2Fstop-on-exception-for-iteratinggeneral-splitter%2FField DescriptionExpression Type 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).The following options are available: XPathThe splitter argument is specified by an XPath expression. TokenThe splitter argument is specified by a keyword. Line BreakIf the input message is a non-XML file, it is split according to the line breaks in the input message.Empty lines in input messages will be ignored and no empty messages are created.Token (Enabled only if you select Token in the Expression Type field)The keyword or token to be used as a reference for splitting the composite message264 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionXPath(Enabled only if you select XPath in the Expression Type field)XPath to the split termYou can specify the absolute or relative path.NoteNote that only the following types of XPath expressions are supported: Absolute XPath expressions, for example, /A/B/C/D Relative XPath expressions, for example, //DThe following characters are not supported in an XPath expression: | + * >< >= Field DescriptionConsider the following inbound message: 0001 Paul Smith 0002 Seena Kumar In that case, using the following XPath expression will not be supported to split the message at the customerNumber node with the value 0001:/customerList/customers/customerNumber=0001Grouping 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.Timeout (in s) Maximum time in seconds that the system will wait for processing to complete before it is aborted.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 processing 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 further. 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.Stop On Exception Select this option to stop message processing if an exception occurs.6. Save the changes.266 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRelated InformationGeneral and Iterating Splitter [page 676]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 SplitterContextYou 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 267http://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F16%2Fstop-on-exception-for-iteratinggeneral-splitter%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F26%2Fgrouping-option-of-iteratinggeneral-splitter%2FProcedure1. Open the .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 DescriptionName 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 messages are processed simultaneously.268 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionTimeout (in sec) Set the time limit in seconds for the EDI splitter 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.EDIFACTSource Encoding Use the appropriate encoding format of the inbound EDIFACT interchange. The following encoding formats are available in the EDI splitter: UTF-8 ISO-8859-1You can also set this field using the header EDISPLITTER_EDIFACT_SOURCE_ENCODING. The values for the headers can be one of the following: UTF-8 ISO-8859-1Validate Message This mode initiates the validation of the split EDI messages.You can also set this field using the header EDISPLITTER_EDIFACT_VALIDATE_MESSAGE. The values for the headers can be one of the following: true falseValidate 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: envelop envelopAndMessageDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 269Field DescriptionTransaction 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 entity. Message: Allows the splitter to validate the entire EDI interchange as independent individual entities.ExampleConsider a scenario where you receive a bulk EDI message containing five purchase orders. In Interchange mode, if a single EDI message fails, the entire interchange 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: interchange message270 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionEDI Schema Definition Validates an EDI interchange against the XSD schema for conversion. Deploy the schema by selecting it from an integration flow or by defining 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.NoteIf you wish to remove an XSD file from the project, then select the relevant XSD file and choose Remove.You can also set this field using the header EDISPLITTER_EDIFACT_SCHEMA_SOURCE. The values for the headers can be one of the following: Header IntegrationProjectProcess Invalid Messages 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 271Field DescriptionHeader 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.NoteThis 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.272 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionCreate Acknowledgement The following options are available to process the functional acknowledgement: Not Required: Does not transmit the functional acknowledgement. Check EDI Envelop: Allows the splitter to check the request for a functional acknowledgement in the UNB segment of an EDI interchange. Required: The splitter creates and transmits 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 checkEDIEnvelopNoteIn case of rules violation, you see the acknoedgement in a specific format. Here's how the acknowledge is formatted:AK4 is represented only for the first element 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*2If there is an exclusive violation, AK4 is represented for only the first element. For example, AK4*2*358*10.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 273Field DescriptionInterchange Number The splitter uses the interchange number of an EDI message in the functional acknowledgment. It allows the splitter to read the interchange 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: useFromEDIMessage numberRangeNumber range Define the number range assigned to an interchange number in the functional acknowledgement.You can also set this field using the header EDISPLITTER_EDIFACT_NUMBER_RANGE. 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: defaultVersion useFromEDIMessageInclude UNA Segment The trading partner uses the UNA segment in the CONTRL message to define special characters, such as separators and indicators. This option enables the splitter to include special 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: true false274 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionX12Source Encoding Use the appropriate encoding format of the inbound X12 interchange. The following encoding formats are available in the EDI splitter: UTF-8 ISO-8859-1You can also set this field using the header EDISPLITTER_X12_SOURCE_ENCODING. The values for the headers can be one of the following: UTF-8 ISO-8859-1Validate Message The EDI splitter performs validation on incoming ASC X12 message against the XSD scheme, and has the following options available during validation: No Validation: Validation is not performed on the incoming payload. Standard Validation : Validates the incoming payload for the structural violations defined in XSD schema.You can also set this field using the header EDISPLITTER_X12_VALIDATE_MESSAGE_OPTION. The values for the headers can be one of the following: none basicDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 275Field DescriptionTransaction Mode The splitter has two modes for validating a transaction: Interchange: Allows the splitter to validate the entire EDI interchange as a single entity. Message: Allows the splitter to validate the entire EDI interchange as independent individual entities.You can also set this field using the header EDISPLITTER_X12_TRANSACTION_MODE. The values for the headers can be one of the following: interchange messageEDI Schema Definition Validates an EDI interchange against the XSD schema for conversion. Deploy the schema by selecting it from an integration flow or by defining 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.NoteIf you wish to remove an XSD file from the project, then select the relevant 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: Header IntegrationProject276 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionHeader 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.NoteThis 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.Create Acknowledgement The following options are available for processing a functional acknowledgement: Not Required: Does not transmit the functional acknowledgement. Check EDI Envelop: Allows the splitter to check the request for a functional acknowledgement in the UNB segment of an EDI interchange. Required: The splitter creates and transmits 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 following: required notRequired checkEDIEnvelopDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 277Field DescriptionInterchange Number The splitter uses the interchange number of an EDI message in the functional acknowledgment. It allows the splitter to read the interchange 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_NUMBER. The values for the headers can be one of the following: useFromEDIMessage numberRangeNumber Range Define the number range assigned to an interchange number in the functional acknowledgement.You can also set this field using the header EDISPLITTER_X12_NUMBER_RANGE. The value for the header should be the number range artifact name.Exclude AK3 and AK4 Notifies the splitter to exclude the AK3 and AK4 segments from the functional acknowledgement message. However, it retains the details of the AK1, AK2, AK5, and AK9 segments 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 falseError Codes for EDI SplitterThe error codes for UN-EDIFACT interchange and message levels are given below:Interchange LevelError Code Error Text NotifiesThat...2 Syntax version and/or level is not supported by the recipient.278 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteIf 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 LevelError 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 segment.30 Groups have been mixed with messages/packages outside of groups in the interchange.Message LevelError 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 segment, data element, composite data element, or component 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 alphabetic (component) data element or one or more alphabetic characters were used in a numeric (component) data element.38 A decimal sign is not preceded by one or more digits.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 279Error Code Error Text Notifies That...39 The length of the data element received exceeds the maximum 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 description.The error codes for ASC-X12 are given below:AK3 Segment Level Error CodesError 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 CodesError 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 CodesError 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.280 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAK9 Functional Group Level Error CodesError 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 actual count.ExampleEANCOM Document StandardThe 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 StandardHeader Name ValueSAP_EDI_Payload_Format XML or Flat-FileSAP_EDI_Document_Standard EANCOMSAP_EDI_Sender_ID 4006501000002SAP_EDI_Sender_ID_Qualifier 14SAP_EDI_Receiver_ID 5790000016839SAP_EDI_Receiver_ID_Qualifier 14SAP_EDI_Interchange_Control_Number 0650SAP_EDI_Message_Type INVOICSAP_EDI_Message_Version DSAP_EDI_Message_Release 96ASAP_EDI_Message_Controlling_Agency ENSAP_EDI_Message_Association_Assign_Code EAN008EDIFACT Document StandardThe 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'Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 281UNH+1+INVOIC:D:96A:UN'Value for EDIFACT Document StandardHeader Name ValueSAP_EDI_Payload_Format XML or Flat-FileSAP_EDI_Document_Standard UN-EDIFACTSAP_EDI_Sender_ID 4006501000002SAP_EDI_Sender_ID_Qualifier 14SAP_EDI_Receiver_ID 5790000016839SAP_EDI_Receiver_ID_Qualifier 14SAP_EDI_Interchange_Control_Number 0650SAP_EDI_Message_Type INVOICSAP_EDI_Message_Version DSAP_EDI_Message_Release 96ASAP_EDI_Message_Controlling_Agency UNASC-X12 Document StandardIf 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 StandardHeader Name ValueSAP_EDI_Payload_Format XML or Flat-FileSAP_EDI_Document_Standard ASC-X12SAP_EDI_Sender_ID WWRESNDRSAP_EDI_Sender_ID_Qualifier ZZSAP_EDI_Receiver_ID WWRERCVRSAP_EDI_Receiver_ID_Qualifier ZZSAP_EDI_Interchange_Control_Number 000046668282 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerHeader Name ValueSAP_EDI_Message_Type 810SAP_EDI_Message_Version 004010SAP_EDI_GS_Sender_ID GSRESNDRSAP_EDI_Receiver_ID GSRERCVRSAP_EDI_GS_Control_Number 12345SAP_GS_Functional_Id_Code INSAP_GS_Responsible_Agency_Code XSAP_ISA_Acknowledgment_Requested 0SAP_ISA_Auth_Information_Qualifier 00SAP_ISA_Control_Standards_IdentifierSAP_ ISA_Security_Information_Qualifier 00SAP_ISA_Usage_Indicator PSAP_ISA_Version_Number 004010SAP_MessageProcessingLogIDSAP_ST_Control_Number2.5.6.2.4 Defining a PKCS#7/CMS Signature-Content SplitterThe 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.ContextDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 283Procedure1. Open the .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 DescriptionPayload File Name Name of the file that should contain the payload after the splitting stepSignature File Name Name of the file (extension .sig) that should contain the signature after the splitting stepWrap 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 using the base64 encoding scheme after splitting.6. Save the changes.Related InformationSigning the Message Content with PKCS#7/CMS Signer [page 299]2.5.6.2.5 General and Iterating SplitterThe two splitter types General Splitter and Iterative Splitter behave differently in their handling of the enveloping elements of the input message.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.The Iterative Splitter splits a composite message into a series of messages without copying the enveloping elements of the composite message.284 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerThe following figures illustrate the behavior of both splitter types. In both cases an input message comprising four items is split into individual messages.General SplitterDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 285Iterative SplitterIf you expect a non-XML file as the input message and, as a result, selectLine Break in the Expression Type field, General Splitter and Iterative Splitter process the message differently, as shown for the following example.Let's assume the input message has the following content:Sample Code"Customer Number", "No of Ordered Articles", "Price" "0001", "100", "1000 EUR""0009", "1", "10000 EUR" "0011", "20", "999 EUR"The General Splitter would transform this into the following messages:"Customer Number", "No of Ordered Articles", "Price" "0001", "100", "1000 EUR" "Customer Number", "No of Ordered Articles", "Price" "0009", "1", "10000 EUR" "Customer Number", "No of Ordered Articles", "Price" "0011", "20", "999 EUR"286 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerThe Iterative Splitter would transform this into the following messages:"0001", "100", "1000 EUR" "0009", "1", "10000 EUR" "0011", "20", "999 EUR"Example for General Splitter (XML Message)Assume you expect an XML message and like to address elements with a Expression Type XPath. This is an example for an input message representing items ordered by a certain customer. 0001 Paul Smith Shirt Shoe Shoe Car Watch To split this message, you need to define a namespace mapping (of a prefix and a namespace) for the integration flow (under Runtime Configuration), for example: xmlns:n1=http://myCustomer.com.When configuring the General Splitter and like to address the message element with an XPath expression, make sure that you refer to the namespace prefix.Use the following XPath expression:/n1:customer/n1:orderNoteNamespaces are inherited from parent to child element. That is the reason why in the XPath expression you need to indicate the namespace explicitely.Then the message is split with the General Splitter into the following two chunks: 0001 Paul Smith Shirt Shoe Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 287 0001 Paul Smith Shoe Car Watch Example for Iterative Splitter (XML Message)This is an example for an input message representing orders from different customers. 0001 Paul Smith 0002 Seena Kumar To split this message, you need to define a namespace mapping (of a prefix and a namespace) for the integration flow (under Runtime Configuration), for example: xmlns:n2=http://myCustomer.com.Use the following XPath expression:/n2:customerList/n2:customersThen the message is split with the Iterative Splitter into the following two chunks: 0001 Paul Smith 0002 Seena Kumar 288 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.6.3 Defining an AggregatorYou can use the Aggregator step to combine multiple incoming messages into a single message.PrerequisitesCautionUsage of an Aggregator step in a Local Integration Process or Exception Subprocess is not supported.ContextNoteWhen 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.Procedure1. 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:Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 289Attribute DescriptionIncoming Format Content type of the incoming messageCurrently, only XML (Same Format) can be selected.It is important that the incoming messages have the same format.Aggregation Algorithm Specifies how the correlated messages should be treated.You can select one of the following options: Combine in SequenceAggregated message contains all correlated incoming messages, and the original messages are put into a sequence. CombineAggregated message contains all correlated incoming messages.The Aggregator step generates an SAP Process Integration 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 message 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 sequence 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} attribute, and, based on the value, decide how to continue.Note that the header attribute can only have one of the following values: timeoutProcessing of the aggregate has been finished because the configured Completion Timeout has been reached. predicateProcessing of the aggregate has been finished because the Completion Condition has been fulfilled.290 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAttribute DescriptionCompletion Timeout 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} attribute, and, based on the value, decide how to continue.Note that the header attribute can only have one of the following values: timeoutProcessing of the aggregate has been finished because the configured Completion Timeout has been reached. predicateProcessing of the aggregate has been finished because the Completion Condition has been fulfilled.Data Store Name Enter the name of the transient data store where the aggregated 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 integration flow) can be used. Global data stores cannot be used for this purpose.NoteThe Integration Operations feature provides a Data Store Viewer that allows you to monitor your transient data stores.ResultsThe Aggregator step creates a message in the multi-mapping format with just one message instance: ... Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 291Next StepsThe following header is supported by this step: CamelAggregatedCompletedByThis header is relevant for use cases with message aggregation.The header attribute can only have one of the following values: timeoutProcessing of the aggregate has been stopped because the configured Completion Timeout has been reached. predicateProcessing of the aggregate has finished because the Completion Condition has been met.Related InformationMulti-Mappings [page 362]2.5.6.4 Defining Multicast of MessagesPrerequisites You have created an integration project and integration flow. You have opened the Integration Designer perspective.ContextMulticast 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 multicast2. Sequential multicastParallel 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.292 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRestriction1. 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.RememberYou 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.ProcedureYou 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 element from palette to the integration flow.c. If you want to add sequential multicast, drag the element from the palette to the integration flow.3. If you want to combine the messages, see Defining Join and Gather [page 294].4. Add the necessary elements based on your scenario to complete the integration flow.5. Save the changes.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2932.5.6.5 Defining Join and Gather ContextThe 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 format2. XML messages of the same format3. Plain text messagesBased 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 African Coffee Table 80 120 African Coffee Table 80 120 294 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer 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:tableProcedureYou 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 element.5. To add Gather, drag 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 DescriptionXML (Same Format) If messages from different routes are of the same formatXML (Different Format) If messages from different routes are of the different formatPlain Text If messages from different routes are of the plain text format7. Select value for Aggregation Algorithm field based on description given in table.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 295Incoming Format Aggregation AlgorithmDescription Additional Fields DescriptionXML (Same Format) Combine Combine the incoming messages without any conditions. The messages are combined in Multimapping format.NoteIn case you are using 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.NA NACombine at XPath Combine the incoming messages at the specified XPathCombine from Source (XPath)XPath of the node that you are using as reference in the source message to retrieve the information.Combine at Target (Path)Path to node which would act as the root for combined messageXML (Different Format)Combine Combine the incoming messages without any conditions in multi mapping format.NoteIn case you are using the mapping step to map the output of this strategy you can add the XSDs 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.NA NA296 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerIncoming Format Aggregation AlgorithmDescription Additional Fields DescriptionPlain Text Concatenate Concatenate the information from the different sources one after anotherNA NA8. 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 ElementsMessage-level security features allow you to digitally encrypt/decrypt or sign/verify a message (or both). The following standards and algorithms are supported.ContextEnsuring 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.ProcedureRelated InformationSigning the Message Content with PKCS#7/CMS Signer [page 299]Signing the Message Content with an XML Digital Signature [page 300]Verifying the PKCS#7/CMS Signature [page 316]Verifying the XML Digital Signature [page 318]Encrypting and Signing the Message Content with PKCS#7/CMS [page 324]Encrypting and Signing the Message Content with OpenPGP [page 326]Decrypting and Verifying the Message Content with OpenPGP [page 328]Signing the Message Content with Simple Signer [page 298]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 2972.5.7.1 Signing the Message Content with Simple SignerSimple Signer makes it easy to sign messages to ensure authenticity and data integrity when sending a message to participants on the cloud.ContextYou 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.Procedure1. 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 DescriptionName 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 AlgorithmSelect a signature algorithm for the RSA or DSA private key type.Signature Header NameEnter the name of the message header where the signature value in Base64 format is stored.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.NoteWhen you save the configuration of the Signer element as a template, the tool stores the template in the workspace as .fst.298 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.7.2 Signing the Message Content with PKCS#7/CMS SignerContextYou 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 SignerIn 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.Procedure1. Open the .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.NoteBy 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 SignerParameters DescriptionName Name for the signer stepBlock 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 299Parameters DescriptionInclude Content in Signed Data You can choose to include the original content that is to be signed in the Signed Data element. This Signed Data element is written to the message body. Otherwise, you can choose to include the Signed Data in the SapCmsSignedData header and only keep the original content in the message body.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.NoteWhen you Base64-encode the Signed Data, you encode 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.Signer Parameters The following parameters can be defined: Private Key Alias Signature Algorithm Include Certificates Include Signing Time6. 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.NoteWhen you save the configuration of the Signer element as a template, the tool stores the template in the workspace as .fst.2.5.7.3 Signing the Message Content with an XML Digital SignatureYou sign with an XML digital signature to ensure authenticity and data integrity while sending an XML resource to the participants on the cloud.Context300 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. 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 DescriptionPrivate Key Alias Enter an alias for selecting a private key from keystore. You can also enter ${header.headername} or ${property.propertyname} to read the name dynamically from a header or exchange property.Signature Algorithm Signature algorithm for the RSA or DSA private key typeUsing the private key, the sender encrypts the digest.Digest Algorithm Digest algorithm that is used to calculate a digest from the canonicalized XML documentNote that if the digest algorithm is not specified, the digest algorithm of the signature algorithm is used by default.Signature Type Enveloping XML SignatureThe 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 SignatureThe 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. Detached XML SignatureThe digital signature is a sibling of the signed element. There can be several XML signatures in one XML document.XML Schema file path (only if the option Detached XML Signatures is selected)Choose Browse and select the file path to the XML schema file that is used to validate the incoming XML document. This file has to be in the package source.main.resources.xsdDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 301Parameter DescriptionSignatures for Elements (only if the option Detached XML Signatures is selected)Choose Add to enter the XPath to the attribute of type ID, in order to identify the element to be signed. Example: /nsx:Document/SubDocument/@IdNamespaces prefixes must be defined in the namespaces mapping of the runtime configuration.Parent Node (only if the option Enveloped XML Signature is selected for the attribute Signature Type)Specify how the parent element of the Signature element 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 Signature is selected for the attribute Signature Type and Specified by Name and Namespace is selected for Parent Node)A local name of the parent element of the Signature elementThis attribute is only relevant for Enveloped XML Signature case. The Signature element is added at the end of the children of the parent.Parent Node Namespace (only if the option Enveloped XML Signature is selected for the attribute Signature Type and Specified by Name and Namespace is selected for Parent Node)Namespace of the parent element of the Signature elementThis attribute is only relevant for Enveloped XML Signature case. In the Enveloped XML Signature case, a null value is also allowed to support no namespaces. An empty value is not allowed.XPath Expression (only if the option Enveloped XML Signature is selected for the attribute Signature Type and Specified by XPath expression is selected for Parent Node)Enter an XPath expression for the parent node to be specified.This attribute is only relevant for Enveloped XML Signature case.302 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameter DescriptionKey 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 ChainX509Certificate elements representing the certificate chain of the signer keyNoteThe KeyInfo element might not contain the whole certificate chain, but only the certificate chain that is assigned to the key pair entry. X.509 CertificateX509Certificate element containing the X.509 certificate of the signer key Issuer Distinguished Name and Serial NumberX509IssuerSerial element containing the issuer distinguished name and the serial number of the X.509 certificate of the signer key Key ValueKey Value element containing the modulus and exponent of the public keyNoteYou can use any combination of these four attribute values.Sign Key Info With this attribute you can specify a reference to the KeyInfo 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 DescriptionCanonicalization Method for SignedInfo Specify the canonicalization method to be used to transform the SignedInfo element that contains the digest (from the canonicalized XML document).Transform Method for Payload Specify the transform method to be used to transform the inbound message body before it is signed. CamelXmlSignatureTransformMethodsDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 303http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2Fxmldsig-core%2FSpecifies 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.ExampleSample CodeExample 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". ... ... ... aUDFmiG71 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-xml-c14n-20010315http://www.w3.org/2000/09/xmldsig#enveloped-signaturehttp://www.w3.org/TR/2001/REC-xml-c14n-20010315http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithCommentshttp://www.w3.org/2001/10/xml-exc-c14n#http://www.w3.org/2001/10/xml-exc-c14n#WithComments5. On the Advanced tab page, under XML Document Parameters, specify the following parameters.304 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23enveloped-signature%2Chttp%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23enveloped-signature%2Chttp%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23enveloped-signaturehttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315%23WithCommentshttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2001%2F10%2Fxml-exc-c14nhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2001%2F10%2Fxml-exc-c14n%23WithCommentsProperty DescriptionReference Type Enter the value of the type attribute of the content reference.If you enter null or empty, no reference type is created.More information: http://www.w3.org/2000/09/xmldsig#ObjectNamespace 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 element.If you specify no value, no Id attribute is added to the Signature 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 disallowed 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.NoteWhen you save the configuration of the Signer element as a template, the tool stores the template in the workspace as .fst.Related InformationXML Digital Signature [page 306]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 305http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23Objecthttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23Object2.5.7.3.1 XML Digital SignatureThe 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.ExampleA 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.) ( )? ()? 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)ExampleA 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): ... 306 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer ( )? ()? 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.ExampleA 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): (>< [signed element/Reference/Reference!-- signed element must have an attribute of type ID -->!-- signed element must have an attribute of type ID -- )?> ... < ... >SignatureValue)? > 2.5.7.4 Signing the Message Content with XML Advanced Electronic SignatureXML Advanced Electronic Signature (XAdES) allows you to create digital signatures based on XML Digital Signature that include additional qualifying properties.ContextThe 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 FormsForm Allows you to ...XAdES-BES (XAdES-BES (1) and XAdES-BES (2))(XAdES Basic Electronic Signature)Create an electronic signature based on XML Digital Signature that includes additional properties to further qualify the signature.XAdES-EPES(XAdES Explicit Policy based Electronic Signature)Create an electronic signature based on XML Digital Signature that unambiguously refers to a signature policy agreed between signer and verifier. An electronic 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 digital signature.NoteThere 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 .ProcedureDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 309http://help.sap.com/disclaimer?site=http%3A%2F%2Feur-lex.europa.eu%2FLexUriServ%2FLexUriServ.do%3Furi%3DOJ%3AL%3A2000%3A013%3A0012%3A0020%3AEN%3APDFhttp://help.sap.com/disclaimer?site=http%3A%2F%2Feur-lex.europa.eu%2FLexUriServ%2FLexUriServ.do%3Furi%3DOJ%3AL%3A2000%3A013%3A0012%3A0020%3AEN%3APDFhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.3.2%2Fts_101903v010302p.pdfRelated InformationSigning the Message Content with XAdES-BES (1) [page 310]Signing the Message Content with XAdES-BES (2) [page 313]Signing the Message Content with XAdES-EPES [page 314]Message Headers [page 316]Limitations [page 310]2.5.7.4.1 LimitationsSAP 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.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.ContextFor more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf .310 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.3.2%2Fts_101903v010302p.pdfhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.3.2%2Fts_101903v010302p.pdfProcedure1. 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 DescriptionTime 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 signature was created.Certificate Specify whether the certificate of the signing key is to be added to the signature.You have the following options: NoneAdd no certificate. Certificate OnlyAdd digest value, issuer, and serial number of the signing certificate. Certificate ChainAdd digest value, issuer, and serial number of the certificates of the certificate chain.Digest Algorithm (only when either Certificate Only or Certificate Chain is selected for Certificate)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 corresponds to the one that has been used to sign the message content.SHA256 is proposed as the default.Certificate URI Specify a reference to the certificate.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 corresponding 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 DescriptionClaimed 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 311Option DescriptionCertified 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 roleThe specified attribute certificates must be base-64 encoded.To specify a certified role, choose Add and specify the following attributes: EncodingSelect 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 DescriptionDescription (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.Example: text/xmlThis information can help to parse the signed document correctly.5. Specify the Identifier of the data object format.Option DescriptionName 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 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 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 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 encoding (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: empty string OIDAsURI uses Uniform Resource Name. OIDAsURN uses Uniform Resource Name.Description (only relevant if an Identifier Name has been specified)Provide a reference to further documentation of the identifier.312 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerOption DescriptionDocumentation 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.ContextFor more information, see http://uri.etsi.org/01903/v1.3.2/ts_101903v010302p.pdf .Procedure1. 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 DescriptionCommitment Specify the commitment. You can select one of the following values: Proof of originIndicates that the signer recognizes to have created, approved and sent the signed data object.The URI for this commitment is: http://uri.etsi.org/01903/v1.2.2#ProofOfOrigin . Proof of receiptIndicates 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 deliveryIndicates 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 senderIndicates 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 .Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 313http://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.3.2%2Fts_101903v010302p.pdfhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfOriginhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfReceipthttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfDeliveryhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfSenderOption Description Proof of approvalIndicates 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 creationIndicates 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 ReferenceEnter references (URIs) to one or more documents where the commitment is described.Commitment QualifierEnter 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.2.5.7.4.4 Signing the Message Content with XAdES-EPESThis 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.ContextA 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 .Procedure1. 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.314 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfApprovalhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.2.2%23ProofOfCreationhttp://help.sap.com/disclaimer?site=http%3A%2F%2Furi.etsi.org%2F01903%2Fv1.3.2%2Fts_101903v010302p.pdfOption DescriptionSignature Policy Specify whether a signature policy is to be added, and, if yes, in which form this should be done. None ImpliedThe 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 IDThe 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 optional Qualifier attribute can be used to provide information about the applied encoding (values OIDAsURN or OIDAsURI).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.As default, SHA256 is used.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).You can either enter the digest value manually or calculate it.To calculate the digest value, you have the following options: Calculate from IdentifierDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 315Option DescriptionCalculates 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://. Browse to local FileCalculates the digest value from the content of a file.Policy Qualifier (only if the value Explicit ID has been selected for Signature Policy)Enter additional information qualifying the signature policy. To do this, enter text or an XML fragment with the root element SigPolicyQualifier.2.5.7.4.5 Message HeadersFor certain message headers you can define specific elements in the XAdES form. CamelXmlSignatureXAdESQualifyingPropertiesIdSpecifies the Id attribute value of the QualifyingProperties element. CamelXmlSignatureXAdESSignedDataObjectPropertiesIdSpecifies the Id attribute value of the SignedDataObjectProperties element. CamelXmlSignatureXAdESSignedSignaturePropertiesIdSpecifies the Id attribute value of the SignedSignatureProperties element. CamelXmlSignatureXAdESDataObjectFormatEncodingSpecifies the value of the Encoding element of the DataObjectFormat element. CamelXmlSignatureXAdESNamespaceOverwrites the namespace parameter value. CamelXmlSignatureXAdESPrefixOverwrites the prefix parameter value.2.5.7.5 Verifying the PKCS#7/CMS SignatureYou perform this task to ensure that the signed message received over the cloud is authentic.ContextIn 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.316 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerThe 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.NoteIn 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.NoteExceptions that occur during runtime are displayed in the Message Processing Log view of the Operations Integration perspective.Procedure1. Open the .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.NoteBy 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 VerifierParameter DescriptionName Name for the Verifier stepHeader is Base64 Encoded Select this option to verify if the Signed Data encoded in Base64 is included in the headerDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 317Parameter DescriptionBody is Base64 Encoded Select this option to verify if the Signed Data encoded in Base64 is included in the message bodyPublic Key Alias Enter an alias name to select a public key and corresponding certificate from the keystore5. Save the changes.2.5.7.6 Verifying the XML Digital SignatureContextThe 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.NoteFor enveloping and enveloped XML signatures the incoming message body must contain only one XML signature.The Verifier supports enveloping and enveloped XML signatures and detached XML signatures. In the enveloping XML signature case, one reference whose URI references the only allowed 'Object' element via ID, and an optional reference to the optional KeyInfo element via ID is supportedWorking of XML Signature VerifierIn 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.NoteXML Signature Verifier supports both enveloping and enveloped signatures318 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. 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.Parameters and Values of XML Signature VerifierParameters DescriptionName Name for the Verifier stepDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 319Parameters DescriptionExpected Signature Type Select the expected Signature type: Enveloping or Enveloped XML Signature: If the signature is contained within the content or the signature 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 methodSo 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). ()? ( ()? )? ()? Verifying Enveloped Signature: If the incoming message has enveloped signature One reference with empty URI and an optional reference to the KeyInfo element via its ID is allowed An additional transform containing a canonicalization method is supported, beside the transform with algorithm "http://www.w3.org/2000/09/xmldsig#enveloped-signature".320 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerParameters DescriptionSo 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). ()? ( ()? )? ()? Detached XML Signatures: If the signature is contained within the content or the signature contains the signed data.Verifying Detached Signature If the incoming message 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 valueSo it implies, a detached XML signature with only the following structure is supported ("?" denotes zero or one occurrence, the brackets [] denotes variables whose values can vary).( Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 321Parameters Description ... * ( )? ()? )+Check for Key Info Element Select this option to check that the XML Signature contains a Key Info elementThe 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).NoteIn case multiple public key aliases are specified (using the Public Key Alias attribute), this option is mandatory (to make sure that from the KeyInfo the public key can be derived).322 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.w3.org%2FTR%2F2001%2FREC-xml-c14n-20010315Parameters DescriptionDisallow DOCTYPE Declaration Select this option to disallow DTD DOCTYPE declaration in the incoming XML messagePublic Key Alias Enter an alias name to select a public key and corresponding certificateUsing the Public Key Alias, you can enter one or multiple public key aliases for the Verifier.NoteIn 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 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 installed and imported into the keystore, the Verifier refers to the new certificate. That 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 signing senders.3. Save the changes.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3232.5.7.7 Encrypting and Signing the Message Content with PKCS#7/CMSContextYou 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 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.Procedure1. Open the .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.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.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-encoded.324 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerSignatures in PKCS7 Message Select one of the following options: Enveloped Data OnlySelect this option if you want to apply encryption only. Signed and Enveloped DataSelect this option if you want to apply both encryption 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.Receiver Public Key Alias Specify one or more aliases.You use the alias to select the public key from the keystore.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:Signature Algorithm Specify the signature (digest) algorithm.Include Certificates If you activate this option (value true), the signer's certificate chain will be added to the SignedAndEnvelopedData object of the message.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.NoteWhen you save the configuration of the Encryptor element as a template, the tool stores the template in the workspace as .fst.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3252.5.7.8 Encrypting and Signing the Message Content with OpenPGPYou have the option to encrypt the message content using Open Pretty Good Privacy (OpenPGP).ContextYou 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.Procedure1. Open the .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 DescriptionInclude 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:Field DescriptionContent 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.NoteThe length of the secret key depends on the encryption algorithm that you choose.Compression Algorithm Select the algorithm you want to use to compress the payload.326 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerField DescriptionArmored Select if you want the output to be radix 64 (base64) encoded with additional header.Integrity protected Data Packet Select if you want to create an Encrypted Integrity Protected Data Packet. This is a specific format where an additional 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 DescriptionDigest 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 algorithm. 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 KeyringSpecify 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 StepsYou 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.NoteThe SFTP adapter sets the header CamelFileName automatically.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 327http://help.sap.com/disclaimer?site=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc48802.5.7.9 Decrypting and Verifying the Message Content with OpenPGPYou have the option to decrypt the message content using Open Pretty Good Privacy (OpenPGP).ContextProcedure1. Open the .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 DescriptionName 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 MessageSpecify the expected payload content type which is to be decrypted. You have the following options: No Signatures ExpectedWhen you select this option, the decryptor expects an inbound message that doesn't contain a signature.NoteIf you select this option, inbound messages that contain a signature cannot be processed. Signatures OptionalWhen you select this option, the decryptor can process messages that either contain a signature or not. Signatures RequiredWhen you select this option, the decryptor expects an inbound message that contains a signature.Signer User ID of Key(s) from the Public KeyringSpecify 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.328 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.8 Defining EventsContextProcedure2.5.8.1 Configuring an End Message EventAn End Message event ends a message processing sequence.ContextThis is how using an End Message event has an impact on the message status (shown in the message processing log).NoteTo 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 329Procedure2.5.8.2 Configuring Timer StartYou can configure an integration flow to automatically start and run on a particular schedule.ContextIf 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.NoteWhen you use timer with Run Once option enabled, the message is triggered only when the integration flow is deployed. If you want to trigger the message with an integration flow that you have already deployed, you have to Undeploy the integration flow and Deploy it again. If you restart the integration flow bundle, message will not be triggered.When you delploy or undeploy an integration flow with Timer-Scheduler, the system automatically releases all the scheduler locks.NoteYou 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.330 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. Open the .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.5. Select the Timer Start and in the Properties view, provide values in fields based on description in table.Parameters & Values of TimerField DescriptionRun once Runs a data polling process immediately after deploying the projectOn Date Specific date on which the data polling process has to be initiated to fetch data from the SuccessFactors systemDaily Run message polling every day to fetch data from the SuccessFactors systemWeekly 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.NoteIf 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 February, 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.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.NoteIf 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3312.5.8.3 Configuring an Escalation EventAn escalation event stops message processing. For synchronous messages, an error messages is sent to the sender.ContextA 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.Procedure1. Open the .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 permissions (for example, HTTP 403 error).Receiver tries to redirect Receiver could not be reached (HTTP 302 error).Internal server error in receiver Internal server error occurred in the receiver system (for example, HTTP 500 error).332 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerOthers not further qualified Escalation category has not been further qualified.2.5.9 Defining TasksContextProcedure2.5.9.1 Defining Service CallPrerequisitesYou 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-Reply2. Content Enrichment2.5.9.1.1 Defining Request-ReplyContextYou can use this task to enable request and reply interactions between sender and receiver systems.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 333Example: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.Procedure1. Open the .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).NoteIn this release, the channel connecting the external system with the Request-Reply element can be configured with the SOAP, SuccessFactors, HTTP and IDOC adapters.334 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.9.1.2 Defining Content EnricherPrerequisitesYou have created an integration project and integration flow.ContextThe 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 EnrichConsider the following original and lookup messages.Original Message 111 Santosh ext_111 22 Geeta ext_222 Lookup Message 1 ext_111 0 9999 1st street Gulbarga 2 ext_111 1 1010 23rd CrossDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 335 Chitapur 3 ext_333 1 007 Raichur If you use Combine as the aggregation strategy, the enriched message appears in the following format.Enriched Message 111 Santosh ext_111 22 Geeta ext_222 1 ext_111 0 9999 1st street Gulbarga 2 ext_111 1 1010 23rd Cross Chitapur 3 ext_333 1 007 Raichur Enrich offers you control on how you can merge the original and lookup message. In this example, we consider the node as the reference to enrich the original message with the lookup message.Consequently, you specify the following values while configuring the Content Enricher.336 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerSection Field User inputOriginal Message Path to Node Employees/EmployeeKey Element locationLookup Message Path to Node EmployeeLocations\emplocationKey Element locationidThe enriched message will be in the following format. 111 Santosh ext_111 1 ext_111 0 9999 1st street Gulbarga 2 ext_111 1 1010 23rd Cross Chitapur 22 Geeta ext_222 In the enriched message, you can see the content of the lookup message after the node .RememberIf 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 entries that the key element refers to.ProcedureYou 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3374. 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 StrategyProcedureYou use this subprocedure for using the Combine strategy.1. In the dropdown list, choose Combine.2. Save changes.Using Enrich StrategyProcedureYou 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 DescriptionOriginal Message Path to Node Path to the node in the original message where content has to be enriched. Ensure that you provide it in the format // with being the root node and being the node where new content will resideKey Element Key element in the original message contained in the Path to Node specified above. Ensure that you provide only the key element name.Lookup Message Path to Node Path to the node that would be used in the lookup message to enrich the content. Ensure that you provide it in the format // with being the root node and being the reference nodeKey Element Key element in the lookup message contained in the Path to Node specified above. Ensure that you provide only the key element name.3. Save the changes.338 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.5.9.1.3 Defining a Send StepYou use the Send step type to configure a service call to a receiver system for scenarios and adapters where no reply is expected.PrerequisitesYou have created an integration project and an integration flow.ContextYou 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) adapterProcedure1. 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 CallYou can invoke a local integration process from the main integration process by using a local call.Related InformationAssigning a Local Integration Process [page 340]Defining a Looping Process Call [page 340]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3392.5.9.2.1 Assigning a Local Integration ProcessPrerequisitesYou have created a local integration process.ContextProcedure1. 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 InformationDefining a Local Integration Process [page 344]2.5.9.2.2 Defining a Looping Process CallYou can execute a local integration process in a loop.Context340 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProcedure1. 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 DescriptionExpression Type Specify the kind of expression you want to enter in the Condition Expression field.You have the following options: XMLFor XPath expressions, for example: //customerName = Smith Non-XMLFor Camel Simple Expression LanguageNoteExamples:${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 254]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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 341http://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlNoteThe 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:12345 Transaction_of_last_Day The appropriate response for this request is: 1... ... 55... true The account owner has to call the web service again and again until there are no more transactions available and he gets the response:falseTo 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 false, 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.342 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRelated InformationDefining a Local Integration Process [page 344]2.5.10 Defining Additional Elements (Others)ContextProcedureDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3432.5.10.1 Defining a Local Integration ProcessYou 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.ContextNoteFor 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.RestrictionYou cannot use the following integration flow steps within the Local Integration Process step: Another Local Integration Process End Message Sender Receiver AggregatorProcedure1. Open the .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 Others Local Integration Process 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.NoteYou can use an Error End event to throw the exception to default exception handlers.344 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer4. Save the changes.2.5.10.2 Defining Exception SubprocessContextYou use this element to catch any exceptions thrown in the integration process and handle them.RestrictionYou cannot use Exception Subprocess in a Multicast branch.Procedure1. Open the .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 Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 345 Start Event End Event Router 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 ConfigurationYou can define how to handle errors when message processing fails at runtime.ContextProcedure1. 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.346 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerError Configuration ParametersParameter DescriptionError Handler Strategy Select one of the following options: NoneWhen a message exchange could not be processed, no error handling strategy is used. Raise ExceptionWhen 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 integration flow, then an exception is raised back to the sender.Return Exception to Sender When defining the error handling strategy for SOAP messages, you can now define if in case of an exception the SOAP fault exception is to be returned to the sender. If you dont 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 ClassificationAt 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 347To 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.NoteYou 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_1When 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.2.5.13 Specifying Runtime ConfigurationWith the Runtime Configuration you can specify general properties of the integration flow.ContextProcedure1. 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.348 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerRuntime Configuration PropertiesProperty Allows you to ...Namespace Mapping Map a prefix to a namespace at runtime.Enter a namespaceprefix pair with a format xmlns:=.This parameter is required for elements such as the content-based router, content modifier or content filter that can use namespaces in their configuration. You can either enter the namespaceprefix pair or the tool automatically fills the namespaceprefix pair whenever a lookup is performed for the assigned WSDL.You can also enter multiple namespaceprefixes as shown in the example: xmlns:test=http://sapcd.com/testABC;xmlns:test2=http://sapcd.com/testPQR.Notexmlns:ns0=https://hcischemas.netweaver.neo.com/hciflowHere, ns0 is the prefix and https://hcischemas.netweaver.neo.com/hciflow is the namespace. That way, in a router, you can specify 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. All Events: Allows all messages to be logged and displayed Error Events: Allows only error messages to be logged and displayed No Logging: Hides logging informationDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 349Property 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 (|).NoteIf 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 character..* substitutes zero or more non-space characters.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 Platform Integration), senders have to authenticate against a load balancer component. The load balancer sets the following 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.350 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerProperty Allows you to ...HTTP Session Handling Choose one of the following options: NoneSession handling is switched off On ExchangeEach exchange corresponds to a single session (use this option for stateful services) On Integration FlowOnly one session will be used across the whole integration flow (only use this option for stateless services)NoteOnce an HTTP session has been initialized, there is usually no further authentication for the duration of the session (one of the advantages of using sessions). This means that all further HTTP requests on that server are processed in the context of the user that was logged on when the session 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.NoteSuccessFactors (OData V4) and SuccessFactors (REST) adapters do not support HTTP session handling.4. Save the changes.Related InformationDefining Router [page 254]Defining Content Filter [page 203]Defining Content Modifier [page 193]Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3512.5.14 Defining Transaction HandlingYou can configure transaction handling on integration process or local integration process level.ContextTransactional 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 ElementsRecommendet Settings/LimitationsAggregator steps Required for JDBC (mandatory)CautionChoosing JDBC transaction handling is mandatory to ensure that aggregations are executed consistently.Data Store operations Required for JDBC (recommended but not mandatory)In case you choose Not Required, the related database operation is committed per single step and no end-to-end transaction handling is implemented.WriteJMS sender adapterThis applies also for scenarios that include the AS2 adapter.Not RequiredIn general, no transaction handling is required.NoteThese adapters do not require JMS transaction handling. Their retry handling works independent from the selected transaction handler.JMS sender adapter together with JDBC resources (Data Store, Aggregator, Write variables)This applies also for scenarios that include the AS2 adapter.Required for JDBCNoteHowever, note that it is not recommended to use transactional JMS resources and JDBC resources in parallel.352 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerIntegration Flow Contains the Following ElementsRecommendet Settings/LimitationsJMS 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 adapterRequired 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 RequiredNo JMS transaction handler is required.NoteDistributed 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 adapterRequired for JMSThis 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.Procedure1. 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 353Transaction Handling for Integration ProcessAttribute DescriptionRequired for JDBC 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). Maximum 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 system database.Required for JMS You can specify that Java Message Service (JMS) transactional database processing is applied (to ensure that the process is accomplished within one transaction).You can define a Transaction Timeout (in minutes). Maximum 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 system database.Not Required No specific transactional processing is configured. The integration 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 ProcessAttribute DescriptionFrom Calling Process 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) transactional database processing is applied.You can define a Transaction Timeout (in minutes). Maximum 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 system database.354 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerAttribute DescriptionRequired for JDBC 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). Maximum 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 system database.2.5.15 Externalizing Parameters of Integration FlowContextExternalizing 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 Platform 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 DirectoryThe 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 DNList 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 355 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.NoteIf 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).NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.The reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured.Procedure1. Externalize parameters by extraction.NoteYou 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.356 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designera. From the Project Explorer view, open the .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.c. In the Extract Parameters dialog, select the parameters that have to be extracted and be available for externalization.NoteIn the Console view, you can see a summary of the parameter extraction.d. Open the Externalized Parameters view.NoteYou 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 (Save Parameters icon), from the toolbar of the view.NoteThe 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.RememberYou 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 nameExample: If you are using SuccessFactors adapter, you cannot externalize the Name field in the General tab. Flow step nameExample: If you are using CSV to XML Converter, you cannot externalize the Name field in the Properties tab. Branch name in MulticastExample: 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 ElementsDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 357Example: If you are configuring the Sender step, you cannot externalize the Subject DN or Issuer DN fields when you are using certificatebased authentication.NoteYou 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 .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: {{}}.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.NoteIn 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).NoteIn 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).358 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNote 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 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 ParametersPrerequisitesYou have enabled mass configuration of system properties.NotePlease refer to the below procedure steps for enabling mass configuration of system properties.ContextYou 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.Procedure1. 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3592. 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.NoteDo not use Extract Parameters option directly.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.NoteDo 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}}/?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 _enableBasicAuthentication_.b. Extract all parameters relevant to receiver channel authentication mode using the format _enableBasicAuthentication_.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 Show View Others .b. In the Show View dialog, choose Others Configurations .c. In the Configurations view toolbar, choose (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.NoteA 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.360 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designerh. If you want to deploy the projects, select Deploy Integration Content and enter the Tenant ID.i. Choose Finish.ResultsThe completion of this task triggers the build automatically and your projects get deployed with the updated externalized parameters.2.6 Working with the Mapping EditorContextProcedure2.6.1 Creating a Message Mapping ContextYou 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:Procedure1. Create a mapping object under the package src.main.resources.mapping under the Project Explorer view.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3612. 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.2.6.1.1 Multi-MappingsA 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: ...... 2.6.1.2 Creating a Mapping ObjectContextYou perform this task to create a mapping object required for message mapping.Procedure1. 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 New Other... .4. In the New wizard, select SAP NetWeaver Cloud Integration Message Mapping .5. Choose Next.362 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer6. In the New Message Mapping wizard, enter a name for the mapping.7. Choose Finish.ResultsThe 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 SignatureContextYou perform this task to define the signature of a mapping object.Procedure1. 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.RestrictionIn 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3632.6.1.4 Defining the MappingContextYou perform this task to the define a mapping for the mapping object.Procedure1. 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.NoteIf 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.364 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer8. 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 symbola. Add a value for the parameter.b. Choose OK9. 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.NoteTo 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 EditorContextYou 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 structureDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 365NoteWhenever you open a mapping where any changes have been made to the source or target element, the editor notifies you about the change.Procedure1. In the Definition tab page editor, choose the icon ( Check for consistencies between changed message structures ).2. In the Reload Confirmation dialog, choose OK to continue with correcting of structural inconsistencies.NoteThis 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.366 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration DesignerNoteIf you want to use the field marked for deletion, then select the icon (Delete Field icon) again to cancel the delete action.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 ExcelContextYou use this procedure when you want to see the mapping details offline without signing into the Eclipse or NWDS.Procedure1. 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3672.7 Testing an Integration FlowContextProcedure2.7.1 Checking the ConsistencyContextYou 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.Procedure1. Right-click on the project and choose Execute Checks.TipYou 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.368 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.8 Operations-Related TasksContextProcedure2.8.1 Deploying an Integration ProjectPrerequisitesYou have obtained the details about the system management node from the SaaS Admin and entered in Windows Preferences SAP Cloud Platform 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.ContextYou 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).Procedure1. 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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 369NoteYou 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 Bundle-Version as .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 .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 IFLMAP and check for the project bundle that is deployed in the Component Status view.NoteYou 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 LogsContextYou use this procedure to view the errors of an integration content artifact for monitoring purposes.Procedure1. Launch SAP Cloud Platform 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 TM: .6. Choose the Component Status View tab.7. In the context menu of an artifact in error state, select Show Error Details.370 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer2.8.3 Activating TracingYou activate tracing to check the message payload after each and every integration flow step.PrerequisitesCautionDo 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.RolesOperations RolesView Message Trace IntegrationOperationServer.readExport MPL IntegrationOperationServer.readesbmessagestorage.readNodeManager.read You have verified that the integration flow for which tracing is required is deployed.ContextYou 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 Web-based Monitor.Select your integration flow in the Manage Integration Content and set the log level for this integration flow in the Log Configuration section.Procedure1. In Eclipse, in the Node Explorer, double-click the tenant management node to open the tenant editor. To enable the trace in2. On the Trace Configuration tab, select the integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3713. Choose Enable.NoteOn 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 TraceYou 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 372 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designersuch a scenario, the message heading is displayed between dashed lines and below the heading, payload content appears. The same is shown below.------------------------- Message 1------------------------Token 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 configureonly integration flow. You cannot view trace for multiple messages. Please select one message only.2.8.3.2 Export MPLContextYou enable this element to export and analyze a trace.ProcedureSelect 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 ProjectDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 373Note You can export only message processing log for a configureonly integration flow. You cannot export MPL for multiple messages. Please select one message only.2.8.3.3 Import TraceContextYou can import the content by using Import Trace. Import Trace imports content with trace only.Procedure1. 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 HelpCheatsheetCheatsheets 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 Platform Integration folder.3. Select the most appropriate cheatsheet from the list and choose OK.374 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content Using the Eclipse Integration Designer4. Follow the instructions mentioned in the cheatsheet.Context-sensitive HelpContext -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 ContentDeveloping Integration Content Using the Eclipse Integration Designer P U B L I C 3753 Packaging Integration Content in SAP Cloud Platform Integration Web ApplicationSAP Cloud Platform Integration Web application 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.3.1 Uploading Integration PackagesYou use this procedure to upload and 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.ContextProcedure1. Launch the SAP Cloud Platform Integration Web application by accessing the URL provided by SAP.2. Enter your credentials to log on to it.3. Choose Upload in the Design tab to upload an integration package.4. Browse and select the integration package for uploading.5. Choose OK.Uploaded file appears in the Design tab of the application.376 P U B L I CDeveloper's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application3.2 Creating an Integration PackageYou use this procedure to create an integration package that is specific to your integration scenario.Procedure1. Launch the SAP Cloud Platform Integration Web application by accessing the URL provided by SAP.2. Enter your credentials to log on to it.3. Choose the Design tab.4. Choose Create.5. In the 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 Add Process Integration in the Artifacts ( ) section.2. Enter the required details in the Create Process Integration 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 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.NoteCreate a zip file of the required value mapping in your project folder before importing it as an artifact.Developer's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application P U B L I C 377 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 service as an artifact, choose Add OData Service in the Artifacts ( ) section. For more information, see .7. If you want to remove the integration package, choose Delete Package.8. If you want to keep the integration package, choose Save.9. If you want to terminate the creation of integration package, choose Cancel before saving it.3.3 Working with an Integration PackageYou use this procedure to perform various miscellaneous functions with the artifacts of an integration package.Procedure1. Launch the SAP Cloud Platform Integration application by accessing the URL provided by SAP.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 .5. Choose View metadata to view the metadata of the artifact.6. Choose Deploy to deploy the artifact.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.8. Choose Download to download an artifact.You can only download integration flows, files, and value mappings. Your local file system stores the downloaded artifact(s) with name as .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.378 P U B L I CDeveloper's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application3.4 Editing an Integration PackageProcedure1. Launch SAP Cloud Platform Integration Web application by accessing the URL provided by SAP.2. If you are a new user, choose Signup.3. If you have user credentials, choose Login.4. Choose the Design tab.5. Select the required integration package.6. In the editor, choose Package Content.7. Choose Edit.8. If you want to edit integration content of type process integration, data integration, file, or value mapping, choose You get the following functions: View metadata Delete Download Configure (only for integration flows) Deploy (only for data flows and integration flows)9. If you want to edit artifact of type URL, choose .You get the following functions: View metadata Delete10. If you want to edit the metadata of an artifact, then perform the following substeps:a. Choose View metadata.b. In the dialog box, choose Edit.NoteThe name of integration flow should begin with alphabets 'Aa' to 'Zz' or underscore '_' . It can also 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.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 artifact(s) or integration package(s). 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.11. If you want to edit a specific integration package that is present in the Discover tab, then perform the following substeps:a. Choose the Discover tab.Developer's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application P U B L I C 379b. Select the integration package.c. Choose to copy it to the Design tab.You can copy an integration package to the Design tab by opening the integration package in the Discover tab and choosing Copy in the integration package editor. If the copy fails, then choose Create copy to create a copy of the integration package or Overwrite to erase errors and register new information in the integration package.12. If you want to download multiple artifacts at once, then perform the following substeps:a. Select the Artifacts checkbox.b. From the list of artifacts, select the ones you want to download.c. Choose Actions Download all .13. If you want to keep the changes made to the integration package, choose Save.14. If you want to discard the changes, choose Cancel before saving it.3.5 Locking Integration PackagesYou use this procedure to restrict multiple users from editing an integration package.ContextProcedure1. Launch SAP Cloud Platform Integration Web Application by accessing the URL provided by SAP.2. Choose the Design tab.3. Choose an integration package from the list.4. Choose the Edit button.When you choose Edit in an integration package editor, it locks the integration package and prevents any other user from modifying it.5. Choose Save after making the required changes. Choosing Save, Cancel or Delete releases the integration package and allows it to be modified by other users. In case you close your browser without saving the integration package or there is a session timeout for you, the integration package remains locked by you unless you edit and save, cancel or delete it.380 P U B L I CDeveloper's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application3.6 Updating Integration Packages and their ContentsYou use this procedure to update integration content to existing integration packages, which ensures that the package is up-to-date with latest content. This also helps in bringing down your overall operational and maintenance cost.ContextProcedure1. Launch SAP Cloud Platform Integration Web application.2. In the Discover tab, select the integration package that you want to update.3. Choose the Design tab.4. Choose the integration package that you want to update.5. Choose Publish.The Publish Content dialog box appears.6. Choose your update method:1. If you want to update the content manually, choose Update manually option.2. If you want to auto update the content in the next polling cycle, choose Publish updates immediately option.3. If you want to auto update the content on a specified date, perform the following steps:1. Choose Publish updates on specified date option.2. Select the specific date that you want to publish the updates.NoteIf you want to publish the updates as a configureonly type of content, select the Publish as configure-only content checkbox.7. Choose Publish.An auto-generated email template appears in Microsoft Outlook, with the message to the Content Reviewer that upon successful review, the selected package needs to be published to the Internal/Public Catalog.8. Choose Send.Developer's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application P U B L I C 3813.7 Exporting Integration PackagesYou 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.ContextProcedure1. Choose the Design tab.2. Select the required integration package from the list.3. 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.382 P U B L I CDeveloper's Guide: Managing Integration ContentPackaging Integration Content in SAP Cloud Platform Integration Web Application4 Developing Integration Content With the SAP Cloud Platform Integration Web ApplicationThe Web application helps you to access and design Cloud integration content available for a particular account on an OnDemand integration infrastructure.The Web application 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:Components of the Web ApplicationComponent 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 the Web application). You can view the description of integration packages and copy integration packages to your customer 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 artifacts such as integration flows, value mappings and security-related artifacts.You can check the status of messages and integration artifacts for your tenant cluster.You can also access the dedicated message monitor and integration content monitor to view more information.Settings Select the product profile to specify the target runtime for your content.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 383Related InformationProduct Profiles [page 394]4.1 Understanding the Basic ConceptsThis section provides an overview of the concepts of integration content design.Related InformationElements of an Integration Flow [page 384]Product Profiles [page 394]4.1.1 Elements of an Integration FlowAn 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 processingThe following figure provides a simplified and generalized representation of an integration flow.384 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSenders and ReceiversYou 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.NoteTo 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.NoteTo 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 FlowsYou use message flows to connect various integration flow elements.Related InformationConfigure Adapter in Communication Channels [page 438]4.1.1.1 Headers and Exchange PropertiesThe 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: Message headerThis 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.NoteNote that data written to the message header during a processing step (for example, in a Content Modifier or Script step) will also be part of the outbound message addressed to a receiver system (whereas properties will remain within the integration flow and will not be handed over to receivers). Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 385Because 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 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 propertyFor 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.NoteA subset of these parameters is provided by the associated Open Source components, such as Apache Camel.Headers Relevant for Signing with XML Digital Signature CamelXmlSignatureTransformMethodsSpecifies 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.ExampleSample CodeExample of this use case: The XML signature verifier of the receiving system expects an XML signature as shown in the following code snippet.386 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationThe 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". ... ... ... aUDFmiG71 Headers Relevant for Message Signing with XML Advanced Electronic Signature CamelXmlSignatureXAdESQualifyingPropertiesIdSpecifies the Id attribute value of the QualifyingProperties element. CamelXmlSignatureXAdESSignedDataObjectPropertiesIdSpecifies the Id attribute value of the SignedDataObjectProperties element. CamelXmlSignatureXAdESSignedSignaturePropertiesIdSpecifies the Id attribute value of the SignedSignatureProperties element. CamelXmlSignatureXAdESDataObjectFormatEncodingSpecifies the value of the Encoding element of the DataObjectFormat element. CamelXmlSignatureXAdESNamespaceOverwrites the namespace parameter value. CamelXmlSignatureXAdESPrefixOverwrites the prefix parameter value.Headers Relevant for Message Splitting CamelSplitIndexProvides a counter for split items that increases for each Exchange that is split (starts from 0). CamelSplitSizeProvides 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). CamelSplitCompleteIndicates whether an Exchange is the last split.Headers Relevant for Content EncodingDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 387 CamelCharsetNameSpecifies the character encoding to be applied for message processing.Is relevant for content encoding steps.Headers Relevant for the HTTP and HTTPS Adapter CamelHttpUriOverrides the existing URI set directly in the endpoint.This header can be used to dynamically change the URI to be called. CamelHttpUrlRefers to the complete URL called, without query parameters.For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello. CamelHttpQueryRefers 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. CamelHttpMethodRefers to the incoming method names used to make the request. These methods are GET, POST, PUT, DELETE, and so on. CamelServletContextPathRefers 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. CamelHttpResponseCodeThis header can be used to manually set the HTTP response code. Content-TypeHTTP 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 formatMore information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.htmlThe 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 .NoteIf 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-8The 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.388 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.w3.org%2FProtocols%2Frfc1341%2F4_Content-Type.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fmedia-types%2Fmedia-types.xhtmlText 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-EncodingHTTP 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/http-parameters.xhtml#content-coding .Headers Relevant for the SFTP Adapter CamelFileNameOverrides 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 AdapterNoteThe 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. SubjectSpecifies the subject of the e-mail message. ToSpecifies the e-mail address that the message is sent to. CcSpecifies the additional e-mail address that the message is sent to. FromSpecifies the e-mail address that the message comes from. DateSpecifies the date and time when the e-mail was sent. Content-TypeSpecifies the format of the e-mail (html or plaintext) Message-IDSpecifies the ID that the mail system assigned to the e-mail when it was first created. Reply-toSpecifies the message ID of the message that this e-mail is a reply to. SenderSpecifies the actual sender (acting on behalf of the e-mail address stated in the From header).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 389http://help.sap.com/disclaimer?site=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc2616http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-codinghttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-coding Archived-AtSpecifies a link to the archived form of an e-mail.Headers Relevant for the Aggregator Step CamelAggregatedCompletedByThis header is relevant for use cases with message aggregation.The header attribute can only have one of the following values: timeoutProcessing of the aggregate has been stopped because the configured Completion Timeout has been reached. predicateProcessing of the aggregate has finished because the Completion Condition has been met.Headers Relevant for JMS Messages JMSTimestampSpecifies the time when a JMS message was created.Headers Relevant for the SOAP (SOAP 1.x), SOAP (SAP RM), and IDoc Adapter SOAPAction HeaderThis header is part of the Web service specification. SapAuthenticatedUserNameContains 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 HeaderYou can specify one of the following headers (under Message Header in the Name field): SAP_ApplicationIDWhen 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_MessageTypeYou can use this property to categorize messages. SAP_MessageProcessingLogIDYou 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).390 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationExchange PropertiesYou can specify one of the following Exchange properties (under Exchange Property in the Name field): SAP_CorrelateMPLsYou 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_ReceiverOverwriteHeaders 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.NoteExample configuration:Name: SAP_ReceiverOverwriteType: ConstantValue: True SAP_ErrorModelStepIDYou 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. SAPJMSRetriesContains the number of retries of a JMS message.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. SAPJMSAlerttimeSpecifies the time when an alert needs to be sent. SAPJMSRetryAtSpecifies the time when a JMS message must be retried.Related InformationDynamic Parameters [page 14]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 3914.1.1.1.1 Dynamic ParametersYou can define placeholders for attributes of certain adapters or step types. The values of these attributes 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 AdapterFor 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.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.Dynamic Parameters for the different AdaptersAdapter Type Parameters that can be set dynamically at runtimeMail Adapter Receiver: From, To, Cc, Bcc, Subject, Mail Body, Attachment Name392 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationAdapter Type Parameters that can be set dynamically at runtimeAS2 Adapter Receiver: Own AS2 ID, Partner AS2 ID, Message Subject, Own e-mail Address, Content Type, Signing Algorithm, Encryption Algorithm, Public Key of certificate to be used for encryption, MDN Type (None/Sync/Async), MDN Asynch URL, MDN Signing Algorithm, MDN Signature verfication public key alias, AS2 receipient URL, AS2 MDN SenderHTTP Adapter Receiver: Address, QuerySuccess Factors (SOAP) Adapter Receiver/Sender: Query, ParametersOData Adapter Receiver: Query, Custom Query Options, Resource PathSFTP Adapter File NameDynamic Parameters for the different Step TypesAdapter Type Parameters that can be set dynamically at runtimeData Store Operations Select Data Store NameData Store Operations Write Data Store NameEntry IDData Store Operations Get Data Store NameEntry IDData Store Operations Delete Data Store NameEntry ID4.1.1.2 Adapter and Integration Flow Step VersionsSome new features might not be available for your actually configured integration flow due to the following reason:You have created the corresponding integration flow shape (adapter or step) at a point in time before this feature has been released.You have the following options: You can either continue using this older version of the integration flow shape (adapter or step). You can use the new integration flow shape (adapter or step).In this case, you have to create the channel or flow step newly. To do that, first delete the old flow step or channel and then add it newly.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 3934.1.2 Product ProfilesThe 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 Platform IntegrationCloud-based integration runtime of SAP Cloud Platform Integration SAP Process Orchestration (for specific Process Orchestration release)For example: SAP Process Orchestration 7.5, SP5On 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 Platform Integration and SAP Process Orchestration 7.5 SP0.When you have 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 will be applied by default.394 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationThe 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.You have the option to configure a product profile also for an individual integration flow (under Runtime Configuration).Related InformationSet Default Product Profile for HCI Web Application [page 396]Configure Product Profile for an Integration Flow [page 395]4.1.2.1 Configure Product Profile for an Integration FlowYou can use product profile in an integration flow, to develop content for a particular runtime.Prerequisites You have connected toSAP Cloud Platform Integration Web Tooling. Your user is assigned with integration developer role. You have opened an integration flow in the editor.ContextProduct 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.NoteIf a product profile does not support a particular capability then the checks report errors for unsupported components in the integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 395Procedure1. Choose Runtime Configuration tab page.2. Select relevant product profile from the Product Profile dropdown list.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 InformationProduct Profiles [page 394]4.1.2.2 Set Default Product Profile for HCI Web ApplicationThe 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 Platform Integration Web Tooling. You have assigned WebToolingSettingsProductProfiles.savetenantconfiguration role or AuthGroup.Administrator group.ContextProduct 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.396 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationProcedure1. Choose Settings tab page.NoteYou 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.NoteYou can also configure product profile at integration flow level. For more details please refer to Define Product Profile [page 395].Related InformationProduct Profiles [page 394]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 3974.1.3 RestrictionsThe Integration Designer allows you to model specific patterns which are handled at runtime in an unexpected way.Restrictions and Alternative Configuration SettingsModelled Pattern Expected Behavior at RuntimeActual Behavior at Runtime Alternative Modeling OptionIntegration flow step with more than one outgoing sequence flowsFor example, after a Message Persistence step the message is supposed to be sent to multiple receivers in parallel.The same message is processed in parallel after the integration flow step.The messages are delivered to the different receivers in a sequence.Hereby, the order in that the messages are delivered is randomly generated.In addition to that, the following behavior may occur: the message which results from the processing in the previous sequence flow is taken as input for the next sequence flow.NoteAs an example, consider two parallel sequence flows where the first one contains an encryption step and the second one not. In that case, the receiver of the second sequence flow also gets an encrypted message (although in the second sequence flow no encryption step has been configured).Configure only one outgoing sequence flow and parallel processing using a multicast of messages.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 variables398 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application Aggregator step Content EnricherCautionSuch 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. Lets 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 Prepackaged Integration ContentSAP 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.NoteYou 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:Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 399http://help.sap.com/disclaimer?site=https%3A%2F%2Fapi.sap.com%2Fshell%2FintegrationYou can also watch this video for more information on prepackaged integration content:4.3 Add Integration Packages to the Customer WorkspacePrerequisitesYou have logged-on to the Web application with the integration developer role.ContextYou 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: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.Procedure1. 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 Design .b. Choose Import.c. Navigate to the folder in your local file system in which you have saved the integration package.NoteThe integration package must be a .zip file.d. Choose Open.You see the integration package that you uploaded in your customer workspace.400 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.4 Creating an Integration FlowYou can add an integration flow to an integration package.Prerequisites You have logged-on to SAP Cloud Platform Integration. You have created an integration package. For more information see, Add Integration Packages to the Customer Workspace [page 400].ContextAn 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 Platform Integration.Procedure1. Choose to access workspace.2. Choose the integration package in which you want to add an integration flow and choose Edit to enable editing of the package.3. Choose Add Integration Flow .4. If you want to create a new integration flow, execute the following substeps.a. Choose Create radio button.b. Enter integration flow details.You can choose product profile for the integration flow from Product Profile field. The integration flow templates used during creation adheres to the latest version of a component available in product profile.c. Choose OK.You see a confirmation message of the integration flow creation.5. If you want to upload an integration flow, execute the following substeps.a. Choose Upload radio button.b. Choose Browse to select the integration project archive from your local file system.c. Choose OK.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4014.5 Content TransportThe content transport mechanism enables you to reuse content between multiple tenants by exporting it from one tenant and importing it on another.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 have tested in the test landscape in the production landscape.Content transport provides three options to do this: Transport using CTS+: In this option, with a single click, you can transport integration content from one landscape to another through CTS+ system. For more information, see Content Transport Using CTS+ [page 406]. Transport using Transport Management Service (Beta): In this option, with a single click, you can transport integration content from one landscape to another through Transport Management Service (Beta) system. For more information, see Content Transport Using Transport Management Service (Beta) [page 407]. MTAR Download: In this option, you download a MTAR file from the tenant you want to export integration content and manually upload this MTAR file to a CTS+ system. For more information, see Content Transport using MTAR Download [page 409]. Manual export and import: In this option, you use the Export feature in your workspace to export integration content from the tenant you want to export integration content and manually import this in the target tenant. For more information, see Content Transport using Manual Export and Import [page 408].402 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application Content Transport Using CTS+ [page 406] Content Transport Using Transport Management Service (Beta) [page 407] Content Transport using MTAR Download [page 409] Content Transport using Manual Export and Import [page 408]Related InformationEnabling Content Transport [page 404]Creating HTTP Destination in Solutions Lifecycle Management [page 405]Content Transport Using CTS+ [page 406]Content Transport Using Transport Management Service (Beta) [page 407]Content Transport using MTAR Download [page 409]Content Transport using Manual Export and Import [page 408]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4034.5.1 Enabling Content TransportAll the tasks mentioned here are one-time activities. It is recommended that the tenant administrator performs these tasks to facilitate content transport.Enabling Solutions Lifecycle ManagementYou should 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 is a one-time activity. You can do that by performing the following steps:1. Login to your account in the SAP Cloud Platform.2. Choose Services Solutions Lifecycle Management .3. Choose Enable.Selecting the Transport ModeThe 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 thee modes, you need to enable the Transport Mode in the tenant settings. You can do this by accessing Transport Settingsand choosing CTS+ or Transport Management Service (Beta) 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. Transport Settings will be available for you only if you have the role IntegrationContent.Transport assigned to your account. Please assign the role to your user if you do not see the Transport Settings.TipIf you do not see the Settings( ) options, please contact your tenant administrator for performing this step.Next StepsYou have to create HTTP destinations to facilitate connections between your tenant, solutions lifecycle management service and CTS+/Transport Management Service (Beta) systems. If you want to use: MTAR Download option, create a 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 (Beta) option, create two HTTPS destinations in Solutions Lifecycle Management, one for your tenant management node (Cloud Integration application) and one for the CTS+ system.404 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationRestrictionPlease note that Transport Management Service is offered as a part of beta pilot program. You cannot use this service for content transport in productive scenarios.For information on how to create HTTP destinations, see Creating HTTP Destination in Solutions Lifecycle Management [page 405].4.5.2 Creating HTTP Destination in Solutions Lifecycle ManagementYou must create a destination in solutions lifecycle management as the first step to enable content transport.PrerequisitesYou must enable the Solutions Lifecycle Management service. For information on how to do this, see Enabling Content Transport [page 404].ContextYou should create a destination in the Solutions Lifecycle Management service to enable import of content into your target tenant.Procedure1. Access Solutions Lifecycle Management by choosing Services Solutions Lifecycle Management .TipYou see the page header as Service: Solutions Lifecycle Management - Overview.2. Choose Configure Destinations.3. Choose New Destination.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4054. In Destination Configuration section, provide values in fields based on description in table.Field DescriptionName Provide value as CloudIntegration. Please note that this value is case-sensitive.Type HTTPDescription 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.If it is SAP Cloud Platform Integration tenant, it will be in the format: https://-tmn.hci.int.cn1.hana.ondemand.com/itspaces/If it is the CTS+ system, you have to provide the URL of that you find in the Cloud Connector settings. For more information, see Change Management with CTS+.If it is the Transport Management Service (Beta), you have to provide the URL of the Transport Management Service (Beta) system. For more information, see Official Documentation for Transport Management Service (Beta).Proxy Type InternetAuthentication Basic AuthenticationRememberPlease ensure that the user credentials in the destination is a member of the SAP Cloud Platform Integration account from which you want to transport content. The user should also have role AuthGroup.IntegrationDeveloper.5. Choose Save.4.5.3 Content Transport Using CTS+Prerequisites You have set the Transport Mode as CTS+ in the tenant Transport settings. For more information, see Enabling Content Transport [page 404].406 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttps://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/f598f69a9be347029b7e5e7205fc7d1f.htmlhttps://help.sap.com/viewer/p/TRANSPORT_MANAGEMENT_SERVICEhttps://help.sap.com/viewer/p/TRANSPORT_MANAGEMENT_SERVICE You have created two HTTP destinations on Solutions Lifecycle Management, one for the tenant management node and one for the CTS+ system via cloud connector. For more information, see Creating HTTP Destination in Solutions Lifecycle Management [page 405].ContextSAP Cloud Platform 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 Platform Integration tenant. Here's how you can transport content to CTS+ directly:Procedure1. Select the integration package that you want to transport.2. Choose Transport.3. In the Transport Comments prompt, provide comments and choose Transport.RememberYou 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 here.4.5.4 Content Transport Using Transport Management Service (Beta)Prerequisites You have set the Transport Mode as Transport Management Service (Beta) in the tenant Transport settings. For more information, see Enabling Content Transport [page 404]. 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 .ContextSAP Cloud Platform Integration provides an option to transport integration content directly to Transport Management Service (Beta) system. You can then transport this content from the Transport Management Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 407https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/f598f69a9be347029b7e5e7205fc7d1f.htmlService (Beta) system to your target SAP Cloud Platform Integration tenant. Here's how you can transport content to Transport Management Service (Beta) directly:Procedure1. Select the integration package that you want to transport.2. Choose Transport.3. In the Transport Comments prompt, provide comments and choose Transport.RememberYou 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 (Beta).4.5.5 Content Transport using Manual Export and ImportPrerequisitesYou have logged into the SAP Cloud Platform Integration web application source and target tenants. Access the (Design) tab (workspace).ContextOne 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.Procedure1. 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.408 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttps://help.sap.com/viewer/p/TRANSPORT_MANAGEMENT_SERVICEhttps://help.sap.com/viewer/p/TRANSPORT_MANAGEMENT_SERVICE3. Log in to the SAP Cloud Platform 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.5.6 Content Transport using MTAR DownloadPrerequisites You have logged into the SAP Cloud Platform Integration web application source and target tenants. Access the (Design) tab (workspace). You have selected MTAR Download as your Transport Mode. For more information, see Enabling Content Transport [page 404].ContextYou can use the MTAR Download option to download a MTAR file/s of the integration content to be transportedProcedure1. Select the integration package that you want to transport.2. Choose Transport.3. In the Transport Comments prompt, provide comments and choose Transport.RememberYou 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 409https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/f598f69a9be347029b7e5e7205fc7d1f.html4.6 Importing Content from ES RepositorySAP Cloud Platform 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 Platform Connectivity Cloud Connector documentation.You can also check out this blog on SAP Cloud Platform Integration community: Importing Message Mapping from ES Repository in SAP Cloud Platform Integration .4.6.1 Configuring Connectivity to ES RepositoryPrerequisitesYou have logged in to SAP Cloud Platform Integration web application.ContextYou have to configure connectivity to the ES Repository from SAP Cloud Platform 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.Procedure1. Choose .410 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttps://help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/en-US/e6c7616abb5710148cfcf3e75d96d596.htmlhttps://help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/en-US/e6c7616abb5710148cfcf3e75d96d596.htmlhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F02%2F09%2Fimporting-message-mapping-from-es-repository-in-sap-cloud-platform-integration%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F02%2F09%2Fimporting-message-mapping-from-es-repository-in-sap-cloud-platform-integration%2F2. 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 DescriptionName 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 connects 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.ResultsThis establishes a communication to the ES Repository from your4.6.2 Importing Mapping Content from ES RepositoryPrerequisitesYou have configured a connection to ES Repository in the Settings() tab. For more information, see Configuring Connectivity to ES Repository [page 410].You have opened the integration flow in which you want to add the integration content and you are editing it.ContextAfter 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 mappingDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 411 WSDLRestrictionIf the operation mapping that you are importing contains XSLT references, it will not be imported. The import process will fail.Here's how you can do it:Procedure1. 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 Mapping Message Mapping/Operation Mapping depending on the resource you want to import.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.7 Working with MappingThe message mapping step enables you to define an association between fields of messages with different structuring. For example, consider the record Employee and we need to update the employee identification number. In the sender system, the field name is Employee ID. However, in the receiver system, the same field is called ID.Similarly, the table illustrates how the same fields might have different identifiers in the source and target systems.Source Field Target FieldEmployee UserEmployee ID IDEmployee Name Name412 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSource Field Target FieldEmployee Surname LastNameDate of Birth DOBYou use message mapping like the one above, to define an association between fields in scenarios like this. This enables the Cloud IntegrationI system to recognize and update the relevant fields in the target systems.Each message mapping flow step in an integration flow is associated with a mapping definition resource. You create this definition while adding the mapping step to the integration flow. You can also reuse a definition resource that you have already created in the same integration flow project.CautionIf you delete a message mapping step and the mapping definition resource associated with it is not used in any other message mapping step, then the resource also gets deleted.Related InformationCreate Message Mapping [page 415]Create Message Mapping Definition Resource [page 416]Create Custom Mapping Expression [page 418]Create Custom Mapping Expression [page 418]4.7.1 Viewing Mapping Details in Mapping ViewerContextYou use this procedure to view mapping details of mappings appearing in an integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 413To familiarize yourself with the various features and behavior of elements in the mapping viewer, see the screenshot below:Sections marked in above screenshot Description1 Represents the source structure.2 Represents the target structure.3 If any of the entities (source or target) are not visible, a dotted line indicates the calculated position of the invisible entity.4 Solid lines represent visible source and target entities.5 If you select a line, both source and target entities come to the center in the table, and the line becomes solid.6 This section represents the functions of the selected mapping.Procedure1. If you are viewing an integration flow from the Catalog view, follow the sub-steps below:a. Select an integration package.b. In the Artifacts table, select the integration flow name from the Name column.NoteIn the Artifact table, the integration flow Type appears as Process Integration.2. If you are viewing an integration flow from the My Projects view, select an integration flow from the AVAILABLE INTEGRATION FLOWS table414 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application3. In the integration flow diagram, select the mapping element.Hover over the different entities in the diagram to identify mapping elements.The mapping name appears as a link in the parameter section below the diagram.4. To view the mapping in the mapping viewer, select the link with the mapping name.NoteIf a mapping is invalid or unsupported, the mapping viewer does not open the mapping. If you hover over the mapping name link you can view the associated error message.5. In the mapping viewer, select a source or target entity to highlight all mappings from that entity.You can select message mappings between source and target entities to view the functions associated with them. The application displays the functions in the Mapping Expression section.4.7.2 Create Message MappingPrerequisites You have accessed the workspace (Design tab page). You are editing the integration flow.ContextWhen you create a message mapping step, you have the option of creating a mapping definition resource or reuse one of the existing mapping definition resources. Your integration flow contains such a resource in the following cases: If you have imported pre-packaged content from the catalog containing message mapping step with a mapping definition resource If you have added a message mapping step and created a mapping definition resourceDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 415RememberYou cannot reuse mapping definition resources across integration flows.CautionIf you delete a message mapping step and the mapping definition resource associated with it is not used in any other message mapping step, then the resource also gets deleted.Procedure1. In the palette, choose > Message Mapping.2. Place the message mapping step in the integration flow and define the message path.3. If you want to create a new mapping definition resource, perform the following substeps:a. Choose b. Add source and target messages by choosing Add Source Message and Add Target Message respectively. Select the source or target message.If you do not see the resource you want to use as the source message, choose Upload from File System and upload the file.c. Create a definition by dragging a node from the source structure to the required node in the target structure.d. If you want to test the mapping, choose Simulate.e. Choose Ok to save the mapping definition resource.4. If you want to reuse a mapping definition resource, perform the following substeps:a. Choose b. In the Message Mapping File prompt, choose the resource that you want to assign.You do not see any entries in the Message Mapping File prompt if you have not created a definition or imported content from the catalog containing a mapping definition resource.5. Save or deploy the integration flow.4.7.3 Create Message Mapping Definition ResourcePrerequisites You have accessed the workspace (Design) tab page in the SAP Cloud Platform Integration web application. You are editing the integration flow that contains the message mapping step.416 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application You have added a Message Mapping step to the integration flow and selected the Create() option.ContextYou create a mapping definition resource to define an association between a field in the source message with a field in the target message. In case you want to manipulate the field in the source message before mapping it to a field in the target message, you can use mapping expression to perform that operation.For example, you have two fields, FirstName and LastName in the source message. In the target message, you have only one field, Name which contains both the first and last names. Using mapping, you map both FirstName and LastName fields to the Name field in the target message. Additionally, you use the concat operation from the Mapping Expression to concatenate the two fields from the source message before mapping it to the target message.Procedure1. Choose Add Source Message.2. In Select Source Message prompt perform the following substeps:a. If the file you want to use as the source message is already available, select it.b. If the file you want to use as the source message is not available, choose Upload from File System and upload the file from your file system.3. Choose Add Target Message.4. In Select Target Message prompt perform the following substeps:a. If the file you want to use as the target message is already available, select it.b. If the file you want to use as the target message is not available, choose Upload from File System and upload the file from your file system.5. If you want to add more than one message to the source or target, choose and . You can select an existing resource or upload a new one from the file system.6. To map a field from the source to the target, drag a field from the source to the required field in the target.7. If you want to map a field from source to target and map all the fields with identical names in the sub-tree of the mapped fields, choose .8. Here are the options that you get by choosing when you hover over one of the nodes in the target structure:Option DescriptionDuplicate Subtree Create a duplicate of one of the sub-tree other than the parent node in the target messageDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 417Option DescriptionAssign Constant Assign a constant value to the fieldDelete Subtree Delete the subtree (the highlighted node and all the child nodes)Disable Field Disable the field. You can use this option to simulate or test the mapping even if you don't want to map the mandatory fields.Enable Field Enable the field. This option is available only if the field is disabled.Copy Path Copy the path of the selected node9. If you want to add a mapping expression, perform the following substeps:a. Choose the fx icon in the mapping path in which you want to add a mapping expression.You see a association defined between the fields in the Mapping Expression window.b. Choose the operation that you want to perform from the Functions column.c. Using the graphical editor, add the function between the source and target fields.10. If you want to change the context of a field from the source structure, perform the following substeps:a. Choose the fx icon in the mapping path in which you want to add a mapping expression.b. In the Mapping Expression screen area, select the required field and choose .c. Choose Context .If there is no context switch available, the Context option will be disabled.11. If you want to delete a mapping association, choose the fx icon in the mapping path and delete using Delete key from the keyboard.12. If you want to delete all the mapping definitions, choose .4.7.4 Create Custom Mapping ExpressionYou can create a custom mapping expression in case you cannot achieve your intended result using the standard mapping expressions provided by SAP Cloud Platform Integration.Prerequisites You have accessed the workspace (Design) tab page in the SAP Cloud Platform Integration web application.418 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application You are editing the integration flow that contains the message mapping step. You are configuring the message mapping step.ContextYou can create custom function that you can use in mapping expression. This allows you to define functions that are not a part of the standard set of functions available in SAP Cloud Platform Integration.You can also configure the script used to create the custom function to return more than one string value. This optimizes the usage of the custom function and eliminates the requirement of building multiple similar scripts to return other values.Procedure1. If you have assigned a mapping to the Message Mapping step, choose the mapping in the Name field. If you have not assigned a mapping, you can create a new mapping or assign an existing mapping definition resource.For more information on creating a mapping definition resource, see Create Message Mapping Definition Resource [page 416].2. Select a mapping path.3. In the Functions panel of Mapping Expression section, choose 4. Enter the name of the script, which will be the name of the custom function and choose OK.The script editor will be launched.5. Enter the script for the custom function you want to create and choose OK.ResultsYou see the custom script that you have created with the name you have provided in the Custom section of Mapping Expression.4.7.5 Test Message MappingYou use this design time test to validate correctness of mappings with the given test inputs.PrerequisitesYou have ensured that your message mapping is complete, that is, your sources are mapped to your targets.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 419ContextWhen you create message mappings, you need to check whether or not they function as expected. By simulating a mapping, you can verify the correctness and functioning of them.Procedure1. Launch SAP Cloud Platform Integration web application by accessing the URL provided by SAP.NoteBrowsers that support the application are Internet Explorer 10, Google Chrome, and Safari.2. Choose .3. Select Design Integration Package tab page.4. Choose the Integration Flow.The Integration Flow page opens in Read-only mode.NoteYou can edit the integration flow only if you choose Edit.5. If you want to edit the mapping, select Edit.The Integration Flow page opens in edit mode.6. In the Integration Flow page, select the mapping that you want to test.The name of the mapping is displayed under the Mapping section.7. If you want to test the mapping, choose Simulate Upload Input .8. Select the input XML file that you want to test from the file system, and choose Open.The input XML file data is displayed on the source message table.9. Choose Test.The output XML file data is displayed on the target message table.10. If you want to download the output test XML, choose Download.Note You do not have to save the mapping to perform simulation. You can also a test a message mapping with scripts. You can also modify any of the following operations in the graphical editor: New function PropertiesThen, you can revalidate if the mapping is working correctly. If you test an incomplete mapping, then you get a validation error.420 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.7.6 Creating Value MappingPrerequisites You are in the workspace (Design tab).ContextYou use the value mapping artifact to represent multiple values for a single object. For example, a product in Company A is referred by the first three letters as 'ID The same product is referred in Company B by product code ''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 that contains reference to the value mapping definition. You create such value mapping groups in a Value Mapping artifact.Procedure1. Choose the integration package where you want to add the Value Mapping artifact and choose Edit.2. Choose Artifacts Add Value Mapping .3. If you want to upload a value mapping artifact from your local file system, perform the following substeps:a. Choose Upload Browse .b. Navigate to the location where the artifact file is located and upload it.c. Enter values in mandatory fields, & optional fields if required. Choose OK.You see a message confirming that the value mapping artifact is created successfully.4. If you want to create a value mapping artifact, perform the following substeps:a. Enter the Name for your value mapping artifact.b. If required, enter values in the optional fields and choose OK.You see a message confirming that the value mapping artifact is created successfully. Configure the value mapping artifact by referring to Configuring Value Mappings [page 422].Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4214.7.7 Configuring Value MappingsYou use this procedure to perform various functions in a value mapping.Prerequisites You have created a value mapping artifact. For more information, see Creating Value Mapping [page 421]. You are editing the value mapping artifact.ContextYou create a value mapping artifact to act as a bi-directional look up table. Value mapping offers the distinct advantage of giving you bi-directional look up capabilities which is used quite often in productive mapping scenarios.Procedure1. If you want to import a CSV file that contains value mappings, choose Import and select the CSV file you want to import.2. In the Bi-Directional mapping section, choose Add to add a bi-directional mapping.3. In the Value mappings for section, choose Add to add a value mapping.4. Provide values for the agency and identifier in the respective fields.5. Choose to remove a bi-directional or value mapping.You can choose Delete All to remove all bi-directional and value mappings from the respective sections.6. Choose Save to keep the changes.7. Choose Save as version to retain a copy of the current artifact.You can view the version history of an artifact by choosing the current version mentioned along with it.8. Choose Cancel to revert the changes.NoteIf you edit a web edited value mapping in eclipse, then you get a default value for 1:N, M:,1 and M:N mappings. SAP recommends that all groups should contain only one agency identifier and value pair.Some of the function names in web UI differ from the ones in Eclipse.422 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.7.7.1 Formatting Guidelines for CSV Files used in Value Mapping4.7.8 Create XSLT MappingYou perform this task to assign XSLT mapping that is available in your local workspace.ContextYou perform this task to assign XSLT mapping that is available in your local workspace.Procedure1. Click on Edit.2. In the palette, choose XSLT Mapping.3. In the General tab enter details for Name field.4. In the Processing tab, select either Integration Flow or Header for mapping Source field.a. If you select integration flow as source, then click on Select to choose the xslt or xsl file from Resource folder or file system.Note To view or modify content of xslt mapping in the editor, click on the resource name in the Resource field. For XSLT mapping, you can select the output format of the message to be either string or bytes from the Output Format field.b. If you select header as source, then enter name for the header in the Header Name field.NoteTo assign xslt mapping for partner directory, the valid format for value of header name is pd:::, where the parameter type is either Binary or String. For example, the correct header name is pd:SenderABC:SenderXSD:Binary.5. Save or deploy the changes.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4234.8 Migrate to New VersionNew features are introduced through new versions of the components. To consume this new feature you must migrate to new version.Prerequisites You have connected to the Web application. Your user is assigned with the integration developer role. You have accessed the customer workspace.ContextOnce you migrate, old fields will be retained with same values and new fields are populated with default values. If default value is not present for the mandatory field, then you must add the value.NoteIf you want to view the older version, then you must save the integration flow as a version before migrating to new version.Migration feature is available for the following components: Integration flow configuration Integration process Local integration processCautionNote relevant for the case when the integration flow contains an older adapter versions that does not support yet HTTP session handling:If you like to migrate an integration flow to a new version that supports HTTP session handling and the original integration flow (to be migrated) contains an earlier version of a receiver adapter that doesnt support HTTP session handling yet, you might run into a version conflict. In that case, the following error is displayed:Version is not supported with integration flow version , remodel the adapter with new version.The following adapter types can be affected by this problem: HTTP, SOAP, or IDoc receiver adapter.What you can do: Re-model the adapter in the integration flow migrated to the new version (as proposed in the error message).This means that you need to re-create the related communication channel.424 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application Revert back to the earlier integration flow version. To do that, you need to make sure that you save the original integration flow as version prior to migrating it to the new version.For additional information on version migration of integration flow components, you can check this SAP community blog: Versioning & Migration of Components of an Integration Flow in SAP Cloud Platform Integrations Web Application .Procedure1. Select an integration flow component.2. Click on the Migrate button.NoteMigration option will be available only if the selected component has the highest version in the component.3. Click on OK for confirmation.NoteYou can revert to previous version after migrating also, by executing the following steps:1. Go to package view.2. Click on Draft version.3. Click on the timer icon to revert back to previous version.4.9 Specify the Runtime ConfigurationWith Runtime Configuration you can specify general properties of the integration flow.ContextProcedure1. Open the integration flow and select the graphical area outside the integration flow model.2. Choose the Runtime Configuration tab.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 425http://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F12%2F07%2Fversioning-migration-of-components-of-an-integration-flow-in-sap-cloud-platform-integrations-web-application%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F12%2F07%2Fversioning-migration-of-components-of-an-integration-flow-in-sap-cloud-platform-integrations-web-application%2F3. 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.Runtime Configuration PropertiesProperty Allows you to ...Namespace Mapping Map a prefix to a namespace at runtime.Enter a namespaceprefix pair with a format xmlns:=.This parameter is required for elements such as the content-based router, content modifier or content filter that can use namespaces in their configuration. You can either enter the namespaceprefix pair or the tool automatically fills the namespaceprefix pair whenever a lookup is performed for the assigned WSDL.You can also enter multiple namespaceprefixes as shown in the example: xmlns:test=http://sapcd.com/testABC;xmlns:test2=http://sapcd.com/testPQR.Notexmlns:ns0=https://hcischemas.netweaver.neo.com/hciflowHere, ns0 is the prefix and https://hcischemas.netweaver.neo.com/hciflow is the namespace. That way, in a router, you can specify 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. All Events: Allows all messages to be logged and displayed Error Events: Allows only error messages to be logged and displayed No Logging: Hides logging information426 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationProperty 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 (|).NoteIf 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 character..* substitutes zero or more non-space characters.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 Platform Integration), senders have to authenticate against a load balancer component. The load balancer sets the following 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 ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 427Property Allows you to ...HTTP Session Handling Choose one of the following options: NoneSession handling is switched off On ExchangeEach exchange corresponds to a single session (use this option for stateful services) On Integration FlowOnly one session will be used across the whole integration flow (only use this option for stateless services)NoteOnce an HTTP session has been initialized, there is usually no further authentication for the duration of the session (one of the advantages of using sessions). This means that all further HTTP requests on that server are processed in the context of the user that was logged on when the session 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.NoteSuccessFactors (OData V4) and SuccessFactors (REST) adapters do not support HTTP session handling.4. Save the changes.Related InformationProduct Profiles [page 394]Define Content Modifier [page 619]428 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.10 Configure Externalized Parameters of an Integration FlowPrerequisites You have connected to the Web application. Your user is assigned with the integration developer role. You have accessed the customer workspace.ContextSAP HCI Web application allows you to configure an integration flow individually or multiple integration flows at once. You can configure the runtime, error configuration and also provide a description about the integration flow.NoteIf you want timer or SuccessFactors sender adapter scheduler to be available in quick configuration, you need to externalize these parameters while creating the integration content.If you want SucessFactors sender adapter scheduler to be available in quick configure for existing integration flows, you should externalize the scheduler parameters and republish the integration package.You must click on the participants 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.RestrictionYou cannot use quick configure option for integration flows in Monitor and Discover tab pages. You can only configure integration flows in your customer workspace (Design tab page).Procedure1. In Design tab page, select the integration package that contains the integration flow you want to configure.2. Choose Package content.You see an overview of all the artifacts available in the selected integration package.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4293. In the Actions column for the integration flow you want to configure, choose Configure .4. Provide the relevant details in Sender, Receiver and More tab pages.NoteFor more information, see Configure Adapters in Communication Channels [page 438].5. Select relevant details of externalised components in More tab, to view externalised values for integration flow configuration or integration flow steps or local integration process or integration process.a. Select Type of component.NoteYou can also view all parameters of the component using All Parameters option.b. Select Name[ID] of component.You cannot select name for integration flow configuration.6. If you want to save this configured integration flow as a version, choose Save as version and specify the version details.7. If you want to save or deploy this integration flow, choose the appropriate option.NoteYou can use error configuration to handle errors when message processing fails at runtime. You select an error handling strategy based on the descriptions below:Error Handler StrategiesOption DescriptionNone(default setting)No error handling strategy is used if a message exchange could not be processed .Raise Exception (Deprecated) If a message exchange could not be processed and there is an IDoc or SOAP ( SAP RM) channel in the integration flow, an exception is raised to the sender.Raise Exception If a message exchange could not be processed, an exception is raised to the sender.Related InformationExternalize Parameters of an Integration Flow [page 736]Define a Timer Start Event [page 586]430 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.11 Configure Multiple Integration FlowsPrerequisitesYou have copied the integration package to your workspaceContextSAP standard integration packages offer a feature where you can configure multiple integration flows that connect to the same system at once. You need to enter the configuration details only once in the mass configuration screen. All the integration flows that connect to that system instance are updated with the details. This eliminates the need for individually entering the configuration details in each integration flow.For example, consider a scenario in which all the integration flows connect to the same instance of SAP ERP. The configuration details like Host, Port and Client are the same for all the integration flows. Once you specify these details in the mass configuration screen, the application updates these details in all the relevant integration flows. This simplifies the task of configuring multiple integration flows that share common system properties.Remember The system consolidates field names into a single section only if they match exactly across all the integration flows you select for configuration. These field names are sender and receiver's system and authentication details. You can also configure authentication details during mass configuration. Configuring multiple integration flows is only supported for integration flows with SOAP and IDOC adapters, version 1.0 and 1.1..ProcedureYou use this procedure to configure multiple integration flows.1. Launch SAP Cloud Platform Integration Web application 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 the integration flow(s) you want to configure.5. Choose Actions Configure .Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 431NoteYou can also download the artifacts to your local folder by choosing Download instead of Configure.The system displays the externalized system properties pertaining to the selected integration flows that you want to configure. If there are common properties, the application displays them as a single entry.6. If you want to save the configuration, choose Save.7. If you want to deploy the integration flows, choose Deploy.4.12 Configure Integration Flow ComponentsSAP Cloud Platform Integration Web application allows you to configure integration flow components in an editor.4.12.1 Integration Flow Editor for SAP Cloud Platform IntegrationSAP Cloud Platform Integration provides a version of the integration flow editor in the Web application. The editor now has the following enhancements:Improved Look and FeelYou will notice when viewing or editing integration flows that the editor has an improved look and feel.432 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationZoom CapabilitiesYou can easily zoom in and out of the editor with your mouse scroll wheel or the + and - action buttons at the top right of the editor. This feature is particularly helpful when you are editing large and complex integration flows.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 433Action Buttons for Integration Flow StepsAll the integration flow steps and adapters provide quick action buttons that help you to connect, delete, view information, and more. This means you can build an integration flow more quickly. For example, if you wanted to delete an adapter in the old WebUI, you had to select the channel and then choose the (Delete) icon in the palette. This was time consuming and not very convenient. In the new editor, this process takes just two clicks: You select the channel and choose the icon.Quick ButtonsIn the old editor, the quick buttons to connect, delete, or view technical information were made available when you hovered the mouse pointer over the component. In the new editor, you need to select the component to access the buttons.434 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationOverview ModeIf you have a large integration flow, you need a visualization that allows you to see the entire integration flow and also to navigate to a specific area in that flow. The overview mode give you that option. By choosing the dedicated button at the bottom right of the screen, you can get a bird's-eye view of the integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 435Modeling Constraints (Important)The editor also has some constraints to help ensure that you do not make mistakes while modeling an integration flow. For example, the editor does not 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, multiple incoming messages cannot be added to Request Reply, Content Enricher and Send steps.Visit the blog to read more about the integration flow editor.4.12.2 Assign Sender and Receiver ComponentsContextProcedure1. Open the integration flow in the editor.2. From the palette, choose Participants ( ) and then Sender or Receiver.436 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F12%2F07%2Fnew-improved-integration-flow-editor-in-sap-cloud-platform-integrations-web-application%2F3. Only relevant when you assign a Sender: For certain adapter types, you need to specify the inbound authorization.To do this, select the configuration interface of the associated sender adapter.In case the Authentication Type option is still displayed for the sender participant, you might have created this integration flow shape some time back or you have selected a certain product profile where inbound authorization is still be performed per sender participant.In that case, either proceed with the following step or create a new sender participant shape (and, in that case, continue configuring the authorization option in the associated sender channel).More information: Adapter and Integration Flow Step Versions [page 393]4. When you specify the Authentication Type as part of the Sender, consider the following.You have the following options to authenticate the sender. Role-based AuthenticationSelect this options if you like to configure one of the following use cases: Basic authentication Client certificate authentication with certificatetouser mapping Client Certificate AuthenticationSelect 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.Which option you choose, depends on the combination of authentication and authorization option you like to configure for inbound calls.4.12.3 Assign Adapter to Communication ChannelPrerequisites You have logged on toSAP Cloud Platform Integration web application. You are editing an integration flow.ContextYou must create a communication channel between SAP Cloud Platform Integration and the sender/receiver system to facilitate communication between them.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 437NoteYou must click on the participants 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.Procedure1. Access SAP Cloud Platform Integration web application by launching the URL provided by SAP.2. Choose Design .3. Select the integration package that contains the integration flow or create a new4. Select the integration flow and choose Edit.NoteIn the case of OData service artifacts in integration packages, you have to edit the OData service artifact in order to edit the required integration flow.5. If you want to define sender channel, choose Sender and drag the pointer to Start.NoteIn the case of integration flows in OData service artifacts, you cannot change the OData sender adapter.6. If you want to define receiver channel, choose End and drag the pointer to Receiver.7. In Adapter Type dialog, select the adapter you want to assign. Choose the message protocol that you want to use, if prompted.8. Save or deploy the changes after configuring the adapter and other integration flow elements.NoteIn the case of integration flows in OData service artifacts, you can save the integration flow and deploy the OData service.4.12.4 Configure Adapter in Communication ChannelsYou should configure the adapters assigned to communication channels before deploying the integration flow.438 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationThe following adapter types are available:AdapterFeature DescriptionAribaSender adapterReceiver adapterConnects an SAP Cloud Platform tenant to the Ariba network. Using this adapter, SAP and non-SAP cloud applications can send and receive businessspecific documents in commerce eXtensible Markup Language (cXML) format to and from the Ariba network.The sender adapter allows you to define a schedule for polling data from Ariba.AS2Sender adapterReceiver adapterEnables an SAP Cloud Platform tenant to exchange businessspecific documents with a partner through the Applicability Statement 2 (AS2) protocol.A license for SAP Cloud Platform Enterprise Edition is required to use this feature.Sender adapter: Can return an electronic receipt to the sender of the AS2 message (in the form of a Message Disposition Notification (MDN))Certain constraints apply with regard to the usage of this feature (as described in the product documentation).AS4Receiver adapterEnables an SAP Cloud Platform tenant to establish connection between any two message service handlers (MSHs) for exchanging business documents. The AS4 receiver adapter uses the Light Client conformance 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 transfer of business document from sending MSH to 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 sending the specific user message.FacebookReceiver adapterEnables an SAP Cloud Platform tenant to access and extract information from Facebook based on certain criteria such as keywords or user data.Using OAuth, the SAP Cloud Platform tenant can access resources on Facebook on behalf of a Facebook user.HTTP(S)Sender adapterReceiver adapterEstablishes an HTTP(S) connection between an SAP Cloud Platform tenant and another system.Receiver adapter: Supports HTTP 1.1 only (target system must support chunked transfer encoding and may not rely on the existence of the HTTP Content-Length header) Supports the following methods: DELETE, GET, HEAD, POST, PUT, TRACEMethod can also be determined dynamically by reading a value from a message header or property during runtime.Certain constraints apply with regard to the usage of this feature (as described in the product documentation).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 439Feature DescriptionIDocSender adapterReceiver adapterAllows an SAP Cloud Platform tenant to exchange Intermediate Document (IDoc) messages with other systems that support communication via SOAP Web services.A size limit for the inbound message can be configured for the sender adapter.JMSSender adapterReceiver adapterEnables asynchronous messaging by using message queues.A license for SAP Cloud Platform Enterprise Edition is required to use this feature.The sender adapter stores incoming messages permanently and schedules them for processing in 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).Certain constraints apply with regard to the usage of this feature (as described in the product documentation).LDAPReceiver adapterConnects an SAP Cloud Platform tenant to a Lightweight Directory Access Protocol (LDAP) directory service (through TCP/IP protocol).Supported operations: Modify distinguished name (DN), InsertSAP Cloud Connector is required to connect to an LDAP service. The LDAP adapter supports version 2.9 or higher of the SAP Cloud Connector.MailSender adapterReceiver adapterEnables an SAP Cloud Platform tenant to exchange e-mails with an e-mail server.Mail sender and receiver adapter: To authenticate against the e-mail server, you can send user name and password in plain text or encrypted (the latter only in case the e-mail server supports this option).Sender adapter: You can protect inbound e-mails at the transport layer with IMAPS, POP3S and STARTTLS.Receiver adapter: 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).For more information on possible threats when processing e-mail content with the Mail adapter, see the product documentation.440 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationFeature DescriptionODataSender adapterReceiver adapterConnects an SAP Cloud Platform tenant to systems using the Open Data Protocol (OData) protocol in either ATOM or JSON format (only synchronous communication is supported).Supported versions: OData version 2.0, OData version 4.0Sender 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 covered by the standard CRUD (Create, Retrieve, Update, and Delete) methods (function import).Receiver adapter: Sends the OData request in the format you choose (ATOM or JSON) to the OData service provider Supported operations: Create (POST), Delete (DELETE), Merge (MERGE), Query (GET), Read (GET), Update (PUT)ODCReceiver adapterConnects an SAP Cloud Platform tenant to SAP Gateway OData Channel (through transport protocol HTTPS).Supported operations: Create (POST), Delete (DELETE), Merge (MERGE), Query (GET), Read (GET), Update (PUT)ProcessDirectSender adapterReceiver adapterConnects an integration flow with another integration flow deployed on the same tenant. Integration flow with ProcessDirect sender adapter consumes data from another integration flow. Integration flow with ProcessDirect receiver adapter (as producer) sends data to another integration flow.N:1 cardinality of producer and consumer integration flows is supported.RFCReceiver adapterConnects an SAP Cloud Platform tenant to a remote receiver system using Remote Function Call (RFC).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.SFTPSender adapterReceiver adapterConnects an SAP Cloud Platform tenant to a remote system using the SSH File Transfer protocol to read files from the system (sender adapter) or to write files to the system (receiver adapter). 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 higherThis adapter does not support connections to FTP servers.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 441http://help.sap.com/disclaimer?site=http%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc4251Feature DescriptionSOAP SOAP 1.xSender adapterReceiver adapterExchanges messages with another 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 request-reply.The adapter supports Web services Security (WS-Security).A size limit for the inbound message can be configured for the sender adapter.SOAP SAP RMSender adapterReceiver adapterExchanges messages with another system based on the SOAP communication protocol and SAP Reliable 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.SuccessFactors RESTSender adapterReceiver adapterConnects an SAP Cloud Platform tenant to a SuccessFactors system using the REST message protocol.Sender adapter supports operation GETReceiver adapter supports operations: GET, POSTSuccessFactors SOAPSender adapterReceiver adapterConnects an SAP Cloud Platform tenant to SOAP-based Web services of a SuccessFactors system (synchronous or asynchronous communication).Sender adapter supports operation QueryReceiver adapter supports operations: Insert, Query, Update, UpsertSuccessFactors OData V2Receiver adapterConnects an SAP Cloud Platform tenant to a SuccessFactors system using OData V2.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 entry document), POST (create new entry from an entry document), MERGE (incremental update of an existing entry that does not replace all the contents of an entry), UPSERT (combination of Update OR Insert) 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 tag442 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationFeature DescriptionSuccessFactors OData V4Receiver adapterConnects an SAP Cloud Platform tenant to a SuccessFactors system using OData V4Features 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.ComplexType)TwitterReceiver adapterEnables an SAP Cloud Platform tenant to access Twitter and read or post tweets.Using OAuth, the SAP Cloud Platform tenant can access resources on Twitter on behalf of a Twitter user.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 service, you can configure a SOAP, OData or HTTP adapter assigned to the receiver channel and the OData adapter assigned to the sender channel.Related InformationConfigure Communication Channel with Ariba Adapter [page 540]Configure Communication Channel with Facebook Adapter [page 570]Configure Receiver Channel with HTTP Adapter [page 526]Configure Sender Channel with HTTPS Adapter [page 536]Configure Communication Channel with IDoc Adapter [page 510]Configure a Channel with Mail Adapter [page 444]Configure Communication Channel with OData Adapter [page 519]Configure Communication Channel with SFTP Adapter [page 544]Configure Communication Channel with SOAP (1.x) Adapter [page 462]Configure Communication Channel with SOAP (SAP RM) Adapter [page 454]Configure Communication Channel with SuccessFactors (OData V2) Adapter [page 484]Configure Communication Channel with SuccessFactors (REST) Adapter [page 481]Configure Communication Channel with SuccessFactors (SOAP) Adapter [page 476]Configure Communication Channel with Twitter Adapter [page 562]Configure Communication Channel with ODC Adapter [page 572]Configure a Channel with LDAP Adapter [page 574]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4434.12.4.1 Configure a Channel with Mail AdapterThe mail adapter allows you to connect the tenant to an email server.ContextThe sender mail adapter can download e-mails and access the e-mail body content as well as attachments.The receiver mail adapter allows you to send encrypted messages by e-mail.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 attachmentsNoteThe 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.NoteTo 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.NoteTo access an attachment, you have to use Groovy script or JavaScript.For more information about how to access attachments, see the documentation for the Script step.NoteIt is not possible to authenticate the sender of an e-mailUnlike with other adapters, if you are using the sender mail adapter, the Cloud Integration system cannot 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:444 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application Danger to a receiver system when forwarding e-mail contentE-mails can contain malware, such as viruses or Trojan horses.These will not 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 systemE-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 dataSending 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), is not reliable without further verification.The following prerequisites must be met: You have logged into your customer workspace in web tooling. You have assigned the mail adapter to the communication channel.CautionIf 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.This results in the integration flows getting deployed again and you see messages from these integration flows with Run Once setting.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel with mail adapter that you want to configure.3. In General tab page, provide channel name and description in the relevant fields if required.4. If you configure a sender adapter, you can specify the following attributes in the Connection, Processing and Scheduler tab pages.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 445Parameters and Values of Sender Mail Adapter/ConnectionParameters DescriptionAddress 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 servers: 143 for IMAP+STARTTLS 993 for IMAPS 110 for POP3+STARTTLS 995 for POP3SProxy Type The type of proxy that you are using to connect to the target system.Select None if you are connecting directly to the email server.Select On-Premise if you are 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.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, or enter ${header.headername} to dynamically read the value from a header.446 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionProtection Specifies the method to use to establish an encrypted (secure) connection.There are the following options: OffNo encryption is initiated by the client. POP3S (only when transport protocol POP3 has been selected when creating the channel)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)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 MandatoryIf the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, the connection stops with an error. STARTTTLS OptionalIf the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, client and server remain connected but communicate without encryption.Using STARTTLS, an existing connection without encryption can be changed to an encrypted one using TLS (without the need to establish a new connection).Authentication Specifies which mechanism is used to protect user name and password combination. Plain User Name/PasswordThe 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 password. Encrypted User/Password The user name and password are hashed before being sent to the server. This authentication mechanism (CRAM-MD5 and DIGEST-MD5) is secure even without encryption.Credential Name Specifies the name of the User Credentials artifact that contains user name and password (used to authenticate at the email account).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 447Parameters and Values of Sender Mail Adapter/ProcessingParameters DescriptionFolder(only if as Transport Protocol the option IMAP4 has been selected)Specify the IMAP folder containing the mails to be read.Selection(only if as Transport Protocol the option IMAP4 has been selected)Specify which mails will be processed (all mails or only unread ones).Max. Messages per Poll Defines the maximal number of messages that will be read from the email server in one polling step.Post-Processing Specify how to handle processed mails on the server.NoteIf Post-Processing is set to Mark as Read and the poll strategy is set to poll for all mails (Selection: All), then already processed 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 process might become inefficient.Remove Attachments Select this options if attachments should be removed from the mail prior to polling.Parameters and Values of Sender Mail Adapter/SchedulerScheduler Option Field DescriptionSchedule on Day(mails are to be polled at a specific day)On Date Specify the date on which you want the operation to be executed.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.448 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationScheduler Option Field DescriptionSchedule to Recur(mails are to be polled periodically)Daily 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).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 operation 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.Example: With the configuration shown in the figure below, the integration flow will be activated every week on Monday to poll emails on this day every hour, between 00:00 and 24:00 (Greenwhich Time Zone).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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4495. If you configure a receiver adapter, you can specify the following settings in the Connection and Security tab pages.Parameters and Values of Receiver Mail Adapter (General)Parameters DescriptionAddress 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: 587 for SMTP+STARTTLS 465 for SMTPSIf you are using GMail Server, make sure that you allow insecure applications (GMail considers only communication based on OAuth2 as secure) when configuring the server. You can use port 25 for connections to GMail server.Timeout (in ms) Specifies the network timeout for the connection attempt to the server.This is only used for Transmission Control Protocol (TCP), there is no timeout for SMTP commands.The default value is 30000. The timeout should be more than 0, but less than five minutes.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 .Location ID (only if On-Premise is selected 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, or enter ${header.headername} to dynamically read the value from a header.450 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionProtection Defines whether encryption is used. The possible values are: STARTTLS Mandatory If the server supports STARTTLS, the client initiates encryption using TLS. If the server does not support this option, the connection fails. STARTTLS OptionalIf 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 does not support this option, client and server remain connected but communicate without encryption. SMTPSThe TCP connection to the server is encrypted using SSL/TLS. This usually requires an SSL proxy on the server side and access to the port it runs on. Off No encryption is initiated, whether the server requests it or not.Using STARTTLS, an existing connection without encryption can be changed to an encrypted one using TLS (without the need to establish a new connection).Authentication Specifies which mechanism is used to authenticate against the server with a user name and password combination. Possible values are: NoneNo authentication is attempted. No credential can be chosen. Plain User Name/PasswordThe 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 password. Encrypted User/PasswordThe user name and password are hashed before being sent to the server. This authentication mechanism (CRAM-MD5 and DIGEST-MD5) is secure even without encryption.Credential Name Specifies the name of a deployed credential to use for authentication.From E-mail address that the message comes from.To E-mail address that the message is sent to.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 451Parameters DescriptionCc Additional e-mail addresses that the e-mail is to be sent to.These addresses are visible to the receiver.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comBcc Additional e-mail addresses that the e-mail is to be sent to.These addresses are not visible to the receiver.If you want to configure multiple mail receivers, use a comma (,) to separate the addresses.Example: name1@example.com, name2@example.com, name3@example.comSubject Subject of the e-mail message.Mail Body Specifies the text of an e-mail message.Body MIME Type Specifies the type of the message body. This type determines how the message is displayed by different user agents.Body Encoding Specifies the character encoding (character set) of the message body. The content of the input message will be converted to this encoding, and any character that is not available will be replaced with a question mark ('?'). To ensure that data is passed unmodified, select a Unicode encoding, for example, UTF-8.Name (under Attachments) Specifies the file name of the attachment.MIME Type (under Attachments)The Multipurpose Internet Mail Extensions (MIME) type specifies the data format of the e-mail.You can select from the following MIME types: Text/Plain Text/CSV Text/HTML Application/XML Application/JSON Application/Octet-StreamSource Specifies the source of the data. This can be either Body, meaning the body of the input message, or Header, meaning a header of the input message.Header Name If the source is Header, this parameter specifies the name of the header that is attached.452 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionAdd Message Attachments Select this option to add all attachments contained in the message exchange to the e-mail.Parameters and Values of Receiver Mail Adapter/SecuritySection Parameters DescriptionSecurity Encryption Type This parameter configures an encryption scheme 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.Content Encryption Algorithm Specifies the symmetric (block) cipher. DESede should only be chosen if the destination system or mail client does not 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.6. Save or deploy changes.NoteThe 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.htmlRelated InformationDynamic Parameters [page 392]Headers and Exchange Properties [page 8]Define Script [page 635]Options to Protect Mail Connections [page 454]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 453http://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.html4.12.4.1.1 Options to Protect Mail ConnectionsWith mail sender and receiver adapter, you have several options to protect the communication. SMTPS (receiver adapter), IMAPS (sender adapter) or POP3S (sender adapter)Using one of these options, an encryption is already initiated when establishing the connection. The connection in that case is protected using Transport Layer Security (TLS). The mail server needs to offer a dedicated port in that case. STARTTLSUsing this option, an existing, unencrypted connection can be changed to an encryptiod one. This works that way that, after the connection has been established, the client request from the server which enhanced operations are supported by the latter. In case it is STARTTLS, the connection is upgraded to an encrypted one.The Protection parameter in the mail adapter provides two variants of using STARTTLS: STARTTTLS MandatoryIf the server supports STARTTLS, the client initiates encryption using TLS (otherwise, the connection stops with an error). STARTTTLS OptionalIf the server supports STARTTLS, the client initiates encryption using TLS (otherwise, client and server remain connected but communicate without encryption).4.12.4.2 Configure Communication Channel with SOAP (SAP RM) AdapterPrerequisites You have logged into your customer workspace in Cloud Integration web tooling. You have assigned SOAP adapter to the communication channel. You have specified SAP RM as the message protocol.ContextYou use this procedure to configure a communication channel with the SOAP (SAP RM) adapter.You have the option to set SOAP headers using Groovy script (for example, using the Script step).Supported Header (Sender Adapter): SapAuthenticatedUserNameContains 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).454 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSupported Header (Receiver Adapter): SOAPAction HeaderThis header is part of the Web service specification.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel with SOAP (SAP RM) adapter that you want to configure.3. In General tab page, provide channel name and description in the relevant fields if required.4. Choose Adapter Specific tab page.5. Provide values in fields based on description in table.NoteNote regarding WSDL import:Parameters and Values of Sender SOAP (SAP RM) Adapter - Connection DetailsParameters DescriptionAddress Relative endpoint address at which the ESB listens to the incoming requests, for example, /HCM/GetEmployeeDetails.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.NoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 455Parameters DescriptionProcessing 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product 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.456 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionAuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 457Parameters Description When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well. If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Conditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.NoteFor Exactly-Once handling, the sender SOAP (SAP RM) adapter save the protocolspecific 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 headerSOAP (SAP RM) Header Camel HeaderMessageId SapMessageIdEx und SapMessageIdQualityOfService SapPlainSoapQoSExactlyOnce ExactlyOnceExactlyOnceInOrder ExactlyOnceInOrder458 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSOAP (SAP RM) Header Camel HeaderQueueId SapPlainSoapQueueIdNoteNote regarding WSDL import:Parameters and Values of Receiver SOAP (SAP RM) Adapter - Connection DetailsParameters DescriptionAddress Endpoint address at which the ESB posts the outgoing message, for example http://:/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 message) 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 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).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 .Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically read the value from a header or a property.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 459Parameters DescriptionURL 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.NoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.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.NoteUsing the same port names across receivers is not supported. 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 keystore and authenticates you to the receiver in an HTTPS communication.NoteIf 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 performance.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.Clean Up Request Headers Select this option to clean up the adapter specificheaders after the receiver call.460 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionRequest 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).Authentication You can select one of the following authentication methods: BasicThe 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 CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, AS2, SOAP, IDOCNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 ${exchangeProperty.MyCredentialName}.6. Save or deploy changes.Related InformationSetting SOAP Headers [page 641]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 461http://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttps://wiki.scn.sap.com/wiki/display/ABAPConn/Plain+SOAP?original_fqdn=wiki.sdn.sap.com4.12.4.3 Configure Communication Channel with SOAP (1.x) AdapterPrerequisites You have logged into your customer workspace in SAP Cloud Platform Integration web application. You have assigned SOAP adapter to the communication channel. You have specified SOAP 1.x as the message protocol.ContextYou use this procedure to configure a communication channel with the SOAP (1.x) adapter.You have the option to set SOAP headers using Groovy script (for example, using the Script step).Supported Header (Sender Adapter): SapAuthenticatedUserNameContains 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 HeaderThis header is part of the Web service specification.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel with SOAP (1.x) adapter you want to configure.3. In General tab page, provide channel name and description in the relevant fields if required.4. Choose Adapter Specific tab page.5. If you are configuring the SOAP 1.x adapter in sender channel, perform the following substeps.a. Choose the General tab page and specify name and description for the channel if required.b. Choose the Adapter Specific tab page and provide values in fields based on description in table.462 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwiki.scn.sap.com%2Fwiki%2Fdisplay%2FABAPConn%2FPlain%2BSOAP%3Foriginal_fqdn%3Dwiki.sdn.sap.comNoteNote regarding WSDL import:Parameters and Values of Sender SOAP (SOAP 1.x) Adapter/Connection SettingsParameters DescriptionAddress Relative endpoint address on which the integration runtime expects incoming requests, for example, "/HCM/GetEmployeeDetails".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. WSDL: The service behavior is defined via WSDL configuration.Message Exchange Pattern(only if Service Definition:Manual is selectedSpecifies the kind of messages that are processed by the adapter. Request-Reply: The adapter processes both request and response.TipWhen using this option, the response code can accidently be overwritten by a called receiver. For example, when your integration flow contains an SOAP sender adapter (with a Request-Reply pattern) and an HTTP receiver adapter, and the HTTP receiver returns an HTTP response code 202 (as it has accepted the call), 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. One-WayDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 463Parameters DescriptionURL to WSDL(only if as Service Definition the option WSDL is selected)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 resources. For example, you can upload a WSDL which contains an imported XSD referred by an xsd:import statement. That means, when you like 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 that currently the WSDL file referenced in the SOAP channel needs to reside directly in the uppermost folder, not in any sub-folder. The referenced XSDs and WSDLs can be in sub-folders.NoteIf 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: :Example: p1:MyServiceNoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.Service Name of the selected service contained in the referenced WSDLEndpoint(only if Service Definition: The adapter only: WSDL is selected)Name of the selected port of a selected service (that you provide in the Service Name field) contained in the referenced WSDL464 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionProcessing Settings(only if one of the following options is selected: Service Definition: WSDL Service Definition: Manual andMessage Exchange Pattern: One-Way WS 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 465Parameters DescriptionAuthorization 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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit.466 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters Description When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well. If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Parameters and Values of Sender SOAP (SOAP 1.x) Adapter/WS-Security SettingsParameters DescriptionWS-Security Configuration Specifies the way how WS-Security settings are to be configured. Via Manual Configuration in ChannelThe security settings are manually to be configured (see below listed attributes). NoneNo WS-Security is applied for message exchange.If you select this option, no further WS-Security-relevant settings can be applied.WS-Security Type Specifies the combination of message protection methods that are to be applied. There are the following options: Verify MessageA signed payload is expected by the tenant, and the signature has to be verified. Verify and Decrypt MessageA signed and encrypted payload is expected by the tenant. The signature has to be verified and the payload has to be decrypted.Private Key Alias for Response SigningSpecify an alias for the private key that is to be used to sign the response message.You can also enter ${header.headername} or ${property.propertyname} to read the name dynamically from a header or exchange property.The tenant private key is used to sign the response message (that is sent to the WS consumer). The tenant private key has to be part of the tenant keystore.Public Key Alias for Response Encryption(only in case Verify and Decrypt Message is selected for WS-Security Type)Specify an alias for the public key that is to be used to encrypt the response message..The sender (WS consumer) public key is used to sign the response message (that is sent to the WS consumer). This key has to be part of the tenant keystore.Save Incoming Signed MessageSelect this option if the incoming signed (and encrypted) message is to be stored.Signature Algorithm Specify a signature algorithm to be applied when signing the response message.Possible values: SHA1 (default value) SHA256 SHA512Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 467Parameters DescriptionCheck Time Stamp Select this option, if the sender (WS consumer) sends a time stamp along with the message.In case a request-response pattern is configured, a time stamp is added to the response message.Sender is Basic Security Profile CompliantAs default setting, select this option.This option should be selected in case the sender system supports a dedicated security level which is described by the Basic Security Profile (as assumed to be the case for most systems). Only in case the sender system does not support this security profile, de-select this option.Algorithm Suite Assertion Specifies which algorithms are to be used by the WS consumer.Initiator Token Include StrategyPre-set value Always to Recipient ensures that the WS consumer sends the certificate along with the message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.Recipient Token Include StrategyValue Always to Initiator adds the certificate to the response message.Conditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.6. If you are configuring the SOAP 1.x adapter in receiver channel, perform the following substeps.a. Choose General tab page and specify name and description for the channel if required.b. Choose the Adapter Specific tab page and provide values in fields based on description in table.468 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationNoteNote regarding WSDL import:Parameters and Values of Receiver SOAP (SOAP 1.x) Adapter - Connection DetailsParameters DescriptionAddress Endpoint address on which the ESB Bus posts the outgoing message, for example http://:/payment.You can dynamically configure the address field of the SOAP (SOAP 1.x) 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 message) 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 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).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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 469Parameters DescriptionLocation ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically 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 resources. For example, you can upload a WSDL which contains an imported XSD referred by an xsd:import statement. That means, when you like 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 that currently the WSDL file referenced in the SOAP channel needs to reside directly in the uppermost folder, not in any sub-folder. The referenced XSDs and WSDLs can be in sub-folders.NoteIf you specify a WSDL, you also have to specify the name of the selected service, the name of the port selected for this service and the name of the operation selected for this service. These fields must have a namespace prefix.Expected format: :Example: p1:MyServiceNoteThe following applies only when you use the Eclipse Integration Designer (not valid for the Web UI): To specify the WSDL, you can also directly enter /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. When you use the URL to WSDL feature to import a WSDL which contains an imported XSD (xsd:import statement), make sure that the XSD file to import is also stored under src.main.resources.wsdl. WSDLs with imported XSDs (xsd:import statement) are currently not supported for the Web UI.Service Name Name of the selected service contained in the referenced WSDL cPort Name Name of the selected port of a selected service (that you provide in the Service Name field) contained in the referenced WSDL .Same port names across receivers is not supported. To use the same port names, you need to create a copy of the WSDL and use it.470 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionOperation Name Name of the operation of selected service (that you provide in the Service Name field) contained in the referenced WSDL.Request 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 compressed response messages.Allow Chunking Used for enabling HTTP chunking of data while sending messages.Clean Up Request Headers Select this option to clean up the adapterspecific headers after the receiver call.Connect Without Client AuthenticationThis feature corresponds to the Authentication setting None and is shown when you use 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product profile) that you continue editing an integration flow which exists already for a certain 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.Connect Using Basic AuthenticationThis feature corresponds to Authentication setting Basic and is shown when you use 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 Platform Integration or (in case you have selected SAP Cloud Platform Integration product profile) that you continue editing an integration flow which exists already for a certain time.Select this option to allow the tenant to connect to the receiver system using the deployed 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 471Parameters DescriptionAuthentication You can select one of the following authentication methods: BasicThe 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.When you have selected Basic authentication option, you can enter a Credential Name. Client CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDoc.The AS2 adapter also supports this option.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 ${exchangeProperty.MyCredentialName}.472 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlParameters DescriptionPrivate Key Alias Allows you to enter the private key alias name that gets the private key from the keystore and authenticates you to the receiver in an HTTPs communication.If you have selected the option of Connect using Basic Authentication, 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 performance.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.The reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured.WS-Security Configuration Specifies the way how WS-Security settings are to be configured. Via Manual Configuration in ChannelThe security settings are manually to be configured (see below listed attributes). Based on Policies in WSDLThe security settings are specified as part of the receiver endpoint (within the endpoint WSDL) in elements as NoneNo WS-Security is applied for message exchange.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 473Parameters DescriptionUsername Token Specifies the way how Username Token is to be configured. Select this option to authenticate at message level based on a user ID and a password (transported within a SOAP message).UsernameToken defined in the WS Security standard. Plain Text PasswordThe Password is transferred in plain text (https encrypted). Hashed Password (Password Digest)Cryptographic hash function is applied for password. NoneNo User Name Token is applied.If you have selected the option Plain Text Password or Hashed Password (Password Digest), enter the credential name, that is, the alias that was assigned to the authorized user and password during tenant deployment.NoteIt depends on additional adapter settings how the token is treated during runtime (in particular, with regard to whether the token will be encrypted or not).When the security settings are defined by the endpoint WSDL (when for WS-Security Configuration you have selected Based on Policies in WSDL), the token is treated according to what is defined within the WSDL.When the security settings are defined manually (when for WS-Security Configuration you have selected Via Manual Configuration in Channel), it depends on the selected WS-Security Type how the token is treated: Sign Message selected: The token is not encrypted. Sign and Encrypt Message selected: The token is encrypted.Credential Name(only configurable when for WS-Security Configuration the option Based on Policies in WSDL is selected)WS-Security Type Specifies the combination of message protection methods that are to be applied. There are the following options: Sign MessageTenant signs the payload. Sign and Encrypt MessageTenant signs and encrypts the payload NoneNo WS-Security Type is applied.474 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionPrivate Key Alias for Signing Specify an alias for the tenant private key that is to be used to sign the message.You can also enter ${header.headername} or ${property.propertyname} to read the name dynamically from a header or exchange property.The tenant private key is used to sign the request message (that is sent to the WS provider (receiver)). The tenant private key has to be part of the tenant keystore.Public Key Alias for Encryption(only configurable when for WS-Security Type the option Sign and Encrypt Message is selected)Specify an alias for the public key that is to be used to encrypt 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.Signature Algorithm Specify a signature algorithm to be applied when signing the request message.Possible values: SHA1 (default value) SHA256 SHA512Set Time Stamp Select this option to send a time stamp along with the message.In case a request-response pattern is configured, a time stamp is expected in the response message.Receiver is Basic Security Profile CompliantLeave this option selected if the receiver system complies with the basic security profile (as assumed to be the case for most systems). Deselect this option if the receiver system does not support this security profile.Layout StrictItems are added to the security header following numbered layout rules according to a general principle of 'declare before use'. LaxItems are added to the security header in any order that conforms to WSS: SOAP Message SecurityAlgorithm Suite Assertion Specifies which algorithms are used by the WS consumerInitiator Token These entries define policies for the WS consumer. Include StrategyValue Always to Recipient ensures that the WS consumer sends the certificate along with the message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 475Parameters DescriptionRecipient Token These entries define policies for the WS consumer. Include StrategyValue Always to Initiator adds the certificate to the response message. X509 Token AssertionDefines the format of the certificate being sent by the WS consumer along with the message.7. Save or deploy the changes.NoteIn the case of integration flows in OData service artifacts, you can save the integration flow and deploy the OData service.Related InformationSetting SOAP Headers [page 641]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-soap-adapter/4.12.4.4 Configure Communication Channel with SuccessFactors (SOAP) AdapterPrerequisites You have logged in to your customer workspace in the SAP Cloud Platform Integration web tooling. You have assigned the SuccessFactors adapter to the communication channel. You selected the SOAP message protocol when you assigned the SuccessFactors adapter.ContextThe SuccessFactors adapter enables you to communicate with the SuccessFactors system. You use the SOAP message protocol to connect to the SOAP-based Web services of the SuccessFactors system.476 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F25%2Fcloud-integration-soap-adapter-web-service-security%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F24%2Fcloud-integration-wss-between-cloud-integration-and-sap-po-soap-adapter%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F01%2F24%2Fcloud-integration-wss-between-cloud-integration-and-sap-po-soap-adapter%2FNoteYou can now pass filter conditions via a header or property while performing an asynchronous or ad hoc operation.RestrictionIf you deploy an integration flow in 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 where the Scheduler has not started. As a result, the message monitor displays messages of less than a few milliseconds, where the scheduler was not triggered. These entries contain firenow=true in the log. You can ignore these entries.Use the following procedure to configure a communication channel with the SuccessFactors adapter.Procedure1. Select the integration flow you want to configure and choose Edit.2. Select the communication channel you want to configure.3. On the General tab, provide the channel name and description in the relevant fields if required.4. Go to the Adapter Specific tab and provide values in the fields based on the descriptions in the following table.Field Name and Description for SuccessFactors SOAP Adapter Processing DetailsField DescriptionSFSF Data Center SuccessFactors data center that you want to connect to.AddressNoteThis field is enabled only if you choose Other in the SFSF Data Center field.URL of the SuccessFactors data center that you want to connect to.Address Suffix System automatically populates this field with /sfapi/v1/soap as you have selected the SOAP message protocol.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.If you choose Manual, you need to 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 477Field DescriptionCredential Name Credential name for your credentials that has been deployed on the tenant.Call Type Default value is Synchronous Query. If you want to execute an ad hoc operation, select Adhoc / Asynchronous from the dropdown list.Operation Operation that you want to perform on the entity that you are accessing on the SuccessFactors system.Entity Entity that you want to access in the SuccessFactors system.Query Query that you are executing.Page Size Maximum number of records to be fetched in one page of response.Timeout Maximum time the system waits for a response before . If you do not enter a value, the default value of is used.Retry on Failure Enables the adapter to retry connecting to SuccessFactors system in case of any network issues. The adapter tries to reestablish connection every 3 minutes, for a maximum of 5 times.5. If you want to select or change the entity, and modify the query, follow the steps in Modifying SuccessFactors SOAP Entity and Operation [page 479].6. If you are using the SuccessFactors SOAP adapter in the receiver channel of a Local Integration Process, select Process in Pages.You cannot use the Process in Pages option with the Query operation if the Process Call step is used in a Multicast branch.NoteBy selecting Process in Pages, you enable the adapter to process messages in batches. The size of a message batch is defined by the value that you specify in the Page Size field.TipIn the Process Call step in which you are calling the Local Integration Process, ensure that you enable looping and set Expression Type as Non-XML, Condition Expression as ${property.SAP_SuccessFactorsHasMoreRecords.} contains 'true', and Maximum Number of Iterations as 999.7. If you are configuring the sender channel, go to the Scheduler tab and provide values in the fields based on the descriptions in the following table.478 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationScheduler Option Field DescriptionRun Once NA Select to execute the operation immediately after deploying the integration content.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 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 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 you want the operation to be executed. Also, specify the time or interval for the schedule to recur.Monthly Select the day of the month on which you want the operation to be executed. Also indicate the time or the interval for the schedule to recur.8. Save or deploy your changes.4.12.4.4.1 Modifying SuccessFactors SOAP Entity and OperationPrerequisites You are configuring the communication channel that is assigned with the SuccessFactors SOAP adapter. The TrustedCAs from the service provider you are connecting to have been added to the system keystore associated with your HCI account.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 479ContextThe SuccessFactors SOAP adapter enables you to modify the entity that you are accessing and the operation that you are performing on the entity. You can use this adapter to perform the following operations: Query Insert Update UpsertYou use the following procedure to change the entity and modify the operation for the SuccessFactors SOAP adapter.Procedure1. In the Entity field, choose Select.2. If you have not added the system with authentication details, choose and provide values in the fields, based on the descriptions in the following table. Choose Connect.Fields DescriptionSystem Name of the SuccessFactors data center that you are connecting toAddress URL of the SuccessFactors data center that you are connecting toCompany ID Company ID for authenticationUser ID User ID associated with the company IDPassword Relevant password for the specified user ID3. If you have added the system with authentication details, perform the following substeps:a. In the System field, choose the system you want to connect to from the dropdown list.b. In the Password field, provide the appropriate password.c. Choose Connect.4. In the Entity Selection dialog, select the entity that you want to access.5. In Operation dropdown list, choose the operation that you want to perform.NoteYou can only perform the Query operation in the sender channel.6. In the Fields dropdown list, select the fields that you want to perform the operation on.480 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationNoteYou can select multiple fields by selecting their respective checkboxes. Choose the operation you want to perform.7. If you want to specify filter conditions, choose the icon, select the operation you want to use, and perform the following substeps:a. In the Filter By field, enter the fields that you want to filter.b. In the Operator dropdown list, select the operator that you want to use to define the filter condition.c. In the Input Type field, select the type of input you want to provide for defining the filter condition.d. In the Value field, provide the value of the input for the filter condition.e. Select AND or OR based on how you want this filter condition to be evaluated when the operation is executed.f. Choose Add to add more than one filter condition.8. If you want to specify sorting conditions, choose and perform the following substeps:a. In the Field field, select the field you want to include in the sorting condition.b. If you want the sorting to be done in descending order, select the checkbox in the Desc column.c. Choose to add more than one filter condition.ResultsThe system displays a message that an XSD file has been created. You can use this XSD file for mapping steps.4.12.4.5 Configure Communication Channel with SuccessFactors (REST) AdapterPrerequisites You have logged in to your customer workspace in the SAP Cloud Platform Integration web tooling. You have assigned the SuccessFactors adapter to the communication channel. You selected the REST message protocol when you assigned the SuccessFactors adapter.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 481ContextThe SuccessFactors adapter enables you to communicate with the SuccessFactors system. You use the REST message protocol to connect to the REST-based Web services of the SuccessFactors system.You use this procedure to configure a communication channel with the SuccessFactors adapter.Procedure1. Select the integration flow you want to configure and choose Edit.2. Select the communication channel you want to configure.3. On the General tab, provide channel name and description in the relevant fields if required.4. Go to the Adapter Specific tab and provide values in the fields based on the descriptions in the following table.Field Name and Description for SuccessFactors REST Adapter Processing DetailsField DescriptionAddress URL of the SuccessFactors LMS serviceAddress Suffix URL suffix for the SuccessFactors LMS serviceCredential Name Name of the credentials deployed on the SuccessFactors LMS service for authenticationProxy Type Type of proxy you want to use to connect to the SuccessFactors system.If you choose Manual, you need to 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.Operation Operation that you want to performNoteYou can only perform GET operations on the sender channel.482 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionEntity LMS entity that you are accessingNoteSee the relevant LMS API documentation for more details.Parameters Operation parameters that you want to sendPage Size Maximum number of records on each page of response5. If you are configuring the sender channel, go to the Scheduler tab and provide values in the fields based on the descriptions in the following table.Scheduler Option Field DescriptionRun Once NA Select to execute the operation immediately after deploying the integration content.Schedule on Day On Date Specify the date on which you want the operation to be executed.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 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 you want the operation to be executed. Also, specify the time or interval for the schedule to recur.Monthly Select the day of the month on which you want the operation to be executed. Also indicate the time or the interval for the schedule to recur.6. Save or deploy your configuration.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 4834.12.4.6 Configure Communication Channel with SuccessFactors (OData V2) AdapterContextThe SuccessFactors adapter enables you to communicate with the SuccessFactors system. You use the OData V2 message protocol to connect to the OData V2 Web services of the SuccessFactors system.NoteThe OData V2 message protocol for the SuccessFactors adapter is available only in the receiver channel.RestrictionIf you deploy an integration flow in SAP Cloud Platform 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 where the Scheduler is not started. As a result, the message monitor displays messages of less than a few milliseconds, where the scheduler 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. You can use headers and exchange properties in the adapter settings to dynamically pass values during runtime. More information: Headers and Exchange Properties [page 385].Use the following procedure to configure a communication channel with the SuccessFactors adapter.Procedure1. Choose Adapter Specific tab and provide values in the fields based on the descriptions in the following table.Field Name and Description for SuccessFactors OData Adapter Processing DetailsField DescriptionSFSF Data Center SuccessFactors data center that you want to connect to.484 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionAddressNoteThis field is empty only if you choose Other in the SFSF Data Center field. If you choose one of the available data centers, the value is automatically filled by the system.URL of the SuccessFactors data center that you want to connect to.Address Suffix System automatically populates this field with /odata/v2 as you have selected the SOAP message protocol.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.If you choose Manual, you need to 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.Credential Name Credential name for your credentials that has been deployed on the tenant.Operation Details Operation that you want to perform on the entity that you are accessing on the SuccessFactors system.Resource Path Path for the OData resource that you are accessing.Query Options NoteThis field is enabled only if you choose Query(GET) or Read(GET) operations.These are also called system query options, and are just two of the query options provided by the OData service. For example, oederby, top, and skip.The syntax is $=. For example, $orderby=Rating and $top=5. If you want to specify more than one query option, separate them with the '&' character.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 485Field DescriptionFields NoteThis field is enabled only if you choose Create(POST), Update(PUT), or Upsert(UPSERT) operations.Fields from the entity that you want to perform the operation on.Custom Query Options Custom query options that you want to add to your query.The syntax is =. If you want to add more than one custom query option, separate them with the '&' character.Content Type NoteThis field is enabled only if you choose Create(POST), Update(PUT), or Upsert(UPSERT) operations.Choose Atom or JSON based on the type of content you are sending.Content Type Encoding NoteThis field is enabled only if you choose Create(POST), Update(PUT), or Upsert(UPSERT) operations.Specification according to which your content should be encoded before transmission.Page Size Maximum number of records to be fetched in each page of response.Process in Pages Select to process records in batches. The size of the batches is specified in the Page Size field. For more information, see step 5.Timeout Maximum time the system waits for a response before the connection ends or is timed out. If you do not enter a value, the default value of 60000ms or 5 minutes is used.Retry on Failure Enables the adapter to retry connecting to SuccessFactors system in case of any network issues. The adapter tries to reestablish connection every 3 minutes, for a maximum of 5 times.486 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationRestrictionIf you use configure the Address field in Connection tab of the adapter settings with header (${header.abcd}) or exchange property (${property.abc}), the values will not be resolved in the query wizard. If you want the value of the Address to be carried over to the query wizard's Address field, do not use header and exchange properties.2. If you want the system to fetch records in pages of the size specified in the Page Size field, select the Process in Pages checkbox. We recommend that you use this option with a Local Integration Process used in a Process Call step with Looping enabled. The Process in Pages option is available only for Query (GET) operations.You cannot use the Process in Pages option with a Query operation if the Process Call step is used in a Multicast branch.NoteBy selecting Process in Pages, 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.TipIn the Process Call step in which you call the Local Integration Process, ensure that you enable looping and set the Expression Type as Non-XML, Condition Expression as ${property...hasMoreRecords} contains 'true', and Maximum Number of Iterations as 999.3. If you want to define or modify the resource path, see Select Entity and Define Operation for SuccessFactors OData V2 Adapter [page 487].4. Save or deploy your changes.4.12.4.6.1 Select Entity and Define Operation for SuccessFactors OData V2 AdapterPrerequisites You are configuring a communication channel with SuccessFactors OData V2 adapter.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 487ContextThe SuccessFactors OData V2 adapter enables you to modify the entity that you are accessing and the operation that you are performing on the entity. You can use this adapter to perform the following operations: Query (GET) Create (POST) Update (PUT) Read (GET) delete(DELETE) Merge(MERGE)You use the following procedure to change the entity and modify the operation for the SuccessFactors OData V2 adapter.Procedure1. Choose Processing Select .2. Provide values in fields based on description in table.Connect to System - Fields and DescriptionField DescriptionConnection Source Choose Remote if you want to manually specify the URL, proxy, and other associated details to connect to the SuccessFactors OData service.Choose Local EDMX File if you want to use an EDMX file of the service you want to connect to. If you select this option, choose Browse and use an existing EDMX resource or use Upload from File System option to upload EDMX from your local file system. You will not see any of the other fields mentioned below.Below fields are available only if you select Remote as Connection SourceAddress URL of the SuccessFactors OData service that you want to connect to.Proxy Type Currently, you can only use Internet proxy type.Authentication If the service does not need authentication, choose None.If the service needs authentication, choose Basic.Use Credential Name If you have already deployed the credentials in Operations View, select this checkbox and specify the Credential Name.488 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionCredential Name (Enabled only if you have selected Use Credential Name checkbox)Name of the credential that is deployed in Operations View.Below fields are available only if you do not select Use Credential Name checkboxCompany ID The company ID that you are using to log in to the SuccessFactors systemUsername Username associated with the Company IDPassword Password associated with the specified username.ResultsThe system displays a message that an EDMX file has been created. You can use this EDMX file for connecting to the system subsequently to modify operations.The system also displays a message that an XSD file has been created. You can use this XSD file in mapping steps.4.12.4.7 Configure Communication Channel with SuccessFactors (OData V4) AdapterContextThe SuccessFactors adapter enables you to communicate with the SuccessFactors system. You use the OData V4 message protocol to connect to the OData V4-based Web services of the SuccessFactors system.NoteThe OData V4 message protocol for the SuccessFactors adapter is only available 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. You can use headers and exchange properties in the adapter settings to dynamically pass values during runtime. More information: Headers and Exchange Properties [page 385].Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 489Procedure1. Choose Adapter Specific tab and provide values in the fields based on the descriptions in the table below.Field DescriptionAddress URL of the SuccessFactors data center that you want to connect to.Credential Name Credential name that you have used while deploying credentials on the tenant.Proxy Type Type of proxy you want to use to connect to the SuccessFactors system.Currently, you can only choose Internet as the proxy type.Operation Select the operation that you want to perform from the dropdown list.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 service with operation details. (Relevant for Query(GET) operation only)2. Save or deploy your changes.4.12.4.8 Configure Communication Channel with AS2 AdapterPrerequisitesIf you (the tenant admin) want to provision the message broker to use AS2 adapter scenarios, you must have the Enterprise Edition license.NoteYou have to set up a cluster to use the message broker. For more information, see .490 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationCautionDo not use this adapter type together with Data Store Operations steps, Gather (message aggregator) steps, or global variables, as this can cause issues related to transactional behavior.ContextYou use this procedure to configure the sender and receiver channels of an integration flow with the AS2 adapter. You can use this 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.RestrictionIf you deploy an integration flow in SAP Cloud Platform 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.NoteWhen 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 operations view.Procedure1. Create a connection in the integration flow model and select the adapter type AS2.2. If you are configuring the sender channel, select AS2 or AS2 MDN in the Message Protocol field. For the receiver channel, select AS2.Note If you are configuring the sender channel to receive AS2 messages, you can select the AS2 message protocol. If you are configuring the sender channel to receive asynchronous AS2 MDN, you can select the AS2 MDN message protocol. If you want to call the AS2 sender channel, then the pattern for the AS2 sender channel should be http://:/as2/as2, and the pattern for the AS2 MDN sender channel should be http://:/as2/mdn . To analyze a troubleshooting scenario better, we recommend to mention the name of the AS2 sender channel. Because a part of the JMS queue name contains the AS2 sender channel name.3. Go to the Processing tab on the Adapter-Specific tab page and enter the following details:Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 491Fields DescriptionMessage 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 allowed.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 incoming load.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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser mapping are checked based on user-to-role assignments defined on the tenant.492 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationFields DescriptionDepending on your choice, you can also specify one of the following properties: Client Certificate AuthorizationAllows you to select one or more client certificates to be used for inbound authorization.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. User RoleAllows you to enter a role based on which inbound authorization is to be checked.CautionThe role name must not contain any umlaut characters (for example, ).Default value is ESBMessaging.send. This role authorizes a sender system to process messages on a tenant.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 Authentication.File Name (For receiver only) Specify AS2 file name. If no file name is specified, the default file name _File is used. Simple expressions, ${header.}, or ${property.} are allowed.Own E-Mail Address (For receiver only) Specify own e-mail ID. Simple expressions, ${header.}, or ${property.} are allowed.Content Type (For receiver only) Specify content type of the outgoing message. For example: application/edi-x12. Simple expressions, ${header.}, or ${property.} are allowed.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Content_Type.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 493Fields DescriptionNoteIf the header value is set, it takes precedence over the 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, specify the expression as EDI.*Content Transfer Encoding (For receiver only) Specify AS2 message encoding type.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.4. Go to the Security tab on the Adapter-Specific tab page and enter the following details.Field DescriptionMessage Security Ensures that the message is compressed or encoded.Decrypt Message (For sender only) Ensures that the message is decrypted.You can also set the value of this attribute dynamically using the header SAP_AS2_Inbound_Decrypt_Message.The valid values are: true falseNoteIf the header value is set, it takes precedence over the actual value configured in the channel.Private Key Alias (For sender only) If you select Decrypt Message, this field is enabled. Specify the private key alias to decrypt the AS2 message.Verify Signature (For sender only) Ensures that the signature is verified.494 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionYou can also set the value of this attribute dynamically using the header SAP_AS2_Inbound_Verify_Signature.Public Key Alias (For sender only) If you select Verify Signature of Message, this field is enabled. Specify the public key alias to verify the signature of the AS2 message.Compress Message (For receiver only) Ensures that the outgoing message 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 falseNoteIf the header value is set, it takes precedence over the actual value configured in the channel.Sign Message (For receiver only) Ensures that the outgoing AS2 message 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 falseNoteIf the header value is set, it takes precedence over the actual value configured in the channel.Algorithm (For receiver only) If you select Sign Message, this field is enabled. Select the AS2 message signing algorithm.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 MD5Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 495Field DescriptionNoteIf the header value is set, it takes precedence over the actual value configured in the channel.Private Key Alias (For receiver only) If you select Sign Message, this field is enabled. Specify the private key alias to sign the AS2 message. Simple expressions, ${header.}, or ${property.} are allowed.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Signing_Private_Key_AliasEncrypt Message (For receiver only) Ensures that the message is encrypted.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Encrypt_Message.The valid values are: true falseNoteIf the header value is set, it takes precedence over the actual value configured in the channel.Algorithm (For receiver only) If you select Encrypt Message, this field is enabled. Select the AS2 message encryption algorithm.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 RC2NoteIf the header value is set, it takes precedence over the actual value configured in the channel.Public Key Alias (For receiver only) If you select Encrypt Message, this field is enabled. Specify the public key alias to encrypt the AS2 message. Simple expressions, ${header.}, or ${property.} are allowed. The 496 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField Descriptionheader or property can contain a public key alias or X509 certificate.Key Length (For receiver only) If you select Encrypt Message and select RC2 in the Algorithm field, this field is enabled. Specify the public key length.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Encryption_Key_Length.NoteIf the header value is set, it takes precedence over the actual value configured in the channel.5. Go to the MDN tab on the Adapter-Specific tab page and enter the following details:Fields DescriptionPrivate Key Alias for Signature (For sender only) Specify private key alias to sign the MDN on partner's request.Signature Encoding (For sender only) Select MDN signature encoding type.Authentication for Asynchronous MDN (For sender only)Select authentication type for asynchronous MDN.Timeout (For sender only) Specify the time in milliseconds during which the client has to accept the asynchronous MDNore 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 incoming load.Type (For receiver only) 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.NoteIf the header value is set, it takes precedence over the actual value configured in the channel.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 497Fields DescriptionTarget URL (For receiver only) If you select the asynchronous MDN type, this field is enabled. Specify the URL where the AS2 MDN will be received from the partner. Simple expressions, ${header.}, or ${property.} are allowed.Request Signing (For receiver only) If you select the asynchronous or synchronous MDN type, this field is enabled. You can enable this option to request the partner to sign AS2 MDN.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Mdn_Request_Signing.Algorithm (For receiver only) If you enable the Request Signing option, this field is enabled.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Mdn_Signing_Algorithm.NoteIf the header value is set, it takes precedence over the actual value configured in the channel.Verify Signature (For receiver only) If you select the synchronous MDN type, this field is enabled. You can enable this option to verify the signature of AS2 MDN.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Mdn_Verify_SignaturePublic Key Alias (For receiver only) If you select Verify Signature, this field is enabled. Specify the public key alias to verify the MDN signature. Simple expressions, ${header.}, or ${property.} are allowed. The header or property can contain a public key alias or X509 certificate.Request MIC (For receiver only) If you want to request an integrity check, enable this option.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Mdn_Request_Mic.Verify MIC (For receiver only) If you select the synchronous MDN type, this field is enabled. You can enable this option to verify the MIC of AS2 MDN.498 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationFields DescriptionYou 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 ................ ............... processed In an MDN message, negative MDN is represented as follows:Sample Code ................ ................ processed error insufficient-message-security Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 499 If MDN signature validation fails or an incorrect message integrity check (MIC) is received, the status of the message is FAILED.6. Choose Retry and enter the retry handling details.Parameters DescriptionRetry Interval (in min) Enter a value for the amount of time to wait before retrying message delivery.Exponential Backoff Enter a value to double the retry interval after each unsuccessful retry.Maximum Retry Interval (in min) Enter a value for the maximum amount of time to wait before 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.7. Go to the Connection tab on the Adapter-Specific tab page for the AS2 receiver channel and enter the following details:Fields DescriptionRecipient URL (For receiver only) Specify partner's AS2 URL. Simple expressions, ${header.}, or ${property.} are allowed.You can also set the value of this attribute dynamically using the header SAP_AS2_Outbound_Async_Mdn_Url.NoteIf the header value is set, it takes precedence over the actual value configured in the channel.If the recipient URL belongs to the AS2 adapter of SAP Cloud Platform Integration, the pattern for the AS2 sender channel should be http://:/as2/as2 and the pattern for the AS2 MDN sender channel should be http://:/as2/mdn .URL Parameters Pattern (For receiver only) Specify regular expression to pick message headers and add them as AS2 URL parameters.500 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationFields DescriptionFor example, if you want to pick all EDI headers starting with the name EDI, then you can specify the expression as EDI.*Proxy Type (For receiver only) Internet: Define the proxy server for outbound AS2 communication over the network. On-Premise: Define a on-premise proxy server for outbound AS2 communication.Note You must not define HTTPS endpoints for on-premise proxy types. Certificatebased authentication is not allowed.Authentication Type (For receiver only) Specify the authentication type for invoking the recipient URL.Credential Name (For receiver only) If you select basic authentication, this field is enabled.Private Key Alias (For receiver only) If you select client certificate authentication, this field is enabled.Timeout (in ms) (For receiver only) Specify the time in milliseconds during which the client has to accept the AS2 message before the timeout occurs.8. Save the configuration of the channel editors.Note 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 AS2OriginalMessageIDDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 501 Depending on your AS2 adapter scenario, use the following attributes to reference the values that are associated with MPL: AS2 receiver adapter attributes: AdapterId adapterMessageId SAP_MplCorrelationId ReceiverAS2Name MessageDirection MDNType MPL ID MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Receiver, adapterMessageId=,SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,ReceiverAS2Name=ASCDSSCSAS2,MessageDirection=Outbound,MDNType=Receiving,MPL ID=AFgsEosepT9fR54od_XHp6yWu6Gs,MDNRequested=Asynchronous,SenderAS2Name=HCIAS2,AS2MessageID=} AS2 MDN sender adapter attributes: AdapterId adapterMessageId SAP_MplCorrelationId MDNStatus Message Id ErrorDescriptionFor example:{AdapterId=AS2 MDN Sender, adapterMessageId=,SAP_MplCorrelationId=AFgsEou7oJYm7AqQHsV2lM2T6iTT,MDNStatus=error, Message Id=,ErrorDescription=insufficient-message-security} AS2 sender adapter attributes: AdapterId adapterMessageId ReceiverAS2Name MessageDirection MDNType MDNStatus MPL ID502 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Sender, adapterMessageId=,ReceiverAS2Name=HCIAS2,MessageDirection=Inbound,MDNType=Sending,MDNStatus=Success,MPL ID=AFgsPspcD-eYhvHFdfOZYKydBmzw,MDNRequested=Synchronous,SenderAS2Name=endionAS2,AS2MessageID=} AS2 sender adapter attributes: AdapterId adapterMessageId ReceiverAS2Name MessageDirection MDNType MDNStatus MPL ID MDNRequested SenderAS2Name AS2MessageIDFor example:{AdapterId=AS2 Sender, adapterMessageId=,ReceiverAS2Name=HCIAS2,MessageDirection=Inbound,MDNType=Sending,MDNStatus=Success,MPL ID=AFgsQ0_3KdRx-UiOjcwGruy6Xw4V,MDNRequested=Asynchronous,SenderAS2Name= gibsonAS2,AS2MessageID=} 4.12.4.9 Overview for AS4 Receiver AdapterProvides basic insights on how the AS4 protocol establishes message exchange between message service handlers (MSHs).IntroductionThe SAP Applicability Statement 4 (AS4) receiver adapter is a secure and reliable, payload-agnostic protocol used for exchanging business-to-business documents that contain one,s or multiple business documents, Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 503using Web services. For more information on AS4 published by OASIS Standard, refer AS4 Profile of ebMS 3.0 Version 1.0 .The SAP AS4 receiver adapter uses the Light Client conformance policy to address the functional requirements of e-commerce and e-governance services. The conformance policy is associated with an exchange profile that helps to facilitate the exchange of messages between MSHs. The policy supports only message pushing for the sending MSH and message selective pulling from the receiving MSH.ImplementationA sending MSH uses the AS4 receiver adapter to transmit message payloads to a receiving MSH. The receiving MSH can be a business organization and it must be compliant with the AS4 specifications. The SAP AS4 receiver adapter supports one-way/push and one-way/selective pull, and uses secure SAML tokens for authentication and authorization between two MSHs. Based on the business requirements, the MSHs agree on the processing mode (p-mode) parameters and the message exchange patterns that can be used in the message exchange.Message Exchange Patterns (MEPs)The SAP AS4 receiver adapter uses the following message exchange patterns (MEPs) for exchanging business data for the outbound flow: One-way/push: In this pattern, the AS4 receiver adapter is the sending MSH (initiator) that transfers business documents to the receiving MSH. The sending MSH receives a receipt (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 for a specific message (use the message ID of the push message to pull the specific business message) to the sending MSH. The sending MSH responds to the request from the receiving MSH and sends the business response in the form of a user message.504 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Febxml-msg%2Febms%2Fv3.0%2Fprofiles%2FAS4-profile%2Fv1.0%2FAS4-profile-v1.0.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fdocs.oasis-open.org%2Febxml-msg%2Febms%2Fv3.0%2Fprofiles%2FAS4-profile%2Fv1.0%2FAS4-profile-v1.0.htmlRelated InformationConfigure Communication Channel with AS4 Receiver Adapter (ebMS3 Push Message Protocol) [page 505]Configure Communication Channel with AS4 Receiver Adapter (ebMS3 Pull Message Protocol) [page 508]4.12.4.9.1 Configure Communication Channel with AS4 Receiver Adapter (ebMS3 Push Message Protocol)Configure the receiver channel with the AS4 adapter that acts as a sending MSH to exchange business documents using the ebMS3 Push message protocol.PrerequisitesYou need to deploy the private key pair in the Cloud Integration keystore for signing the AS4 message.ContextUse an ebMS3 one-way / push message flow to transmit AS4 messages to a receiving MSH.Procedure1. Create a connection in the receiver channel of an integration flow model, and select AS4 ebMS3 Push .Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5052. Go to the Connection tab to configure the connection details of the receiving MSH and define the fields based on the following descriptions:Field DescriptionAgreement Define the operation mode agreed on by the MSHs for a specific type of business transaction. This specifies the type of the message exchange pattern.Address Define the endpoint URL of the receiving MSH.SAML Endpoint URL 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.3. Go to the Processing tab to configure the initiator party, responder party, and business payload details, and define the fields based on the following descriptions:Field DescriptionINITIATOR PARTYParty Type Provide the type of the sending MSH. For example: http://abr.gov.au/PartyIdType/ABNParty ID Define the ID of the sending MSH.Role Define the role of the sending MSH. For example: http://sbr.gov.au/ato/Role/BusinessRESPONDER PARTYParty Type Provide the type of the receiving MSH. For example: http://abr.gov.au/PartyIdType/ABNParty ID Define the ID of the receiving MSH.Role Define the role of the receiving MSH. For example: http://sbr.gov.au/agencyBUSINESS AND PAYLOADService Define the recipient's business service.. For example, payment details of employees for a specific year: http://sbr.gov.au/ato/payevnt/2017506 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionAction Define the type of action that the user message is intended to invoke. For example: Submit.002.00Additional Properties Define a key and value to modify an existing parameter in the property sheet. For example, if you want to modify the MSH details, you need to define a key and its value.4. Go to the Security tab to configure message security details to ensure that the message is compressed and encoded., and define the fields based on the following descriptions:Field DescriptionCompress Message Ensures that the outgoing message is compressed.You can also set the value of this attribute dynamically by using the header SAP_AS4_Outbound_Compress_Message.Sign Message Ensures that the outgoing AS4 message is signed.You can also set the value of this attribute dynamically by using the header SAP_AS4_Outbound_Sign_Message.Private Key Alias If you select Sign Message, this field is enabled. Specify the private key alias to sign the AS4 message.Signature Algorithm Use the relevant algorithm to sign the AS4 message.You can also set the value of this attribute dynamically by using the header SAP_AS4_Outbound_Signing_Algorithm.5. Save the configuration.Related InformationExternalize Parameters of an Integration Flow [page 736]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5074.12.4.9.2 Configure Communication Channel with AS4 Receiver Adapter (ebMS3 Pull Message Protocol) Configure the receiver channel with the AS4 adapter that acts as a receiving MSH to exchange business documents using the ebMS3 Pull message protocol.PrerequisitesYou need to deploy the public certificate in the Cloud Integration keystore for verification of the business response.ContextUse an ebMS3 one-way / selective pull message flow to receive AS4 messages (user messages) from a sending MSH.Procedure1. Create a connection in the receiver channel of an integration flow model, and select AS4 ebMS3 Pull .2. Go to the Connection tab to configure the connection details of the sending MSH and define the fields based on the following descriptions:Field DescriptionAgreement Define the operation mode agreed on by the MSHs for a specific type of business transaction. This specifies the type of the message exchange pattern.Address Define the endpoint URL of the sending MSH.Reference Message ID Define the reference ID of the signal message.SAML Endpoint URL 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.508 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionTimeout (in sec.) 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.3. Go to the Security tab to configure message security details to ensure that the message is compressed and encoded, and define the fields based on the following descriptions:Field DescriptionSign Message Ensures that the outgoing message is signed.Private Key Alias If you select Sign Message, this field is enabled. Specify the private key alias to sign the AS4 message.Signature Algorithm Use the relevant algorithm to sign the AS4 message.You can also set the value of this attribute dynamically by using the header SAP_AS4_Outbound_Signing_Algorithm.Verify Signature Ensures that the signature is verified.You can also set the value of this attribute dynamically by using the header SAP_AS4_Outbound_Verify_Signature.Public Key Alias If you select Verify Signature, this field is enabled. Provide the public key alias to verify the signature of the AS4 message.4. Save the configuration.Related InformationExternalize Parameters of an Integration Flow [page 736]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5094.12.4.10 Configure Communication Channel with IDoc AdapterPrerequisites You have logged into your customer workspace in SAP Cloud Platform Integration web tooling. You have assigned the IDoc adapter to the communication channel.ContextYou use the IDoc adapter to communicate IDoc messages with other systems that support communication via SOAP web services.Supported Header (Sender Adapter): SapAuthenticatedUserNameContains 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 HeaderThis header is part of the Web service specification.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel you want to configure.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.Parameters and Values of Sender IDoc (IDoc SOAP) Adapter (Connection Details)Parameters DescriptionAddress Relative endpoint address on which ESB Bus listens to the incoming requests, for example, /HCM/GetEmployeeDetails.510 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionURL to WSDL You can download the WSDL by using the Integration Operations user interface (in the Properties view, Services tab, under the integration flowspecific endpoint). For newly deployed integration flows, the WSDL that is generated by the download corresponds to the endpoint configuration in the integration flow.NoteAs of now this parameter is no longer available.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 511Parameters DescriptionAuthorizationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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 which authorizes a sender system to process messages on a tenant. However, using SAP Cloud Platform Cockpit, you can also define custom roles for the runtime node as well. When choosing Select, a selection of all custom roles defined that way is offered.NoteNote the following: You can also type in a role name. This has the same result like selecting the role from the value help: If the inbound reqquest is authenticated, depends on the correct user-to-role assignment defined in SAP Cloud Platform Cockpit. When you externalize the User Role, in the integration flow configuration the value help for roles is offered as well.512 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters Description If you have selected a product profile for SAP Process Orchestation, the value help will only show the default role ESBMessaging.send.Conditions Parameter in Sender AdapterParameter DescriptionMaximum 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 SizeIf a message is rejected because it exceeds the configured limit, the sender receives an error message.Parameters and Values of Receiver IDoc (IDoc SOAP) Adapter (Connection Details)Parameters DescriptionAddress Endpoint address on which the ESB Bus posts the outgoing message, for example http://:/payment.You can dynamically configure the address field of the IDoc SOAP 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 message) 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 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).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 513Parameters DescriptionProxy 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically 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 provide the WSDL by: Directly entering /wsdl/.wsdl where the WSDL is available in src.main.resources.wsdl. Selecting a source to browse for a WSDL, either from an On-Premise ES Repository or your local workspace.NoteAs of now this parameter is no longer available.514 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionIDoc Content Type Application/x-sap.doc Allows only single IDoc record for each request Enables Exactly-Once processing Enables message sequencingText/XML Allows multiple IDoc records for each requestRequest 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 compressed response messages.Allow Chunking Used for enabling HTTP chunking of data while sending messages.Clean up Request Headers Select this option to clean up the adapter specific headers after the receiver call.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 515Parameters DescriptionConnect using Basic Authentication Select this option to allow the ESB to connect to the receiver system using the deployed basic authentication credentials. When you select this option, you need to provide the credential name.Credential Name: Enter the credential name of the username-password pair specified during the deployment of basic authentication credentials on the cluster.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.The reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured.516 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameters DescriptionPrivate Key Alias Allows you to enter the private key alias name that gets the private key from the keystore and authenticates you to the receiver in an HTTPs communication.If you have selected the option of Connect using Basic Authentication, 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 performance.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 517Parameters DescriptionAuthentication You can select one of the following authentication methods: BasicThe 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 CertificateThe 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 relevant on-premise systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDoc.The AS2 adapter also supports this option.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]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 prop518 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Fsimple.htmlParameters Descriptionerty ${exchangeProperty.MyCredentialName}.5. Save or deploy the integration flow.4.12.4.11 Configure Communication Channel with OData AdapterPrerequisites You have logged into your customer workspace in SAP Cloud Platform Integration web application. You have assigned the OData adapter to the communication channel.ContextOData 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.OData adapters only support synchronous communication. In other words, every request must have a response.In the receiver channel, the OData adapter sends the OData request in the format you choose (ATOM or JSON) to the OData service provider.NoteIn the case of OData service artifacts, OData adapter in the sender channel is not editable. It is prepopulated with data you have provided when binding OData objects to a data source.TipIf 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.You can use this procedure to configure OData adapter assigned to a communication channel.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 519Procedure1. Select the integration flow you want to configure and choose Edit.In the case of OData service artifacts in integration packages, you have to edit the OData service artifact in order to edit the required integration flow.2. Choose the communication channel you want to configure.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.Field Name and Description for OData AdapterField Channel DescriptionAuthorization 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 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 Sender only and if you select User Role in AuthorizationThe user role that you are using for authorization. For more information on user roles, see .Client Certificate Sender only and if you select Client Certificate in AuthorizationThe client certificate that you are using for authorization. Choose Add to add a new row and then choose Select to add the Subject DN and Issuer DN.EDMX SenderReceiverSelect the EDMX file that contains the OData service definition.Operation Details SenderReceiverSelect 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.520 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField Channel DescriptionProxy Type Receiver only 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 521Field Channel DescriptionAuthentication Receiver only The following authentication methods are available for Internet proxy type: Select Basic if you want to use basic authentication to connect to the OData service provider. Select None if no authentication is required. Select Client Certificate if you want to use a certificate for authentication while connecting to the OData service provider.The following authentication methods are available for On-Premise proxy type: Select Basic if you want to use basic authentication to connect to the OData service provider. Select None if no authentication is required. Select Principal Propagation if you want the tenant to authenticate itself against the receiver by forwarding the identity of the inbound user to the cloud connector. From there, it is forwarded to the back end of the relevant on-premise system.Credential NameNoteThis field is enabled only if you select Basic as authentication method.Receiver only Credential name for your credentials that has been deployed on the tenantPrivate Key AliasNoteEnabled only if you select Client Certificate as authentication method.Receiver only Enter the private key alias that enables the system to fetch the private key from keystore for authentication.Resource Path Receiver only Path for the OData resource that you are accessing522 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField Channel DescriptionCustom Query Options Receiver only Enter additional query options. For example, sap-client=100 is a custom query option that you can specify.Content Type Receiver only Select the format in which the request payload should be sent to the system. You can choose Atom or JSON.NoteThe response from OData service provider is in the same format as the request payload.Content Type Encoding Receiver only Select encoding standard used to encode the request payload content. You can choose None or UTF-8.Page Size Receiver only Enter maximum number of records to be fetched in one page of responseNoteFor more information on authentication and authorization types, see and .RestrictionIf you use configure the Address field in Connection tab of the adapter settings with header (${header.abcd}) or exchange property (${property.abc}), the values will not be resolved in the query wizard. If you want the value of the Address to be carried over to the query wizard's Address field, do not use header and exchange properties.5. If you want the system to fetch records in pages of size specified in the Page Size field, select Process in Batches checkbox.Process in Batches option is available only for Query (GET) operation.You cannot use Process in Batches option with Query operation if the Process Call step is used in a Multicast branch.NoteBy 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.TipIn the Process Call step in which you are calling the Local Integration Process, ensure that you enable looping and Expression Type as Non-XML, Condition Expression as $Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 523{property...hasMoreRecords} contains 'true' and Maximum Number of Iterations as 999.6. Save or deploy the changes.NoteIn the case of integration flows in OData service artifacts, you can save the integration flow and deploy the OData service.4.12.4.11.1 Select Entity and Define Operation for OData AdapterPrerequisites You are configuring a communication channel with OData adapter.ContextThe OData adapter enables you to modify the entity that you are accessing and the operation that you are performing on the entity. You can use this adapter to perform the following operations: Query (GET) Create (POST) Update (PUT) Read (GET) delete(DELETE) Merge(MERGE)You use the following procedure to change the entity and modify the operation for the OData adapter.Procedure1. Choose Processing Select .2. Provide values in fields based on description in table.524 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationConnect to System - Fields and DescriptionField DescriptionConnection Source Choose Remote if you want to manually specify the URL, proxy, and other associated details to connect to the OData service.Choose Local EDMX File if you want to use an EDMX file of the service you want to connect to. If you select this option, choose Browse and use an existing EDMX resource or use Upload from File System option to upload EDMX from your local file system. You will not see any of the other fields mentioned below.Below fields are available only if you select Remote as Connection SourceAddress URL of the OData service that you want to connect to.Proxy Type Currently, you can only use Internet proxy type.Authentication If the service does not need authentication, choose None.If the service needs authentication, choose Basic.Use Credential Name If you have already deployed the credentials in Operations View, select this checkbox and specify the Credential Name.Credential Name (Enabled only if you have selected Use Credential Name checkbox)Name of the credential that is deployed in Operations View.Below fields are available only if you do not select Use Credential Name checkboxUsername Username associated with the Company IDPassword Password associated with the specified username.ResultsThe system displays a message that an EDMX file has been created. You can use this EDMX file for connecting to the system subsequently to modify operations.The system also displays a message that an XSD file has been created. You can use this XSD file in mapping steps.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5254.12.4.12 Configure Receiver Channel with HTTP AdapterYou use the HTTP adapter to communicate with receiver systems using HTTP message protocol.PrerequisitesIf 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).NoteIf 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.ContextThe 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.NoteIf you want to dynamically override the configuration of the adapter, you can set the following headers before calling the HTTP adapter: CamelHttpUriOverrides the existing URI set directly in the endpoint.This header can be used to dynamically change the URI to be called. CamelHttpQueryRefers 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-TypeHTTP 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 file526 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application application/json for data in JSON format to be processed by an application that requires this formatMore information on the available types: https://www.w3.org/Protocols/rfc1341/4_Content-Type.htmlThe 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 .NoteIf 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-8The 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-EncodingHTTP 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/http-parameters.xhtml#content-coding .NoteAdapter tracing is supported for HTTP adapter. For more information, see .You use this procedure to configure HTTP adapter in receiver channel.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the receiver channel.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 527http://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.w3.org%2FProtocols%2Frfc1341%2F4_Content-Type.htmlhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fwww.w3.org%2FProtocols%2Frfc1341%2F4_Content-Type.htmlhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fmedia-types%2Fmedia-types.xhtmlhttp://help.sap.com/disclaimer?site=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc2616http://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-codinghttp://help.sap.com/disclaimer?site=http%3A%2F%2Fwww.iana.org%2Fassignments%2Fhttp-parameters%2Fhttp-parameters.xhtml%23content-coding3. 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.528 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField Name and Description for HTTP AdapterField DescriptionAddress URL of the target system that you are connecting to, for example, https://mysystem.comNote 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. However, if you select the HTTP method POST, parameters are usually sent in the body. You therefore get a warning message 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 bufferSizeYou 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 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).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 529Field DescriptionQuery Query string that you want to send with the HTTP requestQuery 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 contained in the incoming message) will be written into the Camel header CamelHttpQuery.NoteIf 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=abcYou must specify the following in the query field: parameter1=123¶meter2=abcExample 2)Manufacturer = Mars Inc. Product = M&MYou must specify the following in the query field: Manufacturer =Mars+Inc.&Product=M%26M530 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionProxy 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.NoteIf 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 Certificate-Based Authentication as the Authentication Type, as it leads to errors when performing consistency checks or during deploymentNoteIf 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 refers a virtual address which has to be configured in the SAP Cloud Connector settings.Location ID only in case On-Premise is selected 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 ${header.headername} or ${property.propertyname} to dynamically read the value from a header or a property.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 531Field DescriptionMethod Action that the HTTP request should perform POSTRequests that the receiver accepts the data enclosed in the request body. DeleteRequests that the origin server delete the resource identified by the Request-URl DynamicThe method is determined dynamically by reading a value from a message header or property such as ${header.abc} or ${property.abc} during runtime. GETSends a GET request to the receiver. HEADSends a HEAD request which is similar to a GET request but does not return a message body. PUTUpdates or creates the enclosed data on the receiver side. TRACESends a TRACE request to the receiver that sends back the message to the caller.Send BodyThis field is enabled only if you select for Method the option GET, DELETE, HEAD or "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.ExpressionThis field is enabled only if you select for Method the option Dynamic.The expression field allows you to enter a simple expression that specifies the HTTP method for the HTTP call . For example, you can define that the method is determined dynamically by reading a value from a message header or property such as ${header.abc} or ${property.abc}. If the header or property does not exist or its value is empty, the POST method is used by default.532 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionAuthentication Defines how the tenant (as the HTTP client) will authenticate itself against the receiver.You can select one of the following authentication methods: None BasicThe 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 CertificateThe 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.NoteYou 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 (if you either intend to use basic authentication , certificatebased authentication or no authentication), 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 two recommendations when externalizing such attributes. Externalize all attributes related to the configuration of all options (for example, Authentication Option, Credential Name and Private Key Alias). Externalize only one of the following attributes: Private Key Alias or Credential Name.Avoid incomplete externalization such that, for example, you externalize only the attribute for the Authentication Option but not the related Credential Name. In such cases, the integration flow configuration (based on the externalized parameters) cannot work properly.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 533Field DescriptionThe reason for this is the following: When you have externalized the Authentication Option attribute and only the Private Key Alias (but no Credential Name), in the integration flow configuration dialog all authentication options (Basic, Certificate-Based and None) are selectable in a drop-down list. However, when you now select Basic Authentication from the drop-down list, no Credential Name can be configured. Principal PropagationThe 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 systemNoteThis authentication method can only be used with the following sender adapters: HTTP, SOAP, IDOCFor special use cases, this authentication method can also be used with the AS2 adapter.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]534 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionCredential NameNoteThis field is enabled only if you select for Authentication the option Basic.Identifies the User Credential artifact that contains the credentials (user name and password).You can dynamically configure the Credential Name property by specifying either a header or a parameter name in 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-encoded 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 supported 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 AliasNoteThis option is enabled only if you select client certificate authentication.Enter the private key alias that enables the system to fetch the private key from keystore for authentication.RestrictionThe values true and false are not supported for this field.Timeout (in ms) Maximum time that the tenant waits for a response before terminating message processingThe default value is 60000 milliseconds (1 minute).5. Save or deploy the integration flow.NoteIn the case of integration flows in OData service artifacts, you can save the integration flow and deploy the OData service.Related InformationDynamic Parameters [page 14]Script Example for Exception Handling in HTTP Receiver [page 241]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5354.12.4.13 Configure Sender Channel with HTTPS AdapterContextYou use the HTTP adapter to communicate with receiver systems using HTTP message protocol.Supported Header: SapAuthenticatedUserNameContains 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: CamelHttpUrlRefers to the complete URL called, without query parameters.For example, CamelHttpUrl=https://test.bsn.neo.ondemand.com/http/hello. CamelHttpQueryRefers 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. CamelHttpMethodRefers to the incoming method names used to make the request. These methods are GET, POST, PUT, DELETE, and so on. CamelServletContextPathRefers 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.Note Adapter tracing is supported for HTTP adapter. For more information, see . When you deploy an integration flow with HTTPS sender adapter, you can see the endpoint information of this integration flow in Manage Integration Content section of operations view.ProcedureYou use this procedure to configure HTTP adapter in sender channel.1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel you want to configure.3. Provide channel name and description in the relevant fields if required, in General tab page.536 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4. Choose the Connection tab page and specify the following attributes.Parameters of the HTTPS Sender AdapterParameter DescriptionAddress Enter the URL of the HTTP system to connect to.Note Use the following pattern: http://:/http . This should be appended by the unique address apecified in the channel. The field value supports these characters ~, -, . , $ and * . The Address field should start with '/ ' and can contain alphanumeric values, '_' and '/ '. For example 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 address after /. You can use* only at the extreme end of the address and no characters are allowed after *. A * can only be preceded with /. You cannot begin address with., - or ~ . Alphanumeric value or _ must succeed these characters. If you are using /*, it implies that uri containing the prefix preceding the /* is supported. For example. if the address is /Customer/* then uris supported are http://:/http/Customer/. Uris are case insensitive. So, http://:/http/test and http://:/http/Test is treated as same.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 537Parameter DescriptionAuthorization 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 distinguished name (DN) of the certificate (sent together with the inbound request). You can use this option together with the following authentication option: Client-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 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 mappingThe authorizations for the user derived from the certificatetouser 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 AuthorizationAllows 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 (information used to authorize the sender) and Issuer DN (information about the certificate authority that issues the certificate). User RoleAllows 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.538 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationParameter DescriptionCSRF Protected This option prevents Cross-Site Request Forgery (CSRF), which is a malicious online attack. Such attacks exposes user content without their authorization.NoteInclude 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.5. Save or deploy the intergration flow.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: 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 processingAlso, you can set the header CamelHttpResponseCode to customize the response code. You can invoke the HTTP endpoints using the syntax /http/. 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. 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5394.12.4.14 Configure Communication Channel with Ariba AdapterPrerequisites 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.ContextYou 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 businessspecific documents in cXML format to and from the Ariba Network. Examples of business documents are purchase orders and invoices.RestrictionAn integration flow you deploy in SAP Cloud Platform 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.Procedure1. Select the integration flow that you want to configure and choose Edit.2. Choose the communication channel you want to configure.3. In the General tab page, provide channel name and description in the relevant fields if required.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 AdapterSection Parameter DescriptionConnection Details Ariba Network URL Specify the URL to which the cXML requests are posted, or from where the cXMLs are polled.540 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSection Parameter DescriptionConnection 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 messages.Default deployment mode is Production.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 account 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.Use Quote Message to poll the quote request for Buyer account type.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 ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 541Section Parameter DescriptionAuthentication 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 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 deployed on the SAP Cloud Platform Integration account.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 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 that is conducting the cXML conversation. It must consist of the software company name and the product name.Language Language that is used for constructing the cXML conversation.The only supported language is EN.Scheduler (only valid for the sender channel)Schedule on Day Specify a date and time or interval for executing the data polling.On Date Specific date on which the data polling process has to be initiated to fetch data from the Ariba system.Schedule to Recur Specify a recurring pattern for consistently running the polling process. It can be scheduled on daily, weekly, or monthly basis.542 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationSection Parameter DescriptionDaily 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 Execute the message polling every month on the specified date to fetch data from the Ariba server.NoteIf 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 February, 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 p.m., enter 16:10. Note that the time must be entered in 24-hour format.Every xx minutes between HH hours and HH hoursThe connector fetches data from the Ariba system every xx minutes between HH hours and HH hours.NoteIf 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.NoteThe 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 by default every 1 min between 00:00 and 24:00 o'clock.5. Save the configuration of the channel editors.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 543ResultsChoose Deploy at the bottom right corner of the page, to apply the configuration settings and run the integration flow.4.12.4.15 Configure Communication Channel with SFTP AdapterPrerequisites You have logged into your customer workspace in SAP Cloud Platform Integration web tooling. You have assigned SFTP adapter to the communication channel.ContextSFTP adapter uses a certificate and keystore to authenticate the file transfer unlike the standard FTP. The SFTP adapter achieves secure transfer by encrypting sensitive information before transmitting it on the network. It uses SSH protocol to transfer files.If you want to dynamically override the configuration of the adapter, you can set the following header before calling the SFTP adapter: CamelFileNameOverrides 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 HeaderName Type Data Type ValueCamelFileName xpath java.lang.String /p:MessageBulk/Message/FileName/text()544 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationName Type Data Type ValueCamelFileNameNoteBe aware of the following behavior if you have configured the file name dynamically: If you have selected the Append Timestamp option, the timestamp overrides the file name defined dynamically via the header (CamelFileName).expression java.lang.String /template/out/output${date:now:yyyyMMddHHmmss}.xmlCI-PI currently supports the following ciphers for SSH (SFTP) communication: blowfishcbc,3descbc,aes128cbc,aes192cbc,aes256cbc,aes128ctr,aes192ctr,aes256ctr,3desctr,arcfour,arcfour128,arcfour256.CautionThe 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.CautionIf 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.This results in the integration flows getting deployed again and you see messages from these integration flows with Run Once setting.Related InformationConfigure Communication Channel with SFTP Sender Adapter [page 546]Configure Communication Channel with SFTP Receiver Adapter [page 555]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5454.12.4.15.1 Configure Communication Channel with SFTP Sender AdapterContextHow the Sender SFTP Adapter WorksIf 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 serverProcedure1. 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.Field DescriptionDirectory Use the relative path to read the file from a directory, for example, /.546 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionFile Name Name of the file to be read.NoteIf you do not enter a file name and the parameter remains blank, all the files in the specified directory are read.NoteUsage 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 corresponding integration content with the SAP Process Orchestration (SAP PO) runtime in releases lower than SAP PO 7.5 SP5.CautionFiles with file names longer than 100 characters will be processed with the following limitations: If two files with names longer than 100 characters are available for processing, 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 processing 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 547Field DescriptionAuthenticationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Authentication option for the connection to the SFTP server.You have the following options: User Name/PasswordSFTP 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 KeySFTP server authenticates the calling component based on a public key.Credential Name(Only available if you have selected User Name/Password for Authentication)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Name of the User Credential artifact that contains the user name and password.548 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionUser Name(Only available if you have selected Public Key for Authentication)ID of the user performing the file transfer.Make sure that the user name contains no other characters 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 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 connection or performing a read operation.Default value: 10000 msThe 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: 3Use 0 to disable this behavior.Reconnect Delay (in ms) How long the system waits before attempting to reconnect to the SFTP server.Default Value: 1000msAutomatically 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 549Fields and Descriptions for SFTP Adapter Sender ChannelField DescriptionRead 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 capabilities 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 completely written. Rename: Renames the file before reading. The Rename 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 operation 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 processed is ready for consumption. This file must be in the same folder as the file to be processed. Placeholders are allowed. Default: ${file:name}.done.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]550 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionSorting Select the type of sorting to use to poll files from the SFTP server: 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 fileSorting Order Select whether to sort in ascending or descending order.Lock Timeout (in min):* 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.Change Directories Stepwise Select this option to change directory levels one at a time.Include Subdirectories Selecting this option allows you to look for files in all the subdirectories of the directory.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 551Field DescriptionPost-Processing 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 Post-Processing settings are not effective.You can select one of the following options from the dropdown 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 prevent a file from being consumed twice. Select this option for SFTP servers that do not allow deletion or moving of files, but the files are to be read only once. 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 runtime node is restarted.NoteIf there is a system crash or disaster, this data will be lost and cannot be recovered later. Database: Stores the file names in a database to prevent the files from being read again when the runtime node is restarted. File name entries are deleted by default after 90 days.NoteThe database uses the server name, directory, and file name as key values to identify files uniquely across integration flows of a tenant.If you have also selected Done File Expected as Read Lock Strategy, an entry will be created in the idempotent 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. Move File: The file is moved to another directory. If you select this option, you need to specify the target 552 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField Descriptiondirectory. You can specify the target directory dynamically, for example, using the timestamp of the message. The following example uses backup folders with timestamps and replaces the file extension with bak: backup/${date:now:yyyyMMdd}/${file:name.noext}.bakIf 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.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.NoteIf 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 DescriptionBuffer Size Write file content using the specified buffer size.Default: 128 KBFlatten File Names Flatten the file path by removing the directory levels so that only the file names are considered and they are written under a single directory.Max. Messages per Poll (for sender channel only) Maximum number of messages to gather in each poll.Default: 0 Example: 1000 can be set as a limit.NoteIf you are using the sender SFTP adapter in combination with an Aggregator step and you expect a high message load, consider the following recommendation:Set the value for Maximum Messages per Poll to a small number larger than 0 (for example, 20). This ensures proper logging of the message processing status at runtime.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 553Field DescriptionPrevent Directory Traversal If the file contains any backward path traversals such as \..\ or /../.. , this carries a potential risk of directory traversal. In such a case, message processing is stopped with an error. The unique message ID is logged in the message processing log.NoteWe 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.NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]SchedulerScheduler Option Field DescriptionRun Once NA Select to execute the operation immediately after deploying the integration content.NoteThis option is only recommended for testing puposes, not for productive scenarios. If this option is selected, the integration flow will also poll after each restart, after each new deployment and after each cluster update.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.554 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationScheduler Option Field DescriptionEvery Specify the interval at which the operation 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 operation 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.4.12.4.15.2 Configure Communication Channel with SFTP Receiver AdapterContextHow the Receiver SFTP Adapter WorksIf 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 Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 555direction, 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 serverProcedure1. 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.Field DescriptionDirectory Use the relative path to write the file to a directory, for example /.556 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionFile Name Name of the file to be written.NoteIf you do not enter a file name and the parameter remains blank, the content of the CamelFileName header is used as file name. If this header is not specified, 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 displayed in the message processing log (MPL) in the message 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 Appends a timestamp at the end of the file name.If the file has an extension (for example, .xml), the timestamp 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.xmlNoteBe aware of the following behavior if you have configured the file name dynamically: If you have selected the Append Timestamp option, the timestamp overrides the file name defined dynamically via the header (CamelFileName).CautionNote 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 optional port, for example, wdfd00213123:22.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 557Field DescriptionAuthenticationNoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Authentication option for the connection to the SFTP server.You have the following options: User Name/PasswordSFTP 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 KeySFTP server authenticates the calling component based on a public key.Credential Name(Only available if you have selected User Name/Password for Authentication)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Name of the User Credential artifact that contains the user name and password.User Name(Only available if you have selected Public Key for Authentication)ID of the user performing the file transfer.Make sure that the user name contains no other characters 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 anonymous login is made which results in an error.558 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionTimeout (in ms) Maximum time to wait for the SFTP server to be contacted while establishing connection or performing a read operation.Default value: 10000 msThe 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: 3Use 0 to disable this behavior.Reconnect Delay (in ms) How long the system waits before attempting to reconnect to the SFTP server.Default Value: 1000msAutomatically 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 ChannelField DescriptionHandling 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 559Field DescriptionChange Directories Stepwise Changes directory levels one at a time.Create Directories Automatically creates missing directory levels as provided in the file's path name.Temporary File Name(Only visible when Handling for Existing Files is set to Override)NoteIn the following cases certain features might not be available for your current integration flow: You created the corresponding integration flow shape (adapter or step) before a feature was released. You are using a product profile other than the one expected.More information: Adapter and Integration Flow Step Versions [page 393]Allows you to specify a name for a temporary file.If you override an existing file (on the SFTP server) with a new one, the following situation can occur: The subsequent 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.CautionMake 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 Exchange 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 transfer)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).temp6. Choose Advanced tab page.560 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionBuffer Size Write file content using the specified buffer size.Default: 128 KBFlatten File Names Flatten the file path by removing the directory levels so that only the file names are considered and they are written under a single directory.Max. Messages per Poll (for sender channel only) Maximum number of messages to gather in each poll.Default: 0 Example: 1000 can be set as a limit.NoteIf you are using the sender SFTP adapter in combination with an Aggregator step and you expect a high message load, consider the following recommendation:Set the value for Maximum 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 traversal. In such a case, message processing is stopped with an error. The unique message ID is logged in the message processing log.NoteWe 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 ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 5614.12.4.16 Configure Communication Channel with Twitter AdapterContextYou 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 elses 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/ .NoteNote that externalization is supported only for string fields of the adapter (User, Keywords, User Name, and OAuth settings).Do not externalize other properties. Although the user interface allows this, the integration flow check will be erroneous.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel you want to configure.3. In General tab page, provide channel name and description in the relevant fields if required.4. Choose the Adapter-Specific tab page and enter the details as shown in the table below:562 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdev.twitter.com%2FAttributes of the Twitter Receiver Adapter (Twitter Components)Field DescriptionEndpoint To access Twitter content, you can choose among the following general options. Send TweetAllows you to send content to a specific user timeline. SearchAllows you to do a search on Twitter content by specifying keywords. Send Direct MessageAllows you to send messages to Twitter (write access, direct message).User(only in case as Endpoint you have selected Send Direct Message)Specifies the Twitter user from which account the information is to be extracted.Page Size Specifies the maximum number of results (tweets) per page.Number Of PagesSpecifies the number of pages which you want the tenant to consume.Attributes of the Twitter Receiver Adapter (Filter Settings)Field DescriptionKeywords(only in case as Endpoint you have selected Search)Specifies the keywords used to filter the results.Use commas to separate different keywords or a valid Twitter Search API query (for more information, go to https://dev.twitter.com/rest/public/search ).Language(only in case as Endpoint you have selected Search)Specifies the search language.Attributes of the Twitter Receiver Adapter (OAuth Settings)Field DescriptionConsumer Key An alias by which the consumer (tenant) that requests Twitter resources is identifiedConsumer SecretAn alias by which the shared secret is identified (that is used to to define the token of the consumer (tenant))Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 563http://help.sap.com/disclaimer?site=https%3A%2F%2Fdev.twitter.com%2Frest%2Fpublic%2FsearchField DescriptionAccess Token An alias by which the access token for the Twitter user is identifiedIn order to make authorized calls to the TwitterAPI, your application must first obtain an OAuth access token on behalf of a Twitter userAccess Token SecretAn alias by which shared secret is identified that is used to define the token of the Twitter userThe 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.4.12.4.17 Configure Communication Channel with JMS AdapterYou configure the JMS adapter to enable asynchronous messaging by using message queues.PrerequisitesThe 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: 30 Queue capacity: 9GB 1 Messaging Broker Instance 150 Transactions 150 Consumer Connections 150 Provider Connections 150 GB of data can be processed by JMS messaging per monthFor more information about JMS resource and size limits, visit the following blog: Cloud Integration JMS Resource and Size Limits .564 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F10%2F04%2Fcloud-integration-jms-resource-and-size-limits-in-cpi-enterprise-edition%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F10%2F04%2Fcloud-integration-jms-resource-and-size-limits-in-cpi-enterprise-edition%2FThere 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.NoteThe JMS adapter generates message queues during deployment.Message queues that are not used any more (in deployed integration flows) are deleted automatically by a system job which runs daily. The Message Queues monitor is adapted accordingly so that deleted message queues are not displayed any more in such a case.Not used message queues are only deleted automatically if they dont contain any message. Message queues that still contain messages but are not required any more in the Message Queues monitor have to be deleted manually.Information on deleted message queues is available in the audit log.CautionDo not use this adapter type together with Data Store Operations steps, Gather (message 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.ContextYou configure the receiver and sender JMS adapter to enable asynchronous messaging by using message queues. The 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.NoteThe JMS adapter stores only simple data types, which includes in particular: exchange properties that do not start with Camel, as well as header (in so far they are primitive data types or strings).NoteYou can use the JMS Receiver Adapter in the Send step to save the message to the JMS queue and to continue the processing afterwards.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 565Supported Headers: JMSTimestampSpecifies the time when a JMS message was created.Procedure1. Select the integration flow you want to configure and choose Edit.2. Choose the communication channel you want to configure.3. In General tab page, provide channel name and description in the relevant fields if required.4. Choose Adapter Specific tab page and enter the details a shown in the table below:Parameters and Values of Sender JMS AdapterSection Parameters DescriptionProcessing Details Queue Name Enter the name of the message queue.Number of Concurrent Processes Enter the number of concurrent processes for each worker node. The recommended value depends on the number of worker nodes, the number of queues on the tenant, and the incoming load. The value should be as small as possible (1-5).Retry Handling Retry Interval (in s)* Enter a value for the amount of time to wait before retrying message delivery.Exponential Backoff Enter a value to double the retry interval after each unsuccessful retry.Maximum Retry Interval (in s)* Enter a value for the maximum amount of time to wait before 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.JMS Retry HandlingNote the following behavior, which can be observed in message monitoring if you have configured a Retry Interval in the adapter:566 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationThe 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, from where it is picked up by integration flow 2. The latter processes the message and writes it to another queue, JMS queue 2. From there, integration flow 3 picks up the message, processes it, and sends it to a receiver.Each integration flow generates a message processing log (MPL1, MPL 2, and MPL3), but all MPLs can be correlated with each other using a correlation ID. You can use the OData API to correlate the MPLs.Involved Message Processing Logs (MPLs)MPL Description CorrelationIDMPL 1 Shows that message is received from sender and submitted to JMS queue queue1XYZMPL 2 Shows that message is received from JMS queue queue1 and submitted to JMS queue queue2XYZMPL 3 Shows that message is received from JMS queue queue2 and submitted to receiverXYZIf an error occurs when sending the message to the receiver (for example, the receiver cannot be reached), and you have configured a retry handling (in the Retry Interval property), the following happens:During a retry, the message is written to an error queue, from which it is again picked up by integration flow 3. For each retry, a separate MPL is generated as indicated in the figure (MPL 3a, MPL 3b, and so on). However, all the MPLs that are associated with these retries are grouped in the Monitoring application within one MPL (and can be accessed using one MPL ID).Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 567Parameters and Values of Receiver JMS AdapterSection Parameters DescriptionProcessing Details Queue Name 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 (default is 90).The minimum value for Expiration Period should be at least twice the value for Retention Threshold for Alerting.Encrypt Stored Message Select this option to encrypt the message 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 exchange properties are subject to size restrictions, which can result in problems or errors.ResultsManaging Locks for JMS Dead Letter HandlingIn certain cases, usage of the JMS sender adapter can cause a node failure. Such cases can, for example, occur when the JMS adapter tries to process a failed (large) message again and again. The classical approach in such 568 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationcases is to undeploy the integration flow and to reprocess the message. However, in this case the content of the original message is lost.To overcome such situations, the JMS adapter provides the option Dead-Letter Queue (switched on by default). When this option is selected, the message will be 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 in order to again process the message.When operating scenarios with the JMS sender adapter, the Managing Locks editor supports you to deal with messages that cannot be processed.After the last retry, a lock entry is written that can be investigated in the Message Monitoring application under Managing Locks.NoteThe lock entry is also visible under Managing Message Queues.You can identify such lock entries by the following attributes:Attribute ValueComponent JmsDeadLetterEntry The message IDNoteYou 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.Related Informationhttps://blogs.sap.com/2017/07/17/cloudintegrationconfiguredeadletterhandlinginjmsadapter/Define a Send Step [page 725]Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 569http://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2017%2F07%2F17%2Fcloud-integration-configure-dead-letter-handling-in-jms-adapter%2F4.12.4.18 Configure Communication Channel with Facebook AdapterContextYou 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 elses 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/ .NoteYou can also use headers to provide values in Connection settings of Facebook adapter. You can use both exchange headers (see Dynamic Parameters [page 14] for more information) and Apache Camel headers (see Facebook Component in Apache Camel for more information ).Procedure1. 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:570 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2Fhttp://help.sap.com/disclaimer?site=http%3A%2F%2Fcamel.apache.org%2Ffacebook.htmlTipYou can obtain the values required for Facebook adapter configuration in the Facebook for Developers page.Login to Facebook for Developers . Choose My Apps Roles Test Users . In this page, you will get details like User/Page ID.To get the Post ID, you should fetch the posts using Get Posts. This will have the Post IDAttributes of the Facebook Receiver Adapter (Facebook Components)Field DescriptionEndpoint To access Facebook content, you can choose among the following general options. Get PostsAllows you to fetch specific Facebook posts. Get Post CommentsAllows you to fetch specific Facebook post comments. Get UsersAllows you to fetch details of a specific user. Get Visitor FeedsAllows you to fetch feed of all the visitors to a specific user or a page.User/Page ID Specifies the Facebook user from which account the information is to be extracted.Timeout (ms) 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 DescriptionApplication ID An alias by which the consumer (tenant) that requests Facebook resources is identifiedApplication SecretAn alias by which the shared secret is identified (that is used to to define the token of the consumer (tenant))Access Token An alias by which the access token for the Facebook user is identifiedIn order to make authorized calls to the Facebook API, your application must first obtain an OAuth access token on behalf of a Facebook userThe 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.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 571http://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2Fhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fdevelopers.facebook.com%2FTo 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.4.12.4.19 Configure Communication Channel with ODC AdapterPrerequisites You have logged into your customer workspace in SAP Cloud Platform Integration web application. You have assigned the ODC adapter to the communication channel.ContextThe ODC adapter enables you to communicate with systems that expose data through the OData Channel for SAP Gateway.NoteThe ODC adapter is available only in the receiver channel.Procedure1. Choose Adapter Specific tab page.2. Provide values in fields based on description in table.Field DescriptionAddress URL of the SAP NetWeaver Gateway OData Channel that you are accessingClient Backend sytem client that you want to connect toNamespace Namespace of the service572 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationField DescriptionService Name Name of the serviceVersion Version of the serviceCredential Name Alias that you used while deploying basic authentication credentialsOperation Select the operation that you want to perform from the dropdown list.Resource Path Path to the resource that you want to perform the operation on3. In the field, choose Select.You see a prompt to connect to the system.4. If you have already added a system, perform the following substeps:a. In the field, select the system from dropdown list.b. If you want to use basic authentication, in field, choose Basic Authentication from dropdown list. Provide username and password in the relevant fields and choose Connect.c. If you want to use the deployed credentials, in field, choose Deployed Credentials from dropdown list. In field, enter the alias you used while deploying basic authentication credentials and choose Connect.5. If you want to connect to a new system, perform the following substeps:a. Choose .b. Provide values in fields based on description in table and choose Connect.Field DescriptionSystem System name that you want to specify. You can use this name as reference for selecting the same system for future use.Address URL of the system that you are connecting toClient Backend system client that you are connecting toNamespace Namespace of the serviceService Name Name of the serviceVersion Version of the serviceDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 573Field DescriptionAuthenticate Using Authentication method you want to use for connecting to the system. You can choose Basic Authentication or Deployed Credentials.6. Save or deploy the integration flow.4.12.4.20 Configure a Channel with LDAP AdapterPrerequisites You have assigned the LDAP adapter to the receiver channel in an integration flow. For more information, see Assign Adapter to Communication Channel [page 437] You are editing the integration flow.ContextThe 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. 574 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application The LDAP adapter is available only in the receiver channel.NoteYou cannot update multiple records in a single processing cycle. You can only perform a given operation on one record at a time.RememberYou 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 on using the SAP Cloud Connector, see SAP Cloud Platform Connector.Procedure1. Choose the receiver channel in the integration flow.2. In General tab, enter name and description in the relevant fields, if required.3. MULTIDRAGChoose Processing.4. Provide values in fields based on description in table.Field DescriptionAddress Enter the URL of the LDAP directory service that you are connecting toProxy Type Select the proxy type that you want to use. Currently, only On Premise is supported.Authentication Select the authentication type that you want to use. Currently, only Simple is supported.Credential Name Enter the credential name that you have deployed in the tenantOperation 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)5. Save or deploy the integration flow.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 575https://help.hana.ondemand.com/help/frameset.htm?e6c7616abb5710148cfcf3e75d96d596.html4.12.4.20.1 Specific Use Cases for LDAP AdapterUsing Input Type Java (JNDI) AttributesThe 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.Adding Attributes to Template SchemaThe 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.Heres how the edited schema will look like:576 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application Add Additional Attributes to the Message after Mapping using ScriptLet 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) { 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; }Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 577Using Modify Operation to Change DNYou can use the Modify operation to change the DN of an LDAP record. You can do this by adding the tag to the input payload with the old DN. Specify the modified DN in tag and perform the Modify operation.Here's an example that shows a sample input payload for modiying the DN of an LDAP record: CN=CMD ABC,CN=Users,DC=dev109,DC=dev-wdf,DC=sap,DC=corp CN=CMD,CN=Users,DC=dev109,DC=dev-wdf,DC=sap,DC=corp user 123@xyz.com 123456789 4.12.4.21 Configure Communication Channel with RFC Receiver AdapterYou can use Remote Function Call (RFC) to integrate on-premise ABAP systems with the systems hosted on the cloud using the Cloud connector.Prerequisites 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.NoteFor more information on how to create RFC destinations in the Cloud connector, see Creating RFC Destination in Cloud Connector [page 581] . 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 581].ContextRFC 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, 578 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationthe 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.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.Procedure1. Launch the SAP Cloud Platform Integration Web application by using the URL provided by SAP.2. Select the communication channel you want to configure.3. Select the integration flow you want to configure and choose Edit.4. Go to Connection tab and provide necessary details and save changes.Parameter and Value of the RFC Receiver AdapterField DescriptionDestination RFC destination configured in SAP Cloud Platform for your application.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 579Field DescriptionSend Confirm Transaction (Applicable to BAPI functions) By default this option is disabled. 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.NoteEnsure the following ABAP functions are whitelisted in Cloud connector before using this option: BAPI_TRANSACTION_COMMIT BAPI_TRANSACTION_ROLLBACKCautionIf 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.Create New Connection If you enable this option, the adapter creates a new RFC connection in the backend system, every time a new call is made to the target system.RememberThis option must be selected if you are using principal propagation. If you do not select this option, principal propagation will not work as expected.NoteYou can create dynamic destinations by using regular expressions (header, property) in the Content Modifier. Select Content Modifier in the integration flow. Then go to Message Header in Content Modifier properties 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.}. For example ${header.abc} or ${property.abc} where abc is the value of the header or property.580 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.12.4.21.1 Generating XSD/WSDL for Function Modules Using ESR (Process Integration)Generate an XSD/WSDL file for a function module using the Enterprise Services Repository (ESR).Procedure1. Log on to the remote machine with your credentials.2. Open the browser and enter /dir.3. Under Enterprise Service Repository, select Enterprise Service Builder and log on.The repository.jnlp file is downloaded.4. Click repository.jnlp to launch the Enterprise Services Builder.5. Under Design Objects, select the appropriate object and expand it.6. Right-click Imported Objects and select Import of SAP Objects.7. Provide the appropriate information in the mandatory fields and choose Continue.8. Under Select Objects, expand RFC, search for your function module, and choose Continue.9. Choose Finish.The object is imported successfully.10. On the Design Objects tab, navigate to the imported objects under RFC.11. In the right pane, open Source (Read-Only) to view the WSDL/XSD file.Related InformationConfiguring a Channel with RFC Receiver Adapter [page 185]Configure Communication Channel with RFC Receiver Adapter [page 578]4.12.4.21.2 Creating RFC Destination in Cloud ConnectorRFC destination needs to be created in the cloud connector by adding necessary properties before using it in the integration flow of RFC adapter.ContextDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 581Procedure1. Log into the SAP Cloud Platform cockpit and choose Connectivity Destinations .2. Choose New Destination and enter destination name.3. Enter the details for , , , and select as RFC.4. Add the following additional properties (first four properties are mandatory) and assign appropriate values: Jco.client.ashostNoteThe value provided for application server host (ashost) property is the access control value created in the Cloud connector. Jco.client.client Jco.client.lang Jco.client.sysnr (optional) Jco.destination.pool_capacity5. Select Save.4.12.4.22 Configure Communication Channel with ProcessDirect AdapterUse 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).CautionMultiple 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.582 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationContextProcessDirect 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 Platform 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 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 in the integration flow's runtime configuration.TipProcessDirect 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.RestrictionCyclic loop deployment of integration flows must be avoided.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 583Procedure1. Select the integration flow that you want to configure and choose Edit.2. Choose the communication channel you want to configure.3. Create a mapping between Sender and the integration flow.4. Choose ProcessDirect as the adapter type.On the General tab, the relevant details for channel and adapter are populated automatically.5. Go to the Connection tab and specify the following attributes:Parameters of the ProcessDirect AdapterParameter DescriptionAddress URL of the target system that you are connecting to. For example, /localiprequiresnew.NoteIt may or may not start with "/". It can contain alphanumeric characters and special characters such as underscore "_" or hyphen "-". You can also use simple expressions, for example, ${header.address}.Remember If the consumer has an in the , 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 , the MPL status for the consumer will be Escalated and for Producer, it will be Completed. If the producer integration flow starts with Sender, the MPL status for the consumer will be Escalated and for producer, it will be Failed. The combination of and in the producer integration flow might generate an extra MPL (Aggregator MPL) due to the default behavior of Aggregator. The 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 .4.12.5 Define Events584 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Applicationhttp://help.sap.com/disclaimer?site=https%3A%2F%2Fblogs.sap.com%2F2018%2F02%2F14%2Fprocessdirect-adapter%2F4.12.5.1 Define End Message EventAn End Message event ends a message processing sequence.ContextThis is how using an End Message event has an impact on the message status (shown in the message processing log).NoteTo 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).Procedure1. In the palette, choose End Message Event .2. Save the changes.4.12.5.2 Define an Escalation EventContextDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 585Procedure1. In the palette, choose Escalation Event .2. Specify the Escalation Category.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 permissions (for example, HTTP 403 error).Receiver tries to redirect Receiver could not be reached (HTTP 302 error).Internal server error in receiver Internal server error occurred in the receiver system (for example, HTTP 500 error).Others not further qualified Escalation category has not been further qualified.3. Save the changes.4.12.5.3 Define a Timer Start EventYou can configure an integration flow to automatically start and run on a particular schedule.ContextIf 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.586 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationA 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.NoteWhen you use timer with Run Once option enabled, the message is triggered only when the integration flow is deployed. If you want to trigger the message with an integration flow that you have already deployed, you have to Undeploy the integration flow and Deploy it again. If you restart the integration flow bundle, message will not be triggered.When you delploy or undeploy an integration flow with Timer-Scheduler, the system automatically releases all the scheduler locks.NoteWhen you deploy small integration flows with Timer (for example, an integration flow with timer, content modifier and mail adapter), due to extremely fast processing times, multiple schedules are triggered.Procedure1. In the palette, choose Events Timer (choose icon and icon ).2. In the Name field, provide a name for the timer.3. Choose Scheduler.4. Select options or provide values in fields based on description in table.Option Field DescriptionRun OnceSelect if you want the message processing to be triggered immediately after you deploy the integration flow.NA NASchedule on DaySelect if you want the message processing to be triggered on a specific date and time.On Date Select the date on which you want the message processing to be triggeredOn Time Select the time on which you want the message processing to be triggeredEvery Select this option if you want to trigger message processing repeatedly in a specific time interval.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 587Option Field DescriptionTime Zone The time zone that you want to be used as reference for the configured date and time.Schedule to RecurSelect if you want to repeatedly trigger message processing according to a specific schedule.Schedule to Recur From the dropdown, choose Daily, Weekly, or Monthly based on how to want the schedule to recur.Accordingly, if you choose Weekly, choose the day or days of the week Monthly, choose the day of the month from the dropdown list.On Time Select the time at which you want the message processing to be triggeredEvery Select this option if you want to trigger message processing repeatedly in a specific time interval.Time Zone The time zone that you want to be used as reference for the configured date and time.NoteIf you configure the Timer to trigger message processing on a specific time and date, and once this message processing is completed, the integration flow will be in error state. You can see this in the Manage Integration Content view in Monitor tab. This is because the configured time and date is in the past and the integration flow cannot process any further messages.5. Save the changes.4.12.6 Define Message TransformersMessage transformers enable you to convert messages in one format to another.Here's a list of the message transfermers available in SAP Cloud Platform Integration and links to their documentation.Message Transformer Documentation LinkEDI Extractor588 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationMessage Transformer Documentation LinkCSV to XML Converter Configure CSV to XML Converter [page 589]XML to CSV Converter Configure XML to CSV Converter [page 591]JSON to XML Converter Define JSON to XML Converter [page 592]XML to JSON Converter Define XML to JSON Converter [page 596]EDI to XML Converter Define EDI to XML Converter [page 604]XML to EDI Converter Define XML to EDI Converter [page 610]Content Modifier Define Content Modifier [page 619]Encoder Define an Encoder [page 630]Decoder Define a Decoder [page 634]Script Define Script [page 635]Filter Define Filter [page 647]4.12.6.1 Configure CSV to XML ConverterPrerequisites You have logged into your customer workspace. You are editing the integration flow in the editor.ContextThe CSV to XML converter converts content in CSV format into XML format.You use this procedure to configure CSV to XML converter.Developer's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 589Procedure1. In the palette, choose Converter CSV to XML Converter .2. Place the CSV to XML converter in the integration process and define the message path.3. Choose CSV to XML Converter and provide values in fields based on description in table.Field DescriptionXML Schema Choose Browse. Select the XML schema you want to use.Optionally, you can also upload the XML schema from your local file system by choosing Upload from File System.Path to Target Element in XSD XPath in the XML schema file where the content from CSV file has to be placed.Record Marker in CSV The record in CSV file that indicates the entry which the converter has to consider as the starting point of the content.NoteIf you do not provide a value for this field, all the records in the CSV file are considered for conversionField Separator in CSV Select the character from dropdown list that is used as the field separator in CSV file.TipIf you want to use a field separator that is not available in the dropdown list, manually enter the character.4. If you want to exclude the header information in first line of CSV file for conversion, select Exclude First Line Header checkbox.5. Save or deploy the configuration.590 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application4.12.6.2 Configure XML to CSV ConverterPrerequisites You have logged into your customer workspace. You are editing the integration flow in the editor.ContextThe XML to CSV converter converts content in XML format into CSV format.You use this procedure to configure XML to CSV converter.Procedure1. In the palette, choose Converter XML to CSV Converter .2. Place the XML to CSV converter in the integration process and define the message path.3. Choose XML to CSV Converter and provide values in fields based on description in table.Field DescriptionPath to Source Element in XSD Path to the source element in the XSD fileField Separator in CSV Select the character that you want to use as the field separator in CSV file from dropdown listTipIf you want to use a field separator that is not available in the dropdown list, manually enter the character.Include Field Name as Headers Select this checkbox if you want to use the field names as the headers in CSV fileInclude Parent Element Select this checkbox if you want to include the parent element of the XML file in CSV fileDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web Application P U B L I C 591Field DescriptionInclude Attribute Values Select this checkbox if you want to include attribute values in the CSV file4. Save or deploy the configuration.4.12.6.3 Define JSON to XML ConverterThe JSON to XML converter enables you to transform messages in JSON format to XML format.Prerequisites You are familiar with the conversion rules for JSON to XML conversion.For more information see Conversion Rules for JSON to XML Conversion [page 593]. You are familiar with the limitations for JSON to XML conversion.For more information seeLimitations for JSON to XML Conversion [page 594].Procedure1. Launch SAP Cloud Platform Integration web application by accessing the URL provided by SAP.2. Choose the Design tab.3. Select the required integration package.4. In the Package content view, choose the integration flow you want to edit.5. In the Integration Package Editor page, choose Edit.6. In the palette, choose Message Transformer Converter JSON to XML Converter .7. Insert the converter at the desired position in your integration process.The converter appears as a graphical element in your integration process.The properties tab page for the XML-to-JSON-Converter opens.8. Define the parameters for your conversion, see table below.Option DescriptionName Enter the name of the converter.592 P U B L I CDeveloper's Guide: Managing Integration ContentDeveloping Integration Content With the SAP Cloud Platform Integration Web ApplicationOption DescriptionJSON Prefix (only if the option Use Namespace Mapping is selected)Enter the mapping of the JSON prefix to the XML namespace. The JSON namespace/prefix must begin with a letter 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.9. If you want to continue editing the integration package without exiting, choose Save.10. If you want to retain your changes as a variant, choose Save as version to retain a copy of the current artifact.11. If you want to terminate the creation of package, choose Cancel before saving it.Related InformationDefine XML to JSON Converter [page 596]Define Message Transformers [page 588]4.12.6.3.1 Conversion Rules for JSON to XML ConversionTo 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: 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 th