---
schema_version: "1"
id: 1ecfdd2022dc32233ed22cf4c633c19a44c181bce748919aa005f93033c40cdb
title: TMF622 v4 Product Ordering Management - Outbound Notification
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/industries-integrations/comms/guides/TMF622/TMF622_notification.md
canonical_url: https://developer.salesforce.com/docs/industries/communications/guide/TMF622_notification.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: bc7fcbd0f118a67b6f5c41fb2d4eb11f0bbae4b462e2aef5d50de9e820484628
products:
  - Communications Cloud TM Forum API
  - Industries Integrations
---
# TMF622 v4 Product Ordering Management - Outbound Notification

Use TMF622 Outbound Notification API to automatically send a request to an external service order system when a product order is evaluated and decomposed. This converts the product order into a service order for orchestration and provisioning.  
Outbound notifications can be configured to be triggered for change events on the parent entity (Order) as well as for relevant sub-resources, see [Supported Sub-Resources for TMF Outbound Notifications](#supported-sub-resources-for-tmf-outbound-notifications) for the list of supported sub-resources in scope.

- `/api/notification/productOrderCreateEvent`
- `/api/notification/productOrderAttributeValueChangeEvent`
- `/api/notification/productOrderStatusChangeEvent` (status field)

The user must configure the notification framework to detect CDC events and invoke the relevant TMF Open API implementations that generate the event payloads and forward them to the target systems configured within the API.

**note:** This API has been tested with an external system using TMF-aligned customizations. It may not include all optional fields and may not work out-of-the-box with your system. Customizations will likely be required. We recommend a thorough evaluation to ensure it meets your specific needs.

## Available In

This API is available in the managed package.

## Prerequisites

- MuleSoft License required: MuleSoft Direct for Communications Cloud (add-on for Communications Cloud) or MuleSoft Anypoint Base Subscription.
- Communications cloud license required: Communications Cloud Growth.
- Org Perm check: IndustriesCPQService

## Assumptions

- The notification uses a fire-and-forget approach. Salesforce does not process or store the response in any objects. MuleSoft logs and tracks all received notifications.
- In alignment with TMF v4 standards for event notifications, the system sends the same payload, which includes the full productOrder resource and the supported related sub-resources, for all events.
- Access to the target system is authenticated using the OAuth 2.0 Client Credentials grant type.
- In case of failure when invoking the target system endpoint, the request is retried up to three times, with a two second interval between attempts.
- TMF622 v4 Inbound API response may include optional fields. According to TMF specifications, if the outbound Event Notification payload contains unsupported optional parameters, the downstream system may reject it with a 4xx error. To avoid this, tailor the payload to include only the optional fields supported by the client.
- Priority will be given to `OrderItem.AttributeSelectedValues__c`. If the V2 model is disabled, `OrderItem.vlocity_cmt__JSONAttribute__c` will be used instead.
- Salesforce and MuleSoft do not have a centralized event hub configured by default. Customers are responsible for setting up their own event hub to manage subscribers. Outbound notifications are generated and sent directly to a single, client-defined target endpoint.

The following table summarizes the change events supported for the Order entity, along with the required configurations to trigger them through the Notification Framework.

**important:** When configuring Object Integration Definitions, ensure you use the exact `RelatedFieldName` values provided in the table below.

| TMF Resource | Salesforce Entity | Scenario <br> <div style="width:230px"></div>     | changeEventType Supported | Notification Event Path <br> <div style="width:230px"></div> | RelatedFieldName                 |
| ------------ | ----------------- | ------------------------------------------------- | ------------------------- | ------------------------------------------------------------ | -------------------------------- |
| ProductOrder | Order             | Creation of a new Order record                    | Create                    | `/api/notification/productOrderCreateEvent`                  | "RelatedFieldName":"OrderNumber" |
|              |                   | Updates to attributes of an existing Order record | Update                    | `/api/notification/productOrderAttributeValueChangeEvent`    | "RelatedFieldName":"OrderNumber" |
|              |                   | Updates to the Order.Status attribute             | Update                    | `/api/notification/productOrderStateChangeEvent`             | "RelatedFieldName":"OrderNumber" |

## Sample Outbound Notification Request

This is a sample payload sent to the target system endpoint for the event Type: `ProductOrderCreateEvent`.

**note:** The event notification payload is same for all three events (`ProductOrderCreateEvent`, `ProductOrderAttributeValueChangeEvent`, `ProductOrderStatusChangeEvent`). The `eventType` value will differ between the three events.

```
{
  "id": "31bfbd00-51c2-11f0-b574-02cdb84f0a4b",
  "eventId": "000008b8-8d4c-ff0f-b1dd-21c3495e7ca0_1",
  "eventTime": "2025-06-25T12:44:51Z",
  "eventType": "ProductOrderCreateEvent",
  "correlationId": "000008b8-8d4c-ff0f-b1dd-21c3495e7ca0",
  "timeOccurred": "2025-06-25T12:44:51Z",
  "event": {
    "productOrder": {
      "PageInfo": "Page 1",
      "PageSize": 50,
      "result": {
        "description": "Product Order illustration sample",
        "id": "00000449",
        "orderDate": "2025-06-25T12:44:47.000+0000",
        "requestedCompletionDate": "2019-05-02T00:00:00.000+0000",
        "requestedStartDate": "2019-05-03T00:00:00.000+0000",
        "state": "Draft",
        "relatedParty": [
          {
            "@type": "RelatedParty",
            "id": "123457",
            "name": "Emma Williams"
          }
        ],
        "productOrderItem": [
          {
            "@type": "ProductOrderItem",
            "action": "Add",
            "id": "100",
            "orderLineItemId": "802LT000014NVrVYAW",
            "quantity": 1,
            "productOrderItemRelationship": [
              {
                "id": "101",
                "relationshipType": "bundles"
              },
              {
                "id": "102",
                "relationshipType": "bundles"
              },
              {
                "id": "103",
                "relationshipType": "bundles"
              }
            ],
            "productOffering": {
              "id": "Home_Office_Bundle_89927"
            }
          },
          {
            "@type": "ProductOrderItem",
            "action": "Add",
            "id": "101",
            "orderLineItemId": "802LT000014NVrWYAW",
            "quantity": 1,
            "productOffering": {
              "id": "Desk_89927"
            }
          },
          {
            "@type": "ProductOrderItem",
            "action": "Add",
            "id": "102",
            "orderLineItemId": "802LT000014NVrXYAW",
            "quantity": 1,
            "productOffering": {
              "id": "Chair_89927"
            }
          },
          {
            "@type": "ProductOrderItem",
            "action": "Add",
            "id": "103",
            "orderLineItemId": "802LT000014NVrYYAW",
            "quantity": 1,
            "productOrderItemRelationship": [
              {
                "id": "104",
                "relationshipType": "bundles"
              }
            ],
            "productOffering": {
              "id": "Peripheral_Kit_89927"
            }
          },
          {
            "@type": "ProductOrderItem",
            "action": "Add",
            "id": "104",
            "orderLineItemId": "802LT000014NVrZYAW",
            "quantity": 1,
            "productOffering": {
              "id": "Mouse_89927"
            },
            "product": {
              "productCharacteristic": [
                {
                  "name": "Wireless",
                  "value": false
                },
                {
                  "name": "Phone_Color_98324"
                }
              ]
            }
          }
        ],
        "note": [
          {
            "author": "Jean Pontus",
            "date": "2019-04-30T08:13:59.509Z",
            "id": "1",
            "text": "This is a TMF product order illustration"
          }
        ],
        "channel": [
          {
            "id": "1",
            "name": "Online chanel",
            "role": "Used channel for order capture"
          }
        ]
      }
    }
  }
}
```

## Outbound Event Notifications Field Mappings

| TMF Field          | TMF Type | Is it Mandatory ? | Supported | Mappings                                                                                               |
| ------------------ | -------- | ----------------- | --------- | ------------------------------------------------------------------------------------------------------ |
| id                 | string   | No                | TRUE      | Mule correlation Id                                                                                    |
| eventId            | string   | No                | TRUE      | inputPayload.eventId                                                                                   |
| eventTime          | string   | No                | TRUE      | inputPayload.commitTimestamp as UTC                                                                    |
| eventType          | string   | No                | TRUE      | `ProductOrderCreateEvent` or `ProductOrderAttributeValueChangeEvent` or `ProductOrderStateChangeEvent` |
| correlationId      | string   | No                | TRUE      | inputPayload.correlationId                                                                             |
| timeOccurred       | string   | No                | TRUE      | inputPayload.commitTimestamp as UTC                                                                    |
| event.productOrder | object   | Yes               | TRUE      | TMF622 v4 Inbound response payload                                                                     |

## Supported Sub-Resources for TMF Outbound Notifications

This section outlines the sub-resources within TMF622 for which outbound notifications can be configured for create, update, and delete operations.

**note:** Refer to [Assumptions](#assumptions) section for essential configuration guidelines and design assumptions required to enable TMF outbound notifications on these sub-resources.

For each sub-resource listed below, use the RelatedFieldName specified in the table to configure the Object Integration Definition mappings. This ensures the Salesforce Notification Framework triggers notifications accurately for the corresponding change events.

**TMF Sub-resource: ProductOrderItem  
Salesforce entity: OrderItem**

| Entity Name | Notification Trigger Scenario <br> <div style="width:230px"></div> | changeEventType | Notification Event Path <br> <div style="width:230px"></div> | RelatedFieldName    |
| ----------- | ------------------------------------------------------------------ | --------------- | ------------------------------------------------------------ | ------------------- |
| OrderItem   | Addition of an OrderItem to a new or existing Order                | Create          | `/api/notification/productOrderAttributeValueChangeEvent`    | `Order.OrderNumber` |
|             | Update to an existing OrderItem record associated with the Order   | Update          | `/api/notification/productOrderAttributeValueChangeEvent`    | `Order.OrderNumber` |
|             | Deletion of an OrderItem record associated with the parent Order   | Delete          | `/api/notification/productOrderAttributeValueChangeEvent`    | `Order.OrderNumber` |

### Sample Notification framework Payload Request

Below is a sample payload when an existing OrderItem record associated with the Order is updated.

```
[
 {
  "entityId": "802LT000014L7V7YAK",
  "entityName": "OrderItem",
  "eventId": "000003bf-04e1-f3b7-e4bd-a9437b775e58_1",
  "commitTimestamp": 1750169966000,
  "commitNumber": 1750169968435404801,
  "correlationId": "000003bf-04e1-f3b7-e4bd-a9437b775e58",
  "changedFields": {
    "Quantity": "8.0"
  },
  "changeEventType": "Update",
  "enrichedFields": {
    "Order.OrderNumber": "00000437"
  }
}
]
```

**TMF Sub-resource: productOrderItemResource.productCharacteristic  
Salesforce entity: OrderItem**

This sub-resource supports update notifications specifically for changes to JSON-based attributes in the `OrderItem` entity.

| Entity Name | Notification Trigger Scenario                                       | changeEventType | Notification Event path                                   | RelatedFieldName    |
| ----------- | ------------------------------------------------------------------- | --------------- | --------------------------------------------------------- | ------------------- |
| OrderItem   | Updates to JSON attributes of an OrderItem assocaited with an Order | Update          | `/api/notification/productOrderAttributeValueChangeEvent` | `Order.OrderNumber` |

Update event notifications must be configured based on the selected model:
Use `OrderItem.vlocity_cmt__JSONAttribute__c` if the V2 model is enabled, or `OrderItem.AttributeSelectedValues__c` if the V2 model is not enabled.
