Structure of a Provisioned IM Instance
Every provisioned IM instance is backed by a Git repository with a standardized directory layout. PlatformManager deploys the repository to AWS or GCP and IM loads configuration from these directories at startup.
/
├── routes/ # Camel route XML definitions
├── mappers/ # Mapper XML definitions
├── filters/ # Filter XML definitions
├── connections/ # Connection definitions (JSON)
├── config/ # application.properties
├── classes/ # Custom Groovy classes
├── beans/ # Spring bean definitions
├── certs/ # SSL certificates
├── kamelets/ # Kamelet definitions
├── route-templates/ # Reusable route templates
└── resources/ # Static resources
Quick Reference
|
Directory |
Format |
Auto-loaded |
Referenced by |
|---|---|---|---|
|
XML ( |
Yes |
Route ID |
|
|
XML ( |
Yes |
|
|
|
XML ( |
Yes |
|
|
|
JSON |
Yes |
|
|
|
Properties |
Yes |
Property keys |
|
|
Groovy |
Yes |
|
|
|
XML (Spring) |
Yes |
Bean ID |
|
|
PEM |
Yes |
Connection config |
|
|
YAML |
Yes |
Kamelet name |
|
|
route-templates |
XML |
Yes |
Template ID |
|
Any |
No |
Explicit path reference |
Each directory is documented in detail on its own subpage below.
Naming Conventions
Consistent naming across all artifacts improves readability and maintainability.
Route IDs
Use kebab-case with action prefix:
|
Prefix |
Use For |
Example |
|---|---|---|
|
|
Inbound data loads |
|
|
|
Outbound data exports |
|
|
|
Event-driven handlers |
|
Keep Pricefx event names in UPPER_CASE: event-ITEM_APPROVED_PL
Mapper Files
Pattern: [entity][ObjectType]Mapper.mapper.xml
Examples: productPMapper.mapper.xml, customerDetailsCXMapper.mapper.xml
Filter Files
Pattern: [purpose][Entity]Filter.filter.xml
Examples: truncateFlushedFilter.filter.xml, dateRangeFilter.filter.xml
Property Keys
Pattern: pfx:[routeId].[category].[name]
Examples: pfx:import-products.sftp.connection, pfx:export-prices.cron
See Naming Conventions for the complete reference.
Directory Organization Best Practices
src/main/resources/repo/
routes/ # One XML file per logical route group
import-products.xml
import-customers.xml
export-prices.xml
event-routes.xml
mappers/ # One mapper per object type
productPMapper.mapper.xml
customerCMapper.mapper.xml
filters/ # One filter per use case
truncateFlushedFilter.filter.xml
dateRangeFilter.filter.xml
connections/ # One JSON per external system
pricefx.json
sftp.json
config/ # Properties and Spring config
application.properties
Keep route files focused: one file per entity or closely related group. If a file exceeds 200 lines, consider splitting into sub-routes using direct: endpoints.