EdaStartProcess@1
Node EdaStartProcess@1 starts an EDA market process: it validates the process data, creates the EDA request message and sends it to the HttpAdapter of the Ponton X/P Messenger. Processes with a planned start date are only validated, so that the pipeline can store them and start them later.
The supported processes are CR_REQ_PT, EC_PODLIST, CM_PODLIST, EC_REQ_ONL, EC_PRTFACT_CHANGE, CM_REV_SP and CM_REQ_ONL, see Processes. An overview of the market processes is given in the user guide under Supported EDA processes.
Adapter Prerequisites
Node Configuration
For fields path, targetPath, targetValueWriteMode, and targetValueKind, see Overview.
transformations:
- type: EdaStartProcess@1
path: $.body.requestData # EdaProcessInfo
targetPath: $.request # EdaClientResult
# processDataPath: $.key.Values[2] # only to start a planned process
# host, user, password, isSimulationMode: optional, override the adapter configuration
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | No | $ | Path to the EdaProcessInfo with the process to start |
targetPath | string | No | $ | Path where the EdaClientResult is written |
processDataPath | string | No | - | Path to the process data of a planned process; when set, the process is started now (see Planned processes) |
host | string | No | adapter configuration | Overrides Host of the adapter configuration |
user | string | No | adapter configuration | Overrides User of the adapter configuration |
password | string | No | adapter configuration | Overrides Password of the adapter configuration |
isSimulationMode | bool | No | adapter configuration | Overrides IsSimulationMode; if true the message is sent with document mode SIMU instead of PROD |
The configuration properties are documented in the API reference.
Input: EdaProcessInfo
The node reads an EdaProcessInfo object from path:
| Property | Type | Required | Description |
|---|---|---|---|
processName | string | Yes | Name of the EDA process, see Processes |
comment | string | No | Free text; not used by the node, but available to the pipeline (e.g. to store it with the process) |
startDate | DateTime | No | Planned start of the process. If set (and processDataPath is not configured), the process is only validated and not sent |
processData | object | Yes¹ | Process-specific data, see Processes |
¹ Not needed when the process data is read from processDataPath.
{
"processName": "CR_REQ_PT",
"comment": "Request consumption data for January",
"processData": {
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-02-01T00:00:00"
}
}
Property names are matched case-insensitively, so camelCase and PascalCase both work. Enum values (sector, energyDirection, interval and dataType of CM_REQ_ONL) can be given as number or as name, e.g. "energyDirection": "Consumption" or "energyDirection": 1. Dates are ISO 8601 strings.
- If nothing is found at
path, the node does nothing and the pipeline continues. - If
processNameis empty or there is no process data, the node fails withInvalid input data. - An unknown
processNamefails the node withProcess <name> is not supported. - Process data that violates the rules of its process fails the node with
Invalid input data for <processName>.
Planned processes
The node distinguishes three cases:
| Case | Process data from | Behavior |
|---|---|---|
New process, startDate not set | processData | Validated, message created and sent immediately |
New process, startDate set | processData | Planned: only validated; no message is created or sent. The result has StatusCode 200 and carries the StartDate |
processDataPath configured (start of a planned process) | processDataPath | Validated, message created and sent immediately, regardless of startDate |
A planned process is typically stored as an entity by the pipeline (with its startDate and the process data). A second pipeline polls the due processes and starts them with processDataPath pointing to the stored process data. The process data can be stored either as a JSON object or as a JSON string; a string is parsed. The message (and therefore its message id and creation date) is only created when the process is actually sent. Rules that are checked when the message is created (an Unknown energyDirection or dataType) therefore only fail the node when the planned process is started.
The startDate of the EdaProcessInfo decides whether a process is planned. The startDate inside the processData of some processes (e.g. EC_REQ_ONL, EC_PRTFACT_CHANGE) is a separate value that is written into the EDA message.
Output: EdaClientResult
The node writes an EdaClientResult to targetPath. In the data context the property names are PascalCase, e.g. $.request.IsSuccess.
| Property | Description |
|---|---|
StatusCode | HTTP status code of the HttpAdapter as number (e.g. 200); 200 for a planned process |
Headers | Not set when sending (null) |
Content | Response body of the HttpAdapter |
Message | The EDA message that was sent (MarketParticipantDirectory, ProcessDirectory); null for a planned process. E.g. $.request.Message.ProcessDirectory.ConversationId is the conversation id that the replies of the process carry |
StartDate | Planned start date; only set for a planned process |
IsSuccess | true if StatusCode is a 2xx status code |
An HTTP error of the HttpAdapter does not fail the node. Check IsSuccess in the pipeline (e.g. with If@1).
The result is documented in EdaClientResult, the input in EdaProcessInfo.
Processes
All process data contain the market partner ids of sender and receiver:
| Property | Type | Required | Description |
|---|---|---|---|
sender | string | Yes | Market partner id of the sender, e.g. the energy community or the service provider |
receiver | string | Yes | Market partner id of the receiver, usually the distribution grid operator |
If sender or receiver is missing, the process data cannot be read and the node fails.
The replies of the market partners are received with EdaReceiver@1 and evaluated with EdaParseMessage@1.
CR_REQ_PT
Requests the consumption or production data of a metering point for a period.
| Property | Type | Required | Description |
|---|---|---|---|
meteringPoint | string | Yes | Metering point number |
from | DateTime | Yes | Start of the requested period; must be before to |
to | DateTime | Yes | End of the requested period |
sector | enum | No | Electricity (1) or Gas (2); any other value is treated as electricity |
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-02-01T00:00:00"
}
Message: CPRequest 01.12, message code ANFORDERUNG_PT. The period is sent as local time (Central Europe), the assumption of costs is always false.
Replies: ANTWORT_PT / ABLEHNUNG_PT, the data itself arrives as DATEN_CRMSG.
EC_PODLIST
Requests the list of metering points of an energy community.
| Property | Type | Required | Description |
|---|---|---|---|
energyCommunityId | string | Yes | Id of the energy community |
from | DateTime | Yes | Start of the requested period |
to | DateTime | Yes | End of the requested period |
{
"sender": "RC100001",
"receiver": "AT000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"from": "2026-01-01T00:00:00",
"to": "2026-12-31T00:00:00"
}
Message: CPRequest 01.12, message code ANFORDERUNG_ECP, sector electricity. The id of the energy community is sent in the MeteringPoint element.
Replies: SENDEN_ECP (ECMPList) / ABLEHNUNG_ECP.
CM_PODLIST
A service provider for end consumers reconciles its active and inactive data consents with the distribution grid operator.
| Property | Type | Required | Description |
|---|---|---|---|
serviceProviderId | string | Yes | Market partner id of the service provider |
from | DateTime | Yes | Start of the requested period; must be before to |
to | DateTime | Yes | End of the requested period |
sector | enum | No | Electricity (1) or Gas (2); any other value is treated as electricity |
{
"sender": "EP100001",
"receiver": "AT000001",
"serviceProviderId": "EP100001",
"from": "2026-01-01T00:00:00",
"to": "2026-12-31T00:00:00",
"sector": "Electricity"
}
Message: CPRequest 01.12, message code ANFORDERUNG_CMP. Unlike EC_PODLIST, the MeteringPoint element carries the id of the service provider, not a community id.
Replies: ANTWORT_CMP (ECMPList) / ABLEHNUNG_CMP.
According to the market role permission matrix, CM_PODLIST may only be used by the market roles VNB and EDL (service provider for end consumers). The node does not check the market role.
EC_REQ_ONL
Registers a metering point with an energy community (online request).
| Property | Type | Required | Description |
|---|---|---|---|
meteringPoint | string | Yes | Metering point number |
energyCommunityId | string | Yes | Id of the energy community |
partitionFactor | int | No | Participation factor in percent (0–255 accepted by the node) |
energyDirection | enum | Yes | Consumption (1) or Production (2); Unknown (0) is rejected when the message is created |
startDate | DateTime | No | Date of the registration; must be after today. Default: tomorrow |
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"partitionFactor": 100,
"energyDirection": "Consumption",
"startDate": "2026-11-01T00:00:00"
}
Message: CMRequest 01.30, message code ANFORDERUNG_ECON with request type EnergyCommunityRegistration, transmission cycle D and a generated CMRequestId.
Replies: ANTWORT_ECON, ZUSTIMMUNG_ECON, ABSCHLUSS_ECON (ECMPList) or ABLEHNUNG_ECON / ABBRUCH_ECON.
EC_PRTFACT_CHANGE
Changes the participation factor of a metering point in an energy community (ECMPList 01.20, EDA config patch 3.7.29).
| Property | Type | Required | Description |
|---|---|---|---|
meteringPoint | string | Yes | Metering point number |
energyCommunityId | string | Yes | Id of the energy community |
partitionFactor | int | Yes | New participation factor in percent, from 1 to 100 |
startDate | DateTime | Yes | Date from which the new factor applies; must be after today |
endDate | DateTime | No | End of the validity; must be after startDate. Without it the change is open-ended |
energyDirection | enum | Yes | Consumption (1) or Production (2); Unknown (0) is rejected when the message is created |
dataType | string | Yes | Data type of the request (MPTimeData/DataType, e.g. EnergyCommunityRegistration), at most 30 characters |
transmissionCycle | string | No | Transmission cycle of the consumption data: D, M or V |
purpose | string | No | Purpose of the data sharing, at most 100 characters |
techCode | string | No | Technology code according to AIB EECS Fact Sheet 5, at most 10 characters |
fuelCode | string | No | Fuel code according to EECS, at most 10 characters |
The length limits are checked after collapsing whitespace (leading and trailing whitespace removed, inner whitespace reduced to one space), as defined by the XML schema.
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"energyCommunityId": "AT00000000000RC100001000000000001",
"partitionFactor": 50,
"startDate": "2026-11-01T00:00:00",
"energyDirection": "Production",
"dataType": "EnergyCommunityRegistration",
"transmissionCycle": "D",
"techCode": "T010100"
}
Message: ECMPList 01.20, message code ANFORDERUNG_CPF. The process date, DateFrom and DateActivate are startDate; DateTo is endDate or 9999-12-31. ECType and ECDisModel are not sent.
Replies: ANTWORT_CPF / ABLEHNUNG_CPF.
CM_REV_SP
The service provider revokes an existing data consent.
| Property | Type | Required | Description |
|---|---|---|---|
meteringPoint | string | Yes | Metering point number |
consentId | string | Yes | Id of the consent to revoke |
endDate | DateTime | No | End of the consent; must not be in the past. Default: tomorrow |
energyCommunityId | string | No | Id of the energy community; not part of the sent message |
sector | enum | No | Electricity (1) or Gas (2); other values are sent as electricity |
{
"sender": "RC100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"consentId": "AT000001000000000000000000000001",
"endDate": "2026-11-01T00:00:00"
}
Message: CMRevoke 01.10, message code AUFHEBUNG_CCMS.
Replies: ANTWORT_CCMS / ABLEHNUNG_CCMS.
CM_REV_SP is the only outgoing revocation process. Revocations by the customer (CM_REV_CUS) or by the grid operator (CM_REV_IMP) are only received, as AUFHEBUNG_CCMC and AUFHEBUNG_CCMI, and evaluated with EdaParseMessage@1.
CM_REQ_ONL
Requests a data sharing consent of the end customer (online request).
| Property | Type | Required | Description |
|---|---|---|---|
meteringPoint | string | Yes | Metering point number |
purpose | string | Yes | Purpose of the data sharing; sent for metering data requests |
dataType | enum | Yes | MeteringData (1) or MasterData (2); Unknown (0) is rejected when the message is created |
startDate | DateTime | Yes² | Start of the consent. Default: today |
consentId | string | Yes² | Id of an existing consent; only sent for master data requests |
endDate | DateTime | No | End of the consent |
interval | enum | No | Metering interval for metering data: QuarterHourly (0, default), Hourly (1), Daily (2), Variable (3) |
sector | enum | No | Electricity (1) or Gas (2); other values are sent as electricity |
² At least one of startDate and consentId must be set.
{
"sender": "EP100001",
"receiver": "AT000001",
"meteringPoint": "AT0000000000000000000000000000001",
"dataType": "MeteringData",
"interval": "QuarterHourly",
"purpose": "Energy monitoring",
"startDate": "2026-11-01T00:00:00",
"endDate": "2027-10-31T00:00:00"
}
Message: CMRequest 01.30, message code ANFORDERUNG_CCMO with a generated CMRequestId. For metering data, the metering interval (QH, H, D, V), transmission cycle D and the purpose are sent.
Replies: ANTWORT_CCMO, ZUSTIMMUNG_CCMO / ABLEHNUNG_CCMO.
Complete sample of pipeline configuration
This sample receives a process via HTTP, starts it (or only validates it if it is planned) and returns the result.
triggers:
- type: FromHttpRequest@1
path: /startProcess
method: POST
transformations:
- type: EdaStartProcess@1
path: $.body.requestData
targetPath: $.request
- type: If@1
description: request successful
path: $.request.IsSuccess
operator: Equals
value: true
valueType: Boolean
transformations:
- type: Logger@1
message: EDA process started or planned
This second sample starts planned processes that are due. The query returns the process name in Values[0] and the stored process data in Values[2].
triggers:
- type: FromPolling@1
interval: 00:10:00
transformations:
- type: DateTime@1
operation: Now
targetPath: $.Now
- type: GetQueryById@1
targetPath: $.query
queryRtId: 000000000000000000000003 # planned processes
fieldFilters:
- attributePath: startTime
operator: LessEqualThan
comparisonValuePath: $.Now
- type: ForEach@1
iterationPath: $.query.Rows
maxDegreeOfParallelism: 1
transformations:
- type: SetPrimitiveValue@1
valueType: String
targetPath: $.process.processName
valuePath: $.key.Values[0]
- type: EdaStartProcess@1
path: $.process
processDataPath: $.key.Values[2]
targetPath: $.request