Transport Across Environments
This document explains the process of transporting CRUD configurations across environments such as DEV, QA and PROD.
Overview
The CRUD Framework is configuration-driven and uses Spring Config Server, YAML named object configurations, XML CRUD mapping files, and environment-specific datasource entries.
The transport process mainly involves moving CRUD YAML files, updating environment-specific URLs and datasource/schema values, updating Config Server paths, and deploying refreshed configurations.
CRUD Configuration Structure
The CRUD Framework configurations are typically maintained under a folder per environment. Example:
itm-java-dev-btp/
├── application.properties
├── crud-named-objects-dev.yml
├── crudConfig-dev.xml
└── customer-crud-dev/
├── crud-named-objects-bpo-dev.yml
└── crud-named-objects-mdg-dev.yml
Purpose of Each File
| File | Purpose |
|---|---|
application.properties | Datasource and application configuration |
crud-named-objects-*.yml | Main CRUD query configurations |
crudConfig-*.xml | Registers YAML named object files |
customer-crud-*/ | Customer-specific CRUD configurations |
Understanding CRUD Named Objects
Example YAML snippet:
namedObjects:
- !!com.crud.loader.model.CrudNamedObjectModel
name: fetchUsers
type: QUERY
query: Select USER_LOGIN_NAME from user_idp_mapping
arguments:
Properties:
name: CRUD query identifiertype: Query typequery: SQL queryarguments: Input arguments for the query
CRUD Transport Flow
DEV Configuration
|
v
Copy YAML / XML configurations
|
v
Update environment-specific values
|
v
Commit changes
|
v
Deploy to QA
|
v
Validate queries
|
v
Transport to PROD
DEV to QA Transport
Step 1 — Copy CRUD Files
Copy files from itm-java-dev-btp/ to itm-java-qa/ including:
crud-named-objects-*.ymlcrudConfig-*.xmlcustomer-crud-*folder
Step 2 — Rename Files for QA
Update filenames and XML entries to use QA naming,
e.g. crud-named-objects-dev.yml → crud-named-objects-qa.yml
and
crudConfig-dev.xml → crudConfig-qa.xml.
Step 3 — Update Config Server URLs
Update Config Server references in XML or properties to point to the QA config server and paths. Example DEV entry:
<crudCfg>
<namedObject isReloadable="false">
<namedObjects>
https://cherryworkproducts-config-server.cfapps.eu10-004.hana.ondemand.com/application/default/main/itm-java-dev-btp/crud-named-objects-dev.yml?useDefaultLabel
</namedObjects>
</namedObject>
</crudCfg>
QA example:
<crudCfg>
<namedObject isReloadable="false">
<namedObjects>
https://cherryworkproducts-config-server-qa.cfapps.eu10-004.hana.ondemand.com/application/default/main/itm-java-qa/crud-named-objects-qa.yml?useDefaultLabel
</namedObjects>
</namedObject>
</crudCfg>
Update Customer CRUD Paths
Update customer-named object URLs similarly, e.g. replace .../itm-java-dev-btp/customer-crud-dev/...-dev.yml with the QA path .../itm-java-qa/customer-crud-qa/...-qa.yml.
Update Datasource Configuration
Ensure environment-specific datasource values in application.properties are updated. Example:
DEV:
datasource.list[0].env=itm
datasource.list[0].url=jdbc:sap://<hana-host>:443?currentschema=CW-IWM-DEV
datasource.list[0].username=CW-IWM-DEV
QA:
datasource.list[0].env=itm_qa
datasource.list[0].url=jdbc:sap://<hana-host>:443?currentschema=CW-IWM-QA
datasource.list[0].username=CW-IWM-QA
Database Values to Update
Common values to update during transport:
- Schema (e.g.
CW-IWM-DEV→CW-IWM-QA→ Production schema) - Environment identifier (e.g.
itm,itm_qa,itm_prod) - Config server paths and CRUD filenames (
*-dev.yml→*-qa.yml→*-prod.yml)
Update Application Properties
Set environment-appropriate properties, for example:
spring.application.name=crud-api-dev-btp
for QA/PROD use crud-api-qa-btp and crud-api-prod-btp respectively.
Validate Query Compatibility
Before transport, validate:
- Schema and table names
- Column names
- HANA-specific SQL compatibility
- Query syntax and authorization/access
Transport Customer CRUD Configurations
Maintain customer-specific files under separate folders per environment, e.g. customer-crud-dev/, customer-crud-qa/, customer-crud-prod/ with corresponding *-bpo-*.yml and *-mdg-*.yml files.
Common Issues During Transport
- Incorrect Config Server Path: YAML not loaded — verify URLs, branch names, and filenames.
- Wrong Schema Name: SQL failures — update current schema and validate DB access.
- Missing Customer CRUD Files: Named object not found — ensure files are transported and XML mappings updated.
- Environment Value Not Updated: Wrong datasource selection — update
datasource.list[x].envcorrectly.
Recommended Best Practices
- Use environment-specific naming (e.g.
crud-named-objects-dev.yml,*-qa.yml,*-prod.yml). - Keep configurations modular: separate common CRUDs, customer CRUDs, and environment-specific CRUDs.
- Validate thoroughly in DEV, QA, UAT before promoting to PROD.
Summary
The CRUD Framework transport process is configuration-based. Key activities include copying YAML/XML configurations, updating environment-specific URLs and datasource/schema values, updating Config Server references, validating CRUD queries, and deploying refreshed configurations. Proper environment segregation and configuration management improves maintainability, onboarding, and release safety.