In order to effectively develop new features in EPM. It is often helpful to have an understanding of the existing jobs, and be able to utilize them to load certain data. In this page, we provide an explanation of all the EPM jobs. Focusing on their purpose and how to call them.
You MUST run the import/export workflow FIRST to load all the base data (frameworks, controls, requirements, responsibilities, components, services, apps, attestations, etc.) from production or staging.
See the Import/Export Job section below for details.
After importing data, you have two options to complete the loading process:
Invoke the Component Workflow Orchestrator which automatically runs all remaining workflows in the correct order, including user loading:
/api/asyncJobs/componentWorkflows1 2{ "componentSlugs": ["COMPONENT_SLUG_1", "COMPONENT_SLUG_2"] }
This orchestrator will handle the entire remaining workflow sequence for you, including loading users.
You can run the individual jobs listed below independently. This is useful when:
See the Fast Loading After Import-All section for the recommended manual sequence.
There's plenty of data that is unique to production and staging, and it's often helpful to be able to somehow get that data locally. The import/export job exists to help you load a whole lot of data that would otherwise require manual creation, saving you countless hours.
Here is a list of the data that can be exported:
All necessary junctions get exported as well.
To export the data from a particular environment, run the following API:
/api/admin/export-allNote: The export API now returns a complete ImportDataRequest object that is ready to use. You can directly use the response as the request body for the import API without any modifications.
You can also export specific data types individually:
/api/admin/export-requirements - Requirements only/api/admin/export-components - Components only/api/admin/export-responsibilities - Responsibilities only/api/admin/export-services - Services only/api/admin/export-apps - Apps only/api/admin/export-attestations - Attestations only (excludes soft-deleted)/api/admin/export-mcds - MCDs only (excludes soft-deleted)/api/admin/export-tags - Tags only/api/admin/export-change-management-data - Change management data onlyTo import the data into a particular environment, use the response from the export API directly as your request body:
/api/admin/import-allOptional: You can modify the configuration values in the export response if needed:
"config" to "UPSERT" or "REPLACE_ALL""withServicesAttestationsAndMCD" to true or false| Config Option | Description |
|---|---|
| UPSERT | Updates the existing state or adds additional data without removing existing entries. |
| REPLACE_ALL | Performs a hard reset, deleting all existing state. Use this option if you want a clean slate. |
withServicesAttestationsAndMCD:
true, it will include attestations, services, and MCD.false, it will exclude attestations, services, and MCD.Important: If you've completed the import-all workflow with withServicesAttestationsAndMCD: true, you do NOT need to run the following steps:
These are already included in the imported data.
⚠️ User Data Limitation: The import/export workflow does NOT support loading users. Users must be loaded separately.
To load data as fast as possible after import-all, manually invoke the remaining steps in sequential order:
/api/workflow/load-asset-instances/api/workflow/upload-user-relations ⚠️ Required - not included in import/api/workflow/sync-responsibilities-to-instances/api/workflow/upload-assessment-results/api/workflow/evaluate-component-adoption/api/workflow/refresh-views ✅ Critical final stepYou typically do not need to run this API if you've just completed the import/export sequence. However, if you did not load services and wish to do so deliberately, call the following API:
/api/workflow/load-service-instancesLoad app instances from the app discovery source:
/api/workflow/load-app-instancesRun this job to obtain the latest inventory data for all components, excluding components of type service and app:
/api/workflow/load-asset-instances1 2{ "componentSlugs": ["COMPONENT_SLUG_1", "COMPONENT_SLUG_2"] }
Multi-threading Configuration: Component discovery can be run in multi-threaded mode for better performance. This is controlled by the feature flag epm_be_inventory_discovery_multi_threading_enabled and configured in application.yml:
1 2threadPool: componentDiscovery: threadCount: 8 # Number of threads for parallel processing timeoutMinutes: 5 # Timeout for each thread
⚠️ Important: User loading is NOT supported via the import/export workflow (/api/admin/import-all). However, it IS automatically handled by the Component Workflow Orchestrator (/api/asyncJobs/componentWorkflows).
If you're running steps manually after using import/export, you must run this step:
/api/workflow/upload-user-relationssocratesPageSize (default: 10500)Synchronize in-scope standards for app instances:
/api/workflow/sync-app-standardsSynchronize dry run standards for services:
/api/workflow/sync-dry-run-standardsRun this job to instantiate CIRs/CIRFs (Component Instance Responsibilities). These entities capture default compliance posture records for responsibilities against instances. This job creates these junction records but does not evaluate their compliance state. As a result, you'll be able to see responsibilities/requirements for services that are in-scope in the service owner view.
/api/workflow/sync-responsibilities-to-instancescomponentInstancePageSizeThis job also syncs attestations automatically after syncing responsibilities.
Prerequisite: Run the responsibility synchronization first.
After running the synchronization job, execute this job to upload the latest assessment result. This job inspects a table in Socrates maintained by Asset Readiness, uploading the latest assessment results into our database and then evaluating them.
/api/workflow/upload-assessment-resultssocratesPageSize (default: 10000)Multi-threading Configuration: Assessment upload can be run in multi-threaded mode for better performance. This is controlled by the feature flag epm_be_assessment_discovery_multi_threading_enabled and configured in application.yml:
1 2threadPool: assessmentUpload: threadCount: 6 # Number of threads for parallel processing timeoutMinutes: 10 # Timeout for each thread
If your goal is to run only the evaluation without the upload, you can optionally use the following API:
/api/workflow/synch-assessment-resultsPrerequisite: Run the responsibility synchronization first.
All CIRs that belong to responsibilities of type adoption can be evaluated by inspecting the contextual state. This job evaluates and updates the state of those records to Compliant.
The process works as follows: For a given responsibility under a specific service, check if the service is using any of the components that must be adopted. If any such instances exist, the CIR is deemed "Compliant."
/api/workflow/evaluate-component-adoptioninstancePageSizepersistBatchSizepaginateCritical: This step must be run after all data loading and evaluation jobs are complete. It refreshes the materialized views and aggregated data that power the UI and reporting.
/api/workflow/refresh-viewsThis is the final step in the orchestrator workflow and ensures that all the data you've loaded is properly reflected in the application's views.
The following workflows are part of the orchestrator but are primarily for maintenance. You can skip these during local development, but they're recommended for production-like environments:
Permanently removes component instances that have been marked as stale for an extended period:
/api/workflow/hard-delete-stale-instancesPermanently removes assessment records that are no longer relevant (controlled by feature flag epm_be_purge_stale_assessments_enabled):
/api/workflow/hard-delete-stale-assessmentsMarks component instances as stale if they haven't been seen in recent discovery runs (default: 24 hours):
/api/workflow/mark-stale-instancesThe Report view requires a CSV file, which can be generated by running the following job:
/api/workflow/generate-requirement-report/bulkIf you used the Export/Import sequence with the withServicesAttestationsAndMCD setting set to true, you should not need to run this job. However, if you would like to reload in-scope standards for services only, you may do so by executing the API below:
/api/workflow/load-services-in-scope-standardsNote: The in-scope standards import handler now supports both SERVICE and APP component instances.
Rate this page: