> ## 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 artifacts and rules

> Maven artifacts published to JFrog and the rules and anti-patterns every connector must follow

## JFrog reference artifacts

Backbase publishes every Grand Central artifact to the internal JFrog repository, including the BOM, SDK, kamelets, API specs, and Maven plugins. Use the repository as your single source of truth for available versions when you don't have GitHub access to the source repositories.

Browse the tree: [Grand Central artifacts on JFrog](https://repo.backbase.com/ui/native/repo/com/backbase/gc).

| Artifact (Maven `groupId:artifactId`)                    | What it provides                                                                                                                                                                                                                                                                                 | Where to use it                                                        |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- |
| `com.backbase.gc:grandcentral-bom`                       | Parent POM that pins versions for Camel, Quarkus, Camel-K, the kamel/helm plugins, and the Grand Central linter                                                                                                                                                                                  | `<parent>` in your connector's `pom.xml`                               |
| `com.backbase.gc:grandcentral-connectors-sdk`            | Cross-vendor utilities: `GrandCentralUtil`, `GrandCentralTestSupportUtil`, `JunitUtil`, `RemoveNullOrEmptyJsonSerializer`, `HeaderRemovalPolicy`, `PredicatesValidatingProcessor`, `GrandCentralServiceExceptionProcessor`, `EndpointCaller`, exception classes, error constants, holiday parser | Managed by the BOM; used directly in connector code                    |
| `com.backbase.gc.generic:grandcentral-platform-kamelets` | All platform kamelets, including `gc-http-caller`, `gc-asb-producer-caller`, all exception-handler kamelets, `pgp-transform`, `determine-offset-array`, and `handle-no-records`                                                                                                                  | Managed by the BOM; referenced by name in routes (`kamelet:<name>`)    |
| `com.backbase.gc.api:grandcentral-{domain}-api`          | The Grand Central OpenAPI spec for a given domain such as `payment-order`, `deposit`, `party`, `batch-payment`, `fraud-detection`, `device-administration`, or `generic`                                                                                                                         | `api.artifact-id` / `api.artifact-version` in `pom.xml` `<properties>` |
| `com.backbase.gc:{vendor}-connector-sdk`                 | Vendor-specific SDK for SOAP-style vendors only. Provides the `{vendor}-api-caller` and `{vendor}-properties` kamelets and any vendor-common Java utilities                                                                                                                                      | `<dependency>` in the connector's `pom.xml`                            |
| `com.backbase.gc:kamel-maven-plugin`                     | Maven plugin that builds Camel-K integrations (`mvn kamel:dev`, `mvn kamel:run`)                                                                                                                                                                                                                 | Inherited from `grandcentral-bom`                                      |
| `com.backbase.gc:maven-kamel-helm-plugin`                | Maven plugin that generates the Helm chart and values for a connector at package time                                                                                                                                                                                                            | Inherited from `grandcentral-bom`                                      |
| `com.backbase.gc:gc-linter-maven-plugin`                 | Maven plugin that lints JOLT, XSLT, and JSON-validator files at the verify phase                                                                                                                                                                                                                 | Inherited from `grandcentral-bom`                                      |

## Important rules and anti-patterns

The following table lists the conventions every connector must follow, along with the rationale for each rule. Apply them when you author or review connector code.

| Rule                                                                                    | Rationale                                                                                                                      |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| Never use `.routeId(...)`                                                               | Camel-K assigns route IDs; manual IDs cause Kubernetes deployment conflicts                                                    |
| Never use Spring annotations (`@Component`, `@Autowired`, `@Value`)                     | The runtime is Quarkus, not Spring Boot                                                                                        |
| Use `@PropertyInject` (Camel), not `@Value` (Spring)                                    | Quarkus Camel uses Camel's property injection                                                                                  |
| Don't annotate the connector class                                                      | Quarkus Camel registers `RouteBuilder` automatically                                                                           |
| Promote all string literals to `private static final String` constants                  | Prevents typos in kamelet URIs and route keys                                                                                  |
| Use `{{?propertyName}}` for optional properties                                         | The `?` prefix prevents `PropertiesException` when a property is absent                                                        |
| Use exchange properties for side-channel data                                           | `HeaderRemovalPolicy` strips headers, but exchange properties survive every step                                               |
| Set the URL on the `gc-http-caller-url` exchange property                               | The kamelet reads the URL from this property, not from a header                                                                |
| Set query params on the `gc-http-caller-queryParams` property                           | The value must be a `Map<String, Object>`                                                                                      |
| Place JOLT, XSLT, and schema files in `src/main/resources/`                             | Camel resolves them from the classpath                                                                                         |
| Pin the BOM version explicitly per connector                                            | Different connectors target different BOM versions; align with your team's choice rather than copying from a sibling connector |
| Pin the API spec version explicitly per connector                                       | Set `<api.artifact-version>` to the version your team has chosen for this connector; never leave it at a stale default         |
| After converting XML to JSON, call `correctNumericAndBooleanValuesInJsonFromProperties` | Fixes string-to-number/boolean coercion from Jackson's XML deserializer                                                        |
| Use `doTry`/`doCatch` for optional data extraction                                      | Prevents route failure when an optional JSON or XML field is absent                                                            |
| Use `GrandCentralTestSupportUtil` and `JunitUtil` for all JUnit tests                   | Both are from `grandcentral-connectors-sdk` (managed by the BOM); never write custom base test classes                         |
