Files
vlt/SwD/CIM/Test Cases - 61968-5.md
T
2026-09-18 23:22:55 +10:00

3698 lines
228 KiB
Markdown

# IEC 61968-5 Distributed Energy Optimization — Test Cases
Source: EPRI 3002014703, *Test Script for IEC 61968-5 Distributed Energy Optimization, Third Edition*. Per test case: narrative, pre/post-conditions, each message step with its sample XML, and the Test Results step summary. Sequence diagrams and WSDL/XSD artifact tables omitted (see PDF).
## DER Group Creation, Modification, Deletion and Retrieval (Section 9)
### DERG-1a: Client requests creation of a DER Group and Server replies (Success - Single DER Group)
In this test case, the Client requests the Server to instantiate a single DER Group: DG1 with three EndDevice members and two DERFunctions (connectDisconnect and realPowerDispatch). In this example, an mRID identifier is also assigned to the DER Group. The Server returns a response message indicating success with no errors. If the Server were in fact a true DERMS, then upon success of this messaging interchange, the DER Group would be known to the DERMS and could be subsequently changed or deleted. Subsequent test cases in this report will assume the persistence of specific DERGroups and refer to them by the mRIDs and/or Names assigned in the “create” test cases. See the Pre-Condition(s) section of subsequent test cases for additional information.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. As noted, this test case also illustrates the successful creation of a single DER Group. Subsequent test cases will illustrate attempts to create multiple DER Groups through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** None
**Post-Condition(s):** A new DER Group is created with the mRID and Names identifier(s) that were passed in the request message
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-05-31T13:55:27-06:00</msg:Timestamp>
<msg:MessageID>bc9b3eaa-bdc0-4d61-9577-0c78515fee65</msg:MessageID>
<msg:CorrelationID>bb9a2075-e2e1-43ba-a234-e5d800bfff6e</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>a20c559c-dda3-41e5-98b7-41afeb63ae5b</mRID>
<description>DER Group 1</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>23cbd502-128a-4c4e-b7cd-5eaf6d9ae275</mRID>
</EndDevices>
<EndDevices>
<mRID>7fc50292-2e8a-4e9c-80ae-9105f50ce3ea</mRID>
</EndDevices>
<EndDevices>
<mRID>63d092b7-baed-4bfe-ad97-5709f2ce4ec9</mRID>
</EndDevices>
<Names>
<name>DG1</name>
</Names>
<version>
<date>2017-05-31T13:55:01-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-05-31T13:58:44-06:00</Timestamp>
<MessageID>1ff7fd0a-1e68-4f1e-b347-3a8c77c1ef70</MessageID>
<CorrelationID>bb9a2075-e2e1-43ba-a234-e5d800bfff6e</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group | http://xx.xxx.xxx.xxx/ | create | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-1b: Client requests creation of a DER Group and Server replies (Failure - Single DER Group)
In this test case, the Client requests the Server to instantiate a single DER Group with two members and one DERFunction; however, the IDs (mRIDs and Names) of the DER Group are the same as in Test Case DERG-1a. Consequently, the Server returns a response message indicating a failure based on a business rule prohibiting multiple DER Groups with the same mRID or Name(s). (See Appendix F for error codes.)
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. As noted, this test case also illustrates a failure of a request to create a single DER Group. Subsequent test cases will illustrate attempts to create multiple DER Groups through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** Assumed completion of Test Case DERG-1a
**Post-Condition(s):** Creation of the DER Group failed as indicated in the Step 2 response message
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-05-31T14:37:02-06:00</msg:Timestamp>
<msg:MessageID>d6ad7d26-21f5-4b3a-8646-29dd2bd07c0d</msg:MessageID>
<msg:CorrelationID>ab2841cf-4388-435b-b3f6-4ee8144fbf79</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>a20c559c-dda3-41e5-98b7-41afeb63ae5b</mRID>
<description>DER Group 1</description>
<DERFunction>
<connectDisconnect>false</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>646bd360-9519-4c60-8c1f-c4d225e806f7</mRID>
</EndDevices>
<EndDevices>
<mRID>8b0e2733-0c5d-4d69-be89-c8ed1d8564b7</mRID>
</EndDevices>
<Names>
<name>DG1</name>
</Names>
<version>
<date>2017-05-31T13:36:33-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-05-31T14:37:45-06:00</Timestamp>
<MessageID>78da84bc-02a3-4bfc-97f9-cb5fd52b612d</MessageID>
<CorrelationID>ab2841cf-4388-435b-b3f6-4ee8144fbf79</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>6.1</code>
<level>FATAL</level>
<reason>Request cancelled per business rule</reason>
<ID kind="uuid" objectType="DERGroup">a20c559c-dda3-41e5-98b7-41afeb63ae5b</ID>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group | http://xx.xxx.xxx.xxx/ | create | DERGroups | |
| 2 | Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-1c: Client requests creation of two DER Groups and Server replies (Success - Two DER Groups in a single message)
In this test case, the Client requests the Server to instantiate two DER Groups: DG2 with two members and two DERFunctions and DG3 with four members and three DERFunctions. The Server returns a response message indicating success with no errors. If the Server were in fact a true DERMS, then upon success of this messaging interchange, the DER Groups would be known to the DERMS and could be subsequently changed or deleted. Subsequent test cases in this report will assume the persistence of specific DER Groups and refer to them by the mRIDs and/or Names assigned in the “create” test cases. See the Pre-Condition(s) section of subsequent test cases for additional information.
**Pre-Condition(s):** None
**Post-Condition(s):** Two new DER Groups are created with the Names identifiers that were passed in the request message
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T10:04:29-06:00</msg:Timestamp>
<msg:MessageID>1c6c3e7e-8a67-48cf-8d7c-af9164863baa</msg:MessageID>
<msg:CorrelationID>d151d469-d8b2-492c-b352-4a175e73f8cf</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</mRID>
<description>DER Group 2</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</mRID>
</EndDevices>
<EndDevices>
<mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</mRID>
</EndDevices>
<Names>
<name>DG2</name>
</Names>
<version>
<date>2017-06-02T10:04:10-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
<EndDeviceGroup>
<mRID>6b3241b8-a0f1-429b-b163-459122b5672e</mRID>
<description>String</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>c3af4062-e6a9-4a05-bbac-e0215875fda2</mRID>
</EndDevices>
<EndDevices>
<mRID>7195c25f-4b54-4714-a90e-710dd7b1bcdd</mRID>
</EndDevices>
<EndDevices>
<mRID>9d6b55b4-e320-45d5-8ff8-6f947afa4b02</mRID>
</EndDevices>
<EndDevices>
<mRID>d1062c85-a938-4d11-af45-9ba97d444d5e</mRID>
</EndDevices>
<Names>
<name>DG3</name>
</Names>
<version>
<date>2017-06-02T10:04:12-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T10:04:41-06:00</Timestamp>
<MessageID>aeaa09a7-f6fd-4621-a8fb-3144061b34aa</MessageID>
<CorrelationID>d151d469-d8b2-492c-b352-4a175e73f8cf</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group | http://xx.xxx.xxx.xxx/ | create | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-1d: Client requests creation of two DER Groups and Server replies (Two DER Groups in a single message - One succeeds and one fails)
In this test case, the Client requests the Server to instantiate two DER Groups: DG4 and DG5.
The Server returns a response message indicating that instantiation of the second DER Group (DG5) failed because of a business rule. Because no error is reported for the first DER Group (DG4), the interpretation of the response message is that the instantiation of the first DER Group (DG4) succeeded. (See Appendix F for error codes.) If the Server were in fact a true DERMS, then upon success of this messaging interchange, the first of the two DER Groups would be known to the DERMS and could be subsequently changed or deleted. Subsequent test cases in this report will assume the persistence of specific DER Groups and refer to them by the mRIDs and/or Names assigned in the “create” test cases. See the Pre-Condition(s) section of subsequent test cases for additional information.
**Pre-Condition(s):** Assumed completion of Test Case DERG-1c.
**Post-Condition(s):** One new DER Group is created with the Names identifier that was passed in the request message. An error is returned, indicating that instantiation of the second DER Group failed.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T10:52:50-06:00</msg:Timestamp>
<msg:MessageID>221aa996-3c96-4729-a845-54bec6892089</msg:MessageID>
<msg:CorrelationID>01943d53-c111-4924-8e92-e487296c88b0</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>true</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>c378df3a-294c-4743-ad78-65f970231b5b</mRID>
</EndDevices>
<EndDevices>
<mRID>6de3d770-6087-45bc-a5c8-6fca25f5a318</mRID>
</EndDevices>
<Names>
<name>DG4</name>
</Names>
<version>
<date>2017-06-02T10:52:31-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
<EndDeviceGroup>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>true</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>8e5439f8-e95a-43ca-8b95-7bc176fa8a35</mRID>
</EndDevices>
<Names>
<name>DG5</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T10:52:59-06:00</Timestamp>
<MessageID>6eb9a15d-ba79-4c58-ba0a-4c74e8879703</MessageID>
<CorrelationID>01943d53-c111-4924-8e92-e487296c88b0</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>6.1</code>
<level>FATAL</level>
<reason>Request cancelled per business rule</reason>
<ID kind="name" objectType="DERGroup">DG5</ID>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group | http://xx.xxx.xxx.xxx/ | create | DERGroups | |
| 2 | Mixed Success/Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-1e: Client requests creation of a DER Group and Server replies (Success - Single DER Group; Responder supplies mRID)
In this test case, the Client requests the Server to instantiate a single DER Group (DG6) by specifying a valid Names identifier for the DERGroup. The Server returns a response message indicating success with no errors. The Server (because of an assumed business rule) also assigns an mRID identifier to the DER Group; consequently, the response message in Step 2 includes a Payload section that adds the mRID identifier to the Payload of the Step 1 request message. If the Server were in fact a true DERMS, then upon success of this messaging interchange, the DER Group would be known to the DERMS and could be subsequently changed or deleted. Subsequent test cases in this report will assume the persistence of specific DER Groups and refer to them by the mRIDs and/or Names assigned in the “create” test cases. See the Pre-Condition(s) section of subsequent test cases for additional information.
**Pre-Condition(s):** None.
**Post-Condition(s):** A new DER Group is created with the Names identifier that was passed in the request message. The server responds with an indication of success and adds the mRID identifier in the Payload section of the response message.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T11:20:42-06:00</msg:Timestamp>
<msg:MessageID>d83c8b6a-91df-441d-9bda-4ceb19066a15</msg:MessageID>
<msg:CorrelationID>ddce82e7-c3a3-48d9-816e-6cc6a3cfe619</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>e8a2f05b-aca9-46dc-971b-be22fcedc00b</mRID>
</EndDevices>
<Names>
<name>DG6</name>
</Names>
<version>
<date>2017-06-02T11:20:28-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T11:20:52-06:00</Timestamp>
<MessageID>e2fd30cd-afbb-4089-a56c-98c8f2028383</MessageID>
<CorrelationID>ddce82e7-c3a3-48d9-816e-6cc6a3cfe619</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<obj:DERGroups>
<obj:EndDeviceGroup>
<obj:mRID>854d906-1f5d-40fe-9db3-2fb76bc43499</obj:mRID>
<obj:DERFunction>
<obj:connectDisconnect>true</obj:connectDisconnect>
<obj:frequencyWattCurveFunction>false</obj:frequencyWattCurveFunction>
<obj:maxRealPowerLimiting>false</obj:maxRealPowerLimiting>
<obj:rampRateControl>false</obj:rampRateControl>
<obj:reactivePowerDispatch>true</obj:reactivePowerDispatch>
<obj:realPowerDispatch>true</obj:realPowerDispatch>
<obj:voltageRegulation>false</obj:voltageRegulation>
<obj:voltVarCurveFunction>false</obj:voltVarCurveFunction>
<obj:voltWattCurveFunction>false</obj:voltWattCurveFunction>
</obj:DERFunction>
<obj:EndDevices>
<obj:mRID>e8a2f05b-aca9-46dc-971b-be22fcedc00b</obj:mRID>
</obj:EndDevices>
<obj:Names>
<obj:name>DG6</obj:name>
</obj:Names>
<obj:version>
<obj:date>2017-06-02T11:20:28-06:00</obj:date>
<obj:major>1</obj:major>
<obj:minor>0</obj:minor>
<obj:revision>0</obj:revision>
</obj:version>
</obj:EndDeviceGroup>
</obj:DERGroups>
</tns:Payload>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group | http://xx.xxx.xxx.xxx/ | create | DERGroups | |
| 2 | Success Response including | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-2a: Client requests modification of an existing DER Group and Server replies (Success - Change supported DER Functions to include voltage regulation)
In this test case, the Client requests the Server to modify an existing DER Group (DG1) by changing the list of supported DER Functions to include voltage regulation. The Server returns a response message indicating success with no errors.
Note: Because all of the attributes of DERFunction are mandatory in the DERGroups.xsd profile, it is necessary to specify all of the attributes (changing voltageRegulation to “true” while specifying the remaining function attributes with the values assigned when the group was last created or modified). In this case, DER Group DG1 was created in Test Case DERG-1 and has not been previously modified.
**Pre-Condition(s):** A DER Group with a Names.name identifier DG1, as created in Test Case DERG-1a, is assumed to exist.
**Post-Condition(s):** The subject DER Group is modified to support the voltage regulation DER Function.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ChangeDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>change</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T12:21:19-06:00</msg:Timestamp>
<msg:MessageID>439feabd-fb5f-451c-81dd-89b8bde37e30</msg:MessageID>
<msg:CorrelationID>fb30f952-73a4-49bd-833e-a5cc7d4ea310</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>true</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<Names>
<name>DG1</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:ChangeDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T12:21:24-06:00</Timestamp>
<MessageID>b92605a2-f7d3-40ee-8b30-ae276ff07a01</MessageID>
<CorrelationID>fb30f952-73a4-49bd-833e-a5cc7d4ea310</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Change DER Group | http://xx.xxx.xxx.xxx/ | change | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-2b: Client requests modification of an existing DER Group and Server replies (Success - Add an additional DER)
In this test case, the Client requests the Server to modify an existing DER Group (DG2, but referencing it by its mRID of 228650bf-7f77-44fa-9576-db4bbce8a07f) by adding an additional DER member (EndDevice) to the DER Group (bringing the total number of members to three).
The Server returns a response message indicating success with no errors.
Note 1: To add an additional DER member, the only required content normally in the Payload is the identifier of the DERGroup plus the identifier(s) for the new member. However, because this group was originally created with version information, this test case also illustrates the change in the versioning information.
Note 2: If the intent had been to remove an existing DER member and substitute a new member, it would be necessary to leverage the OperationSet technique illustrated in Test Case DERG-3 to remove the existing DER member. A second transaction, similar to the one illustrated in this test case, could then be performed to add the new DER member. If desired, the two operations (deleting one member and adding another member) could be combined in one request message using an OperationSet with two operations.
**Pre-Condition(s):** A DER Group with an mRID of 228650bf-7f77-44fa-9576-db4bbce8a07f as created in Test Case DERG-1c is assumed to exist.
**Post-Condition(s):** The subject DER Group is modified to have a third member.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ChangeDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>change</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T12:30:44-06:00</msg:Timestamp>
<msg:MessageID>e032908a-50df-4b7a-a177-e3944d228fad</msg:MessageID>
<msg:CorrelationID>fc493167-bb9d-46c4-9018-95c0691a0b08</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</mRID>
<EndDevices>
<mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</mRID>
</EndDevices>
<version>
<date>2017-06-02T12:30:21-06:00</date>
<major>1</major>
<minor>1</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:ChangeDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T12:30:57-06:00</Timestamp>
<MessageID>5ca13572-70f7-48dd-b39d-88a857ce3ff6</MessageID>
<CorrelationID>fc493167-bb9d-46c4-9018-95c0691a0b08</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Change DER Group | http://xx.xxx.xxx.xxx/ | change | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-3: Client requests modification of an existing DER Group and Server replies (Success - Delete a DER)
In this test case, the Client requests the Server to modify an existing DER Group by deleting one of the DER members (EndDevice with mRID of 7195c25f-4b54-4714-a90e-710dd7b1bcdd) from DER Group DG3. The Server returns a response message indicating success with no errors. Because the intent is to remove an existing DER member, it is necessary to leverage the OperationSet technique. Refer to the subsection “IEC 61968-100:2013 Considerations” in Section 2 as well as Appendix C for a more complete discussion of the use of OperationSets to accomplish the deletion of attributes and/or association classes. A DER member (EndDevice) is an example of an association class—in the UML an EndDevice is a separate CIM object associated with a DERGroup. Attributes, in contrast, are just that: they appear in the UML as an attribute of a CIM class (sometimes inherited from a parent class).
**Pre-Condition(s):** DER Group DG3, as created in Test Case DERG-1c and modified in Test Case DERG- 2b, is assumed to exist.
**Post-Condition(s):** The subject DER Group is modified to have the DER member (EndDevice) with mRID of 7195c25f-4b54-4714-a90e-710dd7b1bcdd removed.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ExecuteDERGroupsOperationSet xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage DERGroupsOperationSetMessage.xsd">
<tns:Header>
<Verb>execute</Verb>
<Noun>OperationSet</Noun>
<Timestamp>2017-06-02T12:42:19-06:00</Timestamp>
<MessageID>958e7f6e-f0e5-490f-922b-3e51ef8eed7b</MessageID>
<CorrelationID>bde49d7f-e87e-4496-b98b-2ed4785dfdbc</CorrelationID>
</tns:Header>
<tns:Payload>
<tns:OperationSet>
<Operation>
<operationId>1</operationId>
<noun>DERGroups</noun>
<verb>delete</verb>
<elementOperation>true</elementOperation>
<DERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroups# DERGroups.xsd">
<EndDeviceGroup>
<EndDevices>
<mRID>7195c25f-4b54-4714-a90e-710dd7b1bcdd</mRID>
</EndDevices>
<Names>
<name>DG3</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</Operation>
</tns:OperationSet>
</tns:Payload>
</tns:ExecuteDERGroupsOperationSet>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsOperationSetResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage DERGroupsOperationSetMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>OperationSet</Noun>
<Timestamp>2017-06-02T12:42:36-06:00</Timestamp>
<MessageID>9929802c-ce2a-4573-87fa-fcebde886d1d</MessageID>
<CorrelationID>bde49d7f-e87e-4496-b98b-2ed4785dfdbc</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
<operationId>0</operationId>
</Error>
<ID idType="String" idAuthority="String" kind="other" objectType="String">String</ID>
<n1:auto-generated_for_wildcard/>
<operationId>0</operationId>
</tns:Reply>
<tns:Payload>
<tns:OperationSet>
<enforceMsgSequence>true</enforceMsgSequence>
<enforceTransactionalIntegrity>true</enforceTransactionalIntegrity>
<Operation>
<operationId>0</operationId>
</Operation>
</tns:OperationSet>
</tns:Payload>
</tns:DERGroupsOperationSetResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Delete Details from existing DER | http://xx.xxx.xxx.xxx/ | execute | OperationSet* | |
### DERG-4: Client requests deletion of an existing DER Group and Server replies (Success)
In this test case, the Client requests the Server to delete an existing DER Group (DG1) (in its entirety). The Server returns a response message indicating success with no errors.
This test case is included to distinguish the deletion of a DER Group in its entirety from the deletion of attributes or associated classes from an existing DER Group (as illustrated in Test Case DERG-3).
**Pre-Condition(s):** DER Group with a Names.name identifier of DG1, as created in Test Case DERG-1a, is assumed to exist.
**Post-Condition(s):** The subject DER Group is deleted.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DeleteDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>delete</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T13:00:58-06:00</msg:Timestamp>
<msg:MessageID>d0a3ac3b-f903-4e87-824c-89fb3af420e1</msg:MessageID>
<msg:CorrelationID>765a69ee-f7ab-41ba-a731-defbba676710</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<Names>
<name>DG1</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:DeleteDERGroups>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupsResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T13:01:08-06:00</Timestamp>
<MessageID>0e250533-deba-422d-a0eb-4059377c8825</MessageID>
<CorrelationID>765a69ee-f7ab-41ba-a731-defbba676710</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Delete existing DER Group | http://xx.xxx.xxx.xxx/ | delete | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-5a: Client requests retrieval of an existing DER Group and Server replies (Success - Single DER Group)
In this test case, the Client requests the Server to provide the details of a single DER Group identified by its Names.name identifier of DG2. This DER Group was previously created in Test Case DERG-1c and modified in Test Case DERG-2b. The Server returns a response message indicating success with no errors and including the details of the current state of the DER Group in the Payload section of the response message. This message exchange can also be characterized as DER Group Capability Discovery because the response message contains (and is required to contain) the list of DER Functions supported by the DER Group.
Note 1: The parameters for the request query (in this case, the Names.name identifier of the DER Group whose details are being requested) are supplied using XML generated using the DERGroupQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Groups will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroups.xsd used for “create” scenarios and not the unconstrained version used for “change or delete” scenarios.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the applications being tested may contain any of the request and Payload elements and attributes permitted by the XSDs found in Appendices B and D.
**Pre-Condition(s):** A DER Group with a Names.name identifier of DG2, as created in Test Case DERG-1c and modified in DERG-2b, is assumed to exist.
**Post-Condition(s):** The full content of the subject DER Group is returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupQueries#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T13:22:38-06:00</Timestamp>
<MessageID>836a18cd-d8f9-4c34-a144-7d3f59f34229</MessageID>
<CorrelationID>37d7b6e7-8098-4960-a297-4b2cb49ca81f</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG2</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupQueries>
</tns:Request>
</tns:DERGroupQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T13:22:45-06:00</Timestamp>
<MessageID>16f37e9e-be26-40be-a9b8-4d7855391565</MessageID>
<CorrelationID>37d7b6e7-8098-4960-a297-4b2cb49ca81f</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<m:DERGroups>
<m:EndDeviceGroup>
<m:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</m:mRID>
<m:description>DER Group 2</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>false</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>false</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG2</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T12:30:21-06:00</m:date>
<m:major>1</m:major>
<m:minor>1</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
</m:DERGroups>
</tns:Payload>
</tns:DERGroupQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Groups | http://xx.xxx.xxx.xxx/ | get | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-5b: Client requests retrieval of two DER Groups and Server replies (Success - Two DER Groups in a single message)
In this test case, the Client requests the Server to provide the details of two DER Groups (DG2 and DG4). The Server returns a response message indicating success with no errors and including the details of the current state of the two DER Groups in the Payload section of the response message.
Note 1: The parameters for the request query (in this case, the Names.name identifier of the DER Group whose details are being requested) are supplied using XML generated using the DERGroupQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Groups will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroups.xsd used for “create” scenarios and not the unconstrained version used for “change or delete” scenarios.
**Pre-Condition(s):** DER Groups with Names.name identifiers of DG2 (as created in Test Case DERG-1c and modified in Test Case DERG-2b) and DG4 (as created in Test Case DERG-1d ) are assumed to exist.
**Post-Condition(s):** The full contents of the subject DER Groups are returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupQueries#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T13:43:10-06:00</Timestamp>
<MessageID>cc632a80-f51c-41c6-b7fc-dd42abae295c</MessageID>
<CorrelationID>407112d5-e8a5-4967-a475-cc3a9c393a9c</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG2</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG4</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupQueries>
</tns:Request>
</tns:DERGroupQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2017-06-02T13:22:45-06:00</Timestamp>
<MessageID>16f37e9e-be26-40be-a9b8-4d7855391565</MessageID>
<CorrelationID>37d7b6e7-8098-4960-a297-4b2cb49ca81f</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<m:DERGroups>
<m:EndDeviceGroup>
<m:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</m:mRID>
<m:description>DER Group 2</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>false</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>false</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG2</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T12:30:21-06:00</m:date>
<m:major>1</m:major>
<m:minor>1</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
<m:EndDeviceGroup>
<m:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</m:mRID>
<m:description>DER Group 2</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>false</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>true</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>c378df3a-294c-4743-ad78-65f970231b5b</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>6de3d770-6087-45bc-a5c8-6fca25f5a318</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG4</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T10:52:31-06:00</m:date>
<m:major>1</m:major>
<m:minor>0</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
</m:DERGroups>
</tns:Payload>
</tns:DERGroupQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Groups | http://xx.xxx.xxx.xxx/ | get | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroups | |
### DERG-5c: Client requests retrieval of all DER Groups and Server replies (Success - All DER Groups in a single message)
In this test case, the Client requests the Server to provide the details of all DER Groups by sending nothing at all. The Server returns a response message indicating success with no errors and including the details of the current state of all the DER Groups in the Payload section of the response message. DER Group DG1 was created in Test Case DERG-1a and then was deleted in Test Case DERG-4. DER Groups DG2 and DG3 were previously created in Test Case DERG-1c. DER Group DG4 was created in Test Case DERG-1d; however, DG5 was not created because of an error. Lastly, DER Group DG6 was created in Test Case DERG-1e. Only those groups that were successfully created and not deleted in previous test cases will be present in this query.
**Pre-Condition(s):** DER Groups with Names.name identifiers of DG2 (as created in Test Case DERG-1c and modified in Test Case DERG-2b), DG3 (as created in Test Case DERG-1c and later modified in DERG-3), DG4 (as created in Test Case DERG-1d), and DG6 (as created in Test Case DERG-1e) are assumed to exist.
**Post-Condition(s):** The full contents of the subject DER Groups are returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupQueries#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2018-09-27T14:30:10-06:00</Timestamp>
<MessageID>8f2dd684-a736-4068-97e6-6167b4fff406</MessageID>
<CorrelationID>30488987-17f9-46a2-b0bc-a4e4db825e8f</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupQueries>
<obj2:EndDeviceGroup>
</obj2:EndDeviceGroup>
</obj2:DERGroupQueries>
</tns:Request>
</tns:DERGroupQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:m="http://iec.ch/TC57/2017/DERGroups#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupQueriesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupQueriesMessage DERGroupQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroups</Noun>
<Timestamp>2018-09-27T14:30:12-06:00</Timestamp>
<MessageID>6a804cb1-54c9-4a43-baa8-cd901a299ede </MessageID>
<CorrelationID>30488987-17f9-46a2-b0bc-a4e4db825e8f </CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<m:DERGroups>
<m:EndDeviceGroup>
<m:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</m:mRID>
<m:description>DER Group 2</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>false</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>false</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG2</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T12:30:21-06:00</m:date>
<m:major>1</m:major>
<m:minor>1</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
<m:EndDeviceGroup>
<m:mRID>6b3241b8-a0f1-429b-b163-459122b5672e</m:mRID>
<m:description>String</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>true</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>false</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>c3af4062-e6a9-4a05-bbac-e0215875fda2</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>9d6b55b4-e320-45d5-8ff8-6f947afa4b02</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>d1062c85-a938-4d11-af45-9ba97d444d5e</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG3</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T10:04:12-06:00</m:date>
<m:major>1</m:major>
<m:minor>0</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
<m:EndDeviceGroup>
<m:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</m:mRID>
<m:description>DER Group 2</m:description>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>false</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>true</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>c378df3a-294c-4743-ad78-65f970231b5b</m:mRID>
</m:EndDevices>
<m:EndDevices>
<m:mRID>6de3d770-6087-45bc-a5c8-6fca25f5a318</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG4</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T10:52:31-06:00</m:date>
<m:major>1</m:major>
<m:minor>0</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
<m:EndDeviceGroup>
<m:mRID>854d906-1f5d-40fe-9db3-2fb76bc43499</m:mRID>
<m:DERFunction>
<m:connectDisconnect>true</m:connectDisconnect>
<m:frequencyWattCurveFunction>false</m:frequencyWattCurveFunction>
<m:maxRealPowerLimiting>false</m:maxRealPowerLimiting>
<m:rampRateControl>false</m:rampRateControl>
<m:reactivePowerDispatch>true</m:reactivePowerDispatch>
<m:realPowerDispatch>true</m:realPowerDispatch>
<m:voltageRegulation>false</m:voltageRegulation>
<m:voltVarCurveFunction>false</m:voltVarCurveFunction>
<m:voltWattCurveFunction>false</m:voltWattCurveFunction>
</m:DERFunction>
<m:EndDevices>
<m:mRID>e8a2f05b-aca9-46dc-971b-be22fcedc00b</m:mRID>
</m:EndDevices>
<m:Names>
<m:name>DG6</m:name>
</m:Names>
<m:version>
<m:date>2017-06-02T11:20:28-06:00</m:date>
<m:major>1</m:major>
<m:minor>0</m:minor>
<m:revision>0</m:revision>
</m:version>
</m:EndDeviceGroup>
</m:DERGroups>
</tns:Payload>
</tns:DERGroupQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Groups | http://xx.xxx.xxx.xxx/ | Get | DERGroups | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | Reply | DERGroups | |
### DERG-6: Server informs Client of the creation of two DER Groups (Two DER Groups in a single message)
In this test case, the Server informs the Client of the creation of two DER Groups: DG7 with three members (EndDevices) and three DER Functions and DG8 with two members and four DER Functions. Such a notification may occur if the Client is not the original requestor but instead is being notified of the DER Groups instantiated directly within the Server or because of a request by a third system. The notification may occur immediately upon instantiation or at some later date/time. This is an asynchronous notification using an Event Stereotype message. There is no response message. If the Server were in fact a true DERMS, then upon success of this messaging interchange, the DER Groups would be known to the DERMS and could be subsequently changed or deleted. Subsequent test cases in this report will assume the persistence of specific DER Groups and refer to them by the mRIDs and/or Names assigned in the “created” test cases. See the Pre- Condition(s) section of subsequent test cases for additional information.
**Pre-Condition(s):** It is assumed that DER Groups DG7 and DG8 were created at different times earlier in the day.
**Post-Condition(s):** The Client is informed of the details of two DER Groups created earlier in the day.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T13:58:11-06:00</msg:Timestamp>
<msg:MessageID>d11e23fb-9183-46fb-bd5a-8e4693e02aa9</msg:MessageID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>6c42f1ee-d5d9-4d93-8249-3ad11afdcc67</mRID>
<description>DER Group 7</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>727294db-354f-4343-b2cd-acbf5a23297f</mRID>
</EndDevices>
<EndDevices>
<mRID>9392b37c-1882-4fcc-905a-2d29c769b1c2</mRID>
</EndDevices>
<EndDevices>
<mRID>e2665091-8a1c-469d-9056-6371db5beb4b</mRID>
</EndDevices>
<Names>
<name>DG7</name>
</Names>
<version>
<date>2017-06-02T09:31:17</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
<EndDeviceGroup>
<mRID>5a3a8b59-42fe-4989-9622-6f4206e9579e</mRID>
<description>DER Group 8</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>true</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>d9db9ab9-6dba-4d09-a889-f5a55946e515</mRID>
</EndDevices>
<EndDevices>
<mRID>29896015-ce74-4594-9f68-593ac8b58762</mRID>
</EndDevices>
<Names>
<name>DG8</name>
</Names>
<version>
<date>2017-06-02T09:35:40</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreatedDERGroups>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Created DER Groups Notification | http://xx.xxx.xxx.xxx/ | created | DERGroups | |
### DERG-7: Server informs Client of modification of an existing DER Group (Change list of supported DER Functions to include ramp rate control)
In this test case, the Server informs the Client that ramp rate control has been added to the list of DER Functions supported by DER Group DG7. Such a notification may occur if the Client is not the original requestor of the change but instead is being notified of the change made directly within the Server or because of a request by a third system. The notification may occur immediately at the time of the change or at some later date/time. This is an asynchronous notification using an Event Stereotype message. There is no response message.
Note: Because all of the attributes of DERFunction are mandatory in the DERGroups.xsd profile, it is necessary to specify all of the attributes (changing rampRateControl to “true” while specifying the remaining function attributes with the values assigned when the group was last created or modified). In this case, DER Group DG7 was created in Test Case DERG-6 and has not been previoulsy modified.
**Pre-Condition(s):** DER Group with a Names.name identifier of DG7, as created in Test Case DERG-6, is assumed to exist.
**Post-Condition(s):** The Client is provided with the updated list of supported DER Functions.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ChangedDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>changed</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T14:30:18-06:00</msg:Timestamp>
<msg:MessageID>91771168-df25-4395-96ec-f5ca253dcff3</msg:MessageID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>true</rampRateControl>
<reactivePowerDispatch>true</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<Names>
<name>DG7</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:ChangedDERGroups>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Changed DER Group Notification | http://xx.xxx.xxx.xxx/ | changed | DERGroups | |
### DERG-8: Server informs Client of modification of an existing DER Group (Deletion of a member)
In this test case, the Server informs the Client of the deletion of a member (EndDevice) from DER Group DG8, which was previously created in Test Case DERG-6. This is an asynchronous notification using an Event Stereotype message. There is no response message. Because the intent is to remove an existing element (DER member), it is necessary to leverage the OperationSet technique. Refer to the subsection “IEC 61968-100:2013 Considerations” in Section 2 as well as Appendix C for a more complete discussion of the use of OperationSets to accomplish the deletion of attributes and/or association classes. A member (EndDevice) is an example of an association class.
**Pre-Condition(s):** A DER Group with a Names.name identifier of DG8 and two members, as created in Test Case DERG-6, is assumed to exist.
**Post-Condition(s):** The Client is informed that one of the two members of the subject DER Group has been deleted from the DER Group.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ExecutedDERGroupsOperationSet xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsOperationSetMessage DERGroupsOperationSetMessage.xsd">
<tns:Header>
<Verb>executed</Verb>
<Noun>OperationSet</Noun>
<Timestamp>2017-06-02T14:43:10-06:00</Timestamp>
<MessageID>ba6f89bf-f10f-4058-b743-8404e368e358</MessageID>
</tns:Header>
<tns:Payload>
<tns:OperationSet>
<Operation>
<operationId>1</operationId>
<noun>deleted</noun>
<verb>DERGroups</verb>
<elementOperation>true</elementOperation>
<DERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroups# DERGroups.xsd">
<EndDeviceGroup>
<EndDevices>
<mRID>d9db9ab9-6dba-4d09-a889-f5a55946e515</mRID>
</EndDevices>
<Names>
<name>DG8</name>
</Names>
<version>
<date>2017-06-02T14:42:58-06:00</date>
<major>1</major>
<minor>1</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</Operation>
</tns:OperationSet>
</tns:Payload>
</tns:ExecutedDERGroupsOperationSet>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Deleted Details from existing | http://xx.xxx.xxx.xxx/ | Executed | OperationSet* | |
### DERG-9: Server informs Client of the deletion of an existing DER Group
In this test case, the Server informs the Client of the deletion of existing DER Group. This is an asynchronous notification using an Event Stereotype message. There is no response message.
In this test case, DER Group DG7, which was previously created in Test Case DERG-6 and modified in Test Case DERG-7, is deleted.
**Pre-Condition(s):** A DER Group with a Names.name identifier of DG7, as created in Test Case DERG-6 and modified in Test Case DERG-7, is assumed to exist.
**Post-Condition(s):** The Client is informed that the subject DER Group has been deleted.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DeletedDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>deleted</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-06-02T14:49:40-06:00</msg:Timestamp>
<msg:MessageID>232663b4-1fcf-4364-8f9d-b936361a015a</msg:MessageID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<Names>
<name>DG7</name>
</Names>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:DeletedDERGroups>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Deleted Details from existing DER | http://xx.xxx.xxx.xxx/ | deleted | DERGroups | |
## DER Group Status Retrieval (Section 10)
### DERGS-1a: Client requests status of a DER Group and Server replies (Success - Single DER Group)
In this test case, the Client requests the Server to provide the status of a single DER Group as identified by its Names.name identifier of DG2. This DER Group was previously created in Test Case DERG-1c and modified in Test Case DERG-2b. The Server returns a response message indicating success with no errors and including the details of the status of the DER Group in the Payload section of the response message.
Note 1: The parameters for the request query (in this case, the Names.name identifier of the DER Group whose status is being requested) are supplied using XML generated using the DERGroupStatusQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Statuses will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupStatuses profile and not the unconstrained version that is used for “changed” scenarios.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the applications being tested may contain any of the request and Payload elements and attributes permitted by the XSDs found in Appendices B and D.
**Pre-Condition(s):** A DER Group with a Names.name identifier of DG2, as created in Test Case DERG-1c and modified in Test Case DERG-2b, is assumed to exist.
**Post-Condition(s):** The status of the subject DER Group is returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupStatusQueries#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T15:54:29-06:00</Timestamp>
<MessageID>9e78323f-7ae5-4aee-aaa7-53130f5da8dd</MessageID>
<CorrelationID>125981da-6a49-4e14-9f9c-c4aa3bafaf08</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupStatusQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG2</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupStatusQueries>
<n1:auto-generated_for_wildcard/>
</tns:Request>
</tns:DERGroupStatusQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:m="http://iec.ch/TC57/2017/DERGroupStatuses#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T15:54:36-06:00</Timestamp>
<MessageID>d996b1c0-1d5a-45b9-9ad0-2457e2615244</MessageID>
<CorrelationID>125981da-6a49-4e14-9f9c-c4aa3bafaf08</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<m:DERGroupStatuses>
<m:EndDeviceGroup>
<m:mRID>String</m:mRID>
<m:DERMonitorableParameter>
<m:DERParameter>activePower</m:DERParameter>
<m:yMultiplier>k</m:yMultiplier>
<m:yUnit>W</m:yUnit>
<m:DERCurveData>
<m:nominalYValue>41.2</m:nominalYValue>
<m:timeStamp>2017-12-06T15:54:35-06:00</m:timeStamp>
</m:DERCurveData>
</m:DERMonitorableParameter>
<m:Names>
<m:name>DG2</m:name>
</m:Names>
</m:EndDeviceGroup>
</m:DERGroupStatuses>
</tns:Payload>
</tns:DERGroupStatusQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Status | http://xx.xxx.xxx.xxx/ | get | DERGroupStatuses | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupStatuses | |
### DERGS-1b: Client requests status of a DER Group and Server replies (Failure - Single DER Group)
In this test case, the Client requests the Server to provide the status of a single DER Group as identified by its Names.name identifier of DG1. This DER Group was previously deleted in Test Case DERG-4. Consequently, the Server returns a response message indicating a failure because no such DER Group exists. (See Appendix F for error codes.)
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. In addition, as noted, this test case illustrates a failure of a request for the status of a single DER Group. Subsequent test cases will illustrate requests for the statuses of multiple DER Groups through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** DER Group DG1 is assumed not to exist.
**Post-Condition(s):** The request fails because DER Group DG1 does not exist.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupStatusQueries#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:25:20-06:00</Timestamp>
<MessageID>9f45c50a-6a81-4319-89db-55e484f93e32</MessageID>
<CorrelationID>a7dad3bd-5d2a-48a7-9500-ad40acc0713f</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupStatusQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG1</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupStatusQueries>
</tns:Request>
</tns:DERGroupStatusQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:obj1="http://iec.ch/TC57/2017/DERGroupStatuses#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:25:24-06:00</Timestamp>
<MessageID>6b04ffc7-28b4-4961-83a8-abb4e4652268</MessageID>
<CorrelationID>a7dad3bd-5d2a-48a7-9500-ad40acc0713f</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>99.1</code>
<level>FATAL</level>
<details>DERGroup does not exist</details>
<ID kind="name" objectType="DERGroup">DG1</ID>
</Error>
</tns:Reply>
</tns:DERGroupStatusQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Status | http://xx.xxx.xxx.xxx/ | get | DERGroupStatuses | |
| 2 | Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupStatuses | |
### DERGS-1c: Client requests status of two DER Groups and Server replies (Success - Two DER Groups in a single message)
In this test case, the Client requests the Server to provide the status of two DER Groups as identified by their Names.name identifiers of DG3 and DG4, respectively. DER Group DG3 was created in Test Case DERG-1c and modified in Test Case DERG-3. DER Group DG4 was created in Test Case DERG-1d. The Server returns a response message indicating success with no errors and including the details of the status of the two DER Groups in the Payload section of the response message.
Note 1: The parameters for the request query (in this case, the Names.name identifier of the DER Groups whose statuses are being requested) are supplied using XML generated using the DERGroupStatusQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Statuses will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupStatuses profile and not the unconstrained version used for “changed” scenarios.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the applications being tested may contain any of the request and Payload elements and attributes permitted by the XSDs found in Appendices B and D.
**Pre-Condition(s):** DER Groups with Names.name identifiers of DG3 and DG4, as created and/or modified in test cases DERG-1c, DERG-1d, and DERG-3, are assumed to exist.
**Post-Condition(s):** The statuses of the subject DER Groups are returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupStatusQueries#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:34:54-06:00</Timestamp>
<MessageID>21b6f9bd-49fd-4a28-9e5b-f541924d81c9</MessageID>
<CorrelationID>4bf02e07-6cdd-430d-a318-965838d58b9d</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupStatusQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG3</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG4</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupStatusQueries>
</tns:Request>
</tns:DERGroupStatusQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:obj1="http://iec.ch/TC57/2017/DERGroupStatuses#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:35:23-06:00</Timestamp>
<MessageID>11beae4e-d615-416c-921f-b0a65ef0af7e</MessageID>
<CorrelationID>4bf02e07-6cdd-430d-a318-965838d58b9d</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<obj1:DERGroupStatuses>
<obj1:EndDeviceGroup>
<obj1:mRID>6b3241b8-a0f1-429b-b163-459122b5672e</obj1:mRID>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>activePower</obj1:DERParameter>
<obj1:yMultiplier>k</obj1:yMultiplier>
<obj1:yUnit>W</obj1:yUnit>
<obj1:DERCurveData>
<obj1:nominalYValue>114.2</obj1:nominalYValue>
<obj1:timeStamp>2017-06-12T16:35:11-06:00</obj1:timeStamp>
</obj1:DERCurveData>
</obj1:DERMonitorableParameter>
<obj1:Names>
<obj1:name>DG3</obj1:name>
</obj1:Names>
</obj1:EndDeviceGroup>
<obj1:EndDeviceGroup>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>activePower</obj1:DERParameter>
<obj1:yMultiplier>k</obj1:yMultiplier>
<obj1:yUnit>W</obj1:yUnit>
<obj1:DERCurveData>
<obj1:nominalYValue>88.65</obj1:nominalYValue>
<obj1:timeStamp>2017-06-12T16:35:18-06:00</obj1:timeStamp>
</obj1:DERCurveData>
</obj1:DERMonitorableParameter>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>voltage</obj1:DERParameter>
<obj1:yMultiplier>none</obj1:yMultiplier>
<obj1:yUnit>V</obj1:yUnit>
<obj1:DERCurveData>
<obj1:nominalYValue>240.09</obj1:nominalYValue>
<obj1:timeStamp>2017-06-12T16:35:18-06:00</obj1:timeStamp>
</obj1:DERCurveData>
</obj1:DERMonitorableParameter>
<obj1:Names>
<obj1:name>DG4</obj1:name>
</obj1:Names>
</obj1:EndDeviceGroup>
</obj1:DERGroupStatuses>
</tns:Payload>
</tns:DERGroupStatusQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Statuses | http://xx.xxx.xxx.xxx/ | get | DERGroupStatuses | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupStatuses | |
### DERGS-1d: Client requests status of two DER Groups and Server replies (Two DER Groups in a single message - One succeeds and one fails)
In this test case, the Client requests the Server to provide the status of two DER Groups as identified by their Names.name identifiers of DG6 and DG7, respectively. DER Group DG6 was created in Test Case DERG-1e. DER Group DG7 was created in Test Case DERG-6 and modified in Test Case DERG-7 but was subsequently deleted in Test Case DERG-9. Consequently, the Server returns a response message indicating a failure of the request for DER Group DG7. Because no error is reported for DER Group DG6, the interpretation of the response message is that the request for DER Group DG6 was successful; accordingly, the status for DER Group DG6 is returned in the Payload section of the response message. (See Appendix F for error codes.)
Note 1: The parameters for the request query (in this case, the Names.name identifier of the DER Groups whose statuses are being requested) are supplied using XML generated using the DERGroupStatusQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Statuses will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupStatuses profile and not the unconstrained version used for “changed” scenarios.
**Pre-Condition(s):** The DER Group with a Names.name identifier of DG6, as created in Test Case DERG- 1e, is assumed to exist. A DER Group with a Names.name identifier of DG7 is assumed not to exist because it was deleted in Test Case DERG-9.
**Post-Condition(s):** The response message contains the status of DER Group DG6 and an indication of an error for DER Group DG7.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupStatusQueries#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:56:21-06:00</Timestamp>
<MessageID>c3b0823f-8fcd-4f2f-a37d-b91adf711498</MessageID>
<CorrelationID>9debb17b-d579-4917-8c5e-7f386c68ea40</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupStatusQueries>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG6</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG7</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupStatusQueries>
</tns:Request>
</tns:DERGroupStatusQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupStatusQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:obj1="http://iec.ch/TC57/2017/DERGroupStatuses#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusQueriesMessage DERGroupStatusQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupStatuses</Noun>
<Timestamp>2017-06-12T16:56:55-06:00</Timestamp>
<MessageID>3e58c71d-0303-4346-89db-c14b4121e39b</MessageID>
<CorrelationID>9debb17b-d579-4917-8c5e-7f386c68ea40</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>99.1</code>
<level>FATAL</level>
<details>DERGroup does not exist</details>
<ID kind="name" objectType="DERGroup">DG7</ID>
</Error>
</tns:Reply>
<tns:Payload>
<obj1:DERGroupStatuses>
<obj1:EndDeviceGroup>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>activePower</obj1:DERParameter>
<obj1:yMultiplier>k</obj1:yMultiplier>
<obj1:yUnit>W</obj1:yUnit>
<obj1:DERCurveData>
<obj1:nominalYValue>102.0</obj1:nominalYValue>
<obj1:timeStamp>2017-06-12T16:56:45-06:00</obj1:timeStamp>
</obj1:DERCurveData>
</obj1:DERMonitorableParameter>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>reactivePower</obj1:DERParameter>
<obj1:yMultiplier>k</obj1:yMultiplier>
<obj1:yUnit>VAr</obj1:yUnit>
<obj1:DERCurveData>
<obj1:nominalYValue>105.0</obj1:nominalYValue>
<obj1:timeStamp>2017-06-12T16:56:45-06:00</obj1:timeStamp>
</obj1:DERCurveData>
</obj1:DERMonitorableParameter>
<obj1:Names>
<obj1:name>DG6</obj1:name>
</obj1:Names>
</obj1:EndDeviceGroup>
</obj1:DERGroupStatuses>
</tns:Payload>
</tns:DERGroupStatusQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Statuses | http://xx.xxx.xxx.xxx/ | create | DERGroupStatuses | |
| 2 | Mixed Success/Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupStatuses | |
### DERGS-2: Server informs Client of a change in DER Group Status (Change in current active, apparent, and reactive power)
In this test case, the Server informs the Client that the status of DER Group DG8 has changed, and the Server provides the new values for the current active, reactive, and apparent power. In addition, the time at which this change occurred appears in the status element. Such a notification may occur if the Client has not asked for the status but instead is being notified of the change detected by the Server. The notification may occur immediately at the time of the change or at some short time thereafter. This is an asynchronous notification using an Event Stereotype message. There is no response message.
In this test case, DER Group DG8 was created in Test Case DERG-6 and modified in Test Case DERG-8.
**Pre-Condition(s):** DER Group with a Names.name identifier of DG8, as created in Test Case DERG-6 and modified in Test Case DERG-8, is assumed to exist.
**Post-Condition(s):** The updated status of DER Group DG8 is sent to the Client by the Server.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:ChangedDERGroupStatuses xmlns="http://iec.ch/TC57/2017/DERGroupStatuses#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/DERGroupStatusesMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupStatusesMessage DERGroupStatusesMessage.xsd">
<tns:Header>
<msg:Verb>changed</msg:Verb>
<msg:Noun>DERGroupStatuses</msg:Noun>
<msg:Timestamp>2017-06-12T18:43:43-06:00</msg:Timestamp>
<msg:MessageID>10c58e78-1045-45c4-aa7e-f9707ec4d620</msg:MessageID>
</tns:Header>
<tns:Payload>
<DERGroupStatuses>
<EndDeviceGroup>
<DERMonitorableParameter>
<DERParameter>activePower</DERParameter>
<yMultiplier>M</yMultiplier>
<yUnit>W</yUnit>
<DERCurveData>
<nominalYValue>2.52</nominalYValue>
<timeStamp>2017-06-12T18:43:40-06:00</timeStamp>
</DERCurveData>
</DERMonitorableParameter>
<DERMonitorableParameter>
<DERParameter>reactivePower</DERParameter>
<yMultiplier>M</yMultiplier>
<yUnit>VAr</yUnit>
<DERCurveData>
<nominalYValue>2.43</nominalYValue>
<timeStamp>2017-06-12T18:43:40-06:00</timeStamp>
</DERCurveData>
</DERMonitorableParameter>
<Names>
<name>DG8</name>
</Names>
<status>
<dateTime>2017-06-12T18:43:40-06:00</dateTime>
<value>Online</value>
</status>
</EndDeviceGroup>
</DERGroupStatuses>
</tns:Payload>
</tns:ChangedDERGroupStatuses>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Changed DER Group Status | http://xx.xxx.xxx.xxx/ | changed | DERGroupStatuses | |
## DER Group Forecast Retrieval (Section 11)
### DERGF-1a: Client requests forecast for a DER Group and Server replies (Success - Single DER Group)
In this test case, the Client requests the Server to provide a forecast for a single DER Group. The DER Group, with an mRID of 228650bf-7f77-44fa-9576-db4bbce8a07f and a Names.name identifier of DG2, was created in Test Case DERG-1c and modified in Test Case DERG-2b. It supports the realPowerDispatch DERFunction. In the Sample XML for this test case, the query (request) for the forecast is made using the mRID for illustration purposes. Reformulating the query using the Names.name identifier is equally valid; the remaining DER Group Forecast test cases in this report are formulated using the Names.name identifier(s). Note that normal practice is to specify either the mRID or a Names.name identifier when referring to a previously created CIM object; however, specifying both is permissible.
The Server returns a response message indicating success with no errors and including the details of the forecast for the DER Group in the Payload section of the response message. Normal practice is for the Server to refer to CIM objects by both mRID and Names.name identifiers (presuming the Server knows both), as shown in the response XML for this test case. However, in all cases, the Server should include in the response the identifier (mRID or Names.name) used in the request message.
Note 1: The parameters for the request query are supplied using XML generated using the DERGroupForecastQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Forecasts will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupForecasts profile.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the applications being tested may contain any of the request and Payload elements and attributes permitted by the XSDs found in Appendices B and D.
**Pre-Condition(s):** A DER Group with a Names.name identifier of DG2, as created in Test Case DERG-1c and modified in Test Case DERG-2b, is assumed to exist.
**Post-Condition(s):** The forecast for the subject DER Group is returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupForecastQueries#" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DEGroupForecasts</Noun>
<Timestamp>2017-06-14T15:45:00-06:00</Timestamp>
<MessageID>8e13f6fe-27a8-4686-bcaa-5176ce460486</MessageID>
<CorrelationID>12668dce-4005-4acf-bcc0-d81194a5d3f1</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupForecastQueries>
<obj2:DERMonitorableParameter>
<obj2:DERParameter>activePower</obj2:DERParameter>
</obj2:DERMonitorableParameter>
<obj2:DispatchSchedule>
<obj2:curveStyleKind>straightLineYValues</obj2:curveStyleKind>
<obj2:numberOfIntervals>4</obj2:numberOfIntervals>
<obj2:startTime>2017-06-15T15:00:00-06:00</obj2:startTime>
<obj2:timeIntervalDuration>15</obj2:timeIntervalDuration>
<obj2:timeIntervalUnit>m</obj2:timeIntervalUnit>
</obj2:DispatchSchedule>
<obj2:EndDeviceGroup>
<obj2:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</obj2:mRID>
</obj2:EndDeviceGroup>
</obj2:DERGroupForecastQueries>
</tns:Request>
</tns:DERGroupForecastQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj1="http://iec.ch/TC57/2017/DERGroupForecasts#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupForecasts</Noun>
<Timestamp>2017-06-14T13:03:19-06:00</Timestamp>
<MessageID>3c6f308f-653b-49cd-92b0-620cbb5a7169</MessageID>
<CorrelationID>12668dce-4005-4acf-bcc0-d81194a5d3f1</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<obj1:DERGroupForecasts>
<obj1:DERGroupForecast>
<obj1:mRID>035ab91a-a826-4b8b-86fd-fb28da52514c</obj1:mRID>
<obj1:predictionCreationDate>2017-06-14T13:03:16-06:00</obj1:predictionCreationDate>
<obj1:EndDeviceGroup>
<obj1:mRID>228650bf-7f77-44fa-9576-db4bbce8a07f</obj1:mRID>
<obj1:DERMonitorableParameter>
<obj1:DERParameter>activePower</obj1:DERParameter>
<obj1:yMultiplier>k</obj1:yMultiplier>
<obj1:yUnit>W</obj1:yUnit>
<obj1:DispatchSchedule>
<obj1:curveStyleKind>straightLineYValues</obj1:curveStyleKind>
<obj1:startTime>2017-06-15T15:00:00-06:00</obj1:startTime>
<obj1:timeIntervalDuration>15</obj1:timeIntervalDuration>
<obj1:timeIntervalUnit>m</obj1:timeIntervalUnit>
<obj1:DERCurveData>
<obj1:intervalNumber>1</obj1:intervalNumber>
<obj1:maxYValue>145.0</obj1:maxYValue>
<obj1:minYValue>100.0</obj1:minYValue>
<obj1:nominalYValue>134.5</obj1:nominalYValue>
</obj1:DERCurveData>
<obj1:DERCurveData>
<obj1:intervalNumber>2</obj1:intervalNumber>
<obj1:maxYValue>147.0</obj1:maxYValue>
<obj1:minYValue>100.0</obj1:minYValue>
<obj1:nominalYValue>135.3</obj1:nominalYValue>
</obj1:DERCurveData>
<obj1:DERCurveData>
<obj1:intervalNumber>3</obj1:intervalNumber>
<obj1:maxYValue>141.0</obj1:maxYValue>
<obj1:minYValue>98.0</obj1:minYValue>
<obj1:nominalYValue>129.5</obj1:nominalYValue>
</obj1:DERCurveData>
<obj1:DERCurveData>
<obj1:intervalNumber>4</obj1:intervalNumber>
<obj1:maxYValue>145.0</obj1:maxYValue>
<obj1:minYValue>100.00</obj1:minYValue>
<obj1:nominalYValue>135.2</obj1:nominalYValue>
</obj1:DERCurveData>
<obj1:DERCurveData>
<obj1:intervalNumber>5</obj1:intervalNumber>
<obj1:maxYValue>153.0</obj1:maxYValue>
<obj1:minYValue>105.00</obj1:minYValue>
<obj1:nominalYValue>139.7</obj1:nominalYValue>
</obj1:DERCurveData>
</obj1:DispatchSchedule>
</obj1:DERMonitorableParameter>
<obj1:Names>
<obj1:name>DG2</obj1:name>
</obj1:Names>
</obj1:EndDeviceGroup>
</obj1:DERGroupForecast>
</obj1:DERGroupForecasts>
</tns:Payload>
</tns:DERGroupForecastQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Forecast | http://xx.xxx.xxx.xxx/ | get | DERGroupForecasts | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupForecasts | |
### DERGF-1b: Client requests forecast for a DER Group and Server replies (Failure - Single DER Group)
In this test case, the Client requests the Server to provide a forecast for a single DER Group as identified by its Names.name identifier of DG1. This DER Group was deleted in Test Case DERG-4. Consequently, the Server returns a response message indicating a failure because no such DER Group exists. (See Appendix F for error codes.)
Note 1: The parameters for the request query are supplied using XML generated using the DERGroupForecastQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Forecasts will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupForecasts profile.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. In addition, as noted, this test case illustrates a failure of a request for the status of a single DER Group. Subsequent test cases will illustrate requests for the statuses of multiple DER Groups through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** DER Group DG1 is assumed not to exist.
**Post-Condition(s):** The request fails because DER Group DG1 does not exist.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupForecastQueries#" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DEGroupForecasts</Noun>
<Timestamp>2017-06-14T14:20:01-06:00</Timestamp>
<MessageID>b7aff1b9-2ca7-4251-a2d9-91485211cc21</MessageID>
<CorrelationID>1f237f4f-661b-42ad-8483-19330a3d7d88</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupForecastQueries>
<obj2:DERMonitorableParameter>
<obj2:DERParameter>activePower</obj2:DERParameter>
</obj2:DERMonitorableParameter>
<obj2:DispatchSchedule>
<obj2:curveStyleKind>straightLineYValues</obj2:curveStyleKind>
<obj2:numberOfIntervals>4</obj2:numberOfIntervals>
<obj2:startTime>2017-06-15T13:00:00-06:00</obj2:startTime>
<obj2:timeIntervalDuration>1</obj2:timeIntervalDuration>
<obj2:timeIntervalUnit>h</obj2:timeIntervalUnit>
</obj2:DispatchSchedule>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG1</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupForecastQueries>
</tns:Request>
</tns:DERGroupForecastQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj1="http://iec.ch/TC57/2017/DERGroupForecasts#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupForecasts</Noun>
<Timestamp>2017-06-14T14:20:05-06:00</Timestamp>
<MessageID>a5e65f21-5c2b-40ee-98e6-8ecfe786420d</MessageID>
<CorrelationID>1f237f4f-661b-42ad-8483-19330a3d7d88</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>99.1</code>
<level>FATAL</level>
<details>DERGroup does not exist</details>
<ID kind="name" objectType="DERGroup">DG1</ID>
</Error>
</tns:Reply>
</tns:DERGroupForecastQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Forecast | http://xx.xxx.xxx.xxx/ | get | DERGroupForecasts | |
| 2 | Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupForecasts | |
### DERGF-1c: Client requests forecasts for two DER Groups and Server replies (Success - Two DER Groups in a single message)
In this test case, the Client requests the Server to provide forecasts for two DER Groups as identified by their Names.name identifiers of DG3 and DG4, respectively. DER Group DG3 was created in Test Case DERG-1c and modified in Test Case DERG-3 and supports the realPowerDispatch DER Function. DER Group DG4 was created in Test Case DERG-1d and supports the realPowerDispatch and voltageRegulation DER Functions. The Server returns a response message indicating success with no errors and including the details of the forecasts for the two DER Groups in the Payload section of the response message.
Note 1: The parameters for the request query are supplied using XML generated using the DERGroupForecastQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Forecasts will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupForecasts profile.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the applications being tested may contain any of the request and Payload elements and attributes permitted by the XSDs found in Appendices B and D.
**Pre-Condition(s):** DER Groups with a Names.name identifier of DG3 and DG4, as created and/or modified in test cases DERG-1c, DERG-1d, and DERG-3, are assumed to exist.
**Post-Condition(s):** The forecasts for the subject DER Groups are returned in response to the query.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupForecastQueries#" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DEGroupForecasts</Noun>
<Timestamp>2017-06-14T14:46:33-06:00</Timestamp>
<MessageID>18b0ed39-34fd-4c31-9ace-7d56d57beb81</MessageID>
<CorrelationID>977cbce0-53c5-4587-9306-ebb57d3b8b1a</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupForecastQueries>
<obj2:DERMonitorableParameter>
<obj2:DERParameter>activePower</obj2:DERParameter>
</obj2:DERMonitorableParameter>
<obj2:DERMonitorableParameter>
<obj2:DERParameter>voltage</obj2:DERParameter>
</obj2:DERMonitorableParameter>
<obj2:DispatchSchedule>
<obj2:curveStyleKind>straightLineYValues</obj2:curveStyleKind>
<obj2:numberOfIntervals>4</obj2:numberOfIntervals>
<obj2:startTime>2017-06-15T08:00:00-06:00</obj2:startTime>
<obj2:timeIntervalDuration>1</obj2:timeIntervalDuration>
<obj2:timeIntervalUnit>h</obj2:timeIntervalUnit>
</obj2:DispatchSchedule>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG3</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG4</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupForecastQueries>
</tns:Request>
</tns:DERGroupForecastQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesResponseMessage xmlns="http://iec.ch/TC57/2017/DERGroupForecasts#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>DERGroupForecasts</msg:Noun>
<msg:Timestamp>2017-06-14T15:45:20-06:00</msg:Timestamp>
<msg:MessageID>c0ae415d-ecf6-4041-9eec-4b16f13b4a09</msg:MessageID>
<msg:CorrelationID>977cbce0-53c5-4587-9306-ebb57d3b8b1a</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>OK</msg:Result>
<msg:Error>
<msg:code>0.0</msg:code>
</msg:Error>
</tns:Reply>
<tns:Payload>
<DERGroupForecasts>
<DERGroupForecast>
<mRID>c8df7792-7ea7-4d7d-aeed-761e2d2853be</mRID>
<predictionCreationDate>2017-06-14T15:45:12-06:00</predictionCreationDate>
<EndDeviceGroup>
<DERMonitorableParameter>
<DERParameter>activePower</DERParameter>
<yMultiplier>k</yMultiplier>
<yUnit>W</yUnit>
<DispatchSchedule>
<curveStyleKind>straightLineYValues</curveStyleKind>
<startTime>2017-06-15T08:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>26.0</maxYValue>
<minYValue>11.0</minYValue>
<nominalYValue>19.0</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>2</intervalNumber>
<maxYValue>27.5</maxYValue>
<minYValue>11.5</minYValue>
<nominalYValue>21.0</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>3</intervalNumber>
<maxYValue>29.8</maxYValue>
<minYValue>15.2</minYValue>
<nominalYValue>24.0</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>4</intervalNumber>
<maxYValue>31.0</maxYValue>
<minYValue>13.5</minYValue>
<nominalYValue>25.3</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>5</intervalNumber>
<maxYValue>22.0</maxYValue>
<minYValue>8.4</minYValue>
<nominalYValue>14.9</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<Names>
<name>DG3</name>
</Names>
</EndDeviceGroup>
</DERGroupForecast>
<DERGroupForecast>
<mRID>dcee5dff-00a3-4c3b-945c-de72d2981939</mRID>
<predictionCreationDate>2017-06-14T15:45:16-06:00</predictionCreationDate>
<EndDeviceGroup>
<DERMonitorableParameter>
<DERParameter>activePower</DERParameter>
<yMultiplier>k</yMultiplier>
<yUnit>W</yUnit>
<DispatchSchedule>
<curveStyleKind>straightLineYValues</curveStyleKind>
<startTime>2017-06-15T08:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>576.0</maxYValue>
<minYValue>250.7</minYValue>
<nominalYValue>562.0</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>2</intervalNumber>
<maxYValue>570.0</maxYValue>
<minYValue>545.4</minYValue>
<nominalYValue>556.1</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>3</intervalNumber>
<maxYValue>572.0</maxYValue>
<minYValue>549.3</minYValue>
<nominalYValue>561.0</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>4</intervalNumber>
<maxYValue>579.0</maxYValue>
<minYValue>562.0</minYValue>
<nominalYValue>570.6</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>5</intervalNumber>
<maxYValue>582.4</maxYValue>
<minYValue>550.2</minYValue>
<nominalYValue>567.1</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<DERMonitorableParameter>
<DERParameter>voltage</DERParameter>
<yMultiplier>none</yMultiplier>
<yUnit>V</yUnit>
<DispatchSchedule>
<curveStyleKind>straightLineYValues</curveStyleKind>
<startTime>2017-06-15T08:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>240.8</maxYValue>
<minYValue>239.2</minYValue>
<nominalYValue>240.2</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>2</intervalNumber>
<maxYValue>240.8</maxYValue>
<minYValue>239.2</minYValue>
<nominalYValue>239.9</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>3</intervalNumber>
<maxYValue>240.8</maxYValue>
<minYValue>239.2</minYValue>
<nominalYValue>240.4</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>4</intervalNumber>
<maxYValue>240.8</maxYValue>
<minYValue>239.2</minYValue>
<nominalYValue>240.3</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>5</intervalNumber>
<maxYValue>240.8</maxYValue>
<minYValue>239.2</minYValue>
<nominalYValue>239.8</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<Names>
<name>DG4</name>
</Names>
</EndDeviceGroup>
</DERGroupForecast>
</DERGroupForecasts>
</tns:Payload>
</tns:DERGroupForecastQueriesResponseMessage>
```
**Test Results**
| Step Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|
| 1 | Get DER Group Forecasts | http://xx.xxx.xxx.xxx/ | get | DERGroupForecasts |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupForecasts |
### DERGF-1d: Client requests forecasts for two DER Groups and Server replies (Two DER Groups in a single message - One succeeds and one fails)
In this test case, the Client requests the Server to provide forecasts for two DER Groups as identified by their Names.name identifiers of DG6 and DG7, respectively. DER Group DG6 was created in Test Case DERG-1e and supports the realPowerDispatch and reactivePowerDispatch DERFunctions; however, for this test case, only the forecast for the reactive power is requested. DER Group DG7 was created in Test Case DERG-6 and modified in Test Case DERG-7 but was subsequently deleted in Test Case DERG-9. Consequently, the Server returns a response message indicating a failure of the request for DER Group DG7. Because no error is reported for DER Group DG6, the interpretation of the response message is that the request for DER Group DG6 was successful; accordingly, the forecast for DER Group DG6 is returned in the Payload section of the response message. (See Appendix F for error codes.)
Note 1: The parameters for the request query are supplied using XML generated using the DERGroupForecastQueries profile. The XML for this request is placed in the Request section of the Message envelope and not in the Payload section of the Message envelope.
Note 2: Not all response messages will contain a Payload; only those for which the query returns one or more DER Group Forecasts will have contents in the Payload section. In response messages that contain a Payload, the Payload must validate against the constrained version of the DERGroupForecasts profile.
**Pre-Condition(s):** The DER Group with a Names.name identifier of DG6, as created in Test Case DERG- 1e, is assumed to exist. A DER Group with a Names.name identifier of DG7 is assumed not to exist because it was previously deleted in Test Case DERG-9.
**Post-Condition(s):** The response message contains the forecast for DER Group DG6 and an indication of an error for DER Group DG7.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesRequestMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:obj2="http://iec.ch/TC57/2017/DERGroupForecastQueries#" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<Verb>get</Verb>
<Noun>DEGroupForecasts</Noun>
<Timestamp>2017-06-14T16:43:18-06:00</Timestamp>
<MessageID>3972b6f0-ff1e-45ae-b5c5-ca64ee807249</MessageID>
<CorrelationID>bdb8fadf-73e6-471f-9cdd-dce3f9e254b0</CorrelationID>
</tns:Header>
<tns:Request>
<obj2:DERGroupForecastQueries>
<obj2:DERMonitorableParameter>
<obj2:DERParameter>reactivePower</obj2:DERParameter>
</obj2:DERMonitorableParameter>
<obj2:DispatchSchedule>
<obj2:curveStyleKind>constantYValue</obj2:curveStyleKind>
<obj2:numberOfIntervals>2</obj2:numberOfIntervals>
<obj2:startTime>2017-06-16T12:00:00-06:00</obj2:startTime>
<obj2:timeIntervalDuration>1</obj2:timeIntervalDuration>
<obj2:timeIntervalUnit>h</obj2:timeIntervalUnit>
</obj2:DispatchSchedule>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG6</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
<obj2:EndDeviceGroup>
<obj2:Names>
<obj2:name>DG7</obj2:name>
</obj2:Names>
</obj2:EndDeviceGroup>
</obj2:DERGroupForecastQueries>
</tns:Request>
</tns:DERGroupForecastQueriesRequestMessage>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupForecastQueriesResponseMessage xmlns="http://iec.ch/TC57/2017/DERGroupForecasts#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastQueriesMessage DERGroupForecastQueriesMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>DERGroupForecasts</msg:Noun>
<msg:Timestamp>2017-06-14T16:43:41-06:00</msg:Timestamp>
<msg:MessageID>a8092269-c748-4ece-ae1f-7de7a276828b</msg:MessageID>
<msg:CorrelationID>bdb8fadf-73e6-471f-9cdd-dce3f9e254b0</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>FAILED</msg:Result>
<msg:Error>
<msg:code>99.1</msg:code>
<msg:level>FATAL</msg:level>
<msg:details>does not exist</msg:details>
<msg:ID idType="String" idAuthority="String" kind="uuid" objectType="String">String</msg:ID>
</msg:Error>
</tns:Reply>
<tns:Payload>
<DERGroupForecasts>
<DERGroupForecast>
<mRID>65ed8258-756c-43c8-b571-75c5addc41d3</mRID>
<predictionCreationDate>2017-06-14T16:43:35-06:00</predictionCreationDate>
<EndDeviceGroup>
<DERMonitorableParameter>
<DERParameter>reactivePower</DERParameter>
<yMultiplier>k</yMultiplier>
<yUnit>VAr</yUnit>
<DispatchSchedule>
<curveStyleKind>constantYValue</curveStyleKind>
<startTime>2017-06-16T12:00:00-06:00</startTime>
<timeIntervalDuration>2</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>115.6</maxYValue>
<minYValue>87.7</minYValue>
<nominalYValue>102.4</nominalYValue>
</DERCurveData>
<DERCurveData>
<intervalNumber>2</intervalNumber>
<maxYValue>119.2</maxYValue>
<minYValue>89.9</minYValue>
<nominalYValue>105.1</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<Names>
<name>DG6</name>
</Names>
</EndDeviceGroup>
</DERGroupForecast>
</DERGroupForecasts>
</tns:Payload>
</tns:DERGroupForecastQueriesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Get DER Group Forecasts | http://xx.xxx.xxx.xxx/ | get | DERGroupForecasts | |
| 2 | Mixed Success/Failure | http://xx.xxx.xxx.xxx/ | reply | DERGroupForecasts | |
### DERGF-2: Server informs Client of creation of a DER Group Forecast
In this test case, the Server informs the Client that a forecast for DER Group DG8 has been created and the Server provides the new forecast. Such a notification may occur if the Client has not asked for the forecast but instead is being notified of the forecast that was created by the Server. The notification may occur immediately at the time of the forecast or at some short time thereafter. This is an asynchronous notification using an Event Stereotype message. There is no response message.
In this test case, DER Group DG8 was previously created in Test Case DERG-6 and modified in Test Case DERG-8.
**Pre-Condition(s):** DER Group with a Names.name identifier of DG8, as created in Test Case DERG-6 and modified in Test Case DERG-8, is assumed to exist.
**Post-Condition(s):** The new forecast for DER Group DG8 is sent to the Client by the Server.
#### Step 1 - Event Message (Notification Message)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedDERGroupForecasts xmlns="http://iec.ch/TC57/2017/DERGroupForecasts#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupForecastsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupForecastsMessage DERGroupForecastsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>DERGroupForecasts</msg:Noun>
<msg:Timestamp>2017-06-14T17:15:02-06:00</msg:Timestamp>
<msg:MessageID>42d206dd-2aa2-4eb3-83b6-ea931ac4f7cd</msg:MessageID>
</tns:Header>
<tns:Payload>
<DERGroupForecasts>
<DERGroupForecast>
<mRID>bf4283ad-ca68-4044-9d5f-27ac63d10c30</mRID>
<predictionCreationDate>2017-06-14T17:14:48-06:00</predictionCreationDate>
<EndDeviceGroup>
<DERMonitorableParameter>
<DERParameter>activePower</DERParameter>
<yMultiplier>k</yMultiplier>
<yUnit>W</yUnit>
<DispatchSchedule>
<curveStyleKind>constantYValue</curveStyleKind>
<startTime>2017-06-14T18:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>160.2</maxYValue>
<minYValue>153.3</minYValue>
<nominalYValue>156.7</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<DERMonitorableParameter>
<DERParameter>reactivePower</DERParameter>
<yMultiplier>k</yMultiplier>
<yUnit>VAr</yUnit>
<DispatchSchedule>
<curveStyleKind>constantYValue</curveStyleKind>
<startTime>2017-06-14T18:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>190.1</maxYValue>
<minYValue>178.8</minYValue>
<nominalYValue>183.7</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<DERMonitorableParameter>
<DERParameter>voltage</DERParameter>
<yMultiplier>none</yMultiplier>
<yUnit>V</yUnit>
<DispatchSchedule>
<curveStyleKind>constantYValue</curveStyleKind>
<startTime>2017-06-14T18:00:00-06:00</startTime>
<timeIntervalDuration>1</timeIntervalDuration>
<timeIntervalUnit>h</timeIntervalUnit>
<DERCurveData>
<intervalNumber>1</intervalNumber>
<maxYValue>122.0</maxYValue>
<minYValue>118.0</minYValue>
<nominalYValue>120.2</nominalYValue>
</DERCurveData>
</DispatchSchedule>
</DERMonitorableParameter>
<Names>
<name>DG8</name>
</Names>
</EndDeviceGroup>
</DERGroupForecast>
</DERGroupForecasts>
</tns:Payload>
</tns:CreatedDERGroupForecasts>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Created DER Group Forecast | http://xx.xxx.xxx.xxx/ | changed | DERGroupForecasts | |
## DER Group Dispatch (Section 12)
### DERGD-1a: Client requests creation of a DER Group Dispatch and Server replies (Success - Single DER Group)
In this test case, the Client requests the Server to create a single DER Group Dispatch for the DER Group having a Names.name identifier of DG2. DER Group DG2 was created in Test Case DERG-1c and modified in Test Case DERG-2b. The Server returns a response message indicating success with no errors.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. In addition, as noted, this test case illustrates the successful creation of a single DER Group Dispatch. Subsequent test cases will illustrate attempts to create multiple DER Group Dispatches through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** DER Group DG2, as created in Test Case DERG-1c and modified in Test Case DERG- 2b, is assumed to exist.
**Post-Condition(s):** A new DER Group Dispatch is created with the mRID and Names identifiers that were passed in the request message.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroupDispatches xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>create</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T16:23:33-06:00</Timestamp>
<MessageID>d463ff88-7625-46f7-b8f4-64665b7484b2</MessageID>
<CorrelationID>5d0a1857-9e68-405a-afbe-9b5f6d3165d3</CorrelationID>
</tns:Header>
<tns:Payload>
<m:DERGroupDispatches>
<m:DERGroupDispatch>
<m:mRID>016cf0c9-4eb6-4e6c-b6d8-d50e5746f54e</m:mRID>
<m:EndDeviceGroup>
<m:DERMonitorableParameter>
<m:DERParameter>activePower</m:DERParameter>
<m:yMultiplier>k</m:yMultiplier>
<m:yUnit>W</m:yUnit>
<m:DispatchSchedule>
<m:curveStyleKind>straightLineYValues</m:curveStyleKind>
<m:startTime>2017-06-16T17:00:00-06:00</m:startTime>
<m:timeIntervalDuration>15</m:timeIntervalDuration>
<m:timeIntervalUnit>m</m:timeIntervalUnit>
<m:DERCurveData>
<m:intervalNumber>1</m:intervalNumber>
<m:nominalYValue>190.0</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>2</m:intervalNumber>
<m:nominalYValue>200.0</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>3</m:intervalNumber>
<m:nominalYValue>200.0</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>4</m:intervalNumber>
<m:nominalYValue>180.0</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>5</m:intervalNumber>
<m:nominalYValue>175.0</m:nominalYValue>
</m:DERCurveData>
</m:DispatchSchedule>
</m:DERMonitorableParameter>
<m:Names>
<m:name>DG2</m:name>
</m:Names>
</m:EndDeviceGroup>
<m:Names>
<m:name>GD-20170616-029</m:name>
</m:Names>
</m:DERGroupDispatch>
</m:DERGroupDispatches>
</tns:Payload>
</tns:CreateDERGroupDispatches>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupDispatchesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T16:23:41-06:00</Timestamp>
<MessageID>a21fff09-ff62-413c-8ddb-7ed74d231752</MessageID>
<CorrelationID>5d0a1857-9e68-405a-afbe-9b5f6d3165d3</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupDispatchesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group Dispatch | http://xx.xxx.xxx.xxx/ | create | DERGroupDispatches | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupDispatches | |
### DERGD-1b: Client requests creation of a DER Group Dispatch and Server replies (Failure - Single DER Group)
In this test case, the Client requests the Server to create a single DER Group Dispatch for DER Group DG1. DER Group DG1 was created in Test Case DERG-1a and modified in Test Case DERG-2a; however, it was subsequently deleted in Test Case DERG-4. Consequently, the Server returns a response message indicating a failure because DER Group DG1 no longer exists. (See Appendix F for error codes.)
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. In addition, as noted, this test case illustrates a failure of a request to create a single DER Group Dispatch. Subsequent test cases will illustrate attempts to create multiple DER Group Dispatches through a single request message as well as responses indicating various failures as well as successes.
**Pre-Condition(s):** DER Group DG1 is assumed not to exist because it was deleted in Test Case DERG-4. Post- Creation of the DER Group Dispatch failed as indicated in the Step 2 response message. Condition(s)
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroupDispatches xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>create</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T16:54:01-06:00</Timestamp>
<MessageID>ca716db7-da13-4b5d-889c-03fb1013d163</MessageID>
<CorrelationID>41cecb29-73f9-4e48-a907-e33e1848e366</CorrelationID>
</tns:Header>
<tns:Payload>
<obj:DERGroupDispatches>
<obj:DERGroupDispatch>
<obj:mRID>73cc9ce2-4b3c-4ba4-b3a9-8f757a9f7054</obj:mRID>
<obj:EndDeviceGroup>
<obj:DERMonitorableParameter>
<obj:DERParameter>activePower</obj:DERParameter>
<obj:yMultiplier>k</obj:yMultiplier>
<obj:yUnit>W</obj:yUnit>
<obj:DispatchSchedule>
<obj:curveStyleKind>constantYValue</obj:curveStyleKind>
<obj:startTime>2017-06-16T17:30:00-06:00</obj:startTime>
<obj:timeIntervalDuration>15</obj:timeIntervalDuration>
<obj:timeIntervalUnit>m</obj:timeIntervalUnit>
<obj:DERCurveData>
<obj:intervalNumber>1</obj:intervalNumber>
<obj:nominalYValue>35.5</obj:nominalYValue>
</obj:DERCurveData>
<obj:DERCurveData>
<obj:intervalNumber>2</obj:intervalNumber>
<obj:nominalYValue>38.6</obj:nominalYValue>
</obj:DERCurveData>
</obj:DispatchSchedule>
</obj:DERMonitorableParameter>
<obj:Names>
<obj:name>DG1</obj:name>
</obj:Names>
</obj:EndDeviceGroup>
</obj:DERGroupDispatch>
</obj:DERGroupDispatches>
</tns:Payload>
</tns:CreateDERGroupDispatches>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupDispatchesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T16:54:18-06:00</Timestamp>
<MessageID>996ee749-4e28-4c5c-8cc8-d0cfac2279e3</MessageID>
<CorrelationID>41cecb29-73f9-4e48-a907-e33e1848e366</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>99.1</code>
<level>FATAL</level>
<details>DERGroup does not exist</details>
<ID kind="name" objectType="DERGroup">DG1</ID>
</Error>
</tns:Reply>
</tns:DERGroupDispatchesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group Dispatch | http://xx.xxx.xxx.xxx/ | create | DERGroupDispatches | |
| 2 | Failure Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupDispatches | |
### DERGD-1c: Client requests creation of two DER Group Dispatches and Server replies (Success - Two DER Groups in a single message)
In this test case, the Client requests the Server to create two DER Group Dispatches: one for DER Group DG3 and one for DER Group DG4. DER Group DG3 was created in Test Case DERG-1c and modified in Test Case DERG-3. DER Group DG4 was created in Test Case DERG-1d.
The Server returns a response message indicating success with no errors.
**Pre-Condition(s):** DER Group DG3, as created in Test Case DERG-1c and modified in Test Case DERG- 3, is assumed to exist. DER Group DG4, as previously created in Test Case DERG-1d, is assumed to exist.
**Post-Condition(s):** Two new DER Group Dispatches are created with the mRID identifiers that were passed in the request message.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroupDispatches xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>create</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:11:22-06:00</Timestamp>
<MessageID>993e3047-5bc4-4d50-b31e-8f5850d99be7</MessageID>
<CorrelationID>a613a3d1-c880-4f73-a90b-2c7d3f524ba1</CorrelationID>
</tns:Header>
<tns:Payload>
<m:DERGroupDispatches>
<m:DERGroupDispatch>
<m:mRID>cf78aff3-afcf-4304-8e70-72de5ff98801</m:mRID>
<m:EndDeviceGroup>
<m:DERMonitorableParameter>
<m:DERParameter>reactivePower</m:DERParameter>
<m:yMultiplier>k</m:yMultiplier>
<m:yUnit>VAr</m:yUnit>
<m:DispatchSchedule>
<m:curveStyleKind>straightLineYValues</m:curveStyleKind>
<m:startTime>2017-06-16T18:00:00-06:00</m:startTime>
<m:timeIntervalDuration>1</m:timeIntervalDuration>
<m:timeIntervalUnit>h</m:timeIntervalUnit>
<m:DERCurveData>
<m:intervalNumber>1</m:intervalNumber>
<m:nominalYValue>415.7</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>2</m:intervalNumber>
<m:nominalYValue>439.5</m:nominalYValue>
</m:DERCurveData>
</m:DispatchSchedule>
</m:DERMonitorableParameter>
</m:EndDeviceGroup>
<m:Names>
<m:name>DG3</m:name>
</m:Names>
</m:DERGroupDispatch>
<m:DERGroupDispatch>
<m:mRID>c646bd5c-9ca1-4d31-8e8e-33aba6ee2ab4</m:mRID>
<m:EndDeviceGroup>
<m:DERMonitorableParameter>
<m:DERParameter>voltage</m:DERParameter>
<m:yMultiplier>k</m:yMultiplier>
<m:yUnit>V</m:yUnit>
<m:DispatchSchedule>
<m:curveStyleKind>constantYValue</m:curveStyleKind>
<m:startTime>2017-06-16T18:00:00-06:00</m:startTime>
<m:timeIntervalDuration>1</m:timeIntervalDuration>
<m:timeIntervalUnit>h</m:timeIntervalUnit>
<m:DERCurveData>
<m:intervalNumber>2</m:intervalNumber>
<m:nominalYValue>12.20</m:nominalYValue>
</m:DERCurveData>
<m:DERCurveData>
<m:intervalNumber>2</m:intervalNumber>
<m:nominalYValue>12.35</m:nominalYValue>
</m:DERCurveData>
</m:DispatchSchedule>
</m:DERMonitorableParameter>
<m:Names>
<m:name>DG4</m:name>
</m:Names>
</m:EndDeviceGroup>
</m:DERGroupDispatch>
</m:DERGroupDispatches>
</tns:Payload>
</tns:CreateDERGroupDispatches>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupDispatchesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:11:43-06:00</Timestamp>
<MessageID>8478ec44-4871-4216-86f2-5fcd84d21cae</MessageID>
<CorrelationID>a613a3d1-c880-4f73-a90b-2c7d3f524ba1</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
</tns:DERGroupDispatchesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group Dispatches http://xx.xxx.xxx.xxx/ | create | DERGroupDispatches | | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupDispatches | |
### DERGD-1d: Client requests creation of two DER Group Dispatches and Server replies (Two DER Group in a single message - One succeeds and one fails)
In this test case, the Client requests the Server to create two DER Group Dispatches: one for DER Group DG6 and one for DER Group DG7. DER Group DG6 was created in Test Case DERG-1e. DER Group DG7 was created in Test Case DERG-6 and modified in Test Case DERG-7 but was subsequently deleted in Test Case DERG-9. Consequently, the Server returns a response message indicating that creation of the second DER Group Dispatch failed. Because no error is reported for the first DER Group Dispatch, the interpretation of the response message is that the creation of the first DER Group Dispatch succeeded. (See Appendix F for error codes.)
**Pre-Condition(s):** DER Group DG6, as created in Test Case DERG-1e, is assumed to exist. DER Group DG7, as created in Test Case DERG-6 and modified in Test Case DERG-7, is assumed not to exist because it was subsequently deleted in Test Case DERG-9.
**Post-Condition(s):** One new DER Group Dispatch (for DER Group DG6) is created with the mRID identifier that was passed in the request message. An error is returned, indicating that creation of the DER Group Dispatch for DER Group DG7 failed.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroupDispatches xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>create</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:27:18-06:00</Timestamp>
<MessageID>352946bb-f19b-4480-abd4-ba56e479b5c3</MessageID>
<CorrelationID>fa172999-de6d-4264-bbed-1798458e3fda</CorrelationID>
</tns:Header>
<tns:Payload>
<obj:DERGroupDispatches>
<obj:DERGroupDispatch>
<obj:mRID>124d7edb-5e4b-4128-bf09-7647a6244fc1</obj:mRID>
<obj:EndDeviceGroup>
<obj:DERMonitorableParameter>
<obj:DERParameter>reactivePower</obj:DERParameter>
<obj:yMultiplier>k</obj:yMultiplier>
<obj:yUnit>VAr</obj:yUnit>
<obj:DispatchSchedule>
<obj:curveStyleKind>straightLineYValues</obj:curveStyleKind>
<obj:startTime>2017-06-16T17:30:00-06:00</obj:startTime>
<obj:timeIntervalDuration>10</obj:timeIntervalDuration>
<obj:timeIntervalUnit>m</obj:timeIntervalUnit>
<obj:DERCurveData>
<obj:intervalNumber>1</obj:intervalNumber>
<obj:nominalYValue>332.2</obj:nominalYValue>
</obj:DERCurveData>
<obj:DERCurveData>
<obj:intervalNumber>2</obj:intervalNumber>
<obj:nominalYValue>355.3</obj:nominalYValue>
</obj:DERCurveData>
<obj:DERCurveData>
<obj:intervalNumber>3</obj:intervalNumber>
<obj:nominalYValue>361.9</obj:nominalYValue>
</obj:DERCurveData>
<obj:DERCurveData>
<obj:intervalNumber>4</obj:intervalNumber>
<obj:nominalYValue>351.8</obj:nominalYValue>
</obj:DERCurveData>
</obj:DispatchSchedule>
</obj:DERMonitorableParameter>
</obj:EndDeviceGroup>
<obj:Names>
<obj:name>DG6</obj:name>
</obj:Names>
</obj:DERGroupDispatch>
<obj:DERGroupDispatch>
<obj:mRID>700c4f22-071a-4f8b-b633-ce867f2ffe4a</obj:mRID>
<obj:EndDeviceGroup>
<obj:DERMonitorableParameter>
<obj:DERParameter>activePower</obj:DERParameter>
<obj:yMultiplier>k</obj:yMultiplier>
<obj:yUnit>W</obj:yUnit>
<obj:DispatchSchedule>
<obj:curveStyleKind>constantYValue</obj:curveStyleKind>
<obj:startTime>2017-06-16T17:30:00-06:00</obj:startTime>
<obj:timeIntervalDuration>30</obj:timeIntervalDuration>
<obj:timeIntervalUnit>m</obj:timeIntervalUnit>
<obj:DERCurveData>
<obj:intervalNumber>1</obj:intervalNumber>
<obj:nominalYValue>14.1</obj:nominalYValue>
</obj:DERCurveData>
</obj:DispatchSchedule>
</obj:DERMonitorableParameter>
<obj:Names>
<obj:name>DG7</obj:name>
</obj:Names>
</obj:EndDeviceGroup>
</obj:DERGroupDispatch>
</obj:DERGroupDispatches>
</tns:Payload>
</tns:CreateDERGroupDispatches>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupDispatchesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:27:34-06:00</Timestamp>
<MessageID>09c5f99c-0b90-44c4-926e-79372e56cc27</MessageID>
<CorrelationID>fa172999-de6d-4264-bbed-1798458e3fda</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>FAILED</Result>
<Error>
<code>99.1</code>
<level>FATAL</level>
<details>DERGroup does not exist</details>
<ID kind="name" objectType="DERGroup">DG1</ID>
</Error>
</tns:Reply>
</tns:DERGroupDispatchesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group Dispatches | http://xx.xxx.xxx.xxx/ | create | DERGroupDispatches | |
| 2 | Mixed Success/Failure | http://xx.xxx.xxx.xxx/ | reply | DERGroupDispatches | |
### DERGD-1e: Client requests creation of a DER Group Dispatch and Server replies (Success - Single DER Group; Responder supplies mRID)
In this test case, the Client requests the Server to create a single DER Group Dispatch for DER Group DG8. DER Group DG8 was created in Test Case DERG-6 and modified in Test Case DERG-8. The Server returns a response message indicating success with no errors. The Server (because of an assumed business rule) also assigns an mRID identifier to the DER Group Dispatch; consequently, the response message in Step 2 includes a Payload section that adds the mRID identifier to the Payload of the Step 1 request message.
**Pre-Condition(s):** DER Group DG8, as created in Test Case DERG-6 and modified in Test Case DERG-8, is assumed to exist.
**Post-Condition(s):** A new DER Group Dispatch is created with the Names identifier that was passed in the request message. The server responds with an indication of success and adds the mRID identifier in the Payload section of the response message.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroupDispatches xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>create</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:56:28-06:00</Timestamp>
<MessageID>d39015d3-0862-4828-b924-aea7b163fed9</MessageID>
<CorrelationID>c7eada9d-b9c7-43b3-9911-f4edf5643471</CorrelationID>
</tns:Header>
<tns:Payload>
<m:DERGroupDispatches>
<m:DERGroupDispatch>
<m:EndDeviceGroup>
<m:DERMonitorableParameter>
<m:DERParameter>activePower</m:DERParameter>
<m:yMultiplier>k</m:yMultiplier>
<m:yUnit>W</m:yUnit>
<m:DispatchSchedule>
<m:curveStyleKind>constantYValue</m:curveStyleKind>
<m:startTime>2017-06-16T18:00:00-06:00</m:startTime>
<m:timeIntervalDuration>30</m:timeIntervalDuration>
<m:timeIntervalUnit>m</m:timeIntervalUnit>
<m:DERCurveData>
<m:intervalNumber>1</m:intervalNumber>
<m:nominalYValue>0.9</m:nominalYValue>
</m:DERCurveData>
</m:DispatchSchedule>
</m:DERMonitorableParameter>
<m:Names>
<m:name>DG8</m:name>
</m:Names>
</m:EndDeviceGroup>
<m:Names>
<m:name>DER Dispatch Request 20170616_A543</m:name>
</m:Names>
</m:DERGroupDispatch>
</m:DERGroupDispatches>
</tns:Payload>
</tns:CreateDERGroupDispatches>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:DERGroupDispatchesResponseMessage xmlns="http://iec.ch/TC57/2011/schema/message" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:obj="http://iec.ch/TC57/2017/DERGroupDispatches#" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/DERGroupDispatchesMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupDispatchesMessage DERGroupDispatchesMessage.xsd">
<tns:Header>
<Verb>reply</Verb>
<Noun>DERGroupDispatches</Noun>
<Timestamp>2017-06-16T17:56:38-06:00</Timestamp>
<MessageID>7d489885-29db-459d-b068-f6b53260a80e</MessageID>
<CorrelationID>c7eada9d-b9c7-43b3-9911-f4edf5643471</CorrelationID>
</tns:Header>
<tns:Reply>
<Result>OK</Result>
<Error>
<code>0.0</code>
</Error>
</tns:Reply>
<tns:Payload>
<obj:DERGroupDispatches>
<obj:DERGroupDispatch>
<obj:mRID>da753558-ab8b-42c7-b0cd-cd0200493810</obj:mRID>
<obj:EndDeviceGroup>
<obj:DERMonitorableParameter>
<obj:DERParameter>activePower</obj:DERParameter>
<obj:yMultiplier>k</obj:yMultiplier>
<obj:yUnit>W</obj:yUnit>
<obj:DispatchSchedule>
<obj:curveStyleKind>constantYValue</obj:curveStyleKind>
<obj:startTime>2017-06-16T18:00:00-06:00</obj:startTime>
<obj:timeIntervalDuration>30</obj:timeIntervalDuration>
<obj:timeIntervalUnit>m</obj:timeIntervalUnit>
<obj:DERCurveData>
<obj:intervalNumber>1</obj:intervalNumber>
<obj:nominalYValue>0.9</obj:nominalYValue>
</obj:DERCurveData>
</obj:DispatchSchedule>
</obj:DERMonitorableParameter>
<obj:Names>
<obj:name>DG8</obj:name>
</obj:Names>
</obj:EndDeviceGroup>
<obj:Names>
<obj:name>DER Dispatch Request 20170616_A543</obj:name>
</obj:Names>
</obj:DERGroupDispatch>
</obj:DERGroupDispatches>
</tns:Payload>
</tns:DERGroupDispatchesResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | Create DER Group Dispatch | http://xx.xxx.xxx.xxx/ | create | DERGroupDispatches | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | DERGroupDispatches | |
## DER Group Connect / Disconnect (Section 13)
### DERGCD-1a: Client Requests Connection of a DER Group and Server Replies (Full Success - Single DER Group)
In this test case, the Client uses an EndDeviceControls message to request the Server to connect the DER Group with a Names.name identifier of DG2 to the grid. DER Group DG2 was created in Test Case DERG-1c and modified in Test Case DERG-2b. There are three DER Devices in DER Group DG2.
The Server returns a response message indicating success with no errors. This means that the server has accepted and validated the connection request and will attempt to disconnect the DER Devices in the DER Group. The response message does not indicate whether the connection of each DER Device was successful.
After the Server has responded with the response message, it attempts to connect each of the DER Devices in the DER Group. For each DER Device in the DER Group, the server then issues an EndDeviceEvents consequential event message. These consequential event messages indicate whether each DER Device was or was not successfully connected. In this test case, all three DER Devices are successfully connected to the grid.
Note 1: See Appendix G for the four-digit EndDeviceControlType codes used to request connection or disconnection of DER Groups (technically the DER Devices in a DER Group) to/from the grid.
Note 2: See Appendix H for the four-digit EndDeviceEventType codes used to indicate successful or failed connection or disconnection of DER Devices from the grid.
Note 3: Even though the consequential event messages are asynchronous, the Header of each EndDeviceEvents consequential event message carries the CorrelationID of the preceding EndDeviceControls message. This provides the mechansim to link the asynchronous consequential EndDeviceEvent with the EndDeviceControl responsible for its creation.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. As noted, this test case illustrates the successful connection of a single DER Group and all its associated DER Devices to the grid. Subsequent test cases will illustrate attempts to connect or disconnect both single and multiple DER Group Dispatches as well as reflect various success and failure indications.
Note: This DER Group Connect test case can be altered from a connect to a disconnect by simply changing the EndDeviceControlType codes (see Appendix G) and EndDeviceEventType codes (see Appendix H).
**Pre-Condition(s):** DER Group DG2, as created in Test Case DERG-1c and modified in Test Case DERG- 2b, is assumed to exist.
**Post-Condition(s):** DER Group DG2 and its three associated DER Devices are connected to the grid.
#### Step 1 - Request Message
```xml
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateEndDeviceControls xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T11:24:04-06:00</msg:Timestamp>
<msg:MessageID>aab72e66-d8b4-406c-8e18-4df2864cf947</msg:MessageID>
<msg:CorrelationID>3a913c02-bc54-4a63-b82a-b255ffa0b7da</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceControls>
<EndDeviceControl>
<mRID>2b928834-b538-4244-9daf-6db54f700a76</mRID>
<EndDeviceControlType ref="2.31.0.18"/>
<EndDeviceGroups>
<Names>
<name>DG2</name>
</Names>
</EndDeviceGroups>
</EndDeviceControl>
</EndDeviceControls>
</tns:Payload>
</tns:CreateEndDeviceControls>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:EndDeviceControlsResponseMessage xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T11:24:12-06:00</msg:Timestamp>
<msg:MessageID>e7bdb90c-17cb-42fe-a559-19022b72a130</msg:MessageID>
<msg:CorrelationID>3a913c02-bc54-4a63-b82a-b255ffa0b7da</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>OK</msg:Result>
<msg:Error>
<msg:code>0.0</msg:code>
</msg:Error>
</tns:Reply>
</tns:EndDeviceControlsResponseMessage>
```
#### Step 3 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T11:24:31-06:00</msg:Timestamp>
<msg:MessageID>ca8fe4d0-00b7-4276-a185-f53e113f5802</msg:MessageID>
<msg:CorrelationID>3a913c02-bc54-4a63-b82a-b255ffa0b7da</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>02a4d91f-6727-4005-8f60-b523729afd16</mRID>
<createdDateTime>2017-06-20T11:24:28-06:00</createdDateTime>
<Assets>
<mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.42"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 4 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T11:24:35-06:00</msg:Timestamp>
<msg:MessageID>ca8fe4d0-00b7-4276-a185-f53e113f5802</msg:MessageID>
<msg:CorrelationID>3a913c02-bc54-4a63-b82a-b255ffa0b7da</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>e8839736-4977-4b67-9a0a-e63b7ed9ff3f</mRID>
<createdDateTime>2017-06-20T11:24:29-06:00</createdDateTime>
<Assets>
<mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.42"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 5 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T11:24:39-06:00</msg:Timestamp>
<msg:MessageID>60631d18-3353-49b4-94be-69daf1feb9f9</msg:MessageID>
<msg:CorrelationID>3a913c02-bc54-4a63-b82a-b255ffa0b7da</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>15682227-b766-401e-ad90-52045e0901be</mRID>
<createdDateTime>2017-06-20T11:24:33-06:00</createdDateTime>
<Assets>
<mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.42"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | DER Group Connection Request http://xx.xxx.xxx.xxx/ | Create | EndDeviceControls | | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | Reply | EndDeviceControls | |
| 4 | DER Device Connected Event | http://xx.xxx.xxx.xxx/ | Created EndDeviceEvents | | |
| 4 | DER Device Connected Event | http://xx.xxx.xxx.xxx/ | Created EndDeviceEvents | | |
| 5 | DER Device Connected Event | http://xx.xxx.xxx.xxx/ | created | EndDeviceEvents | |
### DERGCD-1b: Client requests connection of a DER Group and Server replies (Failure - Single DER Group; Request rejected)
In this test case, the Client uses an EndDeviceControls message to request the Server to connect the DER Group with a Names.name identifier of DG1 to the grid. DER Group DG1 was created in Test Case DERG-1a and modified in Test Case DERG-2a; however, it was subsequently deleted in Test Case DERG-4. Consequently, the Server returns a response message indicating a failure because DER Group DG1 no longer exists. (See Appendix F for error codes.)
Note 1: See Appendix G for the four-digit EndDeviceControlType codes used to request connection or disconnection of DER Groups (technically the DER Devices in a DER Group) to/from the grid.
The examples in this and other test cases illustrate the population of an exemplary subset of elements and attributes selected solely for illustrative purposes. Actual messages created by the Client and Server applications may contain any of the elements and attributes permitted by the XSDs found in Appendices B and D. As noted, this test case illustrates a failed attempt to connect a single DER Group because the DER Group no longer exists. Subsequent test cases will illustrate attempts to connect or disconnect both single and multiple DER Group Dispatches as well as reflect various success and failure indications.
Note: This DER Group Connect test case can be altered from a connect to a disconnect by simply changing the EndDeviceControlType code (see Appendix G).
**Pre-Condition(s):** DER Group DG1 is assumed not to exist because it was deleted in Test Case DERG-4. Post- The request to connect DER Group DG1 to the grid was rejected as indicated in the Step Condition(s) 2 response message.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateEndDeviceControls xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T12:40:03-06:00</msg:Timestamp>
<msg:MessageID>e80d8963-11db-451f-a757-9e74e34df569</msg:MessageID>
<msg:CorrelationID>3b56562c-fc74-46ea-9b0b-97fde6055818</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceControls>
<EndDeviceControl>
<mRID>52d5d3e4-601b-4030-a9b8-7742bf019c88</mRID>
<EndDeviceControlType ref="2.31.0.18"/>
<EndDeviceGroups>
<Names>
<name>DG1</name>
</Names>
</EndDeviceGroups>
</EndDeviceControl>
</EndDeviceControls>
</tns:Payload>
</tns:CreateEndDeviceControls>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:EndDeviceControlsResponseMessage xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T12:40:08-06:00</msg:Timestamp>
<msg:MessageID>01bd72e8-686c-456b-b441-9bb6eca84c1f</msg:MessageID>
<msg:CorrelationID>3b56562c-fc74-46ea-9b0b-97fde6055818</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>FAILED</msg:Result>
<msg:Error>
<msg:code>99.1</msg:code>
<msg:level>FATAL</msg:level>
<msg:details>DERGroup does not exist</msg:details>
<msg:ID kind="name" objectType="DERGroup">DG1</msg:ID>
</msg:Error>
</tns:Reply>
</tns:EndDeviceControlsResponseMessage>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | DER Group Connection Request | http://xx.xxx.xxx.xxx/ | create | EndDeviceControls | |
| 2 | Failure Response | http://xx.xxx.xxx.xxx/ | reply | EndDeviceControls | |
### DERGCD-1c: Client requests connection of a DER Group and Server replies (Partial failure - Single DER Group; One DER Device fails to connect)
In this test case, the Client uses an EndDeviceControls message to request the Server to connect the DER Group with a Names.name identifier of DG4 to the grid. DER Group DG2 was created in Test Case DERG-1d. There are two DER Devices in DER Group DG4.
The Server returns a response message indicating success with no errors. This means that the server has accepted and validated the connection request and will attempt to disconnect the DER Devices in the DER Group. The response message does not indicate whether the connection of each DER Device was successful.
After the Server has responded with the response message, it attempts to connect each of the DER Devices in the DER Group. For each DER Device in the DER Group, the server then issues an EndDeviceEvents consequential event message. These consequential event messages indicate whether each DER Device was or was not successfully connected. In this test case, all three DER Devices are successfully connected to the grid.
Note 1: See Appendix G for the four-digit EndDeviceControlType codes used to request connection or disconnection of DER Groups (technically the DER Devices in a DER Group) to/from the grid.
Note 2: See Appendix H for the four-digit EndDeviceEventType codes used to indicate successful or failed connection or disconnection of DER Devices from the grid.
Note 3: Even though the consequential event messages are asynchronous, the Header of each EndDeviceEvents consequential event message carries the CorrelationID of the preceding EndDeviceControls message. This provides the mechansim to link the asynchronous consequential EndDeviceEvent with the EndDeviceControl responsible for its creation.
Note: This DER Group Connect test case can be altered from a connect to a disconnect by simply changing the EndDeviceControlType codes (see Appendix G) and EndDeviceEventType codes (see Appendix H).
**Pre-Condition(s):** DER Group DG4, as previously created in Test Case DERG-1d, is assumed to exist.
**Post-Condition(s):** One of the DER Devices in DER Group DG4 is connected to the grid. The other DER Device in DER Group DG4 fails to connect to the grid.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateEndDeviceControls xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T13:05:16-06:00</msg:Timestamp>
<msg:MessageID>a9b30165-5af4-44e7-a949-5d7a1be3c6ca</msg:MessageID>
<msg:CorrelationID>381a99a9-86c3-4b09-9603-2ef0eb5ad584</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceControls>
<EndDeviceControl>
<mRID>2617cc93-b5da-4803-8974-5bd3dadd70db</mRID>
<EndDeviceControlType ref="2.31.0.18"/>
<EndDeviceGroups>
<Names>
<name>DG4</name>
</Names>
</EndDeviceGroups>
</EndDeviceControl>
</EndDeviceControls>
</tns:Payload>
</tns:CreateEndDeviceControls>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:EndDeviceControlsResponseMessage xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T13:05:19-06:00</msg:Timestamp>
<msg:MessageID>29cd8d52-abd9-4cc5-8ceb-06b26c7b0f40</msg:MessageID>
<msg:CorrelationID>381a99a9-86c3-4b09-9603-2ef0eb5ad584</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>OK</msg:Result>
<msg:Error>
<msg:code>0.0</msg:code>
</msg:Error>
</tns:Reply>
</tns:EndDeviceControlsResponseMessage>
```
#### Step 3 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T13:05:33-06:00</msg:Timestamp>
<msg:MessageID>fe0470e3-0219-439e-a940-d28ece37f476</msg:MessageID>
<msg:CorrelationID>381a99a9-86c3-4b09-9603-2ef0eb5ad584</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>23bac639-0b13-4830-8f0b-4fa39e05d58c</mRID>
<createdDateTime>2017-06-20T13:05:29-06:00</createdDateTime>
<Assets>
<mRID>6de3d770-6087-45bc-a5c8-6fca25f5a318</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.42"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 4 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T13:05:45-06:00</msg:Timestamp>
<msg:MessageID>8c01b434-a0e1-424e-88d0-83aa99b3e4e5</msg:MessageID>
<msg:CorrelationID>381a99a9-86c3-4b09-9603-2ef0eb5ad584</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>b2281827-8aee-4cac-91a5-069e679450b6</mRID>
<createdDateTime>2017-06-20T13:05:39-06:00</createdDateTime>
<Assets>
<mRID>c378df3a-294c-4743-ad78-65f970231b5b</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.67"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
**Test Results**
| Step | Function | Endpoint | Verb | Noun | Pass/Fail |
|---|---|---|---|---|---|
| 1 | DER Group Connection Request | http://xx.xxx.xxx.xxx/ | create | EndDeviceControls | |
| 2 | Success Response | http://xx.xxx.xxx.xxx/ | reply | EndDeviceControls | |
| 3 | DER Device Connected Event | http://xx.xxx.xxx.xxx/ | created | EndDeviceEvents | |
| 4 | DER Device Connection Failed | http://xx.xxx.xxx.xxx/ | created | EndDeviceEvents | |
### DERGCD-1d: Client requests disconnection of two DER Groups and Server replies (Full Success - Two DER Groups in a single message)
In this test case, the Client uses an EndDeviceControls message to request the Server to disconnect the DER Groups with Names.name identifiers of DG2 and DG6 from the grid. DER Group DG2 was created in Test Case DERG-1c and modified in Test Case DERG-2b. There are three DER Devices in DER Group DG2. DER Group DG6 was created in Test Case DERG-1e. There is one DER Device in DER Group DG6.
The Server returns a response message indicating success with no errors. This means that the server has accepted and validated the disconnection request and will attempt to disconnect the DER Devices in the two DER Groups. The response message does not indicate whether the disconnection of each DER Device was successful.
After the Server has responded with the response message, it attempts to disconnect each of the DER Devices in the two DER Groups. For each DER Device, the server then issues an EndDeviceEvents consequential event message. These consequential event messages indicate whether each DER Device was or was not successfully disconnected. In this test case, all four of the DER Devices (three from DER Group DG2 and one from DER Group DG6) are successfully disconnected from the grid.
Note 1: See Appendix G for the four-digit EndDeviceControlType codes used to request connection or disconnection of DER Groups (technically the DER Devices in a DER Group) to/from the grid.
Note 2: See Appendix H for the four-digit EndDeviceEventType codes used to indicate successful or failed connection or disconnection of DER Devices from the grid.
Note 3: Even though the consequential event messages are asynchronous, the Header of each EndDeviceEvents consequential event message carries the CorrelationID of the preceding EndDeviceControls message. This provides the mechansim to link the asynchronous consequential EndDeviceEvent with the EndDeviceControl responsible for its creation.
Note: This DER Group Connect test case can be altered from a connect to a disconnect by simply changing the EndDeviceControlType codes (see Appendix G) and EndDeviceEventType codes (see Appendix H).
**Pre-Condition(s):** DER Group DG2, as created in Test Case DERG-1c and modified in Test Case DERG- 2b, is assumed to exist. DER Group DG6, as created in Test Case DERG-1e, is assumed to exist.
**Post-Condition(s):** DER Group DG2 and its three associated DER Devices are disconnected from the grid. DER Group DG6 and its single associated DER Device are disconnected from the grid.
#### Step 1 - Request Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateEndDeviceControls xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:22-06:00</msg:Timestamp>
<msg:MessageID>8826b860-8165-4013-8b51-ce89b5a5dfaf</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceControls>
<EndDeviceControl>
<mRID>b9c5767a-5536-44db-84db-fa73eadc2050</mRID>
<EndDeviceControlType ref="2.31.0.23"/>
<EndDeviceGroups>
<Names>
<name>DG6</name>
</Names>
</EndDeviceGroups>
<EndDeviceGroups>
<Names>
<name>DG2</name>
</Names>
</EndDeviceGroups>
</EndDeviceControl>
</EndDeviceControls>
</tns:Payload>
</tns:CreateEndDeviceControls>
```
#### Step 2 - Response Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:EndDeviceControlsResponseMessage xmlns="http://iec.ch/TC57/2011/EndDeviceControls#" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceControlsMessage" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceControlsMessage EndDeviceControlsMessage.xsd">
<tns:Header>
<msg:Verb>reply</msg:Verb>
<msg:Noun>EndDeviceControls</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:35-06:00</msg:Timestamp>
<msg:MessageID>c968e839-2744-4143-8208-4302472ed92d</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Reply>
<msg:Result>OK</msg:Result>
<msg:Error>
<msg:code>0.0</msg:code>
</msg:Error>
</tns:Reply>
</tns:EndDeviceControlsResponseMessage>
```
#### Step 3 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:45-06:00</msg:Timestamp>
<msg:MessageID>16788885-da56-4c7d-ae95-49427afe1182</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>c9116fec-1f33-44ed-a24c-cfebb0b3f986</mRID>
<createdDateTime>2017-06-20T14:16:28-06:00</createdDateTime>
<Assets>
<mRID>46029b51-8d94-4a06-b242-74d4a3fc2390</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.68"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 4 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:47-06:00</msg:Timestamp>
<msg:MessageID>e1bf0fda-8140-4133-8dc5-260ba9e1c209</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>0f4cad64-e8e4-44cd-b4fe-62f77c9cac37</mRID>
<createdDateTime>2017-06-20T14:16:29-06:00</createdDateTime>
<Assets>
<mRID>13a801e1-b45d-4dbe-960f-84f04ef39fcb</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.68"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 5 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:48-06:00</msg:Timestamp>
<msg:MessageID>1da41a9b-db16-469a-96ed-75ea9c02e6b3</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>f7e5a1e7-5f4f-466a-ac4c-02dde49737f9</mRID>
<createdDateTime>2017-06-20T14:16:33-06:00</createdDateTime>
<Assets>
<mRID>7a02c3a5-606e-4d0e-adaf-0e1b98757512</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.68"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```
#### Step 6 - Event Message
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreatedEndDeviceEvents xmlns="http://iec.ch/TC57/2011/EndDeviceEvents#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://iec.ch/TC57/2017/EndDeviceEventsMessage" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/EndDeviceEventsMessage EndDeviceEventsMessage.xsd">
<tns:Header>
<msg:Verb>created</msg:Verb>
<msg:Noun>EndDeviceEvents</msg:Noun>
<msg:Timestamp>2017-06-20T14:16:51-06:00</msg:Timestamp>
<msg:MessageID>472b1af2-2b65-44a3-91ff-eaaacb72ab00</msg:MessageID>
<msg:CorrelationID>76f191ae-478c-4f73-b4c0-e654eeeb4be8</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<EndDeviceEvents>
<EndDeviceEvent>
<mRID>ae128c57-d010-42f0-a556-71401f7e557d</mRID>
<createdDateTime>2017-06-20T14:16:33-06:00</createdDateTime>
<Assets>
<mRID>e8a2f05b-aca9-46dc-971b-be22fcedc00b</mRID>
</Assets>
<EndDeviceEventType ref="2.31.0.68"/>
</EndDeviceEvent>
</EndDeviceEvents>
</tns:Payload>
</tns:CreatedEndDeviceEvents>
```