Skip to main content

Export reference


Where everything is kept​

An export you download saves nothing. A scheduled export keeps the following, all private to your organisation. For Northgate Energy's schedule EXPORT_GAS_AND_POWER_TO_THE_ETRM:

WhatServiceIDNotes
The scheduleprocessEXPORT_GAS_AND_POWER_TO_THE_ETRMService Export. Runs the script odsl-extensions\extensions\export\odsl.export.runner with the schedule as its input, on its cron.
The report configurationreportconfig, privateEXPORT_GAS_AND_POWER_TO_THE_ETRMReport type Fixed, category Exports, template odsl-extensions\extensions\export\odsl.export.report
Stored reportsreport, privateEXPORT_GAS_AND_POWER_TO_THE_ETRM and the export dateOne per export date, read as EXPORT_GAS_AND_POWER_TO_THE_ETRM:2026-10-19. A rerun of a date replaces it.
DeliveriesautomationAssigned by the platformA condition on the report, the target and its fields, and @transformer set to an output template
Runsprocess-execAssigned by the platformOne per run, with name the schedule id

The schedule input​

The process input is the schedule. You can change it in the portal's process editor, or run the process with some of it changed, for example ondate to export an earlier date.

FieldExampleWhat it does
key, name, reportgas_and_power_to_the_etrm, Gas and power to the ETRM, EXPORT_GAS_AND_POWER_TO_THE_ETRMThe schedule's key, name, and the report the runs are stored in
group6710c2...A group to export, read on each run. When it is set, items is ignored.
items[{"id": "ICE_TTF:SETTLE", "service": "data", "type": "VarTimeSeries"}]The items to export. service is data or object. type may be empty, and is then found when it runs. name, currency and units are optional.
items[].conditions[{"field": "volume", "op": "gte", "value": "15"}]An event list's conditions, as set in its filter. op is eq, ne, in, nin, contains, gt, gte, lt, lte, set or unset.
items[].filterText"product" in ["TTF", "DE Power Base"] and "volume" >= 15The conditions as an ODSL condition, written by the extension. This is what the run uses.
items[].fields["product", "contract", "volume", "price"]An event list's fields to export; empty for all
items[].emptyOkfalsetrue when no events is normal for the event list
ondate"" or 2026-10-16Empty for a scheduled run. A date exports that date, with no retries.
offset0Business days from the run date to the export date: 0, -1 or -2
calendarBUSINESSCalendar for business days and timeseries gaps
range{"type": "days", "days": 7}Timeseries values: type is ondate, days (with days), mtd, previousMonth or fixed (with start and end)
curvesondateondate, latest or range
maxOndates31With range curves, the latest this many curves
tenorsM01-M03, Q01The curve contracts to keep; empty for all
layoutlongwide also stores the column per item table
missing.actionpreviousskip, blank, previous or fail
missing.lookback10Days to look back for earlier data
missing.gapsnonenone, blank or previous
missing.retry300, 15, 30 or 60 minutes
missing.until20:00Retry time, UTC

The report data​

The data of a stored report, which the report template and the output templates read:

FieldWhat it holds
exportkey, name, ondate (the export date), start and end (the timeseries range), range, curves, tenors, layout, missingAction, generated (UTC)
summaryCounts as text: items, exported, partial, previous, missing, errors, rows, events. hasEvents says whether any event list was exported. complete is true when every item was exported from its own data, and hasMissing, hasErrors, hasPrevious and hasPartial say whether each count is above zero.
itemsOne per item: id, type, name, status (ok, partial, previous, missing, error), rows, from, message, and the flags isOk, isPartial, isPrevious, isMissing, isError
rowsThe values: id, type, ondate (curves), index (time or tenor), value (as stored), text (the value as text, without trailing zeros), numeric, status, from, name, currency, units, and the flags isPrevious and isMissing
events, eventColumnsEvents: each event's cells (a text per column) and props (name, text and numeric, for the fields that have a value), and the column names: event, eventid, eventtime, then eventstart and eventend when they differ from the event time, timezone and eventtype when set, then the fields
objects, objectColumnsMaster data: each object's id, cells (a text per column) and props (name and text), and the column names
wideWith the wide layout: columns, series (rows by key) and curves (rows by ondate and tenor), each with cells
hasRows, hasEvents, hasObjectsWhether there are rows, events and master data

Every row has every field, blank when there is nothing, so your own Mustache templates can use them safely. Array elements, and the columns, cells and props of the events, have a comma field, , on all but the last, for writing JSON and CSV.


Output templates​

The output templates are Mustache scripts of the extension, used as the @transformer of a delivery:

TemplateFormat
odsl-extensions\extensions\export\odsl.export.output.csvCSV, one row per value, all columns
odsl-extensions\extensions\export\odsl.export.output.csv_valuesCSV with id, ondate, index and value
odsl-extensions\extensions\export\odsl.export.output.csv_wideCSV with a column per item
odsl-extensions\extensions\export\odsl.export.output.csv_objectsCSV of the master data
odsl-extensions\extensions\export\odsl.export.output.csv_eventsCSV of the events
odsl-extensions\extensions\export\odsl.export.output.tsvTab separated
odsl-extensions\extensions\export\odsl.export.output.jsonJSON
odsl-extensions\extensions\export\odsl.export.output.jsonlJSON Lines
odsl-extensions\extensions\export\odsl.export.output.xmlXML
odsl-extensions\extensions\export\odsl.export.output.htmlHTML page with inline styles

To send another format, copy one into your own Mustache script and use it as the transformer of an automation on the report. You can try a template on a stored report with the REST API: GET report/v1/private/EXPORT_GAS_AND_POWER_TO_THE_ETRM:2026-10-19?_template=<script id> with the header Accept: text/html.


Extension contents​

TypeNamePurpose
Extensionodsl.exportExport data
ViewGroups, Apps, ExportExport the selected group (feature odsl.export.manage)
ViewOperations, Export dataExport anything (feature odsl.export.data)
Feature policyextension.odsl.exportBoth features, for everyone
Scriptsodsl.export.common, odsl.export.workspace, odsl.export.schedulesThe screens
Scriptodsl.export.runnerThe ODSL script every schedule's process runs
Scriptodsl.export.reportThe template of the stored reports
Scriptsodsl.export.output.*The output templates
Scriptsexport.timeseries.csv, export.timeseries.json, export.timeseries.xmlServer export templates for the Template format

Troubleshooting​

ProblemWhat to check
The Export app is not on the Apps tab of a groupThe extension and the portal must both be up to date: the Groups screen lists Apps views with the section Manage.
An item shows ErrorThe message is the platform's reason, for example the item does not exist or you have no access to it
A curve exports nothingWith Curve for one ondate, check there is a curve on that date. With every ondate in the range, check the range contains curve dates. With Tenors set, the Items tab says how many contracts are in the tenors: check the tenors are the curve's (M01) or its contract codes (2026M11).
An event list exports no eventsCheck the date range: events count by their event time, in whole days in UTC. Then check the conditions of its filter, for example a number written with text around it. The API tab shows the filter sent.
A delivery of an event list is emptyThe CSV, tab separated and JSON Lines formats write timeseries and curve values only. Choose CSV of the events, JSON, XML or HTML.
A scheduled run is still waitingRecent runs shows reschedule while it waits for late data. It decides at the retry time.
A run failed with the message that data is missingWhen an item has no data is Stop the export. The process log lists the items.
The Template format is greyed outIt needs a group with every item ticked
The column per item CSV delivery is emptySet the schedule's layout to One row per value, plus a column per item table
A delivery email does not arriveRecipients outside your organisation's email domain need your organisation to allow them. Check the automation log for the report.