Curriculum
Getting Started
Available in
days
days
after you enroll
- Please join community forum of this course for question, discussion, sharing, etc…
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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)
- Receiver HTTP Retry Failed Requests + Max retry + Retry interval + Retry HTTP error response codes (16:47)
Basic Routing - Router
Available in
days
days
after you enroll
Basic Transformation - Converter
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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)
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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)
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
Intermediate Adapter - SFTP
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
Intermediate Topic - Zip Handling
Available in
days
days
after you enroll
- 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)
- How to use Groovy script to dynamically zipping multiple payloads to single zip with password (9:38)
- Unzip multiple files from password protected zip (9:06)
Intermediate Topic - Exception Handling
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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)
Available in
days
days
after you enroll
- 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)
Available in
days
days
after you enroll
- 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)
Available in
days
days
after you enroll
Intermediate Adapter - RFC
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
Intermediate Adapter - JMS
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
- 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
Available in
days
days
after you enroll
Intermediate Groovy Mapping - Sorting XML and JSON
Available in
days
days
after you enroll
Intermediate Routing - Aggregator
Available in
days
days
after you enroll
Intermediate Groovy Mapping - Excel to XML and XML to Excel
Available in
days
days
after you enroll
Intermediate Groovy Mapping - Grouping XML and JSON
Available in
days
days
after you enroll
Intermediate Topic - Value Mapping
Available in
days
days
after you enroll
- Create & maintain Value Mapping manually + Lookup VM in Message Mapping + Lookup VM in Groovy script (22:43)
- Things to know for Value Mapping (Case + Scope + Null + Direction + Default + Maintenance + Alternatives) (16:28)
- Efficient Value Mapping Bulk Update Tool via Excel + Value Mapping to Excel + Excel to Value Mapping (36:55)
Intermediate Transformation - Filter & XPath
Available in
days
days
after you enroll
- Filter - Basic Navigation & Paths + By Position + Equal & Not Equal + IN-List & NOT-IN List (24:00)
- Filter - XPath for different value type ( Nodelist, Node, String, Boolean, Integer) + XPath in Content Modifier (14:51)
- Filter - How to dynamically pass header and property to XPath expression? Pass single value & list of values (6:47)
- Filter - By String function starts-with() + ends-with() + string-length() + tokenize() + string-join() etc (6:43)
- Filter - By missing & existence of child nodes + By count + Combine conditions + Check all nodes met conditions (14:53)
- Filter - Simplify XPath + Arrow operator + for-each() + distinct-values() + Simple String concat + parse-xml() (11:17)
- Filter - By numeric comparison operators + By min() max() sum() + format-number() + check is number (9:39)
Intermediate Topic - DateTime Handling
Available in
days
days
after you enroll
- Groovy DateTime - Basics LocalDate & LocalDateTime Essentials (12:58)
- Groovy DateTime - Formatting & Parsing Dates and Times (7:07)
- Groovy DateTime - Timezone, Offset & UTC Conversion (9:49)
- Groovy DateTime - Epoch Time Explained for Seconds, Milliseconds & Instant (5:26)
- Groovy DateTime - Date & Time Differences, ChronoUnit, Period & Duration (4:36)
- Groovy DateTime - Comparing between 2 Dates & 2 DateTimes ( ==, <, >, <=, >= ) (6:34)
- Groovy DateTime - Practical Date & Time Utilities for Integration Developers (8:24)
(In Planning) Other Sections
Available in
days
days
after you enroll