Introduction to Oracle PBC REST API With Groovy
Scripting
Dayalan Punniyamoorthy
31st May 2018
22
WHO WE ARE
Providing exceptional quality and value, while imparting a customer-focused approach.
Vertical Edge Consulting Group is your trusted partner for business consulting and technology solutions, ensuring reliability and scalability for your growing company.
2010
Year Founded
35
Employees
3
National Practices
2
Locations
1
Inspired Vision for Success
Our Company
Exceptional values, passion for
success, and dedicated commitment
drive our success.
 Oracle Platinum Partner
 Consultants average 12-15 years of
industry and Big 4 consulting experience
 Technology focus on EPM, BI and Cloud
solutions, integrating with leading Tier 1
and 2 ERP systems
 IT Strategy & Advisory Practice with CIO
and Fortune 500 leadership experience
 In-depth understanding of Cloud
Technology & Solutions, driving today’s
strategic technology decisions
 Strong dedication to customer success
and uncompromising values
33
OUR SERVICES
Technology
Enterprise Performance
Management (EPM)
- Oracle Hyperion Financial Management
- Oracle Hyperion Planning
- Oracle Hyperion Planning & Budgeting
Cloud Service (PBCS)
- Oracle Hyperion Essbase
- Oracle Hyperion FDM/FDMEE
- Oracle Hyperion DRM
- Oracle Hyperion Reporting & Analysis
- Oracle Hyperion SmartView
Business Intelligence (BI)
- Oracle Business Intelligence Enterprise
Edition (OBIEE)
- Oracle Business Intelligence Foundation
Suite (BIFS)
- Oracle Business Intelligence Cloud Service
(BICS)
- Oracle Business Intelligence for
Applications (OBIA)
Advisory Services
- CIO Advisory
- IT Strategy
- Cloud Advisory
- Project Management Oversight (PMO)
- Enterprise Resource Planning Advisory
(ERP)
- Enterprise Architecture
Trusted Advisory
Technology Expertise
44
ORACLE EPM EXPERIENCE
 Oracle® Certified Platinum Partner
 One of the nation’s leading Oracle EPM strategy & implementation firms
 Successfully implemented Oracle EPM solutions for dozens of clients in the US, and abroad
 Oracle EPM professional average 15 years of hands-on experience
 Focused on Fortune 500 companies & large scale, enterprise-wide implementations
 Deep expertise from process design to technology implementation
 Proven functional and industry templates to leverage best practices
 Hyperion Essbase, Planning and HFM certified professionals
Enterprise Planning
& Forecasting
•Planning, Budget & Forecasting
•Workforce & Capital Expenditure
Planning
•Planning System Design &
Implementation
•Balanced Scorecard
•Hyperion Planning™, Workforce
Planning™, Capital Expense
Planning™
Financial
Consolidation
•Financial Close Process Design
•Consolidation System Design &
Implementation
•Financial Reporting & Analysis
•Financial Management™, Financial
Data Quality Management™
Reporting &
Analytics
•Management Dashboards
•Profitability Analysis
•Human Resource Analysis
•Sales & Procurement Analytics
•Essbase™ Solutions, SmartView™,
and reporting tools
Business
Intelligence
•Data Management & Integration
•Content Management
•BI Enterprise Edition™, Data
Relationship Management™ and
integration tools
Agenda for Today!
• Overview of REST API and Groovy Program
 REST API for Oracle PBC/EPC
 A Simple REST API request & response
 Authentication into Oracle PBC/EPC
 REST API Methods
 REST API Resource View
• Lifecycle Management
• Planning
• Interop
• Data Management
• Introduction to Groovy
• Managing & administering Hyperion Application using Groovy program to invoke the REST API related to
Oracle PBC/EPC
• Managing & administering Migration using Groovy program to invoke the REST API related to Oracle
PBC/EPC Migration
• Managing & administering Data Management jobs using Groovy program to invoke the REST API related to
Oracle PBC/EPC Data Management
• Demo
Overview of REST API
 REpresentational State Transfer (REST)
 An architecture for client-server web communication
 Application Programming lnterface (API)
 Lets products and services communicate with each other
 REST describes any simple interface that transmits data over a standardized interface (such as HTTP).
 REST provides a set of design rules for creating stateless services that are viewed as resources can be
identified by their unique Uniform Resource Identifier (URIs).
REST API for Oracle PBC/EPBC
 You can integrate EPM Cloud environments using:
oA set of REST APIs
oThe EPM Automate Utility, a command line tool that is implemented on top of the
REST APIs
 Audience
The REST API for Oracle PBC/EPC is intended primarily as a tool for
infrastructure consultants and administrators
 Prerequisites
o Access as a service administrator to the cloud service
o Technical and functional knowledge to understand and execute the EPM
Automate & REST APIs, and to administer the product.
o Knowledge of Java, cURL, Groovy, and REST programming.
A Simple REST API request & response
https://vecghypdemo-
test.PBCS.us2.oraclecloud.com/HyperionPlanning/rest/v3/ap
plications
Request
JSON
Response
Authentication into Oracle PBC/EPBC
 These REST APIs support basic authentication (name and password) in the
format identitydomain.username for this release.
 Every HTTP request to EPM Cloud should supply HTTP Basic Authentication
credentials through the Authorization header.
REST API Methods
 You can create, view, update, or delete Oracle Enterprise Performance Management
Cloud resources using standard HTTP method requests
• GET Retrieve information about the REST API resource (e.g.: Retrieve Job Status Details)
• POST Create a REST API resource (e.g.: Execute a Job)
• PUT Update a REST API resource (e.g.: Setting Daily maintenance Window Time)
• DELETE Delete a REST API resource or related component (e.g.: Delete Files)
REST API Resource View – Oracle PBC (Some of them not all  )
REST Resource -/interop/rest/
REST API version {api_version} for Lifecycle
Management is 11.1.2.3.600.
Request More Information
/interop/rest/ GET Get REST API Versions for Migration
/interop/rest/{api_version} GET Get Information about a Specific Version
of Migration
/interop/rest/{api_version}/applicationsnapshots/
{SnapshotName}/contents
GET Download
/interop/rest/{api_version}/Applicationsnapshots GET List Files
/interop/rest/{api_version}/applicationsnapshots/
{nSnapshotName}
DELETE Delete Files
/interop/rest/{api_version}/services GET Get Information About All Services
REST API Resource View – Oracle PBC (Some of them not all  )
REST Resource -/HyperionPlanning/rest/
Current REST API {api_version} version for Planning is
v3.
Request More Information
/HyperionPlanning/rest/ GET Getting REST API Versions for Planning
/HyperionPlanning/rest/{api_version} GET Get Information about a Specific REST
API Version for Planning
/HyperionPlanning/rest/{api_version}/applications/{app}/jobd
efinitions
GET Get Job Definitions
/HyperionPlanning/rest/{api_version}/applications/{app}/dime
nsions/{dimname}/members
POST Add Member
/HyperionPlanning/rest/{api_version}/applications/{applicatio
n}/subvar
GET Get All Substitution Variables Defined for
the
Application
/HyperionPlanning/rest/{api_version}/applications/{applicatio
n}/plantypes/{plantype}/subvar
GET Get Substitution Variables Defined at the
Plan
Type Level
REST Resource -//interop/rest/
REST API version {api_version} is v1 (interop)
REST API version {api_version} is V1 (aif)
Request More Information
/interop/rest/{api_version}/reports?
q={type:userauditreport,fileName:useraudit.csv,since=2015-
12-10,until=2016-06-10}/interop/rest/{api_version}
POST User Audit Report
/interop/rest/{api_version}/reports?q={type:provisionreport,fil
eName:ProvRep.csv} POST
User Provisioning Report
/interop/rest/{api_version}/dailymaintenance?StartTime={N}
PUT
Setting the Daily Maintenance Window
Time
/aif/rest/{api_version}
/aif/rest/{api_version}/jobs
GET
GET
Get Information about a Specific API
Version for Data Management APIs
Running Data Rules
REST API Resource View – Oracle PBC (Some of them not all  )
What is Groovy?
 Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static
compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a
concise, familiar and easy to learn syntax.
 It integrates smoothly with any Java program, and immediately delivers to your application powerful features,
including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-
programming and functional programming.
Install groovy from http://groovy-lang.org/download.html
Default install location "C:Program Files (x86)GroovyGroovy-2.4.7bin“
A Simple Groovy Program to access Oracle PBC/EPC
REST API//Importing JSON package for JSONObject & JsonSlurper
import org.json.JSONObject
import groovy.json.JsonSlurper
//Modify as needed before executing
apiVersion="v3"
appName="EPBCS"
//Reading the Values from the Properties File
Properties props = new Properties()
File propsFile = new File('C:/Users/DPunniamoorthy/Documents/RESTAPI-
Webinar/Groovy/PBCSDetails.properties')
props.load(propsFile.newDataInputStream())
serverUrl=props.getProperty('serverUrl')
domain=props.getProperty('domain')
username=props.getProperty('username')
password=props.getProperty('password')
// Setup User Credentials and Authorization Header
userCredentials = domain + "." + username + ":" + password
basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes())
// Setup User Credentials and Authorization Header
userCredentials = domain + "." + username + ":" + password
basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes())
println ('*****Starting of REST API Program******');
// Fetch Response Function
def fetchResponse(is) {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line+"n");
}
br.close();
return sb.toString();
}
// Execute Request Function for Authentication & Authorization
def executeRequest(url, requestType, payload, contentType) {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true); connection.setUseCaches(false);
connection.setDoInput(true); connection.setRequestMethod(requestType);
connection.setRequestProperty("Content-Type", contentType);
connection.setRequestProperty("Authorization", basicAuth);
if (payload != null) { OutputStreamWriter writer = new
OutputStreamWriter(connection.getOutputStream()); writer.write(payload);
writer.flush();
} int statusCode try { statusCode = connection.responseCode;
} catch (all) { println "Error connecting to the URL"
System.exit(0); } def response if (statusCode == 200 || statusCode == 201) {
if (connection.getContentType() != null &&
!connection.getContentType().startsWith("application/json")) {
println "Error occurred in server" InputStream is = connection.getInputStream();
if (is != null) response = fetchResponse(is) } else { println "Error
occurred while executing request" println "Response error code : " + statusCode
InputStream is = connection.getErrorStream(); if (is != null &&
connection.getContentType() != null && connection.getContentType().startsWith("application/json"))
println fetchJobStatusFromResponse(fetchResponse(is))
} connection.disconnect(); return response;}
//Function to get the Application Details
def getApplications() {
def url;try {url = new URL(serverUrl + "/HyperionPlanning/rest/" + apiVersion + "/applications/")
} catch (MalformedURLException e) {
println "Malformed URL. Please pass valid URL“ System.exit(0);
}response = executeRequest(url, "GET", null, "application/x-www-form-urlencoded");
def object = new JsonSlurper().parseText(response)
def status = object.status
def items = object.items
println "Application Details:"
println "******************"
items.each{
println "Application Name : " +items. name
println "Application Supports decision packages : " + items.dpEnabled
println "Is it Unicode : " + items.unicode
println "Applciation Storage : " + items.appStorage
println "Product Type : " + items.type
if (object.details != null)
println "Error details: " + object.details
} }
getApplications();
println('*********End of REST API Program******');
Demo - Groovy + REST API for Planning
Demo - Groovy + REST API for Migration
Demo - Groovy + REST API for Data Management
dayalanp@verticaledgecg.com
www.verticaledgecg.com
https://onlyhyperion.blogspot.in/
@pdayalan
https://www.linkedin.com/in/dayalanpunniyamoorthy/

Collaborate 18 presentation by Dayalan Punniyamoorthy

  • 1.
    Introduction to OraclePBC REST API With Groovy Scripting Dayalan Punniyamoorthy 31st May 2018
  • 2.
    22 WHO WE ARE Providingexceptional quality and value, while imparting a customer-focused approach. Vertical Edge Consulting Group is your trusted partner for business consulting and technology solutions, ensuring reliability and scalability for your growing company. 2010 Year Founded 35 Employees 3 National Practices 2 Locations 1 Inspired Vision for Success Our Company Exceptional values, passion for success, and dedicated commitment drive our success.  Oracle Platinum Partner  Consultants average 12-15 years of industry and Big 4 consulting experience  Technology focus on EPM, BI and Cloud solutions, integrating with leading Tier 1 and 2 ERP systems  IT Strategy & Advisory Practice with CIO and Fortune 500 leadership experience  In-depth understanding of Cloud Technology & Solutions, driving today’s strategic technology decisions  Strong dedication to customer success and uncompromising values
  • 3.
    33 OUR SERVICES Technology Enterprise Performance Management(EPM) - Oracle Hyperion Financial Management - Oracle Hyperion Planning - Oracle Hyperion Planning & Budgeting Cloud Service (PBCS) - Oracle Hyperion Essbase - Oracle Hyperion FDM/FDMEE - Oracle Hyperion DRM - Oracle Hyperion Reporting & Analysis - Oracle Hyperion SmartView Business Intelligence (BI) - Oracle Business Intelligence Enterprise Edition (OBIEE) - Oracle Business Intelligence Foundation Suite (BIFS) - Oracle Business Intelligence Cloud Service (BICS) - Oracle Business Intelligence for Applications (OBIA) Advisory Services - CIO Advisory - IT Strategy - Cloud Advisory - Project Management Oversight (PMO) - Enterprise Resource Planning Advisory (ERP) - Enterprise Architecture Trusted Advisory Technology Expertise
  • 4.
    44 ORACLE EPM EXPERIENCE Oracle® Certified Platinum Partner  One of the nation’s leading Oracle EPM strategy & implementation firms  Successfully implemented Oracle EPM solutions for dozens of clients in the US, and abroad  Oracle EPM professional average 15 years of hands-on experience  Focused on Fortune 500 companies & large scale, enterprise-wide implementations  Deep expertise from process design to technology implementation  Proven functional and industry templates to leverage best practices  Hyperion Essbase, Planning and HFM certified professionals Enterprise Planning & Forecasting •Planning, Budget & Forecasting •Workforce & Capital Expenditure Planning •Planning System Design & Implementation •Balanced Scorecard •Hyperion Planning™, Workforce Planning™, Capital Expense Planning™ Financial Consolidation •Financial Close Process Design •Consolidation System Design & Implementation •Financial Reporting & Analysis •Financial Management™, Financial Data Quality Management™ Reporting & Analytics •Management Dashboards •Profitability Analysis •Human Resource Analysis •Sales & Procurement Analytics •Essbase™ Solutions, SmartView™, and reporting tools Business Intelligence •Data Management & Integration •Content Management •BI Enterprise Edition™, Data Relationship Management™ and integration tools
  • 5.
    Agenda for Today! •Overview of REST API and Groovy Program  REST API for Oracle PBC/EPC  A Simple REST API request & response  Authentication into Oracle PBC/EPC  REST API Methods  REST API Resource View • Lifecycle Management • Planning • Interop • Data Management • Introduction to Groovy • Managing & administering Hyperion Application using Groovy program to invoke the REST API related to Oracle PBC/EPC • Managing & administering Migration using Groovy program to invoke the REST API related to Oracle PBC/EPC Migration • Managing & administering Data Management jobs using Groovy program to invoke the REST API related to Oracle PBC/EPC Data Management • Demo
  • 6.
    Overview of RESTAPI  REpresentational State Transfer (REST)  An architecture for client-server web communication  Application Programming lnterface (API)  Lets products and services communicate with each other  REST describes any simple interface that transmits data over a standardized interface (such as HTTP).  REST provides a set of design rules for creating stateless services that are viewed as resources can be identified by their unique Uniform Resource Identifier (URIs).
  • 7.
    REST API forOracle PBC/EPBC  You can integrate EPM Cloud environments using: oA set of REST APIs oThe EPM Automate Utility, a command line tool that is implemented on top of the REST APIs  Audience The REST API for Oracle PBC/EPC is intended primarily as a tool for infrastructure consultants and administrators  Prerequisites o Access as a service administrator to the cloud service o Technical and functional knowledge to understand and execute the EPM Automate & REST APIs, and to administer the product. o Knowledge of Java, cURL, Groovy, and REST programming.
  • 8.
    A Simple RESTAPI request & response https://vecghypdemo- test.PBCS.us2.oraclecloud.com/HyperionPlanning/rest/v3/ap plications Request JSON Response
  • 9.
    Authentication into OraclePBC/EPBC  These REST APIs support basic authentication (name and password) in the format identitydomain.username for this release.  Every HTTP request to EPM Cloud should supply HTTP Basic Authentication credentials through the Authorization header.
  • 10.
    REST API Methods You can create, view, update, or delete Oracle Enterprise Performance Management Cloud resources using standard HTTP method requests • GET Retrieve information about the REST API resource (e.g.: Retrieve Job Status Details) • POST Create a REST API resource (e.g.: Execute a Job) • PUT Update a REST API resource (e.g.: Setting Daily maintenance Window Time) • DELETE Delete a REST API resource or related component (e.g.: Delete Files)
  • 11.
    REST API ResourceView – Oracle PBC (Some of them not all  ) REST Resource -/interop/rest/ REST API version {api_version} for Lifecycle Management is 11.1.2.3.600. Request More Information /interop/rest/ GET Get REST API Versions for Migration /interop/rest/{api_version} GET Get Information about a Specific Version of Migration /interop/rest/{api_version}/applicationsnapshots/ {SnapshotName}/contents GET Download /interop/rest/{api_version}/Applicationsnapshots GET List Files /interop/rest/{api_version}/applicationsnapshots/ {nSnapshotName} DELETE Delete Files /interop/rest/{api_version}/services GET Get Information About All Services
  • 12.
    REST API ResourceView – Oracle PBC (Some of them not all  ) REST Resource -/HyperionPlanning/rest/ Current REST API {api_version} version for Planning is v3. Request More Information /HyperionPlanning/rest/ GET Getting REST API Versions for Planning /HyperionPlanning/rest/{api_version} GET Get Information about a Specific REST API Version for Planning /HyperionPlanning/rest/{api_version}/applications/{app}/jobd efinitions GET Get Job Definitions /HyperionPlanning/rest/{api_version}/applications/{app}/dime nsions/{dimname}/members POST Add Member /HyperionPlanning/rest/{api_version}/applications/{applicatio n}/subvar GET Get All Substitution Variables Defined for the Application /HyperionPlanning/rest/{api_version}/applications/{applicatio n}/plantypes/{plantype}/subvar GET Get Substitution Variables Defined at the Plan Type Level
  • 13.
    REST Resource -//interop/rest/ RESTAPI version {api_version} is v1 (interop) REST API version {api_version} is V1 (aif) Request More Information /interop/rest/{api_version}/reports? q={type:userauditreport,fileName:useraudit.csv,since=2015- 12-10,until=2016-06-10}/interop/rest/{api_version} POST User Audit Report /interop/rest/{api_version}/reports?q={type:provisionreport,fil eName:ProvRep.csv} POST User Provisioning Report /interop/rest/{api_version}/dailymaintenance?StartTime={N} PUT Setting the Daily Maintenance Window Time /aif/rest/{api_version} /aif/rest/{api_version}/jobs GET GET Get Information about a Specific API Version for Data Management APIs Running Data Rules REST API Resource View – Oracle PBC (Some of them not all  )
  • 14.
    What is Groovy? Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax.  It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta- programming and functional programming. Install groovy from http://groovy-lang.org/download.html Default install location "C:Program Files (x86)GroovyGroovy-2.4.7bin“
  • 15.
    A Simple GroovyProgram to access Oracle PBC/EPC REST API//Importing JSON package for JSONObject & JsonSlurper import org.json.JSONObject import groovy.json.JsonSlurper //Modify as needed before executing apiVersion="v3" appName="EPBCS" //Reading the Values from the Properties File Properties props = new Properties() File propsFile = new File('C:/Users/DPunniamoorthy/Documents/RESTAPI- Webinar/Groovy/PBCSDetails.properties') props.load(propsFile.newDataInputStream()) serverUrl=props.getProperty('serverUrl') domain=props.getProperty('domain') username=props.getProperty('username') password=props.getProperty('password') // Setup User Credentials and Authorization Header userCredentials = domain + "." + username + ":" + password basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes())
  • 16.
    // Setup UserCredentials and Authorization Header userCredentials = domain + "." + username + ":" + password basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userCredentials.getBytes()) println ('*****Starting of REST API Program******'); // Fetch Response Function def fetchResponse(is) { BufferedReader br = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line+"n"); } br.close(); return sb.toString(); }
  • 17.
    // Execute RequestFunction for Authentication & Authorization def executeRequest(url, requestType, payload, contentType) { HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setUseCaches(false); connection.setDoInput(true); connection.setRequestMethod(requestType); connection.setRequestProperty("Content-Type", contentType); connection.setRequestProperty("Authorization", basicAuth); if (payload != null) { OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write(payload); writer.flush(); } int statusCode try { statusCode = connection.responseCode; } catch (all) { println "Error connecting to the URL" System.exit(0); } def response if (statusCode == 200 || statusCode == 201) { if (connection.getContentType() != null && !connection.getContentType().startsWith("application/json")) { println "Error occurred in server" InputStream is = connection.getInputStream(); if (is != null) response = fetchResponse(is) } else { println "Error occurred while executing request" println "Response error code : " + statusCode InputStream is = connection.getErrorStream(); if (is != null && connection.getContentType() != null && connection.getContentType().startsWith("application/json")) println fetchJobStatusFromResponse(fetchResponse(is)) } connection.disconnect(); return response;}
  • 18.
    //Function to getthe Application Details def getApplications() { def url;try {url = new URL(serverUrl + "/HyperionPlanning/rest/" + apiVersion + "/applications/") } catch (MalformedURLException e) { println "Malformed URL. Please pass valid URL“ System.exit(0); }response = executeRequest(url, "GET", null, "application/x-www-form-urlencoded"); def object = new JsonSlurper().parseText(response) def status = object.status def items = object.items println "Application Details:" println "******************" items.each{ println "Application Name : " +items. name println "Application Supports decision packages : " + items.dpEnabled println "Is it Unicode : " + items.unicode println "Applciation Storage : " + items.appStorage println "Product Type : " + items.type if (object.details != null) println "Error details: " + object.details } } getApplications(); println('*********End of REST API Program******');
  • 20.
    Demo - Groovy+ REST API for Planning
  • 21.
    Demo - Groovy+ REST API for Migration
  • 22.
    Demo - Groovy+ REST API for Data Management
  • 24.

Editor's Notes

  • #4 Our 3 National practices are EPM (all things hyperion) BI (OBIEE, BICS, OBIA) Advisory services
  • #5 Oracle Platinum Partner Experience and knowledge across all EPM platforms Consultants hold Oracle certifications on the products they support
  • #15 Flat learning curve Concise, readable and expressive syntax, easy to learn for Java developers Smooth Java integration Seamlessly and transparently integrates and interoperates with Java and any third-party libraries Vibrant and rich ecosystem Web development, reactive applications, concurrency / asynchronous / parallelism library, test frameworks, build tools, code analysis, GUI building Powerful features Closures, builders, runtime & compile-time meta-programming, functional programming, type inference, and static compilation Domain-Specific Languages Flexible & malleable syntax, advanced integration & customization mechanisms, to integrate readable business rules in your applications Scripting and testing glue Great for writing concise and maintainable tests, and for all your build and automation tasks