Technical Articles
Multitenant Cloud Integration Partner Directory Manager
Introduction.
Partner directory is a great addition to SAP cloud integration. We primarily use it to build B2B scenarios and dynamic IFLOWS. However, the general mode of interacting with the PD is usually by POSTMAN or SOAP UI. I used PD heavily in my last assignment an it was then when I got chance to develop this web application which can be deployed the the BTP foundry. This web application is built using Micronaut framework.
What is Micronaut.io?
Micronaut is a new JVM framework which is inspired by spring boot and grails but without their problems and complexity. Micronaut is a modern, JVM-based, full-stack framework for building modular, easily testable microservice and server less applications. It seamlessly gels with most of the cloud providers like AWS, Pivotal Cloud Foundry, Google & Azure to mane a few. it also supports message driven microservices like Kafka and Rabbit MQ. Basically it can be understood as a framework using which we can create cloud native microservices which can be then consume by any front end – HTML5, Vue, React, Android. Additionally, the microservices created using Micronaut are characterized by low memory footprint and blazing fast startup times.
What is the purpose of this web app?
The general purpose of this web app is to manage multiple tenant management nodes hosting the partner directory. Following are some of the salient features of the app:
-
Manage multitenant PD entities of a given landscape. Flexibility to add as many tenants as possible which can be managed using the app.
- Support of full CRUDQ operations on the PD entities.
-
Ability to perform mass upload/download of the PD entities to the desktop (.CSV format) which can be edited offline.
-
Ability to mass upload PD entities record set to a given tenant. Care must be taken while uploading the offline file to the app. The file needs to be a
Text (tab Delimited) (*.txt)
file.
-
Ability to perform cut-over activity when we need to migrate the PD entries from one tenant to another tenant. Ex: dev -> qua -> prd.
This app can be deployed to BTP as a java_buildpack
.
Some screenshots of the web app.
Login screen
Dashboard screen
Batch
Filter by a particular partner
Pre-requisite before installing the app.
-
JDK 1.8 or greater installed with JAVA_HOME configured appropriately. This can be checked by the following command:
java -version
in the CMD prompt.
-
CPI-PI role template
AuthGroup_TenantPartnerDirectoryConfigurator
must be assigned to user of a tenant to be able to work with its corresponding PD entities.
-
Any standard IDE to configure the app before deploying it in the BTP. In this case Intellij IDEA is being used.
- Some time in your hands.
How to install the app?
-
git clone https://github.com/deepankarbhowmick/sap_ci_pdm.git
or simply download the zip https://github.com/deepankarbhowmick/sap_ci_pdm/tree/0.1 and extract in your favorite folder.
-
Open Intellij-IDEA and click on open. Browse to the folder where the app has been extracted and select the
build.gradle
file. The file needs to be opened as a project.
Open file as a project
-
Gradle is the build tool for this app, let gradle download all the dependencies required to run the app. This might take few minutes. Once all the dependencies are downloaded, the app can be configured.
How the app can be configured?
-
All the tenants whose partner directory is intended to be managed using this application needs to be configured in the application. This activity must be completed before deploying the app in the cloud. Of course, we can add new tenants if needed, but that would require a redeployment of the app in the cloud. The hostname of the tenant management node of all the intended tenants should be configured in the
application.yml
file. This file can be found at this locationextraction_folder/src/main/resources/application.yml
. Replaceyour_tenant_tmn_url
with the actual TMN URL keeping the quotes. Here is a snippet of theapplication.yml
that requires change.tenant:
dev: 'your_tenant_tmn_url'
qua: 'your_tenant_tmn_url'
prd: 'your_tenant_tmn_url'
-
Gradle build
-
gradlew run
-
Open the link localhost:8080 and check if the app runs without any error. If the app opens successfully without any errors, installation has been successful and now the app can be deployed to SAP BTP.
How to deploy the app to BTP?
-
gradle build task
created the fat-JAR of the app. This fat-JAR will be deployed to the SAP BTP. Navigate toextraction folder\build\libs
and check if thesap_pdm-0.1-all.jar
file is available.
-
We will use the cloud foundry V7 CLI to deploy the app to the BTP cockpit. Download the CLI from SAP CLI Foundry and download the appropriate OS installer.
-
Extract the downloaded zip in favorite folder and launch the CLI Installer from the extracted folder.
-
Once installation is successful launch CF CLI from command prompt. Validate if installation is ok using
cf version
. -
Get the API endpoint of the sub-account where we want to deploy the app.
BTP API endpoint
-
Open CLI and set the API endpoint discovered above using the command:
cf api API_endpoint
.
-
Login in the cloud foundry BTP using the command.
cf login
We will be prompted to enter the username and password.
-
Now we will push the fat-JAR in the BTP using the following command:
cf push app_name -f "path_to_manifest.yml file"
The manifest file could be found in thefavorite folder
where the app was downloaded. The application nameapp_name
provided in theManifest.yml
must match theapp_name
in the cf push command. Once successfully deployed, navigate to theglobal account > sub account > space > application list
and launch the application deployed.Successful BTP deployment
Conclusion
We can use this tool to manage our PD settings for multiple tenants available in our landscape. Please feel free to suggest new features or bugs in the comment section, I will notify in the comments when I will be releasing new version.
Hi Deepankar, thanks for sharing it and making it open-source!
I was expecting/am still expecting SAP to release a UI for Partner Directory. But it is nice to have options. Maybe SAP team can develop a better solution with our ideas!
Regards,
Fatih
Hi Deepankar,
I have just tried out your tool. Great piece of work! 🙂
Very useful since a standard SAP UI is still not in sight.
I just noticed an issue with it. The Query option only fetches the first 30 records from OData /BinaryParameters (which is the maximum build into this OData service). I assume the other Partner Directory OData services have the same restriction.
Unfortunately I don't have enough Java programming knowledge yet to fix it myself. Hope you or someone else has time to provide a patch to fetch all available records from the OData record set (e.g. via /$count, $skip & &top), display the records on screen and be able to download the whole set to a file for migration.
Kind regards,
Jim