API-Driven Test Data Automation for ENOVIA Multi-Environment Pipelines
The most scalable approach combines ENOVIA’s REST/MQL APIs with a template-based provisioning layer sitting between your CI/CD orchestrator and each environment. Here’s what works in practice.
Core Architecture
Use a dedicated test data service (a lightweight middleware layer — Node.js, Python, or Java) that:
- Holds parameterized business object templates (Parts, ECOs, Workflows)
- Calls ENOVIA’s FCS (File Collaboration Server) and Business Object APIs to instantiate data
- Tags every created object with a sprint/run identifier for teardown
ENOVIA exposes its data plane primarily through:
- MQL (Matrix Query Language) for bulk object creation/modification
- REST API (
/enovia/resources/v1/...) for modern integrations (verify endpoint paths in your version)
- JPO (Java Program Objects) for server-side logic if REST coverage is insufficient
Template-Based Provisioning Example
Define product structure templates as JSON, then POST via REST:
{
"templateId": "ECO_STANDARD_V1",
"objects": [
{ "type": "Part", "policy": "EC Part", "vault": "eServiceProduction",
"attributes": { "Description": "{{SYNTH_DESC}}", "Revision": "A" } },
{ "type": "ECO", "policy": "ECO", "relationship": "Affected Item",
"attributes": { "Title": "Sprint-{{SPRINT_ID}}-ECO-{{UUID}}" } }
],
"workflow": "ECO Approval Process"
}
Your middleware resolves {{...}} tokens with synthetic values (Faker libraries work well), then chains the creation calls. Store templates in Git alongside your pipeline code — version-controlled test data contracts.
CI/CD Integration Points
In Jenkins/GitLab CI, add provisioning as a pipeline stage:
stages:
- provision_test_data
- run_tests
- teardown_test_data
provision_test_data:
script:
- python provision.py --template ECO_STANDARD_V1 --env staging --sprint $CI_PIPELINE_ID
- echo "PROVISION_TAG=$CI_PIPELINE_ID" >> provision.env
artifacts:
reports:
dotenv: provision.env
The PROVISION_TAG lets teardown scripts query and delete exactly the objects created for that run using MQL print bus queries filtered by attribute.
Data Masking and Privacy Compliance
For lower-environment refreshes, mask before promoting, not after:
- Build a pre-promotion script that runs MQL updates against sensitive attribute types (e.g.,
Person, Organization objects) before copy
- Use ENOVIA’s attribute-level access control (policy states + access masks) to restrict PII attribute visibility in dev/test vaults by policy design — verify your vault’s access configuration matches your data classification requirements
- Consider synthetic data seeded from production schemas (not production data) to sidestep GDPR/ITAR exposure entirely
Version Compatibility Note
REST API coverage for Change Management objects (ECOs, ECRs) expanded significantly in recent 3DEXPERIENCE releases — verify that your platform version supports direct ECO creation via REST before committing to that path. Older deployments may require JPO wrappers or direct MQL over a SOAP/RMI bridge.
Key transactions/tools to validate: MQL interactive console, emxBusinessObject JPO APIs, and your platform’s TCI (Test Client Interface) if available. The 3–4 hour manual cycle should collapse to under 10 minutes once templates are stable.
This draft is based on general ENOVIA knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.