Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Practical SAP Cloud Integration
Getting Started
Set up your own free SAP Integration Suite trial tenant (15:53)
How to renew your SAP Integration Suite trial tenant unlimited time? (4:36)
Quick walkthrough of SAP Cloud Integration (SAP CI) Web UI (11:08)
Create and deploy your first integration flow and make it run with Timer (17:16)
Set up Postman call to SAP CI using Basic Authentication (20:57)
Create multiple Process Integration Runtime and multiple keys (8:32)
Boost productivity with Integration Flow Editor features and capabilities (19:33)
Basic Transformation - Content Modifier
Understand Apache Camel Message Exchange in SAP CI message processing (5:48)
Say hello using constant body and replace by another body (11:11)
Say hello using constant header, property and body with Camel Simple Expression (9:48)
Say hello using http header and http body from Postman (15:09)
Say hello using XPath header and XPath property (7:59)
When should I use header or property? (11:38)
Basic Adapter - HTTP
Understand http status code easily with http cat and http dog (5:42)
How to create channel, assign adapter and make call to receiver using Request Reply? (25:16)
Receiver HTTP Endpoint - How to do GET call with dynamic path and dynamic query string? (33:41)
Receiver HTTP Authentication - Do GET call with Basic Authentication (12:29)
Receiver HTTP Method - Do POST, PUT, PATCH, DELETE calls and Dynamic method (23:55)
Sender HTTP - How to get Postman's request headers, url path and query string in SAP CI? (19:20)
Basic Routing - Router
Router - You always have a choice (22:27)
Router - End or continue if no data (9:31)
Basic Transformation - Converter
Convert JSON to XML + Conversion rules and limitations you should be aware (30:32)
Convert XML to JSON + Conversion rules and limitations you should be aware (19:35)
Convert CSV to XML + Conversion rules and limitations you should be aware (27:47)
Convert XML to CSV + Conversion rules and limitations you should be aware (16:58)
Basic Adapter - SOAP
How to create SOAP request message easily and call to SOAP web service (36:09)
Sender SOAP - How to call SOAP to SAP CI using any dynamic request XML and return any response XML (13:30)
Sender SOAP - How to call SOAP to SAP CI synchronous, asynchronous with and without return errors (21:36)
Sender SOAP - How to use ready available WSDL as SAP CI WSDL (14:43)
Basic Adapter - OData
OData GET query options + aren't you curious what happen inside OData adapter? (47:16)
Create OData GET call passthrough to speed up your development and unit test (34:50)
ODATA How to POST PUT PATCH and DELETE single record with right payload (45:34)
OData How to batch processing (multiple records + multiple operations + multiple entities) (55:10)
Basic Routing - General Splitter and Iterating Splitter
How to split flat XML to multiple smaller XML (Splitter with parent data + grouping + parallel processing) (29:45)
How to split complex XML to multiple smaller XML (Nested Splitter with parent data + grouping + parallel processing) (24:21)
How to split XML with different namespaces + 1 easy way to handle namespaces (20:08)
How to split flat file or CSV by Line Break to multiple smaller files (9:23)
How to split by token from XML (token from any level in XML) (9:31)
Basic Routing - Multicast
Multicast - Same message go to multiple routes (10:36)
Multicast - Same message go to multiple routes + Gather back all messages using different aggregation algorithm (15:18)
How to access header & property added changed (before, inside, after Multicast branches) using different Gather? (30:57)
Multicast - Same message go to multiple routes manually without multicast (20:52)
Basic Groovy Mapping - Tool and Environment Setup
First Groovy script to get/set header, property and body using SAP CI web IDE (22:25)
How to get SAP CI Camel version, Groovy version and Java version? (7:08)
Download & Install JDK8, IntelliJ IDEA + Download Groovy library, SAP CI library (14:09)
Setup IntelliJ Project for local offline SAP CI Groovy development and unit test (16:02)
How to get/set header, property & body using IntelliJ IDEA + Local debug unit test? (29:50)
Basic Groovy Mapping - Groovy Fundamentals (Step-by-Step)
Variable - Comment, variable, dynamic type vs static type, different data types (18:21)
String - Different kind of String, escape special characters, many useful and convenient String methods (48:11)
List - Define, access, add, change, remove, looping, checking and finding and various common operations on List (41:23)
Map - Working with Map key-value pairs + Many common operations on Map (26:14)
Control - If + If / else + If / else if + Switch with different cases (26:27)
Operator - Relational, Logical, Ternary, Elvis, Safe navigation, Spread operator and more (26:50)
Loop - Multiple ways to do looping and which are the good ways? (25:32)
Method - How to create reusable Method with and without parameters, data type and return (19:01)
Class - Declare class with property and method + Ways to create object + Useful way to operate list of objects (34:37)
Closure - A block of code that can be named, passed around like object, executed as needed to do wonders (35:28)
Basic Groovy Mapping - Working on XML and JSON
Read XML - Reading and extracting data from XML tree using XmlSlurper and XmlParser (49:37)
Read JSON - Reading and extracting data from JSON tree using JsonSlurper (17:27)
Create XML - Create XML using MarkupBuilder and StreamingMarkupBuilder (36:29)
Create JSON - Create JSON using JsonBuilder and StreamingJsonBuilder (21:08)
Modify XML - Add, Modify, Replace, Delete node from XML using XmlSlurper and XmlParser (58:33)
Modify JSON - Add, Modify, Replace, Delete node from JSON using JsonSlurper and JsonBuilder (32:01)
Basic Groovy Mapping - Mapping Template
Download and Import all Groovy Mapping Template Script, SAP CI Package and Postman Collection (5:36)
IDOC to Tree JSON + IDOC to Tree XML (11:57)
JSON Tree to IDOC + XML Tree to IDOC (9:20)
IDOC to Flat JSON + IDOC to Flat XML (9:00)
JSON Tree to Flat JSON + JSON Tree to Flat XML (5:41)
CSV to JSON + CSV to XML + (for CSV with header) + (Auto dynamic fields & manual specificed fields) (29:17)
CSV to JSON + CSV to XML + (for CSV without header) + (Auto dynamic fields & manual specificed fields) (6:50)
JSON to CSV + XML to CSV + (for CSV with or without header) + (Auto dynamic fields & manual specificed fields) (13:04)
Basic Message Mapping - Fundamentals (Step-by-Step)
How to create XSD structure from sample XML? + Things should consider + Auto set minOccurs, maxOccurs & type (31:48)
Simple message mapping to map FirstName and LastName to FullName + Different way to test run simulate (19:24)
How to use "mapWithDefault" to handle missing fields or empty context (16:55)
Create or upload message mapping as Artifact and use mapping artifact in any iFlow any package (13:09)
Dynamic reference any mapping artifact in iFlow + Single iFlow for test run any mapping artifact deployed (13:16)
Simple multi-row one-to-one message mapping + Auto map all selected fields with same field name (10:51)
How to use "Duplicate Subtree" to map same xml nodes with diferent mapping logic? (5:06)
How to use "Enable field" and "Disable field" to conveniently turn on or off mapping logic? (10:45)
Simple multi-row mapping with if-else conditions filtering + multi-conditions filtering using ("and" "or" "not") (40:23)
How to simplify complex nested If-else conditions using FixValues conversion? (22:29)
How to access header and properties in message mapping + Set them in message mapping (19:42)
Basic Message Mapping - Context Handling and Node Functions
Understand Queue, Context, Context Change in Message Mapping (26:32)
Understand Suppress and create Suppress using ifWithoutElse (16:34)
What happen if try to process togather 2 queues that have different number of values? (9:46)
removeContexts - How to remove all context change and bring all values to root level + Why sometime this is bad? (11:13)
sort & sortByKey - How to sort queue by itself or by key from another queue? (15:33)
splitByValue - How to split values to multiple contexts by inserting context change? + Different way to split (9:48)
collapseContexts - How does collapseContexts work? What situation you need to use collapseContext? (10:45)
formatByExample - How to "format" one queue by example of another queue? + What does "format" do? (17:12)
useOneAsMany - How to repeat header-level data multiple time at item level? + Things you should beware (16:32)
Basic Message Mapping - Custom Functions and UDF
How to create Custom Function (UDF) for single value and all values of context (47:26)
Download and import all SAP CI UDF Package iFlow with UDF script, example mapping for UDF & payloads (9:09)
UDF_String - add leading & remove trailing zeros and spaces, padLeft & padRight with any characters (6:12)
UDF_String - take & drop substring, safeSubstring, isNumber check and more (4:45)
UDF_Node - hasValue, createIfHasValue, passIfHasValue, hasOneOfSuchValues, contextHasOneOfSuchValues (11:48)
UDF_Node - getUniqueValues (with or without suppress), joinValuesToString, splitStringToValues (7:39)
UDF_Node - assignValueByCondition, getFirstContextValue, deleteSuppress (14:10)
UDF_Node - getValueByIndex, concatTwoQueuesToOne, concatToOneQueue (7:01)
Basic Message Mapping - Mapping Pattern
XML Tree to IDOC - Good case! Multiple same level direct mapping (6:33)
IDOC to Tree XML - How to use UDF to easily extract necessary value from multiple IDOC segments and fields (9:46)
IDOC to Flat XML - How to extract different hierarchy level values from IDOC then map them to flat structure (8:30)
XML Flat to IDOC - Single complex message mapping that use UDF to handle context map unsorted XML to IDOC (27:49)
XML Flat to IDOC - Reduce complexity by chaining multiple message mapping with Step1 Sort and Step2 Map (14:21)
XML Flat to IDOC - One bite at a time! Chaining Groovy Step1 Sort, Step2 Group and Step3 Map using MM (16:05)
Basic Topic - Looping and Paging
Hello Looping Process Call + Check CamelLoopIndex + Break from Loop (17:04)
Looping get OData V2 V4 XML JSON and REST API page by page using HTTP adapter + Append all responses (38:31)
Looping OData V2 V4 in Looping Process Call using OData adapter + Process in Page (26:06)
Intermediate Adapter - SFTP
Set up your own free on-premise SFTP server with username and password (13:56)
Set up SAP Cloud Connector connect to SAP CI and on-premise SFTP server + SSH Connectivity Test (19:13)
Connect SAP CI to on-premise SFTP server using SAP CI generated OpenSSH key (7:25)
Import PuTTYgen created private key to SAP CI Keystore + Using imported private key connect to SFTP server (13:07)
SFTP passthrough - Move files from SFTP source folder to target + Archive files with dynamic folder & file name (35:32)
What will happen to SFTP source files if have error during message processing? (10:37)
How to pick up SFTP source files based on file name pattern and write them to different target folders (10:32)
SFTP passthrough - Move all source subdirectories and files to target subdirectories and files (8:14)
Get single specific SFTP file using Poll Enrich + Delete after process + Keep file for next process again (17:05)
Get multiple SFTP files using Poll Enrich with Looping + Delete after process (19:39)
Take control of SFTP connection/session using "Automatically Disconnect" Option (7:45)
Intermediate Transformation - Base64 Encoder/Decoder
How to reliably handle binary files using Base64 Encoder and Base64 Decoder (17:41)
How to embed multiple binary file like pdf and image in plain XML using Base64 encoding (11:15)
How to use Groovy mapping to do base64 encode & decode + Embed to XML & JSON + Decode to property (26:34)
Intermediate Topic - Zip Handling
Zip and Unzip single file using ZIP Compression & ZIP Decompression + Set filename inside zipped file (12:45)
Unzip multiple files inside zip using Zip Splitter + Unzip by file name pattern + Encode each file to base64 string (13:39)
Zipping multiple files with different filename to single zip using Gather with Zip Aggregation (10:54)
How to use Groovy script to dynamically zipping multiple payloads from property to single zip (15:34)
Intermediate Topic - Exception Handling
Handle error in exception subprocess + Get generic exception details + End message or Error end event? (30:10)
Get HTTP OData SOAP error response body + Log specific payload + Dynamic log all payloads as attachments (46:16)
Outsource exception handling to separate generic iFlow for alert notification and external payload logging (21:51)
Handle error in Splitter loop + StopOnError or continue next + Gather / No Gather + Splitter payload logging (36:36)
Intermediate Transformation - Content Enricher
Enrich any XML with small lookup data using single Content Enricher + OData adapter (16:30)
Enrich small XML with large lookup data using single Content Enricher + OData adapter with $filter (31:28)
Enrich large XML with large lookup data using Splitter loop + Content Enricher + OData adapter with $filter (7:07)
Enrich large XML data using Splitter loop + Appended OData lookup data with $filter + Enrich using Groovy (22:18)
Enrich original XML with lookup JSON using Groovy mapping (11:43)
Enrich original JSON with lookup XML using Groovy mapping (8:03)
Enrich original JSON with lookup JSON using Groovy mapping (8:13)
Intermediate Topic - OpenPGP Encryption and Signing
Which public/secret key use for OpenPGP encrypt / decrypt / signing / verify? What keys need to exchange? (8:22)
Explain GnuPG (GNU_Privacy_Guard) and PGP (Pretty_Good_Privacy) and OpenPGP in 2 minutes (1:59)
Easily create single & multiple OpenPGP keys for SAP CI + Keys from different partners + Things you should know (20:05)
Simulate setup partners environment with PGP tool + Import SAP CI public keys + Import partners secret keys (4:18)
How to safely import single & multiple OpenPGP public keys from different partners to SAP CI? (8:08)
Example: SAP CI encrypt only for different partners + Simulate decrypt by different partners (16:37)
How to safely import single & multiple secret keys with different passphrase to SAP CI? (9:23)
Example: SAP CI encrypt and sign for different partners + Simulate decrypt and verify by different partners (11:27)
Example: SAP CI decrypt partner's files + Files with Signature NoneExpected or Optional or Required (18:35)
Intermediate Topic - Persistence - Variable
How to read & write local variable and global variable with default value from & to property and header? (28:05)
Delta synchronization via sorted timestamp or unique ID in payload + manualRun with earlier timestamp or ID (49:05)
How to build generic iFlow and use Postman as frontend tool to create update read multiple global variable? (8:55)
Intermediate Topic - Persistence - Data Store
Write single message to Data Store and Get it back from another iFlow + Explore different Write & Get setting (36:29)
What is the different between Get and Select for Data Store? + Limitation you should know (16:19)
How to loop create update multiple unique entry id to Data Store? + Transaction Handling when error (16:27)
Select multiple from Data Source + Process success entries + Skip failed entries + Move to different Data Store (17:37)
Retry with Data Store Sender Adapter + Poll Interval + Retry Interval + Exponential Backoff + Max Retry Interval (20:36)
Intermediate Adapter - JDBC (Database)
Setup your own free local Microsoft SQL Server with sample Northwind database + Link to SAP Cloud Connector (19:17)
Deploy JDBC Drivers + Create JDBC Data Source + Connectivity test from SAP CI iFlow to MS SQL Server database (11:00)
Download and import all SAP CI Package iFlow with JDBC steps, postman collection with payloads and SQL (3:57)
SELECT from single table + table join + view using direct SQL + XML SQL + SQL_QUERY with parameters (17:06)
INSERT single & multiple rows using direct SQL + XML SQL + SQL_DML + Batch mode + Prepared SQL statement (18:05)
UPDATE single & multiple rows using direct SQL + XML SQL + SQL_DML + Batch mode + Prepared SQL statement (5:56)
DELETE single & multiple rows using direct SQL + XML SQL + SQL_DML + Batch mode + Prepared SQL statement (4:43)
EXECUTE stored procedure using direct SQL + XML SQL with input parameters (5:11)
UPSERT single row using XML SQL UPDATE_INSERT + Multiple rows using Batch mode (7:27)
UPSERT single row using direct SQL + SQL DML + Stored procedure (7:17)
UPSERT bulk rows using stored procedure with input XML payload + JSON payload and DB temp table (15:09)
Intermediate Adapter - JDBC (SAP HANA Cloud Database)
Setup your own free trial SAP HANA Cloud Database + Create JDBC Data Source + Connectivity test (21:10)
Download and import all SAP CI Package iFlow with JDBC, postman collection for SAP HANA Cloud database (3:07)
SAP HANA Cloud database way to UPSERT single row using XML SQL + direct SQL + SQL DML + Procedure (15:53)
SAP HANA Cloud database way to UPSERT bulk rows using procedure with input XML payload + JSON payload (17:43)
Intermediate Topic - Setup ABAP Platform Trial (for RFC and IDOC)
Setup your own free ABAP Platform Trial on Docker + Install SAP GUI + Install Developer License + Stop/Start Docker (21:44)
Intermediate Adapter - RFC
RFC - Add RFC Connection and RFC Resource in SAP Cloud Connector + Create RFC Destination in BTP + Connectivity Test (15:28)
RFC - Do RFC call using RFC adapter + RFC structure mapping + GET & POST RFC data (18:04)
RFC SOAP - Do RFC call using SOAP adapter + RFC structure mapping + GET & POST RFC data (11:48)
Intermediate Adapter - IDOC
Inbound IDOC from SAP CI to SAP ERP + Necessary setup in SAP ERP and Cloud Connector to success post IDOC (32:53)
Outbound IDOC from SAP ERP to SAP CI + Necessary setup in SAP ERP to success send IDOC to iFlow (20:02)
Intermediate Adapter - JMS
Send message to JMS queue with compression + encryption + header + property + JMS behaviour you should know (25:16)
Get message from JMS queue + Retry pattern + Exponential Backoff + Exit from Retry + Dead letter queue + Concurent processing (34:03)
Generic pipeline concept using JMS queue to implement asynchronous messaging with Retry mechanism (29:55)
Intermediate Topic - Attachment Handling
Create Reusable Script Collection for attachment handling + Download and import SAP CI Package iFlow (5:56)
Read multiple attachments from SOAP + Process each attachment one-by-one + Read multiple attachments to XML (29:14)
Create single attachment from body + Create multiple attachments from XML + Create single zip attachment from multiple attachments (14:31)
Intermediate Adapter - Mail
Setup free personal Outlook email + Setup credential + Connectivity test from SAP CI using SMTP and IMAP (9:59)
Read email from inbox + Archive email + Get email subject & from & to + Send email to inbox (23:36)
Read email with multiple attachments and do attachment handling (15:35)
Send email with multiple attachments and do attachment handling (21:09)
Intermediate Adapter - Azure Blob Storage
Setup your own free trial Azure Blob storage account + Install Azure Storage_Explorer (13:46)
Setup Basic Authentication call to Azure Blob using Shared Access Key + SAS Token + List Containers Connectivity Test (14:53)
How to List Blobs with Prefix & Marker & MaxResults + List Blobs with Looping + Process In Page + Manual Looping (40:32)
How to Upload Block Blob + Upload Blob From URL + Upload Append Blob (22:10)
Setup OAuth2 Client Credential call to Azure Blob API using Bearer Token + Get Blob via API using OAuth2 (32:07)
How to Get Blob Metadata + Get Blob Properties + Set Blob Metadata + Update Blob Metadata using API (22:31)
All-In-One to List Blobs with Looping + Process One by One + Get Blob + Put Blob + Set Blob Metadata + Delete Blob (21:53)
(In Planning) Other Sections
Lorem ipsum dolor sit amet consectetur adipiscing elit
Lorem ipsum dolor sit amet consectetur adipiscing elit
Lorem ipsum dolor sit amet consectetur adipiscing elit
Teach online with
Example: SAP CI encrypt only for different partners + Simulate decrypt by different partners
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock