> ## Documentation Index
> Fetch the complete documentation index at: https://grandcentral.backbase.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Reference

> Configuration properties, operations, events, and error mapping for the OBPM connectors.

The OBPM integration is delivered as a family of connectors that integrate with Oracle Banking Payments Manager (OBPM) and Flexcube. The payment, direct debit mandate, and foreign exchange connectors are outbound. The payment inbound connector consumes OBPM JMS notifications and publishes events to the Sync Hub ASB producer. For setup steps, see [Get started](/connectors/payments/obpm/get-started).

For high-volume batch payments (pain.001 file generation and pain.002 status processing), see the [OBPM Batch Connector reference](/connectors/payments/obpm-batch/reference).

| Connector                                | Property file                            | Purpose                                              |
| :--------------------------------------- | :--------------------------------------- | :--------------------------------------------------- |
| `gc-obpm-payment-connector`              | `payments-v0.values.yaml`                | Outbound payments, including payee contact sync      |
| `gc-obpm-payment-inbound-connector`      | `inbound-payments-v0.values.yaml`        | Inbound payment status updates and payment ingestion |
| `gc-obpm-direct-debit-mandate-connector` | `ddmandate-payment-v0.values.yaml`       | Outbound direct debit mandate operations             |
| `gc-flexcube-foreign-exchange-connector` | `foreignexchange-payment-v0.values.yaml` | Outbound foreign exchange rate retrieval             |

## Configuration properties

### Values to obtain from Oracle

Obtain the following values from Oracle and set them in `values.yaml`. These values are environment-specific, so they have no default.

| Property            | Description                                            |
| :------------------ | :----------------------------------------------------- |
| `obpm.baseUrl`      | Target API endpoint for the OBPM gateway.              |
| `obpm.source`       | Unique organizational identifier assigned by OBPM.     |
| `obpm.userId`       | User ID of the client connecting to OBPM.              |
| `obpm.rest.baseUrl` | Target endpoint for the OBPM REST API.                 |
| `flexcube.baseUrl`  | Target API endpoint for the Flexcube gateway.          |
| `flexcube.source`   | Unique organizational identifier assigned by Flexcube. |
| `flexcube.userId`   | User ID of the client connecting to Flexcube.          |

The connectors also require JMS connection details and credentials from Oracle. Set the non-secret JMS properties in the connector `values.yaml` files, and store the JMS username, password, and certificates in the SOPS secrets described in [SOPS secrets](#sops-secrets).

### Common properties

Set these properties in `values.yaml`. They apply across the connectors that call OBPM and Flexcube. Some connectors require only the OBPM or only the Flexcube properties.

| Property           | Description                                                     | Default |
| :----------------- | :-------------------------------------------------------------- | :------ |
| `obpm.branch`      | OBPM branch identifier.                                         | `000`   |
| `obpm.ubsComp`     | OBPM Universal Banking Solution (UBS) component identifier.     | `FCUBS` |
| `flexcube.branch`  | Flexcube branch identifier.                                     | `000`   |
| `flexcube.ubsComp` | Flexcube Universal Banking Solution (UBS) component identifier. | `FCUBS` |

### gc-obpm-payment-connector

Set these properties in `payments-v0.values.yaml`. This connector handles all outbound payments and payee contact synchronization.

| Property                                 | Description                                                                                                                         | Default                                                       |
| :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------ |
| `retryFlag`                              | Enable automatic request retries on connection failure.                                                                             | `false`                                                       |
| `cxf.client.ssl.ca.cert.path`            | Optional. Server certificate path for mutual TLS.                                                                                   | N/A                                                           |
| `cxf.client.ssl.keystore.path`           | Optional. Client certificate path for mutual TLS.                                                                                   | N/A                                                           |
| `cxf.client.ssl.keystore.type`           | Optional. Client keystore certificate type, for example `PKCS12`.                                                                   | N/A                                                           |
| `http.client.ssl.ca.cert.path`           | Optional. Certificate for SSL pinning on REST services.                                                                             | N/A                                                           |
| `obpm.rest.fetchBankDetailsByIBANApiUri` | REST API path for IBAN validation and bank details lookup.                                                                          | `/api-gateway/api/s2/obpmrest/payments/IbanValidationService` |
| `jmsFlexCubeUrl`                         | JMS endpoint URL for payee contact sync.                                                                                            | N/A                                                           |
| `jms.connection.factory`                 | JMS connection factory name for payee contact sync.                                                                                 | `NotifQCF`                                                    |
| `jms.queue.name`                         | JMS queue name for payee contact sync.                                                                                              | `PAYEE_QUEUE_EXT`                                             |
| `jms.send.persistent.required`           | Persist messages for reliability.                                                                                                   | `true`                                                        |
| `jms.send.retry.enabled`                 | Enable retry logic when sending messages.                                                                                           | `true`                                                        |
| `obpm.contact.sync.domesticCountryCode`  | ISO country code that routes a payee sync as domestic when the payee bank country matches. All other payees route as international. | `ZZ`                                                          |

<Info>
  The connector defaults `obpm.contact.sync.domesticCountryCode` to `ZZ`, a non-assigned ISO code, so no real payee is treated as domestic until you configure otherwise. Set this property per tenant in your deployment values, for example `GB` or `US`.
</Info>

### gc-obpm-payment-inbound-connector

Set these properties in `inbound-payments-v0.values.yaml`. This connector consumes OBPM JMS notifications and publishes events to the Sync Hub ASB producer. Inbound connectors do not require the common `values.yaml` properties.

| Property                                          | Description                                                                                                                                                                                           | Default                    |
| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------- |
| `jmsFlexCubeUrl`                                  | JMS URL to connect to OBPM.                                                                                                                                                                           | N/A (environment-specific) |
| `jms.queue.route.mapping`                         | Maps inbound JMS queues to Camel routes as comma-separated `queueName>direct:routeName` pairs, for example `NOTIFQueue>direct:dispatchPaymentNotification,SI_NOTIF_EXT>direct:processSINotification`. | N/A (environment-specific) |
| `obpm.inbound.route.discriminator.xpath.1`        | XPath for the first routing discriminator read from each notification, for example `/Document/CstmrCdtTrfInitn/NotifTlr/UserId/text()`.                                                               | N/A (environment-specific) |
| `obpm.inbound.route.discriminator.xpath.2`        | XPath for the second routing discriminator, for example `/Document/CstmrCdtTrfInitn/NotifTlr/AuthId/text()`.                                                                                          | N/A (environment-specific) |
| `obpm.inbound.route.status.discriminator.value.1` | Expected value of the first discriminator for a payment status update.                                                                                                                                | N/A (environment-specific) |
| `obpm.inbound.route.status.discriminator.value.2` | Expected value of the second discriminator for a payment status update.                                                                                                                               | N/A (environment-specific) |
| `jms.provider`                                    | Optional. JMS listener provider for the inbound connector.                                                                                                                                            | `weblogic`                 |
| `jms.connection.factory`                          | JMS connection factory name.                                                                                                                                                                          | N/A (environment-specific) |
| `jms.ssl.enable`                                  | Enable SSL trust for the JMS connection.                                                                                                                                                              | `false`                    |
| `jms.ssl.trustStore`                              | Path to the SSL truststore file. Required only when `jms.ssl.enable` is `true`.                                                                                                                       | N/A                        |
| `jms.health.check.enabled`                        | Enable periodic JMS connection health checks.                                                                                                                                                         | `true`                     |
| `asb.producer.apiUri`                             | Callback URI of the Sync Hub ASB producer.                                                                                                                                                            | N/A (environment-specific) |
| `asb.event.topic`                                 | ASB topic for payment status update events, for example `payment-status`.                                                                                                                             | N/A (environment-specific) |
| `asb.payment.status.event.type`                   | ASB event type for payment status updates.                                                                                                                                                            | N/A (environment-specific) |
| `asb.payment.status.event.source`                 | ASB source for payment status update events.                                                                                                                                                          | N/A (environment-specific) |
| `asb.payment.status.event.version`                | ASB schema version for payment status update events.                                                                                                                                                  | N/A (environment-specific) |
| `asb.event.topic.payments.data`                   | ASB topic for recurring payment, future-dated, and off-channel ingestion events, for example `payments-data`.                                                                                         | N/A (environment-specific) |
| `asb.payments.data.event.type`                    | ASB event type for payment ingestion events.                                                                                                                                                          | N/A (environment-specific) |
| `asb.payments.data.event.source`                  | ASB source for payment ingestion events.                                                                                                                                                              | N/A (environment-specific) |
| `asb.payments.data.event.version`                 | ASB schema version for payment ingestion events.                                                                                                                                                      | N/A (environment-specific) |
| `retryFlag`                                       | Enable retries on ASB connection failures.                                                                                                                                                            | `false`                    |
| `jms.recover.exception.http.enable`               | Enable retries on JMS connection failures.                                                                                                                                                            | `true`                     |
| `jms.recover.exception.http.statuses`             | HTTP status codes that trigger recovery.                                                                                                                                                              | `429,500,502,503,504`      |
| `jms.recover.exception.socket.enable`             | Enable recovery for socket exceptions.                                                                                                                                                                | `true`                     |
| `jms.recover.exception.general.enable`            | Enable recovery for general exceptions.                                                                                                                                                               | `false`                    |
| `jms.error.http.acknowledge`                      | Acknowledge messages on HTTP errors. Keep `false` to avoid data loss.                                                                                                                                 | `false`                    |
| `redelivery.backOffMultiplier`                    | Backoff multiplier for redelivery attempts.                                                                                                                                                           | `2`                        |
| `redelivery.delay`                                | Initial delay between redelivery attempts, in milliseconds.                                                                                                                                           | `200`                      |
| `redelivery.maximumRetries`                       | Maximum number of redelivery attempts.                                                                                                                                                                | `3`                        |

The connector routes inbound notifications from two separate JMS queues, mapped by `jms.queue.route.mapping`. The main notification queue routes to `direct:dispatchPaymentNotification`, which inspects each notification and, when both discriminator values match the configured status values, forwards it to `direct:updatePaymentStatus` for a payment status update. Otherwise it forwards the notification to `direct:processPaymentIngestion` for off-channel or future-dated payment ingestion. A separate standing-instruction notification queue routes directly to `direct:processSINotification` for recurring payment schedule updates. Both ingestion routes publish to the `payments-data` event family.

<Warning>
  Keep `jms.error.http.acknowledge` set to `false`. Setting it to `true` acknowledges messages even on HTTP errors, which can result in data loss.
</Warning>

### gc-obpm-direct-debit-mandate-connector and gc-flexcube-foreign-exchange-connector

Set this property in `ddmandate-payment-v0.values.yaml` and `foreignexchange-payment-v0.values.yaml`. The direct debit mandate connector requires only the OBPM common properties; the foreign exchange connector requires only the Flexcube common properties.

| Property    | Description                                             | Default |
| :---------- | :------------------------------------------------------ | :------ |
| `retryFlag` | Enable automatic request retries on connection failure. | `false` |

## SOPS secrets

### SOPS secret: `obpm-outbound-secrets`

| Variable                           | Description                                                          | Environmental Key |
| :--------------------------------- | :------------------------------------------------------------------- | :---------------- |
| `server.crt`                       | Optional. Server certificate for mutual TLS or REST trust.           | N/A               |
| `client.p12`                       | Optional. Grand Central certificate for mutual TLS on SOAP services. | N/A               |
| `cxf.client.wsse.password`         | Optional. SOAP WS-Security password.                                 | N/A               |
| `cxf.client.ssl.keystore.password` | Optional. Keystore password for mutual TLS.                          | N/A               |

### SOPS secret: `obpm-contact-sync-jms-secret`

| Variable                            | Description                                                        | Environmental Key |
| :---------------------------------- | :----------------------------------------------------------------- | :---------------- |
| `flexcube.jms.security.principal`   | JMS username for payee contact sync.                               | N/A               |
| `flexcube.jms.security.credentials` | JMS password for payee contact sync.                               | N/A               |
| `server.crt`                        | Optional. Server CA certificate for SSL trust with the JMS server. | N/A               |

### SOPS secret: `obpm-inbound-secrets`

| Variable                            | Description                                                            | Environmental Key          |
| :---------------------------------- | :--------------------------------------------------------------------- | :------------------------- |
| `jms.ssl.trustStorePassword`        | Optional. Truststore password when the JMS connection needs SSL trust. | N/A                        |
| `flexcube.jms.security.principal`   | JMS username to authenticate.                                          | `jms-security-principal`   |
| `flexcube.jms.security.credentials` | JMS password to authenticate.                                          | `jms-security-credentials` |

## Supported operations

The OBPM connectors expose the Grand Central Unified API v1 and v2. For the operation-to-endpoint tables per version, see [Overview](/connectors/payments/obpm/overview). For the full contract, see the [unified API specifications](/connectors/reference/unified-api-specifications).

## Events

Of the four connectors, only the payment inbound connector publishes or consumes events. The payment, direct debit mandate, and foreign exchange connectors are synchronous and don't publish or consume events. For batch payment events, see the [OBPM Batch Connector reference](/connectors/payments/obpm-batch/reference).

### gc-obpm-payment-inbound-connector

This connector consumes OBPM payment notification JMS messages and publishes payment status and payment ingestion events to the Sync Hub ASB producer. It publishes the following events:

| Event                                                                           | Type property                   | Source property                   | Version property                   | Topic property                  |
| :------------------------------------------------------------------------------ | :------------------------------ | :-------------------------------- | :--------------------------------- | :------------------------------ |
| Payment status update                                                           | `asb.payment.status.event.type` | `asb.payment.status.event.source` | `asb.payment.status.event.version` | `asb.event.topic`               |
| Payment ingestion (recurring schedules, future-dated, and off-channel payments) | `asb.payments.data.event.type`  | `asb.payments.data.event.source`  | `asb.payments.data.event.version`  | `asb.event.topic.payments.data` |

It consumes messages from the following source:

| Source                               | Route mapping property    |
| :----------------------------------- | :------------------------ |
| OBPM payment notification JMS queues | `jms.queue.route.mapping` |

## Error mapping

The connectors map OBPM and Flexcube error codes to Grand Central status codes. For the full list, see [Error codes](/connectors/reference/error-codes). No connector-specific overrides exist for these connectors.

## Dependencies

* OBPM SOAP API (outbound), reachable at `obpm.baseUrl`.
* OBPM REST API (outbound), reachable at `obpm.rest.baseUrl`.
* Flexcube SOAP API (outbound), reachable at `flexcube.baseUrl`, for foreign exchange.
* OBPM JMS queues (inbound, WebLogic), reachable at `jmsFlexCubeUrl`.
* Sync Hub ASB producer, which receives the published payment status and payment ingestion events.
* `obpm-connector-sdk` (shared HTTP, SOAP, and JMS configuration, and the payment notification dispatch processor).
