Understanding management systems in ISO 14001
ISO 14001 is the international standard for Environmental Management Systems (EMS). Beyond measuring emissions, it requires organizations to actively manage environmental risks, track nonconformities, define improvement objectives, and close corrective actions — creating a continuous improvement loop. Dcycle’s Management Systems module maps directly to the ISO 14001 Plan-Do-Check-Act (PDCA) cycle:All management system resources are scoped to a Project.Every endpoint uses
/management-systems/projects/{project_id}/.... A project represents an ISO 14001 certification scope (e.g., a facility, a business unit, or the entire organization). Retrieve your project_id from the Projects API before proceeding.Prerequisites
Before starting, ensure you have:- Dcycle API credentials (get them here)
- A valid
project_idfor the ISO 14001 scope you are managing - Your
organization_id(returned alongside the project)
Data map: management system resources overview
Workflow overview
Identify risks and opportunities
Register environmental risks and opportunities for your project. Dcycle auto-assigns a sequential code (e.g.,
R-001, O-001) and computes a risk level from probability × impact.Log nonconformities and incidents
Record deviations, incidents, or observations detected during audits or operations. Attach evidence files as needed.
Define environmental objectives
Set measurable targets linked to the project scope (e.g., “Reduce water consumption by 15%”). Track progress with
current_value vs. target_value.Create and assign actions
Link corrective, preventive, or improvement actions to a risk, opportunity, or nonconformity. Assign responsible users and deadlines.
Step 1: Risks and opportunities
Emission sources covered
| Type | Code prefix | When to use |
|---|---|---|
| risk | R-001 | Environmental threats (regulatory, operational, climate) |
| opportunity | O-001 | Improvement areas (efficiency, new practices, certifications) |
Risk scoring
Dcycle uses a three-phase scoring model for risks: inherent, mitigation, and residual.Inherent risk
Mitigation coefficients (risks only)
Optionally providemitigation_probability and mitigation_impact — decimal coefficients between 0.00 and 1.00 representing how much each dimension is reduced by controls in place. Both must be provided together.
Residual risk (computed)
When both mitigation coefficients are provided, Dcycle computes:📋 Data map: risks and opportunities
📋 Data map: risks and opportunities
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
type | string | ✅ | "risk" or "opportunity" | "risk" |
title | string | ✅ | Short title (max 500 chars) | "Regulatory non-compliance risk" |
description | string | ❌ | Detailed description | "Risk of CBAM penalty if..." |
source | string | ❌ | Where it was identified | "Internal audit Q1-2026" |
iso_clause | string | ❌ | ISO 14001 clause reference | "6.1.2" |
probability_level | integer | ❌ | 1 (low) to 5 (high) | 3 |
impact_level | integer | ❌ | 1 (low) to 5 (high) | 4 |
mitigation_probability | decimal | ❌ | Mitigation coefficient for probability (0.00–1.00). Risks only. Must be paired with mitigation_impact. | 0.50 |
mitigation_impact | decimal | ❌ | Mitigation coefficient for impact (0.00–1.00). Risks only. Must be paired with mitigation_probability. | 0.40 |
status | string | ❌ | Default: "open". Also: "in_progress", "closed" | "open" |
owner_user_id | UUID | ❌ | Responsible user | "a8315ef3-..." |
review_date | date | ❌ | Next review date | "2026-09-30" |
facility_id | UUID | ❌ | Scope to a specific facility | "b9c2..." |
is_transversal | boolean | ❌ | Applies across all companies. Default: false | false |
project_id: Projects API →GET /v1/projectsowner_user_id: Members API →GET /v1/membersfacility_id: Facilities API →GET /v1/facilities
List and filter risks
Step 2: Nonconformities, incidents, and observations
Dcycle uses a single endpoint for all three types of deviation records. Thetype field distinguishes them:
| Type | Code prefix | ISO 14001 context |
|---|---|---|
nonconformity | NC-001 | Failure to meet a requirement (Clause 10.2) |
incident | INC-001 | Environmental incident or near-miss |
observation | OBS-001 | Deviation that does not yet qualify as a nonconformity |
📋 Data map: nonconformities
📋 Data map: nonconformities
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
type | string | ✅ | "nonconformity", "incident", or "observation" | "nonconformity" |
title | string | ✅ | Short title (max 500 chars) | "Waste segregation procedure not followed" |
severity | string | ❌ | "minor", "major", or "critical" | "major" |
source | string | ❌ | Where detected | "External audit ISO 14001" |
iso_clause | string | ❌ | ISO clause reference | "8.1" |
detected_date | date | ❌ | Detection date | "2026-04-10" |
detected_by_user_id | UUID | ❌ | Dcycle user who detected it | "c3d4..." |
detected_by_name | string | ❌ | Name if not a Dcycle user | "External Auditor" |
root_cause | string | ❌ | Root cause analysis | "Lack of training" |
location | string | ❌ | Where it happened | "Warehouse B - sorting area" |
immediate_actions | string | ❌ | Actions taken on the spot | "Area cordoned off and waste re-sorted" |
area_causante | string | ❌ | Causing department | "Operations" |
area_detectora | string | ❌ | Detecting department | "Quality & Environment" |
cost | decimal | ❌ | Associated cost (in org currency) | "1500.00" |
facility_id | UUID | ❌ | Scope to a specific facility | "b9c2..." |
Attach evidence files
Nonconformities support file attachments (audit reports, photos, etc.) via a two-step presigned URL flow:Step 3: Environmental objectives
Objectives let you define measurable environmental targets and track progress over time. Dcycle auto-assigns codes likeOBJ-001.
📋 Data map: objectives
📋 Data map: objectives
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
title | string | ✅ | Objective title (max 500 chars) | "Reduce energy consumption by 10%" |
description | string | ❌ | Additional context | "Aligned with ISO 14001 clause 6.2" |
responsible_user_id | UUID | ❌ | Responsible user | "d5e6..." |
start_date | date | ❌ | Start of measurement period | "2026-01-01" |
end_date | date | ❌ | Target completion date | "2026-12-31" |
status | string | ❌ | Default: "open". Also: "in_progress", "achieved", "not_achieved" | "in_progress" |
target_value | decimal | ❌ | Target metric value | "90" |
current_value | decimal | ❌ | Current metric value (updated over time) | "95" |
unit | string | ❌ | Unit of measurement | "MWh" |
Update progress
UsePATCH to update current_value as measurements come in:
Step 4: Actions
Actions are the operational core of the management system. Every action must be linked to a source: a risk, an opportunity, or a nonconformity.action_type | Purpose |
|---|---|
immediate | Stop-gap measure taken on the spot |
corrective | Eliminate root cause of a nonconformity |
preventive | Avoid a potential nonconformity or risk |
improvement | Enhance a process beyond minimum requirements |
📋 Data map: actions
📋 Data map: actions
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
source_type | string | ✅ | "risk", "opportunity", or "nonconformity" | "nonconformity" |
source_id | UUID | ✅ | ID of the risk, opportunity, or nonconformity | "e7f8..." |
action_type | string | ✅ | "immediate", "corrective", "preventive", "improvement" | "corrective" |
title | string | ✅ | Action title (max 500 chars) | "Deliver waste segregation training" |
description | string | ❌ | Detailed steps | "Mandatory 2h session for all operators" |
responsible_user_id | UUID | ❌ | Primary responsible user | "f9a0..." |
responsible_user_ids | UUID[] | ❌ | Multiple responsible users (max 50) | ["f9a0...", "b1c2..."] |
deadline | date | ❌ | Target completion date | "2026-05-15" |
status | string | ❌ | Default: "open". Also: "in_progress", "completed", "cancelled" | "open" |
cost | decimal | ❌ | Estimated cost | "800.00" |
Close and verify effectiveness
When the action is completed, mark it as done and record effectiveness verification — required by ISO 14001 Clause 10.2:Actions are linked to their source automatically.When you retrieve a nonconformity or risk via the
GET /{id} endpoint, the response includes a nested actions array — no separate join needed.Step 5: Monitor via dashboard
Pull a real-time summary of the project’s management system health:Dashboard response schema
| Field | Type | Description |
|---|---|---|
risks.total | integer | Total risks for the project |
risks.by_level | object | Count per level: low, medium, high, critical |
opportunities.total | integer | Total opportunities |
opportunities.by_status | object | Count per status |
nonconformities.total | integer | Total nonconformities + incidents + observations |
nonconformities.by_status | object | Count per status |
nonconformities.by_severity | object | Count per severity |
nonconformities.by_area_causante | object | Count per causing department |
actions.total | integer | Total actions |
actions.overdue_count | integer | Actions past deadline with status not completed |
actions.corrective_by_status | object | Corrective actions count by status |
Auto-generated codes
Every resource gets a sequential, human-readable code automatically:| Resource | Code format | Example |
|---|---|---|
| Risk | R-{sequence} | R-001, R-012 |
| Opportunity | O-{sequence} | O-001 |
| Nonconformity | NC-{sequence} | NC-001 |
| Incident | INC-{sequence} | INC-003 |
| Observation | OBS-{sequence} | OBS-007 |
| Objective | OBJ-{sequence} | OBJ-001 |
| Action | Derived from source | NC-001/AC-001 |
Related documentation
Projects API
Retrieve your project IDs and organization scope
Members API
Look up user IDs for owner and responsible fields
Facilities API
Scope risks and nonconformities to specific facilities
Authentication guide
Set up API keys and organization headers

