ODTUG Aggregator ODTUG Blogs http://localhost:8080 Tue, 20 Feb 2018 16:28:35 +0000 http://aggrssgator.com/ ODTUG Kscope Community Service Day Renamed to Honor Its Founder https://www.odtug.com/p/bl/et/blogaid=769&source=1 ODTUG Community Service Day Renamed ‘Kathleen McCasland Community Service Day’. User group honors its founder and reflects on past 10 years of community service across the nation. ODTUG https://www.odtug.com/p/bl/et/blogaid=769&source=1 Tue Feb 20 2018 14:07:41 GMT-0500 (EST) ODTUG Kscope Community Service Day Renamed to Honor Its Founder @odtug @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=769&source=1 ODTUG Community Service Day Renamed ‘Kathleen McCasland Community Service Day’. User group honors its founder and reflects on past 10 years of community service across the nation. ODTUG https://www.odtug.com/p/bl/et/blogaid=769&source=1 Tue Feb 20 2018 14:07:41 GMT-0500 (EST) Announcing Breakout with Blockchain – Emerging Technology at ODTUG Kscope18 https://kscope18.odtug.com/p/bl/et/blogaid=768&source=1 ODTUG is excited to announce new content coming to ODTUG Kscope18! This year, we will be introducing our members to Blockchain and the new Oracle Blockchain Cloud Service. If you're curious about leveraging distributed ledger technology in an enterprise environment, ODTUG Kscope has you covered! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=768&source=1 Fri Feb 16 2018 14:10:40 GMT-0500 (EST) Announcing Breakout with Blockchain – Emerging Technology at ODTUG Kscope18 @odtug @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs https://kscope18.odtug.com/p/bl/et/blogaid=768&source=1 ODTUG is excited to announce new content coming to ODTUG Kscope18! This year, we will be introducing our members to Blockchain and the new Oracle Blockchain Cloud Service. If you're curious about leveraging distributed ledger technology in an enterprise environment, ODTUG Kscope has you covered! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=768&source=1 Fri Feb 16 2018 14:10:40 GMT-0500 (EST) Announcing Breakout with Blockchain – Emerging Technology at ODTUG Kscope18 @odtug https://www.odtug.com/p/bl/et/blogaid=768&source=1 ODTUG is excited to announce new content coming to ODTUG Kscope18! This year, we will be introducing our members to Blockchain and the new Oracle Blockchain Cloud Service. If you're curious about leveraging distributed ledger technology in an enterprise environment, ODTUG Kscope has you covered! ODTUG https://www.odtug.com/p/bl/et/blogaid=768&source=1 Fri Feb 16 2018 14:10:40 GMT-0500 (EST) Announcing Breakout with Blockchain – Emerging Technology at ODTUG Kscope18 https://www.odtug.com/p/bl/et/blogaid=768&source=1 ODTUG is excited to announce new content coming to ODTUG Kscope18! This year, we will be introducing our members to Blockchain and the new Oracle Blockchain Cloud Service. If you're curious about leveraging distributed ledger technology in an enterprise environment, ODTUG Kscope has you covered! ODTUG https://www.odtug.com/p/bl/et/blogaid=768&source=1 Fri Feb 16 2018 14:10:40 GMT-0500 (EST) OAC - Essbase .. WRITEBACK via OAC - DV!! @gadashek http://adashek-epm.blogspot.com/2018/02/oac-essbase-writeback-via-oac-dv.html <div dir="ltr" style="text-align: left;" trbidi="on"><span style="font-family: Verdana, sans-serif;"><b>OAC - Essbase WRITEBACK IS ALIVE!</b></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Well, the day has finally arrived, Essbase Writeback in the cloud is real .. and a thing 😎🤓🤓😎</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Let's get into the how-to and what it looks like.</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">But first, a BIG shout out to <a href="http://garycris.blogspot.in/" target="_blank">Gary Crisci</a> for being able to battle the patch frontier and slay the OAC demons!</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span></span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">OAC - Essbase patched to version 109 .. skipped right over 108 to specifically Version 12.2.1.1.109 - Build 126</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/-hSoDgKdBA8Q/WoMYJyqu8LI/AAAAAAAAC8E/v4cZfAebmO4OcR-0zrg7EMRgrVi3ZSfHQCK4BGAYYCw/s1600/OAC_Essbase_12.2.1.1.109build126.png" imageanchor="1"><img border="0" height="251" src="https://3.bp.blogspot.com/-hSoDgKdBA8Q/WoMYJyqu8LI/AAAAAAAAC8E/v4cZfAebmO4OcR-0zrg7EMRgrVi3ZSfHQCK4BGAYYCw/s400/OAC_Essbase_12.2.1.1.109build126.png" width="400" /></a></span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span></span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><b>Steps to success</b></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span></span><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Create an Essbase cube in OAC&nbsp;(thought that this step and a few others might be obvious ..)</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Go to the Data Visualization Cloud - <a href="https://www.oracle.com/solutions/business-analytics/data-visualization/library.html" target="_blank">Oracle Analytics Library</a></span></li></ul><br /><span style="font-family: Verdana, sans-serif;">https://www.oracle.com/solutions/business-analytics/data-visualization/library.html</span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Find the Custom Plug-In: Essbase Write-Back plugin by Oracle</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/-ABj3kYyc2dM/WoUXjeW6_NI/AAAAAAAAC8Y/64FE3kpul70XLUv7EFNmHG8n8PiUhSnJQCK4BGAYYCw/s1600/OACessbaseWritebackCustPlugin.png" imageanchor="1"><img border="0" height="400" src="https://3.bp.blogspot.com/-ABj3kYyc2dM/WoUXjeW6_NI/AAAAAAAAC8Y/64FE3kpul70XLUv7EFNmHG8n8PiUhSnJQCK4BGAYYCw/s400/OACessbaseWritebackCustPlugin.png" width="269" /></a></span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click Download to Download the zip file</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Log into the OAC - DV/BI instance</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Go to Console</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-zvxHNncHTVA/WoUYNO7peOI/AAAAAAAAC8g/0ZNaNzNinwYIRUNyEZ_yK16LbQeTrKtHwCK4BGAYYCw/s1600/OACdvConsole.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-zvxHNncHTVA/WoUYNO7peOI/AAAAAAAAC8g/0ZNaNzNinwYIRUNyEZ_yK16LbQeTrKtHwCK4BGAYYCw/s400/OACdvConsole.png" /></a></span><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">On the panel, click Custom Plugins</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-Ui-neUgSvzY/WoUYZNoxNbI/AAAAAAAAC8o/KRRa8XgYBzIqJa1Loq2ijDwYyGVR43GNQCK4BGAYYCw/s1600/OACdvCustPlugins.png" imageanchor="1"><img border="0" height="82" src="https://1.bp.blogspot.com/-Ui-neUgSvzY/WoUYZNoxNbI/AAAAAAAAC8o/KRRa8XgYBzIqJa1Loq2ijDwYyGVR43GNQCK4BGAYYCw/s320/OACdvCustPlugins.png" width="320" /></a></span><br /><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Upload the saved Custom Plugin from the step above, drag and drop or click "Upload Custom Plugin" and select the zip file</span></li></ul><br /><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">On the panel, click Safe Domains</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-ukgyULjUtmU/WoUaMpDfiJI/AAAAAAAAC84/TqVg6YFdx9E1VRRx3eaXksU7w6qqgL7RgCK4BGAYYCw/s1600/OACdvPanelSafeDomain.png" imageanchor="1"><img border="0" height="72" src="https://1.bp.blogspot.com/-ukgyULjUtmU/WoUaMpDfiJI/AAAAAAAAC84/TqVg6YFdx9E1VRRx3eaXksU7w6qqgL7RgCK4BGAYYCw/s320/OACdvPanelSafeDomain.png" width="320" /></a></span><br /><br /><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click, "add domain"</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-jckhVFbljLM/WoUalLxknRI/AAAAAAAAC9A/D1oPKg9HU_c2x4wstTBpdDKUud5GbQJ1ACK4BGAYYCw/s1600/OACdvAddDomain.png" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-jckhVFbljLM/WoUalLxknRI/AAAAAAAAC9A/D1oPKg9HU_c2x4wstTBpdDKUud5GbQJ1ACK4BGAYYCw/s400/OACdvAddDomain.png" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Domain Name: enter * (wildcard)</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Check all of the boxes: Image, Frame, Script, Font, Media, Connect</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><a href="http://2.bp.blogspot.com/-v2W2nMx34kE/WoUbF_WfoNI/AAAAAAAAC9I/ORCAjahLoowwq6KDc5jmcFI51Pm_dOF6gCK4BGAYYCw/s1600/OACdvSafeDomains.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img border="0" height="272" src="https://2.bp.blogspot.com/-v2W2nMx34kE/WoUbF_WfoNI/AAAAAAAAC9I/ORCAjahLoowwq6KDc5jmcFI51Pm_dOF6gCK4BGAYYCw/s640/OACdvSafeDomains.png" width="640" /></span></a><span style="font-family: Verdana, sans-serif;"><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><ul style="text-align: left;"><li>Sign Out of OAC DV/BI</li></ul></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Sign back into OAC DV/BI</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Navigate to Data Sources /&nbsp;Create / Connection / Oracle Essbase (Beta)</span></li></ul></div><blockquote class="tr_bq"><span style="font-family: Verdana, sans-serif;">&gt;&gt;&gt; When does this Connection Type not say (Beta)! &lt;&lt;&lt;</span></blockquote><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-CEvPlO9a_SY/WoUv4XbTRPI/AAAAAAAAC9s/UF0sgvRm_yE04Dtuj89-Uvxgb20FQ_ExACK4BGAYYCw/s1600/OACdvNewConnectionWriteBack.png" imageanchor="1"><img border="0" height="448" src="https://4.bp.blogspot.com/-CEvPlO9a_SY/WoUv4XbTRPI/AAAAAAAAC9s/UF0sgvRm_yE04Dtuj89-Uvxgb20FQ_ExACK4BGAYYCw/s640/OACdvNewConnectionWriteBack.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><b>Connection Details:</b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*New Connection Name: "Your Essbase Server"</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*DSN: IP or host:Port /essbase /agent</span></div><div><span style="font-family: Verdana, sans-serif;">ex. http://my.IP.address:80/essbase/agent</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Username: &lt;AdminUsername&gt;</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Password: &lt;AdminPassword&gt;</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Authentication: Always use <u>this</u>&nbsp;credentials??</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Save'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">From the OAC - DV/BI Home</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click Create .. Data Set ..</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the Newly created Connection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the Essbase Cube that is a part of that Connection that you want</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Add'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">You should see a notification "The Data Set was successfully saved."</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Now go ahead and create a Project</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the cube you added as a Data Source of the "Essbase Server" above</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Create your visualization adding the dimensions .. ALL of the dimensions</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Change&nbsp;the Visualization..</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://2.bp.blogspot.com/-rmmH5XYQOK4/WoU0vSoN0BI/AAAAAAAAC-E/XcRVkR809lIOdT5lNpIQtPLH4-SQR3X1QCK4BGAYYCw/s1600/PickViz.png" imageanchor="1"><img border="0" height="56" src="https://2.bp.blogspot.com/-rmmH5XYQOK4/WoU0vSoN0BI/AAAAAAAAC-E/XcRVkR809lIOdT5lNpIQtPLH4-SQR3X1QCK4BGAYYCw/s320/PickViz.png" width="320" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the "Essbase Writeback" Viz</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-gz4hIhMnciY/WoU0o6e-MmI/AAAAAAAAC98/5th18On1eYMzHc6VVuYyruHVf5nWxepRQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-02-15%2Bat%2B12.46.16%2BPM.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-gz4hIhMnciY/WoU0o6e-MmI/AAAAAAAAC98/5th18On1eYMzHc6VVuYyruHVf5nWxepRQCK4BGAYYCw/s400/Screen%2BShot%2B2018-02-15%2Bat%2B12.46.16%2BPM.png" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Now your Viz looks more like a reporting grid 😀 .. go ahead and double click a data cell .. and enter/change data .. <b>Click 'Submit'</b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">In this case I changed Sample Basic</span></div><div><span style="font-family: Verdana, sans-serif;">Budget Sales May 400-10 Wisconsin from <b><i>90</i></b> to <b><span style="color: blue;">100</span></b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-fUaduBUk0rQ/WoVIF8jhsaI/AAAAAAAAC-Y/6DBbH7E5hYkhYTTNF_lhJqF5YhbMfEBvACK4BGAYYCw/s1600/SB_May_400-10_WI_90%2Bto%2B100.png" imageanchor="1"><img border="0" height="395" src="https://4.bp.blogspot.com/-fUaduBUk0rQ/WoVIF8jhsaI/AAAAAAAAC-Y/6DBbH7E5hYkhYTTNF_lhJqF5YhbMfEBvACK4BGAYYCw/s640/SB_May_400-10_WI_90%2Bto%2B100.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Nice to see the cell change color to the muted yellow similar to either Workspace or Smart View</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">You should now get an inline popup window that is asking to re-validate the credentials in order to accept the data change being submitted to the cube..</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-gQJSa37N1kY/WoVIc3XKdoI/AAAAAAAAC-g/nkvtPtI2jpkBYP6ZUCBdRD7LYAoyi2kLQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-02-15%2Bat%2B12.55.57%2BPM.png" imageanchor="1"><img border="0" height="287" src="https://1.bp.blogspot.com/-gQJSa37N1kY/WoVIc3XKdoI/AAAAAAAAC-g/nkvtPtI2jpkBYP6ZUCBdRD7LYAoyi2kLQCK4BGAYYCw/s400/Screen%2BShot%2B2018-02-15%2Bat%2B12.55.57%2BPM.png" width="400" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><b>Target Database Detail:</b></span></div><div><span style="font-family: Verdana, sans-serif;">Should all be the same credentials that were used above</span></div><div><div><span style="font-family: Verdana, sans-serif;">ex. http://my.IP.address:80/essbase/agent</span></div><div><span style="font-family: Verdana, sans-serif;">*Username: &lt;AdminUsername&gt;</span></div><div><span style="font-family: Verdana, sans-serif;">*Password: &lt;AdminPassword&gt;</span></div></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Fetch'</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click the dropdown arrow for Application and make your selection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click the dropdown arrow for Database and make your selection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'OK'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">.. and your grid should "Refresh" .. wait for it</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">and now be updated with the new data value(s) saved in the cube!!!!</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/--Sqoqu76XzQ/WoVL9hopPpI/AAAAAAAAC-s/DlH_bFt1624_wnVEpshXgpp7x57AfN2kQCK4BGAYYCw/s1600/Screen%t%2B2018-02-15%2Bat%2B2.28.47%2BPM.png" imageanchor="1"><img border="0" height="328" src="https://3.bp.blogspot.com/--Sqoqu76XzQ/WoVL9hopPpI/AAAAAAAAC-s/DlH_bFt1624_wnVEpshXgpp7x57AfN2kQCK4BGAYYCw/s640/Screen%2BShot%2B2018-02-15%2Bat%2B2.28.47%2BPM.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Coming soon .. a blog post about the latest version of</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Cube Designer&nbsp;</span><span style="font-family: Verdana, sans-serif;">Version 12.2.1.1.109 Build 126</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><br /></div></div> G Adashek tag:blogger.com,1999:blog-1699540956788037380.post-144402476921022820 Thu Feb 15 2018 04:18:00 GMT-0500 (EST) OAC - Essbase .. WRITEBACK via OAC - DV!! http://adashek-epm.blogspot.com/2018/02/oac-essbase-writeback-via-oac-dv.html <div dir="ltr" style="text-align: left;" trbidi="on"><span style="font-family: Verdana, sans-serif;"><b>OAC - Essbase WRITEBACK IS ALIVE!</b></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Well, the day has finally arrived, Essbase Writeback in the cloud is real .. and a thing 😎🤓🤓😎</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Let's get into the how-to and what it looks like.</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">But first, a BIG shout out to <a href="http://garycris.blogspot.in/" target="_blank">Gary Crisci</a> for being able to battle the patch frontier and slay the OAC demons!</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span></span><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;">OAC - Essbase patched to version 109 .. skipped right over 108 to specifically Version 12.2.1.1.109 - Build 126</span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/-hSoDgKdBA8Q/WoMYJyqu8LI/AAAAAAAAC8E/v4cZfAebmO4OcR-0zrg7EMRgrVi3ZSfHQCK4BGAYYCw/s1600/OAC_Essbase_12.2.1.1.109build126.png" imageanchor="1"><img border="0" height="251" src="https://3.bp.blogspot.com/-hSoDgKdBA8Q/WoMYJyqu8LI/AAAAAAAAC8E/v4cZfAebmO4OcR-0zrg7EMRgrVi3ZSfHQCK4BGAYYCw/s400/OAC_Essbase_12.2.1.1.109build126.png" width="400" /></a></span></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span></span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><b>Steps to success</b></span><br /><span style="font-family: Verdana, sans-serif;"><span style="font-family: Verdana, sans-serif;"><br /></span></span><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Create an Essbase cube in OAC&nbsp;(thought that this step and a few others might be obvious ..)</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Go to the Data Visualization Cloud - <a href="https://www.oracle.com/solutions/business-analytics/data-visualization/library.html" target="_blank">Oracle Analytics Library</a></span></li></ul><br /><span style="font-family: Verdana, sans-serif;">https://www.oracle.com/solutions/business-analytics/data-visualization/library.html</span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Find the Custom Plug-In: Essbase Write-Back plugin by Oracle</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/-ABj3kYyc2dM/WoUXjeW6_NI/AAAAAAAAC8Y/64FE3kpul70XLUv7EFNmHG8n8PiUhSnJQCK4BGAYYCw/s1600/OACessbaseWritebackCustPlugin.png" imageanchor="1"><img border="0" height="400" src="https://3.bp.blogspot.com/-ABj3kYyc2dM/WoUXjeW6_NI/AAAAAAAAC8Y/64FE3kpul70XLUv7EFNmHG8n8PiUhSnJQCK4BGAYYCw/s400/OACessbaseWritebackCustPlugin.png" width="269" /></a></span><br /><span style="font-family: Verdana, sans-serif;"><br /></span><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click Download to Download the zip file</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Log into the OAC - DV/BI instance</span></li></ul><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Go to Console</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-zvxHNncHTVA/WoUYNO7peOI/AAAAAAAAC8g/0ZNaNzNinwYIRUNyEZ_yK16LbQeTrKtHwCK4BGAYYCw/s1600/OACdvConsole.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-zvxHNncHTVA/WoUYNO7peOI/AAAAAAAAC8g/0ZNaNzNinwYIRUNyEZ_yK16LbQeTrKtHwCK4BGAYYCw/s400/OACdvConsole.png" /></a></span><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">On the panel, click Custom Plugins</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-Ui-neUgSvzY/WoUYZNoxNbI/AAAAAAAAC8o/KRRa8XgYBzIqJa1Loq2ijDwYyGVR43GNQCK4BGAYYCw/s1600/OACdvCustPlugins.png" imageanchor="1"><img border="0" height="82" src="https://1.bp.blogspot.com/-Ui-neUgSvzY/WoUYZNoxNbI/AAAAAAAAC8o/KRRa8XgYBzIqJa1Loq2ijDwYyGVR43GNQCK4BGAYYCw/s320/OACdvCustPlugins.png" width="320" /></a></span><br /><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Upload the saved Custom Plugin from the step above, drag and drop or click "Upload Custom Plugin" and select the zip file</span></li></ul><br /><br /><br /><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">On the panel, click Safe Domains</span></li></ul><br /><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-ukgyULjUtmU/WoUaMpDfiJI/AAAAAAAAC84/TqVg6YFdx9E1VRRx3eaXksU7w6qqgL7RgCK4BGAYYCw/s1600/OACdvPanelSafeDomain.png" imageanchor="1"><img border="0" height="72" src="https://1.bp.blogspot.com/-ukgyULjUtmU/WoUaMpDfiJI/AAAAAAAAC84/TqVg6YFdx9E1VRRx3eaXksU7w6qqgL7RgCK4BGAYYCw/s320/OACdvPanelSafeDomain.png" width="320" /></a></span><br /><br /><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click, "add domain"</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-jckhVFbljLM/WoUalLxknRI/AAAAAAAAC9A/D1oPKg9HU_c2x4wstTBpdDKUud5GbQJ1ACK4BGAYYCw/s1600/OACdvAddDomain.png" imageanchor="1"><img border="0" src="https://4.bp.blogspot.com/-jckhVFbljLM/WoUalLxknRI/AAAAAAAAC9A/D1oPKg9HU_c2x4wstTBpdDKUud5GbQJ1ACK4BGAYYCw/s400/OACdvAddDomain.png" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Domain Name: enter * (wildcard)</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Check all of the boxes: Image, Frame, Script, Font, Media, Connect</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><a href="http://2.bp.blogspot.com/-v2W2nMx34kE/WoUbF_WfoNI/AAAAAAAAC9I/ORCAjahLoowwq6KDc5jmcFI51Pm_dOF6gCK4BGAYYCw/s1600/OACdvSafeDomains.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img border="0" height="272" src="https://2.bp.blogspot.com/-v2W2nMx34kE/WoUbF_WfoNI/AAAAAAAAC9I/ORCAjahLoowwq6KDc5jmcFI51Pm_dOF6gCK4BGAYYCw/s640/OACdvSafeDomains.png" width="640" /></span></a><span style="font-family: Verdana, sans-serif;"><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><ul style="text-align: left;"><li>Sign Out of OAC DV/BI</li></ul></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Sign back into OAC DV/BI</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Navigate to Data Sources /&nbsp;Create / Connection / Oracle Essbase (Beta)</span></li></ul></div><blockquote class="tr_bq"><span style="font-family: Verdana, sans-serif;">&gt;&gt;&gt; When does this Connection Type not say (Beta)! &lt;&lt;&lt;</span></blockquote><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-CEvPlO9a_SY/WoUv4XbTRPI/AAAAAAAAC9s/UF0sgvRm_yE04Dtuj89-Uvxgb20FQ_ExACK4BGAYYCw/s1600/OACdvNewConnectionWriteBack.png" imageanchor="1"><img border="0" height="448" src="https://4.bp.blogspot.com/-CEvPlO9a_SY/WoUv4XbTRPI/AAAAAAAAC9s/UF0sgvRm_yE04Dtuj89-Uvxgb20FQ_ExACK4BGAYYCw/s640/OACdvNewConnectionWriteBack.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><b>Connection Details:</b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*New Connection Name: "Your Essbase Server"</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*DSN: IP or host:Port /essbase /agent</span></div><div><span style="font-family: Verdana, sans-serif;">ex. http://my.IP.address:80/essbase/agent</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Username: &lt;AdminUsername&gt;</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Password: &lt;AdminPassword&gt;</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">*Authentication: Always use <u>this</u>&nbsp;credentials??</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Save'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">From the OAC - DV/BI Home</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click Create .. Data Set ..</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the Newly created Connection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the Essbase Cube that is a part of that Connection that you want</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Add'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">You should see a notification "The Data Set was successfully saved."</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Now go ahead and create a Project</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the cube you added as a Data Source of the "Essbase Server" above</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Create your visualization adding the dimensions .. ALL of the dimensions</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Change&nbsp;the Visualization..</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://2.bp.blogspot.com/-rmmH5XYQOK4/WoU0vSoN0BI/AAAAAAAAC-E/XcRVkR809lIOdT5lNpIQtPLH4-SQR3X1QCK4BGAYYCw/s1600/PickViz.png" imageanchor="1"><img border="0" height="56" src="https://2.bp.blogspot.com/-rmmH5XYQOK4/WoU0vSoN0BI/AAAAAAAAC-E/XcRVkR809lIOdT5lNpIQtPLH4-SQR3X1QCK4BGAYYCw/s320/PickViz.png" width="320" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Select the "Essbase Writeback" Viz</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-gz4hIhMnciY/WoU0o6e-MmI/AAAAAAAAC98/5th18On1eYMzHc6VVuYyruHVf5nWxepRQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-02-15%2Bat%2B12.46.16%2BPM.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-gz4hIhMnciY/WoU0o6e-MmI/AAAAAAAAC98/5th18On1eYMzHc6VVuYyruHVf5nWxepRQCK4BGAYYCw/s400/Screen%2BShot%2B2018-02-15%2Bat%2B12.46.16%2BPM.png" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Now your Viz looks more like a reporting grid 😀 .. go ahead and double click a data cell .. and enter/change data .. <b>Click 'Submit'</b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">In this case I changed Sample Basic</span></div><div><span style="font-family: Verdana, sans-serif;">Budget Sales May 400-10 Wisconsin from <b><i>90</i></b> to <b><span style="color: blue;">100</span></b></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://4.bp.blogspot.com/-fUaduBUk0rQ/WoVIF8jhsaI/AAAAAAAAC-Y/6DBbH7E5hYkhYTTNF_lhJqF5YhbMfEBvACK4BGAYYCw/s1600/SB_May_400-10_WI_90%2Bto%2B100.png" imageanchor="1"><img border="0" height="395" src="https://4.bp.blogspot.com/-fUaduBUk0rQ/WoVIF8jhsaI/AAAAAAAAC-Y/6DBbH7E5hYkhYTTNF_lhJqF5YhbMfEBvACK4BGAYYCw/s640/SB_May_400-10_WI_90%2Bto%2B100.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Nice to see the cell change color to the muted yellow similar to either Workspace or Smart View</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">You should now get an inline popup window that is asking to re-validate the credentials in order to accept the data change being submitted to the cube..</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://1.bp.blogspot.com/-gQJSa37N1kY/WoVIc3XKdoI/AAAAAAAAC-g/nkvtPtI2jpkBYP6ZUCBdRD7LYAoyi2kLQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-02-15%2Bat%2B12.55.57%2BPM.png" imageanchor="1"><img border="0" height="287" src="https://1.bp.blogspot.com/-gQJSa37N1kY/WoVIc3XKdoI/AAAAAAAAC-g/nkvtPtI2jpkBYP6ZUCBdRD7LYAoyi2kLQCK4BGAYYCw/s400/Screen%2BShot%2B2018-02-15%2Bat%2B12.55.57%2BPM.png" width="400" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><b>Target Database Detail:</b></span></div><div><span style="font-family: Verdana, sans-serif;">Should all be the same credentials that were used above</span></div><div><div><span style="font-family: Verdana, sans-serif;">ex. http://my.IP.address:80/essbase/agent</span></div><div><span style="font-family: Verdana, sans-serif;">*Username: &lt;AdminUsername&gt;</span></div><div><span style="font-family: Verdana, sans-serif;">*Password: &lt;AdminPassword&gt;</span></div></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'Fetch'</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click the dropdown arrow for Application and make your selection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click the dropdown arrow for Database and make your selection</span></li></ul></div><div><ul style="text-align: left;"><li><span style="font-family: Verdana, sans-serif;">Click 'OK'</span></li></ul></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">.. and your grid should "Refresh" .. wait for it</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">and now be updated with the new data value(s) saved in the cube!!!!</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><a href="http://3.bp.blogspot.com/--Sqoqu76XzQ/WoVL9hopPpI/AAAAAAAAC-s/DlH_bFt1624_wnVEpshXgpp7x57AfN2kQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-02-15%2Bat%2B2.28.47%2BPM.png" imageanchor="1"><img border="0" height="328" src="https://3.bp.blogspot.com/--Sqoqu76XzQ/WoVL9hopPpI/AAAAAAAAC-s/DlH_bFt1624_wnVEpshXgpp7x57AfN2kQCK4BGAYYCw/s640/Screen%2BShot%2B2018-02-15%2Bat%2B2.28.47%2BPM.png" width="640" /></a></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Coming soon .. a blog post about the latest version of</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;">Cube Designer&nbsp;</span><span style="font-family: Verdana, sans-serif;">Version 12.2.1.1.109 Build 126</span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><span style="font-family: Verdana, sans-serif;"><br /></span></div><div><br /></div></div> G Adashek tag:blogger.com,1999:blog-1699540956788037380.post-144402476921022820 Thu Feb 15 2018 04:18:00 GMT-0500 (EST) EPM Cloud - Capturing rejections in Data Management - Part 2 http://john-goodwin.blogspot.com/2018/02/epm-cloud-capturing-rejections-in-data.html <div dir="ltr" style="text-align: left;" trbidi="on">Moving on to the second part where I am looking at a possible solution to capturing and handling rejections in EPM Cloud Data Management.<br /><br />Just a quick recap on the first part, data was loaded through Data Management but there were records rejected due to missing entity members in the target application. With help from scripting and the REST API I covered a method to run the data load rule, check the status of the load rule and if there was a failure then download the process log, the process log was parsed for data load rejections if any were found these were sent in an email.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_msqplafums/WoFP6BwVd6I/AAAAAAAAJiE/juU5uOC6Bb04hWSl3jpnZ5hFowZxDCZAwCLcBGAs/s1600/email2.PNG" imahor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="338" data-original-width="667" src="https://1.bp.blogspot.com/-_msqplafums/WoFP6BwVd6I/AAAAAAAAJiE/juU5uOC6Bb04hWSl3jpnZ5hFowZxDCZAwCLcBGAs/s1600/email2.PNG" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"></div>In this post I am going to extend the process for capturing rejections and handle them by using the metadata functionality that is now available in Data Management.<br /><br />Like in the previous part I will be focusing on the entity member rejections but there is nothing stopping expanding the process to handle other dimensions, though saying that if there are rejections across multiple dimensions then it might be best to concentrate on starting with a cleaner data source file.<br /><br />I am going to use the same source file where the rows containing entity members “901” and “902” will be rejected due the members not existing in the target application.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-JTPxdXVNgc0/WoFJGum7gbI/AAAAAAAAJfs/kDUa6QcBUsMwSX-ewE-4N860T4dbx9fYwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="171" data-original-width="639" src="https://2.bp.blogspot.com/-JTPxdXVNgc0/WoFJGum7gbI/AAAAAAAAJfs/kDUa6QcBUsMwSX-ewE-4N860T4dbx9fYwCLcBGAs/s1600/image002.png" /></a></div><br />The aim will be to extract the rejected entity members from the process log and write them to a text file which can be uploaded to Data Management.<br /><br />Using a metadata load rule, the members will be loaded based on mapping logic, so in this example they will be loaded as children of “900”.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-1oYpLc80Jq8/WoFJGuojsKI/AAAAAAAAJfo/TVCkGoMVNZs6Y8HjaR_Ti01_t0312BopQCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="426" src="https://4.bp.blogspot.com/-1oYpLc80Jq8/WoFJGuojsKI/AAAAAAAAJfo/TVCkGoMVNZs6Y8HjaR_Ti01_t0312BopQCLcBGAs/s1600/image003.png" /></a></div><br />Even though I am not yet a fan of the simplified dimension editor I thought I had better start using it in my examples as the classic editor is no longer going to be supported.<br /><br />Once the members have been loaded and a refresh performed, the data load can be run again and there should be no rejections.<br /><br />Before we can get to that stage a metadata load needs to be setup in Data Management, I am not going to go into great detail around the metadata functionality as I have already covered this topic in a previous blog which you can read all about <b><a href="http://john-goodwin.blogspot.co.uk/2017/12/epm-cloud-data-management-loading.html">here</a></b>.<br /><br />Under the Target Application Summary dimensions are added.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-AaBwY4LaPk4/WoFJHYcOa_I/AAAAAAAAJf0/0EemEGi0vgMLyeWt9p7zzWplOX5VABBjQCLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="132" data-original-width="161" src="https://3.bp.blogspot.com/-AaBwY4LaPk4/WoFJHYcOa_I/AAAAAAAAJf0/0EemEGi0vgMLyeWt9p7zzWplOX5VABBjQCLcBGAs/s1600/image004.png" /></a></div><br />For the entity dimension I have only enabled the properties I will be using in the metadata load, these are parent, member and data storage. I could have got away with not including data storage and let the system pick the default value but I just wanted to show that properties that are not contained in the source can be included.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-q_CdGCKN5Ug/WoFJHi5gsjI/AAAAAAAAJf4/fWEfM1edtlEz24RzY3R8F4dpARVdmOqGACLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="521" data-original-width="819" height="407" src="https://2.bp.blogspot.com/-q_CdGCKN5Ug/WoFJHi5gsjI/AAAAAAAAJf4/fWEfM1edtlEz24RzY3R8F4dpARVdmOqGACLcBGAs/s640/image005.png" width="640" /></a></div><br />The import format is simple as the source file will only have one column containing the new entity members.<br /><br />The File Type should be set as “Delimited – All Data Type” and the Data column is ignored for metadata loads.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-m9dHlvppJqU/WoFJH2AJ2dI/AAAAAAAAJf8/YE7XfYZ0fwMh7Nn-j7LL6omeIy1vdgW3gCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="584" src="https://4.bp.blogspot.com/-m9dHlvppJqU/WoFJH2AJ2dI/AAAAAAAAJf8/YE7XfYZ0fwMh7Nn-j7LL6omeIy1vdgW3gCLcBGAs/s1600/image006.png" /></a></div><br />A new location was added and a new data load rule created against the new location.<br /><br />I assigned to a category named “Metadata” which I have for metadata type loads.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-rLPVy32jPHA/WoFJIL9ocaI/AAAAAAAAJgA/yGQXHWQTyjUjqj5WKF0fP45vl8c_71BJwCLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="239" data-original-width="402" src="https://4.bp.blogspot.com/-rLPVy32jPHA/WoFJIL9ocaI/AAAAAAAAJgA/yGQXHWQTyjUjqj5WKF0fP45vl8c_71BJwCLcBGAs/s1600/image007.png" /></a></div><br />I did not set a file as I am going to include that in the automation script, the directory was defined as the location folder where the script will upload the rejected member file to.<br /><br />In the target options of the rule the “Refresh Database” property value was set to “Yes” as I want the members to exist in Essbase when the data is reloaded.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-d8xOqKp4Cyw/WoFJIe494vI/AAAAAAAAJgE/Ka6shleA_n4ny6YnHwi98f4JF09EHt0JACLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="165" data-original-width="284" src="https://3.bp.blogspot.com/-d8xOqKp4Cyw/WoFJIe494vI/AAAAAAAAJgE/Ka6shleA_n4ny6YnHwi98f4JF09EHt0JACLcBGAs/s1600/image008.png" /></a></div><br />On to the mappings, an explicit mapping is defined for “Data Storage” to map “N” from the import format to “never share”.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-tI9x6kq7LkA/WoFJIrP19TI/AAAAAAAAJgI/nyzHz_zCX-4OdcwLtbwMbtTYdxXuS4IrgCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="221" data-original-width="348" src="https://3.bp.blogspot.com/-tI9x6kq7LkA/WoFJIrP19TI/AAAAAAAAJgI/nyzHz_zCX-4OdcwLtbwMbtTYdxXuS4IrgCLcBGAs/s1600/image009.png" /></a></div><br />For the parent I used a “#FORMAT” mapping type which will take the first character of the member and then suffix “00”, if you look back I also mapped the entity member to parent, so as an example member “901” will be mapped to the parent “900”<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TTq4FLwsc54/WoFJI11YRaI/AAAAAAAAJgM/9zAxObfdaHEy7brqEAtL2LJIOTZoiQVvwCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="217" data-original-width="354" src="https://1.bp.blogspot.com/-TTq4FLwsc54/WoFJI11YRaI/AAAAAAAAJgM/9zAxObfdaHEy7brqEAtL2LJIOTZoiQVvwCLcBGAs/s1600/image010.png" /></a></div><br />The entity member property was defined as a like for like mapping, this is because I want the source member to be the same as the target.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-bfiFOiXtKHE/WoFJJAW9lnI/AAAAAAAAJgQ/SxwT2HBYAiIvlkj2PrJPRamR_IWD8puowCLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="222" data-original-width="246" src="https://3.bp.blogspot.com/-bfiFOiXtKHE/WoFJJAW9lnI/AAAAAAAAJgQ/SxwT2HBYAiIvlkj2PrJPRamR_IWD8puowCLcBGAs/s1600/image011.png" /></a></div><br />If I wanted to expand the automation process further I could add in a step to upload explicit mappings for the new entity members.<br /><br />Now the rule is in place it is time to go back to my original PowerShell script from the last blog post and modify it to handle the metadata load.<br /><br />I am going to continue with the script from the point where the process log has been downloaded, this means the data load has taken place and failed.<br /><br />In the last part I parsed the process log and added any rejections to an email, this time I am going to parse and create a file with the rejected members in.<br /><br />In the process log the rejected rows of data will contain “Error: 3303”.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-wOigI4GQP7A/WoFJJZjE5DI/AAAAAAAAJgU/6Fgahl5F_GQtc-havudSWK96bgiyZ54FQCLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="74" data-original-width="639" src="https://3.bp.blogspot.com/-wOigI4GQP7A/WoFJJZjE5DI/AAAAAAAAJgU/6Fgahl5F_GQtc-havudSWK96bgiyZ54FQCLcBGAs/s1600/image012.png" /></a></div><br />I will break the script into bite sized sections and include the variables which usually would be at the start of the script.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Xc0qVxGv2oI/WoFJJrStQFI/AAAAAAAAJgY/zSkSePkWbcsOh82EbKph3oaeU70IMTkzwCLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="377" src="https://2.bp.blogspot.com/-Xc0qVxGv2oI/WoFJJrStQFI/AAAAAAAAJgY/zSkSePkWbcsOh82EbKph3oaeU70IMTkzwCLcBGAs/s1600/image013.png" /></a></div><br />The variables above have comments so I shouldn’t need to explain them but I have cut down on the number of variables for demo purposes in this post, the final script includes variables where possible and functions to stop repetition.<br /><br />On to the next section of the script which checks if there is an existing entity rejection file, if there is, delete.<br /><br />Each line of the process log is then cycled through and if a line contains “Error: 3303” then it is parsed to extract the entity member, the script could be enhanced to handle multiple dimensions but I am trying to keep it simple for this example.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-TF5450tl2Jw/WoFJJ2R9zHI/AAAAAAAAJgc/UbtEDx25T0IWQfv3oeuCsNpiVmykXFsDwCLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="558" src="https://3.bp.blogspot.com/-TF5450tl2Jw/WoFJJ2R9zHI/AAAAAAAAJgc/UbtEDx25T0IWQfv3oeuCsNpiVmykXFsDwCLcBGAs/s1600/image014.png" /></a></div><br />To break down the parsing section further let me take the following line as an example:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Gq8qf78IXeA/WoFJKOfOrZI/AAAAAAAAJgg/FIZ597Ge8dE_dS531M9fBD10LwEXI3LpwCLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="20" data-original-width="636" src="https://2.bp.blogspot.com/-Gq8qf78IXeA/WoFJKOfOrZI/AAAAAAAAJgg/FIZ597Ge8dE_dS531M9fBD10LwEXI3LpwCLcBGAs/s1600/image015.png" /></a></div><br />First the line is split by a pipe delimiter and stored in an array, for the above the array would look like:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-yIsUV5XM2Is/WoFJKCDEPvI/AAAAAAAAJgk/uN5iRFUR8D4mrraf7xm4N-VqxWXsVK4ygCLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="44" data-original-width="523" src="https://1.bp.blogspot.com/-yIsUV5XM2Is/WoFJKCDEPvI/AAAAAAAAJgk/uN5iRFUR8D4mrraf7xm4N-VqxWXsVK4ygCLcBGAs/s1600/image016.png" /></a></div><br />The second entry in the array contains the member that was rejected, the third entry contains the data record.<br /><br />The data record is then split by a comma delimiter and stored in an array which looks like.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-po8-M6Hms6U/WoFJKVXSvxI/AAAAAAAAJgo/kEJM1-JU-sY4EJB7KjXfNQUCUXBf9TNewCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="123" data-original-width="90" src="https://3.bp.blogspot.com/-po8-M6Hms6U/WoFJKVXSvxI/AAAAAAAAJgo/kEJM1-JU-sY4EJB7KjXfNQUCUXBf9TNewCLcBGAs/s1600/image017.png" /></a></div><br />A test is then made to confirm that the rejected member is part of the entity dimension as that has been defined as the second entry in the data record, if they match the member is then appended to the entity rejection file.<br /><br />Now I have a file containing all the rejected entity members.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-pXkGT7Ap-Q4/WoFJK-yineI/AAAAAAAAJgs/OB4mimLKQCc97G0FZE_qrm5A5yvkpoYlgCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="175" data-original-width="165" src="https://3.bp.blogspot.com/-pXkGT7Ap-Q4/WoFJK-yineI/AAAAAAAAJgs/OB4mimLKQCc97G0FZE_qrm5A5yvkpoYlgCLcBGAs/s1600/image018.png" /></a></div><br />Using the REST API, the file can be uploaded to the location directory in Data Management, as there could be an existing file in the directory with the same name, the delete REST resource is used to remove the file, it doesn’t matter if the file does not exist.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-WmHDt2CInyY/WoFJLYPSivI/AAAAAAAAJgw/KdxvS7YpETcNJ2nc2bOJU_AltoqhrfVvwCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="382" data-original-width="737" height="331" src="https://3.bp.blogspot.com/-WmHDt2CInyY/WoFJLYPSivI/AAAAAAAAJgw/KdxvS7YpETcNJ2nc2bOJU_AltoqhrfVvwCLcBGAs/s640/image019.png" width="640" /></a></div><br />After this section of the script has run, the entity rejection file should exist in the Data Management location folder.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-0rTflu0uQNQ/WoFJL99dlnI/AAAAAAAAJg0/kF2zLmnDt8UNZKCgCI1GDbo6Px_BEB-xQCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="117" data-original-width="472" src="https://4.bp.blogspot.com/-0rTflu0uQNQ/WoFJL99dlnI/AAAAAAAAJg0/kF2zLmnDt8UNZKCgCI1GDbo6Px_BEB-xQCLcBGAs/s1600/image020.png" /></a></div><br />Next the REST API comes into play again to run the metadata load rule that I created earlier in Data Management.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-AB9WckhoFi4/WoFJMcJNhyI/AAAAAAAAJg4/OzB5cpIx8XEHRaGkJ8rgDSbPxCkm7LAqQCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="665" src="https://3.bp.blogspot.com/-AB9WckhoFi4/WoFJMcJNhyI/AAAAAAAAJg4/OzB5cpIx8XEHRaGkJ8rgDSbPxCkm7LAqQCLcBGAs/s1600/image021.png" /></a></div><br />At this point, if I check process details in Data Management it shows that metadata rule has successfully completed.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-essPMk9Eg-U/WoFJM8qiNFI/AAAAAAAAJg8/-dNIdd8fWWAt_qHInf5_de84rSRxhVU0QCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="119" data-original-width="408" src="https://4.bp.blogspot.com/-essPMk9Eg-U/WoFJM8qiNFI/AAAAAAAAJg8/-dNIdd8fWWAt_qHInf5_de84rSRxhVU0QCLcBGAs/s1600/image022.png" /></a></div><br />In the workbench you can see that entity members have been mapped to the correct parent.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-dLk1wefBfXw/WoFJNVxbJQI/AAAAAAAAJhA/P_Cp17VXAEUKZlJ_6xCikHNciGwXPdfmACLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="211" data-original-width="698" src="https://2.bp.blogspot.com/-dLk1wefBfXw/WoFJNVxbJQI/AAAAAAAAJhA/P_Cp17VXAEUKZlJ_6xCikHNciGwXPdfmACLcBGAs/s1600/image023.png" /></a></div><br />Within the target application the entity members have been successfully loaded.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-5CU-BVoovJQ/WoFJNxCkpcI/AAAAAAAAJhE/baIdXMgdcxwz_tGF-j_AuZsw8GysvdlkACLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="266" data-original-width="340" src="https://4.bp.blogspot.com/-5CU-BVoovJQ/WoFJNxCkpcI/AAAAAAAAJhE/baIdXMgdcxwz_tGF-j_AuZsw8GysvdlkACLcBGAs/s1600/image024.png" /></a></div><br />As the metadata has been loaded and pushed to Essbase the export stage of the data load rule can be run again.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-_orIr1BFkl8/WoFJOblb_dI/AAAAAAAAJhI/adlY3itVBcsTeyHqEPYKyLVCoFefZLCUwCLcBGAs/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="666" src="https://2.bp.blogspot.com/-_orIr1BFkl8/WoFJOblb_dI/AAAAAAAAJhI/adlY3itVBcsTeyHqEPYKyLVCoFefZLCUwCLcBGAs/s1600/image025.png" /></a></div><br />This time the data load was successful<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-tarm4j1xiv8/WoFJO9JA1WI/AAAAAAAAJhM/VIe0R4U4LikPdjkHDGROdBV_l7ct-zy6gCLcBGAs/s1600/image026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="116" data-original-width="355" src="https://2.bp.blogspot.com/-tarm4j1xiv8/WoFJO9JA1WI/AAAAAAAAJhM/VIe0R4U4LikPdjkHDGROdBV_l7ct-zy6gCLcBGAs/s1600/image026.png" /></a></div><br />The workbench confirms all rows of data have been loaded to the target application.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-bFBPEaIrgEM/WoFJPSLzALI/AAAAAAAAJhQ/AtP9EHbQT1kWJLpNp_5Q9Nzbl4aovAkZwCLcBGAs/s1600/image027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="642" src="https://2.bp.blogspot.com/-bFBPEaIrgEM/WoFJPSLzALI/AAAAAAAAJhQ/AtP9EHbQT1kWJLpNp_5Q9Nzbl4aovAkZwCLcBGAs/s1600/image027.png" /></a></div><br />A quick retrieve verifies the data is definitely in the target application.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-FNsoS74mrTs/WoFJP3pX8xI/AAAAAAAAJhU/L8008MnTqOYHhke2xX9-KcD3NsO5YooUwCLcBGAs/s1600/image028.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="138" data-original-width="345" src="https://1.bp.blogspot.com/-FNsoS74mrTs/WoFJP3pX8xI/AAAAAAAAJhU/L8008MnTqOYHhke2xX9-KcD3NsO5YooUwCLcBGAs/s1600/image028.png" /></a></div><br />After the data load has successfully completed, a step could have been added to run a rule to aggregate the data, once again this can be achieved by calling a REST resource which I have covered in the <b><a href="http://john-goodwin.blogspot.co.uk/2015/09/planning-rest-api.html">past</a></b>.<br /><br />A completion email could then be sent based on the same concept shown in the previous blog <b><a href="http://john-goodwin.blogspot.co.uk/2018/01/epm-cloud-capturing-rejections-in-data.html">post</a></b>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HeqSjUsHECs/WoFPPJqkrvI/AAAAAAAAJh8/WKP1ma3-fZYpP5dSr6GmNzMbyG9ORQ4iQCLcBGAs/s1600/email.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="354" data-original-width="598" src="https://1.bp.blogspot.com/-HeqSjUsHECs/WoFPPJqkrvI/AAAAAAAAJh8/WKP1ma3-fZYpP5dSr6GmNzMbyG9ORQ4iQCLcBGAs/s1600/email.PNG" /></a></div><br />An example of the output from the full automated process would be:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-GtDODA4Tx04/WoFJQzU2e6I/AAAAAAAAJhc/xCm4CLMPHkMZnlT3yZXixPd9m0QDrX_HwCLcBGAs/s1600/image030.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="160" data-original-width="620" src="https://4.bp.blogspot.com/-GtDODA4Tx04/WoFJQzU2e6I/AAAAAAAAJhc/xCm4CLMPHkMZnlT3yZXixPd9m0QDrX_HwCLcBGAs/s1600/image030.png" /></a></div><br />So there we go, an automated data load solution that captures and handles rejections. If you are interested in a similar type of solution then please feel free to get in touch.</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-4784953573709178935 Mon Feb 12 2018 03:32:00 GMT-0500 (EST) EPM Cloud - Capturing rejections in Data Management - Part 2 @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://john-goodwin.blogspot.com/2018/02/epm-cloud-capturing-rejections-in-data.html <div dir="ltr" style="text-align: left;" trbidi="on">Moving on to the second part where I am looking at a possible solution to capturing and handling rejections in EPM Cloud Data Management.<br /><br />Just a quick recap on the first part, data was loaded through Data Management but there were records rejected due to missing entity members in the target application. With help from scripting and the REST API I covered a method to run the data load rule, check the status of the load rule and if there was a failure then download the process log, the process log was parsed for data load rejections if any were found these were sent in an email.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_msqplafums/WoFP6BwVd6I/AAAAAAAAJiE/juU5uOC6Bb04hWSl3jpnZ5hFowZxDCZAwCLcBGAs/s1600/email2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="338" data-original-width="667" src="https://1.bp.blogspot.com/-_msqplafums/WoFP6BwVd6I/AAAAAAAAJiE/juU5uOC6Bb04hWSl3jpnZ5hFowZxDCZAwCLcBGAs/s1600/email2.PNG" /></a></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"></div>In this post I am going to extend the process for capturing rejections and handle them by using the metadata functionality that is now available in Data Management.<br /><br />Like in the previous part I will be focusing on the entity member rejections but there is nothing stopping ding the process to handle other dimensions, though saying that if there are rejections across multiple dimensions then it might be best to concentrate on starting with a cleaner data source file.<br /><br />I am going to use the same source file where the rows containing entity members “901” and “902” will be rejected due the members not existing in the target application.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-JTPxdXVNgc0/WoFJGum7gbI/AAAAAAAAJfs/kDUa6QcBUsMwSX-ewE-4N860T4dbx9fYwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="171" data-original-width="639" src="https://2.bp.blogspot.com/-JTPxdXVNgc0/WoFJGum7gbI/AAAAAAAAJfs/kDUa6QcBUsMwSX-ewE-4N860T4dbx9fYwCLcBGAs/s1600/image002.png" /></a></div><br />The aim will be to extract the rejected entity members from the process log and write them to a text file which can be uploaded to Data Management.<br /><br />Using a metadata load rule, the members will be loaded based on mapping logic, so in this example they will be loaded as children of “900”.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-1oYpLc80Jq8/WoFJGuojsKI/AAAAAAAAJfo/TVCkGoMVNZs6Y8HjaR_Ti01_t0312BopQCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="426" src="https://4.bp.blogspot.com/-1oYpLc80Jq8/WoFJGuojsKI/AAAAAAAAJfo/TVCkGoMVNZs6Y8HjaR_Ti01_t0312BopQCLcBGAs/s1600/image003.png" /></a></div><br />Even though I am not yet a fan of the simplified dimension editor I thought I had better start using it in my examples as the classic editor is no longer going to be supported.<br /><br />Once the members have been loaded and a refresh performed, the data load can be run again and there should be no rejections.<br /><br />Before we can get to that stage a metadata load needs to be setup in Data Management, I am not going to go into great detail around the metadata functionality as I have already covered this topic in a previous blog which you can read all about <b><a href="http://john-goodwin.blogspot.co.uk/2017/12/epm-cloud-data-management-loading.html">here</a></b>.<br /><br />Under the Target Application Summary dimensions are added.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-AaBwY4LaPk4/WoFJHYcOa_I/AAAAAAAAJf0/0EemEGi0vgMLyeWt9p7zzWplOX5VABBjQCLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="132" data-original-width="161" src="https://3.bp.blogspot.com/-AaBwY4LaPk4/WoFJHYcOa_I/AAAAAAAAJf0/0EemEGi0vgMLyeWt9p7zzWplOX5VABBjQCLcBGAs/s1600/image004.png" /></a></div><br />For the entity dimension I have only enabled the properties I will be using in the metadata load, these are parent, member and data storage. I could have got away with not including data storage and let the system pick the default value but I just wanted to show that properties that are not contained in the source can be included.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-q_CdGCKN5Ug/WoFJHi5gsjI/AAAAAAAAJf4/fWEfM1edtlEz24RzY3R8F4dpARVdmOqGACLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="521" data-original-width="819" height="407" src="https://2.bp.blogspot.com/-q_CdGCKN5Ug/WoFJHi5gsjI/AAAAAAAAJf4/fWEfM1edtlEz24RzY3R8F4dpARVdmOqGACLcBGAs/s640/image005.png" width="640" /></a></div><br />The import format is simple as the source file will only have one column containing the new entity members.<br /><br />The File Type should be set as “Delimited – All Data Type” and the Data column is ignored for metadata loads.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-m9dHlvppJqU/WoFJH2AJ2dI/AAAAAAAAJf8/YE7XfYZ0fwMh7Nn-j7LL6omeIy1vdgW3gCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="324" data-original-width="584" src="https://4.bp.blogspot.com/-m9dHlvppJqU/WoFJH2AJ2dI/AAAAAAAAJf8/YE7XfYZ0fwMh7Nn-j7LL6omeIy1vdgW3gCLcBGAs/s1600/image006.png" /></a></div><br />A new location was added and a new data load rule created against the new location.<br /><br />I assigned to a category named “Metadata” which I have for metadata type loads.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-rLPVy32jPHA/WoFJIL9ocaI/AAAAAAAAJgA/yGQXHWQTyjUjqj5WKF0fP45vl8c_71BJwCLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="239" data-original-width="402" src="https://4.bp.blogspot.com/-rLPVy32jPHA/WoFJIL9ocaI/AAAAAAAAJgA/yGQXHWQTyjUjqj5WKF0fP45vl8c_71BJwCLcBGAs/s1600/image007.png" /></a></div><br />I did not set a file as I am going to include that in the automation script, the directory was defined as the location folder where the script will upload the rejected member file to.<br /><br />In the target options of the rule the “Refresh Database” property value was set to “Yes” as I want the members to exist in Essbase when the data is reloaded.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-d8xOqKp4Cyw/WoFJIe494vI/AAAAAAAAJgE/Ka6shleA_n4ny6YnHwi98f4JF09EHt0JACLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="165" data-original-width="284" src="https://3.bp.blogspot.com/-d8xOqKp4Cyw/WoFJIe494vI/AAAAAAAAJgE/Ka6shleA_n4ny6YnHwi98f4JF09EHt0JACLcBGAs/s1600/image008.png" /></a></div><br />On to the mappings, an explicit mapping is defined for “Data Storage” to map “N” from the import format to “never share”.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-tI9x6kq7LkA/WoFJIrP19TI/AAAAAAAAJgI/nyzHz_zCX-4OdcwLtbwMbtTYdxXuS4IrgCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="221" data-original-width="348" src="https://3.bp.blogspot.com/-tI9x6kq7LkA/WoFJIrP19TI/AAAAAAAAJgI/nyzHz_zCX-4OdcwLtbwMbtTYdxXuS4IrgCLcBGAs/s1600/image009.png" /></a></div><br />For the parent I used a “#FORMAT” mapping type which will take the first character of the member and then suffix “00”, if you look back I also mapped the entity member to parent, so as an example member “901” will be mapped to the parent “900”<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TTq4FLwsc54/WoFJI11YRaI/AAAAAAAAJgM/9zAxObfdaHEy7brqEAtL2LJIOTZoiQVvwCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="217" data-original-width="354" src="https://1.bp.blogspot.com/-TTq4FLwsc54/WoFJI11YRaI/AAAAAAAAJgM/9zAxObfdaHEy7brqEAtL2LJIOTZoiQVvwCLcBGAs/s1600/image010.png" /></a></div><br />The entity member property was defined as a like for like mapping, this is because I want the source member to be the same as the target.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-bfiFOiXtKHE/WoFJJAW9lnI/AAAAAAAAJgQ/SxwT2HBYAiIvlkj2PrJPRamR_IWD8puowCLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="222" data-original-width="246" src="https://3.bp.blogspot.com/-bfiFOiXtKHE/WoFJJAW9lnI/AAAAAAAAJgQ/SxwT2HBYAiIvlkj2PrJPRamR_IWD8puowCLcBGAs/s1600/image011.png" /></a></div><br />If I wanted to expand the automation process further I could add in a step to upload explicit mappings for the new entity members.<br /><br />Now the rule is in place it is time to go back to my original PowerShell script from the last blog post and modify it to handle the metadata load.<br /><br />I am going to continue with the script from the point where the process log has been downloaded, this means the data load has taken place and failed.<br /><br />In the last part I parsed the process log and added any rejections to an email, this time I am going to parse and create a file with the rejected members in.<br /><br />In the process log the rejected rows of data will contain “Error: 3303”.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-wOigI4GQP7A/WoFJJZjE5DI/AAAAAAAAJgU/6Fgahl5F_GQtc-havudSWK96bgiyZ54FQCLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="74" data-original-width="639" src="https://3.bp.blogspot.com/-wOigI4GQP7A/WoFJJZjE5DI/AAAAAAAAJgU/6Fgahl5F_GQtc-havudSWK96bgiyZ54FQCLcBGAs/s1600/image012.png" /></a></div><br />I will break the script into bite sized sections and include the variables which usually would be at the start of the script.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Xc0qVxGv2oI/WoFJJrStQFI/AAAAAAAAJgY/zSkSePkWbcsOh82EbKph3oaeU70IMTkzwCLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="377" src="https://2.bp.blogspot.com/-Xc0qVxGv2oI/WoFJJrStQFI/AAAAAAAAJgY/zSkSePkWbcsOh82EbKph3oaeU70IMTkzwCLcBGAs/s1600/image013.png" /></a></div><br />The variables above have comments so I shouldn’t need to explain them but I have cut down on the number of variables for demo purposes in this post, the final script includes variables where possible and functions to stop repetition.<br /><br />On to the next section of the script which checks if there is an existing entity rejection file, if there is, delete.<br /><br />Each line of the process log is then cycled through and if a line contains “Error: 3303” then it is parsed to extract the entity member, the script could be enhanced to handle multiple dimensions but I am trying to keep it simple for this example.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-TF5450tl2Jw/WoFJJ2R9zHI/AAAAAAAAJgc/UbtEDx25T0IWQfv3oeuCsNpiVmykXFsDwCLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="428" data-original-width="558" src="https://3.bp.blogspot.com/-TF5450tl2Jw/WoFJJ2R9zHI/AAAAAAAAJgc/UbtEDx25T0IWQfv3oeuCsNpiVmykXFsDwCLcBGAs/s1600/image014.png" /></a></div><br />To break down the parsing section further let me take the following line as an example:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Gq8qf78IXeA/WoFJKOfOrZI/AAAAAAAAJgg/FIZ597Ge8dE_dS531M9fBD10LwEXI3LpwCLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="20" data-original-width="636" src="https://2.bp.blogspot.com/-Gq8qf78IXeA/WoFJKOfOrZI/AAAAAAAAJgg/FIZ597Ge8dE_dS531M9fBD10LwEXI3LpwCLcBGAs/s1600/image015.png" /></a></div><br />First the line is split by a pipe delimiter and stored in an array, for the above the array would look like:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-yIsUV5XM2Is/WoFJKCDEPvI/AAAAAAAAJgk/uN5iRFUR8D4mrraf7xm4N-VqxWXsVK4ygCLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="44" data-original-width="523" src="https://1.bp.blogspot.com/-yIsUV5XM2Is/WoFJKCDEPvI/AAAAAAAAJgk/uN5iRFUR8D4mrraf7xm4N-VqxWXsVK4ygCLcBGAs/s1600/image016.png" /></a></div><br />The second entry in the array contains the member that was rejected, the third entry contains the data record.<br /><br />The data record is then split by a comma delimiter and stored in an array which looks like.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-po8-M6Hms6U/WoFJKVXSvxI/AAAAAAAAJgo/kEJM1-JU-sY4EJB7KjXfNQUCUXBf9TNewCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="123" data-original-width="90" src="https://3.bp.blogspot.com/-po8-M6Hms6U/WoFJKVXSvxI/AAAAAAAAJgo/kEJM1-JU-sY4EJB7KjXfNQUCUXBf9TNewCLcBGAs/s1600/image017.png" /></a></div><br />A test is then made to confirm that the rejected member is part of the entity dimension as that has been defined as the second entry in the data record, if they match the member is then appended to the entity rejection file.<br /><br />Now I have a file containing all the rejected entity members.<br /><div>&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-pXkGT7Ap-Q4/WoFJK-yineI/AAAAAAAAJgs/OB4mimLKQCc97G0FZE_qrm5A5yvkpoYlgCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="175" data-original-width="165" src="https://3.bp.blogspot.com/-pXkGT7Ap-Q4/WoFJK-yineI/AAAAAAAAJgs/OB4mimLKQCc97G0FZE_qrm5A5yvkpoYlgCLcBGAs/s1600/image018.png" /></a></div><br />Using the REST API, the file can be uploaded to the location directory in Data Management, as there could be an existing file in the directory with the same name, the delete REST resource is used to remove the file, it doesn’t matter if the file does not exist.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-WmHDt2CInyY/WoFJLYPSivI/AAAAAAAAJgw/KdxvS7YpETcNJ2nc2bOJU_AltoqhrfVvwCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="382" data-original-width="737" height="331" src="https://3.bp.blogspot.com/-WmHDt2CInyY/WoFJLYPSivI/AAAAAAAAJgw/KdxvS7YpETcNJ2nc2bOJU_AltoqhrfVvwCLcBGAs/s640/image019.png" width="640" /></a></div><br />After this section of the script has run, the entity rejection file should exist in the Data Management location folder.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-0rTflu0uQNQ/WoFJL99dlnI/AAAAAAAAJg0/kF2zLmnDt8UNZKCgCI1GDbo6Px_BEB-xQCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="117" data-original-width="472" src="https://4.bp.blogspot.com/-0rTflu0uQNQ/WoFJL99dlnI/AAAAAAAAJg0/kF2zLmnDt8UNZKCgCI1GDbo6Px_BEB-xQCLcBGAs/s1600/image020.png" /></a></div><br />Next the REST API comes into play again to run the metadata load rule that I created earlier in Data Management.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-AB9WckhoFi4/WoFJMcJNhyI/AAAAAAAAJg4/OzB5cpIx8XEHRaGkJ8rgDSbPxCkm7LAqQCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="665" src="https://3.bp.blogspot.com/-AB9WckhoFi4/WoFJMcJNhyI/AAAAAAAAJg4/OzB5cpIx8XEHRaGkJ8rgDSbPxCkm7LAqQCLcBGAs/s1600/image021.png" /></a></div><br />At this point, if I check process details in Data Management it shows that metadata rule has successfully completed.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-essPMk9Eg-U/WoFJM8qiNFI/AAAAAAAAJg8/-dNIdd8fWWAt_qHInf5_de84rSRxhVU0QCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="119" data-original-width="408" src="https://4.bp.blogspot.com/-essPMk9Eg-U/WoFJM8qiNFI/AAAAAAAAJg8/-dNIdd8fWWAt_qHInf5_de84rSRxhVU0QCLcBGAs/s1600/image022.png" /></a></div><br />In the workbench you can see that entity members have been mapped to the correct parent.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-dLk1wefBfXw/WoFJNVxbJQI/AAAAAAAAJhA/P_Cp17VXAEUKZlJ_6xCikHNciGwXPdfmACLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="211" data-original-width="698" src="https://2.bp.blogspot.com/-dLk1wefBfXw/WoFJNVxbJQI/AAAAAAAAJhA/P_Cp17VXAEUKZlJ_6xCikHNciGwXPdfmACLcBGAs/s1600/image023.png" /></a></div><br />Within the target application the entity members have been successfully loaded.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-5CU-BVoovJQ/WoFJNxCkpcI/AAAAAAAAJhE/baIdXMgdcxwz_tGF-j_AuZsw8GysvdlkACLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="266" data-original-width="340" src="https://4.bp.blogspot.com/-5CU-BVoovJQ/WoFJNxCkpcI/AAAAAAAAJhE/baIdXMgdcxwz_tGF-j_AuZsw8GysvdlkACLcBGAs/s1600/image024.png" /></a></div><br />As the metadata has been loaded and pushed to Essbase the export stage of the data load rule can be run again.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-_orIr1BFkl8/WoFJOblb_dI/AAAAAAAAJhI/adlY3itVBcsTeyHqEPYKyLVCoFefZLCUwCLcBGAs/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="666" src="https://2.bp.blogspot.com/-_orIr1BFkl8/WoFJOblb_dI/AAAAAAAAJhI/adlY3itVBcsTeyHqEPYKyLVCoFefZLCUwCLcBGAs/s1600/image025.png" /></a></div><br />This time the data load was successful<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-tarm4j1xiv8/WoFJO9JA1WI/AAAAAAAAJhM/VIe0R4U4LikPdjkHDGROdBV_l7ct-zy6gCLcBGAs/s1600/image026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="116" data-original-width="355" src="https://2.bp.blogspot.com/-tarm4j1xiv8/WoFJO9JA1WI/AAAAAAAAJhM/VIe0R4U4LikPdjkHDGROdBV_l7ct-zy6gCLcBGAs/s1600/image026.png" /></a></div><br />The workbench confirms all rows of data have been loaded to the target application.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-bFBPEaIrgEM/WoFJPSLzALI/AAAAAAAAJhQ/AtP9EHbQT1kWJLpNp_5Q9Nzbl4aovAkZwCLcBGAs/s1600/image027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="642" src="https://2.bp.blogspot.com/-bFBPEaIrgEM/WoFJPSLzALI/AAAAAAAAJhQ/AtP9EHbQT1kWJLpNp_5Q9Nzbl4aovAkZwCLcBGAs/s1600/image027.png" /></a></div><br />A quick retrieve verifies the data is definitely in the target application.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-FNsoS74mrTs/WoFJP3pX8xI/AAAAAAAAJhU/L8008MnTqOYHhke2xX9-KcD3NsO5YooUwCLcBGAs/s1600/image028.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="138" data-original-width="345" src="https://1.bp.blogspot.com/-FNsoS74mrTs/WoFJP3pX8xI/AAAAAAAAJhU/L8008MnTqOYHhke2xX9-KcD3NsO5YooUwCLcBGAs/s1600/image028.png" /></a></div><br />After the data load has successfully completed, a step could have been added to run a rule to aggregate the data, once again this can be achieved by calling a REST resource which I have covered in the <b><a href="http://john-goodwin.blogspot.co.uk/2015/09/planning-rest-api.html">past</a></b>.<br /><br />A completion email could then be sent based on the same concept shown in the previous blog <b><a href="http://john-goodwin.blogspot.co.uk/2018/01/epm-cloud-capturing-rejections-in-data.html">post</a></b>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-HeqSjUsHECs/WoFPPJqkrvI/AAAAAAAAJh8/WKP1ma3-fZYpP5dSr6GmNzMbyG9ORQ4iQCLcBGAs/s1600/email.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="354" data-original-width="598" src="https://1.bp.blogspot.com/-HeqSjUsHECs/WoFPPJqkrvI/AAAAAAAAJh8/WKP1ma3-fZYpP5dSr6GmNzMbyG9ORQ4iQCLcBGAs/s1600/email.PNG" /></a></div><br />An example of the output from the full automated process would be:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-GtDODA4Tx04/WoFJQzU2e6I/AAAAAAAAJhc/xCm4CLMPHkMZnlT3yZXixPd9m0QDrX_HwCLcBGAs/s1600/image030.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="160" data-original-width="620" src="https://4.bp.blogspot.com/-GtDODA4Tx04/WoFJQzU2e6I/AAAAAAAAJhc/xCm4CLMPHkMZnlT3yZXixPd9m0QDrX_HwCLcBGAs/s1600/image030.png" /></a></div><br />So there we go, an automated data load solution that captures and handles rejections. If you are interested in a similar type of solution then please feel free to get in touch.</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-4784953573709178935 Mon Feb 12 2018 03:32:00 GMT-0500 (EST) Referencing ASO Summary Data in BSO Calculations http://www.ecapitaladvisors.com/blog/referencing-aso-summary-data-bso-calculations/ <p>The Short of It Using the @XREF function, we can leverage consolidated data from an Aggregate Storage database to drive Block Storage...</p> <p>The post <a rel="nofollow" href="http://www.ecapitaladvisors.com/blog/referencing-aso-summary-data-bso-calculations/">Referencing ASO Summary Data in BSO Calculations</a> appeared first on <a rel="nofollow" href="http://www.ecapitaladvisors.com">eCapital Advisors</a>.</p> Amy Stine http://www.ecapitaladvisors.com/?p=8938 Fri Feb 09 2018 14:34:42 GMT-0500 (EST) Referencing ASO Summary Data in BSO Calculations @ecapitaladvisor @orclEPMblogs http://www.ecapitaladvisors.com/blog/referencing-aso-summary-data-bso-calculations/ <p>The Short of It Using the @XREF function, we can leverage consolidated data from an Aggregate Storage database to drive Block Storage...</p> <p>The post <a rel="nofollow" href="http://www.ecapitaladvisors.com/blog/referencing-aso-summary-data-bso-calculations/">Referencing ASO Summary Data in BSO Calculations</a> appeared first on <a rel="nofollow" href="http://www.ecapitaladvisors.com">eCapital Advisors</a>.</p> Amy Stine http://www.ecapitaladvisors.com/?p=8938 Fri Feb 09 2018 14:34:42 GMT-0500 (EST) How to Enable Commentary in OBIEE https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Enable%20Commentary%20in%20OBIEE_landing%20page%20image.png?t=1518192988218" alt="Enable Commentary in OBIEE_landing page image" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><span>We hear it all the time: "I want commentary in OBIEE." The current method of sending screenshots with comments via email wreaks havoc on your workflow and data consistency.&nbsp;</span></p> <p><span>But now, there's CollaborateBI, an unobtrusive tool that allows you to easily add commentary directly in OBIEE. <strong><a href="https://www.us-analytics.com/enable-commentary-in-obiee">Download the white paper</a></strong> to find out everything you can do with this tool, including...</span></p> <ul> <li> <p><span>Adding commentary on dashboards and reports</span></p> </li> <li> <p><span style="background-color: transparent;">Shortening your workflow with the ability to attach critical documentation to your dashboard</span></p> </li> <li> <p><span>Simplifying your workflow by integrating with your organization's email service and instant messenging tool.</span></p> </li> </ul> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fhow-to-enable-commentary-in-obiee&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Nicholas Padgett https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee Fri Feb 09 2018 13:37:24 GMT-0500 (EST) How to Enable Commentary in OBIEE @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Enable%20Commentary%20in%20OBIEE_landing%20page%20image.png?t=1518192988218" alt="Enable Commentary in OBIEE_landing page image" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p><span>We hear it all the time: "I want commentary in OBIEE." The current method of sending screenshots with comments via email wreaks havoc on your workflow and data consistency.&nbsp;</span></p> <p><span>But now, there's CollaborateBI, an unobtrusive tool that allows you to easily add commentary directly in OBIEE. <strong><a href="https://www.us-analytics.com/enable-commentary-in-obiee">Download the white paper</a></strong> to find out everything you can do with this tool, including...</span></p> <ul> <li> <p><span>Adding commentary on dashboards and reports</span></p> </li> <li> <p><span style="background-color: transparent;">Shortening your workflow with the ability to attach critical documentation to your dashboard</span></p> </li> <li> <p><span>Simplifying your workflow by integrating with your organization's email service and instant messenging tool.</span></p> </li> </ul> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fhow-to-enable-commentary-in-obiee&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Nicholas Padgett https://www.us-analytics.com/hyperionblog/how-to-enable-commentary-in-obiee Fri Feb 09 2018 13:37:24 GMT-0500 (EST) Migrating from HFM to FCCS -- What You Need to Know @CheckPointllc http://blog.checkpointllc.com/migrating-from-hfm-to-fccs-what-you-need-to-know <p>FCCS is the next generation Oracle Hyperion Financial Consolidation Application. There are several fundamental differences in the technical aspect of the FCCS.</p> <p>From a financial perspective it executes all the required accounting functions necessary for a firm to make journal adjustments, close the books, consolidate, and produce all the required financial statements.</p> <p>The primary difference of FCCS compared to HFM is that it is what is known as Software as a Service, “SaaS”. This means the application software is hosted on Oracle’s servers, and not in the client data center. As a result all maintenance, upgrades, and backups are the responsibility of Oracle.</p> <p>This relieves the client from a substantial amount of expense and responsibility of maintaining a data center. All upgrades and new functionality is the responsibility of Oracle and are done by Oracle on a monthly basis. There are two environments for the client, one is a Test environment, and the other is Production. This allows clients to review all updates before migrating to Production.</p> <p>To maintain a strong and compliant accounting system FCCS is designed with an already existing structure of Accounts, Entities, and Consolidation Rules. The client then adds their own additional base level and rollup level accounts. The latest version allows for additional rules to customize the application to meet the needs of each unique corporation. </p> <p>FCCS functions as a very strong consolidation system, but for security and auditing requirements it has more of a structure than HFM. It does take a bit of mapping and some changes in procedures, but it will still meet all of your accounting requirements. FCCS implementations will require some mappings and some changes in procedures, but it will still meet all of your accounting requirements.</p> <p>Some points to consider when one is reviewing their migration to FCCS from HFM.</p> <ul> <li>How many HFM applications does the firm currently have in production?</li> <li>What tools does the firm currently use to migrate their data from their ERP to HFM?</li> <li>How many sources of data are imported into HFM?</li> <li>Where do the data sources reside? On premise or the cloud?</li> <li>Is the Data Model consistent from source to target, or how much mapping, coding, and other formulas are used to migrate the data?</li> <li>Do you do any manual data collection, and if so, please describe.</li> <li>How many custom dimensions are currently being used and what are the business functions of the key custom dimensions? </li> <li>How many data scenarios are currently in the HFM application/s?</li> <li>How much history is in the application and how much history is being considered to migrate to the new FCCS application or will historical data be archived?</li> <li>Approximately how many accounts are in the current application, by Balance Sheet, Revenue, and Expenses? Will be there be any account rationalization happening during the project? </li> <li>Approximately how many Entities are there and will they all be migrated?</li> <li>How do you handle intercompany eliminations and describe which accounts are used?</li> <li>How many Profit and Cost Centers exist in the current application?</li> <li>Define the current ownership structure? Is there any Minority Interest, Joint Ventures, or other considerations for consolidation?</li> <li>Are there any custom consolidation rules to support the above if necessary?</li> <li>How many currencies are in the current system?</li> <li>What is the current security model and approximately how many users are in the security model? Do you use single sign-on? If you do, do you use Active Directory? Can IT support Active Directory Federated Services? </li> <li>Where are the users located? Local, United States, and or International?</li> <li>How are the final financial results disseminated? Financial Reports, Excel Reports using Smart View, or Executive Dashboards? How many?</li> <li>Is your current HFM application used as a data source for any downstream applications?</li> </ul> <p>The above questions should be reviewed and documented. These then will be key points to discuss with your implementation team. It will help drive the requirement sessions and then the subsequent design of your FCCS application.</p> <img src="https://track.hubspot.com/__ptq.gif?a=297092&amp;k=14&amp;r=http%3A%2F%2Fblog.checkpointllc.com%2Fmigrating-from-hfm-to-fccs-what-you-need-to-know&amp;bu=http%253A%252F%252Fblog.checkpointllc.com&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Andy Ievins http://blog.checkpointllc.com/migrating-from-hfm-to-fccs-what-you-need-to-know Thu Feb 08 2018 09:15:10 GMT-0500 (EST) Migrating from HFM to FCCS -- What You Need to Know http://blog.checkpointllc.com/migrating-from-hfm-to-fccs-what-you-need-to-know <p>FCCS is the next generation Oracle Hyperion Financial Consolidation Application. There are several fundamental differences in the technical aspect of the FCCS.</p> <p>From a financial perspective it executes all the required accounting functions necessary for a firm to make journal adjustments, close the books, consolidate, and produce all the required financial statements.</p> <p>The primary difference of FCCS compared to HFM is that it is what is known as Software as a Service, “SaaS”. This means the application software is hosted on Oracle’s servers, and not in the client data center. As a result all maintenance, upgrades, and backups are the responsibility of Oracle.</p> <p>This relieves the client from a substantial amount of expense and responsibility of maintaining a data center. All upgrades and new functionality is the responsibility of Oracle and are done by Oracle on a monthly basis. There are two environments for the client, one is a Test environment, and the other is Production. This allows clients to review all updates before migrating to Production.</p> <p>To maintain a strong and compliant accounting system FCCS is designed with an already existing structure of Accounts, Entities, and Consolidation Rules. The client then adds their own additional base level and rollup level accounts. The latest version allows for additional rules to customize the application to meet the needs of each unique corporation. </p> <p>FCCS functions as a very strong consolidation system, but for security and auditing requirements it has more of a structure than HFM. It does take a bit of mapping and some changes in procedures, but it will still meet all of your accounting requirements. FCCS implementations will require some mappings and some changes in procedures, but it will still meet all of your accounting requirements.</p> <p>Some points to consider when one is reviewing their migration to FCCS from HFM.</p> <ul> <li>How many HFM applications does the firm currently have in production?</li> <li>What tools does the firm currently use to migrate their data from their ERP to HFM?</li> <li>How many sources of data are imported into HFM?</li> <li>Where do the data sources reside? On premise or the cloud?</li> <li>Is the Data Model consistent from source to target, or how much mapping, coding, and other formulas are used to migrate the data?</li> <li>Do you do any manual data collection, and if so, please describe.</li> <li>How many custom dimensions are currently being used and what are the business functions of the key custom dimensions? </li> <li>How many data scenarios are currently in the HFM application/s?</li> <li>How much history is in the application and how much history is being considered to migrate to the new FCCS application or will historical data be archived?</li> <li>Approximately how many accounts are in the current application, by Balance Sheet, Revenue, and Expenses? Will be there be any account rationalization happening during the project? </li> <li>Approximately how many Entities are there and will they all be migrated?</li> <li>How do you handle intercompany eliminations and describe which accounts are used?</li> <li>How many Profit and Cost Centers exist in the current application?</li> <li>Define the current ownership structure? Is there any Minority Interest, Joint Ventures, or other considerations for consolidation?</li> <li>Are there any custom consolidation rules to support the above if necessary?</li> <li>How many currencies are in the current system?</li> <li>What is the current security model and approximately how many users are in the security model? Do you use single sign-on? If you do, do you use Active Directory? Can IT support Active Directory Federated Services? </li> <li>Where are the users located? Local, United States, and or International?</li> <li>How are the final financial results disseminated? Financial Reports, Excel Reports using Smart View, or Executive Dashboards? How many?</li> <li>Is your current HFM application used as a data source for any downstream applications?</li> </ul> <p>The above questions should be reviewed and documented. These then will be key points to discuss with your implementation team. It will help drive the requirement sessions and then the subsequent design of your FCCS application.</p> <img src="https://track.hubspot.com/__ptq.gif?a=297092&amp;k=14&amp;r=http%3A%2F%2Fblog.checkpointllc.com%2Fmigrating-from-hfm-to-fccs-what-you-need-to-know&amp;bu=http%253A%252F%252Fblog.checkpointllc.com&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Andy Ievins http://blog.checkpointllc.com/migrating-from-hfm-to-fccs-what-you-need-to-know Thu Feb 08 2018 09:15:10 GMT-0500 (EST) An IT Financial Management (ITFM) Solution Will Boost Your Bottom Line Impact https://ranzal.wordpress.com/2018/02/07/an-itfm-solution-will-boost-your-bottom-line-impact/ <p><strong><u>An IT Financial Management (ITFM) Solution Will Boost Your Bottom Line Impact </u></strong></p> <p style="text-align:justify;">Wherever they sit in the organization, CIOs are responsible for making sure that IT is agile, cost effective, and delivers services that are responsive to business changes.  To deliver this, IT needs to <strong>provide a unified view of its value to the business determined through a rigorous, disciplined, and transparent process – ITFM</strong> &#8211; governed through the offices of the CFO and CIO.  IT executives frequently have difficulty explaining IT budget variances, exacerbated by heavy reliance on Excel for financial accountability and an inability to perform quality TCO analysis more than once a year.</p> <p style="text-align:justify;">For the good of your organization, it&#8217;s imperative that the CIO and the CFO speak the same shared language of value and move forward, aligned and focused on maximizing returns on technology investment strategies.  <strong>Speaking a shared language — one based on a unified financial model view and founded on a shared definition of value — is key to finding a solution.</strong> The discipline of ITFM is about equipping both of these executive-level offices and their teams with this better language.</p> <p style="text-align:justify;">A unified financial model is only as useful as the conversations it enables and the problems it allows decision makers to solve.   Applying over 21 years of experience with leading costing and planning implementations, <strong>Edgewater Ranzal designed a custom ITFM framework, constructed through Oracle application templates now owned by Oracle</strong>. This Oracle ITFM solution leverages the lessons learned from the wisdom of numerous customers and serves as a guide for future clients to build their ITFM solutions.  As templates deployed on widely embraced enterprise financial applications &#8211; Oracle Profitability and Cost Management (PCMCS) and Enterprise Planning and Budgeting (EPBCS) &#8211; <strong>Oracle ITFM is prescriptive, pre-configured, and fine-tuned to handle both financial performance management and IT-specific logic.</strong> Inherently, your organization gets a jumpstart to a modern defined service catalogue, data management approaches, and <strong>a cost and planning model framework that follows leading practices for IT finance and corporate finance</strong>.</p> <p style="text-align:justify;">Recognizing that every business is unique in some ways, the base solution is <strong>easily adapted to meet any organization’s IT financial management needs.</strong> With a set of 15 pre-built reporting and analytics capabilities, the Oracle ITFM solution empowers companies to bring innovation to the business without disrupting business flow.  The templates are <strong>free</strong>, providing an estimated savings of 650 consulting hours for design, build, and testing, and <strong>a cost savings of $125k to $150k</strong>. We have fixed scope offerings to <strong>implement our ITFM solution in about 7 weeks.</strong></p> <p style="text-align:justify;">An ITFM solution can:<img data-attachment-id="1937" data-permalink="https://ranzal.wordpress.com/2018/02/07/an-itfm-solution-will-boost-your-bottom-line-impact/boost/" data-orig-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg" data-orig-size="351,246" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="boost" data-image-description="" data-medium-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=300" data-large-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=351" class="alignright wp-image-1937" src="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=184&#038;h=129" alt="boost" width="184" height="129" srcset="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=184&amp;h=129 184w, https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=150&amp;h=105 150w, https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=300&amp;h=210 300w, https://ranzal.files.wordpress.com/2018/02/boost.jpg 351w" sizes="(max-width: 184px) 100vw, 184px" /></p> <ul> <li style="text-align:left;">Provide transparency to IT service charges</li> <li style="text-align:left;">Align IT projects with strategic priorities</li> <li style="text-align:left;">Allow IT spend analysis: run vs. grow vs. transform</li> <li style="text-align:left;">Help IT build credibility with the business proactively</li> </ul> <p>Leveraging the included set of allocation rules and data source dimensions not only diminishes the effort needed to implement, but also creates alignment with the industry for internal and external benchmarking activities. This <strong>alignment promotes a culture of accountability and collaboration with the business</strong>, resulting in better IT investment decisions.</p> <p style="text-align:justify;"><strong>So why continue struggling in the dark or spending hours in Excel? Let us shed some light on your opportunities. </strong></p> <p><a href="mailto:%20%20itfm@ranzal.com?subject=I'm%20Interested%20in%20a%20Complimentary%20ITFM%20Health%20Check" target="_blank" rel="noopener">Contact us today for a Complimentary “30 Minute ITFM Health Check”</a></p> <p style="text-align:justify;"><a href="http://www.ranzal.com/Documents/Ranzal%20SS%202017%20-%20ITFM.pdf" target="_blank" rel="noopener">Edgewater Ranzal&#8217;s ITFM Solution</a></p> <p>This blog post was written in collaboration with our <span style="font-family:Arial;">trusted CIO advisor, </span><a href="http://info.edgewater.com/e1t/c/%2aN2fR_Xn2j5hmW5r7MN7352X6n0/%2aN6DGpcw9mPv4W7HzSr05CpP2d0/5/f18dQhb0SmhS8XJ8dWW75VxFp6ghkRDVWs4R056t3dvW5r8vy28yym6RW1lb7dX8tBfc9W8tBZF75wL96LW1sL3M03MybvyMfN1lkZvG6bW8DCt_G1qN9d6VZw0LJ61mzVSVV87L24KHSs3W5x5KNk7-XB_5W67h1CP8r5GVdW2GRw4Y3HtrQnW2K4Q685w97ypW5mg0gg3YnMJkW2_1rp53ZQ23FW8vr5Ss62VzXgN8nF6Y6Dqm2yW3SlyVc8pFtl9MMFSsgM8NKwVZY8gK8FT62_N5kdGmXNCg4gW8BxFzW5BFRHvN34t9YtM8xbbVRg31N8hK090W35xCxz5lLYdYW3gKJGP3z2RSYN8lwJVsLCBDhW5n8rhJ228cJgW53NYtc4PLwTVW7pKXv81BcZlDW1V36qf1tjxNHN1QLl_hmLW2JW4r5l5j9kw6jdW81QKv597WR-9W6TlVjF4G0Jw0W99RBfM28RQcVW4w-8vn5V9WFRW3f5_rb7hyd0yf22w0H004?__hstc=43033274.ed1fb416f851444d89cb906f5cc9fc5e.1499980059311.1518790190332.1519141818511.318&amp;__hssc=43033274.6.1519141818511&amp;__hsfp=636162644">Thavron Solutions</a>.</p> michaeljkilleen http://ranzal.wordpress.com/?p=1936 Wed Feb 07 2018 11:09:34 GMT-0500 (EST) An IT Financial Management (ITFM) Solution Will Boost Your Bottom Line Impact @ranzal @orclEPMblogs @orclEPMblogs @orclEPMblogs https://ranzal.wordpress.com/2018/02/07/an-itfm-solution-will-boost-your-bottom-line-impact/ <p><strong><u>An IT Financial Management (ITFM) Solution Will Boost Your Bottom Line Impact </u></strong></p> <p style="text-align:justify;">Wherever they sit in the organization, CIOs are responsible for making sure that IT is agile, cost effective, and delivers services that are responsive to business changes.  To deliver this, IT needs to <strong>provide a unified view of its value to the business determined through a rigorous, disciplined, and transparent process – ITFM</strong> &#8211; governed through the offices of the CFO and CIO.  IT executives frequently have difficulty explaining IT budget variances, exacerbated by heavy reliance on Excel for financial accountability and an inability to perform quality TCO analysis more than once a year.</p> <p style="text-align:justify;">For the good of your organization, it&#8217;s imperative that the CIO and the CFO speak the same shared language of value and move forward, aligned and focused on maximizing returns on technology investment strategies.  <strong>Speaking a shared language — one based on a unified financial model view and founded on a shared definition of value — is key to finding a solution.</strong> The discipline of ITFM is about equipping both of these executive-level offices and their teams with this better language.</p> <p style="text-align:justify;">A unified financial model is only as useful as the conversations it enables and the problems it allows decision makers to solve.   Applying over 21 years of experience with leading costing and planning implementations, <strong>Edgewater Ranzal designed a custom ITFM framework, constructed through Oracle application templates now owned by Oracle</strong>. This Oracle ITFM solution leverages the lessons learned from the wisdom of numerous customers and serves as a guide for future clients to build their ITFM solutions.  As templates deployed on widely embraced enterprise financial applications &#8211; Oracle Profitability and Cost Management (PCMCS) and Enterprise Planning and Budgeting (EPBCS) &#8211; <strong>Oracle ITFM is prescriptive, pre-configured, and fine-tuned to handle both financial performance management and IT-specific logic.</strong> Inherently, your organization gets a jumpstart to a modern defined service catalogue, data management approaches, and <strong>a cost and planning model framework that follows leading practices for IT finance and corporate finance</strong>.</p> <p style="text-align:justify;">Recognizing that every business is unique in some ways, the base solution is <strong>easily adapted to meet any organization’s IT financial management needs.</strong> With a set of 15 pre-built reporting and analytics capabilities, the Oracle ITFM solution empowers companies to bring innovation to the business without disrupting business flow.  The templates are <strong>free</strong>, providing an estimated savings of 650 consulting hours for design, build, and testing, and <strong>a cost savings of $125k to $150k</strong>. We have fixed scope offerings to <strong>implement our ITFM solution in about 7 weeks.</strong></p> <p style="text-align:justify;">An ITFM solution can:<img data-attachment-id="1937" data-permalink="https://ranzal.wordpress.com/2018/02/07/an-itfm-solution-will-boost-your-bottom-line-impact/boost/" data-orig-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg" data-orig-size="351,246" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="boost" data-image-description="" data-medium-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=300" data-large-file="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=351" class="alignright wp-image-1937" src="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=184&#038;h=129" alt="boost" width="184" height="129" srcset="https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=184&amp;h=129 184w, https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=150&amp;h=105 150w, https://ranzal.files.wordpress.com/2018/02/boost.jpg?w=300&amp;h=210 300w, https://ranzal.files.wordpress.com/2018/02/boost.jpg 351w" sizes="(max-width: 184px) 100vw, 184px" /></p> <ul> <li style="text-align:left;">Provide transparency to IT service charges</li> <li style="text-align:left;">Align IT projects with strategic priorities</li> <li style="text-align:left;">Allow IT spend analysis: run vs. grow vs. transform</li> <li style="text-align:left;">Help IT build credibility with the business proactively</li> </ul> <p>Leveraging the included set of allocation rules and data source dimensions not only diminishes the effort needed to implement, but also creates alignment with the industry for internal and external benchmarking activities. This <strong>alignment promotes a culture of accountability and collaboration with the business</strong>, resulting in better IT investment decisions.</p> <p style="text-align:justify;"><strong>So why continue struggling in the dark or spending hours in Excel? Let us shed some light on your opportunities. </strong></p> <p><a href="mailto:%20%20itfm@ranzal.com?subject=I'm%20Interested%20in%20a%20Complimentary%20ITFM%20Health%20Check" target="_blank" rel="noopener">Contact us today for a Complimentary “30 Minute ITFM Health Check”</a></p> <p style="text-align:justify;"><a href="http://www.ranzal.com/Documents/Ranzal%20SS%202017%20-%20ITFM.pdf" target="_blank" rel="noopener">Edgewater Ranzal&#8217;s ITFM Solution</a></p> <p>This blog post was written in collaboration with our <span style="font-family:Arial;">trusted CIO advisor, </span><a href="http://info.edgewater.com/e1t/c/%2aN2fR_Xn2j5hmW5r7MN7352X6n0/%2aN6DGpcw9mPv4W7HzSr05CpP2d0/5/f18dQhb0SmhS8XJ8dWW75VxFp6ghkRDVWs4R056t3dvW5r8vy28yym6RW1lb7dX8tBfc9W8tBZF75wL96LW1sL3M03MybvyMfN1lkZvG6bW8DCt_G1qN9d6VZw0LJ61mzVSVV87L24KHSs3W5x5KNk7-XB_5W67h1CP8r5GVdW2GRw4Y3HtrQnW2K4Q685w97ypW5mg0gg3YnMJkW2_1rp53ZQ23FW8vr5Ss62VzXgN8nF6Y6Dqm2yW3SlyVc8pFtl9MMFSsgM8NKwVZY8gK8FT62_N5kdGmXNCg4gW8BxFzW5BFRHvN34t9YtM8xbbVRg31N8hK090W35xCxz5lLYdYW3gKJGP3z2RSYN8lwJVsLCBDhW5n8rhJ228cJgW53NYtc4PLwTVW7pKXv81BcZlDW1V36qf1tjxNHN1QLl_hmLW2JW4r5l5j9kw6jdW81QKv597WR-9W6TlVjF4G0Jw0W99RBfM28RQcVW4w-8vn5V9WFRW3f5_rb7hyd0yf22w0H004?__hstc=43033274.ed1fb416f851444d89cb906f5cc9fc5e.1499980059311.1518790190332.1519141818511.318&amp;__hssc=43033274.6.1519141818511&amp;__hsfp=636162644">Thavron Solutions</a>.</p> michaeljkilleen http://ranzal.wordpress.com/?p=1936 Wed Feb 07 2018 11:09:34 GMT-0500 (EST) ODTUG February News https://www.odtug.com/p/bl/et/blogaid=767&source=1 The ODTUG February News features the WIT Scholar Application, ODTUG Kscope18 updates, ODTUG community news, upcoming Meetups, upcoming ODTUG webinars, Oracle Cloud Customer Connect webinars and information, and more! ODTUG https://www.odtug.com/p/bl/et/blogaid=767&source=1 Wed Feb 07 2018 10:49:05 GMT-0500 (EST) ODTUG February News @odtug @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=767&source=1 The ODTUG February News features the WIT Scholar Application, ODTUG Kscope18 updates, ODTUG community news, upcoming Meetups, upcoming ODTUG webinars, Oracle Cloud Customer Connect webinars and information, and more! ODTUG https://www.odtug.com/p/bl/et/blogaid=767&source=1 Wed Feb 07 2018 10:49:05 GMT-0500 (EST) Women in Technology Scholar - Now Accepting Applications https://www.odtug.com/p/bl/et/blogaid=766&source=1 ODTUG is pleased to announce the fourth annual ODTUG Women in Technology Scholarship program. The scholarship recipient will be awarded a complimentary pass to ODTUG Kscope18. ODTUG https://www.odtug.com/p/bl/et/blogaid=766&source=1 Wed Feb 07 2018 10:37:29 GMT-0500 (EST) Women in Technology Scholar - Now Accepting Applications @odtug @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=766&source=1 ODTUG is pleased to announce the fourth annual ODTUG Women in Technology Scholarship program. The scholarship recipient will be awarded a complimentary pass to ODTUG Kscope18. ODTUG https://www.odtug.com/p/bl/et/blogaid=766&source=1 Wed Feb 07 2018 10:37:29 GMT-0500 (EST) Women in Technology Scholar - Now Accepting Applications @odtug https://kscope18.odtug.com/p/bl/et/blogaid=766&source=1 ODTUG is pleased to announce the fourth annual ODTUG Women in Technology Scholarship program. The scholarship recipient will be awarded a complimentary pass to ODTUG Kscope18. ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=766&source=1 Wed Feb 07 2018 10:37:29 GMT-0500 (EST) Women in Technology Scholar - Now Accepting Applications https://kscope18.odtug.com/p/bl/et/blogaid=766&source=1 ODTUG is pleased to announce the fourth annual ODTUG Women in Technology Scholarship program. The scholarship recipient will be awarded a complimentary pass to ODTUG Kscope18. ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=766&source=1 Wed Feb 07 2018 10:37:29 GMT-0500 (EST) PBCS and EPBCS Updates (February 2018): New Rules Usage Report, Expanded Simplified Audit, Removal of Support & More https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Fotolia_130347409_Subscription_Monthly_M.jpg?t=1519157959954" alt="Fotolia_130347409_Subscription_Monthly_M" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The February updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2018-february-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates Tue Feb 06 2018 15:03:38 GMT-0500 (EST) PBCS and EPBCS Updates (February 2018): New Rules Usage Report, Expanded Simplified Audit, Removal of Support & More @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Fotolia_130347409_Subscription_Monthly_M.jpg?t=1519145275316" alt="Fotolia_130347409_Subscription_Monthly_M" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The February updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2018-february-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-february-updates Tue Feb 06 2018 15:03:38 GMT-0500 (EST) FCCS Updates (February 2018): Support for Auto-Reversing Journals, Enabling Balance Calculation, Considerations & More https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Fotolia_187303978_Subscription_Monthly_M.jpg?t=1519157959954" alt="Fotolia_187303978_Subscription_Monthly_M" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The latest updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines multiple new features, fixed defects, and considerations.</p> <p><em>The monthly update for FCCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018 Tue Feb 06 2018 12:43:25 GMT-0500 (EST) FCCS Updates (February 2018): Support for Auto-Reversing Journals, Enabling Balance Calculation, Considerations & More @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/Fotolia_187303978_Subscription_Monthly_M.jpg?t=1519145275316" alt="Fotolia_187303978_Subscription_Monthly_M" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The latest updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines multiple new features, fixed defects, and considerations.</p> <p><em>The monthly update for FCCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-february-2018 Tue Feb 06 2018 12:43:25 GMT-0500 (EST) EPRCS Updates (February 2018): Drill to Content, Saved Member Selections in Management Reports, Considerations & More https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/epbrcs%20february%202018%20update.jpg?t=1519157959954" alt="epbrcs february 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>In this blog, we'll cover the February updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud">Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</a>&nbsp;including new features and considerations.&nbsp;</p> <p><em>The monthly update for EPRCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Feprcs-updates-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018 Tue Feb 06 2018 11:38:47 GMT-0500 (EST) EPRCS Updates (February 2018): Drill to Content, Saved Member Selections in Management Reports, Considerations & More @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/epbrcs%20february%202018%20update.jpg?t=1519145275316" alt="epbrcs february 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>In this blog, we'll cover the February updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/enterprise-performance-reporting-cloud">Oracle Enterprise Performance Reporting Cloud Service (EPRCS)</a>&nbsp;including new features and considerations.&nbsp;</p> <p><em>The monthly update for EPRCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Feprcs-updates-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/eprcs-updates-february-2018 Tue Feb 06 2018 11:38:47 GMT-0500 (EST) ARCS Updates (February 2018): Deleting Transactions, Archive, Purge, Restore Reconciliations, and More https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/arcs%20february%202018%20update.jpg?t=1519157959954" alt="arcs february 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The February updates for Oracle's&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) have arrived. In this blog post, we’ll outline new features in reconciliation compliance, transaction matching, fixed defects, and more.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018 Tue Feb 06 2018 11:03:54 GMT-0500 (EST) ARCS Updates (February 2018): Deleting Transactions, Archive, Purge, Restore Reconciliations, and More @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/arcs%20february%202018%20update.jpg?t=1519145275316" alt="arcs february 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The February updates for Oracle's&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) have arrived. In this blog post, we’ll outline new features in reconciliation compliance, transaction matching, fixed defects, and more.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, February 16 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-february-2018&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-february-2018 Tue Feb 06 2018 11:03:54 GMT-0500 (EST) February Webinars https://www.odtug.com/p/bl/et/blogaid=765&source=1 Is there a topic you would like covered but do not see here? We are happy to take webinar suggestions. Email us at kgately@odtug.com. Did you miss a webinar? As an ODTUG member you can view all of our past webinars at any time. ODTUG https://www.odtug.com/p/bl/et/blogaid=765&source=1 Mon Feb 05 2018 17:08:23 GMT-0500 (EST) February Webinars @odtug @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=765&source=1 Is there a topic you would like covered but do not see here? We are happy to take webinar suggestions. Email us at kgately@odtug.com. Did you miss a webinar? As an ODTUG member you can view all of our past webinars at any time. ODTUG https://www.odtug.com/p/bl/et/blogaid=765&source=1 Mon Feb 05 2018 17:08:23 GMT-0500 (EST) Special Event Announcement https://www.odtug.com/p/bl/et/blogaid=764&source=1 On Wednesday, June 13, 2018, join us for the ODTUG Kscope18 Special Event at Andretti Indoor Karting & Games in Orlando, Florida! ODTUG https://www.odtug.com/p/bl/et/blogaid=764&source=1 Mon Feb 05 2018 17:04:50 GMT-0500 (EST) Special Event Announcement @odtug @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=764&source=1 On Wednesday, June 13, 2018, join us for the ODTUG Kscope18 Special Event at Andretti Indoor Karting & Games in Orlando, Florida! ODTUG https://www.odtug.com/p/bl/et/blogaid=764&source=1 Mon Feb 05 2018 17:04:50 GMT-0500 (EST) Special Event Announcement @odtug https://kscope18.odtug.com/p/bl/et/blogaid=764&source=1 On Wednesday, June 13, 2018, join us for the ODTUG Kscope18 Special Event at Andretti Indoor Karting & Games in Orlando, Florida! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=764&source=1 Mon Feb 05 2018 17:04:50 GMT-0500 (EST) Special Event Announcement https://kscope18.odtug.com/p/bl/et/blogaid=764&source=1 On Wednesday, June 13, 2018, join us for the ODTUG Kscope18 Special Event at Andretti Indoor Karting & Games in Orlando, Florida! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=764&source=1 Mon Feb 05 2018 17:04:50 GMT-0500 (EST) ODTUG Kscope18 5K Fun Run Announcement https://www.odtug.com/p/bl/et/blogaid=763&source=1 Happy New Year! Stay true to your New Year's fitness resolution and have more FUN at ODTUG Kscope18 this year by participating in the 5K Fun Run! ODTUG https://www.odtug.com/p/bl/et/blogaid=763&source=1 Mon Feb 05 2018 17:00:35 GMT-0500 (EST) ODTUG Kscope18 5K Fun Run Announcement @odtug @orclEPMblogs https://www.odtug.com/p/bl/et/blogaid=763&source=1 Happy New Year! Stay true to your New Year's fitness resolution and have more FUN at ODTUG Kscope18 this year by participating in the 5K Fun Run! ODTUG https://www.odtug.com/p/bl/et/blogaid=763&source=1 Mon Feb 05 2018 17:00:35 GMT-0500 (EST) ODTUG Kscope18 5K Fun Run Announcement @odtug https://kscope18.odtug.com/p/bl/et/blogaid=763&source=1 Happy New Year! Stay true to your New Year's fitness resolution and have more FUN at ODTUG Kscope18 this year by participating in the 5K Fun Run! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=763&source=1 Mon Feb 05 2018 17:00:35 GMT-0500 (EST) ODTUG Kscope18 5K Fun Run Announcement https://kscope18.odtug.com/p/bl/et/blogaid=763&source=1 Happy New Year! Stay true to your New Year's fitness resolution and have more FUN at ODTUG Kscope18 this year by participating in the 5K Fun Run! ODTUG https://kscope18.odtug.com/p/bl/et/blogaid=763&source=1 Mon Feb 05 2018 17:00:35 GMT-0500 (EST) ODTUG January News https://www.odtug.com/p/bl/et/blogaid=762&source=1 ODTUG's January news includes the announcement of the 2018 - 2019 Executive Committee, ODTUG Kscope18 updates, Oracle Cloud Connect upcoming webinars, ODTUG's community news, and upcoming ODTUG webinars. ODTUG https://www.odtug.com/p/bl/et/blogaid=762&source=1 Mon Feb 05 2018 16:55:23 GMT-0500 (EST) ODTUG January News @odtug https://www.odtug.com/p/bl/et/blogaid=762&source=1 ODTUG's January news includes the announcement of the 2018 - 2019 Executive Committee, ODTUG Kscope18 updates, Oracle Cloud Connect upcoming webinars, ODTUG's community news, and upcoming ODTUG webinars. ODTUG https://www.odtug.com/p/bl/et/blogaid=762&source=1 Mon Feb 05 2018 16:55:23 GMT-0500 (EST) PBCS Scripting with Groovy using the PBJ REST API Library http://www.jasonwjones.com/2018/02/pbcs-scripting-with-groovy-using-the-pbj-rest-api-library/ I was talking to a colleague the other day that wants to do some scripting with PBCS using Groovy. Of course, since PBCS has a REST API, we can do scripting with pretty much any modern language. There are even some excellent examples of scripting with PBCS using Groovy out there. However, since Groovy runs [&#8230;] jason http://www.jasonwjones.com/?p=2070 Mon Feb 05 2018 13:15:17 GMT-0500 (EST) PBCS Scripting with Groovy using the PBJ REST API Library @jwj @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://www.jasonwjones.com/2018/02/pbcs-scripting-with-groovy-using-the-pbj-rest-api-library/ I was talking to a colleague the other day that wants to do some scripting with PBCS using Groovy. Of course, since PBCS has a REST API, we can do scripting with pretty much any modern language. There are even some excellent examples of scripting with PBCS using Groovy out there. However, since Groovy runs [&#8230;] jason http://www.jasonwjones.com/?p=2070 Mon Feb 05 2018 13:15:17 GMT-0500 (EST) Essbase: The Cloud vs. On-Prem https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/social-suggested-images/the%20cloud%20vs%20on-prem%20webinar%20header_skinny_smaller%20text-2.png?t=1519157959954" alt="the cloud vs on-prem webinar header_skinny_smaller text-2" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Finance and budgeting teams have long been fans of Essbase — being able to store aggregated values gives users the flexibility to efficiently report and run scenarios. So, when we talk about Essbase, Hyperion Planning is often part of the conversation, too.</p> <p>But, is <strong><a href="https://www.us-analytics.com/hyperionblog/faq-oracle-essbase-cloud">Essbase in the cloud</a></strong> going to change the way we talk about and consider Essbase? In this blog post, we’ll look at some of the major differences between on-prem and cloud-based Essbase, and how having this tool in the cloud can help your organization in ways you may not have considered yet.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fessbase-the-cloud-vs-on-prem&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem Fri Feb 02 2018 10:53:52 GMT-0500 (EST) Essbase: The Cloud vs. On-Prem @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/social-suggested-images/the%20cloud%20vs%20on-prem%20webinar%20header_skinny_smaller%20text-2.png?t=1519081328426" alt="the cloud vs on-prem webinar header_skinny_smaller text-2" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Finance and budgeting teams have long been fans of Essbase — being able to store aggregated values gives users the flexibility to efficiently report and run scenarios. So, when we talk about Essbase, Hyperion Planning is often part of the conversation, too.</p> <p>But, is <strong><a href="https://www.us-analytics.com/hyperionblog/faq-oracle-essbase-cloud">Essbase in the cloud</a></strong> going to change the way we talk about and consider Essbase? In this blog post, we’ll look at some of the major differences between on-prem and cloud-based Essbase, and how having this tool in the cloud can help your organization in ways you may not have considered yet.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fessbase-the-cloud-vs-on-prem&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/essbase-the-cloud-vs-on-prem Fri Feb 02 2018 10:53:52 GMT-0500 (EST) Journal Description Limit in FCCS @SummerWatson75 https://epmsxsw.com/2018/02/01/journal-description-limit-in-fccs/ <p>I was asked today what the limit was for journal descriptions in FCCS.  I searched and could only find the 255 limit for HFM.  I reached out to our very smart group of co-workers, and come to find out, it is also <strong>255 for FCCS</strong>!  So there you go! Now it&#8217;s out there for all to find in goog-land.</p> <p>~Sum</p> Summer Watson http://epmsxsw.com/?p=354 Thu Feb 01 2018 18:03:25 GMT-0500 (EST) Journal Description Limit in FCCS https://epmsxsw.com/2018/02/01/journal-description-limit-in-fccs/ <p>I was asked today what the limit was for journal descriptions in FCCS.  I searched and could only find the 255 limit for HFM.  I reached out to our very smart group of co-workers, and come to find out, it is also <strong>255 for FCCS</strong>!  So there you go! Now it&#8217;s out there for all to find in goog-land.</p> <p>~Sum</p> Summer Watson http://epmsxsw.com/?p=354 Thu Feb 01 2018 18:03:25 GMT-0500 (EST) Essbase Cloud and Data Visualization http://epmsimplified.blogspot.com/2018/01/essbase-cloud-and-data-visualization.html <div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8Wh36Ct_EfE/WnGPUlYcYVI/AAAAAAAAOdM/dTpuolOgxnEtl0Qkb8BEL90KyhGyAquRwCLcBGAs/s1600/OAC.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="235" data-original-width="520" height="144" src="https://1.bp.blogspot.com/-8Wh36Ct_EfE/WnGPUlYcYVI/AAAAAAAAOdM/dTpuolOgxnEtl0Qkb8BEL90KyhGyAquRwCLcBGAs/s320/OAC.PNG" width="320" /></a></div><br /><br />I want to show how easy it is to create dashboards with Oracle Analytic Cloud Data Visualization and with Essbase Cloud as data source.<br /><br />First I will create a new Essbase application from the scratch (manually).<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-DfrK31xJBAM/WnBFjKXD0AI/AAAAAAAAOYU/1KiUgDNtQAIhXimCWB5UclL1QMDhFp4_ACLcBGAs/s1600/1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="721" data-original-width="1600" height="288" src="https://3.bp.blogspot.com/-DfrK31xJBAM/WnBFjKXD0AI/AAAAAAAAOYU/1KiUgDNtQAIhXimCWB5UclL1QMDhFp4_ACLcBGAs/s640/1.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><br /><br /><br />My skeleton application<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3hlbUS5A-8c/WnBFjH3JmtI/AAAAAAAAOYY/gn1K8CAU51E-xY68BtrobQa1Fd1zQMAEQCEwYBhgL/s1600/2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="668" data-original-width="1600" height="266" src="https://3.bp.blogspot.com/-3hlbUS5A-8c/WnBFjH3JmtI/AAAAAAAAOYY/gn1K8CAU51E-xY68BtrobQa1Fd1zQMAEQCEwYBhgL/s640/2.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />And now I'll create a very simple outline so I can load some data in the cube.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-zHhXmxItEIQ/WnBDCkRGdaI/AAAAAAAAOX8/kKdJRNLmzF04HsjEkCVAC4PIPBb_BgF7QCEwYBhgL/s1600/3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="509" data-original-width="952" height="339" src="https://3.bp.blogspot.com/-zHhXmxItEIQ/WnBDCkRGdaI/AAAAAAAAOX8/kKdJRNLmzF04HsjEkCVAC4PIPBb_BgF7QCEwYBhgL/s640/3.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />It's&nbsp; very easy to do this (almost as easy as the old days), simply click on "Lock and Edit" and start creating Dimensions/Members. So here is my application's outline.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PEx4ABoNx3k/WnBDDGN0QpI/AAAAAAAAOYM/xmRiGow9RP09USNq3HBOcTDPUy2hCEpAACEwYBhgL/s1600/4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="602" data-original-width="1326" height="290" src="https://1.bp.blogspot.com/-PEx4ABoNx3k/WnBDDGN0QpI/AAAAAAAAOYM/xmRiGow9RP09USNq3HBOcTDPUy2hCEpAACEwYBhgL/s640/4.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />I created five dimensions (Account, Scenario, Years, Version, and Country) with one or two members in each.<br /><br />Now I'll connect to the cube from SmartView (Essbase Cloud connection).<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-b0huFbJtS5U/WnBDDm_fAaI/AAAAAAAAOYM/rtFlbi8iw8YXzHBVm5m7AGfXw7hwImBaACEwYBhgL/s1600/5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="882" data-original-width="1478" height="236" src="https://1.bp.blogspot.com/-b0huFbJtS5U/WnBDDm_fAaI/AAAAAAAAOYM/rtFlbi8iw8YXzHBVm5m7AGfXw7hwImBaACEwYBhgL/s400/5.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Select the application and database (just like connecting to on-premise Essbase application)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0JEfEWoHdsw/WnBDDqeHqSI/AAAAAAAAOYE/85Xb4dU8E2IpP1vW3XtM-B_UHfpLVYYDACEwYBhgL/s1600/6.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="427" data-original-width="715" height="237" src="https://1.bp.blogspot.com/-0JEfEWoHdsw/WnBDDqeHqSI/AAAAAAAAOYE/85Xb4dU8E2IpP1vW3XtM-B_UHfpLVYYDACEwYBhgL/s400/6.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Locking/Sending some data.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-LtxZfcEbEQg/WnBDEWXw74I/AAAAAAAAOYM/WNcrAOb9q4o7i0-kLYpjfPd6-uls2XYagCEwYBhgL/s1600/7.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1600" height="244" src="https://3.bp.blogspot.com/-LtxZfcEbEQg/WnBDEWXw74I/AAAAAAAAOYM/WNcrAOb9q4o7i0-kLYpjfPd6-uls2XYagCEwYBhgL/s640/7.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br /><br />Now I have created a simple application with some data, I want to see how easy it is to use Data Visualization and access my Essbase cube. This is the OAC landing page.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-aHwxCz_ceKw/WnBDEzTFICI/AAAAAAAAOYM/asH3wJCw14Y3P3MLZyilNqDmMdNcqTihACEwYBhgL/s1600/8.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="877" data-original-width="1261" height="441" src="https://2.bp.blogspot.com/-aHwxCz_ceKw/WnBDEzTFICI/AAAAAAAAOYM/asH3wJCw14Y3P3MLZyilNqDmMdNcqTihACEwYBhgL/s640/8.PNG" width="640" /></a></div><br /><br />Before I start working on the report I want to create my data source (<u><b>it's similar&nbsp;to Tableau but in my humble opinion a lot easier to work with and more intuitive</b></u>). So I'll start by clicking on Data Sources.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-Xhof0bDRNzY/WnBDEx0hINI/AAAAAAAAOYI/sGKbotc2f2whdAy2U4GW6s55KJduHFFqQCEwYBhgL/s1600/9.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="112" height="166" src="https://4.bp.blogspot.com/-Xhof0bDRNzY/WnBDEx0hINI/AAAAAAAAOYI/sGKbotc2f2whdAy2U4GW6s55KJduHFFqQCEwYBhgL/s200/9.PNG" width="200" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">And create New EssCS Data Source.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Yc2hhLcGq3c/WnBJ-rwitEI/AAAAAAAAOYo/7Gp8NdYncfM7Te4Mw4nUlznJZOSKOAejwCLcBGAs/s1600/10.1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="816" data-original-width="1288" height="404" src="https://1.bp.blogspot.com/-Yc2hhLcGq3c/WnBJ-rwitEI/AAAAAAAAOYo/7Gp8NdYncfM7Te4Mw4nUlznJZOSKOAejwCLcBGAs/s640/10.1.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br /><br />And select the Essbase application and database you want to connect to.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-WCrwUsv9aDo/WnBKQF3C4UI/AAAAAAAAOYs/Ni2GfHtFYLIvY6jjKCr2uOaCog0gE2sEgCLcBGAs/s1600/10.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="851" data-original-width="1011" height="268" src="https://1.bp.blogspot.com/-WCrwUsv9aDo/WnBKQF3C4UI/AAAAAAAAOYs/Ni2GfHtFYLIvY6jjKCr2uOaCog0gE2sEgCLcBGAs/s320/10.PNG" width="320" /></a></div><br /><br />And the connection is now ready and accessible via the Databases tab.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-FBG53oQmBJ4/WnEyCqmuyfI/AAAAAAAAOc8/OOl0MHPBgmQY8uQ0sERcLAwjBOasu_8SACLcBGAs/s1600/11.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="725" data-original-width="1528" height="302" src="https://4.bp.blogspot.com/-FBG53oQmBJ4/WnEyCqmuyfI/AAAAAAAAOc8/OOl0MHPBgmQY8uQ0sERcLAwjBOasu_8SACLcBGAs/s640/11.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;">Now we have the connection ready, let's create the report. From the newly created Database connection, I'll create a new project. (Create Project will create Data Visualization report and Create Analysis will create Oracle BI Answers report).</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0t_5c7KKobA/WnEF_HcdErI/AAAAAAAAObs/Jj4mxiKtu1o0h6P3_QW9uliOAtsT4gd1ACLcBGAs/s1600/12.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="409" data-original-width="401" height="320" src="https://2.bp.blogspot.com/-0t_5c7KKobA/WnEF_HcdErI/AAAAAAAAObs/Jj4mxiKtu1o0h6P3_QW9uliOAtsT4gd1ACLcBGAs/s320/12.PNG" width="313" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><b><u>Creating new Project will land you in Data Visualization.</u></b></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-6ZJlJUnMmlQ/WnD8MQJM5kI/AAAAAAAAOaM/t5T0W9pswnQHc7gN5BOZTStXVtvqyKDpACLcBGAs/s1600/13.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1561" height="392" src="https://4.bp.blogspot.com/-6ZJlJUnMmlQ/WnD8MQJM5kI/AAAAAAAAOaM/t5T0W9pswnQHc7gN5BOZTStXVtvqyKDpACLcBGAs/s640/13.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><b><u>Creating new Analysis will land you in Oracle BI Answers.</u></b></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-d78qNlAbC8A/WnD8MZCzc2I/AAAAAAAAOaQ/4AlYHB8jx_I3TzUff1864NMHZ8cqqbeYgCEwYBhgL/s1600/14.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="973" data-original-width="1570" height="396" src="https://2.bp.blogspot.com/-d78qNlAbC8A/WnD8MZCzc2I/AAAAAAAAOaQ/4AlYHB8jx_I3TzUff1864NMHZ8cqqbeYgCEwYBhgL/s640/14.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br />Back to Data Visualization, on the left side you can see the Essbase model and it's ready to be used in the report. Yeah it's so easy!.<br /><br />So here is my Essbase model, you can see the two measures (Account members) I created.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0uCJhTXmNJs/WnD8NesuBgI/AAAAAAAAObc/AUUDGQO1AX0mBcjD7qvGpFCggoy3WqXyQCEwYBhgL/s1600/16.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="202" data-original-width="186" src="https://2.bp.blogspot.com/-0uCJhTXmNJs/WnD8NesuBgI/AAAAAAAAObc/AUUDGQO1AX0mBcjD7qvGpFCggoy3WqXyQCEwYBhgL/s1600/16.PNG" /></a></div><br /><br />What if you want to add calculated measures? Well it is very easy, right click on "My Calculations" and Add Calculation.<br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-IoR4_Gu6kyQ/WnD8NWVt24I/AAAAAAAAObg/KX4H3HJ2ve8HJv3lOIgvUs6VpoxRJhmowCEwYBhgL/s1600/17.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="252" src="https://2.bp.blogspot.com/-IoR4_Gu6kyQ/WnD8NWVt24I/AAAAAAAAObg/KX4H3HJ2ve8HJv3lOIgvUs6VpoxRJhmowCEwYBhgL/s1600/17.PNG" /></a></div><br />I want to calculate Expense because it's no available in my model,&nbsp; I will simply drag/drop Total Revenue. drag/drop the minus operator, and drag/drop Net Profit<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-2Lxp9R6bjKU/WnD8NibmzzI/AAAAAAAAObY/HtF8nfWv9bIn5CDLtubuFuIJLE4eVGz2wCEwYBhgL/s1600/18.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="692" data-original-width="1282" height="344" src="https://1.bp.blogspot.com/-2Lxp9R6bjKU/WnD8NibmzzI/AAAAAAAAObY/HtF8nfWv9bIn5CDLtubuFuIJLE4eVGz2wCEwYBhgL/s640/18.PNG" width="640" /></a></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-up46kobTdDI/WnD8Oc8PP5I/AAAAAAAAObY/aHWste9jCSAHVd2wT17LkIAsi_49fWCoACEwYBhgL/s1600/19.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="408" data-original-width="649" height="251" src="https://3.bp.blogspot.com/-up46kobTdDI/WnD8Oc8PP5I/AAAAAAAAObY/aHWste9jCSAHVd2wT17LkIAsi_49fWCoACEwYBhgL/s400/19.PNG" width="400" /></a></div><br /><br />After saving the calculation it will show up in the model and that's it.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-BSEV2aKq92A/WnD8OYp2U0I/AAAAAAAAObY/PHq9SsPWJSo_I48GC_YxzQD_4KwFMMLdgCEwYBhgL/s1600/20.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="214" data-original-width="158" src="https://2.bp.blogspot.com/-BSEV2aKq92A/WnD8OYp2U0I/AAAAAAAAObY/PHq9SsPWJSo_I48GC_YxzQD_4KwFMMLdgCEwYBhgL/s1600/20.PNG" /></a></div><br /><br /><br />You can start building your report by selecting the measures you want to report on, the dimensions, and the filters you want to apply by simple drag and drop movements. You can create multiple canvases, add narrative data, change the visualization type (Bar, Pie,.....). So here is the data I entered in SmartView in tabular format.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-7it_EcTOMfM/WnEurkkPKtI/AAAAAAAAOcA/YgzuT0q298k70Gubc0jo-bz07c0ATrIeQCLcBGAs/s1600/21.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="695" data-original-width="1568" height="282" src="https://1.bp.blogspot.com/-7it_EcTOMfM/WnEurkkPKtI/AAAAAAAAOcA/YgzuT0q298k70Gubc0jo-bz07c0ATrIeQCLcBGAs/s640/21.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Here are my measures.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-cV730pBeZ6M/WnEurdO76vI/AAAAAAAAOc0/Vsgq4zGDNEQ4lLNvgCoz2XflNHAgIiopACEwYBhgL/s1600/22.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="424" data-original-width="192" height="320" src="https://4.bp.blogspot.com/-cV730pBeZ6M/WnEurdO76vI/AAAAAAAAOc0/Vsgq4zGDNEQ4lLNvgCoz2XflNHAgIiopACEwYBhgL/s320/22.PNG" width="144" /></a></div><br /><br />I can color-highlight the best performing country for any measure by placing the measure in "Color" section, so here I want to highlight the country with the best Net profit margins.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-cATbYjHVgTM/WnEurrU81cI/AAAAAAAAOck/CmH21KyUZek1nNKu2YMh0sGw3J97FRdoACEwYBhgL/s1600/23.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="1148" height="306" src="https://1.bp.blogspot.com/-cATbYjHVgTM/WnEurrU81cI/AAAAAAAAOck/CmH21KyUZek1nNKu2YMh0sGw3J97FRdoACEwYBhgL/s640/23.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Or I can change the font size of the country with the biggest Expenses.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-VUjbJ_I85A4/WnEusmkYtoI/AAAAAAAAOco/VOBszLHSd_EucAeqk8l011HcIO8L-6sxQCEwYBhgL/s1600/24.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="881" data-original-width="1171" height="480" src="https://2.bp.blogspot.com/-VUjbJ_I85A4/WnEusmkYtoI/AAAAAAAAOco/VOBszLHSd_EucAeqk8l011HcIO8L-6sxQCEwYBhgL/s640/24.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />You can easily change the visualization of the data in one click.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TSlJjNDfqec/WnEus7SFDtI/AAAAAAAAOc0/L5IKn-QcDw8sHISmb_VDIPZ-9dr-ui19gCEwYBhgL/s1600/25.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="598" data-original-width="308" height="320" src="https://1.bp.blogspot.com/-TSlJjNDfqec/WnEus7SFDtI/AAAAAAAAOc0/L5IKn-QcDw8sHISmb_VDIPZ-9dr-ui19gCEwYBhgL/s320/25.PNG" width="164" /></a></div><br />For example "Tag Cloud" visualization.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-xhBNAwZlCwQ/WnEutC_etyI/AAAAAAAAOcs/tflLdqpSQ4AVKflKXRq7eD4-wRzxRoxjgCEwYBhgL/s1600/26.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="845" data-original-width="1510" height="358" src="https://1.bp.blogspot.com/-xhBNAwZlCwQ/WnEutC_etyI/AAAAAAAAOcs/tflLdqpSQ4AVKflKXRq7eD4-wRzxRoxjgCEwYBhgL/s640/26.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />"Pie" visualization.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-7rLeY6IGfnQ/WnEutl883sI/AAAAAAAAOcs/eSN_-wNfFn4-0-rweblpxmoF8m8eIJQNwCEwYBhgL/s1600/27.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="875" data-original-width="1286" height="434" src="https://4.bp.blogspot.com/-7rLeY6IGfnQ/WnEutl883sI/AAAAAAAAOcs/eSN_-wNfFn4-0-rweblpxmoF8m8eIJQNwCEwYBhgL/s640/27.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Want more colors? Piece of cake.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-XuRuzpvboyU/WnEut2l1_GI/AAAAAAAAOcs/u0Sg-_2doZ4mTy2TVDqM46YzTZ76EPN8ACEwYBhgL/s1600/28.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="951" data-original-width="1569" height="386" src="https://3.bp.blogspot.com/-XuRuzpvboyU/WnEut2l1_GI/AAAAAAAAOcs/u0Sg-_2doZ4mTy2TVDqM46YzTZ76EPN8ACEwYBhgL/s640/28.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">So you can put together the data you want and visualize anyway you want, add narrative data, and present it in a nice way.</div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-GEFzjJB-JBY/WnEuuYd2tsI/AAAAAAAAOc0/6dJPC7bkqfYCsAu1rUOLy7Th97Qq98rCwCEwYBhgL/s1600/30.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="864" data-original-width="1455" height="380" src="https://3.bp.blogspot.com/-GEFzjJB-JBY/WnEuuYd2tsI/AAAAAAAAOc0/6dJPC7bkqfYCsAu1rUOLy7Th97Qq98rCwCEwYBhgL/s640/30.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><span style="font-size: large;">My conclusion? Data Visualization is an awesome and super powerful tool, very easy to use and extremely smooth. You don't need to be a technical guru to build a fancy dashboard. And bear in mind I only showed a very simple report for the sake of simplicity, in reality&nbsp;you can do a lot more...and the best part? You don't need to code anything.</span><br /><span style="font-size: large;"><br /></span><span style="font-size: large;"><br /></span><span style="font-size: large;"><br /></span> Omar Shubeilat tag:blogger.com,1999:blog-2208425848541526078.post-1380145987788941383 Wed Jan 31 2018 04:21:00 GMT-0500 (EST) Essbase Cloud and Data Visualization @omarshubeilat @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://epmsimplified.blogspot.com/2018/01/essbase-cloud-and-data-visualization.html <div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-8Wh36Ct_EfE/WnGPUlYcYVI/AAAAAAAAOdM/dTpuolOgxnEtl0Qkb8BEL90KyhGyAquRwCLcBGAs/s1600/OAC.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="235" data-original-width="520" height="144" src="https://1.bp.blogspot.com/-8Wh36Ct_EfE/WnGPUlYcYVI/AAAAAAAAOdM/dTpuolOgxnEtl0Qkb8BEL90KyhGyAquRwCLcBGAs/s320/OAC.PNG" width="320" /></a></div><br /><br />I want to show how easy it is to create dashboards with Oracle Analytic Cloud Data Visualization and with Essbase Cloud as data source.<br /><br />First I will create a new Essbase application from the scratch (manually).<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-DfrK31xJBAM/WnBFjKXD0AI/AAAAAAAAOYU/1KiUgDNtQAIhXimCWB5UclL1QMDhFp4_ACLcBGAs/s1600/1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="721" data-original-width="1600" height="288" src="https://3.bp.blogspot.com/-DfrK31xJBAM/WnBFjKXD0AI/AAAAAAAAOYU/1KiUgDNtQAIhXimCWB5UclL1QMDhFp4_ACLcBGAs/s640/1.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"></div><br /><br /><br />My skeleton application<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3hlbUS5A-8c/WnBFjH3JmtI/AAAAAAAAOYY/gn1K8CAU51E-xY68BtrobQa1Fd1zQMAEQCEwYBhgL/s1600/2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="668" data-original-width="1600" height="266" src="https://3.bp.blogspot.com/-3hlbUS5A-8c/WnBFjH3JmtI/AAAAAAAAOYY/gn1K8CAU51E-xY68BtrobQa1Fd1zQMAEQCEwYBhgL/s640/2.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />And now I'll create a very simple outline so I can load some data in the cube.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-zHhXmxItEIQ/WnBDCkRGdaI/AAAAAAAAOX8/kKdJRNLmzF04HsjEkCVAC4PIPBb_BgF7QCEwYBhgL/s1600/3.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="509" data-original-width="952" height="339" src="https://3.bp.blogspot.com/-zHhXmxItEIQ/WnBDCkRGdaI/AAAAAAAAOX8/kKdJRNLmzF04HsjEkCVAC4PIPBb_BgF7QCEwYBhgL/s640/3.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />It's&nbsp; very easy to do this (almost as easy as the old days), simply click on "Lock and Edit" and start creating Dimensions/Members. So here is my application's outline.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PEx4ABoNx3k/WnBDDGN0QpI/AAAAAAAAOYM/xmRiGow9RP09USNq3HBOcTDPUy2hCEpAACEwYBhgL/s1600/4.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="602" data-original-width="1326" height="290" src="https://1.bp.blogspot.com/-PEx4ABoNx3k/WnBDDGN0QpI/AAAAAAAAOYM/xmRiGow9RP09USNq3HBOcTDPUy2hCEpAACEwYBhgL/s640/4.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />I created five dimensions (Account, Scenario, Years, Version, and Country) with one or two members in each.<br /><br />Now I'll connect to the cube from SmartView (Essbase Cloud connection).<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-b0huFbJtS5U/WnBDDm_fAaI/AAAAAAAAOYM/rtFlbi8iw8YXzHBVm5m7AGfXw7hwImBaACEwYBhgL/s1600/5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="882" data-original-width="1478" height="236" src="https://1.bp.blogspot.com/-b0huFbJtS5U/WnBDDm_fAaI/AAAAAAAAOYM/rtFlbi8iw8YXzHBVm5m7AGfXw7hwImBaACEwYBhgL/s400/5.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Select the application and database (just like connecting to on-premise Essbase application)</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-0JEfEWoHdsw/WnBDDqeHqSI/AAAAAAAAOYE/85Xb4dU8E2IpP1vW3XtM-B_UHfpLVYYDACEwYBhgL/s1600/6.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="427" data-original-width="715" height="237" src="https://1.bp.blogspot.com/-0JEfEWoHdsw/WnBDDqeHqSI/AAAAAAAAOYE/85Xb4dU8E2IpP1vW3XtM-B_UHfpLVYYDACEwYBhgL/s400/6.PNG" width="400" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Locking/Sending some data.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-LtxZfcEbEQg/WnBDEWXw74I/AAAAAAAAOYM/WNcrAOb9q4o7i0-kLYpjfPd6-uls2XYagCEwYBhgL/s1600/7.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="613" data-original-width="1600" height="244" src="https://3.bp.blogspot.com/-LtxZfcEbEQg/WnBDEWXw74I/AAAAAAAAOYM/WNcrAOb9q4o7i0-kLYpjfPd6-uls2XYagCEwYBhgL/s640/7.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br /><br />Now I have created a simple application with some data, I want to see how easy it is to use Data Visualization and access my Essbase cube. This is the OAC landing page.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-aHwxCz_ceKw/WnBDEzTFICI/AAAAAAAAOYM/asH3wJCw14Y3P3MLZyilNqDmMdNcqTihACEwYBhgL/s1600/8.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="877" data-original-width="1261" height="441" src="https://2.bp.blogspot.com/-aHwxCz_ceKw/WnBDEzTFICI/AAAAAAAAOYM/asH3wJCw14Y3P3MLZyilNqDmMdNcqTihACEwYBhgL/s640/8.PNG" width="640" /></a></div><br /><br />Before I start working on the report I want to create my data source (<u><b>it's similar&nbsp;to Tableau but in my humble opinion a lot easier to work with and more intuitive</b></u>). So I'll start by clicking on Data Sources.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-Xhof0bDRNzY/WnBDEx0hINI/AAAAAAAAOYI/sGKbotc2f2whdAy2U4GW6s55KJduHFFqQCEwYBhgL/s1600/9.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="112" height="166" src="https://4.bp.blogspot.com/-Xhof0bDRNzY/WnBDEx0hINI/AAAAAAAAOYI/sGKbotc2f2whdAy2U4GW6s55KJduHFFqQCEwYBhgL/s200/9.PNG" width="200" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">And create New EssCS Data Source.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Yc2hhLcGq3c/WnBJ-rwitEI/AAAAAAAAOYo/7Gp8NdYncfM7Te4Mw4nUlznJZOSKOAejwCLcBGAs/s1600/10.1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="816" data-original-width="1288" height="404" src="https://1.bp.blogspot.com/-Yc2hhLcGq3c/WnBJ-rwitEI/AAAAAAAAOYo/7Gp8NdYncfM7Te4Mw4nUlznJZOSKOAejwCLcBGAs/s640/10.1.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br /><br />And select the Essbase application and database you want to connect to.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-WCrwUsv9aDo/WnBKQF3C4UI/AAAAAAAAOYs/Ni2GfHtFYLIvY6jjKCr2uOaCog0gE2sEgCLcBGAs/s1600/10.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="851" data-original-width="1011" height="268" src="https://1.bp.blogspot.com/-WCrwUsv9aDo/WnBKQF3C4UI/AAAAAAAAOYs/Ni2GfHtFYLIvY6jjKCr2uOaCog0gE2sEgCLcBGAs/s320/10.PNG" width="320" /></a></div><br /><br />And the connection is now ready and accessible via the Databases tab.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-FBG53oQmBJ4/WnEyCqmuyfI/AAAAAAAAOc8/OOl0MHPBgmQY8uQ0sERcLAwjBOasu_8SACLcBGAs/s1600/11.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="725" data-original-width="1528" height="302" src="https://4.bp.blogspot.com/-FBG53oQmBJ4/WnEyCqmuyfI/AAAAAAAAOc8/OOl0MHPBgmQY8uQ0sERcLAwjBOasu_8SACLcBGAs/s640/11.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="text-align: left;">Now we have the connection ready, let's create the report. From the newly created Database connection, I'll create a new project. (Create Project will create Data Visualization report and Create Analysis will create Oracle BI Answers report).</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0t_5c7KKobA/WnEF_HcdErI/AAAAAAAAObs/Jj4mxiKtu1o0h6P3_QW9uliOAtsT4gd1ACLcBGAs/s1600/12.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="409" data-original-width="401" height="320" src="https://2.bp.blogspot.com/-0t_5c7KKobA/WnEF_HcdErI/AAAAAAAAObs/Jj4mxiKtu1o0h6P3_QW9uliOAtsT4gd1ACLcBGAs/s320/12.PNG" width="313" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><b><u>Creating new Project will land you in Data Visualization.</u></b></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-6ZJlJUnMmlQ/WnD8MQJM5kI/AAAAAAAAOaM/t5T0W9pswnQHc7gN5BOZTStXVtvqyKDpACLcBGAs/s1600/13.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="960" data-original-width="1561" height="392" src="https://4.bp.blogspot.com/-6ZJlJUnMmlQ/WnD8MQJM5kI/AAAAAAAAOaM/t5T0W9pswnQHc7gN5BOZTStXVtvqyKDpACLcBGAs/s640/13.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><b><u>Creating new Analysis will land you in Oracle BI Answers.</u></b></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-d78qNlAbC8A/WnD8MZCzc2I/AAAAAAAAOaQ/4AlYHB8jx_I3TzUff1864NMHZ8cqqbeYgCEwYBhgL/s1600/14.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="973" data-original-width="1570" height="396" src="https://2.bp.blogspot.com/-d78qNlAbC8A/WnD8MZCzc2I/AAAAAAAAOaQ/4AlYHB8jx_I3TzUff1864NMHZ8cqqbeYgCEwYBhgL/s640/14.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><br />Back to Data Visualization, on the left side you can see the Essbase model and it's ready to be used in the report. Yeah it's so easy!.<br /><br />So here is my Essbase model, you can see the two measures (Account members) I created.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0uCJhTXmNJs/WnD8NesuBgI/AAAAAAAAObc/AUUDGQO1AX0mBcjD7qvGpFCggoy3WqXyQCEwYBhgL/s1600/16.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="202" data-original-width="186" src="https://2.bp.blogspot.com/-0uCJhTXmNJs/WnD8NesuBgI/AAAAAAAAObc/AUUDGQO1AX0mBcjD7qvGpFCggoy3WqXyQCEwYBhgL/s1600/16.PNG" /></a></div><br /><br />What if you want to add calculated measures? Well it is very easy, right click on "My Calculations" and Add Calculation.<br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-IoR4_Gu6kyQ/WnD8NWVt24I/AAAAAAAAObg/KX4H3HJ2ve8HJv3lOIgvUs6VpoxRJhmowCEwYBhgL/s1600/17.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="227" data-original-width="252" src="https://2.bp.blogspot.com/-IoR4_Gu6kyQ/WnD8NWVt24I/AAAAAAAAObg/KX4H3HJ2ve8HJv3lOIgvUs6VpoxRJhmowCEwYBhgL/s1600/17.PNG" /></a></div><br />I want to calculate Expense because it's no available in my model,&nbsp; I will simply drag/drop Total Revenue. drag/drop the minus operator, and drag/drop Net Profit<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-2Lxp9R6bjKU/WnD8NibmzzI/AAAAAAAAObY/HtF8nfWv9bIn5CDLtubuFuIJLE4eVGz2wCEwYBhgL/s1600/18.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="692" data-original-width="1282" height="344" src="https://1.bp.blogspot.com/-2Lxp9R6bjKU/WnD8NibmzzI/AAAAAAAAObY/HtF8nfWv9bIn5CDLtubuFuIJLE4eVGz2wCEwYBhgL/s640/18.PNG" width="640" /></a></div><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-up46kobTdDI/WnD8Oc8PP5I/AAAAAAAAObY/aHWste9jCSAHVd2wT17LkIAsi_49fWCoACEwYBhgL/s1600/19.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="408" data-original-width="649" height="251" src="https://3.bp.blogspot.com/-up46kobTdDI/WnD8Oc8PP5I/AAAAAAAAObY/aHWste9jCSAHVd2wT17LkIAsi_49fWCoACEwYBhgL/s400/19.PNG" width="400" /></a></div><br /><br />After saving the calculation it will show up in the model and that's it.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-BSEV2aKq92A/WnD8OYp2U0I/AAAAAAAAObY/PHq9SsPWJSo_I48GC_YxzQD_4KwFMMLdgCEwYBhgL/s1600/20.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="214" data-original-width="158" src="https://2.bp.blogspot.com/-BSEV2aKq92A/WnD8OYp2U0I/AAAAAAAAObY/PHq9SsPWJSo_I48GC_YxzQD_4KwFMMLdgCEwYBhgL/s1600/20.PNG" /></a></div><br /><br /><br />You can start building your report by selecting the measures you want to report on, the dimensions, and the filters you want to apply by simple drag and drop movements. You can create multiple canvases, add narrative data, change the visualization type (Bar, Pie,.....). So here is the data I entered in SmartView in tabular format.<br /><br /><div class="separator" style="clear: both; text-align: center;"></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-7it_EcTOMfM/WnEurkkPKtI/AAAAAAAAOcA/YgzuT0q298k70Gubc0jo-bz07c0ATrIeQCLcBGAs/s1600/21.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="695" data-original-width="1568" height="282" src="https://1.bp.blogspot.com/-7it_EcTOMfM/WnEurkkPKtI/AAAAAAAAOcA/YgzuT0q298k70Gubc0jo-bz07c0ATrIeQCLcBGAs/s640/21.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Here are my measures.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-cV730pBeZ6M/WnEurdO76vI/AAAAAAAAOc0/Vsgq4zGDNEQ4lLNvgCoz2XflNHAgIiopACEwYBhgL/s1600/22.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="424" data-original-width="192" height="320" src="https://4.bp.blogspot.com/-cV730pBeZ6M/WnEurdO76vI/AAAAAAAAOc0/Vsgq4zGDNEQ4lLNvgCoz2XflNHAgIiopACEwYBhgL/s320/22.PNG" width="144" /></a></div><br /><br />I can color-highlight the best performing country for any measure by placing the measure in "Color" section, so here I want to highlight the country with the best Net profit margins.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-cATbYjHVgTM/WnEurrU81cI/AAAAAAAAOck/CmH21KyUZek1nNKu2YMh0sGw3J97FRdoACEwYBhgL/s1600/23.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="550" data-original-width="1148" height="306" src="https://1.bp.blogspot.com/-cATbYjHVgTM/WnEurrU81cI/AAAAAAAAOck/CmH21KyUZek1nNKu2YMh0sGw3J97FRdoACEwYBhgL/s640/23.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Or I can change the font size of the country with the biggest Expenses.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-VUjbJ_I85A4/WnEusmkYtoI/AAAAAAAAOco/VOBszLHSd_EucAeqk8l011HcIO8L-6sxQCEwYBhgL/s1600/24.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="881" data-original-width="1171" height="480" src="https://2.bp.blogspot.com/-VUjbJ_I85A4/WnEusmkYtoI/AAAAAAAAOco/VOBszLHSd_EucAeqk8l011HcIO8L-6sxQCEwYBhgL/s640/24.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />You can easily change the visualization of the data in one click.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TSlJjNDfqec/WnEus7SFDtI/AAAAAAAAOc0/L5IKn-QcDw8sHISmb_VDIPZ-9dr-ui19gCEwYBhgL/s1600/25.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="598" data-original-width="308" height="320" src="https://1.bp.blogspot.com/-TSlJjNDfqec/WnEus7SFDtI/AAAAAAAAOc0/L5IKn-QcDw8sHISmb_VDIPZ-9dr-ui19gCEwYBhgL/s320/25.PNG" width="164" /></a></div><br />For example "Tag Cloud" visualization.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-xhBNAwZlCwQ/WnEutC_etyI/AAAAAAAAOcs/tflLdqpSQ4AVKflKXRq7eD4-wRzxRoxjgCEwYBhgL/s1600/26.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="845" data-original-width="1510" height="358" src="https://1.bp.blogspot.com/-xhBNAwZlCwQ/WnEutC_etyI/AAAAAAAAOcs/tflLdqpSQ4AVKflKXRq7eD4-wRzxRoxjgCEwYBhgL/s640/26.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />"Pie" visualization.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-7rLeY6IGfnQ/WnEutl883sI/AAAAAAAAOcs/eSN_-wNfFn4-0-rweblpxmoF8m8eIJQNwCEwYBhgL/s1600/27.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="875" data-original-width="1286" height="434" src="https://4.bp.blogspot.com/-7rLeY6IGfnQ/WnEutl883sI/AAAAAAAAOcs/eSN_-wNfFn4-0-rweblpxmoF8m8eIJQNwCEwYBhgL/s640/27.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Want more colors? Piece of cake.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-XuRuzpvboyU/WnEut2l1_GI/AAAAAAAAOcs/u0Sg-_2doZ4mTy2TVDqM46YzTZ76EPN8ACEwYBhgL/s1600/28.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="951" data-original-width="1569" height="386" src="https://3.bp.blogspot.com/-XuRuzpvboyU/WnEut2l1_GI/AAAAAAAAOcs/u0Sg-_2doZ4mTy2TVDqM46YzTZ76EPN8ACEwYBhgL/s640/28.PNG" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">So you can put together the data you want and visualize anyway you want, add narrative data, and present it in a nice way.</div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-GEFzjJB-JBY/WnEuuYd2tsI/AAAAAAAAOc0/6dJPC7bkqfYCsAu1rUOLy7Th97Qq98rCwCEwYBhgL/s1600/30.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="864" data-original-width="1455" height="380" src="https://3.bp.blogspot.com/-GEFzjJB-JBY/WnEuuYd2tsI/AAAAAAAAOc0/6dJPC7bkqfYCsAu1rUOLy7Th97Qq98rCwCEwYBhgL/s640/30.PNG" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><span style="font-size: large;">My conclusion? Data Visualization is an awesome and super powerful tool, very easy to use and extremely smooth. You don't need to be a technical guru to build a fancy dashboard. And bear in mind I only showed a very simple report for the sake of simplicity, in reality&nbsp;you can do a lot more...and the best part? You don't need to code anything.</span><br /><span style="font-size: large;"><br /></span><span style="font-size: large;"><br /></span><span style="font-size: large;"><br /></span> Omar Shubeilat tag:blogger.com,1999:blog-2208425848541526078.post-1380145987788941383 Wed Jan 31 2018 04:21:00 GMT-0500 (EST) EPM Cloud - Capturing rejections in Data Management - Part 1 http://john-goodwin.blogspot.com/2018/01/epm-cloud-capturing-rejections-in-data.html <div dir="ltr" style="text-align: left;" trbidi="on">I have been asked on numerous occasions whether it is possible to capture rejected records for data loads in Data Management and either send an email with the details or process the rejected records.<br /><br />EPM cloud changes at a fast pace when it comes to functionality but currently there is no inbuilt ability to handle any of these requirements, also with no Jython scripting like with on-premise FDMEE this rules out a custom solution within Data Management itself. This is not so much of a concern though as most of the automation is handled outside of Data Management with help from EPM Automate or the REST API, so this vastly opens up the possibilities to meet the requirement.<br /><br />In this two-part blog post, I am going to look at one possible way of capturing rejected records and sending out an email, I will then expand on that to process the rejected records using the metadata functionality available in Data Management.<br /><br />Before I start I will give my usual disclaimer that this is just one possible solution out of many and it doesn’t mean it is right for everybody, this is not going to be a step by step guide and there is an assumption that you have a good understanding of loading data through Data Management.<br /><br />Let us first go through an example of loading data where a few records will be rejected, I am going to concentrate on entity members being rejected and will be using the following simple source file.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-WYv0Laluphs/Wm896MQ4ZfI/AAAAAAAAJds/4x7wtbAPMwIEEKRsdAhtBLVA7Uo39dGAACLcBGAs/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="124" data-original-width="218" src="https://2.bp.blogspot.com/-WYv0Laluphs/Wm896MQ4ZfI/AAAAAAAAJds/4x7wtbAPMwIEEKRsdAhtBLVA7Uo39dGAACLcBGAs/s1600/image001.png" /></a></div><br />The above file contains two entity members “901” and “902” that are not currently part of the entity dimension in the target application.<br /><br />The import format, location, load rule and mappings have already been created which I don't need to go through as there is nothing different about them.<br /><br />As the data is all numeric, the load method in the data load rule has been set as “Numeric Data Only”, this means data is directly loaded to Essbase using a load rule.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Lq5_NzNy6m0/Wm896DfaLII/AAAAAAAAJdw/GXzA27JKImcR994MJRFNLkX16C7Pd6ynwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="418" src="https://3.bp.blogspot.com/-Lq5_NzNy6m0/Wm896DfaLII/AAAAAAAAJdw/GXzA27JKImcR994MJRFNLkX16C7Pd6ynwCLcBGAs/s1600/image002.png" /></a></div><br />The full data load process is run from the workbench and the export fails but at this stage it is not clear why.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-McB6LGGCP1Q/Wm896DyIRoI/AAAAAAAAJdo/ZMylPdTwBhwF42JAfJj7fZoUW4nNYpxkwCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="722" src="https://1.bp.blogspot.com/-McB6LGGCP1Q/Wm896DyIRoI/AAAAAAAAJdo/ZMylPdTwBhwF42JAfJj7fZoUW4nNYpxkwCLcBGAs/s1600/image003.png" /></a></div><br />Even if you look at the process details, it only provides details to inform the export data to target application step has failed.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-gA0N-G2FrhA/Wm896rrK9jI/AAAAAAAAJd0/0IoSkv5MPtIYYlQLuYdB91hqkFVWfGNQACLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="118" data-original-width="355" src="https://4.bp.blogspot.com/-gA0N-G2FrhA/Wm896rrK9jI/AAAAAAAAJd0/0IoSkv5MPtIYYlQLuYdB91hqkFVWfGNQACLcBGAs/s1600/image004.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xuXikcb9xjE/Wm896732wnI/AAAAAAAAJd4/GB2qB9LHQuA_JKCm3jtkkRD2ADMtK0_YwCLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="90" data-original-width="281" src="https://2.bp.blogspot.com/-xuXikcb9xjE/Wm896732wnI/AAAAAAAAJd4/GB2qB9LHQuA_JKCm3jtkkRD2ADMtK0_YwCLcBGAs/s1600/image005.png" /></a></div><br />It is not until you open the process log and analyse it that you realise the reason behind the failure.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-LCl92eJHgtw/Wm89_m2vS2I/AAAAAAAAJe4/W3hjnFQIACAnhRve5h39p2tr8m4NH7jjgCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="74" data-original-width="639" src="https://4.bp.blogspot.com/-LCl92eJHgtw/Wm89_m2vS2I/AAAAAAAAJe4/W3hjnFQIACAnhRve5h39p2tr8m4NH7jjgCLcBGAs/s1600/image006.png" /></a></div><br />The process log highlights there were data load errors and includes the records where the error occurred, the error “3303” means that there were rejections, the entry also includes the member which was rejected, so you can see that the entity members “901” and “902” were rejected.<br /><br />On a side note if the data load method was one of the all data types then the error in the log will be different and looks something like:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-FIGDQcnqVNc/Wm897b64UrI/AAAAAAAAJd8/5hww2EUVrR4hyeUR9OdzGv_kgeLenk2zQCLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="38" data-original-width="656" src="https://2.bp.blogspot.com/-FIGDQcnqVNc/Wm897b64UrI/AAAAAAAAJd8/5hww2EUVrR4hyeUR9OdzGv_kgeLenk2zQCLcBGAs/s1600/image007.png" /></a></div><br />The process failing in Data Management is a bit deceiving as the data load did not fail, the data load completes but a few of the records were rejected.<br /><br />Performing a simple retrieve shows data was loaded to the target application for the valid rows.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-d2G-YHwfNb8/Wm897njmObI/AAAAAAAAJeA/hpphqcdDoKoFMZxt1iJfYHf01e9v9lfMgCLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="111" data-original-width="313" src="https://3.bp.blogspot.com/-d2G-YHwfNb8/Wm897njmObI/AAAAAAAAJeA/hpphqcdDoKoFMZxt1iJfYHf01e9v9lfMgCLcBGAs/s1600/image008.png" /></a></div><br />It would be nice if there was an option in Data Management to change the failure to a warning and provide a more informative process step message, even better if there was enhanced logging around the errors or a separate download file containing the load errors, maybe this will happen at some point in the future but this is where we are at the moment.<br /><br />You may be asking, why not use data load mappings to assign any unmapped members to a defined member like:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-wt1cjXAq1sU/Wm897zVGqxI/AAAAAAAAJeE/GsxpDogSo18a0XZWGPS2BBw2K84YnvCswCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="176" data-original-width="301" src="https://4.bp.blogspot.com/-wt1cjXAq1sU/Wm897zVGqxI/AAAAAAAAJeE/GsxpDogSo18a0XZWGPS2BBw2K84YnvCswCLcBGAs/s1600/image009.png" /></a></div><br />This is perfectly acceptable but the issue is if you have multiple unassigned members in the data then you would need to first understand if any data has been loaded to the unassigned bucket, find out which members, create the members in the target application, clear the data, update data load mappings and finally reload the data.<br /><br />The idea of this post is to stick with members being rejected and then be informed if there are errors with the use of automation.<br /><br />We know that if a load process fails the log contains the errors so it is just coming up with a way to process and automate this.<br /><br />With EPM Automate it is possible to find out the load process has failed, if we take an example with the same data set using the “<b>rundatarule</b>” command to execute the rule:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-PhWOXCJwkNM/Wm898Zf2N8I/AAAAAAAAJeI/pqyaL7uVlrsL5wMPE5AL_ghPeWa529CTgCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="167" data-original-width="663" src="https://3.bp.blogspot.com/-PhWOXCJwkNM/Wm898Zf2N8I/AAAAAAAAJeI/pqyaL7uVlrsL5wMPE5AL_ghPeWa529CTgCLcBGAs/s1600/image010.png" /></a></div><br />In the example above the “<b>LD_Actuals</b>” data load rule is executed just for the export step for the period “<b>Jan-18</b>”, EPM Automate returns that the command failed to execute which is not the most informative message, in reality the command did execute and the process completed with a failure, same as earlier the data has been loaded but there were rejections.<br /><br />Instead of capturing the returned text from EPM Automate, the exit code could have been accessed which in this case would be 1, either way it doesn’t tell us much.<br /><br />It is certainly possible to end the process here and send out an email:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-Vwd7x4ClEeo/Wm898rw8LSI/AAAAAAAAJeM/GRGACnyjC1kkvsvCoWNguApZl1bHwJrVACLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="119" data-original-width="412" src="https://4.bp.blogspot.com/-Vwd7x4ClEeo/Wm898rw8LSI/AAAAAAAAJeM/GRGACnyjC1kkvsvCoWNguApZl1bHwJrVACLcBGAs/s1600/image011.png" /></a></div><br />I wouldn’t be happy with ending at this point so let us keep going, besides not being presented with the most informative failure message there is no indication to the Data Management process ID, if we know the process ID we could download the process log and then parse to find out more details on the failure, ok there are ways to list out files and then check for the latest log but there is room for error, for example if multiple processes complete around the same time.<br /><br />EPM Automate is built on top of the REST API so let us take a look at the type of information that is returned if the same process is replicated.<br /><br />I have covered the <b><a href="http://john-goodwin.blogspot.co.uk/2016/03/fdmee-web-services-part-2.html">REST API</a></b>&nbsp;in the past so I don’t want to go into too much detail but using a REST client I can simply demonstrate running a rule by passing in parameters in the body of the request.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/--fAKuQFelXM/Wm898wcmi7I/AAAAAAAAJeQ/6hW7Y0u1Hb0IJTW2oabAj_77aFu6rBYMQCLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="219" data-original-width="339" src="https://2.bp.blogspot.com/--fAKuQFelXM/Wm898wcmi7I/AAAAAAAAJeQ/6hW7Y0u1Hb0IJTW2oabAj_77aFu6rBYMQCLcBGAs/s1600/image012.png" /></a></div><br />The response includes some valuable information such as the log details, process ID and the status of the process.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-ewuZjBYOQX4/Wm899I16NsI/AAAAAAAAJeU/xoHbDgJJEEA6pXFph2SxuLFAHajSXILCgCLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="332" data-original-width="615" src="https://2.bp.blogspot.com/-ewuZjBYOQX4/Wm899I16NsI/AAAAAAAAJeU/xoHbDgJJEEA6pXFph2SxuLFAHajSXILCgCLcBGAs/s1600/image013.png" /></a></div><br />The response indicates that the process is currently running so it can be repeatedly checked using a REST request until it completes.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-g50fYhG1zGQ/Wm899p1lxqI/AAAAAAAAJeY/OnfmAacChekBjDknqbw8BcLIaTGYrpEywCLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="178" data-original-width="460" src="https://1.bp.blogspot.com/-g50fYhG1zGQ/Wm899p1lxqI/AAAAAAAAJeY/OnfmAacChekBjDknqbw8BcLIaTGYrpEywCLcBGAs/s1600/image014.png" /></a></div><br />The response now indicates the process has failed and the advantage over EPM Automate is that we know the name of the process log which could be downloaded.<br /><br />This process can be automated using scripting and I am going to provide an example of how to do this using PowerShell but it is up to you which scripting language you use, please be aware I try to keep it as simple as possible to display on the blog so it doesn’t handle every possible outcome, I leave that for the final scripts I use.<br /><br />I will break it down into bite-sized sections and to start with the variables are defined, this include the Data Management data load rule name, period name, import and export modes, the local path for files and logs and the URLs for the REST API resources.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/--TijqEpJeOk/Wm8992f7z7I/AAAAAAAAJec/HBcUd2-kokgA3oZWwxtCqPxX0_OzChwsACLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="360" data-original-width="534" src="https://3.bp.blogspot.com/--TijqEpJeOk/Wm8992f7z7I/AAAAAAAAJec/HBcUd2-kokgA3oZWwxtCqPxX0_OzChwsACLcBGAs/s1600/image015.png" /></a></div><br />Now on to the real work, the username and password are encoded which will be added to the header of the REST request.<br /><br />The body of the REST request is built using the defined variables and then converted into JSON format.<br /><br />Next a request to the Data Management REST resource is made which executes the data load rule based on the body of the request.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-ezBPB744f0I/Wm89-FX4GSI/AAAAAAAAJeg/8_6ienVx8rYvd6RdS_Y2PuCmYjhn2D6zACLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="666" src="https://2.bp.blogspot.com/-ezBPB744f0I/Wm89-FX4GSI/AAAAAAAAJeg/8_6ienVx8rYvd6RdS_Y2PuCmYjhn2D6zACLcBGAs/s1600/image016.png" /></a></div><br />Once a response is returned the status can repeatedly checked until the Data Management process completes, I am not going to include this section as I have done it many times in the past and if you want a simple example then have a look <b><a href="http://john-goodwin.blogspot.co.uk/2016/03/fdmee-web-services-part-2.html">here</a></b>.<br /><br />At this point if I check the status of the process, it will have failed.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-53lqUMDgyYU/Wm89-LEv4eI/AAAAAAAAJek/6qN1H6R1BOA5bzZs1bRbVfXQc2S56sWYgCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="76" data-original-width="482" src="https://3.bp.blogspot.com/-53lqUMDgyYU/Wm89-LEv4eI/AAAAAAAAJek/6qN1H6R1BOA5bzZs1bRbVfXQc2S56sWYgCLcBGAs/s1600/image017.png" /></a></div><br />So now that we know the job failed and the log file name, the log can download using one of the application management REST resources.<br /><br />Once again I have already covered downloading files using the REST API which you can read all about <b><a href="http://john-goodwin.blogspot.co.uk/2015/10/planning-rest-api-part-2.html">here</a></b>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ccjFWq8MsXg/Wm89-wczZBI/AAAAAAAAJeo/EuSXocuEL5IM0stwks0zQM8K3rDDOSSIwCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="212" data-original-width="786" height="172" src="https://1.bp.blogspot.com/-ccjFWq8MsXg/Wm89-wczZBI/AAAAAAAAJeo/EuSXocuEL5IM0stwks0zQM8K3rDDOSSIwCLcBGAs/s640/image018.png" width="640" /></a></div><br />At this stage, the log for the process that failed has been downloaded.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-rKh_d8bXHJ8/Wm89_L5QHkI/AAAAAAAAJes/Ib2HDqaYJQYvSmLWF0UNIlaBK5AH3PbOgCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="83" data-original-width="206" src="https://3.bp.blogspot.com/-rKh_d8bXHJ8/Wm89_L5QHkI/AAAAAAAAJes/Ib2HDqaYJQYvSmLWF0UNIlaBK5AH3PbOgCLcBGAs/s1600/image019.png" /></a></div><br />The automated process could end here by sending an email and attaching the log, this could be achieved with something similar to:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-EtuXfSFUJv4/Wm89_l9wERI/AAAAAAAAJew/kiF8ufq5_XULJ2pH4OQ5Q3Ul1Yk_O9ATgCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="200" data-original-width="700" src="https://4.bp.blogspot.com/-EtuXfSFUJv4/Wm89_l9wERI/AAAAAAAAJew/kiF8ufq5_XULJ2pH4OQ5Q3Ul1Yk_O9ATgCLcBGAs/s1600/image020.png" /></a></div><br />The email could contain information such as the data load rule name, the process ID and the log of the failed process.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-LnDG9_z8qXw/Wm89_hgY_nI/AAAAAAAAJe0/n6p1dSjqch8y-c09UsYYFvEoQPR9FL4NwCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="264" data-original-width="645" src="https://1.bp.blogspot.com/-LnDG9_z8qXw/Wm89_hgY_nI/AAAAAAAAJe0/n6p1dSjqch8y-c09UsYYFvEoQPR9FL4NwCLcBGAs/s1600/image021.png" /></a></div><br />Taking it a step further, before sending the email the process log could be parsed for data load errors.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-sOztZqqSB6c/Wm8-Ab-cvbI/AAAAAAAAJe8/lJcOKIYmmPMm9VgotMP4waakpej0ukWrwCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="267" data-original-width="697" src="https://3.bp.blogspot.com/-sOztZqqSB6c/Wm8-Ab-cvbI/AAAAAAAAJe8/lJcOKIYmmPMm9VgotMP4waakpej0ukWrwCLcBGAs/s1600/image022.png" /></a></div><br />In the above example each line of the process log is read and checked for “Error: 3303” and for demo purposes they are outputted to the console.<br /><br />Instead of outputting the errors to the console these can either be stored in a variable or written to a file.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-ixhrBw2FVic/Wm8-Akn3KII/AAAAAAAAJfA/ooxFkAfDQZwbFme0uSlfdGaeMNVZnbvlgCLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="187" data-original-width="876" height="136" src="https://3.bp.blogspot.com/-ixhrBw2FVic/Wm8-Akn3KII/AAAAAAAAJfA/ooxFkAfDQZwbFme0uSlfdGaeMNVZnbvlgCLcBGAs/s640/image023.png" width="640" /></a></div><br />In my example I have stored the errors and then included them in the body of the email but they could have easily been written to a file and sent as an attachment.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PF4ACEzn0Wc/Wm8-AyKgXbI/AAAAAAAAJfE/yrtEUWeoCRIhDJ1yDxk969MVDNcrF8W9gCLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="339" data-original-width="670" src="https://1.bp.blogspot.com/-PF4ACEzn0Wc/Wm8-AyKgXbI/AAAAAAAAJfE/yrtEUWeoCRIhDJ1yDxk969MVDNcrF8W9gCLcBGAs/s1600/image024.png" /></a></div><br />Now the email recipient will know that the data load process has failed with load errors and they will also have visibility of the records that were rejected.<br /><br />This is all good but it can be taken a step further, the members that were rejected could be loaded into the target application using the Data Management metadata functionality, the data could then be reloaded to the correct members without any rejections.<br /><br />Look out for the next part where I will go through the process.&nbsp;</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-8240186465509454380 Wed Jan 31 2018 03:05:00 GMT-0500 (EST) EPM Cloud - Capturing rejections in Data Management - Part 1 @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://john-goodwin.blogspot.com/2018/01/epm-cloud-capturing-rejections-in-data.html <div dir="ltr" style="text-align: left;" trbidi="on">I have been asked on numerous occasions whether it is possible to capture rejected records for data loads in Data Management and either send an email with the details or process the rejected records.<br /><br />EPM cloud changes at a fast pace when it comes to functionality but currently there is no inbuilt ability to handle any of these requirements, also with no Jython scripting like with on-premise FDMEE this rules out a custom solution within Data Management itself. This is not so much of a concern though as most of the automation is handled outside of Data Management with help from EPM Automate or the REST API, so this vastly opens up the possibilities to meet the requirement.<br /><br />In this two-part blog post, I am going to look at one possible way of capturing rejected records and sending out an email, I will then expand on that to process the rejected records using the metadata functionality available in Data Management.<br /><br />Before I start I will give my usual disclaimer that this is just one possible solution out of many and it doesn’t mean it is right for everybody, this is not going to be a step by step guide and there is an assumption that you have a good understanding of loading data through Data Management.<br /><br />Let us first go through an example of loading data where a few records will be rejected, I am going to concentrate on entity members being rejected and will be using the following simple source file.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-WYv0Laluphs/Wm896MQ4ZfI/AAAAAAAAJds/4x7wtbAPMwIEEKRsdAhtBLVA7Uo39dGAACLcBGAs/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="124" data-original-width="218" src="https://2.bp.blogspot.com/-WYv0Laluphs/Wm896MQ4ZfI/AAAAAAAAJds/4x7wtbAPMwIEEKRsdAhtBLVA7Uo39dGAACLcBGAs/s1600/image001.png" /></a></div><br />The above file contains two entity members “901” and “902” that are not currently part of the entity dimension in the target application.<br /><br />The import format, location, load rule and mappings have already been created which I don't need to go through as there is nothing different about them.<br /><br />As the data is all numeric, the load method in the data load rule has been set as “Numeric Data Only”, this means data is directly loaded to Essbase using a load rule.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Lq5_NzNy6m0/Wm896DfaLII/AAAAAAAAJdw/GXzA27JKImcR994MJRFNLkX16C7Pd6ynwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="94" data-original-width="418" src="https://3.bp.blogspot.com/-Lq5_NzNy6m0/Wm896DfaLII/AAAAAAAAJdw/GXzA27JKImcR994MJRFNLkX16C7Pd6ynwCLcBGAs/s1600/image002.png" /></a></div><br />The full data load process is run from the workbench and the export fails but at this stage it is not clear why.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-McB6LGGCP1Q/Wm896DyIRoI/AAAAAAAAJdo/ZMylPdTwBhwF42JAfJj7fZoUW4nNYpxkwCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="251" data-original-width="722" src="https://1.bp.blogspot.com/-McB6LGGCP1Q/Wm896DyIRoI/AAAAAAAAJdo/ZMylPdTwBhwF42JAfJj7fZoUW4nNYpxkwCLcBGAs/s1600/image003.png" /></a></div><br />Even if you look at the process details, it only provides details to inform the export data to target application step has failed.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-gA0N-G2FrhA/Wm896rrK9jI/AAAAAAAAJd0/0IoSkv5MPtIYYlQLuYdB91hqkFVWfGNQACLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="118" data-original-width="355" src="https://4.bp.blogspot.com/-gA0N-G2FrhA/Wm896rrK9jI/AAAAAAAAJd0/0IoSkv5MPtIYYlQLuYdB91hqkFVWfGNQACLcBGAs/s1600/image004.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xuXikcb9xjE/Wm896732wnI/AAAAAAAAJd4/GB2qB9LHQuA_JKCm3jtkkRD2ADMtK0_YwCLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="90" data-original-width="281" src="https://2.bp.blogspot.com/-xuXikcb9xjE/Wm896732wnI/AAAAAAAAJd4/GB2qB9LHQuA_JKCm3jtkkRD2ADMtK0_YwCLcBGAs/s1600/image005.png" /></a></div><br />It is not until you open the process log and analyse it that you realise the reason behind the failure.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-LCl92eJHgtw/Wm89_m2vS2I/AAAAAAAAJe4/W3hjnFQIACAnhRve5h39p2tr8m4NH7jjgCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="74" data-original-width="639" src="https://4.bp.blogspot.com/-LCl92eJHgtw/Wm89_m2vS2I/AAAAAAAAJe4/W3hjnFQIACAnhRve5h39p2tr8m4NH7jjgCLcBGAs/s1600/image006.png" /></a></div><br />The process log highlights there were data load errors and includes the records where the error occurred, the error “3303” means that there were rejections, the entry also includes the member which was rejected, so you can see that the entity members “901” and “902” were rejected.<br /><br />On a side note if the data load method was one of the all data types then the error in the log will be different and looks something like:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-FIGDQcnqVNc/Wm897b64UrI/AAAAAAAAJd8/5hww2EUVrR4hyeUR9OdzGv_kgeLenk2zQCLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="38" data-original-width="656" src="https://2.bp.blogspot.com/-FIGDQcnqVNc/Wm897b64UrI/AAAAAAAAJd8/5hww2EUVrR4hyeUR9OdzGv_kgeLenk2zQCLcBGAs/s1600/image007.png" /></a></div><br />The process failing in Data Management is a bit deceiving as the data load did not fail, the data load completes but a few of the records were rejected.<br /><br />Performing a simple retrieve shows data was loaded to the target application for the valid rows.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-d2G-YHwfNb8/Wm897njmObI/AAAAAAAAJeA/hpphqcdDoKoFMZxt1iJfYHf01e9v9lfMgCLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="111" data-original-width="313" src="https://3.bp.blogspot.com/-d2G-YHwfNb8/Wm897njmObI/AAAAAAAAJeA/hpphqcdDoKoFMZxt1iJfYHf01e9v9lfMgCLcBGAs/s1600/image008.png" /></a></div><br />It would be nice if there was an option in Data Management to change the failure to a warning and provide a more informative process step message, even better if there was enhanced logging around the errors or a separate download file containing the load errors, maybe this will happen at some point in the future but this is where we are at the moment.<br /><br />You may be asking, why not use data load mappings to assign any unmapped members to a defined member like:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-wt1cjXAq1sU/Wm897zVGqxI/AAAAAAAAJeE/GsxpDogSo18a0XZWGPS2BBw2K84YnvCswCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="176" data-original-width="301" src="https://4.bp.blogspot.com/-wt1cjXAq1sU/Wm897zVGqxI/AAAAAAAAJeE/GsxpDogSo18a0XZWGPS2BBw2K84YnvCswCLcBGAs/s1600/image009.png" /></a></div><br />This is perfectly acceptable but the issue is if you have multiple unassigned members in the data then you would need to first understand if any data has been loaded to the unassigned bucket, find out which members, create the members in the target application, clear the data, update data load mappings and finally reload the data.<br /><br />The idea of this post is to stick with members being rejected and then be informed if there are errors with the use of automation.<br /><br />We know that if a load process fails the log contains the errors so it is just coming up with a way to process and automate this.<br /><br />With EPM Automate it is possible to find out the load process has failed, if we take an example with the same data set using the “<b>rundatarule</b>” command to execute the rule:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-PhWOXCJwkNM/Wm898Zf2N8I/AAAAAAAAJeI/pqyaL7uVlrsL5wMPE5AL_ghPeWa529CTgCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="167" data-original-width="663" src="https://3.bp.blogspot.com/-PhWOXCJwkNM/Wm898Zf2N8I/AAAAAAAAJeI/pqyaL7uVlrsL5wMPE5AL_ghPeWa529CTgCLcBGAs/s1600/image010.png" /></a></div><br />In the example above the “<b>LD_Actuals</b>” data load rule is executed just for the export step for the period “<b>Jan-18</b>”, EPM Automate returns that the command failed to execute which is not the most informative message, in reality the command did execute and the process completed with a failure, same as earlier the data has been loaded but there were rejections.<br /><br />Instead of capturing the returned text from EPM Automate, the exit code could have been accessed which in this case would be 1, either way it doesn’t tell us much.<br /><br />It is certainly possible to end the process here and send out an email:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-Vwd7x4ClEeo/Wm898rw8LSI/AAAAAAAAJeM/GRGACnyjC1kkvsvCoWNguApZl1bHwJrVACLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="119" data-original-width="412" src="https://4.bp.blogspot.com/-Vwd7x4ClEeo/Wm898rw8LSI/AAAAAAAAJeM/GRGACnyjC1kkvsvCoWNguApZl1bHwJrVACLcBGAs/s1600/image011.png" /></a></div><br />I wouldn’t be happy with ending at this point so let us keep going, besides not being presented with the most informative failure message there is no indication to the Data Management process ID, if we know the process ID we could download the process log and then parse to find out more details on the failure, ok there are ways to list out files and then check for the latest log but there is room for error, for example if multiple processes complete around the same time.<br /><br />EPM Automate is built on top of the REST API so let us take a look at the type of information that is returned if the same process is replicated.<br /><br />I have covered the <b><a href="http://john-goodwin.blogspot.co.uk/2016/03/fdmee-web-services-part-2.html">REST API</a></b>&nbsp;in the past so I don’t want to go into too much detail but using a REST client I can simply demonstrate running a rule by passing in parameters in the body of the request.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/--fAKuQFelXM/Wm898wcmi7I/AAAAAAAAJeQ/6hW7Y0u1Hb0IJTW2oabAj_77aFu6rBYMQCLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="219" data-original-width="339" src="https://2.bp.blogspot.com/--fAKuQFelXM/Wm898wcmi7I/AAAAAAAAJeQ/6hW7Y0u1Hb0IJTW2oabAj_77aFu6rBYMQCLcBGAs/s1600/image012.png" /></a></div><br />The response includes some valuable information such as the log details, process ID and the status of the process.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-ewuZjBYOQX4/Wm899I16NsI/AAAAAAAAJeU/xoHbDgJJEEA6pXFph2SxuLFAHajSXILCgCLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="332" data-original-width="615" src="https://2.bp.blogspot.com/-ewuZjBYOQX4/Wm899I16NsI/AAAAAAAAJeU/xoHbDgJJEEA6pXFph2SxuLFAHajSXILCgCLcBGAs/s1600/image013.png" /></a></div><br />The response indicates that the process is currently running so it can be repeatedly checked using a REST request until it completes.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-g50fYhG1zGQ/Wm899p1lxqI/AAAAAAAAJeY/OnfmAacChekBjDknqbw8BcLIaTGYrpEywCLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="178" data-original-width="460" src="https://1.bp.blogspot.com/-g50fYhG1zGQ/Wm899p1lxqI/AAAAAAAAJeY/OnfmAacChekBjDknqbw8BcLIaTGYrpEywCLcBGAs/s1600/image014.png" /></a></div><br />The response now indicates the process has failed and the advantage over EPM Automate is that we know the name of the process log which could be downloaded.<br /><br />This process can be automated using scripting and I am going to provide an example of how to do this using PowerShell but it is up to you which scripting language you use, please be aware I try to keep it as simple as possible to display on the blog so it doesn’t handle every possible outcome, I leave that for the final scripts I use.<br /><br />I will break it down into bite-sized sections and to start with the variables are defined, this include the Data Management data load rule name, period name, import and export modes, the local path for files and logs and the URLs for the REST API resources.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/--TijqEpJeOk/Wm8992f7z7I/AAAAAAAAJec/HBcUd2-kokgA3oZWwxtCqPxX0_OzChwsACLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="360" data-original-width="534" src="https://3.bp.blogspot.com/--TijqEpJeOk/Wm8992f7z7I/AAAAAAAAJec/HBcUd2-kokgA3oZWwxtCqPxX0_OzChwsACLcBGAs/s1600/image015.png" /></a></div><br />Now on to the real work, the username and password are encoded which will be added to the header of the REST request.<br /><br />The body of the REST request is built using the defined variables and then converted into JSON format.<br /><br />Next a request to the Data Management REST resource is made which executes the data load rule based on the body of the request.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-ezBPB744f0I/Wm89-FX4GSI/AAAAAAAAJeg/8_6ienVx8rYvd6RdS_Y2PuCmYjhn2D6zACLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="666" src="https://2.bp.blogspot.com/-ezBPB744f0I/Wm89-FX4GSI/AAAAAAAAJeg/8_6ienVx8rYvd6RdS_Y2PuCmYjhn2D6zACLcBGAs/s1600/image016.png" /></a></div><br />Once a response is returned the status can repeatedly checked until the Data Management process completes, I am not going to include this section as I have done it many times in the past and if you want a simple example then have a look <b><a href="http://john-goodwin.blogspot.co.uk/2016/03/fdmee-web-services-part-2.html">here</a></b>.<br /><br />At this point if I check the status of the process, it will have failed.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-53lqUMDgyYU/Wm89-LEv4eI/AAAAAAAAJek/6qN1H6R1BOA5bzZs1bRbVfXQc2S56sWYgCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="76" data-original-width="482" src="https://3.bp.blogspot.com/-53lqUMDgyYU/Wm89-LEv4eI/AAAAAAAAJek/6qN1H6R1BOA5bzZs1bRbVfXQc2S56sWYgCLcBGAs/s1600/image017.png" /></a></div><br />So now that we know the job failed and the log file name, the log can download using one of the application management REST resources.<br /><br />Once again I have already covered downloading files using the REST API which you can read all about <b><a href="http://john-goodwin.blogspot.co.uk/2015/10/planning-rest-api-part-2.html">here</a></b>.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ccjFWq8MsXg/Wm89-wczZBI/AAAAAAAAJeo/EuSXocuEL5IM0stwks0zQM8K3rDDOSSIwCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="212" data-original-width="786" height="172" src="https://1.bp.blogspot.com/-ccjFWq8MsXg/Wm89-wczZBI/AAAAAAAAJeo/EuSXocuEL5IM0stwks0zQM8K3rDDOSSIwCLcBGAs/s640/image018.png" width="640" /></a></div><br />At this stage, the log for the process that failed has been downloaded.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-rKh_d8bXHJ8/Wm89_L5QHkI/AAAAAAAAJes/Ib2HDqaYJQYvSmLWF0UNIlaBK5AH3PbOgCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="83" data-original-width="206" src="https://3.bp.blogspot.com/-rKh_d8bXHJ8/Wm89_L5QHkI/AAAAAAAAJes/Ib2HDqaYJQYvSmLWF0UNIlaBK5AH3PbOgCLcBGAs/s1600/image019.png" /></a></div><br />The automated process could end here by sending an email and attaching the log, this could be achieved with something similar to:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-EtuXfSFUJv4/Wm89_l9wERI/AAAAAAAAJew/kiF8ufq5_XULJ2pH4OQ5Q3Ul1Yk_O9ATgCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="200" data-original-width="700" src="https://4.bp.blogspot.com/-EtuXfSFUJv4/Wm89_l9wERI/AAAAAAAAJew/kiF8ufq5_XULJ2pH4OQ5Q3Ul1Yk_O9ATgCLcBGAs/s1600/image020.png" /></a></div><br />The email could contain information such as the data load rule name, the process ID and the log of the failed process.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-LnDG9_z8qXw/Wm89_hgY_nI/AAAAAAAAJe0/n6p1dSjqch8y-c09UsYYFvEoQPR9FL4NwCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="264" data-original-width="645" src="https://1.bp.blogspot.com/-LnDG9_z8qXw/Wm89_hgY_nI/AAAAAAAAJe0/n6p1dSjqch8y-c09UsYYFvEoQPR9FL4NwCLcBGAs/s1600/image021.png" /></a></div><br />Taking it a step further, before sending the email the process log could be parsed for data load errors.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-sOztZqqSB6c/Wm8-Ab-cvbI/AAAAAAAAJe8/lJcOKIYmmPMm9VgotMP4waakpej0ukWrwCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="267" data-original-width="697" src="https://3.bp.blogspot.com/-sOztZqqSB6c/Wm8-Ab-cvbI/AAAAAAAAJe8/lJcOKIYmmPMm9VgotMP4waakpej0ukWrwCLcBGAs/s1600/image022.png" /></a></div><br />In the above example each line of the process log is read and checked for “Error: 3303” and for demo purposes they are outputted to the console.<br /><br />Instead of outputting the errors to the console these can either be stored in a variable or written to a file.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-ixhrBw2FVic/Wm8-Akn3KII/AAAAAAAAJfA/ooxFkAfDQZwbFme0uSlfdGaeMNVZnbvlgCLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="187" data-original-width="876" height="136" src="https://3.bp.blogspot.com/-ixhrBw2FVic/Wm8-Akn3KII/AAAAAAAAJfA/ooxFkAfDQZwbFme0uSlfdGaeMNVZnbvlgCLcBGAs/s640/image023.png" width="640" /></a></div><br />In my example I have stored the errors and then included them in the body of the email but they could have easily been written to a file and sent as an attachment.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PF4ACEzn0Wc/Wm8-AyKgXbI/AAAAAAAAJfE/yrtEUWeoCRIhDJ1yDxk969MVDNcrF8W9gCLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="339" data-original-width="670" src="https://1.bp.blogspot.com/-PF4ACEzn0Wc/Wm8-AyKgXbI/AAAAAAAAJfE/yrtEUWeoCRIhDJ1yDxk969MVDNcrF8W9gCLcBGAs/s1600/image024.png" /></a></div><br />Now the email recipient will know that the data load process has failed with load errors and they will also have visibility of the records that were rejected.<br /><br />This is all good but it can be taken a step further, the members that were rejected could be loaded into the target application using the Data Management metadata functionality, the data could then be reloaded to the correct members without any rejections.<br /><br />Look out for the next part where I will go through the process.&nbsp;</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-8240186465509454380 Wed Jan 31 2018 03:05:00 GMT-0500 (EST) 4 Factors Affecting Your OBIEE Performance https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/factors%20affecting%20obiee%20performance.jpg?t=1519157959954" alt="factors affecting obiee performance" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Poor performance tends to come up a lot when people talk about OBIEE. It’s a definite source of frustration, especially when finding the root cause of performance issues is no simple task. But things can get better — you just have to know where to start.</p> <p>This blog post can act as a starting point to solving your performance issues. In it, we’ll tell you about several factors that might be affecting your OBIEE performance and we’ll even offer you several solutions.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffactor-affecting-obiee-performance&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Nicholas Padgett https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance Tue Jan 30 2018 16:15:17 GMT-0500 (EST) 4 Factors Affecting Your OBIEE Performance @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/factors%20affecting%20obiee%20performance.jpg?t=1519081328426" alt="factors affecting obiee performance" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Poor performance tends to come up a lot when people talk about OBIEE. It’s a definite source of frustration, especially when finding the root cause of performance issues is no simple task. But things can get better — you just have to know where to start.</p> <p>This blog post can act as a starting point to solving your performance issues. In it, we’ll tell you about several factors that might be affecting your OBIEE performance and we’ll even offer you several solutions.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffactor-affecting-obiee-performance&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Nicholas Padgett https://www.us-analytics.com/hyperionblog/factor-affecting-obiee-performance Tue Jan 30 2018 16:15:17 GMT-0500 (EST) PBCS vs. On-Premise Hyperion Planning: New Features @hyperionepmcom https://www.epmmarshall.com/pbcs-vs-premise-hyperion-planning-new-features/ <p>As we all know, Oracle has put virtually all of their development efforts into the cloud.  This is especially true for the EPM Suite of products (PBCS, FCCS, ARCS, etc.).  As a result, PBCS keeps getting great new features that we may never see in on-premise Hyperion Planning.  I was talking to Jake Turrell today and we were comparing notes on the new functionality that we have used in PBCS on projects recently.  That conversation devolved into us making a rather long list of new features.  Special thanks to Jake for helping me make this list, as I wouldn&#8217;t have thought of a good portion of the things on it without his help.  So what new functionality has been added to PBCS that will likey never make it to on-premise Hyperion Planning?</p> <h1>Forms</h1> <p>Hyperion Planning has existed for over 15 years now, so you might think that the form design capabilities would be fully-baked by now.  For the most part, this is a true statement.  But, there have been some pretty big holes that PBCS has finally filled.  Two new additions in particular make for a better form design experience for developers:  Exclusions and Ranges.</p> <h2>Exclusions</h2> <p>In Planning, when we attempt to select members, that&#8217;s the only option&#8230;select members.  In PBCS, they have added the ability to edit the selection (our old select members option) and the ability to add exclusions.  Exclusions give us an easy way to take, for example, inclusive descendants of our entity dimension while excluding a specific list.  This is particularly useful when we are referencing a substitution variable or a user variable.  We don&#8217;t know the full extent of what could be returns, but we do know what we definitely don&#8217;t want.</p> <h2>Ranges</h2> <p>When you do monthly forecasting, nothing has been more annoying in form design than the inability to easy specify a range of members.  In Planning, I can&#8217;t just ask the form to give me Jan through &amp;CurrentMonth in one column and &amp;CurrentMonth through Dec in another column.  This means to really make my forms dynamic, I need more substitution variables than I&#8217;m comfortable with and a form that has a ton of columns with the combinations.  In PBCS, I now have four new member selection functions that allow me to put together a range:</p> <ul> <li>Left Siblings</li> <li>Left Sibling (inc)</li> <li>Right Siblings</li> <li>Right Siblings (inc)</li> </ul> <p>Finally!  I can do a range of members with just two columns and a single substitution variable!</p> <h2>Formatting</h2> <p>We can now format our forms!  You can change colors, font styles, add lines, along with other formatting options.  These options will show up in Excel and in the Simplified Interface.  This does not work in Workspace&#8230;but who cares, it&#8217;s officially dead in PBCS anyway as of the February release coming out shortly.</p> <h1>Smart Forms</h1> <p>Not to be confused with regular forms&#8230;we have Smart Forms.  This is an exciting new feature that allows you to take an ad hoc form, add formulas, and save them to the actual form!  While this is cool for a demo, I&#8217;m not necessarily a fan in practice.  While it is much better than building formulas in an actual form, which is painful, it still presents a problem.  Why are you doing form math?  In general I try to put math back in the Essbase model rather than having formulas on multiple forms.</p> <h1>Periods</h1> <p>In Planning, if I want to add periods to just a single plan type, I&#8217;m totally out of luck.  The boxes are all grey and there&#8217;s no way around it.  In PBCS, I can now simply un-check the plan types from which I would like to exclude the member.  This is a simple feature, but makes a massive difference in the flexibility in our designs.</p> <h1>Years</h1> <p>For literally years I&#8217;ve helped companies add and delete years from Planning applications.  There are a few ways to do this, but none of them are supported or in the interface.  In PBCS, if I want to delete a year, I simply select the year and click the delete button.  Again, this is super-simple, but so very nice to have.  Additionally, if I want to add years in the past, I can now do this in the interface!  Simply add the number of years you wish to add, and when PBCS asks if you would like to add them to the end, click no.  Now you have years years in the past.  This feature is a little more obfuscated, but still pretty simple.</p> <h1>Data Maps</h1> <p>On-Premise planning does have the idea of a reporting cube and it does give you the ability to create some level of mapping.  But it definitely doesn&#8217;t do what PBCS does.  PBCS has the ability to map and move data on the fly and then it takes it a step further:  Smart Push.  Smart Push is one of the most amazing features that they have added to PBCS.  For many applications, it gives us the ability to have an ASO cube with live data from our BSO cube with no crazy partitions or really any work at all beyond the mapping.  So as long as we input to our BSO cube and report from our ASO cube, I may never need to aggregate my BSO cube again.</p> <p>It is fair to mention that while this functionality is not baked into Planning, if you really need it, you can build it from the ground up with some fancy scripting on the back end.  Even still, it doesn&#8217;t hold a candle to the ease of use and stability of Smart Push.</p> <h1>Valid Intersections</h1> <p>I&#8217;ve been demoing Planning and Essbase for a very long time.  When people ask what benefit Essbase might have over Planning, there are very few good answers.  One of those answers however has always been that Essbase can support what we call matrix security.  This is essentially the ability to allow a user to have write access to a cross dimensional set of intersections.  For instance, for Entity A I can modify Account 1000 while for Entity B I can modify Account 2000.  Planning simply doesn&#8217;t support that.  I have to give a user Entity A, Entity B, Account 1000 and Account 2000.  That user will be able to modify all combinations.</p> <p>PBCS fixes this.  With valid intersections, I can create a set of intersections as defined above and limit the user&#8217;s ability to write back to invalid intersections.  From a security perspective, they still have access, but with valid intersections, they lose it.  Many people wanted valid intersections to give us the ability to cascade member selections across dimensions, which would be cool, but this functionality is just as useful.</p> <h1>SmartLists</h1> <p>I know what you&#8217;re thinking, Planning has SmartLists.  But PBCS has SmartLists that can be dynamically created directly from a dimension.  This means that I can provide the user with a list of accounts.  Big deal&#8230;who cares, right?  I care if I add an account.  With this new functionality, when an account is added, the SmartList is updated automagically.  Ok&#8230;that is a big deal.  Not content with this already amazing feature, Oracle took it a step further.  You can also reference the value of a SmartList in a calculation.  This means that I can use the selection in a SmartList to truly manipulate data.  Basically a new alias is created that references the OBJECT_ID.  That OBJECT_ID is also used as the value stored in Essbase for the SmartList selection.  Combined, I can easily reference the member that the SmartList is linked to.  Like I said&#8230;big deal.  Huuuuuge even.</p> <h1>Attribute Dimensions</h1> <p>This is another item that has some support in Planning, but missed the point.  I can technically add attribute dimensions to a Planning application and I can use them in a variety of ways.  But the two ways I need to be able to use them are missing.  They can&#8217;t be used in a form.  They can&#8217;t be used in Smart View.  I can technically use an Essbase connection directly and use them for analysis, but that only works on BSO and doesn&#8217;t work at all on ASO Plan Types.</p> <p>PBCS fixes both of these issues.  I can layer in attribute dimensions easily on forms.  It also fixes the Smart View issues by allowing for attribute dimension selection in the Planning Ad Hoc connector.  We&#8217;ve only been asking for this in Planning for a decade.  The chances seem so very slim that we actually ever see it given the list ten years.</p> <h1>Navigation Flows</h1> <p>Technically speaking, the simplified interface is available in 11.1.2.4.  But I don&#8217;t think it could possibly be any worse than it is.  It&#8217;s essentially there for dashboards and everything partially works.  The simplified interface in PBCS on the other hand is pretty great.  It may require 100 extra clicks for a variety of administrative functions, but for end-users, I would consider it an upgrade.</p> <p>One of the reasons I believe this is the addition of navigation flows.  I can create my own customized tile interface for my application and assign it to a user.  This means I can really create a user-specific interface tailored for a specific set of business processes.  This helps me put together a pretty awesome demo and makes end-users feel like it is a more truly customized application.</p> <p>But wait, there is a downside.  I love navigation flows.  And if your users are primarily in the web-based interface, they are amazing.  If the majority of your users are in Excel however&#8230;they will totally be out of luck.  Navigation flows haven&#8217;t made it over there yet.  I&#8217;m not even sure if they can without  a major interface overhaul.</p> <h1>Dashboards</h1> <p>While we are on the topic of the simplified interface, let&#8217;s discuss dashboards.  They do exist, like the simplified interface, in 11.1.2.4.  But, much like the entire simplified interface in 11.1.2.4, they aren&#8217;t great.  PBCS has also added a variety of new visualization types:</p> <ul> <li>Combination Graphs (seriously, how is this not in on-premise)</li> <li>Funnel</li> <li>Radar</li> <li>Tile</li> </ul> <p>While I believe PBCS dashboards are fantastic, they do have at least one major downside.  Again, they don&#8217;t work in Smart View.  But, it&#8217;s a dashboard, so I&#8217;ll give Oracle a free pass.</p> <h1>Browser Support and Mobile Support</h1> <p>For a very long time, Internet Explorer was it with Hyperion.  Finally, Oracle finally brought Firefox into the fold.  Now, with PBCS, it really doesn&#8217;t matter what platform you work on.  The simplified interface is fully compatible with Internet Explorer, Firefox, Chrome, and Safari.  This is of particular importance given how easily I can access PBCS from my phone or tablet.  The interface is great on mobile devices.  This is an area where dashboards can really shine.  To get mobile access in Planning, I have to bribe somebody in IT to open ports on the firewall.  And frankly, I don&#8217;t think any of us have enough money to afford the bribe necessary for that to happen.</p> <h1>Localization</h1> <p>If you haven&#8217;t done a lot of international applications, you probably don&#8217;t care about this at all.  But companies with users all over the world, PBCS has made life much, much better.  First is the ability for PBCS to automatically detect your language settings in your browser and to automatically translate everything that&#8217;s built in.  Oracle has taken this a giant leap further and added something called Artifact Labels.  Essentially I can add languages and labels to all of my objects now.  Instead of a form being Revenue Input for all of my languages, I can now label that form in any language.  This is pretty impressive compared to Planning.</p> <p>Application Reporting</p> <p>No, not financial reports, but reports about the application.  Planning essentially provide nothing in the way of reporting.  You can get a variety of information out of the repository, but that&#8217;s just painful.  PBCS has added a wealth of reporting options.  Here&#8217;s a quick list:</p> <ul> <li>User Login Report &#8211; When and how often are users in the system?</li> <li>Form Definition Report &#8211; Great for documentation, this produces a PDF of selected forms with the entire definition in a nice set of tables.  Rows, column, POV, page, business rules, etc.</li> <li>Approval Status Report &#8211; How can I tell where everyone is on their approvals?  This will produce a report providing just that in a variety of formats including XLSX and HTML.</li> <li>Access Control Report &#8211; See how everyone is provisioned.  It will show either explicitly assigned rights or effective rights.  Pretty convenient.</li> <li>Activity Reports &#8211; Check out what your users are up to.</li> <li>Access Logs &#8211; Get the full picture of everything that happened.</li> <li>Audit Report &#8211; Finally, I don&#8217;t have to query the HSP_AUDIT_RECORDS table.  I also don&#8217;t have to go to the specific cell.  I can run a quick export to Excel.  Not perfect, but I&#8217;ll take it.</li> </ul> <h1>Groovy Business Rules</h1> <p>With EPBCS, I can now write business rules in Groovy.  These rules can go far beyond the simple bounds of Essbase data.  They can pull context from the application itself.  I am sad that this feature has not yet and will likely not ever make it into regular PBCS.  Here&#8217;s hoping.</p> <h1>LCM Maturity</h1> <p>I&#8217;ve been using LCM for a long, long time.  I can&#8217;t point to specific things in LCM that are better, but I can describe LCM in PBCS as more &#8220;mature.&#8221;  It just feels more stable and seems to work better.  This could just be in my head (and Jake&#8217;s)&#8230;</p> <h1>Academy</h1> <p>I know, on-premise applications have a ton of documentation.  But, there&#8217;s something to be said for easy access to what I&#8217;m looking for.  There is a ton of content on the Academy and much if it is especially useful for new users.  Planning for new users are basically on their own.</p> <h1>No Infrastructure Needs</h1> <p>For those of you that do infrastructure, this is not a plus.  But for the rest of us, not needing to install and configure the system is just easy.  I don&#8217;t have to worry about something in IT getting messed up.  I don&#8217;t have to worry about applying patches.  Having said that, you do lose control of your infrastructure.  But hey, it&#8217;s the cloud.</p> <h1>No VPN Necessary</h1> <p>I mentioned earlier that I can finally access my PBCS application with my mobile devices.  The cloud makes this so much easier.  Not only that, but if you need to give your consultant access to the system, it takes 5 minutes and doesn&#8217;t require hours of paperwork and begging of IT.  I love not needing yet another VPN connection just to modify a form.</p> <h1>Free FDMEE!</h1> <p>Okay, so it isn&#8217;t FDMEE.  But for most client, it does more than enough.  And again&#8230;it is free.  So stop complaining that it only loads text files.</p> <h1>Conclusion</h1> <p>Having said all of that, and it was a lot, PBCS still isn&#8217;t for everyone.  But as time passes and development continues for PBCS while it stands still for Planning, it is becoming more and more difficult to ask the question why PBCS?  Instead we really have to ask why NOT PBCS?</p> <p>The post <a rel="nofollow" href="https://www.epmmarshall.com/pbcs-vs-premise-hyperion-planning-new-features/">PBCS vs. On-Premise Hyperion Planning: New Features</a> appeared first on <a rel="nofollow" href="https://www.epmmarshall.com">EPM Marshall</a>.</p> Brian Marshall https://www.epmmarshall.com/?p=1663 Mon Jan 29 2018 15:51:58 GMT-0500 (EST) PBCS vs. On-Premise Hyperion Planning: New Features https://www.epmmarshall.com/pbcs-vs-premise-hyperion-planning-new-features/ <p>As we all know, Oracle has put virtually all of their development efforts into the cloud.  This is especially true for the EPM Suite of products (PBCS, FCCS, ARCS, etc.).  As a result, PBCS keeps getting great new features that we may never see in on-premise Hyperion Planning.  I was talking to Jake Turrell today and we were comparing notes on the new functionality that we have used in PBCS on projects recently.  That conversation devolved into us making a rather long list of new features.  Special thanks to Jake for helping me make this list, as I wouldn&#8217;t have thought of a good portion of the things on it without his help.  So what new functionality has been added to PBCS that will likey never make it to on-premise Hyperion Planning?</p> <h1>Forms</h1> <p>Hyperion Planning has existed for over 15 years now, so you might think that the form design capabilities would be fully-baked by now.  For the most part, this is a true statement.  But, there have been some pretty big holes that PBCS has finally filled.  Two new additions in particular make for a better form design experience for developers:  Exclusions and Ranges.</p> <h2>Exclusions</h2> <p>In Planning, when we attempt to select members, that&#8217;s the only option&#8230;select members.  In PBCS, they have added the ability to edit the selection (our old select members option) and the ability to add exclusions.  Exclusions give us an easy way to take, for example, inclusive descendants of our entity dimension while excluding a specific list.  This is particularly useful when we are referencing a substitution variable or a user variable.  We don&#8217;t know the full extent of what could be returns, but we do know what we definitely don&#8217;t want.</p> <h2>Ranges</h2> <p>When you do monthly forecasting, nothing has been more annoying in form design than the inability to easy specify a range of members.  In Planning, I can&#8217;t just ask the form to give me Jan through &amp;CurrentMonth in one column and &amp;CurrentMonth through Dec in another column.  This means to really make my forms dynamic, I need more substitution variables than I&#8217;m comfortable with and a form that has a ton of columns with the combinations.  In PBCS, I now have four new member selection functions that allow me to put together a range:</p> <ul> <li>Left Siblings</li> <li>Left Sibling (inc)</li> <li>Right Siblings</li> <li>Right Siblings (inc)</li> </ul> <p>Finally!  I can do a range of members with just two columns and a single substitution variable!</p> <h2>Formatting</h2> <p>We can now format our forms!  You can change colors, font styles, add lines, along with other formatting options.  These options will show up in Excel and in the Simplified Interface.  This does not work in Workspace&#8230;but who cares, it&#8217;s officially dead in PBCS anyway as of the February release coming out shortly.</p> <h1>Smart Forms</h1> <p>Not to be confused with regular forms&#8230;we have Smart Forms.  This is an exciting new feature that allows you to take an ad hoc form, add formulas, and save them to the actual form!  While this is cool for a demo, I&#8217;m not necessarily a fan in practice.  While it is much better than building formulas in an actual form, which is painful, it still presents a problem.  Why are you doing form math?  In general I try to put math back in the Essbase model rather than having formulas on multiple forms.</p> <h1>Periods</h1> <p>In Planning, if I want to add periods to just a single plan type, I&#8217;m totally out of luck.  The boxes are all grey and there&#8217;s no way around it.  In PBCS, I can now simply un-check the plan types from which I would like to exclude the member.  This is a simple feature, but makes a massive difference in the flexibility in our designs.</p> <h1>Years</h1> <p>For literally years I&#8217;ve helped companies add and delete years from Planning applications.  There are a few ways to do this, but none of them are supported or in the interface.  In PBCS, if I want to delete a year, I simply select the year and click the delete button.  Again, this is super-simple, but so very nice to have.  Additionally, if I want to add years in the past, I can now do this in the interface!  Simply add the number of years you wish to add, and when PBCS asks if you would like to add them to the end, click no.  Now you have years years in the past.  This feature is a little more obfuscated, but still pretty simple.</p> <h1>Data Maps</h1> <p>On-Premise planning does have the idea of a reporting cube and it does give you the ability to create some level of mapping.  But it definitely doesn&#8217;t do what PBCS does.  PBCS has the ability to map and move data on the fly and then it takes it a step further:  Smart Push.  Smart Push is one of the most amazing features that they have added to PBCS.  For many applications, it gives us the ability to have an ASO cube with live data from our BSO cube with no crazy partitions or really any work at all beyond the mapping.  So as long as we input to our BSO cube and report from our ASO cube, I may never need to aggregate my BSO cube again.</p> <p>It is fair to mention that while this functionality is not baked into Planning, if you really need it, you can build it from the ground up with some fancy scripting on the back end.  Even still, it doesn&#8217;t hold a candle to the ease of use and stability of Smart Push.</p> <h1>Valid Intersections</h1> <p>I&#8217;ve been demoing Planning and Essbase for a very long time.  When people ask what benefit Essbase might have over Planning, there are very few good answers.  One of those answers however has always been that Essbase can support what we call matrix security.  This is essentially the ability to allow a user to have write access to a cross dimensional set of intersections.  For instance, for Entity A I can modify Account 1000 while for Entity B I can modify Account 2000.  Planning simply doesn&#8217;t support that.  I have to give a user Entity A, Entity B, Account 1000 and Account 2000.  That user will be able to modify all combinations.</p> <p>PBCS fixes this.  With valid intersections, I can create a set of intersections as defined above and limit the user&#8217;s ability to write back to invalid intersections.  From a security perspective, they still have access, but with valid intersections, they lose it.  Many people wanted valid intersections to give us the ability to cascade member selections across dimensions, which would be cool, but this functionality is just as useful.</p> <h1>SmartLists</h1> <p>I know what you&#8217;re thinking, Planning has SmartLists.  But PBCS has SmartLists that can be dynamically created directly from a dimension.  This means that I can provide the user with a list of accounts.  Big deal&#8230;who cares, right?  I care if I add an account.  With this new functionality, when an account is added, the SmartList is updated automagically.  Ok&#8230;that is a big deal.  Not content with this already amazing feature, Oracle took it a step further.  You can also reference the value of a SmartList in a calculation.  This means that I can use the selection in a SmartList to truly manipulate data.  Basically a new alias is created that references the OBJECT_ID.  That OBJECT_ID is also used as the value stored in Essbase for the SmartList selection.  Combined, I can easily reference the member that the SmartList is linked to.  Like I said&#8230;big deal.  Huuuuuge even.</p> <h1>Attribute Dimensions</h1> <p>This is another item that has some support in Planning, but missed the point.  I can technically add attribute dimensions to a Planning application and I can use them in a variety of ways.  But the two ways I need to be able to use them are missing.  They can&#8217;t be used in a form.  They can&#8217;t be used in Smart View.  I can technically use an Essbase connection directly and use them for analysis, but that only works on BSO and doesn&#8217;t work at all on ASO Plan Types.</p> <p>PBCS fixes both of these issues.  I can layer in attribute dimensions easily on forms.  It also fixes the Smart View issues by allowing for attribute dimension selection in the Planning Ad Hoc connector.  We&#8217;ve only been asking for this in Planning for a decade.  The chances seem so very slim that we actually ever see it given the list ten years.</p> <h1>Navigation Flows</h1> <p>Technically speaking, the simplified interface is available in 11.1.2.4.  But I don&#8217;t think it could possibly be any worse than it is.  It&#8217;s essentially there for dashboards and everything partially works.  The simplified interface in PBCS on the other hand is pretty great.  It may require 100 extra clicks for a variety of administrative functions, but for end-users, I would consider it an upgrade.</p> <p>One of the reasons I believe this is the addition of navigation flows.  I can create my own customized tile interface for my application and assign it to a user.  This means I can really create a user-specific interface tailored for a specific set of business processes.  This helps me put together a pretty awesome demo and makes end-users feel like it is a more truly customized application.</p> <p>But wait, there is a downside.  I love navigation flows.  And if your users are primarily in the web-based interface, they are amazing.  If the majority of your users are in Excel however&#8230;they will totally be out of luck.  Navigation flows haven&#8217;t made it over there yet.  I&#8217;m not even sure if they can without  a major interface overhaul.</p> <h1>Dashboards</h1> <p>While we are on the topic of the simplified interface, let&#8217;s discuss dashboards.  They do exist, like the simplified interface, in 11.1.2.4.  But, much like the entire simplified interface in 11.1.2.4, they aren&#8217;t great.  PBCS has also added a variety of new visualization types:</p> <ul> <li>Combination Graphs (seriously, how is this not in on-premise)</li> <li>Funnel</li> <li>Radar</li> <li>Tile</li> </ul> <p>While I believe PBCS dashboards are fantastic, they do have at least one major downside.  Again, they don&#8217;t work in Smart View.  But, it&#8217;s a dashboard, so I&#8217;ll give Oracle a free pass.</p> <h1>Browser Support and Mobile Support</h1> <p>For a very long time, Internet Explorer was it with Hyperion.  Finally, Oracle finally brought Firefox into the fold.  Now, with PBCS, it really doesn&#8217;t matter what platform you work on.  The simplified interface is fully compatible with Internet Explorer, Firefox, Chrome, and Safari.  This is of particular importance given how easily I can access PBCS from my phone or tablet.  The interface is great on mobile devices.  This is an area where dashboards can really shine.  To get mobile access in Planning, I have to bribe somebody in IT to open ports on the firewall.  And frankly, I don&#8217;t think any of us have enough money to afford the bribe necessary for that to happen.</p> <h1>Localization</h1> <p>If you haven&#8217;t done a lot of international applications, you probably don&#8217;t care about this at all.  But companies with users all over the world, PBCS has made life much, much better.  First is the ability for PBCS to automatically detect your language settings in your browser and to automatically translate everything that&#8217;s built in.  Oracle has taken this a giant leap further and added something called Artifact Labels.  Essentially I can add languages and labels to all of my objects now.  Instead of a form being Revenue Input for all of my languages, I can now label that form in any language.  This is pretty impressive compared to Planning.</p> <p>Application Reporting</p> <p>No, not financial reports, but reports about the application.  Planning essentially provide nothing in the way of reporting.  You can get a variety of information out of the repository, but that&#8217;s just painful.  PBCS has added a wealth of reporting options.  Here&#8217;s a quick list:</p> <ul> <li>User Login Report &#8211; When and how often are users in the system?</li> <li>Form Definition Report &#8211; Great for documentation, this produces a PDF of selected forms with the entire definition in a nice set of tables.  Rows, column, POV, page, business rules, etc.</li> <li>Approval Status Report &#8211; How can I tell where everyone is on their approvals?  This will produce a report providing just that in a variety of formats including XLSX and HTML.</li> <li>Access Control Report &#8211; See how everyone is provisioned.  It will show either explicitly assigned rights or effective rights.  Pretty convenient.</li> <li>Activity Reports &#8211; Check out what your users are up to.</li> <li>Access Logs &#8211; Get the full picture of everything that happened.</li> <li>Audit Report &#8211; Finally, I don&#8217;t have to query the HSP_AUDIT_RECORDS table.  I also don&#8217;t have to go to the specific cell.  I can run a quick export to Excel.  Not perfect, but I&#8217;ll take it.</li> </ul> <h1>Groovy Business Rules</h1> <p>With EPBCS, I can now write business rules in Groovy.  These rules can go far beyond the simple bounds of Essbase data.  They can pull context from the application itself.  I am sad that this feature has not yet and will likely not ever make it into regular PBCS.  Here&#8217;s hoping.</p> <h1>LCM Maturity</h1> <p>I&#8217;ve been using LCM for a long, long time.  I can&#8217;t point to specific things in LCM that are better, but I can describe LCM in PBCS as more &#8220;mature.&#8221;  It just feels more stable and seems to work better.  This could just be in my head (and Jake&#8217;s)&#8230;</p> <h1>Academy</h1> <p>I know, on-premise applications have a ton of documentation.  But, there&#8217;s something to be said for easy access to what I&#8217;m looking for.  There is a ton of content on the Academy and much if it is especially useful for new users.  Planning for new users are basically on their own.</p> <h1>No Infrastructure Needs</h1> <p>For those of you that do infrastructure, this is not a plus.  But for the rest of us, not needing to install and configure the system is just easy.  I don&#8217;t have to worry about something in IT getting messed up.  I don&#8217;t have to worry about applying patches.  Having said that, you do lose control of your infrastructure.  But hey, it&#8217;s the cloud.</p> <h1>No VPN Necessary</h1> <p>I mentioned earlier that I can finally access my PBCS application with my mobile devices.  The cloud makes this so much easier.  Not only that, but if you need to give your consultant access to the system, it takes 5 minutes and doesn&#8217;t require hours of paperwork and begging of IT.  I love not needing yet another VPN connection just to modify a form.</p> <h1>Free FDMEE!</h1> <p>Okay, so it isn&#8217;t FDMEE.  But for most client, it does more than enough.  And again&#8230;it is free.  So stop complaining that it only loads text files.</p> <h1>Conclusion</h1> <p>Having said all of that, and it was a lot, PBCS still isn&#8217;t for everyone.  But as time passes and development continues for PBCS while it stands still for Planning, it is becoming more and more difficult to ask the question why PBCS?  Instead we really have to ask why NOT PBCS?</p> <p>The post <a rel="nofollow" href="https://www.epmmarshall.com/pbcs-vs-premise-hyperion-planning-new-features/">PBCS vs. On-Premise Hyperion Planning: New Features</a> appeared first on <a rel="nofollow" href="https://www.epmmarshall.com">EPM Marshall</a>.</p> Brian Marshall https://www.epmmarshall.com/?p=1663 Mon Jan 29 2018 15:51:58 GMT-0500 (EST) Mass loading of Attribute Dimension into Oracle PBCS!!! @pdayalan http://onlyhyperion.blogspot.com/2018/01/mass-loading-of-attribute-dimension-in-OraclePBCS-EPBCS.html <div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoNormal">We all knew what is an <a href="https://docs.oracle.com/cloud/latest/pbcs_common/PFUSA/working_with_attributes.htm#PFUSA-f_navigate_workspace_281" target="_blank">Attribute dimension</a> and how to create one in Oracle PBCS/EPBCS. In this post lets see how to bulk load the Attribute dimension into Oracle PBCS/EPBCS.</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-kd7gSIAx7Ic/Wm7L3u13itI/AAAAAAAAcLs/8s-e9ITchpMBG7x9K_uL9DAmZWSHSZAnACLcBGAs/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="165" data-original-width="923" height="114" src="https://4.bp.blogspot.com/-kd7gSIAx7Ic/Wm7L3u13itI/AAAAAAAAcLs/8s-e9ITchpMBG7x9K_uL9DAmZWSHSZAnACLcBGAs/s640/1.jpg" width="640" /></a></div><div class="MsoNormal">If we want to create/update more than 100/1000 of attribute dimension it will be cumbersome to get them created/updated via the Standard Interface.</div><div class="MsoNormal"><o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">In my case I need to load around 100 attribute dimension members, let's call the attribute dimension as “JobTitle” and need&nbsp;to associate them with the Employee dimension.<o:p></o:p></div><div class="MsoNormal"><o:p>&nbsp;</o:p>&nbsp;</div><div class="MsoNormal"><o:p></o:p></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-QfB56jD0cQM/Wm7MMyR18RI/AAAAAAAAcLw/_42A_nMGR3cb9OlAOgBtmV0mR8MKlhQuQCLcBGAs/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="175" data-original-width="404" height="276" src="https://4.bp.blogspot.com/-QfB56jD0cQM/Wm7MMyR18RI/AAAAAAAAcLw/_42A_nMGR3cb9OlAOgBtmV0mR8MKlhQuQCLcBGAs/s640/2.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">Yes, just like any other dimensions&nbsp;you can Export/Import them from the Simplified Interface. The trick is you won't&nbsp;find them listed under Dimension,</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-n1tA4sBYFfk/Wm7RUm-bkZI/AAAAAAAAcMA/6-LSp36wi_MHb6VsxsZpiEO927cXiGsygCLcBGAs/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="562" data-original-width="1180" height="304" src="https://1.bp.blogspot.com/-n1tA4sBYFfk/Wm7RUm-bkZI/AAAAAAAAcMA/6-LSp36wi_MHb6VsxsZpiEO927cXiGsygCLcBGAs/s640/3.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">But when you click on Export/Import button&nbsp;</div><a name='more'></a><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-9jIbkAVR8w8/Wm7SAeUnytI/AAAAAAAAcMI/UTq-HX-7N-crSdvyMTtJgy5pP2odtMe2wCLcBGAs/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="219" data-original-width="1003" height="138" src="https://4.bp.blogspot.com/-9jIbkAVR8w8/Wm7SAeUnytI/AAAAAAAAcMI/UTq-HX-7N-crSdvyMTtJgy5pP2odtMe2wCLcBGAs/s640/4.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><o:p style="text-align: left;">&nbsp;</o:p><span style="text-align: left;">&nbsp;And Create an Import Job, you could see the Attribute dimension listed down</span><a href="https://4.bp.blogspot.com/-xVgOr39NkBY/Wm7SSqsBHuI/AAAAAAAAcMM/WX3FF77_KwYoopyv_frUHKRIb0UL6FFJQCLcBGAs/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="177" data-original-width="1324" height="84" src="https://4.bp.blogspot.com/-xVgOr39NkBY/Wm7SSqsBHuI/AAAAAAAAcMM/WX3FF77_KwYoopyv_frUHKRIb0UL6FFJQCLcBGAs/s640/5.jpg" width="640" /></a></div><br /><div class="MsoNormal"><span style="background-color: yellow;">Note: Do remember&nbsp;the "Clear Members" option is grayed&nbsp;out for Attribute &amp; Smart Lists.</span></div><div class="MsoNormal"><span style="background-color: white;">The File after Export or the Import File should be in the format</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0qT-sEDlL1E/Wm7T75BYOlI/AAAAAAAAcMc/GBQHJ8Sr-7wBsG2ZiLP8flXYVo7gAMnmQCLcBGAs/s1600/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="89" data-original-width="955" height="58" src="https://2.bp.blogspot.com/-0qT-sEDlL1E/Wm7T75BYOlI/AAAAAAAAcMc/GBQHJ8Sr-7wBsG2ZiLP8flXYVo7gAMnmQCLcBGAs/s640/6.jpg" width="640" /></a></div><div class="MsoNormal"><span style="background-color: white;"><br /></span></div><div class="MsoNormal">Another method of loading the Attribute&nbsp;dimension is via the LCM. Remeber we need to have the Attribute Dimension loaded first before associating them with the respective dimension in this case Employee Dimension</div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/--i5h2WD0-6k/Wm7VrNt0RoI/AAAAAAAAcMo/GrpNs-XJ6NwsHkaBjDQjgJCqfZtuhfZlgCEwYBhgL/s1600/7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="469" data-original-width="241" height="400" src="https://2.bp.blogspot.com/--i5h2WD0-6k/Wm7VrNt0RoI/AAAAAAAAcMo/GrpNs-XJ6NwsHkaBjDQjgJCqfZtuhfZlgCEwYBhgL/s400/7.jpg" width="205" /></a></div><div class="MsoNormal">Under the <b>Categories</b>&nbsp;--&gt;&nbsp;<b>Planning</b></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-AFojK0ZFz60/Wm7Wm3efRxI/AAAAAAAAcMw/gt6K2ugicJIuy5x7dmH1rXFXqLFdSt0SQCLcBGAs/s1600/8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="471" data-original-width="567" height="529" src="https://1.bp.blogspot.com/-AFojK0ZFz60/Wm7Wm3efRxI/AAAAAAAAcMw/gt6K2ugicJIuy5x7dmH1rXFXqLFdSt0SQCLcBGAs/s640/8.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">The Export/Import of the file will be in this format&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-I8y9sOlZNI0/Wm7X0Dr--lI/AAAAAAAAcM8/cZqGBFU5fMkhc9eiDqaNI7fEyqkhvvaaACLcBGAs/s1600/9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="79" data-original-width="890" height="56" src="https://1.bp.blogspot.com/-I8y9sOlZNI0/Wm7X0Dr--lI/AAAAAAAAcM8/cZqGBFU5fMkhc9eiDqaNI7fEyqkhvvaaACLcBGAs/s640/9.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="background-color: yellow;">Note: Don't&nbsp;bother about the UUID when you perform an Import, you can either leave it blank or copy an existing&nbsp;value and use the same value for all the rows. The system will assign the UUID in either case. So you are good there.</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both;">So choose either one of the method and get your Attribute dimension loaded. Once you have them in place then you can load your Employee Dimension.&nbsp;</div><div><br /></div><div class="separator" style="clear: both; text-align: left;">This is Employee&nbsp;import file with the Attribute assignment for each employee,</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-E0I8SCPWn0E/Wm7ab0lOJcI/AAAAAAAAcNI/Mh98BeMbqzUCOh_WolAKsvghiNRmLnW2QCLcBGAs/s1600/10.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="946" height="16" src="https://1.bp.blogspot.com/-E0I8SCPWn0E/Wm7ab0lOJcI/AAAAAAAAcNI/Mh98BeMbqzUCOh_WolAKsvghiNRmLnW2QCLcBGAs/s200/10.jpg" width="200" /></a></div><a href="https://3.bp.blogspot.com/-i2pVKkmDuxM/Wm7acCIOyuI/AAAAAAAAcNM/_CaCyCY6tiw81NikGX7Z4tBWeyF1IxecACLcBGAs/s1600/11.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="110" data-original-width="826" height="25" src="https://3.bp.blogspot.com/-i2pVKkmDuxM/Wm7acCIOyuI/AAAAAAAAcNM/_CaCyCY6tiw81NikGX7Z4tBWeyF1IxecACLcBGAs/s200/11.jpg" width="200" /></a><br /><div class="separator" style="clear: both; text-align: left;">I did used the Dimension Import option to load the Employee Dimension, with the above file.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">That's it for now, Happy time with Oracle PBCS!!!</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><o:p style="background-color: yellow;"><br /></o:p></div></div> Dayalan Punniyamoorthy tag:blogger.com,1999:blog-8461568663053917221.post-5303592707510344103 Mon Jan 29 2018 04:53:00 GMT-0500 (EST) Mass loading of Attribute Dimension into Oracle PBCS!!! http://onlyhyperion.blogspot.com/2018/01/mass-loading-of-attribute-dimension-in-OraclePBCS-EPBCS.html <div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoNormal">We all knew what is an <a href="https://docs.oracle.com/cloud/latest/pbcs_common/PFUSA/working_with_attributes.htm#PFUSA-f_navigate_workspace_281" target="_blank">Attribute dimension</a> and how to create one in Oracle PBCS/EPBCS. In this post lets see how to bulk load the Attribute dimension into Oracle PBCS/EPBCS.</div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-kd7gSIAx7Ic/Wm7L3u13itI/AAAAAAAAcLs/8s-e9ITchpMBG7x9K_uL9DAmZWSHSZAnACLcBGAs/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="165" data-original-width="923" height="114" src="https://4.bp.blogspot.com/-kd7gSIAx7Ic/Wm7L3u13itI/AAAAAAAAcLs/8s-e9ITchpMBG7x9K_uL9DAmZWSHSZAnACLcBGAs/s640/1.jpg" width="640" /></a></div><div class="MsoNormal">If we want to create/update more than 100/1000 of attribute dimension it will be cumbersome to get them created/updated via the Standard Interface.</div><div class="MsoNormal"><o:p></o:p></div><div class="MsoNormal"><br /></div><div class="MsoNormal">In my case I need to load around 100 attribute dimension members, let's call the attribute dimension as “JobTitle” and need&nbsp;to associate them with the Employee dimension.<o:p></o:p></div><div class="MsoNormal"><o:p>&nbsp;</o:p>&nbsp;</div><div class="MsoNormal"><o:p></o:p></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-QfB56jD0cQM/Wm7MMyR18RI/AAAAAAAAcLw/_42A_nMGR3cb9OlAOgBtmV0mR8MKlhQuQCLcBGAs/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="175" data-original-width="404" height="276" src="https://4.bp.blogspot.com/-QfB56jD0cQM/Wm7MMyR18RI/AAAAAAAAcLw/_42A_nMGR3cb9OlAOgBtmV0mR8MKlhQuQCLcBGAs/s640/2.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">Yes, just like any other dimensions&nbsp;you can Export/Import them from the Simplified Interface. The trick is you won't&nbsp;find them listed under Dimension,</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-n1tA4sBYFfk/Wm7RUm-bkZI/AAAAAAAAcMA/6-LSp36wi_MHb6VsxsZpiEO927cXiGsygCLcBGAs/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="562" data-original-width="1180" height="304" src="https://1.bp.blogspot.com/-n1tA4sBYFfk/Wm7RUm-bkZI/AAAAAAAAcMA/6-LSp36wi_MHb6VsxsZpiEO927cXiGsygCLcBGAs/s640/3.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">But when you click on Export/Import button&nbsp;</div><a name='more'></a><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-9jIbkAVR8w8/Wm7SAeUnytI/AAAAAAAAcMI/UTq-HX-7N-crSdvyMTtJgy5pP2odtMe2wCLcBGAs/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="219" data-original-width="1003" height="138" src="https://4.bp.blogspot.com/-9jIbkAVR8w8/Wm7SAeUnytI/AAAAAAAAcMI/UTq-HX-7N-crSdvyMTtJgy5pP2odtMe2wCLcBGAs/s640/4.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><o:p style="text-align: left;">&nbsp;</o:p><span style="text-align: left;">&nbsp;And Create an Import Job, you could see the Attribute dimension listed down</span><a href="https://4.bp.blogspot.com/-xVgOr39NkBY/Wm7SSqsBHuI/AAAAAAAAcMM/WX3FF77_KwYoopyv_frUHKRIb0UL6FFJQCLcBGAs/s1600/5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="177" data-original-width="1324" height="84" src="https://4.bp.blogspot.com/-xVgOr39NkBY/Wm7SSqsBHuI/AAAAAAAAcMM/WX3FF77_KwYoopyv_frUHKRIb0UL6FFJQCLcBGAs/s640/5.jpg" width="640" /></a></div><br /><div class="MsoNormal"><span style="background-color: yellow;">Note: Do remember&nbsp;the "Clear Members" option is grayed&nbsp;out for Attribute &amp; Smart Lists.</span></div><div class="MsoNormal"><span style="background-color: white;">The File after Export or the Import File should be in the format</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0qT-sEDlL1E/Wm7T75BYOlI/AAAAAAAAcMc/GBQHJ8Sr-7wBsG2ZiLP8flXYVo7gAMnmQCLcBGAs/s1600/6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="89" data-original-width="955" height="58" src="https://2.bp.blogspot.com/-0qT-sEDlL1E/Wm7T75BYOlI/AAAAAAAAcMc/GBQHJ8Sr-7wBsG2ZiLP8flXYVo7gAMnmQCLcBGAs/s640/6.jpg" width="640" /></a></div><div class="MsoNormal"><span style="background-color: white;"><br /></span></div><div class="MsoNormal">Another method of loading the Attribute&nbsp;dimension is via the LCM. Remeber we need to have the Attribute Dimension loaded first before associating them with the respective dimension in this case Employee Dimension</div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/--i5h2WD0-6k/Wm7VrNt0RoI/AAAAAAAAcMo/GrpNs-XJ6NwsHkaBjDQjgJCqfZtuhfZlgCEwYBhgL/s1600/7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="469" data-original-width="241" height="400" src="https://2.bp.blogspot.com/--i5h2WD0-6k/Wm7VrNt0RoI/AAAAAAAAcMo/GrpNs-XJ6NwsHkaBjDQjgJCqfZtuhfZlgCEwYBhgL/s400/7.jpg" width="205" /></a></div><div class="MsoNormal">Under the <b>Categories</b>&nbsp;--&gt;&nbsp;<b>Planning</b></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-AFojK0ZFz60/Wm7Wm3efRxI/AAAAAAAAcMw/gt6K2ugicJIuy5x7dmH1rXFXqLFdSt0SQCLcBGAs/s1600/8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="471" data-original-width="567" height="529" src="https://1.bp.blogspot.com/-AFojK0ZFz60/Wm7Wm3efRxI/AAAAAAAAcMw/gt6K2ugicJIuy5x7dmH1rXFXqLFdSt0SQCLcBGAs/s640/8.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;">The Export/Import of the file will be in this format&nbsp;</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-I8y9sOlZNI0/Wm7X0Dr--lI/AAAAAAAAcM8/cZqGBFU5fMkhc9eiDqaNI7fEyqkhvvaaACLcBGAs/s1600/9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="79" data-original-width="890" height="56" src="https://1.bp.blogspot.com/-I8y9sOlZNI0/Wm7X0Dr--lI/AAAAAAAAcM8/cZqGBFU5fMkhc9eiDqaNI7fEyqkhvvaaACLcBGAs/s640/9.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: left;"><span style="background-color: yellow;">Note: Don't&nbsp;bother about the UUID when you perform an Import, you can either leave it blank or copy an existing&nbsp;value and use the same value for all the rows. The system will assign the UUID in either case. So you are good there.</span></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both;">So choose either one of the method and get your Attribute dimension loaded. Once you have them in place then you can load your Employee Dimension.&nbsp;</div><div><br /></div><div class="separator" style="clear: both; text-align: left;">This is Employee&nbsp;import file with the Attribute assignment for each employee,</div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-E0I8SCPWn0E/Wm7ab0lOJcI/AAAAAAAAcNI/Mh98BeMbqzUCOh_WolAKsvghiNRmLnW2QCLcBGAs/s1600/10.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="946" height="16" src="https://1.bp.blogspot.com/-E0I8SCPWn0E/Wm7ab0lOJcI/AAAAAAAAcNI/Mh98BeMbqzUCOh_WolAKsvghiNRmLnW2QCLcBGAs/s200/10.jpg" width="200" /></a></div><a href="https://3.bp.blogspot.com/-i2pVKkmDuxM/Wm7acCIOyuI/AAAAAAAAcNM/_CaCyCY6tiw81NikGX7Z4tBWeyF1IxecACLcBGAs/s1600/11.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="110" data-original-width="826" height="25" src="https://3.bp.blogspot.com/-i2pVKkmDuxM/Wm7acCIOyuI/AAAAAAAAcNM/_CaCyCY6tiw81NikGX7Z4tBWeyF1IxecACLcBGAs/s200/11.jpg" width="200" /></a><br /><div class="separator" style="clear: both; text-align: left;">I did used the Dimension Import option to load the Employee Dimension, with the above file.</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">That's it for now, Happy time with Oracle PBCS!!!</div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="MsoNormal"><br /></div><div class="MsoNormal"><o:p style="background-color: yellow;"><br /></o:p></div></div> Dayalan Punniyamoorthy tag:blogger.com,1999:blog-8461568663053917221.post-5303592707510344103 Mon Jan 29 2018 04:53:00 GMT-0500 (EST) EPM Cloud Update – February 2018 – EPBCS, FCCS, PCMCS, ARCS & EPRCS http://theepmlab.com/epm-cloud-update-february-2018-epbcs-fccs-pcmcs-arcs-eprcs/ &#160; Oracle releases the application updates documentation on new features and fixed issues from the Applications Release Readiness site. From there, you will be able to check the update for Customer Experience, Human Capital Management, Enterprise Resource Planning, Supply Chain Management, Enterprise Performance Management. &#160; A quick recap of the EPM applications. Planning and Budgeting Cloud Enterprise Planning Cloud... Jun http://theepmlab.com/?p=1868 Sat Jan 27 2018 21:59:40 GMT-0500 (EST) EPM Cloud Update – February 2018 – EPBCS, FCCS, PCMCS, ARCS & EPRCS @_Jun_Zhang_ http://theepmlab.com/epm-cloud-update-february-2018-epbcs-fccs-pcmcs-arcs-eprcs/ &#160; Oracle releases the application updates documentation on new features and fixed issues from the Applications Release Readiness site. From there, you will be able to check the update for Customer Experience, Human Capital Management, Enterprise Resource Planning, Supply Chain Management, Enterprise Performance Management. &#160; A quick recap of the EPM applications. Planning and Budgeting Cloud Enterprise Planning Cloud... Jun http://theepmlab.com/?p=1868 Sat Jan 27 2018 21:59:40 GMT-0500 (EST) 5 Tips and Tricks for OBIEE Power Users https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/tutorials%20for%20obiee%20power%20users.jpg?t=1519157959954" alt="tutorials for obiee power users" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Needless to say, you won’t become an OBIEE power user overnight. If you’re new to the tool, you have a lot to learn. If you’ve been using the tool for a few years, you still have a lot to learn. With OBIEE, the learning never stops.</p> <p>The great news is there are a lot of cool tricks out there that can help you become a better OBIEE user. In this blog post, we’ll cover 5 tips and tricks — and then show you where you can find even more.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ftips-for-obiee-power-users&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users Thu Jan 25 2018 15:18:28 GMT-0500 (EST) 5 Tips and Tricks for OBIEE Power Users @usanalytics @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/tutorials%20for%20obiee%20power%20users.jpg?t=1519081328426" alt="tutorials for obiee power users" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>Needless to say, you won’t become an OBIEE power user overnight. If you’re new to the tool, you have a lot to learn. If you’ve been using the tool for a few years, you still have a lot to learn. With OBIEE, the learning never stops.</p> <p>The great news is there are a lot of cool tricks out there that can help you become a better OBIEE user. In this blog post, we’ll cover 5 tips and tricks — and then show you where you can find even more.</p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ftips-for-obiee-power-users&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/tips-for-obiee-power-users Thu Jan 25 2018 15:18:28 GMT-0500 (EST) Oracle Cloud Release: A Milestone is Achieved @opal_epm https://womaninepm.com/2018/01/25/oracle-cloud-release-a-milestone-is-achieved/ Today, EDMCS (Enterprise Data Management Cloud) formally launches! Not all details have been released for EDMCS publicly, but with partner training looming next month I expect to see blog posts about this interesting new addition to the master data space soon. EDMCS (also known as &#8220;DRM on the Cloud&#8221;) will provide customers the ability to &#8230; <a href="https://womaninepm.com/2018/01/25/oracle-cloud-release-a-milestone-is-achieved/" class="more-link">Continue reading <span class="screen-reader-text">Oracle Cloud Release: A Milestone is&#160;Achieved</span></a> OpaL http://womaninepm.com/?p=11916 Thu Jan 25 2018 12:00:02 GMT-0500 (EST) Oracle Cloud Release: A Milestone is Achieved https://womaninepm.com/2018/01/25/oracle-cloud-release-a-milestone-is-achieved/ Today, EDMCS (Enterprise Data Management Cloud) formally launches! Not all details have been released for EDMCS publicly, but with partner training looming next month I expect to see blog posts about this interesting new addition to the master data space soon. EDMCS (also known as &#8220;DRM on the Cloud&#8221;) will provide customers the ability to &#8230; <a href="https://womaninepm.com/2018/01/25/oracle-cloud-release-a-milestone-is-achieved/" class="more-link">Continue reading <span class="screen-reader-text">Oracle Cloud Release: A Milestone is&#160;Achieved</span></a> OpaL http://womaninepm.com/?p=11916 Thu Jan 25 2018 12:00:02 GMT-0500 (EST) Pushing Smart View Private Connections to Users @SummerWatson75 https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/ <p>I worked with the other Schwartberg (Ross, not Glenn.  Which, by the way, are both equally smart) on another issue a few weeks ago.  A client asked him to create a script to push Private Smart View Connections to each user.  You see,  if you share workbooks and don&#8217;t have the EXACT Smart View connection, the workbooks  will  break and armageddon will ensue.</p> <p>First step, onnected to Shared Connections, find the database that needs the private  connection.</p> <p>Right click on the database, select Private Connection</p> <p><img data-attachment-id="345" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svpc/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748" data-orig-size="254,79" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVPC" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748?w=254" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748?w=254" class="alignnone size-full wp-image-345" src="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748" alt="SVPC" srcset="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg 254w, https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=150 150w" sizes="(max-width: 254px) 100vw, 254px" /></p> <p>Create a name for the connection. I suggest using a name that best reflects the database:  Finance_Prod, etc.</p> <p><img data-attachment-id="352" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svurl-2/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748" data-orig-size="420,273" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVURL" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748?w=420" class="alignnone size-full wp-image-352" src="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748" alt="SVURL" srcset="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg 420w, https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=300 300w" sizes="(max-width: 420px) 100vw, 420px" /></p> <p>Verify your Private Connection.</p> <p><img data-attachment-id="347" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svverify/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748" data-orig-size="299,190" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVVerify" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748?w=299" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748?w=299" class="alignnone size-full wp-image-347" src="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748" alt="SVVerify" srcset="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg 299w, https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=150 150w" sizes="(max-width: 299px) 100vw, 299px" /></p> <p>Now for the fun part!  Let&#8217;s mess with our Registry again!  Kids, don&#8217;t try this at home.</p> <p>Navigate to the following folder:</p> <p>HKEY_CURRENT-USER\Software\Hyperion Solutions\HyperionSmartView\Connections listed by connection name.</p> <p><img data-attachment-id="348" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregisty/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748" data-orig-size="1322,960" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegisty" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748?w=748" class="alignnone size-full wp-image-348" src="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748" alt="SVRegisty" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748 748w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=300 300w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=768 768w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=1024 1024w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg 1322w" sizes="(max-width: 748px) 100vw, 748px" /></p> <p>Right Click on Connections and export everything in the folder as <strong>SVConnections.reg.</strong></p> <p><img data-attachment-id="349" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregistryexp/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748" data-orig-size="202,244" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegistryExp" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748?w=202" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748?w=202" class="alignnone size-full wp-image-349" src="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748" alt="SVRegistryExp" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg 202w, https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=124 124w" sizes="(max-width: 202px) 100vw, 202px" /></p> <p><img data-attachment-id="350" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregsave/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748" data-orig-size="512,110" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegSave" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748?w=512" class="alignnone size-full wp-image-350" src="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748" alt="SVRegSave" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg 512w, https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=300 300w" sizes="(max-width: 512px) 100vw, 512px" /></p> <p>Edit the file to include only the connections that need to be publisehd. For example:</p> <p>Windows Registry Editor Version 5.00</p> <p>[HKEY_CURRENT_USER\Software\Hyperion Solutions\HyperionSmartView\Connections]</p> <p>&#8220;EssbaseCluster1_Finance_Prod&#8221;=hex:ff,ff,07,00,0e,00,49,48,79,70,43,6f,6e,6e,65,\ 63,74,69,6f,6e,ff,fe,ff,04,74,00,65,00,73,00,74,00,ff,fe,ff,05,61,00,64,00,\6d,00,69,00,6e,00,ff,fe,ff,24,68,00,74,00,74,00,70,00,3a,00,2f,00,2f,00,73,\00,61,00,6e,00,64,00,62,00,6f,00,78,00,63,00,76,00,3a,00,31,00,39,00,30,00,\30,00,30,00,2f,00,61,00,70,00,73,00,2f,00,53,00,6d,00,61,00,72,00,74,00,56,\ 00,69,00,65,00,77,00,ff,fe,ff,10,45,00,73,00,73,00,62,00,61,00,73,00,65,00,\43,00,6c,00,75,00,73,00,74,00,65,00,72,00,2d,00,31,00,ff,fe,ff,04,44,00,65,\00,6d,00,6f,00,ff,fe,ff,05,42,00,61,00,73,00,69,00,63,00,ff,fe,ff,25,41,00,\ 6e,00,61,00,6c,00,79,00,74,00,69,00,63,00,20,00,53,00,65,00,72,00,76,00,69,\ 00,63,00,65,00,73,00,20,00,53,00,6d,00,61,00,72,00,74,00,20,00,56,00,69,00,\65,00,77,00,20,00,50,00,72,00,6f,00,76,00,69,00,64,00,65,00,72,00,ff,fe,ff,\ 00,ff,fe,ff,00,01,00,00,00,00,00,00,00,ff,fe,ff,1a,41,00,6e,00,61,00,6c,00,\79,00,74,00,69,00,63,00,20,00,50,00,72,00,6f,00,76,00,69,00,64,00,65,00,72,\ 00,20,00,53,00,65,00,72,00,76,00,69,00,63,00,65,00,73,00,ff,fe,ff,04,6e,00,\ 6f,00,6e,00,65,00,ff,fe,ff,00,ff,fe,ff,00,ff,fe,ff,26,7b,00,35,00,36,00,43,\ 00,34,00,33,00,43,00,32,00,45,00,2d,00,38,00,38,00,45,00,35,00,2d,00,34,00,\32,00,37,00,42,00,2d,00,39,00,43,00,42,00,38,00,2d,00,43,00,33,00,32,00,33,\00,44,00,36,00,42,00,45,00,45,00,45,00,30,00,30,00,7d,00,ff,fe,ff,00</p> <p>Save your changes.</p> <p>The changes can manually be applied for the users by simply giving them the .reg file.  They double-click on it to insert the connections into their registry.</p> <p>Administrators can also use Group Policy Management to deploy these registry entries to a group of users.</p> <p>Enjoy!</p> <p>~Sum</p> <p>&nbsp;</p> Summer Watson http://epmsxsw.com/?p=344 Thu Jan 25 2018 10:16:20 GMT-0500 (EST) Pushing Smart View Private Connections to Users https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/ <p>I worked with the other Schwartberg (Ross, not Glenn.  Which, by the way, are both equally smart) on another issue a few weeks ago.  A client asked him to create a script to push Private Smart View Connections to each user.  You see,  if you share workbooks and don&#8217;t have the EXACT Smart View connection, the workbooks  will  break and armageddon will ensue.</p> <p>First step, onnected to Shared Connections, find the database that needs the private  connection.</p> <p>Right click on the database, select Private Connection</p> <p><img data-attachment-id="345" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svpc/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748" data-orig-size="254,79" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVPC" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748?w=254" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748?w=254" class="alignnone size-full wp-image-345" src="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=748" alt="SVPC" srcset="https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg 254w, https://epmsxsw.files.wordpress.com/2018/01/svpc.jpg?w=150 150w" sizes="(max-width: 254px) 100vw, 254px" /></p> <p>Create a name for the connection. I suggest using a name that best reflects the database:  Finance_Prod, etc.</p> <p><img data-attachment-id="352" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svurl-2/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748" data-orig-size="420,273" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVURL" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748?w=420" class="alignnone size-full wp-image-352" src="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=748" alt="SVURL" srcset="https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg 420w, https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svurl1.jpg?w=300 300w" sizes="(max-width: 420px) 100vw, 420px" /></p> <p>Verify your Private Connection.</p> <p><img data-attachment-id="347" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svverify/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748" data-orig-size="299,190" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVVerify" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748?w=299" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748?w=299" class="alignnone size-full wp-image-347" src="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=748" alt="SVVerify" srcset="https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg 299w, https://epmsxsw.files.wordpress.com/2018/01/svverify.jpg?w=150 150w" sizes="(max-width: 299px) 100vw, 299px" /></p> <p>Now for the fun part!  Let&#8217;s mess with our Registry again!  Kids, don&#8217;t try this at home.</p> <p>Navigate to the following folder:</p> <p>HKEY_CURRENT-USER\Software\Hyperion Solutions\HyperionSmartView\Connections listed by connection name.</p> <p><img data-attachment-id="348" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregisty/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748" data-orig-size="1322,960" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegisty" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748?w=748" class="alignnone size-full wp-image-348" src="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748" alt="SVRegisty" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=748 748w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=300 300w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=768 768w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg?w=1024 1024w, https://epmsxsw.files.wordpress.com/2018/01/svregisty.jpg 1322w" sizes="(max-width: 748px) 100vw, 748px" /></p> <p>Right Click on Connections and export everything in the folder as <strong>SVConnections.reg.</strong></p> <p><img data-attachment-id="349" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregistryexp/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748" data-orig-size="202,244" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegistryExp" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748?w=202" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748?w=202" class="alignnone size-full wp-image-349" src="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=748" alt="SVRegistryExp" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg 202w, https://epmsxsw.files.wordpress.com/2018/01/svregistryexp.jpg?w=124 124w" sizes="(max-width: 202px) 100vw, 202px" /></p> <p><img data-attachment-id="350" data-permalink="https://epmsxsw.com/2018/01/25/pushing-smart-view-private-connections-to-users/svregsave/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748" data-orig-size="512,110" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SVRegSave" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748?w=512" class="alignnone size-full wp-image-350" src="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=748" alt="SVRegSave" srcset="https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg 512w, https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/svregsave.jpg?w=300 300w" sizes="(max-width: 512px) 100vw, 512px" /></p> <p>Edit the file to include only the connections that need to be publisehd. For example:</p> <p>Windows Registry Editor Version 5.00</p> <p>[HKEY_CURRENT_USER\Software\Hyperion Solutions\HyperionSmartView\Connections]</p> <p>&#8220;EssbaseCluster1_Finance_Prod&#8221;=hex:ff,ff,07,00,0e,00,49,48,79,70,43,6f,6e,6e,65,\ 63,74,69,6f,6e,ff,fe,ff,04,74,00,65,00,73,00,74,00,ff,fe,ff,05,61,00,64,00,\6d,00,69,00,6e,00,ff,fe,ff,24,68,00,74,00,74,00,70,00,3a,00,2f,00,2f,00,73,\00,61,00,6e,00,64,00,62,00,6f,00,78,00,63,00,76,00,3a,00,31,00,39,00,30,00,\30,00,30,00,2f,00,61,00,70,00,73,00,2f,00,53,00,6d,00,61,00,72,00,74,00,56,\ 00,69,00,65,00,77,00,ff,fe,ff,10,45,00,73,00,73,00,62,00,61,00,73,00,65,00,\43,00,6c,00,75,00,73,00,74,00,65,00,72,00,2d,00,31,00,ff,fe,ff,04,44,00,65,\00,6d,00,6f,00,ff,fe,ff,05,42,00,61,00,73,00,69,00,63,00,ff,fe,ff,25,41,00,\ 6e,00,61,00,6c,00,79,00,74,00,69,00,63,00,20,00,53,00,65,00,72,00,76,00,69,\ 00,63,00,65,00,73,00,20,00,53,00,6d,00,61,00,72,00,74,00,20,00,56,00,69,00,\65,00,77,00,20,00,50,00,72,00,6f,00,76,00,69,00,64,00,65,00,72,00,ff,fe,ff,\ 00,ff,fe,ff,00,01,00,00,00,00,00,00,00,ff,fe,ff,1a,41,00,6e,00,61,00,6c,00,\79,00,74,00,69,00,63,00,20,00,50,00,72,00,6f,00,76,00,69,00,64,00,65,00,72,\ 00,20,00,53,00,65,00,72,00,76,00,69,00,63,00,65,00,73,00,ff,fe,ff,04,6e,00,\ 6f,00,6e,00,65,00,ff,fe,ff,00,ff,fe,ff,00,ff,fe,ff,26,7b,00,35,00,36,00,43,\ 00,34,00,33,00,43,00,32,00,45,00,2d,00,38,00,38,00,45,00,35,00,2d,00,34,00,\32,00,37,00,42,00,2d,00,39,00,43,00,42,00,38,00,2d,00,43,00,33,00,32,00,33,\00,44,00,36,00,42,00,45,00,45,00,45,00,30,00,30,00,7d,00,ff,fe,ff,00</p> <p>Save your changes.</p> <p>The changes can manually be applied for the users by simply giving them the .reg file.  They double-click on it to insert the connections into their registry.</p> <p>Administrators can also use Group Policy Management to deploy these registry entries to a group of users.</p> <p>Enjoy!</p> <p>~Sum</p> <p>&nbsp;</p> Summer Watson http://epmsxsw.com/?p=344 Thu Jan 25 2018 10:16:20 GMT-0500 (EST) All about Meetups! https://devepm.com/2018/01/23/all-about-meetups/ Hey guys how are you doing? It has been a long long LONG time since our last post&#8230;. and we are sorry for that. We having been very busy with a lot of projects (both work and personal) and we had to get some time for us! But we are finally getting back to action! [&#8230;] RZGiampaoli http://devepm.com/?p=1703 Tue Jan 23 2018 13:33:40 GMT-0500 (EST) All about Meetups! @orclEPMblogs https://devepm.com/2018/01/23/all-about-meetups/ Hey guys how are you doing? It has been a long long LONG time since our last post&#8230;. and we are sorry for that. We having been very busy with a lot of projects (both work and personal) and we had to get some time for us! But we are finally getting back to action! [&#8230;] RZGiampaoli http://devepm.com/?p=1703 Tue Jan 23 2018 13:33:40 GMT-0500 (EST) All about Meetups! https://devepm.com/2018/01/23/all-about-meetups/ Hey guys how are you doing? It has been a long long LONG time since our last post&#8230;. and we are sorry for that. We having been very busy with a lot of projects (both work and personal) and we had to get some time for us! But we are finally getting back to action! [&#8230;] RZGiampaoli http://devepm.com/?p=1703 Tue Jan 23 2018 13:33:40 GMT-0500 (EST) My Friends Wayne and Cindy Van Sluys @opal_epm https://womaninepm.com/2018/01/22/my-friends-wayne-and-cindy-van-sluys/ In 2008, I met Wayne for the first time. We both were working for another firm back then. We were thrown together when we were tasked internally to learn an up and coming EPM product at the time &#8211; Oracle Data Integrator, or ODI, for short. What I remember about the Wayne I knew back &#8230; <a href="https://womaninepm.com/2018/01/22/my-friends-wayne-and-cindy-van-sluys/" class="more-link">Continue reading <span class="screen-reader-text">My Friends Wayne and Cindy Van&#160;Sluys</span></a> OpaL http://womaninepm.com/?p=11905 Mon Jan 22 2018 09:42:30 GMT-0500 (EST) My Friends Wayne and Cindy Van Sluys https://womaninepm.com/2018/01/22/my-friends-wayne-and-cindy-van-sluys/ In 2008, I met Wayne for the first time. We both were working for another firm back then. We were thrown together when we were tasked internally to learn an up and coming EPM product at the time &#8211; Oracle Data Integrator, or ODI, for short. What I remember about the Wayne I knew back &#8230; <a href="https://womaninepm.com/2018/01/22/my-friends-wayne-and-cindy-van-sluys/" class="more-link">Continue reading <span class="screen-reader-text">My Friends Wayne and Cindy Van&#160;Sluys</span></a> OpaL http://womaninepm.com/?p=11905 Mon Jan 22 2018 09:42:30 GMT-0500 (EST) Smartview won’t uninstall @SummerWatson75 https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/ <p>I&#8217;ve worked with Smartview and the Essbase add-in since the beginning of time.  Literally.   Remember when you had to rebot after every single install  or uninstall?  Good times.</p> <p>I&#8217;ve been working with OAC (for those that are newbies to the Oracle world, OAC stands for Oracle Analytics Cloud) and Excel 2013.  I was having some issues and realized I needed to download the latest version of SV (11.1.2.5.720).  I THOUGHT I downloaded it correct.  It SAID I was using version 11.1.2.5.720.  My issues did not resolve, so I reached out to Oracle support.  They asked that I uninstall and then restinall SV.</p> <p>OK! No Problem.  I do this in my sleep!</p> <p>Not this time.  That sucker would not uinstall.  It would get stuck at the 30% marker, and not budge.  I reached  out to our very smart team of infrastructure consultants.  Did you know that there is another Schwartzberg out there in the world?   That&#8217;s right, Ross Schwartzberg, who just happens to be the brother of Glenn (I KNOW you know Glenn).</p> <p>Ross and I literally spent HOURS on my computer.  We tried to find the files it was looking for, googled, researched and got really frustrated.  Finally, I said, &#8220;Hey, what if we delete the registry&#8221;.</p> <p>Oh I know..that is a huge NO NO.  Don&#8217;t touch the registry.  I get it.   But dadugm,  I am just not myself without a Smartview install on my machine.  It&#8217;s like bread a butter.  If you&#8217;re an EPM consultant, you HAVE to have Smartview.</p> <p>So, here&#8217;s what we did:</p> <p>Navigated to HKEY_CURRENT_USER\Software\Hyperion Solutions\HyperionSmartView (proof that &#8216;Hyperion&#8217; is truly not dead).</p> <p><img data-attachment-id="341" data-permalink="https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/regegistry/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748" data-orig-size="375,672" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="regegistry" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748?w=167" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748?w=375" class="alignnone size-full wp-image-341" src="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748" alt="regegistry" srcset="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg 375w, https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=84 84w, https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=167 167w" sizes="(max-width: 375px) 100vw, 375px" /></p> <p>Took a backup of HyperionSmartView, and then deleted HyperionSmartView.  I did say &#8220;are we sure about this&#8221; about 100 times.   Again, you don&#8217;t mess with the registry!</p> <p>Then, I navigated to the path where SV gets installed and renamed the current SmartView folder to SmartView_old.</p> <p><img data-attachment-id="342" data-permalink="https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/sv-path/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748" data-orig-size="843,292" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SV path" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748?w=748" class="alignnone size-full wp-image-342" src="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748" alt="SV path" srcset="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748 748w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=300 300w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=768 768w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg 843w" sizes="(max-width: 748px) 100vw, 748px" /></p> <p>After that, I was able to unistall it from Control Panel (where you&#8217;re normally supposed to do it), and remove the SV instances.</p> <p>I then reinstalled 11.1.2.720 with no issues, and all of my OAC issues were gone!</p> <p>So, moral of the story, blow it away in the registry if all else fails.</p> <p>~Sum</p> Summer Watson http://epmsxsw.com/?p=340 Thu Jan 18 2018 09:41:58 GMT-0500 (EST) Smartview won’t uninstall https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/ <p>I&#8217;ve worked with Smartview and the Essbase add-in since the beginning of time.  Literally.   Remember when you had to rebot after every single install  or uninstall?  Good times.</p> <p>I&#8217;ve been working with OAC (for those that are newbies to the Oracle world, OAC stands for Oracle Analytics Cloud) and Excel 2013.  I was having some issues and realized I needed to download the latest version of SV (11.1.2.5.720).  I THOUGHT I downloaded it correct.  It SAID I was using version 11.1.2.5.720.  My issues did not resolve, so I reached out to Oracle support.  They asked that I uninstall and then restinall SV.</p> <p>OK! No Problem.  I do this in my sleep!</p> <p>Not this time.  That sucker would not uinstall.  It would get stuck at the 30% marker, and not budge.  I reached  out to our very smart team of infrastructure consultants.  Did you know that there is another Schwartzberg out there in the world?   That&#8217;s right, Ross Schwartzberg, who just happens to be the brother of Glenn (I KNOW you know Glenn).</p> <p>Ross and I literally spent HOURS on my computer.  We tried to find the files it was looking for, googled, researched and got really frustrated.  Finally, I said, &#8220;Hey, what if we delete the registry&#8221;.</p> <p>Oh I know..that is a huge NO NO.  Don&#8217;t touch the registry.  I get it.   But dadugm,  I am just not myself without a Smartview install on my machine.  It&#8217;s like bread a butter.  If you&#8217;re an EPM consultant, you HAVE to have Smartview.</p> <p>So, here&#8217;s what we did:</p> <p>Navigated to HKEY_CURRENT_USER\Software\Hyperion Solutions\HyperionSmartView (proof that &#8216;Hyperion&#8217; is truly not dead).</p> <p><img data-attachment-id="341" data-permalink="https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/regegistry/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748" data-orig-size="375,672" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="regegistry" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748?w=167" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748?w=375" class="alignnone size-full wp-image-341" src="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=748" alt="regegistry" srcset="https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg 375w, https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=84 84w, https://epmsxsw.files.wordpress.com/2018/01/regegistry.jpg?w=167 167w" sizes="(max-width: 375px) 100vw, 375px" /></p> <p>Took a backup of HyperionSmartView, and then deleted HyperionSmartView.  I did say &#8220;are we sure about this&#8221; about 100 times.   Again, you don&#8217;t mess with the registry!</p> <p>Then, I navigated to the path where SV gets installed and renamed the current SmartView folder to SmartView_old.</p> <p><img data-attachment-id="342" data-permalink="https://epmsxsw.com/2018/01/18/smartview-wont-uninstall/sv-path/" data-orig-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748" data-orig-size="843,292" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SV path" data-image-description="" data-medium-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748?w=300" data-large-file="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748?w=748" class="alignnone size-full wp-image-342" src="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748" alt="SV path" srcset="https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=748 748w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=150 150w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=300 300w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg?w=768 768w, https://epmsxsw.files.wordpress.com/2018/01/sv-path.jpg 843w" sizes="(max-width: 748px) 100vw, 748px" /></p> <p>After that, I was able to unistall it from Control Panel (where you&#8217;re normally supposed to do it), and remove the SV instances.</p> <p>I then reinstalled 11.1.2.720 with no issues, and all of my OAC issues were gone!</p> <p>So, moral of the story, blow it away in the registry if all else fails.</p> <p>~Sum</p> Summer Watson http://epmsxsw.com/?p=340 Thu Jan 18 2018 09:41:58 GMT-0500 (EST) PBCS December 2017 Update http://epmsimplified.blogspot.com/2018/01/pbcs-december-2017-update.html This is a quick post about a recent update in PBCS I noticed by accident 😅,,,<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">TREE VIEW SET AS THE DEFAULT FOR REPORTS AND TASK</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase; white-space: pre-wrap;"> L</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">ISTS</span><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;"><br /></span>I know its not a big deal, but I find it efficient and way easier than the old way of navigating reports and task lists which I found time-consuming and nerve-racking. Coming from On-Premise days and old standard interface where we had the relatively easy to navigate task lists and folders, I'm quite happy with this update.<br /><br />So now when you go to Reports or Tasks the tree view is the default option.<br /><br />Here is my Tasks card, and by default it's shown as tree (yeah finally!)<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="1371" height="236" src="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s640/1.PNG" width="640" /></a></div><br /><br />And from there you simply expand the task you want rather than select the task from a menu.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="612" data-original-width="1431" height="272" src="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s640/2.PNG" width="640" /></a></div><br /><br />And similarly for Reports card<br />&l;br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-4pFE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="448" data-original-width="1383" height="206" src="https://2.bp.blogspot.com/-4pFE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s640/3.PNG" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s1600/4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="633" data-original-width="1374" height="294" src="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s640/4.PNG" width="640" /></a></div><br /><br />Another update was the new dates custom defined functions which can be handy.<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><div class="Heading6 Normal DocDefaults " style="border-bottom: 1px solid rgb(127, 127, 127); break-after: avoid; color: #088193; font-family: sans-serif !important; font-size: 14.6667px; letter-spacing: 0.5pt; line-height: 16.8667px; margin: 0.21in 0in 0in; text-transform: uppercase;"><span style="font-size: 11pt;">NEW CUSTOM FUNCTIONS IN CALCULATION MANAGER</span></div><div class="Normal DocDefaults " style="font-family: Arial; font-size: 14.6667px; line-height: 16.8667px; margin-bottom: 4mm; margin-top: 4mm;"><span class="">Five new custom functions have been added to Calculation Manager. Each of these functions correspond to an existing function in that the existing functions return only positive numbers, and the new functions can return either a positive number or a negative number,</span><span class="" style="white-space: pre-wrap;"> depending on the calculated result. The new functions (and the existing function </span><span class="">to which they correspond) are:</span></div><table class="TableGrid TableNormal " id="docx4j_tbl_1" style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); color: black; font-family: Arial; font-size: 14.6667px; margin-bottom: 7px; margin-left: 0in; margin-top: 7px; position: relative; width: 429.333px;"><thead><tr style="background-color: #d0d0d0; font-weight: bold;"><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 100px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">Existing Function</span></div></th><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 420px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">New Function</span></div></th></tr></thead><tbody><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDateDiff</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDiffDate</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrYearsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrYearsDiff</span></div></td></tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrMonthsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrMonthsDiff</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDaysBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrDaysDiff</span></div></td></tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksDiff</span></div></td></tr></tbody></table><br />It's pretty self explanatory, prior to the new functions you had to make sure your To_Date is after From_Date otherwise you could run into trouble, so we used to workaround this by using validations rules in the form etc, now thanks to the new functions we can build the validation logic in the rule itself if required.<br /><br />So here is a form with dates and I wrote a simple business rule using the old and new functions to highlight the difference. As you can see the new functions can return negative values unlike the old/existing functions which returns positive values and that could be misleading.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s1600/5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="283" data-original-width="588" height="191" src="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s400/5.PNG" width="400" /></a></div><br /><br />That's it for today.<br /><br /><br /><br /><br /><br /> Omar Shubeilat tag:blogger.com,1999:blog-2208425848541526078.post-5721114408412103481 Wed Jan 17 2018 16:55:00 GMT-0500 (EST) PBCS December 2017 Update @omarshubeilat @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://epmsimplified.blogspot.com/2018/01/pbcs-december-2017-update.html This is a quick post about a recent update in PBCS I noticed by accident 😅,,,<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">TREE VIEW SET AS THE DEFAULT FOR REPORTS AND TASK</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase; white-space: pre-wrap;"> L</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">ISTS</span><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;"><br /></span>I know its not a big deal, but I find it efficient and way easier than the old way of navigating reports and task lists which I found time-consuming and nerve-racking. Coming from On-Premise days and old standard interface where we had the relatively easy to navigate task lists and folders, I'm quite happy with this update.<br /><br />So now when you go to Reports or Tasks the tree view is the default option.<br /><br />Here is my Tasks card, and by default it's shown as tree (yeah finally!)<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="1371" height="236" src="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s640/1.PNG" width="640" /></a></div><br /><br />And from there you simply expand the task you want rather than select the task from a menu.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="612" data-original-width="1431" height="272" src="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s640/2.PNG" width="640" /></a></div><br /><br />And similarly for Reports card<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-4pFE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="448" data-original-width="1383" height="206" src="https://2.bp.blogspot.com/-4FE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s640/3.PNG" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s1600/4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="633" data-original-width="1374" height="294" src="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s640/4.PNG" width="640" /></a></div><br /><br />Another update was the new dates custom defined functions which can be handy.<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><div class="Heading6 Normal DocDefaults " style="border-bottom: 1px solid rgb(127, 127, 127); break-after: avoid; color: #088193; font-family: sans-serif !important; font-size: 14.6667px; letter-spacing: 0.5pt; line-height: 16.8667px; margin: 0.21in 0in 0in; text-transform: uppercase;"><span style="font-size: 11pt;">NEW CUSTOM FUNCTIONS IN CALCULATION MANAGER</span></div><div class="Normal DocDefaults " style="font-family: Arial; font-size: 14.6667px; line-height: 16.8667px; margin-bottom: 4mm; margin-top: 4mm;"><span class="">Five new custom functions have been added to Calculation Manager. Each of these functions correspond to an existing function in that the existing functions return only positive numbers, and the new functions can return either a positive number or a negative number,</span><span class="" style="white-space: pre-wrap;"> depending on the calculated result. The new functions (and the existing function </span><span class="">to which they correspond) are:</span></div><table class="TableGrid TableNormal " id="docx4j_tbl_1" style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); color: black; font-family: Arial; font-size: 14.6667px; margin-bottom: 7px; margin-left: 0in; margin-top: 7px; position: relative; width: 429.333px;"><thead><tr style="background-color: #d0d0d0; font-weight: bold;"><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 100px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">Existing Function</span></div></th><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 420px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">New Function</span></div></th></tr></thead><tbody><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDateDiff</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDiffDate</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrYearsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrYearsDiff</span></div></td></tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrMonthsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrMonthsDiff</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDaysBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrDaysDiff</span></div></td></tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksDiff</span></div></td></tr></tbody></table><br />It's pretty self explanatory, prior to the new functions you had to make sure your To_Date is after From_Date otherwise you could run into trouble, so we used to workaround this by using validations rules in the form etc, now thanks to the new functions we can build the validation logic in the rule itself if required.<br /><br />So here is a form with dates and I wrote a simple business rule using the old and new functions to highlight the difference. As you can see the new functions can return negative values unlike the old/existing functions which returns positive values and that could be misleading.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s1600/5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="283" data-original-width="588" height="191" src="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s400/5.PNG" width="400" /></a></div><br /><br />That's it for today.<br /><br /><br /><br /><br /><br /> Omar Shubeilat tag:blogger.com,1999:blog-2208425848541526078.post-5721114408412103481 Wed Jan 17 2018 16:55:00 GMT-0500 (EST) PBCS December 2017 Update @omarshubeilat @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMbgs @orclEPMblogs http://epmsimplified.blogspot.com/2018/01/pbcs-december-2017-update.html This is a quick post about a recent upde in PBCS I noticed by accident 😅,,,<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">TREE VIEW SET AS THE DEFAULT FOR REPORTS AND TASK</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase; white-space: pre-wrap;"> L</span><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;">ISTS</span><br /><span style="color: #088193; font-family: sans-serif; font-size: 14.6667px; letter-spacing: 0.666667px; text-transform: uppercase;"><br /></span>I know its not a big deal, but I find it efficient and way easier than the old way of navigating reports and task lists which I found time-consuming and nerve-racking. Coming from On-Premise days and old standard interface where we had the relatively easy to navigate task lists and folders, I'm quite happy with this update.<br /><br />So now when you go to Reports or Tasks the tree view is the default option.<br /><br />Here is my Tasks card, and by default it's shown as tree (yeah finally!)<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s1600/1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="510" data-original-width="1371" height="236" src="https://3.bp.blogspot.com/-RMnwtWYLsTM/Wl6qmIBi0qI/AAAAAAAAOH8/z9bdBBbzNik_ZRGVDrC6hzn9SsUhYPsGgCLcBGAs/s640/1.PNG" width="640" /></a></div><br /><br />And from there you simply expand the task you want rather than select the task from a menu.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s1600/2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="612" data-original-width="1431" height="272" src="https://4.bp.blogspot.com/-xORLRmL5mas/Wl6qmMUAxtI/AAAAAAAAOIE/gLtESbgKbBoPi3cVvJ5B7E0piWbY9a_owCEwYBhgL/s640/2.PNG" width="640" /></a></div><br /><br />And similarly for Reports card<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-4pFE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s1600/3.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="448" data-original-width="1383" height="206" src="https://2.bp.blogspot.com/-4pFE8qE-20I/Wl6qmI8g7CI/AAAAAAAAOIA/aQo34R7N9iIB0iufsdUemwNPJrmZT5_bACEwYBhgL/s640/3.PNG" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s1600/4.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="633" data-original-width="1374" height="294" src="https://2.bp.blogspot.com/-G1J6C4QFPic/Wl6qnDdfAyI/AAAAAAAAOII/J7_EmlVDjR00dfsT8SyRdlbbtl4Wm2d2QCEwYBhgL/s640/4.PNG" width="640" /></a></div><br /><br />Another update was the new dates custom defined functions which can be handy.<br /><br /><i>The update as specified by Oracle&nbsp;<a href="http://www.oracle.com/webfolder/technetwork/tutorials/tutorial/cloud/pbcs/1712-pbcs-wn.htm" target="_blank">December 2017 Planning and Budgeting Update</a></i><br /><div class="Heading6 Normal DocDefaults " style="border-bottom: 1px solid rgb(127, 127, 127); break-after: avoid; color: #088193; font-family: sans-serif !important; font-size: 14.6667px; letter-spacing: 0.5pt; line-height: 16.8667px; margin: 0.21in 0in 0in; text-transform: uppercase;"><span style="font-size: 11pt;">NEW CUSTOM FUNCTIONS IN CALCULATION MANAGER</span></div><div class="Normal DocDefaults " style="font-family: Arial; font-size: 14.6667px; line-height: 16.8667px; margin-bottom: 4mm; margin-top: 4mm;"><span class="">Five new custom functions have been added to Calculation Manager. Each of these functions correspond to an existing function in that the existing functions return only positive numbers, and the new functions can return either a positive number or a negative number,</span><span class="" style="white-space: pre-wrap;"> depending on the calculated result. The new functions (and the existing function </span><span class="">to which they correspond) are:</span></div><table class="TableGrid TableNormal " id="docx4j_tbl_1" style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); color: black; font-family: Arial; font-size: 14.6667px; margin-bottom: 7px; margin-left: 0in; margin-top: 7px; position: relative; width: 429.333px;"><thead><tr style="background-color: #d0d0d0; font-weight: bold;"><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 100px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">Existing Function</span></div></th><th style="background-color: #d9d9d9; border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; text-align: left !important; vertical-align: bottom; width: 420px;"><div class="BodyText-TableGrid-BR DocDefaults " style="font-size: 11pt; line-height: 14.6667px; margin-bottom: 1mm; margin-top: 1mm; text-align: justify;"><span class="DefaultParagraphFont " style="display: inline;">New Function</span></div></th></tr></thead><tbody><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDateDiff</span><iv></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDiffDate</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrYearsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrYearsDiff</span></div></td>t;/tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " styl"font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;">&ltpan class="">@CalcMgrMonthsBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrMonthsDiff</span></div></td></tr><tr style="background-color: #f0f0f0;"><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="">@CalcMgrDaysBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrDaysDiff</span></div></td></tr><tr><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm; white-space: nowrap;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333px; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksBetween</span></div></td><td style="border-collapse: collapse; border: 1px solid rgb(0, 0, 0); margin-bottom: 7px; margin-top: 7px; padding: 0mm 1.91mm;"><div class="TableBody-TableGrid-BR DocDefaults " style="font-size: 10pt; line-height: 15.3333; margin-bottom: 1mm; margin-top: 1mm;"><span class="DefaultParagraphFont " style="display: inline;">@CalcMgrWeeksDiff</span></div></td></tr></tbody></table><br />It's pretty self explanatory, prior to the new functions you had to make sure your To_Date is after From_Date otherwise you could run into trouble, so we used to workaround this by using validations rules in the form etc, now thanks to the new functions we can build the validation logic in the rule itself if required.<br /><br />So here is a form with dates and I wrote a simple business rule using the old and new functions to highlight the difference. As you can see the new functions can return negative values unlike the old/existing functions which returns positive values and that could be misleading.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s1600/5.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="283" data-original-width="588" height="191" src="https://4.bp.blogspot.com/-3x4E1hpT9FA/Wl69M0R-lAI/AAAAAAAAOIg/JxjXYnLLYKAfKDlceJwm-FzjVmpl-9fowCLcBGAs/s400/5.PNG" width="400" /></a></div><br /><br />That's it for today.<br /><br /><br /><br /><br /><br /> Omar Shubeilat tag:blogger.com,1999:blog-22084848541526078.post-5721114408412103481 Wed Jan 17 2018 16:55:00 GMT-0500 (EST) Simplifying a planning process with help again from Groovy http://john-goodwin.blogspot.com/2018/01/simplifying-planning-process-with-help.html <div dir="ltr" style="text-align: left;" trbidi="on">I recently had the chance to look at improving an error prone and over complicated on-premise process to run FDMEE data load rules from Planning business rules.<br /><br />The solution started with a business rule using the Calculation Manager custom MaxL function to call a batch file with the SHELL command.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-18bg-6wysKE/Wl8IGcpVhuI/AAAAAAAAJbQ/CgUgpQ44wQY94YmlDQ4tHoahlvfKh-BfACLcBGAs/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="162" data-original-width="526" src="https://2.bp.blogspot.com/-18bg-6wysKE/Wl8IGcpVhuI/AAAAAAAAJbQ/CgUgpQ44wQY94YmlDQ4tHoahlvfKh-BfACLcBGAs/s1600/image001.png" /></a></div><br />The batch script then called another script using <b><a href="https://docs.microsoft.com/en-us/sysinternals/downloads/psexec">PSExec </a></b>to allow remote execution as the script required running on the FDMEE server and not on the Essbase server, this was required because the FDMEE load rule was being run with the standard batch scripts that need to be executed from the FDMEE server.<br /><br />The process included the calling of MaxL scripts to read and update substitution variables, the output of these scripts also needed parsing as part of the batch.<br /><br />To add to all the complication there was a major issue where multiple users could run the same process while it is was already active.<br /><br />As you can image there was plenty of room for improvement with the current solution, though instead of trying to fix areas of the process I took a step back and tried to look at the solution as a whole and this is where Groovy came in to help.<br /><br />If you are not aware the ability to use Groovy scripting with planning business rules or Essbase calculation scripts came into action from Calculation Manager patch 11.1.2.4.006, it provides much more flexibility over Essbase custom defined functions and is easy to get up and running.<br /><br />Anyway, straight away I knew Groovy could help with running of the FDMEE load rules as I have already tackled this problem before, instead of covering old ground again there are a couple of posts I have written in the past that go through the steps.<br /><br />The first post looks at using Groovy to call a Java servlet which basically the same method as what the FDMEE batch scripts do behind the scenes, the advantage of using the Groovy method is that the script does not have to be run from the FDMEE server as it just requires http access to the web server.<br /><br /><a href="http://john-goodwin.blogspot.co.uk/2016/11/planning-to-fdmee-with-little-help-from.html"><b>Planning to FDMEE with a little help from Groovy</b></a><br /><br />The above post was written before the FDMEE REST API appeared in 11.1.2.4.210, not to worry though I have covered using the REST API with Groovy in part of the following post:<br /><br /><b><a href="http://john-goodwin.blogspot.co.uk/2017/02/loading-planning-metadata-from.html">Loading Planning metadata from a relational source through FDMEE and Planning</a></b><br /><br />If you have not already I recommend going through the posts as in this post I am going to assume there is an understanding of what Groovy scripting with business rules is all about.<br /><br />By creating a Groovy script to run FDMEE rules from a business rule I have already improved the original solution and removed the need to run batch scripts across servers with PSExec.<br /><br />Now on to the next problem of stopping the rule from running if it was already active, the original solution involved a user selecting an entity with a runtime prompt so I am going to stick with it in my example.<br /><br />Basically, you wouldn’t want the rule to run if it was already running for a selected entity, in planning one of the techniques could be to set a flag within in the database and if the flag is active then stop running the rule.<br /><br />In the following example, a fix is made down to a single block in a restricted part of the database, the entity is defined by a RTP<br /><br />A member named “FDMEE_Run_Flag” controls whether the process is already running, if the value is 1 then it is running, if it is 0 it is not running.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-fZRaooCb6hc/Wl8IGXvz_bI/AAAAAAAAJbM/BkgsBSN9-OQyeYf8zpoN5BvJW80IWJwJwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="420" data-original-width="743" height="361" src="https://2.bp.blogspot.com/-fZRaooCb6hc/Wl8IGXvz_bI/AAAAAAAAJbM/BkgsBSN9-OQyeYf8zpoN5BvJW80IWJwJwCLcBGAs/s640/image002.png" width="640" /></a></div><br />If the flag is set to 1 then the rule is stopped using the <b>@RETURN</b> function, if it is not set to 1 then the flag is set to 1, the Groovy script is then called using the <b>@CalcMgrGroovyNumber</b> function to run the FDMEE process and after it completes the flag is set back to 0.<br /><br />To demonstrate I updated the value of the flag member to 1 or “Running” as the member has been assigned a Smart List.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-l_G54S1GJ5E/Wl8IGXbk2-I/AAAAAAAAJbU/9tpcL6l3IPAZBuRELhVDuRaoyaoEkJ43wCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="183" data-original-width="363" src="https://4.bp.blogspot.com/-l_G54S1GJ5E/Wl8IGXbk2-I/AAAAAAAAJbU/9tpcL6l3IPAZBuRELhVDuRaoyaoEkJ43wCLcBGAs/s1600/image003.png" /></a></div><br />The business rule was launched and the same entity selected.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-h1-kzl64GUc/Wl8IG-PcjrI/AAAAAAAAJbY/Cs2dftyR7489QwUjmcBgMRai3lPmJ-SMQCLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="395" src="https://2.bp.blogspot.com/-h1-kzl64GUc/Wl8IG-PcjrI/AAAAAAAAJbY/Cs2dftyR7489QwUjmcBgMRai3lPmJ-SMQCLcBGAs/s1600/image004.png" /></a></div><br />An error is returned and the rule then exits.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJbc/Xx45z-zSx0YzosrECbMEtdLjIKR1XqjeQCLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="327" src="https://3.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJbc/Xx45z-zSx0YzosrECbMEtdLjIKR1XqjeQCLcBGAs/s1600/image005.png" /></a></div><br />This type of solution can be perfectly acceptable but there can be times where the flag is not reset for example if the rule did not complete, this would mean the end user would receive the same error message each time the rule is run until the flag was reset, using this type of method does also require some minor changes to the planning application and process.<br /><br />I was looking for a solution that had minimal impact to the planning application and processes, as I was already executing a Groovy script then maybe it could help to restrict the FDMEE data load rule from being run.<br /><br />Before I go through solution I want to point out that this is just one method out of a lot of possibilities and it doesn’t mean it is right for everyone.<br /><br />Whenever a business rule is launched there is information captured in the Job Console.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-WVw-OGeGxdI/Wl8IHYPo5aI/AAAAAAAAJbg/SWx_ku41XlAM660rIB5GII4sRUEdly1wwCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="171" data-original-width="641" src="https://3.bp.blogspot.com/-WVw-OGeGxdI/Wl8IHYPo5aI/AAAAAAAAJbg/SWx_ku41XlAM660rIB5GII4sRUEdly1wwCLcBGAs/s1600/image006.png" /></a></div><br />This means you know when a rule is running or not, the information is stored and read from a database table in the planning applications repository called “<b>HSP_JOB_STATUS</b>”.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-i8Uvkej6nLY/Wl8IHkKP_YI/AAAAAAAAJbk/bI1Oh-GWSMoZCyKsJmEbziv9jUYox5ErACLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="131" data-original-width="923" height="90" src="https://4.bp.blogspot.com/-i8Uvkej6nLY/Wl8IHkKP_YI/AAAAAAAAJbk/bI1Oh-GWSMoZCyKsJmEbziv9jUYox5ErACLcBGAs/s640/image007.png" width="640" /></a></div><br />The table has a column called “<b>RUN_STATUS</b>” which defines whether the rule is running, the table also captures RTP details and the value selected.<br /><br />Groovy SQL makes it easy to query a database table so the idea was to check the table to see if a rule is running for a specified entity, if it is running return an error, if it is not carry on with the processing and then run the FDMEE load rule.<br /><br />Just before I get on to the script it is worth pointing out that I have been testing with the latest version of Calc Manager, which at the time of writing is 11.1.2.4.010, Groovy was made available from 11.1.2.4.006 but there were a few changes in 11.1.2.4.008 which I take advantage of so I recommend being either on the latest patch or at least 008.<br /><br />If you are just starting out then download the latest 2.4 version of the <b><a href="https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all">Groovy jar</a></b> because from version 2.5+ the requirement is for Java 7 and unfortunately 11.1.2.4 still implements Java 6.<br /><br />To get up and running check out my earlier <b><a href="http://john-goodwin.blogspot.co.uk/2016/11/planning-to-fdmee-with-little-help-from.html">blog </a></b>but in summary you only need to download the Groovy jar, copy to the Essbase server and create a properties file, restart Essbase and off you go, easy.<br /><br />From Calc Manager 11.1.2.4.008 it is possible to create a properties file called groovycdf.properties in the same location as the Groovy jar which is<br /><br /><b class="yellow">&lt;MIDDLEWARE_HOME&gt;\EPMSystem11R1\products\Essbase\EssbaseServer\java\udf</b><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-oRY-HqbiyBY/Wl8IHzCOjII/AAAAAAAAJbo/JRPbF_GlUyMZn1jwTK3cg6BcwbLdKQ-_ACLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="58" data-original-width="210" src="https://1.bp.blogspot.com/-oRY-HqbiyBY/Wl8IHzCOjII/AAAAAAAAJbo/JRPbF_GlUyMZn1jwTK3cg6BcwbLdKQ-_ACLcBGAs/s1600/image008.png" /></a></div><br />You probably want to set the “staticcompile” parameter to false unless you want to go down the route of having define every variable and have it assigned the correct type, which means you would lose some of the Groovy goodness, though saying that I think Groovy in EPM Cloud has it enabled by default.<br /><br />Setting the “sandbox” parameter to false overrides the whitelist package and classes “groovyaccess.properties” file which means you instantly have access to all the packages within the classpath, this is great for developing though you might want to consider restricting the packages when you move to a production state.<br /><br />On to the script, I am not going to include every line of code as it there to provide an idea of how it was achieved, I have changed around the script a little so it hopefully makes more sense, so before the purists hound me that is the reason why :)<br /><br />The script could be simplified as I have written it so that no database connection information including passwords are included, this adds more steps but at the same time makes it reusable and requires no changes when migrating across environments.<br /><br />I will break the script down into bite-sized chunks, I am going to show the business rule script later but all you need to know is that three variables are passed into the Groovy script from the rule, one for the rule name and the others for the RTP name and value, so in this case it would be “Entity” and the entity name, this is required when querying the job console table.<br /><br />The first section converts the entity name to include quotes, this is because the RTP values in the job console database table are surrounded by quotes.<br /><br />The passed in variables are outputted to the log.<br /><br />Next, a function is called which directly queries the EPM registry and returns the connection information to the planning system database.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-WVbMGhLgS_M/Wl8IIDzVJ1I/AAAAAAAAJbs/krY0iMTMEwk_EZK_4TbdbX1yzQyN8KjNQCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="365" data-original-width="561" src="https://1.bp.blogspot.com/-WVbMGhLgS_M/Wl8IIDzVJ1I/AAAAAAAAJbs/krY0iMTMEwk_EZK_4TbdbX1yzQyN8KjNQCLcBGAs/s1600/image009.png" /></a></div><br />Now that the planning system database connection details have been gathered, a query can be made to return the connection information to the planning application database.<br /><br />The table “<b>HSPSYS_DATASOURCE</b>” holds the connection information for all the planning applications.<br /><br />Basically, a query is made to return the following information:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1tACm1dCn_o/Wl8IIe1JqzI/AAAAAAAAJbw/PlpwtkT4VbwDofwV_nZ4Z7aL5HHeuaqmgCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="225" data-original-width="771" height="186" src="https://3.bp.blogspot.com/-1tACm1dCn_o/Wl8IIe1JqzI/AAAAAAAAJbw/PlpwtkT4VbwDofwV_nZ4Z7aL5HHeuaqmgCLcBGAs/s640/image010.png" width="640" /></a></div><br />This is done with simplicity using Groovy SQL and once the information has been retrieved it is then stored.<br /><br />If for some reason no records are returned the script ends and returns an error number back to the business rule.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-RSAB6iQNqM8/Wl8IIj4-6NI/AAAAAAAAJb0/FFzV4kbS_Kkw_-AXv67Xrv7pjKQQsuYzwCLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="722" data-original-width="514" src="https://4.bp.blogspot.com/-RSAB6iQNqM8/Wl8IIj4-6NI/AAAAAAAAJb0/FFzV4kbS_Kkw_-AXv67Xrv7pjKQQsuYzwCLcBGAs/s1600/image011.png" /></a></div><br />If you wanted to hardcode the connection information to the planning application database in the script then the above would not be required and you would only need the next section.<br /><br />Now a new database connection can be made to the planning application and the job status table queried to see if the rule is already running for the same entity.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Gpj0-Qbp5hE/Wl8II_8OooI/AAAAAAAAJb4/xS0v_AXuICYlEPV_awsAwJ1KJdA4Pn5XACLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="738" data-original-width="553" src="https://2.bp.blogspot.com/-Gpj0-Qbp5hE/Wl8II_8OooI/AAAAAAAAJb4/xS0v_AXuICYlEPV_awsAwJ1KJdA4Pn5XACLcBGAs/s1600/image012.png" /></a></div><br />If the query returns a count greater than one it means the rule is already running against the same entity so return an error code back to the business rule.<br /><br />The count value should always be at least one because there will be an entry in the table for the current execution of the rule.<br /><br />If the query doesn’t return a count greater than one the processing continues and calls the FDMEE REST API to run the data rule.<br /><br />Taking an example of the rule running, the job console would display a run status of “Processing”<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-X_qFepHiE5w/Wl8IJOC_1vI/AAAAAAAAJb8/6JZ87gSe6nwwLLsIwCn-SM9r6d6PCcAhACLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="167" data-original-width="608" src="https://1.bp.blogspot.com/-X_qFepHiE5w/Wl8IJOC_1vI/AAAAAAAAJb8/6JZ87gSe6nwwLLsIwCn-SM9r6d6PCcAhACLcBGAs/s1600/image013.png" /></a></div><br />The script would run the following SQL to check if the rule is running for the specified entity.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0Pk-QR6r06E/Wl8IJe4MWHI/AAAAAAAAJcA/ovlClB26jHIJNXxDGdA_s2Rin-O7m-2NACLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="499" src="https://2.bp.blogspot.com/-0Pk-QR6r06E/Wl8IJe4MWHI/AAAAAAAAJcA/ovlClB26jHIJNXxDGdA_s2Rin-O7m-2NACLcBGAs/s1600/image014.png" /></a></div><br />The query returns a count of 1 which means there is only one instance of the rule running.<br /><br />On to the business rule which fixes down to a single block and one member so the Groovy script is only called once.<br /><br />The Groovy script is then executed using the <b>@CalcMgrGroovyNumber</b> function and Calc Manager RTP variables for rule name, RTP name and value are passed into it.<br /><br />A temporary Essbase variable holds stores the value returned from the Groovy script, if the value is 2 then it means the process is already running, if the value is 3 an error occurred in the script, both values generate an error back to the user.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-IjT_v2m452Y/Wl8IJlGbE8I/AAAAAAAAJcE/44KQpwJga5cjkNhG24eo6JzBHCumeCZuACLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="380" data-original-width="802" height="303" src="https://3.bp.blogspot.com/-IjT_v2m452Y/Wl8IJlGbE8I/AAAAAAAAJcE/44KQpwJga5cjkNhG24eo6JzBHCumeCZuACLcBGAs/s640/image015.png" width="640" /></a></div><br />The RTP name and value variables are set to be hidden so they are not shown at runtime.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-aiwU5H4ERhA/Wl8IJ1175KI/AAAAAAAAJcI/gs2gIDQRQ74k8S1N2mqdcNSj3FUkVnIQACLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="307" src="https://1.bp.blogspot.com/-aiwU5H4ERhA/Wl8IJ1175KI/AAAAAAAAJcI/gs2gIDQRQ74k8S1N2mqdcNSj3FUkVnIQACLcBGAs/s1600/image016.png" /></a></div><br />Now on to running the rule.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-zuaRELD8XbI/Wl8IKN0WAzI/AAAAAAAAJcM/Bh7n0wMJogg-UheNjx0R4Tf_KebNKUtNgCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="409" src="https://4.bp.blogspot.com/-zuaRELD8XbI/Wl8IKN0WAzI/AAAAAAAAJcM/Bh7n0wMJogg-UheNjx0R4Tf_KebNKUtNgCLcBGAs/s1600/image017.png" /></a></div><br />If the rule is not currently running for the same entity the script should run through the end.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-QXXW8C0H4W0/Wl8IKWv22_I/AAAAAAAAJcQ/Z5KTq8CKJ5gIipf8qvNsYmAwm7I0WCnIgCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="101" data-original-width="293" src="https://4.bp.blogspot.com/-QXXW8C0H4W0/Wl8IKWv22_I/AAAAAAAAJcQ/Z5KTq8CKJ5gIipf8qvNsYmAwm7I0WCnIgCLcBGAs/s1600/image018.png" /></a></div><br />The log will contain:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-LGmRRNru0XU/Wl8IKu7LzSI/AAAAAAAAJcU/67I0DZKzdpYLKk0MOnqFRPISs-s0PGwMQCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="35" data-original-width="599" src="https://2.bp.blogspot.com/-LGmRRNru0XU/Wl8IKu7LzSI/AAAAAAAAJcU/67I0DZKzdpYLKk0MOnqFRPISs-s0PGwMQCLcBGAs/s1600/image019.png" /></a></div><br />If the rule is run again for the same entity while the process is still running the following error will be displayed and the process will stop.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJdE/jt1DLg01qDYe3lW0ADbBWzVT6emM-4S8wCEwYBhgL/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="327" src="https://1.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJdE/jt1DLg01qDYe3lW0ADbBWzVT6emM-4S8wCEwYBhgL/s1600/image005.png" /></a></div><br />This time the log will contain the following:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-KRbhkN89XSs/Wl8IK0zoVWI/AAAAAAAAJcY/ueNVEltCK6QYn_YaVZdlO7OvBcmuw9i7gCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="35" data-original-width="607" src="https://3.bp.blogspot.com/-KRbhkN89XSs/Wl8IK0zoVWI/AAAAAAAAJcY/ueNVEltCK6QYn_YaVZdlO7OvBcmuw9i7gCLcBGAs/s1600/image020.png" /></a></div><br />If an error occurs in the process the following error will be returned to the user.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-X9Qj9TogdKc/Wl8ILPrr_pI/AAAAAAAAJcc/qOjy1Ga2PwgFQUmq5JK1QxwB-Ps9BWeLgCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="97" data-original-width="325" src="https://2.bp.blogspot.com/-X9Qj9TogdKc/Wl8ILPrr_pI/AAAAAAAAJcc/qOjy1Ga2PwgFQUmq5JK1QxwB-Ps9BWeLgCLcBGAs/s1600/image021.png" /></a></div><br />Earlier I mentioned that the original solution called MaxL scripts to read and update substitution variables as well as having to parse the output log to achieve this.<br /><br />With Groovy it makes life much simpler as sub vars can be passed into the script, for example say we are interested in these variables.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xvaXZC2-smY/Wl8ILR23-1I/AAAAAAAAJcg/obpvy_1HmMsG7W7nI3AaNpprDQYpw4siwCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="160" data-original-width="362" src="https://2.bp.blogspot.com/-xvaXZC2-smY/Wl8ILR23-1I/AAAAAAAAJcg/obpvy_1HmMsG7W7nI3AaNpprDQYpw4siwCLcBGAs/s1600/image022.png" /></a></div><br />The sub vars could be passed in Groovy script in the following way.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-v2aGbIAythA/Wl8ILgOr5vI/AAAAAAAAJck/e7LJRShrBV8lYCRtdP6yvyFmTY14t4IEwCLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="31" data-original-width="689" src="https://3.bp.blogspot.com/-v2aGbIAythA/Wl8ILgOr5vI/AAAAAAAAJck/e7LJRShrBV8lYCRtdP6yvyFmTY14t4IEwCLcBGAs/s1600/image023.png" /></a></div><br />The Groovy script would automatically be able to access them.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-nzhyEzaVyN8/Wl8ILzL_zSI/AAAAAAAAJcs/1QdswJ1dpQALDcmKJB38hdCO1Q23mdKggCLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="20" data-original-width="469" src="https://2.bp.blogspot.com/-nzhyEzaVyN8/Wl8ILzL_zSI/AAAAAAAAJcs/1QdswJ1dpQALDcmKJB38hdCO1Q23mdKggCLcBGAs/s1600/image024.png" /></a></div><br />You can then process them however you like, in this example they are just written to the log.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJco/XLHNevtuG60Tu155aLF9yAYgF3ao3o4kQCLcBGAs/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="19" data-original-width="336" src="https://1.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJco/XLHNevtuG60Tu155aLF9yAYgF3ao3o4kQCLcBGAs/s1600/image025.png" /></a></div><br />You don’t have to pass them into the script as Groovy should be able to directly access the Essbase Java API packages.<br /><br />With the following script, the variables can be retrieved using the API or just as easily be created/updated.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-dIxh0PSIWN4/Wl8IMd9VZ_I/AAAAAAAAJcw/X6UXPgOALOsOPRQvuAUi54A-EHciwaHRQCLcBGAs/s1600/image026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="363" data-original-width="508" src="https://4.bp.blogspot.com/-dIxh0PSIWN4/Wl8IMd9VZ_I/AAAAAAAAJcw/X6UXPgOALOsOPRQvuAUi54A-EHciwaHRQCLcBGAs/s1600/image026.png" /></a></div><br />The above script calls a function which returns a SSO token so there is no need to hardcode passwords, alternatively the password can be included in the connection to Essbase.<br /><br />The script reads the “curYear” and “curMonth” variables and writes&nbsp; them to the log.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJdM/RpH-AgLXaTUKAFt-UKhyzLpfw7uQII77gCEwYBhgL/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="19" data-original-width="336" src="https://2.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJdM/RpH-AgLXaTUKAFt-UKhyzLpfw7uQII77gCEwYBhgL/s1600/image025.png" /></a></div><div><br /></div>A new sub var has also been created.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-i3VQefunxas/Wl8IM3-iC9I/AAAAAAAAJc0/rJZcrAtep0IjbElDRHKI4hktVySAxWN9wCLcBGAs/s1600/image027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="148" data-original-width="437" src="https://1.bp.blogspot.com/-i3VQefunxas/Wl8IM3-iC9I/AAAAAAAAJc0/rJZcrAtep0IjbElDRHKI4hktVySAxWN9wCLcBGAs/s1600/image027.png" /></a></div><br />When you put this all together, one Groovy script has replaced the original over complicated process, the new solution can restrict rules from running concurrently, execute FDMEE data load rules, manage substitution variables and removes the requirement to run scripts across servers.<br /><br />If you want to find out more then please feel free to get in touch.</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-3357943326229948951 Wed Jan 17 2018 04:06:00 GMT-0500 (EST) Simplifying a planning process with help again from Groovy @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://john-goodwin.blogspot.com/2018/01/simplifying-planning-process-with-help.html <div dir="ltr" style="text-align: left;" trbidi="on">I recently had the chance to look at improving an error prone and over complicated on-premise process to run FDMEE data load rules from Planning business rules.<br /><br />The solution started with a business rule using the Calculation Manager custom MaxL function to call a batch file with the SHELL command.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-18bg-6wysKE/Wl8IGcpVhuI/AAAAAAAAJbQ/CgUgpQ44wQY94YmlDQ4tHoahlvfKh-BfACLcBGAs/s1600/image001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="162" data-original-width="526" src="https://2.bp.blogspot.com/-18bg-6wysKE/Wl8IGcpVhuI/AAAAAAAAJbQ/CgUgpQ44wQY94YmlDQ4tHoahlvfKh-BfACLcBGAs/s1600/image001.png" /></a></div><br />The batch script then called another script using <b><a href="https://docs.microsoft.com/en-us/sysinternals/downloads/psexec">PSExec </a></b>to allow remote execution as the script required running on the FDMEE server and not on the Essbase server, this was required because the FDMEE load rule was being run with the standard batch scripts that need to be executed from the FDMEE server.<br /><br />The process included the calling of MaxL scripts to read and update substitution variables, the output of these scripts also needed parsing as part of the batch.<br /><br />To add to all the complication there was a major issue where multiple users could run the same process while it is was already active.<br /><br />As you can image there was plenty of room for improvement with the current solution, though instead of trying to fix areas of the process I took a step back and tried to look at the solution as a whole and this is where Groovy came in to help.<br /><br />If you are not aware the ability to use Groovy scripting with planning business rules or Essbase calculation scripts came into action from Calculation Manager patch 11.1.2.4.006, it provides much more flexibility over Essbase custom defined functions and is easy to get up and running.<br /><br />Anyway, straight away I knew Groovy could help with running of the FDMEE load rules as I have already tackled this problem before, instead of covering old ground again there are a couple of posts I have written in the past that go through the steps.<br /><br />The first post looks at using Groovy to call a Java servlet which basically the same method as what the FDMEE batch scripts do behind the scenes, the advantage of using the Groovy method is that the script does not have to be run from the FDMEE server as it just requires http access to the web server.<br /><br /><a href="http://john-goodwin.blogspot.co.uk/2016/11/planning-to-fdmee-with-little-help-from.html"><b>Planning to FDMEE with a little help from Groovy</b></a><br /><br />The above post was written before the FDMEE REST API appeared in 11.1.2.4.210, not to worry though I have covered using the REST API with Groovy in part of the following post:<br /><br /><b><a href="http://john-goodwin.blogspot.co.uk/2017/02/loading-planning-metadata-from.html">Loading Planning metadata from a relational source through FDMEE and Planning</a></b><br /><br />If you have not already I recommend going through the posts as in this post I am going to assume there is an understanding of what Groovy scripting with business rules is all about.<br /><br />By creating a Groovy script to run FDMEE rules from a business rule I have already improved the original solution and removed the need to run batch scripts across servers with PSExec.<br /><br />Now on to the next problem of stopping the rule from running if it was already active, the original solution involved a user selecting an entity with a runtime prompt so I am going to stick with it in my example.<br /><br />Basically, you wouldn’t want the rule to run if it was already running for a selected entity, in planning one of the techniques could be to set a flag within in the database and if the flag is active then stop running the rule.<br /><br />In the following example, a fix is made down to a single block in a restricted part of the database, the entity is defined by a RTP<br /><br />A member named “FDMEE_Run_Flag” controls whether the process is already running, if the value is 1 then it is running, if it is 0 it is not running.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-fZRaooCb6hc/Wl8IGXvz_bI/AAAAAAAAJbM/BkgsBSN9-OQyeYf8zpoN5BvJW80IWJwJwCLcBGAs/s1600/image002.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="420" data-original-width="743" height="361" src="https://2.bp.blogspot.com/-fZRaooCb6hc/Wl8IGXvz_bI/AAAAAAAAJbM/BkgsBSN9-OQyeYf8zpoN5BvJW80IWJwJwCLcBGAs/s640/image002.png" width="640" /></a></div><br />If the flag is set to 1 then the rule is stopped using the <b>@RETURN</b> function, if it is not set to 1 then the flag is set to 1, the Groovy script is then called using the <b>@CalcMgrGroovyNumber</b> function to run the FDMEE process and after it completes the flag is set back to 0.<br /><br />To demonstrate I updated the value of the flag member to 1 or “Running” as the member has been assigned a Smart List.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-l_G54S1GJ5E/Wl8IGXbk2-I/AAAAAAAAJbU/9tpcL6l3IPAZBuRELhVDuRaoyaoEkJ43wCLcBGAs/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="183" data-original-width="363" src="https://4.bp.blogspot.com/-l_G54S1GJ5E/Wl8IGXbk2-I/AAAAAAAAJbU/9tpcL6l3IPAZBuRELhVDuRaoyaoEkJ43wCLcBGAs/s1600/image003.png" /></a></div><br />The business rule was launched and the same entity selected.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-h1-kzl64GUc/Wl8IG-PcjrI/AAAAAAAAJbY/Cs2dftyR7489QwUjmcBgMRai3lPmJ-SMQCLcBGAs/s1600/image004.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="395" src="https://2.bp.blogspot.com/-h1-kzl64GUc/Wl8IG-PcjrI/AAAAAAAAJbY/Cs2dftyR7489QwUjmcBgMRai3lPmJ-SMQCLcBGAs/s1600/image004.png" /></a></div><br />An error is returned and the rule then exits.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJbc/Xx45z-zSx0YzosrECbMEtdLjIKR1XqjeQCLcBGAs/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="327" src="https://3.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJbc/Xx45z-zSx0YzosrECbMEtdLjIKR1XqjeQCLcBGAs/s1600/image005.png" /></a></div><br />This type of solution can be perfectly acceptable but there can be times where the flag is not reset for example if the rule did not complete, this would mean the end user would receive the same error message each time the rule is run until the flag was reset, using this type of method does also require some minor changes to the planning application and process.<br /><br />I was looking for a solution that had minimal impact to the planning application and processes, as I was already executing a Groovy script then maybe it could help to restrict the FDMEE data load rule from being run.<br /><br />Before I go through solution I want to point out that this is just one method out of a lot of possibilities and it doesn’t mean it is right for everyone.<br /><br />Whenever a business rule is launched there is information captured in the Job Console.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-WVw-OGeGxdI/Wl8IHYPo5aI/AAAAAAAAJbg/SWx_ku41XlAM660rIB5GII4sRUEdly1wwCLcBGAs/s1600/image006.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="171" data-original-width="641" src="https://3.bp.blogspot.com/-WVw-OGeGxdI/Wl8IHYPo5aI/AAAAAAAAJbg/SWx_ku41XlAM660rIB5GII4sRUEdly1wwCLcBGAs/s1600/image006.png" /></a></div><br />This means you know when a rule is running or not, the information is stored and read from a database table in the planning applications repository called “<b>HSP_JOB_STATUS</b>”.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-i8Uvkej6nLY/Wl8IHkKP_YI/AAAAAAAAJbk/bI1Oh-GWSMoZCyKsJmEbziv9jUYox5ErACLcBGAs/s1600/image007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="131" data-original-width="923" height="90" src="https://4.bp.blogspot.com/-i8Uvkej6nLY/Wl8IHkKP_YI/AAAAAAAAJbk/bI1Oh-GWSMoZCyKsJmEbziv9jUYox5ErACLcBGAs/s640/image007.png" width="640" /></a></div><br />The table has a column called “<b>RUN_STATUS</b>” which defines whether the rule is running, the table also captures RTP details and the value selected.<br /><br />Groovy SQL makes it easy to query a database table so the idea was to check the table to see if a rule is running for a specified entity, if it is running return an error, if it is not carry on with the processing and then run the FDMEE load rule.<br /><br />Just before I get on to the script it is worth pointing out that I have been testing with the latest version of Calc Manager, which at the time of writing is 11.1.2.4.010, Groovy was made available from 11.1.2.4.006 but there were a few changes in 11.1.2.4.008 which I take advantage of so I recommend being either on the latest patch or at least 008.<br /><br />If you are just starting out then download the latest 2.4 version of the <b><a href="https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all">Groovy jar</a></b> because from version 2.5+ the requirement is for Java 7 and unfortunately 11.1.2.4 still implements Java 6.<br /><br />To get up and running check out my earlier <b><a href="http://john-goodwin.blogspot.co.uk/2016/11/planning-to-fdmee-with-little-help-from.html">blog </a></b>but in summary you only need to download the Groovy jar, copy to the Essbase server and create a properties file, restart Essbase and off you go, easy.<br /><br />From Calc Manager 11.1.2.4.008 it is possible to create a properties file called groovycdf.properties in the same location as the Groovy jar which is<br /><br /><b class="yellow">&lt;MIDDLEWARE_HOME&gt;\EPMSystem11R1\products\Essbase\EssbaseServer\java\udf</b><br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-oRY-HqbiyBY/Wl8IHzCOjII/AAAAAAAAJbo/JRPbF_GlUyMZn1jwTK3cg6BcwbLdKQ-_ACLcBGAs/s1600/image008.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="58" data-original-width="210" src="https://1.bp.blogspot.com/-oRY-HqbiyBY/Wl8IHzCOjII/AAAAAAAAJbo/JRPbF_GlUyMZn1jwTK3cg6BcwbLdKQ-_ACLcBGAs/s1600/image008.png" /></a></div><br />You probably want to set the “staticcompile” parameter to false unless you want to go down the route of having define every variable and have it assigned the correct type, which means you would lose some of the Groovy goodness, though saying that I think Groovy in EPM Cloud has it enabled by default.<br /><br />Setting the “sandbox” parameter to false overrides the whitelist package and classes “groovyaccess.properties” file which means you instantly have access to all the packages within the classpath, this is great for developing though you might want to consider restricting the packages when you move to a production state.<br /><br />On to the script, I am not going to include every line of code as it there to provide an idea of how it was achieved, I have changed around the script a little so it hopefully makes more sense, so before the purists hound me that is the reason why :)<br /><br />The script could be simplified as I have written it so that no database connection information including passwords are included, this adds more steps but at the same time makes it reusable and requires no changes when migrating across environments.<br /><br />I will break the script down into bite-sized chunks, I am going to show the business rule script later but all you need to know is that three variables are passed into the Groovy script from the rule, one for the rule name and the others for the RTP name and value, so in this case it would be “Entity” and the entity name, this is required when querying the job console table.<br /><br />The first section converts the entity name to include quotes, this is because the RTP values in the job console database table are surrounded by quotes.<br /><br />The passed in variables are outputted to the log.<br /><br />Next, a function is called which directly queries the EPM registry and returns the connection information to the planning system database.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-WVbMGhLgS_M/Wl8IIDzVJ1I/AAAAAAAAJbs/krY0iMTMEwk_EZK_4TbdbX1yzQyN8KjNQCLcBGAs/s1600/image009.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="365" data-original-width="561" src="https://1.bp.blogspot.com/-WVbMGhLgS_M/Wl8IIDzVJ1I/AAAAAAAAJbs/krY0iMTMEwk_EZK_4TbdbX1yzQyN8KjNQCLcBGAs/s1600/image009.png" /></a></div><br />Now that the planning system database connection details have been gathered, a query can be made to return the connection information to the planning application database.<br /><br />The table “<b>HSPSYS_DATASOURCE</b>” holds the connection information for all the planning applications.<br /><br />Basically, a query is made to return the following information:<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1tACm1dCn_o/Wl8IIe1JqzI/AAAAAAAAJbw/PlpwtkT4VbwDofwV_nZ4Z7aL5HHeuaqmgCLcBGAs/s1600/image010.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="225" data-original-width="771" height="186" src="https://3.bp.blogspot.com/-1tACm1dCn_o/Wl8IIe1JqzI/AAAAAAAAJbw/PlpwtkT4VbwDofwV_nZ4Z7aL5HHeuaqmgCLcBGAs/s640/image010.png" width="640" /></a></div><br />This is done with simplicity using Groovy SQL and once the information has been retrieved it is then stored.<br /><br />If for some reason no records are returned the script ends and returns an error number back to the business rule.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-RSAB6iQNqM8/Wl8IIj4-6NI/AAAAAAAAJb0/FFzV4kbS_Kkw_-AXv67Xrv7pjKQQsuYzwCLcBGAs/s1600/image011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="722" data-original-width="514" src="https://4.bp.blogspot.com/-RSAB6iQNqM8/Wl8IIj4-6NI/AAAAAAAAJb0/FFzV4kbS_Kkw_-AXv67Xrv7pjKQQsuYzwCLcBGAs/s1600/image011.png" /></a></div><br />If you wanted to hardcode the connection information to the planning application database in the script then the above would not be required and you would only need the next section.<br /><br />Now a new database connection can be made to the planning application and the job status table queried to see if the rule is already running for the same entity.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-Gpj0-Qbp5hE/Wl8II_8OooI/AAAAAAAAJb4/xS0v_AXuICYlEPV_awsAwJ1KJdA4Pn5XACLcBGAs/s1600/image012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="738" data-original-width="553" src="https://2.bp.blogspot.com/-Gpj0-Qbp5hE/Wl8II_8OooI/AAAAAAAAJb4/xS0v_AXuICYlEPV_awsAwJ1KJdA4Pn5XACLcBGAs/s1600/image012.png" /></a></div><br />If the query returns a count greater than one it means the rue is already running against the same entity so return an error code back to the business rule.<br /><br />The count value should always be at least one because there will be an entry in the table for the current execution of the rule.<br /><br />If the query doesn’t return a count greater than one the processing continues and calls the FDMEE REST API to run the data rule.<br /><br />Taking an example of the rule running, the job console would display a run status of “Processing”<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-X_qFepHiE5w/Wl8IJOC_1vI/AAAAAAAAJb8/6JZ87gSe6nwwLLsIwCn-SM9r6d6PCcAhACLcBGAs/s1600/image013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="167" data-original-width="608" src="https://1.bp.blogspot.com/-X_qFepHiE5w/Wl8IJOC_1vI/AAAAAAAAJb8/6JZ87gSe6nwwLLsIwCn-SM9r6d6PCcAhACLcBGAs/s1600/image013.png" /></a></div><br />The script would run the following SQL to check if the rule is running for the specified entity.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-0Pk-QR6r06E/Wl8IJe4MWHI/AAAAAAAAJcA/ovlClB26jHIJNXxDGdA_s2Rin-O7m-2NACLcBGAs/s1600/image014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="269" data-original-width="499" src="https://2.bp.blogspot.com/-0Pk-QR6r06E/Wl8IJe4MWHI/AAAAAAAAJcA/ovlClB26jHIJNXxDGdA_s2Rin-O7m-2NACLcBGAs/s1600/image014.png" /></a></div><br />The query returns a count of 1 which means there is only one instance of the rule running.<br /><br />On to the business rule which fixes down to a single block and one member so the Groovy script is only called once.<br /><br />The Groovy script is then executed using the <b>@CalcMgrGroovyNumber</b> function and Calc Manager RTP variables for rule name, RTP name and value are passed into it.<br /><br />A temporary Essbase variable holds stores the value returned from the Groovy script, if the value is 2 then it means the process is already running, if the value is 3 an error occurred in the script, both values generate an error back to the user.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-IjT_v2m452Y/Wl8IJlGbE8I/AAAAAAAAJcE/44KQpwJga5cjkNhG24eo6JzBHCumeCZuACLcBGAs/s1600/image015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="380" data-original-width="802" height="303" src="https://3.bp.blogspot.com/-IjT_v2m452Y/Wl8IJlGbE8I/AAAAAAAAJcE/44KQpwJga5cjkNhG24eo6JzBHCumeCZuACLcBGAs/s640/image015.png" width="640" /></a></div><br />The RTP name and value variables are set to be hidden so they are not shown at runtime.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-aiwU5H4ERhA/Wl8IJ1175KI/AAAAAAAAJcI/gs2gIDQRQ74k8S1N2mqdcNSj3FUkVnIQACLcBGAs/s1600/image016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="190" data-original-width="307" src="https://1.bp.blogspot.com/-aiwU5H4ERhA/Wl8IJ1175KI/AAAAAAAAJcI/gs2gIDQRQ74k8S1N2mqdcNSj3FUkVnIQACLcBGAs/s1600/image016.png" /></a></div><br />Now on to running the rule.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-zuaRELD8XbI/Wl8IKN0WAzI/AAAAAAAAJcM/Bh7n0wMJogg-UheNjx0R4Tf_KebNKUtNgCLcBGAs/s1600/image017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="82" data-original-width="409" src="https://4.bp.blogspot.com/-zuaRELD8XbI/Wl8IKN0WAzI/AAAAAAAAJcM/Bh7n0wMJogg-UheNjx0R4Tf_KebNKUtNgCLcBGAs/s1600/image017.png" /></a></div><br />If the rule is not currently running for the same entity the script should run through the end.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-QXXW8C0H4W0/Wl8IKWv22_I/AAAAAAAAJcQ/Z5KTq8CKJ5gIipf8qvNsYmAwm7I0WCnIgCLcBGAs/s1600/image018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="101" data-original-width="293" src="https://4.bp.blogspot.com/-QXXW8C0H4W0/Wl8IKWv22_I/AAAAAAAAJcQ/Z5KTq8CKJ5gIipf8qvNsYmAwm7I0WCnIgCLcBGAs/s1600/image018.png" /></a></div><br />The log will contain:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-LGmRRNru0XU/Wl8IKu7LzSI/AAAAAAAAJcU/67I0DZKzdpYLKk0MOnqFRPISs-s0PGwMQCLcBGAs/s1600/image019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="35" data-original-width="599" src="https://2.bp.blogspot.com/-LGmRRNru0XU/Wl8IKu7LzSI/AAAAAAAAJcU/67I0DZKzdpYLKk0MOnqFRPISs-s0PGwMQCLcBGAs/s1600/image019.png" /></a></div><br />If the rule is run again for the same entity while the process is still running the following error will be displayed and the process will stop.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJdE/jt1DLg01qDYe3lW0ADbBWzVT6emM-4S8wCEwYBhgL/s1600/image005.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="96" data-original-width="327" src="https://1.bp.blogspot.com/-TofQHLh8FD0/Wl8IHMLkCZI/AAAAAAAAJdE/jt1DLg01qDYe3lW0ADbBWzVT6emM-4S8wCEwYBhgL/s1600/image005.png" /></a></div><br />This time the log will contain the following:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-KRbhkN89XSs/Wl8IK0zoVWI/AAAAAAAAJcY/ueNVEltCK6QYn_YaVZdlO7OvBcmuw9i7gCLcBGAs/s1600/image020.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="35" data-original-width="607" src="https://3.bp.blogspot.com/-KRbhkN89XSs/Wl8IK0zoVWI/AAAAAAAAJcY/ueNVEltCK6QYn_YaVZdlO7OvBcmuw9i7gCLcBGAs/s1600/image020.png" /></a></div><br />If an error occurs in the process the following error will be returned to the user.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-X9Qj9TogdKc/Wl8ILPrr_pI/AAAAAAAAJcc/qOjy1Ga2PwgFQUmq5JK1QxwB-Ps9BWeLgCLcBGAs/s1600/image021.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="97" data-original-width="325" src="https://2.bp.blogspot.com/-X9Qj9TogdKc/Wl8ILPrr_pI/AAAAAAAAJcc/qOjy1Ga2PwgFQUmq5JK1QxwB-Ps9BWeLgCLcBGAs/s1600/image021.png" /></a></div><br />Earlier I mentioned that the original solution called MaxL scripts to read and update substitution variables as well as having to parse the output log to achieve this.<br /><br />With Groovy it makes life much simpler as sub vars can be passed into the script, for example say we are interested in these variables.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-xvaXZC2-smY/Wl8ILR23-1I/AAAAAAAAJcg/obpvy_1HmMsG7W7nI3AaNpprDQYpw4siwCLcBGAs/s1600/image022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="160" data-original-width="362" src="https://2.bp.blogspot.com/-xvaXZC2-smY/Wl8ILR23-1I/AAAAAAAAJcg/obpvy_1HmMsG7W7nI3AaNpprDQYpw4siwCLcBGAs/s1600/image022.png" /></a></div><br />The sub vars could be passed in Groovy script in the following way.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-v2aGbIAythA/Wl8ILgOr5vI/AAAAAAAAJck/e7LJRShrBV8lYCRtdP6yvyFmTY14t4IEwCLcBGAs/s1600/image023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="31" data-original-width="689" src="https://3.bp.blogspot.com/-v2aGbIAythA/Wl8ILgOr5vI/AAAAAAAAJck/e7LJRShrBV8lYCRtdP6yvyFmTY14t4IEwCLcBGAs/s1600/image023.png" /></a></div><br />The Groovy script would automatically be able to access them.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-nzhyEzaVyN8/Wl8ILzL_zSI/AAAAAAAAJcs/1QdswJ1dpQALDcmKJB38hdCO1Q23mdKggCLcBGAs/s1600/image024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="20" data-original-width="469" src="https://2.bp.blogspot.com/-nzhyEzaVyN8/Wl8ILzL_zSI/AAAAAAAAJcs/1QdswJ1dpQALDcmKJB38hdCO1Q23mdKggCLcBGAs/s1600/image024.png" /></a></div><br />You can then process them however you like, in this example they are just written to the log.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJco/XLHNevtuG60Tu155aLF9yAYgF3ao3o4kQCLcBGAs/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="19" data-original-width="336" src="https://1.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJco/XLHNevtuG60Tu155aLF9yAYgF3ao3o4kQCLcBGAs/s1600/image025.png" /></a></div><br />You don’t have to pass them into the script as Groovy should be able to directly access the Essbase Java API packages.<br /><br />With the following script, the variables can be retrieved using the API or just as easily be created/updated.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-dIxh0PSIWN4/Wl8IMd9VZ_I/AAAAAAAAJcw/X6UXPgOALOsOPRQvuAUi54A-EHciwaHRQCLcBGAs/s1600/image026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="363" data-original-width="508" src="https://4.bp.blogspot.com/-dIxh0PSIWN4/Wl8IMd9VZ_I/AAAAAAAAJcw/X6UXPgOALOsOPRQvuAUi54A-EHciwaHRQCLcBGAs/s1600/image026.png" /></a></div><br />The above script calls a function which returns a SSO token so there is no need to hardcode passwords, alternatively the password can be included in the connection to Essbase.<br /><br />The script reads the “curYear” and “curMonth” variables and writes&nbsp; them to the log.<br /><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJdM/RpH-AgLXaTUKAFt-UKhyzLpfw7uQII77gCEwYBhgL/s1600/image025.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="19" data-original-width="336" src="https://2.bp.blogspot.com/-N6DCpG17XTs/Wl8IMM18WsI/AAAAAAAAJdM/RpH-AgLXaTUKAFt-UKhyzLpfw7uQII77gCEwYBhgL/s1600/image025.png" /></a></div><div><br /></div>A new sub var has also been created.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-i3VQefunxas/Wl8IM3-iC9I/AAAAAAAAJc0/rJZcrAtep0IjbElDRHKI4hktVySAxWN9wCLcBGAs/s1600/image027.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="148" data-original-width="437" src="https://1.bp.blogspot.com/-i3VQefunxas/Wl8IM3-iC9I/AAAAAAAAJc0/rJZcrAtep0IjbElDRHKI4hktVySAxWN9wCLcBGAs/s1600/image027.png" /></a></div><br />When you put this all together, one Groovy script has replaced the original over complicated process, the new solution can restrict rules from running concurrently, execute FDMEE data load rules, manage substitution variables and removes the requirement to run scripts across servers.<br /><br />If you want to find out more then please feel free to get in touch.</div> John Goodwin tag:blogger.com,1999:blog-6575283218005807475.post-3357943326229948951 Wed Jan 17 2018 04:06:00 GMT-0500 (EST) Casabase: A Closer Look @HarryGatesIII @orclEPMblogs http://feedproxy.google.com/~r/HarryGatessEssbaseBlog/~3/qb5g-fwtDrk/casabase-closer-look.html <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><br /><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="375"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br />We just put up some short videos demonstrating Casabase functionality. If you've been wondering what Casabase looks like in action, please go take a look <a href="http://casabasesoftware.com/2018/01/13/a-closer-look-at-casabase/" target="_blank">here</a>.<br /> <br /> We've been converting some Essbase cubes to Casabase recently. These are cubes that are not a good fit for Essbase: either they have way too many calculations or the granularity of the metadata is too fine. For example, one of the cubes has a member for each employee in a huge company - and since you can't delete a member (without losing data) when an employee leaves, there are tens of thousands of members in this one dimension alone.<br /> <br /> These types of databases, however, are an excellent fit for Casabase. All retrievals are faster than in Essbase, but some are in the jaw-dropping range of 20x improvement. Loading metadata and data is also much easier, as there is no down-time for either operation in Casabase. Not to mention that aggregations are dynamic, so there's no more waiting around for calculations to complete before you can view the data. And there's never a question as to why the sum of the child members doesn't match the value in the parent. Priceless!<br /> <img src="http://feeds.feedburner.com/~r/HarryGatessEssbaseBlog/~4/qb5g-fwtDrk" height="1" width="1" alt=""/> Harry Gates tag:blogger.com,1999:blog-1043272077208566476.post-8088847535002484162 Mon Jan 15 2018 11:58:00 GMT-0500 (EST) Casabase: A Closer Look http://feedproxy.google.com/~r/HarryGatessEssbaseBlog/~3/qb5g-fwtDrk/casabase-closer-look.html <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings></xml><![endif]--><br /><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="&#45;-"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument></xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="375"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/> </w:LatentStyles></xml><![endif]--><!--[if gte mso 10]><style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri",sans-serif; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} </style><![endif]--> <br />We just put up some short videos demonstrating Casabase functionality. If you've been wondering what Casabase looks like in action, please go take a look <a href="http://casabasesoftware.com/2018/01/13/a-closer-look-at-casabase/" target="_blank">here</a>.<br /> <br /> We've been converting some Essbase cubes to Casabase recently. These are cubes that are not a good fit for Essbase: either they have way too many calculations or the granularity of the metadata is too fine. For example, one of the cubes has a member for each employee in a huge company - and since you can't delete a member (without losing data) when an employee leaves, there are tens of thousands of members in this one dimension alone.<br /> <br /> These types of databases, however, are an excellent fit for Casabase. All retrievals are faster than in Essbase, but some are in the jaw-dropping range of 20x improvement. Loading metadata and data is also much easier, as there is no down-time for either operation in Casabase. Not to mention that aggregations are dynamic, so there's no more waiting around for calculations to complete before you can view the data. And there's never a question as to why the sum of the child members doesn't match the value in the parent. Priceless!<br /> <img src="http://feeds.feedburner.com/~r/HarryGatessEssbaseBlog/~4/qb5g-fwtDrk" height="1" width="1" alt=""/> Harry Gates tag:blogger.com,1999:blog-1043272077208566476.post-8088847535002484162 Mon Jan 15 2018 11:58:00 GMT-0500 (EST) Are All your Reports & Smartsheets Updated for the New Year? @CheckPointllc http://blog.checkpointllc.com/are-all-your-reports-smartsheets-updated-for-the-new-year <p>Happy New Year – 2018!</p> <p>It’s a great New Year -- are all your Reports and Smartsheets updated for the New Year? Now is a good time to take an inventory and review all your reports.</p> <ul> <li>Make sure all your reports are retrieving properly for the New Year. Validate the year, the scenario, and the current year.</li> <li>Review the reports for hard coding and or to confirm that they are time dynamic.</li> <li>Review all multi year trending reports for proper time and scenario retrieval for current and prior year date retrieval.</li> <li>Consider updating reports that are static to dynamic time function within the reports if not already written with dynamic time function.</li> <li>Update reports if possible using standardized column and or row templates. This will minimize ongoing maintenance in the future.</li> <li>Review target audience requirements and consider using query prompts for running reports adding more dynamic features, than relying on system admin updating and or maintaining the reports.</li> <li>Catalog reports with brief narrative and eliminate redundant reports if possible.</li> </ul> <p>Successful and accurate reporting is contingent on both accurate data, and stable, timely, consistent reporting. Keep your reports cataloged, relevant, and accurate. Perform regular updates and maintenance, to keep your internal customers happy.</p> <img src="https://track.hubspot.com/__ptq.gif?a=297092&amp;k=14&amp;r=http%3A%2F%2Fblog.checkpointllc.com%2Fare-all-your-reports-smartsheets-updated-for-the-new-year&amp;bu=http%253A%252F%252Fblog.checkpointllc.com&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> CheckPoint Consulting http://blog.checkpointllc.com/are-all-your-reports-smartsheets-updated-for-the-new-year Mon Jan 15 2018 10:53:34 GMT-0500 (EST) Are All your Reports & Smartsheets Updated for the New Year? http://blog.checkpointllc.com/are-all-your-reports-smartsheets-updated-for-the-new-year <p>Happy New Year – 2018!</p> <p>It’s a great New Year -- are all your Reports and Smartsheets updated for the New Year? Now is a good time to take an inventory and review all your reports.</p> <ul> <li>Make sure all your reports are retrieving properly for the New Year. Validate the year, the scenario, and the current year.</li> <li>Review the reports for hard coding and or to confirm that they are time dynamic.</li> <li>Review all multi year trending reports for proper time and scenario retrieval for current and prior year date retrieval.</li> <li>Consider updating reports that are static to dynamic time function within the reports if not already written with dynamic time function.</li> <li>Update reports if possible using standardized column and or row templates. This will minimize ongoing maintenance in the future.</li> <li>Review target audience requirements and consider using query prompts for running reports adding more dynamic features, than relying on system admin updating and or maintaining the reports.</li> <li>Catalog reports with brief narrative and eliminate redundant reports if possible.</li> </ul> <p>Successful and accurate reporting is contingent on both accurate data, and stable, timely, consistent reporting. Keep your reports cataloged, relevant, and accurate. Perform regular updates and maintenance, to keep your internal customers happy.</p> <img src="https://track.hubspot.com/__ptq.gif?a=297092&amp;k=14&amp;r=http%3A%2F%2Fblog.checkpointllc.com%2Fare-all-your-reports-smartsheets-updated-for-the-new-year&amp;bu=http%253A%252F%252Fblog.checkpointllc.com&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> CheckPoint Consulting http://blog.checkpointllc.com/are-all-your-reports-smartsheets-updated-for-the-new-year Mon Jan 15 2018 10:53:34 GMT-0500 (EST) Using MDX for Generated Members in Essbase Reports http://timtows-hyperion-blog.blogspot.com/2018/01/using-mdx-for-generated-members-in.html <br />There are times when Essbase users may need to see an ad-hoc collection of members aggregated together in Essbase, and that isn’t always an easy task.&nbsp; If it were an aggregation that is needed on a recurring basis, the Essbase administrator may add an alternate hierarchy to assist.&nbsp; Other times, users might just create a spreadsheet with the desired members in different rows or columns and use Excel formulas to add them together.&nbsp; In this blog post, I will cover a third option, the use of MDX to create dynamically-generated members, how to run them in Smart View, and how to make them much easier to use in Dodeca.<br /><br />In order to illustrate how dynamically-generated members can be used, let’s consider an example using the Sample Basic database.&nbsp; Here is a simple quarterly income statement query that I will use as the basis for this blog post:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[New York], [Product].[Colas], Actual)</span><br /><br />The results from this simple query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s1600/SS1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="247" src="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s400/SS1.png" width="400" /></a></div><br /><br />This MDX is pretty straightforward, but what if you wanted to see how New York and Connecticut would look if they were combined?&nbsp; This is the question that a generated member can return for you.<br /><br />Generated members in MDX are created using the WITH MEMBER clause.&nbsp; Moreover, the generated member can then be used anywhere a normal member can be used, even in a slicer dimension (or what we would call a ‘page field’ in the classic Essbase add-in or a point-of-view in Smart View).&nbsp; Here is the query modified to use the new generated member:<br /><br /><span style="color: #0b5394; font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>WITH MEMBER</b></span><br /><span style="color: #0b5394; font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>&nbsp; &nbsp; [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; (<b><span style="color: #073763;">[Market].[SelectedMarkets]</span></b>, Colas, Actual)</span><br /><br />The results from this query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s1600/SS2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s400/SS2.png" width="400" /></a></div><br />So far, so good, but there are a couple of things to note.&nbsp; First, the member displayed in the POV is not a real member; that is to be expected.&nbsp; This leads to the second thing in that you cannot refresh the query as an ad-hoc analysis; the dynamically generated member name will be replaced with the dimension member name in its place.<br /><br />To go even further, what if you want to have multiple generated members?&nbsp; In that case, the syntax is easy as you just continue with another MEMBER clause:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WITH MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>MEMBER</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>&nbsp;<span style="white-space: pre;"> </span> [Product].[SelectedProducts] AS 'SUM({[Colas], [Grape]})'</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[SelectedMarkets], <b>[Product].[SelectedProducts]</b>, Actual)</span><br /><br />The results of this query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s1600/SS3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s400/SS3.png" width="400" /></a></div><br /><br />The syntax for creating and using generated members is not that difficult, but there are a couple of things that make it a bit more difficult than it should be for end users to use this approach.<br /><br />First, any time end users start having to deal with scripts of any kind, the level of complexity goes up exponentially.&nbsp; As one of my mentors used to say, <i>“The difference between zero lines of code and one line of code is much greater than the difference between one line of code and a hundred lines of code”</i>.&nbsp; In other words, it is hard to get users to deal with code of any kind.<br /><br />Second, once an end user has to ‘write a line of code’, or script in this case, then they assume the responsibility for it being correct.&nbsp; As there are differing levels of comfort and skill among users, the risk of error goes up.<br /><br />Finally, when users use a script like the one used in this example, they have to type in the correct member names or, again, risk error. Here is the new MDX dialog in Smart View 11.1.2.5.720 showing where users type in the MDX including the member names.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s1600/SS4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="401" data-original-width="793" height="201" src="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s400/SS4.png" width="400" /></a></div><br /><br />To make it much easier for end users, Dodeca does a couple of things.&nbsp; First, Dodeca developers can configure reports to use MDX without the end user ever having to know that MDX is powering the report ‘under-the-covers’.&nbsp; Further, Dodeca has flexible Point-of-View selectors that allow the end user to simply pick which members they want to use in the query.<br /><br />Dodeca report developers use tokens as a sort of substitution variables in the script.&nbsp; The tokens are replaced in the script at run-time by the members selected by end users.&nbsp; Here is the same script with tokens in place of the hard-coded values:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WITH MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp;<span style="white-space: pre;"> </span>[Market].[SelectedMarkets] AS 'SUM({<b>[T.Market]</b>})'</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; [Product].[SelectedProducts] AS 'SUM({<b>[T.Product]</b>})'&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[SelectedMarkets], [Product].[SelectedProducts], Actual)</span><br /><br />The Dodeca Essbase Scripts editor has tools to help the report developer create and test MDX scripts.&nbsp; Here are the Test Tokens available in the editor that allow developers to simulate the values plugged in by the Point-of-View selectors:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s1600/SS6.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="322" data-original-width="509" height="252" src="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s400/SS6.png" width="400" /></a></div><br />And the script itself in the scripts editor which has built-in testing facilities:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s1600/SS5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="622" data-original-width="869" height="286" src="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s400/SS5.png" width="400" /></a></div><br /><br />Finally, here is a Dodeca view that utilizes the tokenized MDX query and allows users to easily select the members they want dynamically aggregated and the report is produced without the risk of error.<br /><br /><a href="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s1600/SS7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="645" data-original-width="1054" height="243" src="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s400/SS7.png" width="400" /></a><br /><br />Let me know if you would like to learn more about Dodeca and how it could help your company.<br /><br /><br /> Tim Tow tag:blogger.com,1999:blog-4019598559914347729.post-7307245314777004380 Thu Jan 11 2018 19:30:00 GMT-0500 (EST) Using MDX for Generated Members in Essbase Reports @timtow @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs @orclEPMblogs http://timtows-hyperion-blog.blogspot.com/2018/01/using-mdx-for-generated-members-in.html <br />There are times when Essbase users may need to see an ad-hoc collection of members aggregated together in Essbase, and that isn’t always an easy task.&nbsp; If it were an aggregation that is needed on a recurring basis, the Essbase administrator may add an alternate hierarchy to assist.&nbsp; Other times, users might just create a spreadsheet with the desired members in different rows or columns and use Excel formulas to add them together.&nbsp; In this blog post, I will cover a third option, the use of MDX to create dynamically-generated members, how to run them in Smart View, and how to make them much easier to use in Dodeca.<br /><br />In order to illustrate how dynamically-generated members can be used, let’s consider an example using the Sample Basic database.&nbsp; Here is a simple quarterly income statement query that I will use as the basis for this blog post:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[New York], [Product].[Colas], Actual)</span><br /><br />The results from this simple query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s1600/SS1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="247" src="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s400/SS1.png" width="400" /></a></div><br /><br />This MDX is pretty straightforward, but what if you wanted to see how New York and Connecticut would look if they were combined?&nbsp; This is the question that a generated member can return for you.<br /><br />Generated members in MDX are created using the WITH MEMBER clause.&nbsp; Moreover, the generated member can then be used anywhere a normal member can be used, even in a slicer dimension (or what we would call a ‘page field’ in the classic Essbase add-in or a point-of-view in Smart View).&nbsp; Here is the query modified to use the new generated member:<br /><br /><span style="color: #0b5394; font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>WITH MEMBER</b></span><br /><span style="color: #0b5394; font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>&nbsp; &nbsp; [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; (<b><span style="color: #073763;">[Market].[SelectedMarkets]</span></b>, Colas, Actual)</span><br /><br />The results from this query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s1600/SS2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s400/SS2.png" width="400" /></a></div><br />So far, so good, but there are a couple of things to note.&nbsp; First, the member displayed in the POV is not a real member; that is to be expected.&nbsp; This leads to the second thing in that you cannot refresh the query as an ad-hoc analysis; the dynamically generated member name will be replaced with the dimension member name in its place.<br /><br />To go even further, what if you want to have multiple generated members?&nbsp; In that case, the syntax is easy as you just continue with another MEMBER clause:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WITH MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>MEMBER</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;"><b>&nbsp;<span style="white-space: pre;"> </span> [Product].[SelectedProducts] AS 'SUM({[Colas], [Grape]})'</b></span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[SelectedMarkets], <b>[Product].[SelectedProducts]</b>, Actual)</span><br /><br />The results of this query look like this:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s1600/SS3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s400/SS3.png" width="400" /></a></div><br /><br />The syntax for creating and using generated members is not that difficult, but there are a couple of things that make it a bit more difficult than it should be for end users to use this approach.<br /><br />First, any time end users start having to deal with scripts of any kind, the level of complexity goes up exponentially.&nbsp; As one of my mentors used to say, <i>“The difference between zero lines of code and one line of code is much greater than the difference between one line of code and a hundred lines of code”</i>.&nbsp; In other words, it is hard to get users to deal with code of any kind.<br /><br />Second, once an end user has to ‘write a line of code’, or script in this case, then they assume the responsibility for it being correct.&nbsp; As there are differing levels of comfort and skill among users, the risk of error goes up.<br /><br />Finally, when users use a script like the one used in this example, they have to type in the correct member names or, again, risk error. Here is the new MDX dialog in Smart View 11.1.2.5.720 showing where users type in the MDX including the member names.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s1600/SS4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="401" data-original-width="793" height="201" src="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s400/SS4.png" width="400" /></a></div><br /><br />To make it much easier for end users, Dodeca does a couple of things.&nbsp; First, Dodeca developers can configure reports to use MDX without the end user ever having to know that MDX is powering the report ‘under-the-covers’.&nbsp; Further, Dodeca has flexible Point-of-View selectors that allow the end user to simply pick which members they want to use in the query.<br /><br />Dodeca report developers use tokens as a sort of substitution variables in the script.&nbsp; The tokens are replaced in the script at run-time by the members selected by end users.&nbsp; Here is the same script with tokens in place of the hard-coded values:<br /><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WITH MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp;<span style="white-space: pre;"> </span>[Market].[SelectedMarkets] AS 'SUM({<b>[T.Market]</b>})'</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">MEMBER</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; [Product].[SelectedProducts] AS 'SUM({<b>[T.Product]</b>})'&nbsp;</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">SELECT</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; {[Year].Children, Year} on COLUMNS,</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">FROM</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; Sample.Basic</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">WHERE</span><br /><span style="font-family: &quot;courier new&quot; , &quot;courier&quot; , monospace;">&nbsp; &nbsp; ([Market].[SelectedMarkets], [Product].[SelectedProducts], Actual)</span><br /><br />The Dodeca Essbase Scripts editor has tools to help the report developer create and test MDX scripts.&nbsp; Here are the Test Tokens available in the editor that allow developers to simulate the values plugged in by the Point-of-View selectors:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s1600/SS6.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="322" data-original-width="509" height="252" src="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s400/SS6.png" width="400" /></a></div><br />And the script itself in the scripts editor which has built-in testing facilities:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s1600/SS5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="622" data-original-width="869" height="286" src="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s400/SS5.png" width="400" /></a></div><br /><br />Finally, here is a Dodeca view that utilizes the tokenized MDX query and allows users to easily select the members they want dynamically aggregated and the report is produced without the risk of error.<br /><br /><a href="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s1600/SS7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="645" data-original-width="1054" height="243" src="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s400/SS7.png" width="400" /></a><br /><br />Let me know if you would like to learn more about Dodeca and how it could help your company.<br /><br /><br /> Tim Tow tag:blogger.com,1999:blog-4019598559914347729.post-7307245314777004380 Thu Jan 11 2018 19:30:00 GMT-0500 (EST) Essbase Cloud Lab – Cube Designer http://theepmlab.com/essbase-cloud-lab-cube-designer/ &#160; When Essbase Cloud got released, a new Excel add-in coming with the Essbase Cloud, the Cube Designer. We briefly discussed about the Cube Designer in the previous posts. Now, let’s dig into more details. &#160; Basically, we are able to use Cube Designer to connect to Essbase application. It helps us to design, create and... Jun http://theepmlab.com/?p=1884 Thu Jan 11 2018 09:05:29 GMT-0500 (EST) Essbase Cloud Lab – Cube Designer @_Jun_Zhang_ http://theepmlab.com/essbase-cloud-lab-cube-designer/ &#160; When Essbase Cloud got released, a new Excel add-in coming with the Essbase Cloud, the Cube Designer. We briefly discussed about the Cube Designer in the previous posts. Now, let’s dig into more details. &#160; Basically, we are able to use Cube Designer to connect to Essbase application. It helps us to design, create and... Jun http://theepmlab.com/?p=1884 Thu Jan 11 2018 09:05:29 GMT-0500 (EST) EPM Cloud in 2018 @TopDownInc https://blog.topdownconsulting.com/2018/01/epm-cloud-2018/ <p><img class="size-full wp-image-2138 alignright" src="https://blog.topdownconsulting.com/wp-content/uploads/2018/01/TD_Icon_LifeinCloud-1-e1515463697984.jpg" alt="" width="328" height="210" /></p> <p>Every year TopDown showcases our <a href="https://blog.topdownconsulting.com/2017/12/top-blog-posts-of-2017/">top blog posts for the year</a>. These are topics that most interest clients, referral sources, editors, Oracle, and even competitors recognize who all recognize us as one of the foremost authorities on, and the go-to organization for, Enterprise Performance Management solutions on-premise and in the cloud.</p> <p>To kick off 2018, our experts have looked at the <a href="https://blog.topdownconsulting.com/2017/12/top-blog-posts-of-2017/">Top 10 Blog Posts for 2017</a> and weighed in on what these topics will mean in 2018.</p> <p>Read on to find out what they have to say&#8230;</p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/consolidations-erp-onestream/">Consolidations in ERP or OneStream</a></strong><br /> by <a href="https://blog.topdownconsulting.com/author/mike-a/">Mike Arnoldy</a><br /> If your ERP systems will do consolidations, you may be asking the question: How would I benefit from spending the extra money to implement a separate CPM application for Financial Consolidation and Reporting?<br /> <a href="https://blog.topdownconsulting.com/2017/12/consolidations-erp-onestream/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/consolidations-oracle-fccs/">Consolidations and Oracle FCCS?</a></strong><br /> <a href="https://blog.topdownconsulting.com/author/hoa/">Hoa Pham</a><br /> Finance teams are increasingly looking to technology for more agility, scalability, and deeper insights into the business partnering role. In 2017, readers were seeking new ways to get better reporting out of their financial systems. Now we&#8217;ll extend the discussion to Oracle FCCS.<br /> <a href="https://blog.topdownconsulting.com/2017/12/consolidations-oracle-fccs/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/top-five-essbaseplanning-calculation-trends-2018/"><strong>Top Five Essbase/Planning Calculation Trends for 2018</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/ron-moore/">Ron Moore</a><br /> Calc Manager is a reliable tool that has been around for a long time. As companies shift more of their planning and forecasting to PBCS and ePBCS, readers want to have at their fingertips ways to make the applications work for them. This new blog post kicks off a series on Intelligent Performance Management and five key innovations in PBCS and ePBCS that will accelerate analysis and decision making.<br /> <a href="https://blog.topdownconsulting.com/2017/12/top-five-essbaseplanning-calculation-trends-2018/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/new-data-load-possibilities-cloud-data-management-fdmee/"><strong>NEW Data Load Possibilities in Cloud Data Management &amp; FDMEE</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/thomas/">Thomas Thuresson</a><br /> As the number of cloud applications increases, many companies still find themselves in a position where they need to integrate data between on-premise and cloud applications. FDMEE offers a number of different features, including Hybrid Implementation Support, which lets you extract data from your on-premise HFM application and load it to the cloud. This new blog post goes over additional data load possibilities in FDMEE.<br /> <a href="https://blog.topdownconsulting.com/2017/12/new-data-load-possibilities-cloud-data-management-fdmee/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><b><a href="https://blog.topdownconsulting.com/2016/03/fdmee-fdm-map-one-source-account-to-multiple-target-accounts/">FDMEE/FDM –Map One Source Account to Multiple Target Accounts</a></b><br /> by <a href="https://blog.topdownconsulting.com/author/patrick-kiernan/">Patrick Kiernan</a><br /> What do you do when one line item provides more information than only one destination Point of View? For instance, assume that all of the trial balance accounts from an extract will load to a custom dimension member of “END”. However further assume that the trial balance has multiple members, typically in a custom dimension, for the balance sheet accounts that record movement.<br /> <a href="https://blog.topdownconsulting.com/2016/03/fdmee-fdm-map-one-source-account-to-multiple-target-accounts/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/fccs-where-are-we-now/"><strong>FCCS: Where Are We Now?</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/brian-willson/">Brian Willson</a><br /> It’s been almost a year since we first took a look at FCCS. A lot has changed in that time. FCCS functionality and performance continues to move closer to parity with HFM. As a result, we are seeing increased interest from clients who eager to know more about FCCS. It&#8217;s time to take a deeper look at FCCS and embrace it as the consolidation solution for the new era of cloud computing.<br /> <a href="https://blog.topdownconsulting.com/2017/12/fccs-where-are-we-now/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/edmcs-or-drm/"><b>EDMCS or DRM?</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/steve-davis/">Steve Davis</a><br /> Oracle’s Enterprise Data Management Cloud Service (EDMCS) is another master data management tool much like DRM (Data Relationship Management), however, EDMCS is in the cloud. EDMCS offers a different take on data/hierarchy management: it moves away from the notion of a single version of the truth and instead EDMCS focuses on bringing source data “as is” from the individual applications and leaves off the cleansing and mastering. Finance teams need to pivot quickly when potential challenges or opportunities arise. EDMCS is designed to accommodate this need.<br /> <a href="https://blog.topdownconsulting.com/2017/12/edmcs-or-drm/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/pbcs-vs-epbcs/">PBCS vs. EPBCS</a></strong><br /> by <a href="https://blog.topdownconsulting.com/author/paul-h/">Paul Hoch</a><br /> In 2017, readers jumped ahead and were seeking ways to work with two of the most popular EPM Cloud applications: PBCS and EPBCS. However, one of the most frequently asked questions we get is, “What is the difference between EPBCS and PBCS?”  To best understand the answer, this blog post takes a look at the features and functionality in both applications.<br /> <a href="https://blog.topdownconsulting.com/2017/12/pbcs-vs-epbcs/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/11/another-look-reconciling-data/"><b>Another Look At Reconciling Data</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/mike-a/">Mike Arnoldy</a><br /> Most organizations severely underestimate what it takes to reconcile data. They often don’t consider how much historical data is needed and other items that need to be accounted for. The best way to make sure data reconciliation is smooth and mostly uneventful is to take a planned and considered approach.<br /> <a href="https://blog.topdownconsulting.com/2017/11/another-look-reconciling-data/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/integration-and-the-cloud/"><b>Integration and the Cloud</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/danny-booher/">Danny Booher</a><br /> While the push toward the cloud most certainly gained steam in 2017, some applications are not yet robust enough to accommodate the needs of the business. As a result, the most popular topic in 2017 was data integration and FDMEE  (a topic that will no doubt remain a hot one in 2018). This blog post discusses integration and a Hybrid Approach to help companies decide which option best accommodates the goals and needs of the business.<br /> <a href="https://blog.topdownconsulting.com/2017/12/integration-and-the-cloud/" target="_blank" rel="noopener">Read more &gt;</a></p> <p>The post <a rel="nofollow" href="https://blog.topdownconsulting.com/2018/01/epm-cloud-2018/">EPM Cloud in 2018</a> appeared first on <a rel="nofollow" href="https://blog.topdownconsulting.com">TopDown Consulting Blog</a>.</p> TopDown Team https://blog.topdownconsulting.com/?p=2135 Wed Jan 10 2018 13:00:34 GMT-0500 (EST) EPM Cloud in 2018 https://blog.topdownconsulting.com/2018/01/epm-cloud-2018/ <p><img class="size-full wp-image-2138 alignright" src="https://blog.topdownconsulting.com/wp-content/uploads/2018/01/TD_Icon_LifeinCloud-1-e1515463697984.jpg" alt="" width="328" height="210" /></p> <p>Every year TopDown showcases our <a href="https://blog.topdownconsulting.com/2017/12/top-blog-posts-of-2017/">top blog posts for the year</a>. These are topics that most interest clients, referral sources, editors, Oracle, and even competitors recognize who all recognize us as one of the foremost authorities on, and the go-to organization for, Enterprise Performance Management solutions on-premise and in the cloud.</p> <p>To kick off 2018, our experts have looked at the <a href="https://blog.topdownconsulting.com/2017/12/top-blog-posts-of-2017/">Top 10 Blog Posts for 2017</a> and weighed in on what these topics will mean in 2018.</p> <p>Read on to find out what they have to say&#8230;</p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/consolidations-erp-onestream/">Consolidations in ERP or OneStream</a></strong><br /> by <a href="https://blog.topdownconsulting.com/author/mike-a/">Mike Arnoldy</a><br /> If your ERP systems will do consolidations, you may be asking the question: How would I benefit from spending the extra money to implement a separate CPM application for Financial Consolidation and Reporting?<br /> <a href="https://blog.topdownconsulting.com/2017/12/consolidations-erp-onestream/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/consolidations-oracle-fccs/">Consolidations and Oracle FCCS?</a></strong><br /> <a href="https://blog.topdownconsulting.com/author/hoa/">Hoa Pham</a><br /> Finance teams are increasingly looking to technology for more agility, scalability, and deeper insights into the business partnering role. In 2017, readers were seeking new ways to get better reporting out of their financial systems. Now we&#8217;ll extend the discussion to Oracle FCCS.<br /> <a href="https://blog.topdownconsulting.com/2017/12/consolidations-oracle-fccs/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/top-five-essbaseplanning-calculation-trends-2018/"><strong>Top Five Essbase/Planning Calculation Trends for 2018</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/ron-moore/">Ron Moore</a><br /> Calc Manager is a reliable tool that has been around for a long time. As companies shift more of their planning and forecasting to PBCS and ePBCS, readers want to have at their fingertips ways to make the applications work for them. This new blog post kicks off a series on Intelligent Performance Management and five key innovations in PBCS and ePBCS that will accelerate analysis and decision making.<br /> <a href="https://blog.topdownconsulting.com/2017/12/top-five-essbaseplanning-calculation-trends-2018/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/new-data-load-possibilities-cloud-data-management-fdmee/"><strong>NEW Data Load Possibilities in Cloud Data Management &amp; FDMEE</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/thomas/">Thomas Thuresson</a><br /> As the number of cloud applications increases, many companies still find themselves in a position where they need to integrate data between on-premise and cloud applications. FDMEE offers a number of different features, including Hybrid Implementation Support, which lets you extract data from your on-premise HFM application and load it to the cloud. This new blog post goes over additional data load possibilities in FDMEE.<br /> <a href="https://blog.topdownconsulting.com/2017/12/new-data-load-possibilities-cloud-data-management-fdmee/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><b><a href="https://blog.topdownconsulting.com/2016/03/fdmee-fdm-map-one-source-account-to-multiple-target-accounts/">FDMEE/FDM –Map One Source Account to Multiple Target Accounts</a></b><br /> by <a href="https://blog.topdownconsulting.com/author/patrick-kiernan/">Patrick Kiernan</a><br /> What do you do when one line item provides more information than only one destination Point of View? For instance, assume that all of the trial balance accounts from an extract will load to a custom dimension member of “END”. However further assume that the trial balance has multiple members, typically in a custom dimension, for the balance sheet accounts that record movement.<br /> <a href="https://blog.topdownconsulting.com/2016/03/fdmee-fdm-map-one-source-account-to-multiple-target-accounts/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/fccs-where-are-we-now/"><strong>FCCS: Where Are We Now?</strong></a><br /> by <a href="https://blog.topdownconsulting.com/author/brian-willson/">Brian Willson</a><br /> It’s been almost a year since we first took a look at FCCS. A lot has changed in that time. FCCS functionality and performance continues to move closer to parity with HFM. As a result, we are seeing increased interest from clients who eager to know more about FCCS. It&#8217;s time to take a deeper look at FCCS and embrace it as the consolidation solution for the new era of cloud computing.<br /> <a href="https://blog.topdownconsulting.com/2017/12/fccs-where-are-we-now/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/edmcs-or-drm/"><b>EDMCS or DRM?</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/steve-davis/">Steve Davis</a><br /> Oracle’s Enterprise Data Management Cloud Service (EDMCS) is another master data management tool much like DRM (Data Relationship Management), however, EDMCS is in the cloud. EDMCS offers a different take on data/hierarchy management: it moves away from the notion of a single version of the truth and instead EDMCS focuses on bringing source data “as is” from the individual applications and leaves off the cleansing and mastering. Finance teams need to pivot quickly when potential challenges or opportunities arise. EDMCS is designed to accommodate this need.<br /> <a href="https://blog.topdownconsulting.com/2017/12/edmcs-or-drm/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><strong><a href="https://blog.topdownconsulting.com/2017/12/pbcs-vs-epbcs/">PBCS vs. EPBCS</a></strong><br /> by <a href="https://blog.topdownconsulting.com/author/paul-h/">Paul Hoch</a><br /> In 2017, readers jumped ahead and were seeking ways to work with two of the most popular EPM Cloud applications: PBCS and EPBCS. However, one of the most frequently asked questions we get is, “What is the difference between EPBCS and PBCS?”  To best understand the answer, this blog post takes a look at the features and functionality in both applications.<br /> <a href="https://blog.topdownconsulting.com/2017/12/pbcs-vs-epbcs/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/11/another-look-reconciling-data/"><b>Another Look At Reconciling Data</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/mike-a/">Mike Arnoldy</a><br /> Most organizations severely underestimate what it takes to reconcile data. They often don’t consider how much historical data is needed and other items that need to be accounted for. The best way to make sure data reconciliation is smooth and mostly uneventful is to take a planned and considered approach.<br /> <a href="https://blog.topdownconsulting.com/2017/11/another-look-reconciling-data/" target="_blank" rel="noopener">Read more &gt;</a></p> <hr style="clear: both;" /> <p><a href="https://blog.topdownconsulting.com/2017/12/integration-and-the-cloud/"><b>Integration and the Cloud</b></a><br /> by <a href="https://blog.topdownconsulting.com/author/danny-booher/">Danny Booher</a><br /> While the push toward the cloud most certainly gained steam in 2017, some applications are not yet robust enough to accommodate the needs of the business. As a result, the most popular topic in 2017 was data integration and FDMEE  (a topic that will no doubt remain a hot one in 2018). This blog post discusses integration and a Hybrid Approach to help companies decide which option best accommodates the goals and needs of the business.<br /> <a href="https://blog.topdownconsulting.com/2017/12/integration-and-the-cloud/" target="_blank" rel="noopener">Read more &gt;</a></p> <p>The post <a rel="nofollow" href="https://blog.topdownconsulting.com/2018/01/epm-cloud-2018/">EPM Cloud in 2018</a> appeared first on <a rel="nofollow" href="https://blog.topdownconsulting.com">TopDown Consulting Blog</a>.</p> TopDown Team https://blog.topdownconsulting.com/?p=2135 Wed Jan 10 2018 13:00:34 GMT-0500 (EST) Martin D'Souza's Farewell http://www.odtug.com/p/bl/et/blogaid=758&source=1 Martin D'Souza has served the ODTUG community as a board director for six consecutive years, from 2012 to 2017. During this time, Martin has served on the Executive Committee, the Marketing Committee, and as an APEX Community Liaison. ODTUG http://www.odtug.com/p/bl/et/blogaid=758&source=1 Tue Jan 09 2018 16:04:43 GMT-0500 (EST) Martin D'Souza's Farewell @odtug https://www.odtug.com/p/bl/et/blogaid=758&source=1 Martin D'Souza has served the ODTUG community as a board director for six consecutive years, from 2012 to 2017. During this time, Martin has served on the Executive Committee, the Marketing Committee, and as an APEX Community Liaison. ODTUG https://www.odtug.com/p/bl/et/blogaid=758&source=1 Tue Jan 09 2018 16:04:43 GMT-0500 (EST) Martin D'Souza's Farewell @odtug @orclEPMblogs @orclEPMblogs @orclEPMblogs http://www.odtug.com/p/bl/et/blogaid=758&source=1 Martin D'Souza has served the ODTUG community as a board director for six consecutive years, from 2012 to 2017. During this time, Martin has served on the Executive Committee, the Marketing Committee, and as an APEX Community Liaison. ODTUG http://www.odtug.com/p/bl/et/blogaid=758&source=1 Tue Jan 09 2018 16:04:43 GMT-0500 (EST) Martin D'Souza's Farewell https://www.odtug.com/p/bl/et/blogaid=758&source=1 Martin D'Souza has served the ODTUG community as a board director for six consecutive years, from 2012 to 2017. During this time, Martin has served on the Executive Committee, the Marketing Committee, and as an APEX Community Liaison. ODTUG https://www.odtug.com/p/bl/et/blogaid=758&source=1 Tue Jan 09 2018 16:04:43 GMT-0500 (EST) PBCS and EPBCS Updates (January 2018): Improving Cube Performance, Removal of Support, Fixed Defects & More https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/pbcs%20and%20epbcs%20january%202018%20updates.jpg?t=1519157959954" alt="pbcs and epbcs january 2018 updates" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The January updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications, enhancements, removal of support, and fixed defects.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2018-january-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates Tue Jan 09 2018 15:18:04 GMT-0500 (EST) PBCS and EPBCS Updates (January 2018): Improving Cube Performance, Removal of Support, Fixed Defects & More @usanalytics https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/pbcs%20and%20epbcs%20january%202018%20updates.jpg?t=1517947372938" alt="pbcs and epbcs january 2018 updates" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The January updates for Oracle's<span>&nbsp;</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">Planning &amp; Budgeting Cloud Service (PBCS) and Enterprise Planning and Budgeting Cloud Service (EPBCS)</a><span>&nbsp;are here.&nbsp;</span>This blog post outlines several new features for both applications, enhancements, removal of support, and fixed defects.</p> <p><em>The monthly update for PBCS and EPBCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Fpbcs-and-epbcs-2018-january-updates&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/pbcs-and-epbcs-2018-january-updates Tue Jan 09 2018 15:18:04 GMT-0500 (EST) FCCS Updates (January 2018): Validating Metadata, Re-consolidating Data After Upgrading, and More https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/fccs%20january%202018%20update.jpg?t=1519157959954" alt="fccs january 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The latest updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines multiple new features, fixed defects, and considerations.</p> <p><em>The monthly update for FCCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-december-2017-0&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0 Tue Jan 09 2018 14:31:12 GMT-0500 (EST) FCCS Updates (January 2018): Validating Metadata, Re-consolidating Data After Upgrading, and More @usanalytics https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/fccs%20january%202018%20update.jpg?t=1517947372938" alt="fccs january 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The latest updates for&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-oracle-financial-consolidation-and-close-cloud-service-fccs">Oracle's<span>&nbsp;Financial Consolidation and Close Cloud Service</span>&nbsp;(FCCS)</a><span> are here</span><a href="https://www.us-analytics.com/hyperionblog/pbcs-vs-epbcs-comparing-oracle-cloud-planning-applications">.</a><span>&nbsp;</span>This blog post outlines multiple new features, fixed defects, and considerations.</p> <p><em>The monthly update for FCCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Ffccs-updates-december-2017-0&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/fccs-updates-december-2017-0 Tue Jan 09 2018 14:31:12 GMT-0500 (EST) ARCS Updates (January 2018): Transaction Matching Balance Report, Considerations for EPM Automate, Academy, and More https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/arcs%20january%202018%20update.jpg?t=1519157959954" alt="arcs january 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The first updates of the new year for Oracle's&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) have arrived. In this blog post, we’ll outline new guidelines for on-prem to cloud migration, fixed defects, and considerations.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-december-2017-1&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1 Tue Jan 09 2018 13:01:22 GMT-0500 (EST) ARCS Updates (January 2018): Transaction Matching Balance Report, Considerations for EPM Automate, Academy, and More @usanalytics https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1 <div class="hs-featured-image-wrapper"> <a href="https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1" title="" class="hs-featured-image-link"> <img src="https://www.us-analytics.com/hubfs/arcs%20january%202018%20update.jpg?t=1517947372938" alt="arcs january 2018 update" class="hs-featured-image" style="width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;"> </a> </div> <p>The first updates of the new year for Oracle's&nbsp;<a href="https://www.us-analytics.com/hyperionblog/faq-account-reconciliation-cloud-service-arcs">Account Reconciliation Cloud Service (ARCS</a>) have arrived. In this blog post, we’ll outline new guidelines for on-prem to cloud migration, fixed defects, and considerations.</p> <p>We’ll let you know any time there are updates to ARCS or any other Oracle EPM cloud products. Check the&nbsp;<a href="https://www.us-analytics.com/hyperionblog">US-Analytics Oracle EPM &amp; BI Blog</a><span>&nbsp;</span>every month.</p> <p><em>The monthly update for Oracle ARCS will occur on Friday, January 19 during your normal daily maintenance window.</em></p> <h3 style="text-align: center;"></h3> <img src="https://track.hubspot.com/__ptq.gif?a=135305&amp;k=14&amp;r=https%3A%2F%2Fwww.us-analytics.com%2Fhyperionblog%2Farcs-product-update-december-2017-1&amp;bu=https%253A%252F%252Fwww.us-analytics.com%252Fhyperionblog&amp;bvt=rss" alt="" width="1" height="1" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important; "> Michelle Heath https://www.us-analytics.com/hyperionblog/arcs-product-update-december-2017-1 Tue Jan 09 2018 13:01:22 GMT-0500 (EST)