The Green Button CMD Workshop April 21,22 at SCE

Slides:



Advertisements
Similar presentations
What Is Microsoft Marketplace DataMarket What Is Microsoft Marketplace DataMarket? Michael Stiefel
Advertisements

Weekly OpenADE Meeting Notes Tuesday, February 4, 2014.
OASIS OData Technical Committee. AGENDA Introduction OASIS OData Technical Committee OData Overview Work of the Technical Committee Q&A.
Background REST (Representational State Transfer) What does it mean to be RESTful? Why REST? WCF How does WCF support REST? What are the pieces we need.
Green Button Initiative GREEN BUTTON DOWNLOAD MY DATA CERTIFICATION DRY RUN Marty Burns, for NIST August 6, 2013.
Weekly OpenADE Meeting Notes Tuesday, June 24, 2014.
OAuth 2.0 By “PJ” (JP on meetup.com) iOS and PHP developer, and occasional lawyer Contact me via:
1Proprietary and Confidential AirVantage API – Getting started David SCIAMMA – June 13th 2014.
DEVELOPER DAY BEFORE WE START, PLEASE VISIT AND SIGN UPWWW.PAYNOW.CO.ZW.
Slide 1 UCAIug OpenSG OpenADE Automated Data Exchange Requirements NAESB ESPI Energy Services Provider Interface Standard Specification Overview November.
Weekly OpenADE Meeting Notes Tuesday, January 14, 2014.
Presentation Topics  ESPI / DMD deeper dive o Atom feeds o ESPI Usage schema o Ontario Guidelines  CMD Technical Overview o Protocols and underlying.
NAESB REQ.21 Update Dr. Martin J. Burns, Hypertek Inc. for NIST February 21, 2014.
Weekly OpenADE Meeting Notes Tuesday, October 14, 2014.
Electronic Commerce. On-line ordering---an e-commerce application On-line ordering assumes that: A company publishes its catalog on the Internet; Customers.
Weekly OpenADE Meeting Notes Tuesday, February 24, 2015.
Weekly OpenADE Meeting Notes Tuesday, April 14, 2015.
Green Button Initiative GREEN BUTTON DOWNLOAD MY DATA CERTIFICATION DRY RUN Marty Burns, John Teeter for NIST, Kay Clinard UCAIug.
Weekly OpenADE Meeting Notes Tuesday, November 25, 2014.
Weekly OpenADE Meeting Notes Tuesday, February 25, 2014.
Configuring and Troubleshooting Identity and Access Solutions with Windows Server® 2008 Active Directory®
Weekly OpenADE Meeting Notes Tuesday, March 25, 2014.
3 rd Party Registration & Account Management SMT Update To AMWG Status February 24, 2014.
Weekly OpenADE Meeting Notes Tuesday, August 19, 2014.
Chapter 8 Cookies And Security JavaScript, Third Edition.
Weekly OpenADE Meeting Notes Tuesday, July 7, 2015.
Are you feeling secure ? Lee Donaldson Information Builders.
SMART METER TEXAS Smart Meter Texas Scope “Fall Release” May 4-5,
TWSd - Security Workshop Part I of III T302 Tuesday, 4/20/2010 TWS Distributed & Mainframe User Education April 18-21, 2010  Carefree Resort  Carefree,
Weekly OpenADE Meeting Notes Tuesday, November 11, 2014.
Weekly OpenADE Meeting Notes Tuesday, January 07, 2014.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
Weekly OpenADE Meeting Notes Tuesday, January 23, 2014.
Weekly OpenADE Meeting Notes Tuesday, November 4, 2014.
© 2009 Research In Motion Limited Advanced Java Application Development for the BlackBerry Smartphone Trainer name Date.
Weekly OpenADE Meeting Notes Tuesday, March 10, 2015.
Rule 24 DRP/Aggregator informational Workshop December 2 nd 2015.
Weekly OpenADE Meeting Notes Tuesday, July 29, 2014.
Security fundamentals Topic 5 Using a Public Key Infrastructure.
Weekly OpenADE Meeting Notes Tuesday, March 31, 2015.
Esri UC 2014 | Demo Theater | Using ArcGIS Online App Logins in Node.js James Tedrick.
Electronic Submission of Medical Documentation (esMD)
© 2012 IBM Corporation 3 rd Party Registration & Account Management 1 1 SMT Post R 4.3 Potential Enhancements.
Weekly OpenADE Meeting Notes Tuesday, October 21, 2014.
Weekly OpenADE Meeting Notes Tuesday, September 2, 2014.
Weekly OpenADE Meeting Notes Tuesday, October 28, 2014.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
Weekly OpenADE Meeting Notes Tuesday, May 20, 2014.
Weekly OpenADE Meeting Notes Tuesday, September 23, 2014.
Weekly OpenADE Meeting Notes Tuesday, November 18, 2014.
3 rd Party Registration & Account Management SMT Update To AMWG May 24, 2016.
Use Outlook Task API to access tasks stored on user’s mailbox. These REST API’s are  Simple to use.  Supports CRUD.  JSON structured.  OAuth 2.0.
1 Third Party Data Access December 16, Third Party Data Access Green Button Connect My Data (CMD) Con Edison and O&R support third party data accessibility.
Weekly OpenADE Meeting Notes Tuesday, June 3, 2014.
Direct Participation Enrollment Process for 2017 DRAM
Azure Identity Premier Fast Start
StudentTranscripts Service Overview
An introduction to REST for SharePoint 2013
Weekly OpenADE Meeting Notes
StudentTranscripts Service Overview
StudentTranscripts Service Overview
StudentTranscripts Service Overview
StudentTranscripts Service Overview
StudentTranscripts Service Overview
Office 365 Development.
StudentTranscripts Service Overview
Technical Integration Guide
User login, selects scope (Accounts and Sas and Date Range and confirm
Presentation transcript:

The Green Button CMD Workshop April 21,22 at SCE PGE Jerry Yip (IT): (jerry.yip@pge.com) Ed Denson (IT): (ed.denson@pge.com) Deepak Subramanian (IT): (deepak.subramanian@pge.com) Kruti Patel (BA) (Kruti.patel@pge.com) Jaclyn Hood (Product Mgr) (Jaclyn.hood@pge.com) SDG&E Blockowicz, Brendan BBlockowicz@Semprautilities.com Logan, Tom TLogan@semprautilities.com Bristow, Johnie JBristow@semprautilities.com Rodoni, Madeleine MRodoni@semprautilities.com Kundu, Partha PKundu@semprautilities.com Brown, Gregory GMBrown@semprautilities.com Wiffen, Stuart SWiffen@semprautilities.com SCE Andrew Eisses/SCE/EIX, Andrew.Eisses@sce.com Vidyod Mavilavalappil/SCE/EIX, Vidyod.Mavilavalappil@sce.com Natalie Martinez natalie.martinez@sce.com, Genevieve Feng/SCE/EIX, Genevieve.Feng@sce.com Dale LeFevre, dale.lefevre@austin.rr.com Gopal Bhageria, gopal.k.bhageria@in.ibm.com Zoe Hillenmeyer, Zoe.Hillenmeyer@sce.com Cannis Meng, Cannis.Meng@sce.com NIST Marty Burns, marty@hypertek.us John Teeter, john.teeter@nist.gov Don Coffin, donald.coffin@reminetworks.com Kin Lane, kinlane@gmail.com www.greenbuttondata.org

Agenda 1 [~2.5 hr] Architecture Guidelines 2 [~1.5 hr] Function Blocks  1.1 Each IOU Present Overview of their plans and  1.2 Key Definitions – SA, CISR, …  implementations 2 [~1.5 hr] Function Blocks  2.1 [.5 hr] Minimum FBs  2.2 [1 hr] Content of each FB 3 [~8 hr] Relationship Establishment and Management  3.1 [~2-3 hr] Scope  3.2 [~1 hr] Third Party Registration  3.3 [~3-4 hr] Authorization 4 [~5 hr] Data Transfer  4.1 [~2 hr] REST GETs  4.2 [~1 hr] SFTP  4.3 [~2 hr] Other

Definitions Customer Customer Account Service Account/Agreement If residential it is individual (customer of record) If commercial it is an entity Customer Account Organization of the bill A customer may multiple customer accounts Service Account/Agreement Corresponds Customer to a meter Customer Information Service Request (CISR) A legal agreement that authorizes a California utility to provide customer information to a thirdparty – paper or online Service Point/Location Logical location representing the meter at the premises level ESPI RetailCustomer Owner of one or more UsagePoints (has right to authorize) Subscription Authorized access to a (sub) set of UsagePoints of a single RetailCustomer Bulk Authorized access to a collection of UsagePoints governed by individual authorizations to a third party

GBCMD ids and resources depends on authorization level Customer Account Service Agreement or Service Account Service Point Meter Premises 1:n 1:1 subscriptionId retailCustomerId usagePointId bulkId – arbitrary collection of resources Account relationships Customer HAN Device

Green Button Data Exchange Data Custodian Third Party Third Party Registration Web Service Provider Web Service Consumer Automated Transfer Web Portal One-time Authorization Web Portal Retail Customer User (Browser)

Components of Connect My Data Components of GBCMD Data Custodian Third Party Web Service Provider Web Service Consumer Retail Customer Web Portal User (Browser) One-time Authorization Automated Transfer Third Party Registration ApplicationInformation REST API, Notification SFTP, TLS, Access-Token Authorization Scope Governed by Function Blocks

Function Blocks for CMD FunctionBlocks for Green Button Connect My Data Description Min [FB_3] Core Green Button Connect My Data Core Services  [FB_13] Security and Privacy classes HTTPS support [FB_14] Authorization and Authentication (OAuth) Oauth [FB_19] Partial update data IntervalBlocks without full data sets (Ups,MR, …) [FB_31] Core Rest Services Third Party Access to Subscription/Authorization [FB_32] Resource Level REST Third Party Access to UsagePoints, MeterReading, … and collections [FB_33] Management REST Interfaces GET PUT POST DELETE individual resources … [FB_34] SFTP for Bulk SFTP delivery of Bulk for Bulk request [FB_35] REST for Bulk Support the REST request for Bulk [FB_36] Third Party (Client) Dynamic Registration Use Case 1 [FB_37] Query Parameters [FB_38] On Demand Requests Without Notification [FB_39] PUSH model Notification followed by GET [FB_40] Offline Authorization Allows manual Authorization without OAuth but produces Authorization resource XML [FB_42] Third Party Core REST Services [FB_43] Third Party Management REST Services [FB_44] Manage ApplicationInformation Resource Allows PUT and DEL of ApplicationInformation [FB_41] Manage Authorization Resource Allows PUT and DEL of Authorization

Access Tokens and Their Data Obtained: During retail customer authorization process resourceUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Batch/Subscription/{SubscriptionID} authorizationUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1//resource/Authorization/{authorizationUri} client_access_token Obtained: After ThirdParty registration resourceUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Bulk/{bulkId} authorizationUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/Authorization/{authorizationId} registration_access_token Obtained: During ThirdParty registration (either dynamic or manually) Always results in an ApplicationInformation and Authorization data structure. resourceUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1/resource/ApplicationInformation/{applicationInformationId} authorizationUri  https://services.greenbuttondata.org/DataCustodian/espi/1_1//resource/Authorization/{authorizationId}

ApplicationINformation Review of ApplicationInformation XML content and schema ApplicationINformation

Review of Authorization XML content and schema

Scope Term Expansion Scope [ FBTerms ], [ ValueTerms ], [ ResourceTerms ]; FBTerms “FB=“, { [FBTerm], ”_”} , FBTerm, ScopeDelimiter ; FBTerm “4” | “5” | “6” | “7” | “8” | “9” | “10” | “11” | “12” | “15” | “16” | “17” | “18” | “19” | “27” | “28” | “29” | “31” | “32” | “33” | “34” | “35” | “36” | “37” | “38” | “39” | “40” | “41” | “43” ValueTerms { ( "IntervalDuration=", namedOrNumber,{“_”, namedOrNumber}), | ( "BlockDuration=", namedOrNumber,{“_”, namedOrNumber}), | ( "HistoryLength=", nonNegativeNumber), | ( "SubscriptionFrequency=", nonNegativeNumber | namedFrequency), ScopeDelimiter }; ResourceTerms { (“AccountCollection=”, nonNegativeNumber) | “BR=”, brID), ScopeDelimiter} ScopeDelimiter “;” namedFrequency “billingPeriod” | “daily” | “monthly” | “seasonal” | “weekly” | namedOrNumber nonNegativeNumber | namedFrequency; brID Character, {Character}*; nonNegativeNumber digit, { digit }; Digit 0 | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; Character Digit | “-” | "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" ;

Scope Term Descriptions Where: ResourceTerms If a Bulk resource is specified via the “BR” term, the value of the {bulkID} is provided after the equals sign (“=”). There could be one or more terms in this list that express the granularity of notifications about resource changes. If the Subscription has more than one UsagePoint, the AccountCollection term can indicate the number of UsagePoints included FBTerms The function blocks supported ValueTerms These are parameterized terms IntervalDuration This is the minimum default length of an interval in seconds (e.g. 900 for 15 minutes, 3600 for one hour, …) BlockDuration This is the length of a block that contains the intervals (based on enumeration of MacroPeriodKind in ESPI above as namedFrequency) HistoryLength This is the length of history buffer seconds BulkAccountCollection Used where the DC wants to provide for the reporting of multiple UsagePoints in a single Subscription. The number of UsagePoints is represented by the value in the assignment statement – e.g. 4 UsagePoints would be BulkAccountCollection=4.

Examples for Connect My Data Example Scope Strings SCE Scope = “FB=1_3_4_5_8_13_18_19_31_34_35_39; IntervalDuration=900_3600;BlockDuration=Daily; HistoryLength= 34128000;SubscriptionFrequency=Daily;  AccountCollection=5;BR=1;” PG&E Scope = “FB=1_3_4_5_7_8_13_14_15_18_19_31_32_34_35_37_38_39_40; IntervalDuration=300_900_3600;BlockDuration=Daily_BillingPeriod_Weekly_Monthly; HistoryLength=63072000;SubscriptionFrequency=Daily;  AccountCollection=5;BR=1;” SDG&E Scope = “FB=1_3_4_5_8_13_14_18_19_31_34_35_39_40; IntervalDuration=300_900_3600;BlockDuration=Daily_BillingPeriod_Weekly_Monthly; HistoryLength=94608000;SubscriptionFrequency=Daily;  AccountCollection=5;BR=1;”

Scope Negotiation DC TP HTTP Redirect with Scope={scope1} {scope2} … RC Logon Authorization request Scope={scope2} Authorization response Scope={scope2} access-token resourceUri authorizationUri referenceId … Oversimplified sequence diagram of Use Case #2 showing essence of scope negotiation

PUSH Model – Notify/Get When data is ready, data custodian will notify third party with Multiple URLS (1…Many) Third party will make call (GET) based on the URL(s) provided Data custodian will respond with the data as part of response to GET call

Deferred Response when DC does not have data ready TP DC Request: HTTP GET https://localhost/DataCustodian/espi/1_1/Subscription/1 Content-type: application/xml HTTP returns 202 Request: HTTP POST https://localhost/ThirdParty/espi/1_1/Notification Content-type: application/xml Response: Request: HTTP GET https://localhost/DataCustodian/espi/1_1/Subscription/1 Content-type: application/xml HTTP returns 200 and Data ThirdParty makes asynchronous request DataCustodian does not have the data ready – returns HTTP 202 Some time later (when ready no guarantees or time limit) DataCustodian sends Notification with original URL in BatchList DataCustodian provides the result

SFTP Data Transfer When data is ready, data custodian will notify third party with Multiple URLS (1) Third party will make call (sFTP) based on the URL(s) provided Data custodian will respond with the data as part of response to sFTP get call

Notification TP DC Response: Request: HTTP POST https://localhost/ThirdParty/espi/1_1/Notification Content-type: application/xml Response: <?xml version="1.0" encoding="UTF-8"?> <BatchList xmlns="http://naesb.org/espi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://naesb.org/espi espiDerived.xsd"> <resources>https://localhost:8080/DataCustodian/espi/1_1/resource/Batch/Subscription/1 </resources> <resources>https://localhost:8080/DataCustodian/espi/1_1/resource/Authorization/1 </resources> <resources>https://localhost:8080/DataCustodian/espi/1_1/resource/Batch/Bulk/1 </resources> </BatchList>

ReadServiceStatus TP DC Response: Request: HTTP GET https://services.greenbuttondata.org:443/DataCustodian/espi/1_1/resource/ReadServiceStatus Content-type: application/xml Response: <?xml version="1.0" encoding="UTF-8"?> <ServiceStatus xmlns="http://naesb.org/espi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://naesb.org/espi espiDerived.xsd"> <currentStatus>1</currentStatus> </ServiceStatus>

Retrieve UsagePoints for a Subscription DC TP HTTP GET https://localhost/DataCustodian/espi/1_1/ resource/Subscription/{subscriptionID}/UsagePoint Content-type: application/atom+xml

SFTP for Bulk Transfer Pertinent to the SFTP discussion are the concepts that each Third Party has a defined relationship with the Data Custodian. For automated exchange of information about his relationship there is a special Authorization obtained in Use Case #1 (see the Authorization.docx -- http://osgug.ucaiug.org/sgsystems/OpenADE/Shared%20Documents/Testing%20and%20Certification/GreenButtonTestPlan/referenceMaterial/GreenButtonAuthorization.docx). We anticipate that when the Data Custodian has data available, it sends an asynchronous Notification to the Third Party. This Notification provides URIs of note that it is assumed the Third Party will want to retrieve. For the purposes of Bulk transfer, this URI will be: sftp://hostname:port/DataCustodian/espi/1_1/resource/Batch/Bulk/{bulkId} where {bulkId} is a unique identifier assigned by the Data Custodian and the balance of the URI is presented in the ApplicationInformation resource that both parties share (contains all relevant URIs and data for interchange via OAuth etc…). The Third Party would then retrieve the bulk data by using an SFTP client with that URI. This is a straw man concept for discussion on the call. Its advantage is that it in harmony with overall architecture of the Green Button Connect My Data RESTful architecture and simply adds SFTP as a means of transfer when a large data set is to be returned. Used to Retrieve the data using SFTP protocols How to initiate the SSH connection? What is the role if any of the client_credentials authorization to control access to SFTP enabled resources? Discussion – After authorization of TP, they use Pene test, so what is benefit of access-token? sftp user:pw, user=<tpname>, password=<tp client-credentials access-token> Summary

Separation of PII containing Resource RetailCustomer from Subscription* UsagePoint EndDeviceAsset ServiceLocation PostionPoint TariffProfile Customer Agreement Authorization ServiceSupplier Normal ESPI Resources Subscription Anononymous EUI PII Containing information Key Account Resource Existing Resource ERP Resource *This data structure is to be developed on an aggressive schedule based on HelpDesk issue #83 and PAP10 NAESB Std REQ.18. No single API request can retrieve both PII and Anonymous data

Chunking – When the DataCustodian needs to provide data in “chunks” Have huge data set that DC wants to provide in “chunks” over HTTPS Use common URI – Subscription or Bulk / id Chunked by index and date? Use ESPI query parameters (FB_37) to distinguish chunks <?xml version="1.0" encoding="UTF-8"?> <BatchList xmlns="http://naesb.org/espi" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://naesb.org/espi espiDerived.xsd"> <resources>../espi/1_1/resource/Batch/Bulk/1?start-index=1&max-results=1000&published-max=2012-04-02T04:00:00Z &published-min=2012-04-02T04:00:00Z</resources> <resources>../espi/1_1/resource/Batch/Bulk/1?start-index=1&max-results=1000&published-max=2012-04-02T04:00:00Z  &published-min=2012-04-02T04:00:00Z</resources> </BatchList>

Parking Lot  Clarify accesses client_access_token= Authorizations/{}, Batch/Bulk/{bulkid}, ServiceStatus registration_access_token= ApplicationInformation access_token = used for individual authorizations/subscriptions  Chunking for RESTfull GET of Bulk data  Replacement of RetailCustomer/{retailCustomerId} with Subscription/{subscriptionId}  Deferred access due to request that cant be satisfied now but results in notification later. 202 http response to GET

Action Items AI: Mark “OAuth” parameters as from OAuth in Authorization AI: Add ex: to each annotation of Authorization and ApplicationInformation in the schema AI: remove “The field MUST be a valid URI.” AI: URI caps in Authorization.docx, schema, ApplicationInformation, Authorization AI: thirdPartyScopeSelectionScreenURI  thirdPartyLandingScreenURI in schema, Authorization.docx, OpenESPI code AI: Dale will check on how to use access-token with SFTP AI: Replace RetailCustomer/{retailCustomerId} with Subscription/{subscriptionId} in all APIs and related documents