> ## 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.

# Get started

> Complete end-to-end configuration guide for integrating with Temenos Transact core banking platform

Follow the steps in [Get started](/connectors/getting-started) before proceeding.

## Prerequisites

Before you configure the connector, ensure you have:

* An active account in the Temenos Transact production or sandbox environment.
* Network connectivity between the Temenos Transact environment and Grand Central iPaaS. For supported options, see [Network connectivity](/platform/network-connectivity).

You also need the following environment detail from Temenos Transact:

| Parameter          | Description                                                                                                                              |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `temenos.base.url` | The API endpoint URL for the Temenos Transact environment (for example, `https://TENANT_NAME.temenos.cloud/irf-provider-container/api`). |

<Note>
  The connector uses Bearer token authentication. The token is stored in Azure Key Vault and injected as the `Authorization` header at the APIM layer through a policy fragment, so no per-connector secret is required. You configure this in step 2.
</Note>

## Configuration guide

Follow these steps to initialize and authorize your Temenos Transact Connector.

### 1. Establish connectivity

Share connectivity details between Grand Central and Temenos Transact as described in [Network connectivity](/platform/network-connectivity).

<Note>
  Establish network connectivity to the Temenos Transact environment before you continue with configuration.
</Note>

### 2. Temenos Transact authentication

The Temenos Transact Connector uses Bearer token authentication for API access. The token is managed at the Azure API Management (APIM) layer rather than at the connector, so no per-connector SOPS secret is required.

The setup is:

1. **Store the Temenos bearer token in Azure Key Vault.**
2. **Expose the secret to APIM as a named value** (for example, `temenos-sandbox-token`), so APIM resolves it at request time without the value appearing in policy code.
3. **Attach a shared Temenos policy fragment** to the Grand Central APIs routing to Temenos (party, deposit, deposit-transaction, loan, loan-transaction). The fragment injects the `Authorization: Bearer …` header from the named value, applies the standard rate limit, and routes each request to the correct Temenos connector backend based on the API ID and path.

<Info>
  Rotating the Temenos bearer token only requires updating the Key Vault secret backing the APIM named value. APIM picks up the new value on the next refresh, with no redeploy of the connectors.
</Info>

### 3. Environment configuration

To initialize the Temenos Transact Connector, define the required environment variables in your `gc-applications-live` repository.

Store these variables in `values.yaml` for configuration that applies to all connectors, and in the following files for connector-specific configuration:

| Connector                                  | Property file                        | Description                          |
| ------------------------------------------ | ------------------------------------ | ------------------------------------ |
| `gc-temenos-party-connector`               | `party-v0.values.yaml`               | Outbound party management operations |
| `gc-temenos-deposit-connector`             | `deposit-v0.values.yaml`             | Deposit account operations           |
| `gc-temenos-deposit-transaction-connector` | `deposit-transaction-v0.values.yaml` | Deposit transaction operations       |
| `gc-temenos-loan-connector`                | `loan-v0.values.yaml`                | Loan account operations              |
| `gc-temenos-loan-transaction-connector`    | `loan-transaction-v0.values.yaml`    | Loan transaction operations          |
| `gc-temenos-product-matching-connector`    | `product-matching-v0.values.yaml`    | Deposit maturity simulation          |

For the full property list for each connector, including types, defaults, and descriptions, see [Reference](/connectors/core-banking/temenos-transact/reference).

#### Define common parameters

Store these variables in `values.yaml`. They apply across all Temenos Transact connectors:

| Parameter               | Description                                                             | Example value                                                  |
| ----------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------- |
| `temenos.base.url`      | Target API endpoint for the Temenos Transact environment.               | `https://TENANT_NAME.temenos.cloud/irf-provider-container/api` |
| `corporate.sectorId`    | Sector ID that identifies a corporate or organisation party in Temenos. | `2001`                                                         |
| `customers.api.version` | API version for the Temenos party (customers) API.                      | `v5.2.0`                                                       |
| `holdings.api.version`  | API version for the Temenos holdings API.                               | `v1.0.0`                                                       |

The following example shows the `values.yaml` configuration:

```yaml theme={"system"}
# Common Temenos Transact configuration
# Place this in: values.yaml
connector:
  properties:
    # Temenos Transact connection settings
    # temenos.base.url: TEMENOS_API_ENDPOINT

    # Sector ID that identifies a corporate/organisation party in Temenos
    # corporate.sectorId: 2001

    # API version settings
    # customers.api.version: v5.2.0
    # holdings.api.version: v1.0.0
  traits:
    knativeservice:
      minScale: 0
    logging:
      level: INFO
```

Place the values files at the following paths:

```text theme={"system"}
runtimes/{runtime}/values/gc-temenos/
├── values.yaml
├── party-v0.values.yaml
├── deposit-v0.values.yaml
├── deposit-transaction-v0.values.yaml
├── loan-v0.values.yaml
├── loan-transaction-v0.values.yaml
└── product-matching-v0.values.yaml
```

#### Define party connector parameters

The `party-v0.values.yaml` file contains configuration for party management operations, including HTTP client tuning, party and deposit ID validation, and Temenos error code mappings.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 5000
    http.client.request.timeout: 10000
    http.client.socket.timeout: 5000
    http.client.connection.max.per.route: 200
    http.client.connection.max.total: 200
    http.client.proxy.activate: false

    # Temenos onlineServices endpoint - used by searchParty (depositAccountId branch) to resolve the bound party.
    temenos.api.online-services.path: /v2.0.0/holdings/onlineServices

    # Validation patterns and messages for party and deposit IDs
    regex.party-id.pattern: ^[a-zA-Z0-9]{1,10}$
    regex.party-id.failure-message: Party ID must be alphanumeric and between 1 and 10 characters long.
    regex.deposit-id.pattern: ^[a-zA-Z0-9]{1,20}$
    regex.deposit-id.failure-message: Deposit ID must be alphanumeric and between 1 and 20 characters long

  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

#### Define deposit connector parameters

The `deposit-v0.values.yaml` file contains configuration for deposit account operations, including HTTP client tuning, Temenos API paths, the term-deposit product line, ID validation, and optional product ID mappings.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 5000
    http.client.request.timeout: 10000
    http.client.socket.timeout: 5000
    http.client.connection.max.per.route: 200
    http.client.connection.max.total: 200
    http.client.proxy.activate: false

    # Temenos API paths (relative to temenos.base.url)
    temenos.api.accounts.path: /v5.1.0/holdings/accounts
    temenos.api.deposits.path: /v3.0.0/holdings/deposits
    temenos.api.online-services.path: /v2.0.0/holdings/onlineServices
    temenos.api.party-customers.path: /v5.2.0/party/customers
    temenos.api.redeem-deposits.path: /v3.0.0/holdings/deposits/redeemDeposits
    temenos.api.account-closures.path: /v5.1.0/holdings/accounts/currentAccounts

    # Product lookup API path
    temenos.api.product-lookup.path: /v1.0.0/product/products

    # Temenos base URL for create deposit
    temenos.api.create-deposit.path: /v5.1.0/holdings/accounts
    temenos.api.create-term-deposit.path: /v3.0.0/holdings/deposits/termDeposits

    # Product line identifier for term deposits
    product.line.term-deposit: DEPOSITS

    # Deposit ID validation
    regex.deposit-id.pattern: ^[a-zA-Z0-9]{1,20}$
    regex.deposit-id.failure-message: Deposit ID must be alphanumeric and between 1 and 20 characters long.

    # Optional product ID mappings (commented by default; uncomment per environment)
    # fieldsToBeReplaced: product.secondaryProductId,ArrangementProperties.body.arrangementActivity.productId,ArrangementProperties.body.arrangementActivity.productGroupId

    # GC to Temenos product ID (CREATE flow): product.secondaryProductId.<GC_CODE>: <TEMENOS_CODE>
    # product.secondaryProductId.DEPOSIT_2Y: DEPOSIT.2Y

    # Temenos to GC product ID (GET flow): ArrangementProperties.body.arrangementActivity.productId.<TEMENOS_CODE>: <GC_CODE>
    # ArrangementProperties.body.arrangementActivity.productId.DEPOSIT.2Y: DEPOSIT_2Y
  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

<Info>
  The `product.line.term-deposit` value determines how the connector routes a create deposit request. When the product's Temenos product line matches this value, the connector calls the term deposit endpoint (`/holdings/deposits/termDeposits`); other product types go to `/holdings/accounts`. The same routing applies to the close deposit operation.
</Info>

#### Define deposit-transaction connector parameters

The `deposit-transaction-v0.values.yaml` file contains configuration for deposit transaction operations, including the Temenos transactions endpoint, ID validation, pagination, and threading.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 5000
    http.client.request.timeout: 10000
    http.client.socket.timeout: 5000
    http.client.response.timeout: 10000
    http.client.connection.max.per.route: 100
    http.client.connection.max.total: 200
    http.client.proxy.activate: false

    holdings.api.version: v2.1.0
    holdings.transactions.path: /holdings/transactions

    contentType: application/json
    accept: application/json
    gc-http-caller-handleExceptionsInConnector: false
    retryFlag: false
    retryStatuses: 429,500,502,503,504

    thread.profile.core.pool.size: 20
    thread.profile.max.pool.size: 40

    acceptedHeaders: depositId,transactionId,fromDate,toDate,size,from,cursor,sort,credentials,companyId,deviceId,userRole,disablePagination,Content-Type,Accept,Authorization,X-Total-Count,X-More-Pages,CamelHttpResponseCode

    regex.deposit-id.pattern: ^[A-Za-z0-9]{1,20}$
    regex.deposit-id.failure-message: Deposit ID must be alphanumeric and between 1 and 20 characters long.
    regex.transaction-id.pattern: ^[A-Za-z0-9.-]{1,50}$
    regex.transaction-id.failure-message: Transaction ID must be alphanumeric and between 1 and 50 characters long.

    default.page.size: 20
    default.max.pages: 100
    default.from-date.lookback-years: 1
  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

#### Define loan connector parameters

The `loan-v0.values.yaml` file contains configuration for loan account operations, including HTTP client tuning, Temenos API paths, loan ID validation, and optional product ID mappings.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 5000
    http.client.request.timeout: 10000
    http.client.socket.timeout: 5000
    http.client.connection.max.per.route: 200
    http.client.connection.max.total: 200
    http.client.proxy.activate: false

    # Temenos API path for create loan
    temenos.api.create-loan.path: /v6.4.0/holdings/loans
    temenos.api.amortization-schedule.path: /v4.3.0/holdings/arrangements

    # Temenos API path for loan balance lookup (per-loan, uses ?arrangementId={loanId} query param)
    temenos.api.loan-balances.path: /v6.4.0/holdings/loans/balances

    # Temenos API paths for arrangement balances and total due amount (per-loan, {loanId} is replaced at runtime)
    temenos.api.arrangement-balances.path: /v4.3.0/holdings/arrangements/{loanId}/balances
    temenos.api.arrangement-total-due-amount.path: /v4.3.0/holdings/arrangements/{loanId}/totalDueAmount

    # Loan ID validation
    regex.loan-id.pattern: ^[a-zA-Z0-9]{1,20}$
    regex.loan-id.failure-message: Loan ID must be alphanumeric and between 1 and 20 characters long.

    # Optional product ID mappings (commented by default; uncomment per environment)
    # fieldsToBeReplaced: productArrangement.secondaryProductId
    # productArrangement.secondaryProductId.<GC_ID>: <TEMENOS_ID>
    # productArrangement.secondaryProductId.CONSUMER_LOAN: CONSUMER.LOAN

    # configuring what fields need to be replaced
    # Note: Below configuration is sample demonstrated for Product mapping but any field can be replaced with this approach
    # fieldsToBeReplaced=productArrangement.secondaryProductId,loanProduct

    # GC to Temenos Product ID mappings
    # Format: productArrangement.secondaryProductId.<GC_ID>=<TEMENOS_ID>
    # productArrangement.secondaryProductId.CONSUMER_LOAN: CONSUMER.LOAN

    # Temenos to GC Product ID mappings
    # Format: loanProduct.<TEMENOS_ID>=<GC_ID>
    # loanProduct.VEHICLE.LOAN=TERM_LOAN
  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

#### Define loan-transaction connector parameters

The `loan-transaction-v0.values.yaml` file contains configuration for loan transaction operations. The connector reads settled bills from the Temenos arrangement bills enquiry and maps them to the Grand Central loan transaction contract; configure the arrangements endpoint, amount normalisation, error mappings, and validation here.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 5000
    http.client.request.timeout: 30000
    http.client.response.timeout: 30000
    http.client.socket.timeout: 5000
    http.client.connection.max.per.route: 150
    http.client.connection.max.total: 300
    http.client.proxy.activate: false

    arrangements.api.version: v4.3.0
    arrangements.path: /holdings/arrangements
    arrangements.bills.suffix: /bills

    # Strip thousands-separators from amount fields before JOLT numeric conversion
    temenos.bills.amount-strip-chars: ","
    temenos.bills.amount-fields: billedAmount,outstandingAmount

    contentType: application/json
    accept: application/json
    gc-http-caller-handleExceptionsInConnector: false
    retryFlag: false
    retryStatuses: 429,500,502,503,504

    # Temenos error code mappings
    errorTemplate: temenos-transform-error-details.json
    coreMessageVisibility: true

    thread.profile.core.pool.size: 50
    thread.profile.max.pool.size: 100

    acceptedHeaders: loanId,transactionId,fromDate,toDate,size,from,credentials,companyId,deviceId,userRole,disablePagination,gc-http-caller-headers,Content-Type,Accept,Authorization,X-Total-Count,CamelHttpResponseCode

    regex.loan-id.pattern: ^[A-Za-z0-9]{1,20}$
    regex.loan-id.failure-message: Loan ID must be alphanumeric and between 1 and 20 characters long.

    default.page.size: 20
    default.max.pages: 100
    default.currency: USD
  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

#### Define product-matching connector parameters

The `product-matching-v0.values.yaml` file contains configuration for deposit maturity simulations, including HTTP client tuning and the Temenos simulation API paths.

```yaml theme={"system"}
connector:
  properties:
    http.client.connect.timeout: 10000
    http.client.request.timeout: 90000
    http.client.response.timeout: 90000
    http.client.socket.timeout: 90000
    http.client.connection.max.per.route: 100
    http.client.connection.max.total: 200
    http.client.proxy.activate: false

    # Temenos API paths (relative to temenos.base.url)
    temenos.api.deposit-simulation.path: /v9.0.0/holdings/deposits/simulations
    temenos.api.simulation-schedule.path: /v10.0.0/holdings/arrangements/simulations

    # Optional product ID mappings (commented by default; uncomment per environment)
    # fieldsToBeReplaced: product.secondaryProductId

    # GC to Temenos product ID: product.secondaryProductId.<GC_CODE>: <TEMENOS_CODE>
    # product.secondaryProductId.DEPOSIT_2Y: DEPOSIT.2Y
  traits:
    knativeservice:
      minScale: 1
    logging:
      level: INFO
```

<Info>
  The Temenos deposit simulation runs a full synchronous arrangement lifecycle and routinely takes more than 10 seconds. Set the HTTP request, response, and socket timeouts to 90 seconds (as shown in the example) to avoid premature timeouts. Keep the connect timeout short.
</Info>

***

## Test the connector

To access the Unified API, include your Grand Central subscription key in the request header. If you don't have a key, contact the Grand Central Support Team to request one.

| Header    | Value                   |
| --------- | ----------------------- |
| `api-key` | `YOUR_SUBSCRIPTION_KEY` |

Test the API using the <a href="https://github.com/bb-ecos-ecos/grandcentral-documentation/tree/main/Postman-Collection" target="_blank">Postman collection</a>.

## Troubleshooting

If your connector isn't responding as expected, check these common scenarios.

<AccordionGroup>
  <Accordion title="5XX: Internal server error / Core system is down" icon="lock">
    **Cause:** The Grand Central gateway cannot establish a handshake with the Temenos Transact endpoint. This typically indicates an upstream service outage at Temenos or a network routing failure.

    **Solution:** Verify the operational status of the Temenos Transact environment with Temenos. If the service is operational, contact [Grand Central Support](mailto:gc_support@backbase.com).
  </Accordion>

  <Accordion title="5XX: Timeout from core / Read timeout / SocketTimeoutException" icon="wifi-slash">
    **Cause:** The request to Temenos Transact exceeded the configured timeout period. This may indicate performance issues at Temenos or network latency problems.

    **Solution:** Verify the operational status of the Temenos Transact environment and check for any performance degradation. If the service is operational and performing normally, consider increasing the timeout values (`http.client.connect.timeout`, `http.client.socket.timeout`, `http.client.request.timeout`) in your configuration. Contact [Grand Central Support](mailto:gc_support@backbase.com) if issues persist.
  </Accordion>

  <Accordion title="Network connectivity issues" icon="network-wired">
    **Cause:** Network connectivity to the Temenos Transact environment has not been established or has been interrupted.

    **Solution:** Verify network connectivity and ensure routing is properly configured between Grand Central and Temenos Transact. Review the [Network connectivity](/platform/network-connectivity) documentation for configuration details.
  </Accordion>

  <Accordion title="401: Invalid authentication credentials" icon="key">
    **Cause:** The bearer token injected by the APIM policy fragment is missing, incorrect, expired, or the user lacks the required permissions in Temenos Transact.

    **Solution:** Verify the Key Vault secret backing the Temenos APIM named value holds a current bearer token. Confirm the Temenos policy fragment is applied to the Grand Central APIs routing to Temenos and that it sets the `Authorization: Bearer …` header. If the token is valid, re-verify permissions with your Temenos administrator.
  </Accordion>

  <Accordion title="400: Party ID, deposit ID, or loan ID validation failure" icon="triangle-exclamation">
    **Cause:** The party ID, deposit ID, or loan ID in the request does not match the configured regex pattern.

    **Solution:** Verify that the ID matches the pattern defined in `regex.party-id.pattern`, `regex.deposit-id.pattern`, or `regex.loan-id.pattern`. The default patterns accept alphanumeric characters only (party ID: up to 10 characters; deposit ID and loan ID: up to 20 characters).
  </Accordion>

  <Accordion title="404: GC301 - No transactions found for the loan" icon="circle-exclamation">
    **Cause:** The Temenos arrangement bills enquiry returns `TGVCP-007` for empty-result, unknown loan ID, malformed loan ID, and pagination cursor errors. The connector cannot distinguish between "loan does not exist" and "no settled bills for this loan", so both surface as `GC301`.

    **Solution:** Confirm that the loan ID exists in Temenos and has at least one bill with `billStatus=SETTLED`. If you are paginating through transactions, an overshoot page (`from > 0`) returns `200` with an empty array rather than `404`.
  </Accordion>

  <Accordion title="501: GC023 - Get loan transaction by ID is unsupported" icon="ban">
    **Cause:** Temenos arrangement bills do not expose a single-bill lookup, so the connector intentionally returns HTTP `501` with `GC023` for `GET /loans/transactions/{transactionId}`.

    **Solution:** Use `GET /loans/{loanId}/transactions` or `POST /loans/transactions` instead, and filter the response by transaction ID on the caller side.
  </Accordion>

  <Accordion title="429: Rate limit exceeded" icon="gauge-high">
    **Cause:** The number of incoming requests exceeded the defined threshold for your subscription tier. This "429 Too Many Requests" response protects the stability of the Grand Central and Temenos Transact infrastructure.

    **Solution:** Review your app's request patterns to identify unexpected spikes. If you need higher throughput, contact the Grand Central team to request an adjustment to your API management rate limit policy.
  </Accordion>

  <Accordion title="Connection pool exhausted" icon="circle-nodes">
    **Cause:** The maximum number of connections (`http.client.connection.max.total` or `http.client.connection.max.per.route`) has been reached, and no connections are available for new requests.

    **Solution:** Review your connection pool configuration and consider increasing the `http.client.connection.max.total` or `http.client.connection.max.per.route` values. Ensure your app closes connections after use.
  </Accordion>
</AccordionGroup>

***

## Need more help?

<Card title="Contact support" icon="envelope" href="mailto:gc_support@backbase.com">
  Reach out to the Grand Central team for assistance with environment setup, rate limit increases, or configuration guidance.
</Card>
