> ## Documentation Index
> Fetch the complete documentation index at: https://code.dcycle.io/llms.txt
> Use this file to discover all available pages before exploring further.

# CSRD

> Read and load a double materiality assessment and its impacts, risks and opportunities

<Note>
  **Early Access** - The Dcycle CLI is currently available for enterprise customers.
  [Contact us](/docs/support) to learn more about access.
</Note>

## Overview

A double materiality assessment scores every sustainability matter on two axes — the impact the organization has on the world, and the financial effect the matter has on the organization. Matters that score highly on either axis are **material**, and material matters are what an ESRS report has to cover.

* `dcy csrd dm` reads and scores the assessment.
* `dcy csrd iro` reads and loads the **IROs** — the impacts, risks and opportunities that say what a matter actually means for this business.

Once the IROs exist, [`dcy goal` and `dcy action`](/cli/goals-actions) plan the work against them.

<Note>
  Materiality is **derived, never set**. A matter becomes material when either score reaches the threshold; there is no flag to set it by hand.
</Note>

### Available Commands

| Command               | Description                                              |
| --------------------- | -------------------------------------------------------- |
| `dcy csrd dm list`    | List the assessment's matters with their scores          |
| `dcy csrd dm upload`  | Bulk load impact and financial scores from an Excel file |
| `dcy csrd iro list`   | List a year's IROs                                       |
| `dcy csrd iro upload` | Bulk create IROs from an Excel file                      |

***

## List the Assessment

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy csrd dm list --year 2025
dcy csrd dm list --year 2025 --material
```

Output:

```
Showing 3 of 37 double materiality records in Acme Corp
71c79069-... | environmental | Climate change mitigation | impact 82 | financial 79 | MATERIAL
29e6da43-... | environmental | Climate change adaptation | impact 71 | financial 56 | MATERIAL
4e9762f3-... | environmental | Pollution of air           | impact -  | financial -  | not material
```

The first column is the **sustainability matter id**, which is what an IRO hangs off.

### Flags

| Flag         | Default | Description              |
| ------------ | ------- | ------------------------ |
| `--year`     | —       | Assessment year          |
| `--material` | `false` | Only material matters    |
| `--page`     | `1`     | Page number              |
| `--size`     | `50`    | Page size (max 100)      |
| `--org`      | —       | Organization ID override |

<Note>
  `--material` filters to material matters only when passed. Leaving it off returns **every** matter, not the non-material ones.
</Note>

***

## Load Scores

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy csrd dm upload --file scores.xlsx --year 2025
```

The file needs these columns:

| Column                          | Required | Description                               |
| ------------------------------- | -------- | ----------------------------------------- |
| `csrd_sustainability_matter_id` | Yes      | From `dcy csrd dm list`                   |
| `impact_score`                  | Yes      | 0–100                                     |
| `financial_score`               | Yes      | 0–100                                     |
| `being_measured`                | —        | Whether data collection is already active |

Output:

```
processed: 14
```

<Warning>
  Scores **update the year's existing records**. A matter with no record for that year comes back as a per-row error rather than being created, so the assessment has to exist first. Matter ids are also per-catalogue — ids read from one organization will not resolve in another.
</Warning>

***

## List IROs

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy csrd iro list --year 2024
```

Output:

```
Showing 27 of 27 IROs in Acme Corp
06c6b371-... | CURRENT_NEGATIVE_IMPACT | score 78 | Scope 1 and 2 emissions across the 17 sites...
1a71beb6-... | RISK                    | score 65 | Prolonged heat waves in the southern sites...
```

### Flags

| Flag     | Required | Default | Description              |
| -------- | -------- | ------- | ------------------------ |
| `--year` | Yes      | —       | Assessment year          |
| `--page` | —        | `1`     | Page number              |
| `--size` | —        | `50`    | Page size                |
| `--org`  | —        | —       | Organization ID override |

***

## Load IROs

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
dcy csrd iro upload --file iros.xlsx --year 2024
```

The file needs these columns:

| Column                     | Description                             |
| -------------------------- | --------------------------------------- |
| `sustainability_matter_id` | From `dcy csrd dm list`                 |
| `description`              | What the impact, risk or opportunity is |
| `type`                     | See below                               |
| `score`                    | Severity or magnitude, 0–100            |

Valid types:

| Type                      |                             |
| ------------------------- | --------------------------- |
| `current_positive_impact` | `potential_positive_impact` |
| `current_negative_impact` | `potential_negative_impact` |
| `risk`                    | `opportunity`               |

Output:

```
created: 27
```

<Warning>
  Rows are **always created**, never matched against what is already there. Uploading the same file twice duplicates every row.
</Warning>

<Note>
  An IRO can hang off any matter in the catalogue, whether or not the matter came out material.
</Note>

***

## Example: load an assessment end to end

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
# 1. What matters exist, and their ids
dcy csrd dm list --year 2025 --size 100 --json > matters.json

# 2. Score them
dcy csrd dm upload --file scores.xlsx --year 2025

# 3. Check what came out material
dcy csrd dm list --year 2025 --material

# 4. Load the IROs those matters imply
dcy csrd iro upload --file iros.xlsx --year 2025

# 5. Plan against them
dcy action links --project <project-id> --type iro
```

## Related

<CardGroup cols={2}>
  <Card title="Goals & Actions" icon="bullseye" href="/cli/goals-actions">
    Targets and work planned against the IROs
  </Card>

  <Card title="CSRD MCP tools" icon="robot" href="/mcp/csrd">
    The same assessment, read and written by an AI assistant
  </Card>
</CardGroup>
