Published Solutions
-
Can't import PPR in PLM for Software Subscriptions
Original Publishing Date: 2022-09-19 Symptoms When importing xls PPR for NCE PLM products, there is an error: "Failed to parse column 'com.odin.platform.excel.ejb.excelwizard.ExcelConfigSheets$SheetField@236ed554' on row '2' of sheet 'DownsizePolicies': unknown action 'Prohibited'". Cause The feature to use the "Prohibited" option in the DownsizePolicies tab is a new feature for PLM (In house products) 1.4-186. Resolution Upgrade Inhouse-products to 1.4-186 version.
-
[PLM] Following products were not found for account #1
Original Publishing Date: 2022-09-29 Symptoms Importing new PPR file the following error shows up in provider UX1: Following products were not found for account #1: Power Apps per app plan (1 app or portal), Common Area Phone, Operator Connect Mobile Cause There are two possible causes of this error: The products in the error don't exist on product catalog, most probably due to the fact that the product catalog is not up to date. This can be checked from UX1 in the Portfolio section -> External catalogs for the product being imported. If the 'Version in portfolio' is different from 'Available version', then an update of the product is required. The product names in the error do not exist in the connect provider portal anymore, or never existed, this need to be confirmed in Connect portal. Resolution Depending on the cause of the issue: If the product is not up to date, it is needed to update the product catalog from the provider UX1, in Portfolio -> External Catalog, find the product being imported and click on it, then click on Update button and want for the task to be completed before import the PPR file again. In case the product do not exist on Connect side or the name has changed, then the PPR file must be reconfigured based on the new product names and convections on connect portal.
-
[Connect] Import existing Microsoft subscription based on a PLM Plan
Original Publishing Date: 2022-09-29 Symptoms When a subscription based on a PLM Plan is in terminated status in CB Commerce side, with no provisioning pending task, but in CB Connect side is active and it's also active in Microsoft Partner Center, the only way to recreate the subscription in Commerce is by importing it from MSFT PC. The procedure is based in two main steps, which are: Activate off line mode and process a Cancelation request for the Asset in Connect Portal Import existing MSFT subscription based on a PLM Plan. Cause For different reasons, a subscription can be Active in Connect portal, but still not completed and in Terminated in Commerce side, as for example when the provisioning task for a Sales Order was canceled manually after a LRO period. In this case, the Subscription can be in Terminated status in Commerce side but yet Active in Connect portal. Resolution Steps to activate off line mode and process a Cancelation request for the Asset in Connect Portal Note: If there are existing Connect ID's in the "Processor_Skip_List", validate there are not any other migration requests currently active. Note: Do Not overwrite any current list of Connect ID's from the list. Instead append new ID's to the end. Note: Adding Connect ID's should be done with caution, not to have any typos. Add subscription and account details from Connect in the "processor_skip_list" configuration: Add Asset ID or Asset request ID or Customer ID in the processor_skip_list Marketplace parameter in Connect Provider Portal. This will ensure that subsequent cancellation orders will not interrupt the subscription: Open Provider Portal Products NCE Microsoft 365 Commercial Configuration Filter >> Processor Skip List You can also filter for the specific Marketplace that the subscription is located in. NOTE: Do Not overwrite any current list of Connect ID's from the list. Instead append new ID's to the end. If there will be multiple subscriptions, you can multiple entries in the processor_skip_list but if you have reimport scheduled then avoid putting customer id in the list and only use Asset ID They are added in plain text, separated with commas. Cancel subscription from UX1 Place and process the cancellation order for Azure NCE subscription from UX1. Approve suspend request from Microsoft vendor portal. It is possible that you need to fill in the Entitlement ID before approving it. Please use the MS Office 365 Subscription ID. It is recommended to use the same Template ID that was applied during the purchase PR. Make sure CMP order gets completed. Once subscription is terminated, approve the Cancel request from Microsoft vendor portal. Example PR-0000-0000-0001-001, PR-0000-0001-0000-002, AS-0000-0000-0001, TA-0000-0000-0001 Steps to Import existing MSFT subscription based on a PLM Plan: For this step some Prerequisites are needed: Postman to be installed and ready. Library(Platform.postman_collection.json) attached to this KB to be downloaded and imported to Postman. Date when procedure is done should match with renewal date of the subscription in Microsoft's Partner Center. How to obtain each parameter to prepare the request: Authentication. In PostMan, we need to fill the current values for variables under parent container: Platform. The following parameters can be found in Resellers RCP/UX1 portal. You will need to open browser's developer tools and check any of the AJAX call launched to APS Controller API. ***/aps/2/resource/*** (Headers, Request Headers) hub bw_id APS-Token Cookie Estimate or Place Order calls: accountId: APS ID of the customer. It can be found using the call "Get Customer" filtering by CBCommerce Customer ID. planId: APS ID of the Service Plan. It can be found using the call "Get Service Plans" filtering by the Service Plan Name. period: It is the subscription (commitment) period. It is not the billing term. From the call "Get Service Plans", this is shown under the subscriptionPeriods section. resourceId: The guid for the resource. It is also listed in the response of "Get Service Plans" under the section resourceRates. amount: Desired number of licenses. startDate: Date when the subscription was created in MSPC. expirationDate: Date when the subscription expires. type: It should be always "http://aps-standard.org/inhouse-products/tenant/1.0" for all the NCE PLM plans Microsoft domain: long domain name for the MSFT customer account based on .onmicrosoft.com Microsoft customer id: GUID format Microsoft subscription id: GUID format Microsoft order id - from Order History - 12 characters Procedure Gather data required and fill in the library variables in Postman. Use the GET requests (Get customer (id,), Get Service Plans, Get Types) to obtain the missing parameters of the POST Estimate Migration Order with ActiveParams PLM. If result is correct (no exception or empty response), use same body with Place Migration Order with ActiveParams PLM When a new order is placed, the processor will check if the migration_info_object parameter contains data. If that is the case, the order will be considered as an import and the processor will use the information provided in the such parameter to populate the corresponding fulfillment parameters. Before approving the order, it will be verified that all the information relative to the offer, seat quantity, billing cycle and term is the correct, otherwise will fail the order. Processor will get Customer subscriptions and based on the csp_order_id and suscription_id provided will verify the offers ordered. In case no domain is given, to try to obtain the domain the processor will use Get customer by Id API in case onmicrosoft.com associated domain can be obtained. Note: The provided customer id, subscription id and order id, as well as other attributes such as the SKU id, quantity, billing frequency and billing terms will be validated to ensure that the data in the order matches the information in the existing Microsoft subscription to be imported. If the validation is not successful the order will be failed. This action is not done in one time billing orders such as Perpetual software
-
RequestError: Unable to load getPartialUpgradeOperations
Original Publishing Date: 2022-10-07 Symptoms Reseller trying to access the "Partial Upgrade Tool" in Operations : Error : RequestError: Unable to load /aps/2/resources/6e3d86d0-c644-4739-a1db-f501d30dfcb9/getPartialUpgradeOperations status: 500 Missing privilege http://com.a8n.cbc/partialupgradetool#partial-upgrade Cause Default behavior. Resolution A provider can manage access to Partial Upgrade Tool for staff members by using the Partial Upgrade privilege. This privilege is enabled by default only for the Account Administrator role. For general instructions on configuring privileges, refer to Configuring a Set of Privileges. https://docs.cloudblue.com/cbc/21.0/Operations-Resellers-Guide/Configuring-Set-of-Privileges.htm
-
Domain CAA record added on PowerDNS server not propagated globally
Original Publishing Date: 2022-10-09 Symptoms A CAA record was added to a domain either through UX1 by the owner of the domain or through PCP by Provider. Example: Domain name Flag Tag Value example.com. 0 issue ca.example.net A check on the DNS servers which run on PowerDNS shows that the record was also added: Example: [root@dns1 ~]# pdnsutil list-zone example.com | grep CAA example.com 3600 IN CAA 0 issue “ca.example.net However, checking using (for example) dig returns no CAA record which shows that the record does not propagated (or more accurately cached) globally anytime at all. Example: [/home/myuser ~]# dig caa nsnk-orgel.server-queen.jp +short ✔ Eample of request with expected answer: [/home/myuser ~]# dig caa google.com +short 0 issue "pki.goog" Cause The DNS servers are running on PowerDNS version less that version 4.0.0. PowerDNS only starts to support CAA record (type 257) per se since version 4.0.0. Official upgrade notice from PowerDNS can be obtained from here. To check which PowerDNS version installed on a certain DNS server, please use this command: pdns_server --version Resolution CloudBlue Commerce 20.5 supports PowerDNS 4.1.4. It is officially stated in the CloudBlue Commerce 20.5 documentation here. To upgrade to this version please follow instructions from a KCS article here.
-
Disable old login URL with no MFA
Original Publishing Date: 2022-10-10 Question Provider is asking on how to disable login without MFA at https://{customer url}/servlet/Turbine/frm/single/ ? Answer Access can be disabled in their apache .htaccess brand settings. Resolution https://{customer url}/servlet/Turbine/frm/single/ in all possible URL access brands will need to be disabled in brand .htaccces. The following code will apply mentioned change in all brands inside branding UI: kubectl get po | grep "branding-ui-cluster" | awk '{print $1}' kubectl exec -it -- bash for brand in $(ls /var/www/brands); do ls /var/www/brands/$brand/.htaccess if [[ $(sed -n '2p' /var/www/brands/$brand/.htaccess) =~ ^$ ]] ; then sed -i '2i RewriteRule ^servlet/Turbine/frm/single - [F]' /var/www/brands/$brand/.htaccess fi done If changes are not still effective after this httpd service could be reloaded. Once platform is upgraded this will need to be re-run since it will be wiped out. There is an on-going PFR to fulfill this requirement at #PFR-2258.
-
Web Hosting Plesk - how Subscription Synchronization works?
Original Publishing Date: 2022-10-11 Question What are the changes/impact to the subscriptions after synchronization in OA > Service templates > WHP ST > Synchronization? The question is related to this statement from the official documentation: If you make any changes to a service template later, you will need to synchronize the changes with the subscriptions that were created based on it. The synchronization involves the reconfiguration of multiple websites. Answer The changes depend on the service template the subscription is based on. When the Synchronize button is clicked, 3 rest calls as below will be executed: find resources implementing http://www.odin.com/shm/template/1 requests to synchronize returned the resources Example from Plesk service template resource: Request URL: https://example.com/aps/2/resources/af9498c9-3ef8-4d46-bbb1-48a59a9df290/resources?implementing(http%3A%2F%2Fwww.odin.com%2Fshm%2Ftemplate%2F1) [ { "aps": { "modified": "2020-10-20T08:51:22Z", "id": "526852a6-6ad3-4675-8073-49c7c135ed6d", "type": "http://www.odin.com/shm/template/plesk/mail/1.0", "status": "aps:ready", "revision": 3 }, "configuration": { "nonExistingMail": { "action": "reject", "forwardTo": "", "bounceMessage": "" } }, "properties": [ { "label": "ウェブメール", "name": "webmail", "class": "setting", "type": "enum", "value": "roundcube" }, { "name": "manageSpamFilter", "class": "permission", "type": "boolean", "value": "true" }, { "name": "manageAntivirus", "class": "permission", "type": "boolean", "value": "true" } ] }, { "ipv6Address": "none", "aps": { "modified": "2022-08-18T02:40:50Z", "id": "7a50426c-b302-4b60-a1b3-ab089d050ffe", "type": "http://www.odin.com/shm/web/template/apache/1.0", "status": "aps:ready", "revision": 17 }, "dbConfiguration": { "mode": "local" }, "appsFilter": [ "WordPress" ], "appsFilterEnabled": true, "ipv4Address": "shared", "technicalDomainName": "w{WEBSPACE_ID}.{PARENT_DOMAIN}", "properties": [ { "name": "manage_sh_access", "class": "permission", "type": "boolean", "value": "false" }, { "name": "manage_not_chroot_shell", "class": "permission", "type": "boolean", "value": "false" }, { "name": "manage_phosting", "class": "permission", "type": "boolean", "value": "true" }, { "name": "manage_php_version", "class": "permission", "type": "boolean", "value": "true" }, { "name": "manage_php_settings", "class": "permission", "type": "boolean", "value": "true" }, { "name": "manage_crontab", "class": "permission", "type": "boolean", "value": "true" }, { "name": "manage_anonftp", "class": "permission", "type": "boolean", "value": "false" }, { "name": "allow_local_backups", "class": "permission", "type": "boolean", "value": "true" }, { "name": "allow_ftp_backups", "class": "permission", "type": "boolean", "value": "false" When the synchronization is started, the following types of tasks are scheduled (per every webspace/site/mail domain) : Configuring "SiteWeb" for APS application WebHosting Plesk Configuring "WebSpace" for APS application WebHosting Plesk Configuring "MailDomain" for APS application WebHosting Plesk Default behaviour: Web Hosting Plesk does not check phpSettings by permissions and always overwrites them to a new value in the service template. The following parameters will be changed to the new/default values from the service template: PHP Setting Hosting Parameter Database configurations Default FTP user (starts with sys_*) The following parameters will be ignored/not be changed by the synchronization: Default FTP password for user sys_* Additional FTP users Website content Impact: The Apache web server may be restarted every time an Apache-based website is reconfigured. Thus, if a mass update is done, there will be many restarts of the Apache web server, and the corresponding websites will be unavailable for a relatively long period of time. IMPORTANT: there is an existing issue with Web Hosting Plesk subscription synchronization #WHM-10757 which causes end-customers loosing their custom PHP settings of the websites on every synchronization of a Web Hosting Plesk service template with its subscriptions. It means that all custom PHP settings must be re-configured after every synchronization.
-
[PLM] Reseller Authorization 'Updating' Status
Original Publishing Date: 2022-10-17 Symptoms For a newly created Reseller, from UX1 CP a Reseller Authorization is pending for a NCE product and shows status Updating: Cause There is a missing configuration in the CB Connect Tier Configuration for that Product. From CB Connect portal, last note for the Tier Configuration Request describes the missing information that must be completed, f.e: Token for eaas instance. The vendor needs to enter the MP-83786_SEED parameter value to process the request. Task reschedule 1 hour to check if the issue has been fixed. Resolution The vendor must completed the missing info for the Tier Configuration Request following documentation here: https://connect.cloudblue.com/community/modules/tier-config/user-interface/
-
Users cannot change passwords - Can't update idp user password 'null'
Original Publishing Date: 2022-10-19 Symptoms Some users are unable to change their passwords in UX1. They get an error: Can't update idp user password 'null' Password also cannot be reset from PCP by any user, even with admin level access. Cause IDP was enabled in the platform, however IDP migration task has failed or is still running: It's also described in docs - https://docs.cloudblue.com/cbc/20.5/premium/content/Identity-Provider/Deploying-IDP.htm Quote: Limitation: Changing user passwords during migration is not possible. Resolution The recommendation is to complete the IDP initialization, i.e. wait for the above task to complete. Note: On large environments the task may take several days to complete. Workaround: If there is no time to wait for the task to complete, IDP can be disabled to restore the functionality.
-
How to delete obsolete C++ plugins from your CloudBlue Commerce installation
Original Publishing Date: 2022-10-28 Cause CloudBlue Commerce installations can have C++ plugins deployed. Starting from CloudBlue Commerce 21.0, these plugins are no longer supported. Before upgrading CloudBlue Commerce to version 21.0, you must delete C++ based plugins from your current CloudBlue Commerce installation. Resolution To delete these plugins from a CloudBlue Commerce installation, complete the following steps. Access the BSS Application node through SSH. Create temp directory Download the remove_custom_plugins.py script to the temp directory. Run the script using the following command: /usr/local/bm/tools_py/patcher.py remove_custom_plugins.py This script will clean your CloudBlue Commerce installation of the obsolete C++ based plugins. After that, you can upgrade your installation to version 21.0.