Deploying the Component

External Fulfillment System Integration

  • PLM supports integration with CloudBlue Connect. To learn more about CloudBlue Connect, please refer to the CloudBlue Connect documentation.

    Note: The CloudBlue Connect Extension is not required for that integration.

  • You must prepare the following items:

    • An API token for the CloudBlue Connect API with the following properties:

      • Extension: Custom

      • Permissions: All

      To prepare that API token, follow these instructions.

    • The Hub Instance ID of the hub that is intended for PLM integration. If you already have a hub for your CloudBlue Commerce installation, you must use its Hub Instance ID. Otherwise, create a hub with the following properties:

      • Name: The name of that hub. For example: PLM integration
      • Type: API

      • Instance ID: The Hub Instance ID of that hub. You can specify any string as a value. For example, specify a GUID.

      • Description: The description of that hub.

      Important: A Hub Instance ID and a Hub ID are different items. You must prepare the Hub Instance ID of your hub.

Kubernetes Resource Requirements

Container CPU cores RAM in GiB
inhouse-products 1.0 2.0
camunda 0.5 1.0

Notes:

1. These resources are required to support up to 1000 products or 10,000 subscriptions.

2. Every 1000 products or 10,000 subscriptions require 10 GB of storage on your database server.

Required CloudBlue Commerce Components

The PLM component must be installed together with other core components:

To support specific products and scenarios, the following components must be installed:

  • Rating Engine

    • 1.8 or later to use NCE-specific policies

    • 1.10 or later to use cancelation penalty

    • 1.14 or later to use auto-renewal settings for switches and scheduled changes

  • UX1 Marketplace

    • 6.3 or later to place sales orders via UI

    • 6.7.1419 to display Marketing Materials

  • UX1 Subscription Management

    • 4.3 or later to validate change order parameters

    • 4.7 or later to use scheduled changes

For placing orders through API:

  • Providers who already integrated with CloudBlue Commerce and place orders through APS API may use the same API calls. However, the request payload must be adjusted according to a service-specific list of parameters.

  • For providers who consider integrating with CloudBlue Commerce, we recommend using Simple API 1.6 or later.

Firewall Requirements

The connections in the table must be allowed for the PLM component to work.

From To Port
The PLM component Your PostgreSQL database server 5432
The PLM component The CloudBlue Connect API 443
The PLM component Your BSS application server 5224 (the BSS XML-RPC API)
Your OSS management node The PLM component 8081 (APS)
The PLM component Your OSS management node 6308 (APS)

Preparing the PLM Component Database

The PLM component stores its data in a PostgreSQL database. You can place that database:

The database of the PLM component must be accessible from your Kubernetes cluster:

  • An on-premises environment:

    1. On your database server, add the network of your Kubernetes cluster nodes to ~postgres/11/data/pg_hba.conf:

      host    all     all     CLUSTER_NODE_NETWORK/NETMASK       md5
    2. Reload the PostgreSQL service:

      service postgresql-11 reload
  • Azure: Please refer to the Azure documentation to learn how to configure access from your Kubernetes cluster to your database server.

To create a database user and a database for the component, use the following SQL commands:

CREATE USER "inhouse-products-user" WITH PASSWORD 'PASSWORD_OF_USER';
CREATE DATABASE "inhouse-products-database" WITH OWNER "inhouse-products-user" ENCODING "UTF8" LC_COLLATE "en_US.UTF-8" LC_CTYPE "en_US.UTF-8";

Deployment

To deploy the component, complete the following steps:

  1. Perform the instructions of this article.

  2. On your management node, make sure that the maximum POST sizes of HTTPS listeners are set to 100 MB:

    1. Check the current values by executing these commands:

      sh /usr/local/pem/wildfly-21.0.1.Final/bin/jboss-cli.sh --connect -c '/subsystem=undertow/server=aps-service-server/https-listener=aps-service-https:read-attribute(name=max-post-size)'
      sh /usr/local/pem/wildfly-21.0.1.Final/bin/jboss-cli.sh --connect -c '/subsystem=undertow/server=pa-rest-server/https-listener=pa-rest-https:read-attribute(name=max-post-size)'
    2. If the current values are less than 100 MB, set the new values by executing these commands:

      sh /usr/local/pem/wildfly-21.0.1.Final/bin/jboss-cli.sh --connect -c '/subsystem=undertow/server=aps-service-server/https-listener=aps-service-https:write-attribute(name=max-post-size,value=100000000)'
      sh /usr/local/pem/wildfly-21.0.1.Final/bin/jboss-cli.sh --connect -c '/subsystem=undertow/server=pa-rest-server/https-listener=pa-rest-https:write-attribute(name=max-post-size,value=100000000)'
    3. After you set new values, execute this command for the changes to take effect:

      service pau restart
  3. Ensure that the component can access the BSS XML-RPC API. To do this, perform the following steps on your BSS application node:

    1. Add the following IP addresses to /usr/local/bm/conf/ip_access.db:

      • All IP addresses of your Kubernetes cluster nodes

      • All IP addresses intended for pods of your Kubernetes cluster

      To prepare the content for the ip_access.db file, you can use this Python script:

      print("\n".join(['10.244.%s.0 = true' % i for i in range(1, 254)]))
    2. Restart BSS by executing this command:

      service pba restart
  4. Ensure that SSL support is turned on for the BSS XML-RPC API. To do this, follow these instructions.

  5. Run this command on your management node to create the inhouse-products-db secret:

    kubectl create secret generic inhouse-products-db --from-literal=dbname=DATABASE_NAME --from-literal=host=DATABASE_SERVER_NAME --from-literal=password='DATABASE_USER_PASSWORD' --from-literal=username=DATABASE_USER_NAME

    where:

    • DATABASE_NAME is the name of the component's database.

    • DATABASE_SERVER_NAME is the host name or IP address of your database server.

      Important: The host name of your database server must be resolvable through DNS in your Kubernetes cluster's pod.

    • DATABASE_USER_PASSWORD is the password of the component's database user.

    • DATABASE_USER_NAME is the user name of the component's database user.

  6. Ensure that Helm 3.5.4 or later is installed on your management node.

    Note: In the CloudBlue Commerce documentation, command options are provided for Helm 3. Helm 2 can also be used, but there may be differences in command options. If you already have Helm 2 installed, you can either migrate from it to Helm 3 or take into account differences in command options. For example, if a Helm 3 command cannot be performed due to such differences, you can find suitable Helm 2 command options.

  7. Run this command on your management node to install the component:

    helm install a8n/inhouse-products --debug --name inhouse-products --wait --timeout 900 \
    --set oauthkey=`uuidgen` \
    --set oauthsecret=`uuidgen` \
    --set connect_apikey='API_KEY_THAT_YOU_PREPARED' \
    --set connect_hub_instance_id=HUB_INSTANCE_ID_THAT_YOU_PREPARED \
    --set dockerrepo="odindevops-a8n-docker.jfrog.io" \
    --set connect_apibaseurl=https://api.connect.cloud.im/public/v1

    Important:

    - The format of your API token must be ApiKey SU-DDD-DDD-DDD:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, where X is an alphanumeric character, and D is a numeric character.

    - A Hub Instance ID and a Hub ID are different items. You must specify the Hub Instance ID of your hub. For example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, where X is an alphanumeric character.

    - If access to the Internet is restricted in your environment and the CloudBlue Connect API is not accessible from your Kubernetes cluster, you must perform the instructions in Appendix: Configuring Access to the CloudBlue Connect API Through a Proxy Server.

Note: During the deployment, Camunda, a third-party software component used by PLM, is automatically installed.

Upgrade

To upgrade the component to a newer version, complete these steps on your management node:

  1. Ensure that Helm 3.5.4 or later is installed.

    Note: In the CloudBlue Commerce documentation, command options are provided for Helm 3. Helm 2 can also be used, but there may be differences in command options. If you already have Helm 2 installed, you can either migrate from it to Helm 3 or take into account differences in command options. For example, if a Helm 3 command cannot be performed due to such differences, you can find suitable Helm 2 command options.

  2. Make sure the required Helm chart is in the repository:

    helm repo update
    helm search a8n/inhouse-products --version NEW_VERSION
  3. Upgrade the component:

    helm upgrade inhouse-products a8n/inhouse-products --version NEW_VERSION --timeout 15m

Hiding Menu Items

The Products and Order Fulfillment menu items are visible for resellers. They are displayed empty and we recommend that you hide them. To hide these menu items, complete the following steps:

  1. Log in to the classic PCP as a provider,

  2. Go to Operations > Settings > UX1 Navigation.

  3. Select the following UI controls:

    • navigation@http://com.odin.platform/inhouse-products#fulfillment

    • view@http://com.odin.platform/inhouse-products#fulfillment

    • view@http://com.odin.platform/inhouse-products#fulfillmentView

    • navigation@http://com.odin.platform/inhouse-products#productInventoryVue

    • item@http://www.parallels.com/pa/pa-core-services#products

  4. Click Hide.