Adobe Integration Profile Configuration Step-By-Step | Software Asset ManagementSummaryThis Article explains the Adobe Subscription integration with ServiceNow and outlines step-by-step configuration on Adobe Console and your ServiceNow instance. Table of contents Required pluginsPrerequisites on Adobe ConsoleAdobe Integration profile configurationStep-by-step configuration on Adobe ConsoleReviewing the Adobe dataAdditional resources Required Plugins Software Asset Management Professional The Master Plugin for Software Asset Management can be installed Activate all Software Asset Management Professional plugins (com.sn_samp_master) which activates all SAMP related Plugins. Legacy Software Asset Management pluginRequest Software Asset ManagementInstalled with the legacy Software Asset Management plugin SaaS License Management Integrations The SaaS License Management Integrations plugin (com.sn_sam_saas_int) SaaS License ManagementRequest SaaS License ManagementInstalled with SaaS License Management Prerequisites on Adobe Console A Project must be configured and available with Private and Public keys Adobe Integration Profile Configuration To create a new integration profile, perform the following. Login to the ServiceNow InstanceNavigator >> SaaS License >> Direct Integration Profiles >> Click NewSelect Adobe Cloud Integration Profile from the list Click to Create a New Integration Profile Step-by-step configuration on Adobe Console Log in to the Adobe ConsoleCreate a New Project Click on Add API Once the page loaded to Add API Choose User Management API Observe "Create a new Service Account (JWT) Credentials." There will be 2 options available: Generate a Key Pair Upload your Public key Use the Option to Generate a Key Pair Click on Generate Key Pair, and the page will download a .zip file The file will be Downloaded as "config.zip" We can also see "Service Account (JWT)" Credential available with Public Key Expiration date By Default the Expiration date would be for 1 Year Click on Save Configured API Open the location in which config.zip was downloadedExtract the .zip file and make sure to note the complete location; if needed, the Folder name can be changed from "Config" to a desired name Once the .zip is extracted, it should contain 2 files certificate_pub.crt private.key Click Save Configured API to be taken to the next page containing the Service Account(JWT) information CLIENT ID CLIENT SECRET TECHNICAL ACCOUNT IDTECHNICAL ACCOUNT EMAIL ORGANIZATION ID Copy the Service Account(JWT) information and update in the ServiceNow "Adobe Integration Profile" (As mentioned above in Adobe integration Profile configuration) Display Name: User desired Name Client ID: Provided from Adobe JWT Organization ID: Provided from Adobe JWT Technical Account ID: Provided from Adobe JWT Client Secret: Provided from Adobe JWT Certificate: Explained BelowCertificate Password: Explained Below Earlier, we downloaded a ZIP file from the JWT Credentials (CONFIG.ZIP)Open Terminal/Command Prompt in your MAC/Windows host and change the directory to the location of the config.zip file downloaded in an earlier step. Once entered into the respective folder and execute the following command found in the Integrate with Adobe Cloud product documentation: openssl pkcs12 -export -out test1-certificate.pfx -inkey private.key -nocerts Once the command has been executed, it will request a password be generated by the user The new password should be a minimum of 6 charactersIMPORTANT: Make sure to remember the password created during this step Once the command has executed successfully, it will create a new file test1-certificate.pfx Click on the magnifying glass icon next to the Certificate field to open a popup windowOn the popup window, click New On the New record page for the certificate, perform the following: Attach the "test1-certificate.pfx" to the CertificateName: User Desired Name (Example "Adobe_Integ")Type: PKCS12 Key StoreKeyStore Password: Password entered while creating the "test1-certificate.pfx"Notify on Expiration: User name to receive emails Save the record Click on Validate Stores/Certificates Once the Certificate is created, update the Certificate in the column Certificate Password: Password entered while creating the "test1-certificate.pfx"Click on Validate Adobe CredentialIt should validate successfully Reviewing the Adobe data The Scheduled Job "SAM - Import User Subscriptions" is responsible for pulling the data from Adobe Subscriptions https://<Instance_Name>.service-now.com/nav_to.do?uri=sys_trigger.do?sys_id=35e27eea1b697010920f85d5604bcbd1 Once the above configuration is successful, we may execute the "SAM - Import User Subscriptions" job which executes and get the information from all the integrationsExecuting "SAM - Import User Subscriptions" might take longer time than expected as it verifies all the integrated subscriptions We can also run a Back Script with the below entry to only retrieve the Adobe Subscription Navigator >> System Definition >> Scripts-Background Enter the below on the Run Script new SamImportUserSubscriptionsAdobe().process(); Run Script Test the data under the Adobe Subscription Navigator >> SaaS License >> All User Subscriptions (samp_sw_subscription_list.do)Search for the Subscription Profile from which the Integration Profile created and we can see the data imported. Additional resources KB1001921: JWT Token is incorrectly formatted, and can not be decoded..invalid token (SAMP Adobe Integration Profile)Integrate with Adobe Cloud - Product documentation <!-- .SOKMKBArticle div.margin { padding: 10px 40px 40px 30px; color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; } .SOKMKBArticle div.fed{ background-color: #f5f8fa; border: 1px solid; border-color: #bfbfbf; padding: 10px; } .SOKMKBArticle .FedRestricted{ background-color: #c00000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .CustRestricted{ background-color: #ff0000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .SNRestricted{ background-color: #ea700d; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .SNConfidential{ background-color: #ffc000; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle .Public{ background-color: #00b050; color: #ffffff; padding: 10px; margin-top: 10px; text-align: center; font-size: 14pt; font-weight: bold; } .SOKMKBArticle table.tocTable { border: 1px solid; border-color: #f2f2f2; background-color: #f2f2f2; padding-top: .6em; padding-bottom: .6em; padding-left: .9em; padding-right: .6em; } .SOKMKBArticle table.noteTable { align: left; border: none; border-color: #81b5a1; background-color: #f2f2f2; width: 100%; border-spacing: 2; font-size: 11px; } .SOKMKBArticle table.internalTable { border-top: 1px solid; border-left: 1px solid; border-color: #81b5a1; width: 100%; border-spacing: 1px; } .SOKMKBArticle .sp td { border-bottom: 1px solid; border-right: 1px solid; border-color: #81b5a1; background-color: #ffffff; height: 20px; padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; } .SOKMKBArticle .sphr td { border-right: 1px solid; border-bottom: 1px solid; border-color: #81b5a1; background-color: rgb(245, 245, 245); padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; height: 20px; } .SOKMKBArticle .sh td { border-bottom: 1px solid; border-right: 1px solid; border-color: #81b5a1; background-color: #81b5a1; color: #ffffff; height: 20px; padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; } .SOKMKBArticle th { padding-top: .5em; padding-bottom: .5em; padding-left: .5em; padding-right: .5em; border-bottom: 1px solid; border-right: 1px solid; border-color: #81b5a1; background-color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; color: #ffffff; height: 20px; } .SOKMKBArticle td { border-color: #81b5a1; margin: 5px 5px 5px 5px; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; color: #283d40; } .SOKMKBArticle p { color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; } .SOKMKBArticle li { color: #283d40; font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; font-size: 10pt; line-height: 1.5; } .SOKMKBArticle pre { font-family: Courier New; } .SOKMKBArticle div { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; } .SOKMKBArticle hr { border-top-width: 1px; border-top-style: solid; border-top-color: #81b5a1; } .SOKMKBArticle a { color: #81b5a1; } .SOKMKBArticle a.two:link { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle a.two:visited { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle a.two:hover { color: #ffffff; background-color: #259b8a; } .SOKMKBArticle .button { padding: 15px 45px 15px 45px; margin-top: 20px; color: #ffffff; text-align: center; background-color: #1F8476; border: 1px solid; border-color: #1F8476; } .SOKMKBArticle .title { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #81b5a1; font-size: 30pt; } .SOKMKBArticle .hd1 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-size: 20pt; border-bottom: 1px solid; border-bottom-color: #81b5a1; text-decoration: none; } .SOKMKBArticle h1 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-size: 20pt; font-weight: normal; border-bottom: 1px solid; border-bottom-color: #81b5a1; text-decoration: none; } .SOKMKBArticle .hd2 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #68a1af; font-weight: bold; font-size: 16pt; text-decoration: none; } .SOKMKBArticle h2 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #68a1af; font-weight: bold; font-size: 16pt; font-weight: normal; text-decoration: none; } .SOKMKBArticle .hd3 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 14pt; text-decoration: none; } .SOKMKBArticle h3 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 14pt; text-decoration: none; } .SOKMKBArticle .hd4 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 12pt; text-decoration: none; } .SOKMKBArticle h4 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 12pt; text-decoration: none; } .SOKMKBArticle .hd5 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: bold; font-size: 10pt; text-decoration: bold; } .SOKMKBArticle h5 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: bold; font-size: 10pt; text-decoration: bold; } .SOKMKBArticle .hd6 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 10pt; text-decoration: underline; } .SOKMKBArticle h6 { font-family: Century Gothic, Verdana, Helvetica, Arial, sans-serif; color: #283d40; font-weight: normal; font-size: 10pt; text-decoration: underline; } .SOKMKBArticle details { font-size: 10pt; } .SOKMKBArticle details[open] summary ~ * { animation: sweep .5s; margin-top: 0; padding-top: 10px; } @keyframes sweep { 0% {opacity: 0; margin-top: -10px} 100% {opacity: 1; margin-top: 0px} } .SOKMKBArticle summary { cursor: pointer; outline: none; margin-bottom: 3px; } .SOKMKBArticle .summary { background-color: #81b5a1; font-size: 10px; color: white; cursor: pointer; padding: 5px; width: 100%; border: none; text-align: left; outline: none; vertical-align: top; } -->