Human Capital Management Blogs by SAP
Get insider info on SAP SuccessFactors HCM suite for core HR and payroll, time and attendance, talent management, employee experience management, and more in this SAP blog.
cancel
Showing results forΒ 
Search instead forΒ 
Did you mean:Β 
yogananda
Product and Topic Expert
Product and Topic Expert

Dear All,

Previous Article : Introducing Touchless Deployment

In this article, describes step by step how to migrate your sql  through Touchless Deployment API and understand each scenario's for deploying which would benefit customers, partners, DBA's & Data Integration consultant.

 

Available for both SAP HANA and Oracle tenants


Getting Started

Step 1 : Enable Touchless deployment role and assign to the user

The Touchless Deployment permission is added in Security > Roles > Administration.The Commissions user who deploys the database changes must be granted with this permission (through a role).

To configure permissions for Touchless Deployment:
1. In Manage Setup > Security > Roles, select the Role that has the permissions to deploy database changes.


Step 2 : Touchless Deployment API's to check if you have access to deploy.

Below API will not provide any 200 ok response.

Method : GET 

URL : https://Xyz.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/

Authentication : Basic XXXXXXXXXXXXXX

content-type : application/json

Below API will provide 200 ok response if User is authenticated, that confirms user can deploy the next step.

Method : GET 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/status

Authentication : Basic XXXXXXXXXXXXXX

content-type : application/json

Step 3 : Create your own folder with required xml and *sql format files. (Sample Github link at end of the step is mentioned)

πŸ“¦ project-folder
β”£πŸ“œ master.xml
┣ πŸ“‚CR1
β”—πŸ“œ CR1.sql
β”—πŸ“œ CR2.sql
β”—πŸ“œ CR3.sql
β”—πŸ“œ CR4.sql


Master.xml would be look like below for deploy. you can change XML file name as you per your need.  Mention your folder name which will have all your *.sql files.
CR1.sql would like below sample which can continue multiple statements. 
CR2.sql would like below sample which can continue multiple statements - INSERT & UPDATE statements.
Ensure you have auto commit feature enabled in your tenant, as you see no commit statement is mentioned in below
GitHub Link : https://github.com/yogananda-muthaiah/Touchless-Deployment

Understand Liquibase Documentation


https://docs.liquibase.com/concepts/changelogs/sql-format.html


Step 4 : Zip the complete root folder

Zip file should have XML and folder (conatins all your sql files).


Step 5 : Lets upload the zipfile for deploying to the database using Touchless Deployment API

Method : POST 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/update?changeMasterFile=master.xml

Authentication : Basic XAAKAKKKAKA

content-type : application/json

changeLogZip : <your folder path of zip file> (forma-data)

Open the postman or any other API Management tool
2 tables are created after API went successful (202 Accepted) as per above CR1.sql (above screenshot)

Once API is successful, records will be stored in table : ext.cs_td_ext_databasechangelog
If user is tried many times, it will be locked in below table : ext.cs_td_ext_databasechangeloglock


Step 6 : Below API will update the TAG which would be required for rollback statement ..

many of you might know what is database rollback... sometimes rollback are important in your implementation in the long run because if you need to archive the records and delete the entire process, it would help only if you have updated the TAG name for your deployed.

Method : POST 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/tag?tag=version1&changeMasterFile=master.xml

Authentication : Basic XAJHAKJHAKJAK

content-type : application/json

changeLogZip : <your folder path of zip file>  (select form-data)

Go back to your postman to execute the below API to update the tag which will deploy and reflect immediately in database.
As shown in below screenshot, last row is updated with TAG column Version1
Best Practice :

Always follow Step 6 if you need to rollback in future anytime.  Step 5 is straightforward will not rollback.


Step 7 : API to check your Deployed Status

Method : GET

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/getstatus/22

Authentication : Basic XAHAKAKJAKJKA

content-type : application/json


Step 8 : Roll back Scenario on last ChangeSet

Below API will rollback the last number of changesets (the number is provided in your sql file in 2nd line). so In my scenario - 2 tables are dropped.. because it refers to the last time in CR1.sql (refer Step3)

https://docs.liquibase.com/workflows/liquibase-community/liquibase-auto-rollback.html

Method : POST 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/rollbackLastChangesets?changeMasterFile=master.xml&changesets=9998

Authentication : Basic XAHAKAKAJK

content-type : application/json

changeLogZip : <your folder path of zip file>  (select form-data)

Back to your postman, execute the below API endpoint to complete your rollback statement.

In my example, changeset = 9998 was executed in Step 6 which was in my sql file statement
After the API is successfull, that confirms your sql is executed successfully and you don't see the records in log table ... 
Best Practice :

Ensure your zip file what it contains would be rolledback, if you have multiple sql statements, while rolling back it executes everything from *.sql


Step 9 : Roll back Scenario on Tag column

Below API will rollback based on RollbackToTag endpoint allows the user to rollback all changes which have been done after the TAG

Method : POST 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/rollbackToTag?changeMasterFile=master.xml&tag=Version1

Authentication : Basic XAJHAKAJKAJK

content-type : application/json

changeLogZip : <your folder path of zip file>  (select form-data)


Step 10 : Roll back Scenario on Date column

Below API will rollback based on RollbackToDate endpoint allows the user to rollback all changes which have been done after the date

Method : POST 

URL : https://XYZ.callidusondemand.com/TrueComp-SaaS/services/rest/touchlessdeployment/rollbackToDate?changeMasterFile=master.xml&date=2022-06-21,12:27:13

Authentication : Basic XAHKAKAKKA

content-type : application/json

changeLogZip : <your folder path of zip file>  (select form-data)


Note:
Any future enhancements : SAP Commissions Influence Portal

Refer Housekeeping Notes from Previous Article : Introducing Touchless Deployment

Known Limitations

    • Deployed information stored in ext schema is not available in /TouchlessDeployment (Step2)
    • Touchless Deployment API is only for EXT Database Schema.
    • Zip file should contain only *.sql format and zip file upload limit is upto 2MB.
    • username in changeset will not be considered from RestAPI - User Authorization.
    • Deploy id status keeps generating even if you executed more than once.



Coming Next Blog : Deploy your Database objects through CI/CD concept

 

 
8 Comments
Pandiri_Naveen_
Employee
Employee
Good Job yoganandamuthaiah
yogananda
Product and Topic Expert
Product and Topic Expert
0 Kudos
Thank you boss naveen.pandiri !!
Good one yoganandamuthaiah
yogananda
Product and Topic Expert
Product and Topic Expert
0 Kudos
Thank you sir rakeshsripathi !!
philipholtom
Participant
This is a fantastic new feature! Thank you.
yogananda
Product and Topic Expert
Product and Topic Expert
0 Kudos
thanks pholtom
Deepan
Product and Topic Expert
Product and Topic Expert
Hi Yoga, ext.cs_td_ext_databasechangelog--is the table name for tracking changes the same for all tenants ? Is there something that needs to be set up in order to access this?

Thanks,
Deepan
yogananda
Product and Topic Expert
Product and Topic Expert
0 Kudos
deepanshanmugam



Table remains same across all the tenants and only once SAP Technical support enables Touchless deployment in cs_prefernces  with true