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
Workaround for Northwind V2 metadata with Error: Invalid or missing namespace for 'Schema'
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)
Intermediate Topic - File Upload Multipart/Form-Data
Understand the structure of MIME multipart/form-data + File upload using Postman (29:42)
How to build text file form-data body using Content Modifier + File upload using Request-Reply (9:17)
How to build binary file form-data body using Groovy script + File upload using Request-Reply (17:10)
(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
How to build binary file form-data body using Groovy script + File upload using Request-Reply
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock