<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oracle &#8211; Hyperion Labs</title>
	<atom:link href="https://orahyplabs.com/feed" rel="self" type="application/rss+xml" />
	<link>https://orahyplabs.com/</link>
	<description>Explore more</description>
	<lastBuildDate>Wed, 21 Feb 2018 20:48:45 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://i0.wp.com/orahyplabs.com/wp-content/uploads/2016/10/cropped-ORAHYPLABS-FAVICON.png?fit=32%2C32&#038;ssl=1</url>
	<title>Oracle &#8211; Hyperion Labs</title>
	<link>https://orahyplabs.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">117109322</site>	<item>
		<title>New Journey!!</title>
		<link>https://orahyplabs.com/2018/02/new-journey.html</link>
					<comments>https://orahyplabs.com/2018/02/new-journey.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Wed, 21 Feb 2018 17:03:57 +0000</pubDate>
				<category><![CDATA[CPM]]></category>
		<category><![CDATA[Insights]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4457</guid>

					<description><![CDATA[<p><img width="150" height="66" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?zoom=2&amp;resize=150%2C66&amp;ssl=1 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="4463" data-permalink="https://orahyplabs.com/2018/02/new-journey.html/onestream-logo" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-orig-size="300,66" 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="onestream-logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" /><img width="150" height="66" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?zoom=2&amp;resize=150%2C66&amp;ssl=1 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="4463" data-permalink="https://orahyplabs.com/2018/02/new-journey.html/onestream-logo" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-orig-size="300,66" 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="onestream-logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" />The last post before I say goodbye. There are a few people who knew this was happening and for those of you who didn&#8217;t. I&#8217;m leaving the Oracle EPM world and starting a new technical journey. I used to joke about Oracle being my second wife, even though my real wife has a different opinion. [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/new-journey.html">New Journey!!</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="66" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?zoom=2&amp;resize=150%2C66&amp;ssl=1 300w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4463" data-permalink="https://orahyplabs.com/2018/02/new-journey.html/onestream-logo" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-orig-size="300,66" 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="onestream-logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" /><img width="150" height="66" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?resize=150%2C66&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?zoom=2&amp;resize=150%2C66&amp;ssl=1 300w" sizes="(max-width: 150px) 100vw, 150px" data-attachment-id="4463" data-permalink="https://orahyplabs.com/2018/02/new-journey.html/onestream-logo" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-orig-size="300,66" 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="onestream-logo" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/onestream-logo.png?fit=300%2C66&amp;ssl=1" /><p>The last post before I say goodbye.</p>
<p>There are a few people who knew this was happening and for those of you who didn&#8217;t.</p>
<p>I&#8217;m leaving the Oracle EPM world and starting a <a href="www.onestreamsoftware.com">new technical journey</a>. I used to joke about Oracle being my second wife, even though my real wife has a different opinion. (She thinks she is second, and sometimes I think she is right about it.)</p>
<p>I was talking to <a href="http://thetruthaboutcpm.com/">Cameron Lackpour</a> yesterday, and I was telling him that I got divorced and Oracle is my ex-wife now :).</p>
<p>You might be now thinking about, what I&#8217;m going to do?</p>
<p>I&#8217;m joining <a href="https://onestreamsoftware.com">OneStream Software as an employee</a>. I&#8217;m excited and anxious to start this new journey. I&#8217;m excited about the opportunity, the future, and exploring new frontiers. I&#8217;m anxious because I&#8217;m new to Smart CPM and I know nothing!!!!</p>
<p>Here&#8217;s to new beginnings, and a new CPM Family. You can follow my new blog <a href="http://www.cpminsights.com">CPM Insights</a> or <a href="http://www.epminsights.com">EPM Insights</a> (Yup I copied my big brother <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> )</p>
<p>I admit that past couple of months, I was in a rush to finish my draft posts. I&#8217;m leaving, and I wanted to do a little more before I leave <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>A couple of days I was sad that I&#8217;m leaving the EPM world. I admit I&#8217;ll miss the people, KScope,&#8230;</p>
<p>In no particular order (I&#8217;m overwhelmed, so I could miss names, apologies if you don&#8217;t see your name)</p>
<p>Peter Nitschke, Tim German, John Booth, Sree Menon, Natalie Delemar, Jessica Cordova, Ricardo Giampaoli, Rodrigo Radtke de Souza, Prasad Kulkarni, Shankar Viswanathan, Ujwala Maheswari, Dan Pressman, Gabby Rubin, Glenn Schwartzberg, Shaji Puthenveetil,  Shaun Bakey, Suren Seshadri, ODTUG, and many more.</p>
<p>It&#8217;s been a long journey; I started this blog because I didn&#8217;t want to forget what I learned (I was on the longest beach when I got recruited at Deloitte).</p>
<p>I think it was in 2009 or maybe even before I was fighting on an OTN thread with someone called &#8220;CL&#8221; about block creation!!!! I was like who is this CL guy doesn&#8217;t know anything!!! Later I did tell him this story and we both we laughing hysterically :):):) o</p>
<p>I think after 2 or 3 years into writing a lot of posts (I hate when I go back and look at them), I think it was <a href="http://looksmarter.blogspot.com/">Edward Roske</a>, who first added a link to my blog. I went ahead looked at it again, and Orahyplabs is the first one ;). I was thrilled that I emailed a screenshot to a few of my friends.</p>
<p>When I got added to Cameron&#8217;s best and brightest email list, I was so excited about it, and my wife thought I won a lottery.</p>
<p>I still remember talking to Tim German (mistaking him for someone else) and him asking me to come and start looking at OTN forums, I didn&#8217;t know anything, however, him thinking so highly of me was like conquering a new world.</p>
<p>When I first went to Kscope and met all the EPM giants and them recognizing me, let&#8217;s say my cheeks were hurting (I was blushing and smiling). I&#8217;m blushing now too.</p>
<p>The exciting thing about memories is they all come rushing like a hurricane and crush you <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>I believe I&#8217;ve tried my best to keep this place alive, Wish me luck and this is me signing off for the last time.</p>
<p>I give you love and CPM <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The post <a href="https://orahyplabs.com/2018/02/new-journey.html">New Journey!!</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/new-journey.html/feed</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4457</post-id>	</item>
		<item>
		<title>Execute a Calculation script based on Planning unit status &#8211; Groovy on-premises Snippets Part III</title>
		<link>https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html</link>
					<comments>https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html#respond</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Wed, 21 Feb 2018 15:12:07 +0000</pubDate>
				<category><![CDATA[Groovy]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tricks]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=117</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4448" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/planning-unit-approvals" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=2736%2C1400&amp;ssl=1" data-orig-size="2736,1400" 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="planning unit approvals" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=1024%2C524&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4448" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/planning-unit-approvals" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=2736%2C1400&amp;ssl=1" data-orig-size="2736,1400" 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="planning unit approvals" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=1024%2C524&amp;ssl=1" />I was on a mission to finish all the posts in my drafts, and I&#8217;m somewhat satisfied that I could cover halfway through. I remember someone asking this on OTN forums, &#8220;How can I run a business rule when a Planning unit is approved?&#8221; I used Vision application and will not be covering Planning Unit [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html">Execute a Calculation script based on Planning unit status &#8211; Groovy on-premises Snippets Part III</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4448" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/planning-unit-approvals" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=2736%2C1400&amp;ssl=1" data-orig-size="2736,1400" 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="planning unit approvals" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=1024%2C524&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4448" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/planning-unit-approvals" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=2736%2C1400&amp;ssl=1" data-orig-size="2736,1400" 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="planning unit approvals" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=1024%2C524&amp;ssl=1" /><p>I was on a mission to finish all the posts in my drafts, and I&#8217;m somewhat satisfied that I could cover halfway through.</p>
<p>I remember someone asking this on OTN forums, &#8220;How can I run a business rule when a Planning unit is approved?&#8221;</p>
<p>I used Vision application and will not be covering Planning Unit details 🙂 (I&#8217;m tired 🙁 )</p>
<p>I&#8217;m going to use Groovy script to achieve this request.</p>
<p>I&#8217;m logged in as a user who can approve Planning units.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4448" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/planning-unit-approvals" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=2736%2C1400&amp;ssl=1" data-orig-size="2736,1400" 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="planning unit approvals" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?fit=1024%2C524&amp;ssl=1" class="alignnone size-large wp-image-4448" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals-1024x524.png?resize=1024%2C524" alt="" width="1024" height="524" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=1024%2C524&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=300%2C154&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?resize=768%2C393&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/planning-unit-approvals.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>If you look at Application schema, you&#8217;ll be able to see the tables associated with Planning Units. Yep, they all start with HSP_PM_.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4453" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/pm-tables" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?fit=678%2C518&amp;ssl=1" data-orig-size="678,518" 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="pm tables" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?fit=300%2C229&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?fit=678%2C518&amp;ssl=1" class="alignnone size-full wp-image-4453" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?resize=678%2C518" alt="" width="678" height="518" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?w=678&amp;ssl=1 678w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pm-tables.png?resize=300%2C229&amp;ssl=1 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></p>
<p>HSP_PM_ACTIONS holds all the actions a user can perform, from here we now know that approval action id is 2</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4450" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/hsp-actions" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?fit=1377%2C1007&amp;ssl=1" data-orig-size="1377,1007" 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="hsp actions" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?fit=300%2C219&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?fit=1024%2C749&amp;ssl=1" class="alignnone size-large wp-image-4450" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions-1024x749.png?resize=1024%2C749" alt="" width="1024" height="749" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?resize=1024%2C749&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?resize=300%2C219&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?resize=768%2C562&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-actions.png?w=1377&amp;ssl=1 1377w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>HSP_PM_STATES table will tell us all we need to know about different states.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4455" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/process-state" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?fit=1614%2C582&amp;ssl=1" data-orig-size="1614,582" 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="process state" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?fit=300%2C108&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?fit=1024%2C369&amp;ssl=1" class="alignnone size-large wp-image-4455" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state-1024x369.png?resize=1024%2C369" alt="" width="1024" height="369" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?resize=1024%2C369&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?resize=300%2C108&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?resize=768%2C277&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/process-state.png?w=1614&amp;ssl=1 1614w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Table of our interest is HSP_PLANNING_UNIT, and this table holds all the details we need for creating a Groovy script. I&#8217;m using Account as my secondary dimension.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4449" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/pu-hier" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?fit=2110%2C786&amp;ssl=1" data-orig-size="2110,786" 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="pu hier" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?fit=300%2C112&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?fit=1024%2C381&amp;ssl=1" class="alignnone size-large wp-image-4449" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier-1024x381.png?resize=1024%2C381" alt="" width="1024" height="381" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?resize=1024%2C381&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?resize=300%2C112&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pu-hier.png?resize=768%2C286&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4452" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/hsp-planning-unit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?fit=2222%2C374&amp;ssl=1" data-orig-size="2222,374" 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="hsp planning unit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?fit=300%2C50&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?fit=1024%2C172&amp;ssl=1" class="alignnone size-large wp-image-4452" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit-1024x172.png?resize=1024%2C172" alt="" width="1024" height="172" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?resize=1024%2C172&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?resize=300%2C50&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/hsp-planning-unit.png?resize=768%2C129&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>We can run a quick SQL to get the member names involved from the four dimensions.</p>
<pre class="brush: sql; title: ; notranslate">

select B.Object_Name Scenario,C.Object_Name Version,d.object_name Entity,e.object_name Secondary_Member from Hsp_Planning_Unit a,
hsp_object b,
hsp_object c,
hsp_object d,
hsp_object e
where a.Process_State=3
and A.Scenario_Id=B.Object_Id
and a.version_id=c.object_id
and a.entity_id=d.object_id
and A.Secondary_Member_Id=e.object_id

</pre>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4454" data-permalink="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/sql" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?fit=2263%2C1058&amp;ssl=1" data-orig-size="2263,1058" 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="sql" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?fit=300%2C140&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?fit=1024%2C479&amp;ssl=1" class="alignnone size-large wp-image-4454" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-1024x479.png?resize=1024%2C479" alt="" width="1024" height="479" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?resize=1024%2C479&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?resize=300%2C140&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql.png?resize=768%2C359&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Now that we have all the required information let&#8217;s create a groovy script calc to run a calculation. I&#8217;m going to copy working data to final for all the approved Account, Entity, Scenario, and Version combination.</p>
<pre class="brush: groovy; title: ; notranslate">

import groovy.sql.Sql

Thread.currentThread().setContextClassLoader( getClass().getClassLoader() )

// Read java and maxl configuration script for the prod environment.
def keyConfig = new ConfigSlurper().parse(new File('C:/groovy_scripts/Properties/JavaMaxl.txt').toURL())

def appname=keyConfig.essbaseEnv.prod.esbApp
def dbname=keyConfig.essbaseEnv.prod.esbDB
def sqluser=new String(keyConfig.essbaseEnv.prod.sqlUser.decodeBase64())
def sqlpass=new String(keyConfig.essbaseEnv.prod.sqlPass.decodeBase64())

Sql sql=Sql.newInstance(&quot;jdbc:oracle:thin:@localhost:1521:XE&quot;, sqluser, sqlpass)

def now = new Date()

def tmpMaxlfile = new File(&quot;C:/groovy_scripts/tmpmxl_${now.format(&quot;yyyyMMdd-HH_mm_ss_SSS&quot;, TimeZone.getTimeZone('UTC'))}.msh&quot;)
tmpMaxlfile.withWriter{ out -&gt;
    out.println ($/
    login $$key ${keyConfig.essbaseEnv.prod.maxlUser} $$key ${keyConfig.essbaseEnv.prod.maxlPass} on localhost;
    execute calculation '
        SET AGGMISSG ON;
        SET UPDATECALC OFF;
        SET EMPTYMEMBERSETS ON;
         
        FIX(&amp;CurYr,
        @LEVMBRS(&quot;Period&quot;,0),
        @IDESC(&quot;P_TP&quot;))
    /$)
        sql.eachRow(&quot;&quot;&quot;select B.Object_Name Scenario,C.Object_Name Version,d.object_name Entity,e.object_name Secondary_Member from Hsp_Planning_Unit a,
                        hsp_object b,
                        hsp_object c,
                        hsp_object d,
                        hsp_object e
                        where a.Process_State=3
                        and A.Scenario_Id=B.Object_Id
                        and a.version_id=c.object_id
                        and a.entity_id=d.object_id
                        and A.Secondary_Member_Id=e.object_id&quot;&quot;&quot;)
                     { row -&gt;
        out.println &quot;&quot;&quot;
                FIX(&quot;$row.Scenario&quot;,
                &quot;$row.Entity&quot;,
                &quot;$row.Secondary_Member&quot;)
                   
                    DATACOPY &quot;$row.Version&quot; TO &quot;Final&quot;;
                   
                ENDFIX
                    &quot;&quot;&quot;    
                     }
            

        sql.close() 
        out.println &quot;&quot;&quot;
        ENDFIX'
        
    on $appname.$dbname;
    logout;
    spool off;
    exit;
    &quot;&quot;&quot;    
}

    essmsh.runFile(&#x5B;&quot;-D&quot;,&quot;C:/groovy_scripts/tmpmxl_${now.format(&quot;yyyyMMdd-HH_mm_ss_SSS&quot;, TimeZone.getTimeZone('UTC'))}.msh&quot;,&quot;1036072223,1105601687&quot;] as String&#x5B;])
     
</pre>
<p>First, we import the excellent Groovy SQL, read the parameters.<br />
Line 13, I&#8217;m connecting to Planning schema and going to write a temporary MaxL script. I&#8217;m using time stamp so that it is unique for different users. (I don&#8217;t think two users are going to perform a similar action with millisecond precision).<br />
Lines 24 &#8211; 30 I&#8217;m creating a calc script on the fly.<br />
Line 30 I&#8217;m running the SQL and finishing my calc script 🙂</p>
<p>Line 64 we are going to execute the temporary MaxL script, the order of arguments are important, if you are using an encrypted Maxl, follow the order below.</p>
<ol>
<li>-D for decrypting</li>
<li>MaxL file name</li>
<li>Private key for decryption</li>
<li>Any variables</li>
</ol>
<p>Here is a sample output of this script.</p>
<pre class="brush: vb; title: ; notranslate">
    login $key 980700984040509848903004677700 $key 2954990220132113241093195557202967062540 on localhost;
    execute calculation '
        SET AGGMISSG ON;
        SET UPDATECALC OFF;
        SET EMPTYMEMBERSETS ON;
         
        FIX(&amp;CurYr,
        @LEVMBRS(&quot;Period&quot;,0),
        @IDESC(&quot;P_TP&quot;))
    

                FIX(&quot;Forecast&quot;,
                &quot;410&quot;,
                &quot;1110&quot;)
                   
                    DATACOPY &quot;Working&quot; TO &quot;Final&quot;;
                   
                ENDFIX
                    

                FIX(&quot;Forecast&quot;,
                &quot;410&quot;,
                &quot;1150&quot;)
                   
                    DATACOPY &quot;Working&quot; TO &quot;Final&quot;;
                   
                ENDFIX
                    

        ENDFIX'
        
    on Vision.Plan1;
    logout;
    spool off;
    exit;
    
</pre>
<p>I&#8217;m going to call this script from a calc script as given below.</p>
<pre class="brush: vb; title: ; notranslate">&lt;/pre&gt;

RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;clear&quot;;
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;level&quot; &quot;FINE&quot;;

RUNJAVA com.hyperion.calcmgr.common.groovy.cdf.GroovyCDF
&quot;run&quot; /* compile, run */
&quot;-file&quot;
&quot;C:\groovy_scripts\PMApprove.groovy&quot;
&quot;&quot; /* variables in Groovy Script */
;

</pre>
<p>There you go, you can run this script, and it&#8217;ll look at all approved PUs and copy data to the final version.</p>
<p>Here is the output from CDFLogger.</p>
<pre class="brush: plain; title: ; notranslate">

&#x5B;2018-02-20 17:52:18] &#x5B;INFO]  GroovyCDF main: &#x5B;run, -file, C:\groovy_scripts\PMApprove.groovy, ]
&#x5B;2018-02-20 17:52:18] &#x5B;INFO]  Binding essmsh=com.hyperion.calcmgr.common.groovy.cdf.MaxLGroovyShell@235dc721
&#x5B;2018-02-20 17:52:18] &#x5B;INFO]  Binding =&#x5B;null]
&#x5B;2018-02-20 17:52:18] &#x5B;INFO]  Binding MaxL=com.hyperion.calcmgr.common.groovy.cdf.MaxLGroovyShell@61bc59aa
&#x5B;2018-02-20 17:52:18] &#x5B;INFO]  Binding logger=java.util.logging.Logger@75be16f5
&#x5B;2018-02-20 17:52:18] &#x5B;FINE]  &#x5B;essmsh, -D, C:/groovy_scripts/tmpmxl_20180221-01_52_18_512.msh, 1036072223,1105601687]
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   Essbase MaxL Shell 64-bit - Release 11.1.2 (ESB11.1.2.4.017B009)
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   Copyright (c) 2000, 2017, Oracle and/or its affiliates.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   All rights reserved.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  MAXL&gt; login $key 980700984040509848903004677700 $key 2954990220132113241093195557202967062540 on localhost;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1051034 - Logging in user &#x5B;admin@Native Directory].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1241001 - Logged in to Essbase.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  MAXL&gt; execute calculation '
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     2&gt;         SET AGGMISSG ON;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     3&gt;         SET UPDATECALC OFF;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     4&gt;         SET EMPTYMEMBERSETS ON;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     5&gt;          
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     6&gt;         FIX(&amp;CurYr,
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     7&gt;         @LEVMBRS(&quot;Period&quot;,0),
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     8&gt;         @IDESC(&quot;P_TP&quot;))
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]     9&gt;     
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    10&gt; 
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    11&gt;                 FIX(&quot;Forecast&quot;,
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    12&gt;                 &quot;410&quot;,
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    13&gt;                 &quot;1110&quot;)
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    14&gt;                    
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    15&gt;                     DATACOPY &quot;Working&quot; TO &quot;Final&quot;;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    16&gt;                    
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    17&gt;                 ENDFIX
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    18&gt;                     
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    19&gt; 
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    20&gt;                 FIX(&quot;Forecast&quot;,
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    21&gt;                 &quot;410&quot;,
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    22&gt;                 &quot;1150&quot;)
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    23&gt;                    
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    24&gt;                     DATACOPY &quot;Working&quot; TO &quot;Final&quot;;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    25&gt;                    
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    26&gt;                 ENDFIX
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    27&gt;                     
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    28&gt; 
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    29&gt;         ENDFIX'
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    30&gt;         
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    31&gt;     on Vision.Plan1;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012553 - Copying data from &#x5B;Working] to &#x5B;Final] with fixed members &#x5B;Account(1110); Period(BegBalance, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, YTD, QTD, ITD, No Period, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Rolling); Year(].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012675 - Commit Blocks Interval for the calculation is &#x5B;3000].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012675 - Commit Blocks Interval for the calculation is &#x5B;3000].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012574 - Datacopy command copied &#x5B;24] source data blocks to &#x5B;24] target data blocks.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012553 - Copying data from &#x5B;Working] to &#x5B;Final] with fixed members &#x5B;Account(1150); Period(BegBalance, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, YTD, QTD, ITD, No Period, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec, Rolling); Year(].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012675 - Commit Blocks Interval for the calculation is &#x5B;3000].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012675 - Commit Blocks Interval for the calculation is &#x5B;3000].
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012574 - Datacopy command copied &#x5B;24] source data blocks to &#x5B;24] target data blocks.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1012550 - Total Calc Elapsed Time : &#x5B;0.098] seconds.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]   OK/INFO - 1013274 - Calculation executed.
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  MAXL&gt; logout;
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]        User admin is logged out
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]    MaxL Shell completed
&#x5B;2018-02-20 17:52:19] &#x5B;FINE]  


</pre>
<p>The post <a href="https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html">Execute a Calculation script based on Planning unit status &#8211; Groovy on-premises Snippets Part III</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/execute-calculation-script-based-planning-unit-status-groovy-premises-snippets-part-iii.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">117</post-id>	</item>
		<item>
		<title>Notepad++ Plugins</title>
		<link>https://orahyplabs.com/2018/02/notepad-plugins.html</link>
					<comments>https://orahyplabs.com/2018/02/notepad-plugins.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Tue, 20 Feb 2018 15:30:32 +0000</pubDate>
				<category><![CDATA[Notepad]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Productivity]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/2018/02/notepad-plugins.html</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4424" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/plugin-mgr" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1340%2C473&amp;ssl=1" data-orig-size="1340,473" 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="plugin mgr" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=300%2C106&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1024%2C361&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4424" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/plugin-mgr" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1340%2C473&amp;ssl=1" data-orig-size="1340,473" 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="plugin mgr" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=300%2C106&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1024%2C361&amp;ssl=1" />I&#8217;m a big advocate of Notepad &#x1f4dd; ++. It&#8217;s free, and it got a great community of developers who offer great plugins that can enhance your productivity. I did inform Tim German (2 years ago, I did start and what you now see is a resurfaced draft ;)) that I&#8217;ll write a post on the [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/notepad-plugins.html">Notepad++ Plugins</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4424" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/plugin-mgr" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1340%2C473&amp;ssl=1" data-orig-size="1340,473" 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="plugin mgr" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=300%2C106&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1024%2C361&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4424" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/plugin-mgr" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1340%2C473&amp;ssl=1" data-orig-size="1340,473" 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="plugin mgr" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=300%2C106&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1024%2C361&amp;ssl=1" /><p>I&#8217;m a big advocate of Notepad <span style="font-family: Segoe UI Emoji;"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4dd.png" alt="📝" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ++. It&#8217;s free, and it got a great community of developers who offer great plugins that can enhance your productivity. I did inform Tim German (2 years ago, I did start and what you now see is a resurfaced draft ;)) that I&#8217;ll write a post on the plugins that I use and offer some tips. I feel now is the time o_O. Before I jump into the plugins, let&#8217;s look at some shortcuts.</span></p>
<p>Here are two links that you can explore if you are all about shortcuts.</p>
<p><a href="http://techtalk.virendrachandak.com/notepad-keyboard-shortcuts/" target="_blank" rel="noopener">http://techtalk.virendrachandak.com/notepad-keyboard-shortcuts/</a></p>
<p><a href="http://www.keyxl.com/aaacd5a/43/Notepad-Plus-text-editor-software-keyboard-shortcuts.htm" target="_blank" rel="noopener">http://www.keyxl.com/aaacd5a/43/Notepad-Plus-text-editor-software-keyboard-shortcuts.htm</a></p>
<p><strong>Moving lines in Notepad++<br />
</strong></p>
<p>Let&#8217;s say for example you want to move lines, cut and paste works all the time. However, this is an excellent shortcut to know.</p>
<p>Keep the cursor on the line you want to move, <strong>Use Ctrl+Shift keys</strong> and <strong>Up/Down</strong> keys to move the line.</p>
<p>This works for multiple lines too, and the difference is you got to select those lines.</p>
<p><iframe loading="lazy" class="youtube-player" width="1170" height="659" src="https://www.youtube.com/embed/8nWy3T4VHUg?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<p><strong>Duplicating and Cut lines<br />
</strong></p>
<p>Of course, Ctrl+X works. However, you&#8217;ve to select the line and then cut it, here is a shortcut for you – Ctrl + L, cuts the line that you are on.</p>
<p>To duplicate a line, Ctrl + D</p>
<p><strong>Preferences<br />
</strong></p>
<p>You can set preferences, and I would recommend setting at least one and that would be the backup.</p>
<p>Settings-&gt;Preferences-&gt;Backup.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4410" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/pref" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?fit=1683%2C741&amp;ssl=1" data-orig-size="1683,741" 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="pref" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?fit=300%2C132&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?fit=1024%2C451&amp;ssl=1" class="alignnone size-large wp-image-4410" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref-1024x451.png?resize=1024%2C451" alt="" width="1024" height="451" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?resize=1024%2C451&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?resize=300%2C132&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?resize=768%2C338&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pref.png?w=1683&amp;ssl=1 1683w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>I&#8217;ve gone back and looked up one-month-old documents that I forgot to save!!!!</p>
<p>You can run a search from Notepad ++ and even set up your search engine.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4415" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/search-engine" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?fit=1687%2C745&amp;ssl=1" data-orig-size="1687,745" 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="search engine" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?fit=300%2C132&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?fit=1024%2C452&amp;ssl=1" class="alignnone wp-image-4415 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine-1024x452.png?resize=1024%2C452" alt="" width="1024" height="452" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?resize=1024%2C452&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?resize=300%2C132&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?resize=768%2C339&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/search-engine.png?w=1687&amp;ssl=1 1687w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><br />
If you want to use Essbase techref, you can do that too.</p>
<p><b>TechRef</b><br />
<em><strong>For any words</strong></em><br />
https://docs.oracle.com/cd/E40248_01/epm.1112/essbase_tech_ref/search/srchrslt.htm?searchField=$(CURRENT_WORD)&#038;srcriteria=any</p>
<p><em><strong>Exact Phrase</strong></em><br />
https://docs.oracle.com/cd/E40248_01/epm.1112/essbase_tech_ref/search/srchrslt.htm?searchField=$(CURRENT_WORD)&#038;srcriteria=phrase</p>
<p><em><strong>All Words</strong></em><br />
https://docs.oracle.com/cd/E40248_01/epm.1112/essbase_tech_ref/search/srchrslt.htm?searchField=$(CURRENT_WORD)&#038;srcriteria=all</p>
<p>If you would like to use the latest documentation, then it is as follows</p>
<p>https://docs.oracle.com/apps/search/search.jsp?q=&#8221;$(CURRENT_WORD)&#8221;&amp;category=applications&amp;product=e57185-01</p>
<p><iframe loading="lazy" class="youtube-player" width="1170" height="659" src="https://www.youtube.com/embed/pLfbwynh_8o?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<p><strong>Open Menu</strong></p>
<p>I&#8217;ve seen a handful of people navigating back to the same file directory and opening another file in same location using the right-click menu. You don&#8217;t have to do it. The default directory always follows the current document. What that means is if you have got a document open in NPP, which was on your Desktop, you can directly use Ctrl + O, or File-&gt;Open, it will take to &#8220;Desktop&#8221; (current document directory).</p>
<p><strong>Right Click menus<br />
</strong></p>
<p>You can get full file path, file name only, and a lot of other handy shortcuts from right click menu. Go ahead and right click on the file tab.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4414" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/right-click-on-file" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-on-file-e1519117078229.png?fit=650%2C798&amp;ssl=1" data-orig-size="650,798" 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="right click on file" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-on-file-e1519117078229.png?fit=244%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-on-file-e1519117078229.png?fit=650%2C798&amp;ssl=1" class="alignnone wp-image-4414" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-on-file.png?resize=664%2C815" alt="" width="664" height="815" /></p>
<p>My favorites</p>
<ol>
<li>Close all to left (and right)</li>
<li>Open containing folder in explorer</li>
<li>Full File path to clipboard</li>
<li>Move to new Instance (I like to take screenshots, without clutter )</li>
</ol>
<p>Now if I perform a right click on a line or a selection, I get this</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4413" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/right-click-line" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?fit=858%2C747&amp;ssl=1" data-orig-size="858,747" 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="right click line" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?fit=300%2C261&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?fit=858%2C747&amp;ssl=1" class="alignnone wp-image-4413" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line-300x261.png?resize=410%2C357" alt="" width="410" height="357" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?resize=300%2C261&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?resize=768%2C669&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/right-click-line.png?w=858&amp;ssl=1 858w" sizes="auto, (max-width: 410px) 100vw, 410px" /></p>
<p>Depending on the language selection, you can comment (Ctrl + K) and uncomment (Ctrl + Alt + K) the selection, search on the internet, change case, last but not the least use base encoding.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4403" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/encoding" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?fit=1154%2C1002&amp;ssl=1" data-orig-size="1154,1002" 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="encoding" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?fit=1024%2C889&amp;ssl=1" class="alignnone size-large wp-image-4403" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding-1024x889.png?resize=1024%2C889" alt="" width="1024" height="889" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?resize=1024%2C889&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?resize=768%2C667&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/encoding.png?w=1154&amp;ssl=1 1154w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Oh yeah, there is spell check (and I&#8217;m always Calvin or Kelvin )</p>
<p><strong>Some cool stuff that I regularly use<br />
</strong></p>
<p>Encoding, this one is hard to miss – there is a menu for it where you can change/encode to ANSI, UTF-8, UTF with markup, and lot more.</p>
<p><strong>Indent<br />
</strong></p>
<p>Tab away; you can select multiple lines and indent them, to reduce the indent – Shift + Tab</p>
<p><strong>Editing<br />
</strong></p>
<p>There is a ton of stuff hidden in that edit menu, the ones that I use most</p>
<p><strong>Case Conversion</strong></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4401" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/case-convert" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?fit=1180%2C794&amp;ssl=1" data-orig-size="1180,794" 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="case convert" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?fit=300%2C202&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?fit=1024%2C689&amp;ssl=1" class="alignnone size-large wp-image-4401" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert-1024x689.png?resize=1024%2C689" alt="" width="1024" height="689" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?resize=1024%2C689&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?resize=300%2C202&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?resize=768%2C517&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/case-convert.png?w=1180&amp;ssl=1 1180w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>EOL Conversion<br />
</strong></p>
<p>When I&#8217;m working on a windows machine writing a shell script (Don&#8217;t ask why ), this one is my savior</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4404" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/eol" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/eol-e1519117260459.png?fit=600%2C486&amp;ssl=1" data-orig-size="600,486" 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="eol" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/eol-e1519117260459.png?fit=300%2C243&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/eol-e1519117260459.png?fit=600%2C486&amp;ssl=1" class="alignnone size-full wp-image-4404" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/eol-e1519117260459.png?resize=600%2C486" alt="" width="600" height="486" /></p>
<p><strong>Remove Trailing space<br />
</strong></p>
<p>What would I do without this, especially when you set variables, and you got spaces, oh boy you are in trouble.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4400" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/blank-ops" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?fit=1140%2C988&amp;ssl=1" data-orig-size="1140,988" 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="blank ops" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?fit=1024%2C887&amp;ssl=1" class="alignnone size-large wp-image-4400" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops-1024x887.png?resize=1024%2C887" alt="" width="1024" height="887" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?resize=1024%2C887&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?resize=768%2C666&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/blank-ops.png?w=1140&amp;ssl=1 1140w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>I used to use Tab to Space, when I code in NPP and move that to Calc Manager (in earlier versions, now I code directly in Calc Mgr ). I don&#8217;t usually trim leading spaces because of the indent – hey there is an easy way to do that too, just saying</p>
<p><strong>Sorting and removing empty lines<br />
</strong></p>
<p>I&#8217;ve used remove empty lines a lot, sorting not that much.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4418" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/sorting" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?fit=1515%2C1184&amp;ssl=1" data-orig-size="1515,1184" 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="sorting" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?fit=300%2C234&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?fit=1024%2C800&amp;ssl=1" class="alignnone size-large wp-image-4418" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting-1024x800.png?resize=1024%2C800" alt="" width="1024" height="800" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?resize=1024%2C800&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?resize=300%2C234&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?resize=768%2C600&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sorting.png?w=1515&amp;ssl=1 1515w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Column selection and keep unique<br />
</strong></p>
<p>Yup, you can make column selection by pressing &#8220;Alt&#8221; while selecting, TextFX is a plugin with tons of options for editing text and keep unique is my favorite.</p>
<p>Navigate to TextFX-&gt;TextFX Tools and check &#8220;Sort output unique&#8221;</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4421" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/unique" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/unique-e1519117352811.png?fit=650%2C595&amp;ssl=1" data-orig-size="650,595" 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="unique" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/unique-e1519117352811.png?fit=300%2C275&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/unique-e1519117352811.png?fit=650%2C595&amp;ssl=1" class="alignnone size-full wp-image-4421" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/unique-e1519117352811.png?resize=650%2C595" alt="" width="650" height="595" /></p>
<p>Once done perform a sort, let&#8217;s look at a video.</p>
<p><iframe loading="lazy" class="youtube-player" width="1170" height="659" src="https://www.youtube.com/embed/LnVABx0i6wo?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe></p>
<p><strong>Plugins<br />
</strong></p>
<p>These are the plugins that I use, some of them are the default ones and the other you need to install.</p>
<p><span style="color: red; font-size: 12pt;"><strong><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4424" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/plugin-mgr" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1340%2C473&amp;ssl=1" data-orig-size="1340,473" 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="plugin mgr" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=300%2C106&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?fit=1024%2C361&amp;ssl=1" class="alignnone size-large wp-image-4424" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr-1024x361.png?resize=1024%2C361" alt="" width="1024" height="361" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=1024%2C361&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=300%2C106&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?resize=768%2C271&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/plugin-mgr.png?w=1340&amp;ssl=1 1340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><br />
</strong></span></p>
<p><strong>JSTool<br />
</strong></p>
<p>I&#8217;ve written briefly about JSTool when I published the blog post about <a href="http://orahyplabs.com/2016/09/generating-json-for-pbcs-rest-api.html" rel="noopener">exportdataslices</a>.</p>
<p>You can use this to format a JSON string, view the string in a tree view. <img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4433" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/jstools" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?fit=1861%2C881&amp;ssl=1" data-orig-size="1861,881" 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="jstools" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?fit=300%2C142&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?fit=1024%2C485&amp;ssl=1" class="alignnone size-large wp-image-4433" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools-1024x485.png?resize=1024%2C485" alt="" width="1024" height="485" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?resize=1024%2C485&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?resize=300%2C142&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?resize=768%2C364&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/jstools.png?w=1861&amp;ssl=1 1861w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4432" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/json-viewer" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?fit=2736%2C1764&amp;ssl=1" data-orig-size="2736,1764" 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="json viewer" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?fit=300%2C193&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?fit=1024%2C660&amp;ssl=1" class="alignnone size-large wp-image-4432" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer-1024x660.png?resize=1024%2C660" alt="" width="1024" height="660" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?resize=1024%2C660&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?resize=300%2C193&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?resize=768%2C495&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/json-viewer.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Compare<br />
</strong></p>
<p>Well, it is used for comparing two files.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4402" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/compare" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?fit=2736%2C1581&amp;ssl=1" data-orig-size="2736,1581" 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="compare" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?fit=300%2C173&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?fit=1024%2C592&amp;ssl=1" class="alignnone size-large wp-image-4402" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare-1024x592.png?resize=1024%2C592" alt="" width="1024" height="592" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?resize=1024%2C592&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?resize=768%2C444&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/compare.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>You can even perform a compare against the same file before last save. That is an excellent option if you are not clear what you were editing before saving. It has saved me a lot of hair and lot of undo operations. You can use the navigation bar for quick navigation, just saying.</p>
<p><strong>DSpellCheck<br />
</strong></p>
<p>Even in NPP, I like to spell check 😉 and this is what the above plugin does, you can turn it on (that is the default)</p>
<p><strong>MIMETools<br />
</strong></p>
<p>You saw base encoding and decoding earlier, and yes that comes from MIMETools. You can use this to perform URL encoding (yes you don&#8217;t have to look them up on internet again)</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4407" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/mimetools" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mimetools-e1519117573311.png?fit=600%2C469&amp;ssl=1" data-orig-size="600,469" 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="mimetools" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mimetools-e1519117573311.png?fit=300%2C235&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mimetools-e1519117573311.png?fit=600%2C469&amp;ssl=1" class="alignnone size-full wp-image-4407" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mimetools-e1519117573311.png?resize=600%2C469" alt="" width="600" height="469" /></p>
<p><strong>XML Tools and Treeview<br />
</strong></p>
<p>I talked about XML tools when I wrote about <a href="http://orahyplabs.com/2016/08/style-lcm-artifact-listing-or-make-it-readable.html" rel="noopener">LCM and pretty printing LCM</a>. Once enabled it will automatically validate your XML file. In the earlier post I used the XSL Transformation feature to pretty print LCM.</p>
<p>Take a look at the listing.xml file from an LCM backup.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4406" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/listing-xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?fit=2736%2C757&amp;ssl=1" data-orig-size="2736,757" 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="listing xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?fit=300%2C83&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?fit=1024%2C283&amp;ssl=1" class="alignnone size-large wp-image-4406" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml-1024x283.png?resize=1024%2C283" alt="" width="1024" height="283" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?resize=1024%2C283&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?resize=300%2C83&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?resize=768%2C212&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/listing-xml.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Two lines!!! Let&#8217;s do the magic.</p>
<p>XML Tools -&gt; Pretty print with line breaks</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4412" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/pretty-print-menu" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?fit=1131%2C1478&amp;ssl=1" data-orig-size="1131,1478" 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="pretty print menu" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?fit=230%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?fit=784%2C1024&amp;ssl=1" class="alignnone size-large wp-image-4412" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu-784x1024.png?resize=784%2C1024" alt="" width="784" height="1024" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?resize=784%2C1024&amp;ssl=1 784w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?resize=230%2C300&amp;ssl=1 230w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?resize=768%2C1004&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-menu.png?w=1131&amp;ssl=1 1131w" sizes="auto, (max-width: 784px) 100vw, 784px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4411" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/pretty-print-listing" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?fit=2736%2C1545&amp;ssl=1" data-orig-size="2736,1545" 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="pretty print listing" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?fit=300%2C169&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?fit=1024%2C578&amp;ssl=1" class="alignnone size-large wp-image-4411" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing-1024x578.png?resize=1024%2C578" alt="" width="1024" height="578" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?resize=1024%2C578&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?resize=300%2C169&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?resize=768%2C434&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/pretty-print-listing.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Now that&#8217;s a readable XML.</p>
<p>If you want to see a tree view of the XML, you can use the XML Treeview plugin.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4422" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/xml-treeview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?fit=2736%2C1269&amp;ssl=1" data-orig-size="2736,1269" 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="XML Treeview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?fit=300%2C139&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?fit=1024%2C475&amp;ssl=1" class="alignnone size-large wp-image-4422" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview-1024x475.png?resize=1024%2C475" alt="" width="1024" height="475" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?resize=1024%2C475&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?resize=300%2C139&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?resize=768%2C356&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/XML-Treeview.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Execute from Notepad++<br />
</strong></p>
<p>I&#8217;ve talked about this feature/plugin when I wrote about <a href="http://orahyplabs.com/2011/06/launch-maxl-from-notepad.html" rel="noopener">launching MaxL&#8217;s from Notepad++</a>. You can pretty much launch any program from here.</p>
<p>Here is me launching Groovy code from NPP.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4409" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/nppexec" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?fit=1027%2C1014&amp;ssl=1" data-orig-size="1027,1014" 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="nppexec" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?fit=300%2C296&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?fit=1024%2C1011&amp;ssl=1" class="alignnone size-large wp-image-4409" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec-1024x1011.png?resize=1024%2C1011" alt="" width="1024" height="1011" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?resize=1024%2C1011&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?resize=300%2C296&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?resize=768%2C758&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/nppexec.png?w=1027&amp;ssl=1 1027w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4405" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/groovy-exec" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?fit=942%2C461&amp;ssl=1" data-orig-size="942,461" 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="groovy exec" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?fit=300%2C147&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?fit=942%2C461&amp;ssl=1" class="alignnone size-full wp-image-4405" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?resize=942%2C461" alt="" width="942" height="461" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?w=942&amp;ssl=1 942w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?resize=300%2C147&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-exec.png?resize=768%2C376&amp;ssl=1 768w" sizes="auto, (max-width: 942px) 100vw, 942px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4408" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/npp-exec-console" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?fit=2731%2C222&amp;ssl=1" data-orig-size="2731,222" 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="npp exec console" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?fit=300%2C24&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?fit=1024%2C83&amp;ssl=1" class="alignnone size-large wp-image-4408" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console-1024x83.png?resize=1024%2C83" alt="" width="1024" height="83" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?resize=1024%2C83&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?resize=300%2C24&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?resize=768%2C62&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/npp-exec-console.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>SQL on CSV files<br />
</strong></p>
<p>Here is a neat one where you can run SQL on delimited files.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4419" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/sql-from-csv" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?fit=624%2C260&amp;ssl=1" data-orig-size="624,260" 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="sql from csv" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?fit=300%2C125&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?fit=624%2C260&amp;ssl=1" class="alignnone size-full wp-image-4419" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?resize=624%2C260" alt="" width="624" height="260" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?w=624&amp;ssl=1 624w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-from-csv.png?resize=300%2C125&amp;ssl=1 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p>Here is the result!!!</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4420" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/sql-results" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?fit=2187%2C342&amp;ssl=1" data-orig-size="2187,342" 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="sql results" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?fit=300%2C47&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?fit=1024%2C160&amp;ssl=1" class="alignnone size-large wp-image-4420" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results-1024x160.png?resize=1024%2C160" alt="" width="1024" height="160" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?resize=1024%2C160&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?resize=300%2C47&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/sql-results.png?resize=768%2C120&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>SnippetPlus<br />
</strong></p>
<p>I&#8217;ve talked about this one when I wrote the post on <a href="http://orahyplabs.com/2011/06/essbase-comes-to-notepad.html" rel="noopener">EAS Console in Notepad ++</a>.</p>
<p>I hope I can update this one with the latest commands. You can dock Snippet Plus and use the available commands.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4417" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/snippetplus" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-e1519117797140.png?fit=650%2C490&amp;ssl=1" data-orig-size="650,490" 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="snippetplus" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-e1519117797140.png?fit=300%2C226&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-e1519117797140.png?fit=650%2C490&amp;ssl=1" class="alignnone size-full wp-image-4417" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-e1519117797140.png?resize=650%2C490" alt="" width="650" height="490" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4416" data-permalink="https://orahyplabs.com/2018/02/notepad-plugins.html/snippetplus-dock" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?fit=1128%2C1723&amp;ssl=1" data-orig-size="1128,1723" 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="snippetplus dock" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?fit=196%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?fit=670%2C1024&amp;ssl=1" class="alignnone size-large wp-image-4416" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock-670x1024.png?resize=670%2C1024" alt="" width="670" height="1024" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?resize=670%2C1024&amp;ssl=1 670w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?resize=196%2C300&amp;ssl=1 196w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?resize=768%2C1173&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/snippetplus-dock.png?w=1128&amp;ssl=1 1128w" sizes="auto, (max-width: 670px) 100vw, 670px" /></p>
<p>Sometimes these come handy. Hope it helps.</p>
<p>The post <a href="https://orahyplabs.com/2018/02/notepad-plugins.html">Notepad++ Plugins</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/notepad-plugins.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">20</post-id>	</item>
		<item>
		<title>Essbase outline from XML!! &#8211; Part II</title>
		<link>https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html</link>
					<comments>https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html#respond</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Wed, 14 Feb 2018 16:12:05 +0000</pubDate>
				<category><![CDATA[11.1.2.4]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Essbase]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[XML]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4151</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4317" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=2736%2C1262&amp;ssl=1" data-orig-size="2736,1262" 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="xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=300%2C138&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=1024%2C472&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4317" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=2736%2C1262&amp;ssl=1" data-orig-size="2736,1262" 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="xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=300%2C138&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=1024%2C472&amp;ssl=1" />If you didn&#8217;t read Part I of editing Essbase outline using XML, you are missing out on how this XML can be read. Now that we know how to read the XML, let&#8217;s start creating the XML file and update our outlines. I&#8217;m a lazy person, and I guess you all know that by now. [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html">Essbase outline from XML!! &#8211; Part II</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4317" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=2736%2C1262&amp;ssl=1" data-orig-size="2736,1262" 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="xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=300%2C138&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=1024%2C472&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4317" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=2736%2C1262&amp;ssl=1" data-orig-size="2736,1262" 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="xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=300%2C138&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=1024%2C472&amp;ssl=1" /><p>If you didn&#8217;t read <a href="http://orahyplabs.com/2018/02/essbase-outline-xml-part.html">Part I of editing Essbase outline using XML</a>, you are missing out on how this XML can be read.</p>
<p>Now that we know how to read the XML, let&#8217;s start creating the XML file and update our outlines. I&#8217;m a lazy person, and I guess you all know that by now. I&#8217;m going to use Groovy to generate the XML file from a flat file. If you are just interested in the code, then you can get the code from the end of the blog post and be done. I know you want to follow along <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f62c.png" alt="😬" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Since we are dealing with a file with delimiters why don&#8217;t we get an excellent file reader for that?</p>
<pre class="brush: groovy; title: ; notranslate">

@Grab('com.opencsv:opencsv:4.1')

</pre>
<p>The above command will resolve all dependencies and get opencsvreader. Next part is easy we need to import opencsv as it is not natively available in Groovy. Let&#8217;s also import groovy XML while we are at it.</p>
<pre class="brush: groovy; title: ; notranslate">

import com.opencsv.CSVReader
import groovy.xml.*

otlfile = new FileReader(&amp;quot;D:/OneDrive-Business/OneDrive - Intekgrate/GroovyScripts/testuda.txt&amp;quot;)
outlineXML = new File(&amp;quot;C:/Users/ckatt/Documents/testessbaseXML.xml&amp;quot;)

</pre>
<p>Use a file reader to read the member file and a location for the XML file.</p>
<pre class="brush: groovy; title: ; notranslate">

char delimiter ='|'
CSVReader reader = new CSVReader(otlfile,delimiter)
// read header to check columns
header=reader.readNext()
def now = new Date()
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Start XML creation&amp;quot;

</pre>
<p>You can specify a delimiter of your choice, by default as the name implies CSVReader take comma as the delimiter. I&#8217;m going to read the first line to check for the columns (line 4). Now we need to read the header information. I&#8217;m going to make it flexible enough that the columns don&#8217;t need to follow an order. Here is a sample of CSV file that I&#8217;m using in this example.</p>
<pre><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4318" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/csv" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?fit=1673%2C360&amp;ssl=1" data-orig-size="1673,360" 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="csv" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?fit=300%2C65&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?fit=1024%2C220&amp;ssl=1" class="alignnone size-large wp-image-4318" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv-1024x220.png?resize=1024%2C220" alt="" width="1024" height="220" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?resize=1024%2C220&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?resize=300%2C65&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?resize=768%2C165&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?resize=1170%2C250&amp;ssl=1 1170w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/csv.png?w=1673&amp;ssl=1 1673w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></pre>
<p>Here is another format.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4335" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/new-csv" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?fit=2231%2C288&amp;ssl=1" data-orig-size="2231,288" 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="new csv" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?fit=300%2C39&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?fit=1024%2C132&amp;ssl=1" class="alignnone size-large wp-image-4335" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv-1024x132.png?resize=1024%2C132" alt="" width="1024" height="132" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?resize=1024%2C132&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?resize=300%2C39&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-csv.png?resize=768%2C99&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><br />
All headers except Alias must remain the same, or you&#8217;ll have to update that in the following code.</p>
<p>To add multiple UDAs, you can use comma separated list. To add multiple attribute association, you must specify the values as comma seperated list in the following format</p>
<p>Attribute Member:Attribute Dimension.</p>
<pre class="brush: groovy; title: ; notranslate">

// find the column positions
storagecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;storage&amp;quot;)}
consolcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;aggregation&amp;quot;)}
opcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;operation&amp;quot;)}
mbrcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;member&amp;quot;)}
prntcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;parent&amp;quot;)}
siblcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;prevsibling&amp;quot;)}
newnamecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;newname&amp;quot;)}
udacol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;uda&amp;quot;)}
attrcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;attribute&amp;quot;)}
udareplacecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;replaceuda&amp;quot;)}

aliascols=header.findIndexValues{it =~ /^Alias.*/}

</pre>
<p>What we are doing here is trying to find the column indexes that can be used to generate XML. For the alias, we are going to find all the columns that start with &#8220;Alias&#8221;.<br />
Now that we&#8217;ve column indexes, let&#8217;s create the XML file. I&#8217;m using <a href="http://groovy-lang.org/processing-xml.html" rel="noopener">StreamingMarkupBuilder</a> to create XML.</p>
<p>Below given is just a portion of StreamingMarkupBuilder</p>
<pre class="brush: groovy; title: ; notranslate">

otlxml = new groovy.xml.StreamingMarkupBuilder().bind {
mkp.xmlDeclaration()
    
        mkp.comment &amp;quot;You need to keep track of otlversion or you can always reset it to 0 using -1 as a value for otlVersion&amp;quot;
        
        otlEditMain (&amp;quot;xmlns:xsi&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;, xmlns: &amp;quot;mbredit&amp;quot;,&amp;quot;xmlns:xs&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;, otlVersion: &amp;quot;0&amp;quot;) {
         
            mkp.comment &amp;quot;You can ignore otlUpdate section if you are not adding AliasTable or changing DTS or other properties&amp;quot;  
         
            otlUpdate(caseSensitive:&amp;quot;true&amp;quot;,enableMemberType:&amp;quot;false&amp;quot;){
                 
                impliedShareSetting(&amp;quot;default&amp;quot;)
                 
                mkp.comment &amp;quot;Add new alias table name, if you are adding one&amp;quot;
                 
                aliasTable(&amp;quot;LongName&amp;quot;)
                 
                mkp.comment &amp;quot;Use for changing dynamic time series&amp;quot;
                 
                dtsMbr(mbrName:&amp;quot;Q-T-D&amp;quot;,number:&amp;quot;2&amp;quot;,enable:&amp;quot;true&amp;quot;)
            }
             
}
</pre>
<p>mkp.xmlDeclaration() will add this nice line to the generated XML file.</p>
<pre class="brush: xml; title: ; notranslate">
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;amp;gt;
</pre>
<p>To add comments, you just write the comment inside mkp.comment(&#8220;your comment&#8221;).</p>
<p>To add child elements inside a parent, you enclose the child elements inside a closure. Elements attributes are defined like maps.</p>
<p>The above code will produce a file like the one given below.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4342" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml-declaration" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?fit=2411%2C348&amp;ssl=1" data-orig-size="2411,348" 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="xml declaration" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?fit=300%2C43&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?fit=1024%2C148&amp;ssl=1" class="alignnone size-large wp-image-4342" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration-1024x148.png?resize=1024%2C148" alt="" width="1024" height="148" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?resize=1024%2C148&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?resize=300%2C43&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?resize=768%2C111&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-declaration.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Now that we have the information for otlUpdate let&#8217;s start reading rest of the file contents.</p>
<pre class="brush: groovy; title: ; notranslate">
reader.each{list -&amp;gt;
	if(storagecol !=-1){
		storageval=list&#x5B;storagecol]
	}
	if(siblcol !=-1){
		prvsibling=list&#x5B;siblcol]
	} else {
		prvsibling=&amp;quot;&amp;quot;
	}
	if(attrcol != -1){
		attrvals=list&#x5B;attrcol]
	}
	if(udacol != -1){
		udavals=list&#x5B;udacol]
	}
	if(consolcol != -1){
		consolval=list&#x5B;consolcol]
	}
	
	if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;update&amp;quot;)){
		mbrUpdate(thisMbr:list&#x5B;mbrcol]){
			mbrInfo(''){
			   if(aliascols){
				 aliascols.each{ tblindx -&amp;gt;
				   aliasindx=tblindx.intValue() ?: null
				   aliasval=list&#x5B;aliasindx]
				   if(aliasval){
					alias(aliasTable:header&#x5B;aliasindx].split(':')&#x5B;1].trim(), alias:aliasval)
				   }
				 }
			   }
			   if(storageval!='shared'){
				   if(udavals){
					udareplace=list&#x5B;udareplacecol]
					udavals.split(',').each{udaname-&amp;gt;
							if(udareplace){
								udas(replace:udareplace, name:udaname)
							} else {
								udas(name:udaname)
							}    
						}
					}                               
			   }
			  if(storageval){
				dataStorage(storageval)
			  }
			  if(consolval){
				consolidation(consolval)
			  }
			}
		}
		if(storageval!='shared'){                    
			if(attrvals){
				attrvals.split(',').each{attr-&amp;gt;
					dimattr=attr.split(':')
					mbrAssoc(thisMbr:list&#x5B;mbrcol],attrDim:dimattr&#x5B;1],attrMbr:dimattr&#x5B;0]){
					}
				}    
			} 
		}    
	}
}	
</pre>
<p>reader.each will read the file line by line (see it is that easy)<br />
We are checking whether the operation column is Update if it is then create the tags for mbrUpdate.<br />
Aliases we need to provide the table name and alias.<br />
Lines 2-16 makes sure that you got those columns, findIndexOf returns -1 if nothing is found.<br />
Line 21 checks whether the file got any Alias columns if present it loops through all alias indexes (line 22). Line 23 is called as an <a href="http://mrhaki.blogspot.com/2009/08/groovy-goodness-elvis-operator.html" rel="noopener">Elvis operator</a> in Groovy. Groovy lists store the numbers as Long and to get the output using the index from a list you need an integer.<br />
Line 26 splits the header (e.x. Alias:LongNames) at &#8216;:&#8217; and then we take the last value.</p>
<p>If you are not adding a shared member, you can assign UDAs (line 30), values from UDA column are split at &#8216;,&#8217; so if you have got a UDA which contains comma you&#8217;ll have to change that here (line 33).</p>
<p>Line 43 is where the dataStorage element is created and if you are on a duplicate name allowed outline you&#8217;ll have to change this to the following.</p>
<p>prototypeMbr(unique name of the member)</p>
<p>I would add another column in the CSV file called PrototypeMember and get the index of that column and use it as shown below</p>
<pre class="brush: groovy; title: ; notranslate">

prototypecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;prototypemember&amp;quot;)}

prototypeMbr(list&#x5B;prototypecol])

</pre>
<p>If not a shared member, attribute association tag creation starts at line 50, here attributes needs the attribute dimension too. Attribute name and Attribute dimension are separated using &#8220;:&#8221;, multiple associations are separated using &#8220;,&#8221;s.</p>
<p>You&#8217;ll see two splits, one to separate the attributes (line 52) and second to separate the attribute dimensions and attribute members (line 53).</p>
<p>Rest of the code follows the similar logic of looking at the operation and add appropriate tags.</p>
<p><span style="color: #ff0000;"><b>Keep in mind that rename using this method will not retain data!!</b></span></p>
<p>Here is the entire code.</p>
<pre class="brush: groovy; title: ; notranslate">
@Grab('com.opencsv:opencsv:4.1')

import com.opencsv.CSVReader
import groovy.xml.*

otlfile = new FileReader(&amp;quot;C:/Users/ckattookaran/Documents/testdense.txt&amp;quot;)
outlineXML = new File(&amp;quot;C:/Users/ckattookaran/Documents/testessbaseXML.xml&amp;quot;)

char delimiter ='|'
CSVReader reader = new CSVReader(otlfile,delimiter)
// read header to check columns
header=reader.readNext()
def now = new Date()
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Start XML creation&amp;quot;

// find the column positions
storagecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;storage&amp;quot;)}
consolcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;aggregation&amp;quot;)}
opcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;operation&amp;quot;)}
mbrcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;member&amp;quot;)}
prntcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;parent&amp;quot;)}
siblcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;prevsibling&amp;quot;)}
newnamecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;newname&amp;quot;)}
udacol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;uda&amp;quot;)}
attrcol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;attribute&amp;quot;)}
udareplacecol=header.findIndexOf{it.equalsIgnoreCase(&amp;quot;replaceuda&amp;quot;)}

aliascols=header.findIndexValues{it =~ /^Alias.*/}

storageval=&amp;quot;&amp;quot;
prvsibling=&amp;quot;&amp;quot;
attrvals=&amp;quot;&amp;quot;
udavals=&amp;quot;&amp;quot;
consolval=&amp;quot;&amp;quot;

otlxml = new groovy.xml.StreamingMarkupBuilder().bind {
mkp.xmlDeclaration()
    
        mkp.comment &amp;quot;You need to keep track of otlversion or you can always reset it to 0 using -1 as a value for otlVersion&amp;quot;
        
        otlEditMain (&amp;quot;xmlns:xsi&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;, xmlns: &amp;quot;mbredit&amp;quot;,&amp;quot;xmlns:xs&amp;quot;: &amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;, otlVersion: &amp;quot;0&amp;quot;) {
         
            mkp.comment &amp;quot;You can ignore otlUpdate section if you are not adding AliasTable or changing DTS or other properties&amp;quot;  
         
            otlUpdate(caseSensitive:&amp;quot;true&amp;quot;,enableMemberType:&amp;quot;false&amp;quot;){
                 
                impliedShareSetting(&amp;quot;default&amp;quot;)
                 
                mkp.comment &amp;quot;Add new alias table name, if you are adding one&amp;quot;
                 
                aliasTable(&amp;quot;LongName&amp;quot;)
                 
                mkp.comment &amp;quot;Use for changing dynamic time series&amp;quot;
                 
                dtsMbr(mbrName:&amp;quot;Q-T-D&amp;quot;,number:&amp;quot;2&amp;quot;,enable:&amp;quot;true&amp;quot;)
            }
             
            reader.each{list -&amp;gt;
                if(storagecol !=-1){
                    storageval=list&#x5B;storagecol]
                }
                if(siblcol !=-1){
                    prvsibling=list&#x5B;siblcol]
                }
                if(attrcol != -1){
                    attrvals=list&#x5B;attrcol]
                }
                if(udacol != -1){
                    udavals=list&#x5B;udacol]
                }
                if(consolcol != -1){
                    consolval=list&#x5B;consolcol]
                }
                
                if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;update&amp;quot;)){
                    mbrUpdate(thisMbr:list&#x5B;mbrcol]){
                        mbrInfo(''){
                           if(aliascols){
                             aliascols.each{ tblindx -&amp;gt;
                               aliasindx=tblindx.intValue() ?: null
                               aliasval=list&#x5B;aliasindx]
                               if(aliasval){
                                alias(aliasTable:header&#x5B;aliasindx].split(':')&#x5B;1].trim(), alias:aliasval)
                               }
                             }
                           }
                           if(storageval!='shared'){
                               if(udavals){
                                udareplace=list&#x5B;udareplacecol]
                                udavals.split(',').each{udaname-&amp;gt;
                                        if(udareplace){
                                            udas(replace:udareplace, name:udaname)
                                        } else {
                                            udas(name:udaname)
                                        }    
                                    }
                                }                               
                           }
                          if(storageval){
                            dataStorage(storageval)
                          }
                          if(consolval){
                            consolidation(consolval)
                          }
                        }
                    }
                    if(storageval!='shared'){                    
                        if(attrvals){
                            attrvals.split(',').each{attr-&amp;gt;
                                dimattr=attr.split(':')
                                mbrAssoc(thisMbr:list&#x5B;mbrcol],attrDim:dimattr&#x5B;1],attrMbr:dimattr&#x5B;0]){
                                }
                            }    
                        } 
                    }    
                } else if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;delete&amp;quot;)){ 
                    mbrDelete(thisMbr:list&#x5B;mbrcol])
                } else if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;add&amp;quot;)){ 
                    mbrAdd (mbrName:list&#x5B;mbrcol],parent:list&#x5B;prntcol],preSibling:prvsibling){
                        mbrInfo(''){
                           if(aliascols){
                             aliascols.each{ tblindx -&amp;gt;
                               aliasindx=tblindx.intValue() ?: null
                               aliasval=list&#x5B;aliasindx]
                               if(aliasval){
                                alias(aliasTable:header&#x5B;aliasindx].split(':')&#x5B;1].trim(), alias:aliasval)
                               }
                             }
                           }
                           
                           if(storageval!='shared'){
                               if(udavals){
                                udareplace=list&#x5B;udareplacecol]
                                udavals.split(',').each{udaname-&amp;gt;
                                        if(udareplace){
                                            udas(replace:udareplace, name:udaname)
                                        } else {
                                            udas(name:udaname)
                                        }    
                                    }
                                }                               
                           }
                          if(storageval){
                            dataStorage(storageval)
                          }
                          if(consolval){
                            consolidation(consolval)
                          }
                        }                        
                    }

                    if(storageval!='shared'){                    
                        if(attrvals){
                            attrvals.split(',').each{attr-&amp;gt;
                                dimattr=attr.split(':')
                                mbrAssoc(thisMbr:list&#x5B;mbrcol],attrDim:dimattr&#x5B;1],attrMbr:dimattr&#x5B;0]){
                                }
                            }    
                        } 
                    }    
                } else if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;move&amp;quot;)){ 
                    mbrMove (thisMbr:list&#x5B;mbrcol],parent:list&#x5B;prntcol],preSibling:prvsibling)                    
                } else if(list&#x5B;opcol].equalsIgnoreCase(&amp;quot;rename&amp;quot;)){ 
                    mbrRename (thisMbr:list&#x5B;mbrcol],mbrName:list&#x5B;newnamecol])                      
                }
            }   
        }
    }

outlineXML.withWriter(&amp;quot;UTF-8&amp;quot;) { writer -&amp;gt;
   writer.write( XmlUtil.serialize(otlxml))
}
now = new Date()
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Essbase outline edit XML created&amp;quot;
</pre>
<p>Line 170 is where this is written to a file. Line 171, XmlUtil.serialize, is doing the pretty print of XML.</p>
<p>Yes, I agree it is long. However I fell in love with the builder, it is effortless to add tag and elements.</p>
<p>After running the above code, the following XML file is generated.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4336" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/groovy-cmd" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?fit=1840%2C484&amp;ssl=1" data-orig-size="1840,484" 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="groovy cmd" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?fit=300%2C79&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?fit=1024%2C269&amp;ssl=1" class="alignnone size-large wp-image-4336" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd-1024x269.png?resize=1024%2C269" alt="" width="1024" height="269" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?resize=1024%2C269&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?resize=300%2C79&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?resize=768%2C202&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-cmd.png?w=1840&amp;ssl=1 1840w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4317" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=2736%2C1262&amp;ssl=1" data-orig-size="2736,1262" 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="xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=300%2C138&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?fit=1024%2C472&amp;ssl=1" class="alignnone size-large wp-image-4317" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml-1024x472.png?resize=1024%2C472" alt="" width="1024" height="472" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=1024%2C472&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=300%2C138&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?resize=768%2C354&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/xml.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Now to import this XML file, you&#8217;ll have to use either C API or JAVA API.</p>
<p>I chose to use Groovy 😉</p>
<p>Before running the code in groovy, you need to add the following jar files to your Groovy lib location.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4337" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/groovy-lib" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?fit=1722%2C415&amp;ssl=1" data-orig-size="1722,415" 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="groovy lib" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?fit=300%2C72&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?fit=1024%2C247&amp;ssl=1" class="alignnone size-large wp-image-4337" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib-1024x247.png?resize=1024%2C247" alt="" width="1024" height="247" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?resize=1024%2C247&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?resize=300%2C72&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?resize=768%2C185&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/groovy-lib.png?w=1722&amp;ssl=1 1722w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<pre class="brush: groovy; title: ; notranslate"> 
import com.essbase.api.session.IEssbase
import oracle.core.ojdl.logging.ODLLogger
import java.util.logging.Level

def keyConfig = new ConfigSlurper().parse(new File('C:/Users/ckattookaran/Documents/usercred.txt').toURL())

appname=keyConfig.essbaseEnv.prod.esbApp
dbname=keyConfig.essbaseEnv.prod.esbDB
svrname=keyConfig.essbaseEnv.prod.esbServer
user=keyConfig.essbaseEnv.prod.esbUser
password=keyConfig.essbaseEnv.prod.esbPass
provider=&amp;quot;Embedded&amp;quot;

logger = ODLLogger.getODLLogger(&amp;quot;oracle.EPMOHPS&amp;quot;)
logger.setLevel(Level.SEVERE)

ess = IEssbase.Home.create(IEssbase.JAPI_VERSION)
olapSvr = ess.signOn(user,password, false, null, provider, svrname)
now = new Date()
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} $user Connected to $svrname.&amp;quot;
cube = olapSvr.getApplication(appname).getCube(dbname)
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Start editing $appname.$dbname outline.&amp;quot;
cube.buildDimensionXml(&amp;quot;C:/Users/ckattookaran/Documents/testessbaseXML.xml&amp;quot;, &amp;quot;C:/Users/ckattookaran/Documents/XMLEdit.log&amp;quot;, true)
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Finished editing $appname.$dbname outline.&amp;quot;

olapSvr.clearActive()
olapSvr.disconnect()
ess.signOff()
now = new Date()
println &amp;quot;${now.format(&amp;quot;yyyy MM dd-HH:mm:ss.SSS&amp;quot;, TimeZone.getTimeZone('UTC'))} Closed connection and disconnected from $svrname.&amp;quot;
</pre>
<p>Oh if you have got a space in XML location or log location this will not work. You&#8217;ll get an error.<br />
<img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4306" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/error-space" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?fit=2736%2C1765&amp;ssl=1" data-orig-size="2736,1765" 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="error space" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?fit=1024%2C661&amp;ssl=1" class="alignnone size-large wp-image-4306" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space-1024x661.png?resize=1024%2C661" alt="" width="1024" height="661" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?resize=1024%2C661&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?resize=300%2C194&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?resize=768%2C495&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-space.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>If you are going to track the outlineVersion, then you either need to remember the version or reset it to zero using -1 as value or let the build fail!!! Oh yeah, there is no option as of now to retrieve the outline version using API and use that in the XML file.</p>
<p>Here is what a failed Dimension build log will look like.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4307" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/error-version" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?fit=2736%2C1768&amp;ssl=1" data-orig-size="2736,1768" 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="error version" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?fit=1024%2C662&amp;ssl=1" class="alignnone size-large wp-image-4307" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version-1024x662.png?resize=1024%2C662" alt="" width="1024" height="662" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?resize=1024%2C662&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?resize=300%2C194&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?resize=768%2C496&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/error-version.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>The log file will give you the version number!!!</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4316" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/version-in-log" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?fit=2182%2C324&amp;ssl=1" data-orig-size="2182,324" 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="version in log" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?fit=300%2C45&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?fit=1024%2C152&amp;ssl=1" class="alignnone size-large wp-image-4316" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log-1024x152.png?resize=1024%2C152" alt="" width="1024" height="152" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?resize=1024%2C152&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?resize=300%2C45&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/version-in-log.png?resize=768%2C114&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>I think there should be a method to query the version and use that in the XML file, rather than a trial and error method.</p>
<p>If successful you should see something similar in the log file.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4315" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/success-essbase" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?fit=2736%2C1482&amp;ssl=1" data-orig-size="2736,1482" 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="success essbase" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?fit=300%2C163&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?fit=1024%2C555&amp;ssl=1" class="alignnone size-large wp-image-4315" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase-1024x555.png?resize=1024%2C555" alt="" width="1024" height="555" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?resize=1024%2C555&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?resize=300%2C163&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?resize=768%2C416&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/success-essbase.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4310" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/log" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?fit=1142%2C358&amp;ssl=1" data-orig-size="1142,358" 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="log" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?fit=300%2C94&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?fit=1024%2C321&amp;ssl=1" class="alignnone size-large wp-image-4310" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log-1024x321.png?resize=1024%2C321" alt="" width="1024" height="321" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?resize=1024%2C321&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?resize=300%2C94&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?resize=768%2C241&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/log.png?w=1142&amp;ssl=1 1142w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Let&#8217;s look at the outline.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4311" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/new-aliastable" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?fit=609%2C381&amp;ssl=1" data-orig-size="609,381" 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="new aliastable" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?fit=300%2C188&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?fit=609%2C381&amp;ssl=1" class="alignnone size-full wp-image-4311" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?resize=609%2C381" alt="" width="609" height="381" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?w=609&amp;ssl=1 609w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/new-aliastable.png?resize=300%2C188&amp;ssl=1 300w" sizes="auto, (max-width: 609px) 100vw, 609px" /></p>
<p>New alias table is added, case sensitivity changed.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4312" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/otl-after" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?fit=1131%2C675&amp;ssl=1" data-orig-size="1131,675" 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="otl after" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?fit=300%2C179&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?fit=1024%2C611&amp;ssl=1" class="alignnone size-large wp-image-4312" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after-1024x611.png?resize=1024%2C611" alt="" width="1024" height="611" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?resize=1024%2C611&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?resize=300%2C179&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?resize=768%2C458&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-after.png?w=1131&amp;ssl=1 1131w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Q1 is deleted, Q2 moved and renamed, and IT expenses is added.</p>
<p>If I run the same Groovy using the file given below, it creates an XML as shown below.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4344" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/attr-csv" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?fit=1402%2C136&amp;ssl=1" data-orig-size="1402,136" 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="attr csv" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?fit=300%2C29&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?fit=1024%2C99&amp;ssl=1" class="alignnone size-large wp-image-4344" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv-1024x99.png?resize=1024%2C99" alt="" width="1024" height="99" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?resize=1024%2C99&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?resize=300%2C29&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?resize=768%2C74&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-csv.png?w=1402&amp;ssl=1 1402w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4346" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/attr-xml" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?fit=2486%2C1091&amp;ssl=1" data-orig-size="2486,1091" 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="attr xml" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?fit=300%2C132&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?fit=1024%2C449&amp;ssl=1" class="alignnone size-large wp-image-4346" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml-1024x449.png?resize=1024%2C449" alt="" width="1024" height="449" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?resize=1024%2C449&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?resize=300%2C132&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?resize=768%2C337&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-xml.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4345" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/attr-otl" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?fit=972%2C461&amp;ssl=1" data-orig-size="972,461" 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="attr otl" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?fit=300%2C142&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?fit=972%2C461&amp;ssl=1" class="alignnone size-full wp-image-4345" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?resize=972%2C461" alt="" width="972" height="461" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?w=972&amp;ssl=1 972w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?resize=300%2C142&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/attr-otl.png?resize=768%2C364&amp;ssl=1 768w" sizes="auto, (max-width: 972px) 100vw, 972px" /></p>
<p>There you go, now go ahead and kill those dimension build load rules 😉</p>
<p>The post <a href="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html">Essbase outline from XML!! &#8211; Part II</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4151</post-id>	</item>
		<item>
		<title>Essbase outline from XML!! &#8211; Part I</title>
		<link>https://orahyplabs.com/2018/02/essbase-outline-xml-part.html</link>
					<comments>https://orahyplabs.com/2018/02/essbase-outline-xml-part.html#respond</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Tue, 13 Feb 2018 15:00:22 +0000</pubDate>
				<category><![CDATA[11.1.2.4]]></category>
		<category><![CDATA[Essbase]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[XML]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4322</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4329" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-edit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1499%2C729&amp;ssl=1" data-orig-size="1499,729" 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="otl edit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=300%2C146&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1024%2C498&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4329" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-edit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1499%2C729&amp;ssl=1" data-orig-size="1499,729" 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="otl edit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=300%2C146&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1024%2C498&amp;ssl=1" />When I published the latest version of Essbase Member Operations utility, I received a comment from Kumar Ramaiyer. If you don&#8217;t know Kumar Ramaiyer is a Vice President at Oracle, who looks after Essbase development. Kumar&#8217;s comment was about using an XML to perform the same operations in EsbMemberOperation utility. I happen to remember a [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html">Essbase outline from XML!! &#8211; Part I</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4329" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-edit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1499%2C729&amp;ssl=1" data-orig-size="1499,729" 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="otl edit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=300%2C146&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1024%2C498&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4329" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-edit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1499%2C729&amp;ssl=1" data-orig-size="1499,729" 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="otl edit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=300%2C146&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1024%2C498&amp;ssl=1" /><p>When I published the latest version of Essbase Member Operations utility, I received a comment from Kumar Ramaiyer. If you don&#8217;t know <a href="https://www.linkedin.com/in/kumarramaiyer" rel="noopener">Kumar Ramaiyer</a> is a Vice President at Oracle, who looks after Essbase development. Kumar&#8217;s comment was about using an XML to perform the same operations in EsbMemberOperation utility.</p>
<p>I happen to remember a blog post from Harry Gates (I got short term memory <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" />) about XML editing is only available in API and replied to Kumar saying &#8220;It can be accessed through API only&#8221;. In mind, I was thinking what difference it is going to make if I do it using &#8220;A&#8221; or &#8220;B&#8221; if the way is the same. However, I still thought of exploring the option, and the result is this blog.</p>
<p>Now to get the details my google-fu was tested. Finally, I got hold of new release feature link where this was the first time (maybe the last time too) where it gets a mention.</p>
<p><a href="https://docs.oracle.com/cd/E57185_01/ESSNF/essbase_new_features.html" rel="noopener">XML Outline Editing</a></p>
<p>&lt;insert rant begin&gt;</p>
<p>If you think that there is an option called import outline using XML hiding in MaxL, you are so wrong. As I said earlier updating outline using an XML file is only available as an API method.</p>
<p>If you think that you can use the XML from export outline MaxL, you are wrong again. They are a lot different. Now I get that the XML for updating and exporting cannot be the same because update XML needs extra attributes and nodes. However, can&#8217;t they be somewhat similar?</p>
<p>Here is what you get using export outline MaxL.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4332" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-export" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?fit=1365%2C541&amp;ssl=1" data-orig-size="1365,541" 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="otl export" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?fit=300%2C119&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?fit=1024%2C406&amp;ssl=1" class="alignnone wp-image-4332 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export-1024x406.png?resize=1024%2C406" alt="" width="1024" height="406" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?resize=1024%2C406&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?resize=300%2C119&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?resize=768%2C304&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-export.png?w=1365&amp;ssl=1 1365w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Here is what an update outline XML looks like.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4329" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/otl-edit" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1499%2C729&amp;ssl=1" data-orig-size="1499,729" 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="otl edit" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=300%2C146&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?fit=1024%2C498&amp;ssl=1" class="alignnone size-large wp-image-4329" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit-1024x498.png?resize=1024%2C498" alt="" width="1024" height="498" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=1024%2C498&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=300%2C146&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?resize=768%2C373&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/otl-edit.png?w=1499&amp;ssl=1 1499w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Why can&#8217;t they follow a similar method, You could then easily use that to create an edit XML file by adding the edit actions!!!</p>
<p>If you think that there is documentation available on creating the XML file, you are somewhat wrong again. There is an example available <a href="https://docs.oracle.com/cd/E57185_01/ESBAR/essbuilddimxml.html" target="_blank" rel="noopener">here</a>, and there is an XSD file available in the bin folder for you to explore!!!</p>
<p>&lt;insert rant over&gt;</p>
<p>Now that we are done with my whining <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> let&#8217;s get to work. I&#8217;m not going to cover all the attributes (read properties) or creating a new dimension in this blog post. However, I plan to cover enough so that you can easily use that information to continue on your own.</p>
<p><strong> &#8220;Teach to fish&#8221;.</strong></p>
<p>Before we start creating the XML, we need to understand mbredit.xsd file. Here is what the XSD file looks like.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;xs:schema targetNamespace=&quot;mbredit&quot; elementFormDefault=&quot;qualified&quot; attributeFormDefault=&quot;unqualified&quot;
           xmlns:otl=&quot;mbredit&quot; xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;xs:simpleType name=&quot;datastorage_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;storeData&quot; /&gt;
      &lt;xs:enumeration value=&quot;dynamicStore&quot; /&gt;
      &lt;xs:enumeration value=&quot;dynamic&quot; /&gt;
      &lt;xs:enumeration value=&quot;neverShare&quot; /&gt;
      &lt;xs:enumeration value=&quot;labelOnly&quot; /&gt;
      &lt;!--&quot;shared&quot; only valid for unique name oultine to set it as a shared member, non-unique name outline ignored it refer to &quot;prototypeMbr&quot;--&gt;
      &lt;xs:enumeration value=&quot;shared&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;consolidation_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;+&quot; /&gt;
      &lt;xs:enumeration value=&quot;-&quot; /&gt;
      &lt;xs:enumeration value=&quot;/&quot; /&gt;
      &lt;xs:enumeration value=&quot;%&quot; /&gt;
      &lt;xs:enumeration value=&quot;*&quot; /&gt;
      &lt;xs:enumeration value=&quot;^&quot; /&gt;
      &lt;xs:enumeration value=&quot;~&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;currencyconversiontype_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;none&quot; /&gt;
      &lt;xs:enumeration value=&quot;category&quot; /&gt;
      &lt;xs:enumeration value=&quot;noConversion&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;hierarchytype_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;stored&quot; /&gt;
      &lt;xs:enumeration value=&quot;dynamic&quot; /&gt;
      &lt;xs:enumeration value=&quot;multiHierarchy&quot;/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:complexType name=&quot;currencyconversion_t&quot;&gt;
    &lt;xs:attribute name=&quot;conversionType&quot; type=&quot;otl:currencyconversiontype_t&quot; use=&quot;required&quot;/&gt;
    &lt;xs:attribute name=&quot;currencyMbrName&quot; type=&quot;xs:string&quot; use=&quot;optional&quot; /&gt;
  &lt;/xs:complexType&gt;
  
  &lt;xs:complexType name=&quot;mbrinfo_t&quot;&gt;
    &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
      &lt;xs:element name=&quot;category&quot; type=&quot;otl:category_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;attDataType&quot; type=&quot;otl:attrdatatype_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;dataStorage&quot; type=&quot;otl:datastorage_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;timeBalance&quot; type=&quot;otl:timebalance_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;skip&quot; type=&quot;otl:skip_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;consolidation&quot; type=&quot;otl:consolidation_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;currencyConversion&quot; type=&quot;otl:currencyconversion_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;hierarchyType&quot; type=&quot;otl:hierarchytype_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;!--prototypeMbr is used to set shared member for non-unique name outline, specifies the prototype member--&gt;
      &lt;xs:element name=&quot;prototypeMbr&quot; type=&quot;otl:mbrlocator_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;solveOrder&quot; type=&quot;xs:unsignedByte&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; /&gt;
      &lt;xs:element name=&quot;alias&quot; type=&quot;otl:alias_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;32&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;formula&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;udas&quot; type=&quot;otl:uda_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;mbrId&quot; type=&quot;otl:mbrlocator_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;aggLevelUsage&quot; type=&quot;otl:agglevelusage_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;type&quot; type=&quot;otl:mbrtype_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;commentEx&quot; type=&quot;xs:string&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;comment&quot; type=&quot;xs:string&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;formatStr&quot; type=&quot;xs:string&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;twoPassCalc&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;flow&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; /&gt;
    &lt;xs:attribute name=&quot;relDesc&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot;/&gt;
    &lt;xs:attribute name=&quot;expense&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot;/&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;alias_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;aliasTable&quot; type=&quot;xs:token&quot; use=&quot;optional&quot; default=&quot;default&quot; /&gt;
    &lt;xs:attribute name=&quot;alias&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot;/&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;uda_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;replace&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;
    &lt;xs:attribute name=&quot;name&quot; type=&quot;otl:mbrlocator_t&quot;  /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;mbrdelete_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;thisMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;mbradd_t&quot;&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name=&quot;mbrInfo&quot; type=&quot;otl:mbrinfo_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;mbrName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;parent&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;preSibling&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;optional&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;mbrmove_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;thisMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;parent&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;preSibling&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;optional&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;mbrrename_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;thisMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;mbrName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;mbrupdate_t&quot;&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name=&quot;mbrInfo&quot; type=&quot;otl:mbrinfo_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;thisMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;mbrassociate_t&quot;&gt;
    &lt;xs:attribute name=&quot;thisMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;attrDim&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;attrMbr&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:complexType name=&quot;dimassociate_t&quot;&gt;
    &lt;xs:attribute name=&quot;dimName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;attrDim&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:group name=&quot;edit_actions&quot;&gt;
    &lt;xs:choice&gt;
      &lt;xs:element name=&quot;otlUpdate&quot; type=&quot;otl:outline_t&quot;/&gt;
      &lt;xs:element name=&quot;mbrUpdate&quot; type=&quot;otl:mbrupdate_t&quot; /&gt;
      &lt;xs:element name=&quot;mbrAdd&quot; type=&quot;otl:mbradd_t&quot; /&gt;
      &lt;xs:element name=&quot;mbrDelete&quot; type=&quot;otl:mbrdelete_t&quot; /&gt;
      &lt;xs:element name=&quot;mbrRename&quot; type=&quot;otl:mbrrename_t&quot; /&gt;
      &lt;xs:element name=&quot;mbrMove&quot; type=&quot;otl:mbrmove_t&quot; /&gt;
      &lt;xs:element name=&quot;mbrAssoc&quot; type=&quot;otl:mbrassociate_t&quot; /&gt;
      &lt;xs:element name=&quot;dimAdd&quot; type=&quot;otl:dimadd_t&quot; /&gt;
      &lt;xs:element name=&quot;dimUpdate&quot; type=&quot;otl:dimupdate_t&quot; /&gt;
      &lt;xs:element name=&quot;dimAssoc&quot; type=&quot;otl:dimassociate_t&quot; /&gt;
      &lt;xs:element name=&quot;markForDelete&quot; type=&quot;otl:markForDelete_t&quot;/&gt;
      &lt;xs:element name=&quot;deleteMarked&quot; type=&quot;otl:deleteMarked_t&quot;/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;

  &lt;xs:simpleType name=&quot;timebalance_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;none&quot; /&gt;
      &lt;xs:enumeration value=&quot;first&quot; /&gt;
      &lt;xs:enumeration value=&quot;last&quot; /&gt;
      &lt;xs:enumeration value=&quot;avg&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;skip_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;none&quot; /&gt;
      &lt;xs:enumeration value=&quot;missing&quot; /&gt;
      &lt;xs:enumeration value=&quot;zero&quot; /&gt;
      &lt;xs:enumeration value=&quot;both&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;dimstorage_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;dense&quot; /&gt;
      &lt;xs:enumeration value=&quot;sparse&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;category_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;account&quot; /&gt;
      &lt;xs:enumeration value=&quot;attribute&quot; /&gt;
      &lt;xs:enumeration value=&quot;country&quot; /&gt;
      &lt;xs:enumeration value=&quot;curpartition&quot; /&gt;
      &lt;xs:enumeration value=&quot;none&quot; /&gt;
      &lt;xs:enumeration value=&quot;time&quot; /&gt;
      &lt;xs:enumeration value=&quot;currencytype&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;dimstorecategory_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;account&quot; /&gt;
      &lt;xs:enumeration value=&quot;attribute&quot; /&gt;
      &lt;xs:enumeration value=&quot;busunit&quot; /&gt;
      &lt;xs:enumeration value=&quot;customer&quot; /&gt;
      &lt;xs:enumeration value=&quot;distribution&quot; /&gt;
      &lt;xs:enumeration value=&quot;geography&quot; /&gt;
      &lt;xs:enumeration value=&quot;market&quot; /&gt;
      &lt;xs:enumeration value=&quot;organization&quot; /&gt;
      &lt;xs:enumeration value=&quot;other&quot; /&gt;
      &lt;xs:enumeration value=&quot;product&quot; /&gt;
      &lt;xs:enumeration value=&quot;scenario&quot; /&gt;
      &lt;xs:enumeration value=&quot;time&quot; /&gt;
      &lt;xs:enumeration value=&quot;units&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:complexType name=&quot;dimproperty_t&quot;&gt;
    &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
      &lt;xs:element name=&quot;category&quot; type=&quot;otl:category_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;storage&quot; type=&quot;otl:dimstorage_t&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;storageCategory&quot; type=&quot;otl:dimstorecategory_t&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;dimSolveorder&quot; type=&quot;xs:unsignedByte&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;attDataType&quot; type=&quot;otl:attrdatatype_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
      &lt;xs:element name=&quot;genName&quot; type=&quot;otl:genlevname_t&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; maxOccurs=&quot;unbounded&quot; /&gt;
      &lt;xs:element name=&quot;levName&quot; type=&quot;otl:genlevname_t&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; maxOccurs=&quot;unbounded&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;haEnable&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;
    &lt;xs:attribute name=&quot;independent&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;false&quot; /&gt;
    &lt;xs:attribute name=&quot;nameUnique&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;false&quot;/&gt;
    &lt;xs:attribute name=&quot;compression&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; /&gt;


  &lt;/xs:complexType&gt;
  &lt;xs:simpleType name=&quot;agglevelusage_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;default&quot; /&gt;
      &lt;xs:enumeration value=&quot;none&quot; /&gt;
      &lt;xs:enumeration value=&quot;bottom&quot; /&gt;
      &lt;xs:enumeration value=&quot;top&quot; /&gt;
      &lt;xs:enumeration value=&quot;bottomTop&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;mbrtype_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;numeric&quot; /&gt;
      &lt;xs:enumeration value=&quot;text&quot; /&gt;
      &lt;xs:enumeration value=&quot;date&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:simpleType name=&quot;attrdatatype_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:token&quot;&gt;
      &lt;xs:enumeration value=&quot;bool&quot; /&gt;
      &lt;xs:enumeration value=&quot;string&quot; /&gt;
      &lt;xs:enumeration value=&quot;datetime&quot; /&gt;
      &lt;xs:enumeration value=&quot;double&quot; /&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:complexType name=&quot;dimadd_t&quot;&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name=&quot;properties&quot; type=&quot;otl:dimproperty_t&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot; nillable=&quot;true&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;dimName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;preSibling&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;optional&quot; /&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:simpleType name=&quot;mbrlocator_t&quot;&gt;
    &lt;xs:restriction base=&quot;xs:string&quot;&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;
  &lt;xs:complexType name=&quot;genlevname_t&quot;&gt;
    &lt;xs:sequence /&gt;
    &lt;xs:attribute name=&quot;name&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;number&quot; type=&quot;xs:unsignedShort&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;nameUnique&quot; type=&quot;xs:boolean&quot; default=&quot;true&quot; use=&quot;optional&quot; /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;dimupdate_t&quot;&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name=&quot;properties&quot; type=&quot;otl:dimproperty_t&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;dimName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;dtsmbr_t&quot;&gt;
    &lt;xs:sequence&gt;
      &lt;xs:element name=&quot;dtsAlias&quot; type=&quot;otl:alias_t&quot; maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;mbrName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;number&quot; type=&quot;xs:unsignedShort&quot; use=&quot;required&quot; /&gt;
    &lt;xs:attribute name=&quot;enable&quot; type=&quot;xs:boolean&quot; use=&quot;optional&quot; default=&quot;true&quot;/&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;markForDelete_t&quot;&gt;
    &lt;xs:attribute name=&quot;dimName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;deleteMarked_t&quot;&gt;
    &lt;xs:attribute name=&quot;dimName&quot; type=&quot;otl:mbrlocator_t&quot; use=&quot;required&quot; /&gt;
  &lt;/xs:complexType&gt;

  &lt;xs:complexType name=&quot;outline_t&quot;&gt;
    &lt;xs:sequence minOccurs=&quot;0&quot; maxOccurs=&quot;1&quot;&gt;
      &lt;xs:element name=&quot;impliedShareSetting&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot; &gt;
        &lt;xs:simpleType&gt;
          &lt;xs:restriction base=&quot;xs:token&quot;&gt;
            &lt;xs:enumeration value=&quot;default&quot; /&gt;
            &lt;xs:enumeration value=&quot;defaullOn&quot; /&gt;
            &lt;xs:enumeration value=&quot;defaultOff&quot; /&gt;
            &lt;xs:enumeration value=&quot;forceOn&quot; /&gt;
            &lt;xs:enumeration value=&quot;forceOff&quot; /&gt;
          &lt;/xs:restriction&gt;
        &lt;/xs:simpleType&gt;
      &lt;/xs:element&gt;
      &lt;xs:element name=&quot;dateFormatValue&quot; type=&quot;xs:string&quot; maxOccurs=&quot;1&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot;  /&gt;
      &lt;xs:element name=&quot;aliasTable&quot; type=&quot;xs:token&quot; maxOccurs=&quot;32&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot;  /&gt;
      &lt;xs:element name=&quot;dtsMbr&quot; type=&quot;otl:dtsmbr_t&quot; maxOccurs=&quot;unbounded&quot; minOccurs=&quot;0&quot; nillable=&quot;true&quot;  /&gt;
    &lt;/xs:sequence&gt;
    &lt;xs:attribute name=&quot;caseSensitive&quot; type=&quot;xs:boolean&quot; default=&quot;false&quot; use=&quot;optional&quot; /&gt;
    &lt;xs:attribute name=&quot;enableMemberType&quot; type=&quot;xs:boolean&quot; default=&quot;false&quot; use=&quot;optional&quot; /&gt;

  &lt;/xs:complexType&gt;

  &lt;xs:element name=&quot;otlEditMain&quot;&gt;
    &lt;xs:complexType&gt;
      &lt;xs:sequence&gt;
        &lt;xs:group ref=&quot;otl:edit_actions&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot; /&gt;
      &lt;/xs:sequence&gt;
      &lt;!-- if specified otlVersion number is -1, outline edit skip version number check and proceed but reset outline version number to 0--&gt;
      &lt;xs:attribute name=&quot;otlVersion&quot; type=&quot;xs:integer&quot; use=&quot;required&quot; /&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;

</pre>
<p><strong>Reading XSD (or should I say reading the XML using XSD)<br />
</strong><br />
The way you should look at the XSD is by looking at the very bottom; it starts with otlEditMain and references edit_actions group.<br />
Now let&#8217;s look at edit actions. We got the following actions.</p>
<ol>
<li>Outline Update (this is nice. It allows you to add Alias tables, change DTS options, and many more)</li>
<li>Member Update</li>
<li>Member Add</li>
<li>Member Delete</li>
<li>Member Rename</li>
<li>Member Move</li>
<li>Member Association (Attribute)</li>
<li>Dimension Add (nice one)</li>
<li>Dimension Update</li>
<li>Dimension Association (Attribute)</li>
<li>Mark for deletion</li>
<li>Delete marked items</li>
</ol>
<p><strong>Outline Update</strong></p>
<p>For outline update, it looks at the outline_t element, and you can change the following properties of an outline.</p>
<ol>
<li>Implied Share setting</li>
<li>Date format</li>
<li>Add alias tables</li>
<li>Change DTS</li>
<li>Update case sensitivity</li>
<li>Enable Member type (This is used for Text Lists and String formatting)</li>
</ol>
<p>If you look at implied share, it accepts the following values.</p>
<ol>
<li>Default</li>
<li>Default On</li>
<li>Default Off</li>
<li>Force On</li>
<li>Force Off</li>
</ol>
<p><strong>Member Add</strong></p>
<p>Member add looks at the mbradd_t element and uses three attributes (two mandatory and one optional) and a child element.</p>
<p>You need to tell which member you are adding using mbrName attribute, use parent attribute for adding this member under a parent and finally you can decide the position of this member in the outline using preSibling attribute. preSibling is an optional attribute.</p>
<p>Once done you must add the child element attributes using mbrInfo. Now, mbrInfo, in turn, looks at the mbrinfo_t element, and this is a massive element in its own. If you look at the dataStorage element, it looks at datastorage_t for values.</p>
<p>One thing to keep in mind &#8220;<strong>shared</strong>&#8221; tag is for tagging shared members in a regular outline, for adding shared members in a non-unique (read duplicate members allowed outline) use prototypeMbr instead.</p>
<p><strong><del>I&#8217;ve no idea how a shared member can be created using the XML file. </del></strong></p>
<p><del>No matter what I do, it all results in an error, here is the thing prototypeMbr comes under mbrInfo and mbrInfo can be used with </del>mbrAdd<del> and mbrUpdate tags, now I&#8217;m adding this as a new member I&#8217;ve to use mbrAdd then I get this error.</del></p>
<p><del><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4320" data-permalink="https://orahyplabs.com/2018/02/essbase-outline-xml-part-ii.html/shared-member" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?fit=1441%2C281&amp;ssl=1" data-orig-size="1441,281" 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="shared member" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?fit=300%2C59&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?fit=1024%2C200&amp;ssl=1" class="alignnone wp-image-4320 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member-1024x200.png?resize=1024%2C200" alt="" width="1024" height="200" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?resize=1024%2C200&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?resize=300%2C59&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?resize=768%2C150&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/shared-member.png?w=1441&amp;ssl=1 1441w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></del></p>
<p><del>I did try using the </del>UNIQUE<del> name to add the member; there is something that I&#8217;m missing, I&#8217;ve no idea what it is.</del></p>
<p>After a lot of tries, I reached out to Kumar and team, and they were gracious enough to help me with the syntax. Apparently, there is an issue with the documentation, the doc uses mbrAdd in a wrong way (it works for regular members, however breaks for shared ones), and that was throwing me off. I updated my syntax, and it started working.</p>
<p><em>I&#8217;ve no idea where commentEx is used as it is not visible from EAS. Same applies for mbrId, you can add a number for that, and it&#8217;ll take it. I have got a feeling that PBCS might use this later (remember those member GUIDs from metadata extract.</em></p>
<p><strong>Member Update</strong></p>
<p>Member update looks at the mbrupdate_t element, and it follows an attribute and a child element.</p>
<p>You need first to tell which member you are updating using the thisMbr tag and then use mbrInfo element we saw earlier to update the properties.</p>
<p>Where you see mbrlocator_t, replace that with the member names/udas/attribute members.</p>
<p>To update a shared member, you need to use fully qualified name of the shared member. Even though the outline is not enabled for duplicate members, you might have a member shared twice and therefore fully qualified name.</p>
<p>Just keep following the same pattern and without knowing you learned how to read the XSD!!!</p>
<p>I bet you might be thinking, this is all great. However, can you create a utility to generate this XML file? That&#8217;s what I did, and I&#8217;ll publish the Groovy code as another post :), this one is a bit longer than I thought.</p>
<p>I have a hunch that this is what OAC&#8217;s Cube Designer is using (I bet it is using this approach, and maybe an incremental build using XML file).</p>
<p>The post <a href="https://orahyplabs.com/2018/02/essbase-outline-xml-part.html">Essbase outline from XML!! &#8211; Part I</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/essbase-outline-xml-part.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4322</post-id>	</item>
		<item>
		<title>Hybrid + MDXDataCopy, It&#8217;s black magic</title>
		<link>https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html</link>
					<comments>https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html#respond</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Wed, 07 Feb 2018 15:30:47 +0000</pubDate>
				<category><![CDATA[11.1.2.4]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Calc Manager]]></category>
		<category><![CDATA[Essbase]]></category>
		<category><![CDATA[Groovy]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=3137</guid>

					<description><![CDATA[<p>I&#8217;m going to consider this to be pure coincidence that I started working on this draft (which is a year old), and I got a call from the same client where I implemented this solution to work on a new project 🙂 I talked about this during my Kscope17 groovy presentation, and I did tell [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html">Hybrid + MDXDataCopy, It&#8217;s black magic</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m going to consider this to be pure coincidence that I started working on this draft (which is a year old), and I got a call from the same client where I implemented this solution to work on a new project 🙂</p>
<p>I talked about this during my <a href="https://kscope17.com/" rel="noopener">Kscope17</a> groovy presentation, and I did tell that I&#8217;ll write about it. Apologies for not doing it early. I was at a client converting a Planning application to a Hybrid cube and as you all now know that cross dimming to parent in Hybrid breaks Hybrid. I&#8217;ve also seen a different scenario which we&#8217;ll talk in this post.</p>
<p>There are different ways to handle this.</p>
<ol>
<li>Make the cross dim parent and it&#8217;s hierarchy as stored and aggregate the dimension, this is fast Hybrid does it&#8217;s magic here.</li>
<li>Create a dummy member and add the parent as a child of this member, aggregate the dimension and use this member in formulas.</li>
<li>This blog post method 😉</li>
</ol>
<p>Cameron (Big brother from an entirely different set of parents) and I had a long conversation on this topic about all the approaches, and even though Approach 1 works, I didn&#8217;t like that, it removes the Hybridness ;). If you didn&#8217;t see <a href="http://essbasedownunder.com/" rel="noopener">Pete&#8217;s</a> and Cameron&#8217;s award-winning presentation, go ahead and watch the <a href="https://www.odtug.com/p/do/sd/topic=324&amp;sid=8807" rel="noopener">recording</a> or download the <a href="https://www.odtug.com/p/do/sd/topic=250&amp;sid=7738" rel="noopener">presentation</a>, they did cover a lot of Hybrid Essbase and different techniques.</p>
<p>Let&#8217;s say there is a formula which uses top level of all dimensions in a formula. It pretty much becomes a regular BSO cube.</p>
<p><strong>Approach 2</strong></p>
<p>This method works (I knew you might be thinking if this works why an Approach 3) and here is how you can do this. I changed Sample Basic slightly to add zip codes to Market dimension and here is my updated Sample Basic.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4277" data-permalink="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html/mod-samplebasic" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?fit=649%2C610&amp;ssl=1" data-orig-size="649,610" 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="mod SampleBasic" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?fit=300%2C282&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?fit=649%2C610&amp;ssl=1" class="alignnone size-full wp-image-4277" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?resize=649%2C610" alt="" width="649" height="610" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?w=649&amp;ssl=1 649w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic.png?resize=300%2C282&amp;ssl=1 300w" sizes="auto, (max-width: 649px) 100vw, 649px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4280" data-permalink="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html/samplebasic" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?fit=1782%2C386&amp;ssl=1" data-orig-size="1782,386" 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="samplebasic" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?fit=300%2C65&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?fit=1024%2C222&amp;ssl=1" class="alignnone size-large wp-image-4280" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic-1024x222.png?resize=1024%2C222" alt="" width="1024" height="222" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?resize=1024%2C222&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?resize=300%2C65&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?resize=768%2C166&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/samplebasic.png?w=1782&amp;ssl=1 1782w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Parent members are added to a calc only member. Now to use Calc_Only_East member I need to aggregate Market dimension. No, you cannot just ping Calc_Only_East member, there is no block for a dynamic member, and because of that reason, you&#8217;ll not see the values of East in Calc_Only_East member only an agg can help you here.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4279" data-permalink="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html/aggsal" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?fit=338%2C248&amp;ssl=1" data-orig-size="338,248" 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="aggsal" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?fit=300%2C220&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?fit=338%2C248&amp;ssl=1" class="alignnone size-full wp-image-4279" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?resize=338%2C248" alt="" width="338" height="248" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?w=338&amp;ssl=1 338w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/aggsal.png?resize=300%2C220&amp;ssl=1 300w" sizes="auto, (max-width: 338px) 100vw, 338px" /></p>
<p>On my updated Sample Basic database this script took 6.353 seconds. In my real-world application, a similar script was taking 900+ secs.</p>
<p><strong>Approach 3</strong></p>
<p>In this approach, we are going to add dummy members, however no child members!!!! How are we going to get the results, are you crazy?</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4276" data-permalink="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html/mod-samplebasic-2" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?fit=617%2C536&amp;ssl=1" data-orig-size="617,536" 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="mod SampleBasic 2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?fit=300%2C261&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?fit=617%2C536&amp;ssl=1" class="alignnone size-full wp-image-4276" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?resize=617%2C536" alt="" width="617" height="536" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?w=617&amp;ssl=1 617w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/02/mod-SampleBasic-2.png?resize=300%2C261&amp;ssl=1 300w" sizes="auto, (max-width: 617px) 100vw, 617px" /></p>
<p>What I&#8217;m going to do is use @CalcMgrMDXDataCopy/RUNJAVA com.hyperion.calcmgr.common.cdf.MDXDataCopy to copy the data from Parent member to the dummy members 🙂</p>
<p>I&#8217;m going to use Groovy to run the calc and will explain why I&#8217;m taking this approach.</p>
<p>I created a property file as given below</p>
<pre class="brush: java; title: ; notranslate">
// Environments section
essbaseEnv {
 dev {
    maxlKey=&quot;1036072223,1105601687&quot;
    maxlUser=&quot;980700984040509848903004677700&quot;
    maxlPass=&quot;2954990220132113241093195557202967062540&quot;
 }
 test { 
    maxlKey=&quot;1036072223,1105601687&quot;
    maxlUser=&quot;980700984040509848903004677700&quot;
    maxlPass=&quot;2954990220132113241093195557202967062540&quot;
 } 
 prod { 
    maxlKey=&quot;1036072223,1105601687&quot;
    maxlUser=&quot;980700984040509848903004677700&quot;
    maxlPass=&quot;2954990220132113241093195557202967062540&quot;
    calcMgrKey=&quot;fhe34i5hsdudoi3fhkjhds&quot;
    calcMgrUser=&quot;QgEKVtKPyiOjk46kuKw4XuKiXMUxSBlLYFYiJVVeUJ0KInIKMTGycUYuvmVDWYDT&quot;
    calcMgrPass=&quot;qZE1ykPXroMHCcfWIFv2g0IlYv4ZjX3ov/EKxLMDfw+S8YJ4BsbtQxwRHhECbyvU&quot;
    esbApp=&quot;SampleH1&quot;
    esbDB=&quot;Basic&quot;
 } 
}
</pre>
<p>Now using Groovy&#8217;s ConfigSluper, I can read the keys as opposed to writing them in the calc itself.</p>
<pre class="brush: groovy; title: ; notranslate">
// Read java and maxl configuration script for the prod environment.
Thread.currentThread().setContextClassLoader( getClass().getClassLoader() )

def keyConfig = new ConfigSlurper().parse(new File('C:/groovy_scripts/Properties/JavaMaxl.txt').toURL())

// read only prod values, to read test use keyConfig.essbaseEnv.test.esbApp
appname=keyConfig.essbaseEnv.prod.esbApp
dbname=keyConfig.essbaseEnv.prod.esbDB

    essmsh.runScript(keyConfig.essbaseEnv.prod.maxlKey,$/
    login $$key ${keyConfig.essbaseEnv.prod.maxlUser} $$key ${keyConfig.essbaseEnv.prod.maxlPass} on localhost;
    execute calculation '
        RUNJAVA com.hyperion.calcmgr.common.cdf.MDXDataCopy
        ${keyConfig.essbaseEnv.prod.calcMgrKey} /* key */
        ${keyConfig.essbaseEnv.prod.calcMgrUser} /*user*/
        ${keyConfig.essbaseEnv.prod.calcMgrPass} /* password */
        &quot;$appname&quot; /* from application */
        &quot;$dbname&quot; /* from database */
        &quot;$appname&quot; /* to application */
        &quot;$dbname&quot; /* to database */
        &quot;&#x5B;PERIOD].Levels(0).Members&quot;  /* MDX that defines the column members */
        &quot;NON EMPTY Crossjoin(Crossjoin({(&#x5B;FY16],&#x5B;Sales],&#x5B;Actual])}, &#x5B;Product].Levels(0).Members),{&#x5B;East],&#x5B;West],&#x5B;South],&#x5B;Central]})&quot; /* MDX that defines the row members */
        &quot;East,West,South,Central&quot; /* source member mappings, can be empty */
        &quot;Calc_Only_East,Calc_Only_West,Calc_Only_South,Calc_Only_Central&quot; /* target member mappings, can be empty */
        &quot;&quot; /* Target POV columns, members from dimensions that do not exist on the source*/
         &quot;5000&quot; /* rows per page */
        &quot;C:/groovy_scripts/Logs/AggSal.log&quot;; /* log file , can be empty */
    '
    on $appname.$dbname;
    logout;
    exit;
    /$)
</pre>
<p>Think about changing a lot of scripts for a user name or password vs change one prop file 🙂</p>
<p>Essbase calc script</p>
<pre class="brush: java; title: ; notranslate">&lt;/pre&gt;
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;clear&quot;;
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;level&quot; &quot;FINE&quot;;

RUNJAVA com.hyperion.calcmgr.common.groovy.cdf.GroovyCDF
&quot;run&quot; /* compile, run */
&quot;-file&quot;
&quot;C:\groovy_scripts\AggSal.groovy&quot;
&quot;&quot; /* variables in Groovy Script */
&quot;&quot;
;

</pre>
<p>This script took 3.474 secs to complete. My real world calc takes 65 secs, now that is a big difference 900 secs to 65 secs. Again as usual with Essbase you need to test, test, test, and test to see whether this approach is faster or not.</p>
<p>Hybrid is magic and combine with Groovy+MDXDataCopy it is black magic.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html">Hybrid + MDXDataCopy, It&#8217;s black magic</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/02/hybrid-mdxdatacopy-black-magic.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3137</post-id>	</item>
		<item>
		<title>Email from calculation script &#8211; Groovy on-premises Snippets Part II</title>
		<link>https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html</link>
					<comments>https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Tue, 23 Jan 2018 15:01:00 +0000</pubDate>
				<category><![CDATA[Essbase]]></category>
		<category><![CDATA[Groovy Snippets]]></category>
		<category><![CDATA[Tricks]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=3280</guid>

					<description><![CDATA[<p>I&#8217;m on a mission to go through my drafts and finish writing all of them before I move to my next project (Which I&#8217;m not sure when 😉 ), who knows what will happen 😉 This one is the second of the Groovy Snippet series and a more detailed version of what I presented during [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html">Email from calculation script &#8211; Groovy on-premises Snippets Part II</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m on a mission to go through my drafts and finish writing all of them before I move to my next project (Which I&#8217;m not sure when 😉 ), who knows what will happen 😉</p>
<p>This one is the second of the Groovy Snippet series and a more detailed version of what I presented during Kscope17.</p>
<p>We all have faced this question about sending notification after Essbase calculation completion. I&#8217;ve used a variety of options to fulfill this request.</p>
<ol>
<li>Batch/Shell scripts</li>
<li>Automation tools</li>
</ol>
<p>Then came Groovy 🙂</p>
<p>When I was looking for some uses cases for my presentation, I went back and looked at the <a href="https://community.oracle.com/docs/DOC-1005667" rel="noopener">article</a> I wrote for OTN (now Oracle Developer Community). I was interested in that particular use case.</p>
<p>Imagine if you can send an email from Essbase calc script after it is done!!! Groovy opens up endless possibilities.</p>
<p>I&#8217;m going to walk you through 2 different approaches which can be used to send an email with or without attachments.</p>
<p>The primary challenge to make this work for TLS enabled providers like Office 365, AWS, and Gmail was to update mailapi and smtp jar files shipped with Essbase. Before we start coding, let&#8217;s update those jar files first.</p>
<p>Download 1.5.6 version of both jar files.</p>
<ul>
<li><a href="https://mvnrepository.com/artifact/com.sun.mail/mailapi/1.5.6" rel="noopener">mailapi 1.5.6</a></li>
<li><a href="https://mvnrepository.com/artifact/com.sun.mail/smtp/1.5.6" rel="noopener">smtp 1.5.6</a></li>
</ul>
<p>You cannot use the 1.6 version because of the JRE version difference. (when can we see the latest JRE in EPM)</p>
<p>Stop Essbase and replace the jar files under &lt;EPM_HOME&gt;\products\Essbase\EssbaseServer\java\lib, once done restart Essbase.</p>
<p>I&#8217;m using a property file for username, password, SMTP server, and port number.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4236" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/prop-file" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?fit=1092%2C334&amp;ssl=1" data-orig-size="1092,334" 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="prop file" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?fit=300%2C92&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?fit=1024%2C313&amp;ssl=1" class="alignnone size-large wp-image-4236" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file-1024x313.png?resize=1024%2C313" alt="" width="1024" height="313" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?resize=1024%2C313&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?resize=300%2C92&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?resize=768%2C235&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/prop-file.png?w=1092&amp;ssl=1 1092w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Let&#8217;s look at <a href="https://commons.apache.org/proper/commons-email/" rel="noopener">Commons Email</a> example. You&#8217;ll need commons-email jar file to run this sample code. I liked this format better than javax one. If you don&#8217;t want to download an extra jar file, you can look at the javax examples.</p>
<p><strong>Groovy Email with Commons Email</strong></p>
<pre class="brush: groovy; title: ; notranslate">
import org.apache.commons.mail.*
// needs for multiple email address
// import javax.mail.internet.*

email = new SimpleEmail()

def emailprop=new FileReader('C:/groovy_scripts/Properties/email.properties').readLines()
//username is 1st line
usrname=new String(emailprop&#x5B;0].decodeBase64())

//password
psswd=new String(emailprop&#x5B;1].decodeBase64())

//smtp host
smtphost=emailprop&#x5B;2]

//smtp port
smtpport=emailprop&#x5B;3].toInteger()

// mulitple email format
// recipientAddress=&#x5B;new InternetAddress ('ckattookaran@intekgrate.com'),new InternetAddress ('celvinvincent@gmail.com')]

email.setHostName(smtphost)
email.setSmtpPort(smtpport)
email.setStartTLSRequired(true)
//email.setSSLOnConnect(true)

email.setAuthenticator(new DefaultAuthenticator(usrname, psswd))

email.setFrom(usrname)
// email.setTo(recipientAddress)
email.addTo('hyperionadmin@intekgrate.com') //use a DL for multiple emails
email.setSubject('Groovy CDF email from Essbase Calc script')
email.setMsg(&quot;&quot;&quot;Email from Calc script:
$job for $mkt finished at ${new Date()}.&quot;&quot;&quot;)
email.send()
&lt;pre&gt;</pre>
<p>Line 9 and 12 username and password is getting decoded. SMTP properties are set from line 14 to 26.</p>
<p>You can use this to send to multiple recipients; I&#8217;m sending this to a DL.</p>
<p>Essbase script</p>
<pre class="brush: vb; title: ; notranslate">
//ESS_LOCALE English_UnitedStates.Latin1@Binary
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;clear&quot;;
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;level&quot; &quot;FINE&quot;;

RUNJAVA com.hyperion.calcmgr.common.groovy.cdf.GroovyCDF
&quot;compile&quot; /* compile, run */
&quot;-file&quot;
&quot;C:\groovy_scripts\apacheemail.groovy&quot;
&quot;job,mkt&quot; /* variables in Groovy Script */
;

FIX(&quot;Jan&quot;,
&quot;FY17&quot;,
&quot;Actual&quot;,
&quot;100-10&quot;,
@LEVMBRS(&quot;Market&quot;,0))
&quot;Sales&quot;(
@CalcMgrGroovyNumber(&quot;C:\groovy_scripts\apacheemail.groovy&quot;, &quot;&quot;, @LIST(&quot;job&quot;,&quot;mkt&quot;),@LIST(&quot;BudCalc&quot;,@NAME(@Currmbr(&quot;Market&quot;))));
)
ENDFIX
</pre>
<p>What happens if you run this script, any guesses?</p>
<p>Before running the script</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4255" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/before-calc" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?fit=2019%2C1470&amp;ssl=1" data-orig-size="2019,1470" 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="before calc" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?fit=300%2C218&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?fit=1024%2C746&amp;ssl=1" class="alignnone size-large wp-image-4255" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc-1024x746.png?resize=1024%2C746" alt="" width="1024" height="746" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?resize=1024%2C746&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?resize=300%2C218&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?resize=768%2C559&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/before-calc.png?w=2019&amp;ssl=1 2019w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Essbase data after the script execution.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4254" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/after-calc" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?fit=2032%2C908&amp;ssl=1" data-orig-size="2032,908" 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="after calc" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?fit=300%2C134&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?fit=1024%2C458&amp;ssl=1" class="alignnone size-large wp-image-4254" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc-1024x458.png?resize=1024%2C458" alt="" width="1024" height="458" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?resize=1024%2C458&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?resize=300%2C134&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?resize=768%2C343&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/after-calc.png?w=2032&amp;ssl=1 2032w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>I did get the emails. However, I lost the actual data!!!!</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4256" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/emails" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?fit=2401%2C1408&amp;ssl=1" data-orig-size="2401,1408" 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="emails" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?fit=300%2C176&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?fit=1024%2C600&amp;ssl=1" class="alignnone size-large wp-image-4256" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails-1024x600.png?resize=1024%2C600" alt="" width="1024" height="600" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?resize=1024%2C600&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?resize=300%2C176&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?resize=768%2C450&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/emails.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Keep in mind if you are going to use the @CalcMgrGroovyNumber function, use that in a FIX statement with default members.</p>
<p>New script</p>
<pre class="brush: vb; title: ; notranslate">
//ESS_LOCALE English_UnitedStates.Latin1@Binary
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;clear&quot;;
RUNJAVA com.hyperion.calcmgr.common.cdf.CDFLogger &quot;level&quot; &quot;FINE&quot;;

RUNJAVA com.hyperion.calcmgr.common.groovy.cdf.GroovyCDF
&quot;compile&quot; /* compile, run */
&quot;-file&quot;
&quot;C:\groovy_scripts\apacheemail.groovy&quot;
&quot;job,mkt&quot; /* variables in Groovy Script */
;

FIX(&quot;Jan&quot;,
&quot;NoYear&quot;,
&quot;Actual&quot;,
&quot;100-10&quot;,
@LEVMBRS(&quot;Market&quot;,0))
&quot;Sales&quot;(
@CalcMgrGroovyNumber(&quot;C:\groovy_scripts\apacheemail.groovy&quot;, &quot;&quot;, @LIST(&quot;job&quot;,&quot;mkt&quot;),@LIST(&quot;BudCalc&quot;,@NAME(@Currmbr(&quot;Market&quot;))));
)
ENDFIX

</pre>
<p>To send attachments with a groovy script you&#8217;ll need the activation.jar file, <a href="https://mvnrepository.com/artifact/javax.activation/activation/1.1.1" rel="noopener">download the file</a> and place it under &lt;EPM_HOME&gt;\products\Essbase\EssbaseServer\java\udf folder, once done restart Essbase.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4253" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/udf-folder" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?fit=1313%2C400&amp;ssl=1" data-orig-size="1313,400" 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="udf folder" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?fit=300%2C91&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?fit=1024%2C312&amp;ssl=1" class="alignnone size-large wp-image-4253" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder-1024x312.png?resize=1024%2C312" alt="" width="1024" height="312" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?resize=1024%2C312&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?resize=300%2C91&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?resize=768%2C234&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/udf-folder.png?w=1313&amp;ssl=1 1313w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Groovy script for sending attachments</strong></p>
<pre class="brush: groovy; title: ; notranslate">

import org.apache.commons.mail.*

email = new MultiPartEmail()

def emailprop=new FileReader('C:/groovy_scripts/Properties/email.properties').readLines()
//username is 1st line
usrname=new String(emailprop&#x5B;0].decodeBase64())

//password
psswd=new String(emailprop&#x5B;1].decodeBase64())

//smtp host
smtphost=emailprop&#x5B;2]

//smtp port
smtpport=emailprop&#x5B;3].toInteger()

logdir='E:/Oracle/Middleware/user_projects/AzgardEpmSystem/diagnostics/logs/essbase/essbase'

email.setHostName(smtphost)
email.setSmtpPort(smtpport)
email.setStartTLSRequired(true)
//email.setSSLOnConnect(true)

email.setAuthenticator(new DefaultAuthenticator(usrname, psswd))

email.setFrom(usrname)
email.addTo('hyperionadmin@intekgrate.com')
email.setSubject('Groovy CDF email from Essbase Calc script')
email.setMsg(&quot;&quot;&quot;Email from Calc script:
$job for $mkt finished at ${new Date()}.&quot;&quot;&quot;)

// Create the attachment
EmailAttachment attachment = new EmailAttachment()
attachment.setPath(&quot;$logdir/CDFLogger0.log&quot;)
attachment.setDisposition(EmailAttachment.ATTACHMENT)
attachment.setDescription(&quot;CDFLogger&quot;)
attachment.setName(&quot;CDFLogger.log&quot;)

Thread.currentThread().setContextClassLoader( getClass().getClassLoader() )

// add the attachment
email.attach(attachment);

email.send()

</pre>
<p>I&#8217;m sending the CDFLogger log file in this script, and you can see that Commons Email provides some nice features like set the name and description of the attachment.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4257" data-permalink="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/email-attachment" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?fit=2736%2C1467&amp;ssl=1" data-orig-size="2736,1467" 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="email attachment" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?fit=300%2C161&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?fit=1024%2C549&amp;ssl=1" class="alignnone size-large wp-image-4257" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment-1024x549.png?resize=1024%2C549" alt="" width="1024" height="549" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?resize=1024%2C549&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?resize=300%2C161&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?resize=768%2C412&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/email-attachment.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Above file was send when Massachusetts calc was done (You can see that from the log file itself 😉 )</p>
<p><strong>Javax version</strong></p>
<pre class="brush: groovy; title: ; notranslate">

import java.util.Properties
import javax.mail.*
import javax.mail.internet.*

def emailprop=new FileReader('C:/groovy_scripts/email.properties').readLines()
//username is 1st line
usrname=new String(emailprop&#x5B;0].decodeBase64())

//password
psswd=new String(emailprop&#x5B;1].decodeBase64())

//smtp host
smtphost=emailprop&#x5B;2]

//smtp port
smtpport=emailprop&#x5B;3]

logdir='C:/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/essbase/essbase'

props = new Properties()
props.put('mail.smtp.auth', 'true')
props.put('mail.smtp.starttls.enable', 'true')
props.put('mail.smtp.host', smtphost)
props.put('mail.smtp.port', smtpport)
session = Session.getInstance(props,new Authenticator() {
PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(usrname, psswd)
}
})
message = new MimeMessage(session)
message.setFrom(new InternetAddress(usrname))
message.setRecipients(Message.RecipientType.TO,new InternetAddress(usrname))
message.setSubject('Groovy CDF email from Essbase Calc script')
message.setText(&quot;&quot;&quot;Email from Calc script:
$job for $mkt finished at ${new Date()}.&quot;&quot;&quot;)

Transport.send(message)

</pre>
<p><strong>Javax version for sending attachments</strong></p>
<pre class="brush: groovy; title: ; notranslate">

import java.util.Properties
import javax.mail.*
import javax.mail.internet.*
import javax.activation.*

def emailprop=new FileReader('C:/groovy_scripts/email.properties').readLines()
//username is 1st line
usrname=new String(emailprop&#x5B;0].decodeBase64())

//password
psswd=new String(emailprop&#x5B;1].decodeBase64())

//smtp host
smtphost=emailprop&#x5B;2]

//smtp port
smtpport=emailprop&#x5B;3]

logdir='C:/Oracle/Middleware/user_projects/epmsystem1/diagnostics/logs/essbase/essbase'

props = new Properties()
props.put('mail.smtp.auth', 'true')
props.put('mail.smtp.starttls.enable', 'true')
props.put('mail.smtp.host', smtphost)
props.put('mail.smtp.port', smtpport)
session = Session.getInstance(props,new Authenticator() {
PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(usrname, psswd)
}
})
message = new MimeMessage(session)
message.setFrom(new InternetAddress(usrname))
message.setRecipients(Message.RecipientType.TO,new InternetAddress(usrname))
message.setSubject('Groovy CDF email from Essbase Calc script')

// Create the message part
BodyPart messageBodyPart = new MimeBodyPart()

// Now set the actual message
messageBodyPart.setText(&quot;&quot;&quot;Email from Calc script:
$job for $mkt finished at ${new Date()}.&quot;&quot;&quot;)

// Create a multipar message
Multipart multipart = new MimeMultipart()

// Set text message part
multipart.addBodyPart(messageBodyPart)

// Part two is attachment
messageBodyPart = new MimeBodyPart()
DataSource source = new FileDataSource(&quot;$logdir/CDFLogger0.log&quot;)
messageBodyPart.setDataHandler(new DataHandler(source))
messageBodyPart.setFileName('CDFLogger0.log')
multipart.addBodyPart(messageBodyPart)

Thread.currentThread().setContextClassLoader( getClass().getClassLoader() )

// Send the complete message parts
message.setContent(multipart)

Transport.send(message)

</pre>
<p>Happy sending emails 🙂</p>
<p>The post <a href="https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html">Email from calculation script &#8211; Groovy on-premises Snippets Part II</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/01/email-calculation-script-groovy-premises-snippets-part-ii.html/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3280</post-id>	</item>
		<item>
		<title>Run shell script in Workspace</title>
		<link>https://orahyplabs.com/2018/01/run-shell-script-workspace.html</link>
					<comments>https://orahyplabs.com/2018/01/run-shell-script-workspace.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Tue, 16 Jan 2018 16:15:39 +0000</pubDate>
				<category><![CDATA[OutlineLoad]]></category>
		<category><![CDATA[Planning]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Workspace]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4040</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4210" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/stdout" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=2736%2C734&amp;ssl=1" data-orig-size="2736,734" 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="stdout" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=300%2C80&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=1024%2C275&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4210" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/stdout" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=2736%2C734&amp;ssl=1" data-orig-size="2736,734" 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="stdout" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=300%2C80&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=1024%2C275&amp;ssl=1" />Writing a follow-up post for a blog post four years and eight months old, never thought. Someone reached out to me asking &#8220;How can I run shell script in the workspace?&#8221;. I asked her to try changing the executable to use sh instead of cmd and she had some issues making it work. She eventually [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/01/run-shell-script-workspace.html">Run shell script in Workspace</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4210" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/stdout" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=2736%2C734&amp;ssl=1" data-orig-size="2736,734" 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="stdout" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=300%2C80&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=1024%2C275&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4210" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/stdout" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=2736%2C734&amp;ssl=1" data-orig-size="2736,734" 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="stdout" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=300%2C80&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?fit=1024%2C275&amp;ssl=1" /><p>Writing a follow-up post for a blog post four years and eight months old, never thought.</p>
<p>Someone reached out to me asking &#8220;How can I run shell script in the workspace?&#8221;. I asked her to try changing the executable to use sh instead of cmd and she had some issues making it work.</p>
<p>She eventually got it working, and I thought maybe a follow-up post was due.</p>
<p>If you know about &#8220;Generic job applications&#8221; or if you have read the previous posts, then you know what I&#8217;m talking.</p>
<ul>
<li><a href="http://orahyplabs.com/2013/12/run-vb-script-in-workspace.html" rel="noopener">Run VB script in workspace</a></li>
<li><a href="http://orahyplabs.com/2013/03/run-maxl-in-workspace.html" rel="noopener">Run MaxL in Workspace</a></li>
<li><a href="http://orahyplabs.com/2013/04/run-batch-file-in-workspace.html" rel="noopener">Run Batch script in Workspace</a></li>
</ul>
<p>If not, then please read about <a href="https://docs.oracle.com/cd/E57185_01/RAFWA/ch07s09s01s01.html" rel="noopener">generic job applications.</a></p>
<p>What we are going to do is create a generic job application in Workspace and run a shell script in Workspace!!</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4225" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/generic-job-scaled" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?fit=584%2C658&amp;ssl=1" data-orig-size="584,658" 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="generic job scaled" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?fit=266%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?fit=584%2C658&amp;ssl=1" class="alignnone size-full wp-image-4225" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?resize=584%2C658" alt="" width="584" height="658" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?w=584&amp;ssl=1 584w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/generic-job-scaled.png?resize=266%2C300&amp;ssl=1 266w" sizes="auto, (max-width: 584px) 100vw, 584px" /></p>
<p>Command template is different from all the other scripts. We need an executable to run shell scripts ($CMD and /bin/sh), we need a shell script ($PROGRAM &#8211; the script which we are importing), and parameters if any.</p>
<p>Now if you are using a different shebang in your script, you&#8217;ll have to use that executable path. If needed you can create Variables here and refer them in the script by using &#8220;$.&#8221; E.g., If I create a variable called Application, then I can use that in my script as $Application.</p>
<p>Now that we have the job let&#8217;s create a shell script.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4208" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/shell-script" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?fit=2735%2C216&amp;ssl=1" data-orig-size="2735,216" 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="shell script" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?fit=300%2C24&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?fit=1024%2C81&amp;ssl=1" class="alignnone wp-image-4208 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script-1024x81.png?resize=1024%2C81" alt="" width="1024" height="81" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?resize=1024%2C81&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?resize=300%2C24&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?resize=768%2C61&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/shell-script.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>I&#8217;m going to call the OutlineLoad utility to export dimensions.</p>
<p>Application name, Dimension name, and log file location are parameters.</p>
<p>Let&#8217;s import this file into Workspace.</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/fileasjob.png?w=1170" /></p>
<p>Select the generic job as &#8220;Job Factory Application.&#8221;</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/job-selection.png?w=1170" /></p>
<p>Now let&#8217;s navigate to 4. Parameters,  You can define parameters in this section.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4220" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/add-param" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?fit=2000%2C1005&amp;ssl=1" data-orig-size="2000,1005" 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="add param" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?fit=300%2C151&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?fit=1024%2C515&amp;ssl=1" class="alignnone size-large wp-image-4220" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param-1024x515.png?resize=1024%2C515" alt="" width="1024" height="515" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?resize=1024%2C515&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?resize=768%2C386&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/add-param.png?w=2000&amp;ssl=1 2000w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>You can use Text or Pre-Determined values.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4221" data-permalink="https://orahyplabs.com/2018/01/run-shell-script-workspace.html/app-prompt" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?fit=2003%2C1002&amp;ssl=1" data-orig-size="2003,1002" 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="app prompt" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?fit=300%2C150&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?fit=1024%2C512&amp;ssl=1" class="alignnone size-large wp-image-4221" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt-1024x512.png?resize=1024%2C512" alt="" width="1024" height="512" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?resize=1024%2C512&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?resize=300%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?resize=768%2C384&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/app-prompt.png?w=2003&amp;ssl=1 2003w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/dim-prompt.png?w=1170" /></p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/log-prompt.png?w=1170" /></p>
<p>Once done, complete the import.</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/params.png?w=1170" /></p>
<p>Order of the prompts is significant as we are using positional variables in the script. If we move Dimension down, then the script will try to extract the log name <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Time to run the job.</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/run-job.png?w=1170" /></p>
<p>Users can select/enter the prompts and execute the job.</p>
<p>Once done you&#8217;ll get a Table of Contents windows where you can see a stdout, stderr (if present), and any log files.</p>
<p>I did get a stderr file when I ran OutlineLoad without /-O switch. Since this is an extract maintaining the order is not needed, and the message is routed as an error.</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stderr.png?w=1170" /><br />
After adding /-O switch in the script and reimporting it, here is the TOC.</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/job-output.png?w=1170" /><br />
Yes, it allows you to download the exported CSV file!!!</p>
<p><img data-recalc-dims="1" decoding="async" class="size-full" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/10/stdout.png?w=1170" /><br />
You can download the file by opening the CSV file and saving it. (Yes it was 2 in the morning <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f62c.png" alt="😬" class="wp-smiley" style="height: 1em; max-height: 1em;" />)</p>
<p>The post <a href="https://orahyplabs.com/2018/01/run-shell-script-workspace.html">Run shell script in Workspace</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/01/run-shell-script-workspace.html/feed</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4040</post-id>	</item>
		<item>
		<title>2017 &#8211; A Groovy year</title>
		<link>https://orahyplabs.com/2018/01/2017-groovy-year.html</link>
					<comments>https://orahyplabs.com/2018/01/2017-groovy-year.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Tue, 09 Jan 2018 16:30:20 +0000</pubDate>
				<category><![CDATA[ACED]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[PBCS]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4157</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4159" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-overview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1186%2C968&amp;ssl=1" data-orig-size="1186,968" 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="audience overview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=300%2C245&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1024%2C836&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4159" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-overview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1186%2C968&amp;ssl=1" data-orig-size="1186,968" 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="audience overview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=300%2C245&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1024%2C836&amp;ssl=1" />21st century got matured, and I think it is a bit late for a 2017 review 😉 When I look back, 2017 was an eventful year for me. I wrote 26 blog posts, spoke at KScope, was the flag bearer for EPBCS Groovy and On-Prem Groovy scripting. There are some events which I don&#8217;t want [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2018/01/2017-groovy-year.html">2017 &#8211; A Groovy year</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4159" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-overview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1186%2C968&amp;ssl=1" data-orig-size="1186,968" 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="audience overview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=300%2C245&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1024%2C836&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4159" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-overview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1186%2C968&amp;ssl=1" data-orig-size="1186,968" 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="audience overview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=300%2C245&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1024%2C836&amp;ssl=1" /><p>21st century got matured, and I think it is a bit late for a 2017 review <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>When I look back, 2017 was an eventful year for me. I wrote 26 blog posts, spoke at KScope, was the flag bearer for EPBCS Groovy and On-Prem Groovy scripting. There are some events which I don&#8217;t want to remember (you know what I&#8217;m talking about) and wish you never go through that in your career.</p>
<p>Let&#8217;s look at how this blog performed.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4159" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-overview" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1186%2C968&amp;ssl=1" data-orig-size="1186,968" 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="audience overview" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=300%2C245&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?fit=1024%2C836&amp;ssl=1" class="alignnone size-large wp-image-4159" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview-1024x836.png?resize=1024%2C836" alt="" width="1024" height="836" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=1024%2C836&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=300%2C245&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?resize=768%2C627&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-overview.png?w=1186&amp;ssl=1 1186w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Almost 38k users visited this site,  and that generated 66k sessions. Thanks to you gentle reader that % has gone up.</p>
<p>Let&#8217;s look at some details.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4160" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/audience-detailed" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?fit=2204%2C1789&amp;ssl=1" data-orig-size="2204,1789" 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="audience detailed" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?fit=300%2C244&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?fit=1024%2C831&amp;ssl=1" class="alignnone size-large wp-image-4160" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed-1024x831.png?resize=1024%2C831" alt="" width="1024" height="831" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?resize=1024%2C831&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?resize=300%2C244&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/audience-detailed.png?resize=768%2C623&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>That is an excellent heartbeat <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 45.1% of you guys are new visitors. English (US &amp; UK English) is the top language followed by French, Spanish, and Brazilian Portuguese.</p>
<p>Thank you (or should I say Je vous remercie or Gracias or even Obrigado)</p>
<p>Now let&#8217;s look at how you all landed here. I&#8217;m sure that someone fooled you <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4169" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/acq-report" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?fit=1764%2C980&amp;ssl=1" data-orig-size="1764,980" 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="acq report" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?fit=300%2C167&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?fit=1024%2C569&amp;ssl=1" class="alignnone size-large wp-image-4169" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report-1024x569.png?resize=1024%2C569" alt="" width="1024" height="569" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?resize=1024%2C569&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?resize=300%2C167&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?resize=768%2C427&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-report.png?w=1764&amp;ssl=1 1764w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4163" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/acq-detailed" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?fit=2234%2C1770&amp;ssl=1" data-orig-size="2234,1770" 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="acq detailed" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?fit=300%2C238&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?fit=1024%2C811&amp;ssl=1" class="alignnone size-large wp-image-4163" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed-1024x811.png?resize=1024%2C811" alt="" width="1024" height="811" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?resize=1024%2C811&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?resize=300%2C238&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/acq-detailed.png?resize=768%2C608&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Looking for the referrals and other acquisition data, I found that my <a href="http://thetruthaboutcpm.com/">big brother</a> who went to the other side doesn&#8217;t love me like he used to <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4164" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/channels" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?fit=2236%2C1140&amp;ssl=1" data-orig-size="2236,1140" 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="channels" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?fit=300%2C153&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?fit=1024%2C522&amp;ssl=1" class="alignnone size-large wp-image-4164" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels-1024x522.png?resize=1024%2C522" alt="" width="1024" height="522" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?resize=1024%2C522&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/channels.png?resize=768%2C392&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>&nbsp;</p>
<p>Brian, the weekly offender list has helped a lot.</p>
<p>Pete, Tim, and others thank you for all the referrals.</p>
<p>C<strong>ountries</strong></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4165" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/countries" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?fit=2260%2C2413&amp;ssl=1" data-orig-size="2260,2413" 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="countries" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?fit=281%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?fit=959%2C1024&amp;ssl=1" class="alignnone size-large wp-image-4165" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries-959x1024.png?resize=959%2C1024" alt="" width="959" height="1024" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?resize=959%2C1024&amp;ssl=1 959w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?resize=281%2C300&amp;ssl=1 281w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/countries.png?resize=768%2C820&amp;ssl=1 768w" sizes="auto, (max-width: 959px) 100vw, 959px" /></p>
<p>This I can say &#8220;I told you so&#8221; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>The United States without any doubt got the largest EPM customers and obviously, India is going to come second. (Is that going to change next year, we&#8217;ll see)</p>
<p>The UK comes third. Canada I love you guys. France &#8211; Never thought someone from France is reading this blog.</p>
<p>Austraila, It&#8217;s <a href="http://essbasedownunder.com/" target="_blank" rel="noopener">Pete</a> trying to find whether I made a mistake.</p>
<p>Brazil, I guess that&#8217;s <a href="http://devepm.com">Rodrigo and Ricardo</a> following Pete&#8217;s footsteps <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4166" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/devices" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?fit=602%2C971&amp;ssl=1" data-orig-size="602,971" 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="devices" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?fit=186%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?fit=602%2C971&amp;ssl=1" class="alignnone size-full wp-image-4166" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?resize=602%2C971" alt="" width="602" height="971" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?w=602&amp;ssl=1 602w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/devices.png?resize=186%2C300&amp;ssl=1 186w" sizes="auto, (max-width: 602px) 100vw, 602px" /></p>
<p>Desktop is showing a downward trend, that was expected. <del>I&#8217;m using a Surface myself</del> (I think Surface is considered as a Laptop, my bad)</p>
<p>I was interested to see what Mobile devices are you guys using.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4168" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/top-15-devices" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?fit=2244%2C1371&amp;ssl=1" data-orig-size="2244,1371" 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="top 15 devices" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?fit=300%2C183&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?fit=1024%2C626&amp;ssl=1" class="alignnone size-large wp-image-4168" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices-1024x626.png?resize=1024%2C626" alt="" width="1024" height="626" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?resize=1024%2C626&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?resize=300%2C183&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-15-devices.png?resize=768%2C469&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>iPhone rules <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Someone using Xbox, that&#8217;s some dedication, I would love to know who you are</strong>. I swear that&#8217;s not me (I&#8217;m a PS4 guy)</p>
<p><span style="color: #800000;"><strong>Top 10 posts</strong></span></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4170" data-permalink="https://orahyplabs.com/2018/01/2017-groovy-year.html/top-ten" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?fit=2239%2C1870&amp;ssl=1" data-orig-size="2239,1870" 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="top ten" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?fit=300%2C251&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?fit=1024%2C855&amp;ssl=1" class="alignnone size-large wp-image-4170" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten-1024x855.png?resize=1024%2C855" alt="" width="1024" height="855" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?resize=1024%2C855&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?resize=300%2C251&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2018/01/top-ten.png?resize=768%2C641&amp;ssl=1 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Essbase language for Notepad ++ comes first, that reminds me that I need to update the new functions and the Snippet plugin.</p>
<p>People are looking for auditing features, can we please get better auditing Oracle. Its better on cloud!!!</p>
<p>Block creation is still a headache and surprisingly Groovy comes next, I did mention that there will be a tomorrow where block creation is a thing of the past. Embrace Groovy <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>People are still looking at how to format data exports, can we please get formatting with DATAEXPORT, man can only dream!!</p>
<p>Executing MaxL from a rule, yes why not go Groovy and you can do anything (Call a SQL procedure, send an email, update a table, run a batch/shell script oh yeah all these are possible.) I&#8217;m working on a Groovy Snippet series and you&#8217;ll see all of these there.</p>
<p>Run a batch file from workspace &#8211; this is a common question I get all the time after publishing the series of execute &lt;this&gt; from workspace series. I&#8217;m working on a shell version of this one. (Need to install Linux on Virtual box)</p>
<p>Exporting users and provisioning &#8211; that&#8217;s a dead one, Jim unless you are still on 11.1.1.x version. You can either export using LCM or use NUMSys. Well, that reminds me that I must finish the NUMSys web version with Glassfish.</p>
<p>Encrypting MaxL &#8211; well I don&#8217;t really like the way encryption is handled in MaxL <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f641.png" alt="🙁" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>I still hope to write 2 blog posts a month and hopefully there will be more &#8220;groovy&#8221; posts. I wish you all a Happy New Year (Well, it&#8217;s just second week of Jan. I still can, can&#8217;t I <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> )</p>
<p>The post <a href="https://orahyplabs.com/2018/01/2017-groovy-year.html">2017 &#8211; A Groovy year</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2018/01/2017-groovy-year.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4157</post-id>	</item>
		<item>
		<title>Essbase Member Operation Utility – Rename Aliases and Exception handling</title>
		<link>https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html</link>
					<comments>https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html#comments</comments>
		
		<dc:creator><![CDATA[Celvin Kattookaran]]></dc:creator>
		<pubDate>Thu, 14 Dec 2017 21:58:20 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Essbase]]></category>
		<category><![CDATA[Member Operation Util]]></category>
		<category><![CDATA[Utilities]]></category>
		<guid isPermaLink="false">http://orahyplabs.com/?p=4115</guid>

					<description><![CDATA[<p><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4110" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-noexception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" data-orig-size="836,542" 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="renamealias operation noexception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4110" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-noexception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" data-orig-size="836,542" 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="renamealias operation noexception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" />I never thought I&#8217;d add an update to member operation utility 🙂 Now you might be thinking why this update? Akram, who was using Essbase Member operation utility was asking for an ability to bulk update aliases. My response was &#8220;Why don&#8217;t you use a load rule and perform the update?&#8221; His use case is [&#8230;]</p>
<p>The post <a href="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html">Essbase Member Operation Utility – Rename Aliases and Exception handling</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4110" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-noexception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" data-orig-size="836,542" 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="renamealias operation noexception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" /><img width="150" height="150" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1" class="attachment-thumbnail size-thumbnail no-lazy wp-post-image" alt="" style="float:left; margin:0 15px 15px 0;" decoding="async" loading="lazy" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=65%2C65&amp;ssl=1 65w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=2&amp;resize=150%2C150&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?zoom=3&amp;resize=150%2C150&amp;ssl=1 450w" sizes="auto, (max-width: 150px) 100vw, 150px" data-attachment-id="4110" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-noexception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" data-orig-size="836,542" 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="renamealias operation noexception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" /><p>I never thought I&#8217;d add an update to member operation utility <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Now you might be thinking why this update?</p>
<p>Akram, who was using Essbase Member operation utility was asking for an ability to bulk update aliases. My response was &#8220;Why don&#8217;t you use a load rule and perform the update?&#8221;</p>
<p>His use case is more evolved, and he is looking to allow some users to update aliases of existing members. Yes, it can be still done using load rules.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4112" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/update-outline" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?fit=1490%2C1148&amp;ssl=1" data-orig-size="1490,1148" 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="update outline" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?fit=300%2C231&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?fit=1024%2C789&amp;ssl=1" class="alignnone wp-image-4112 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline-1024x789.png?resize=584%2C450" alt="" width="584" height="450" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?resize=1024%2C789&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?resize=300%2C231&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?resize=768%2C592&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/update-outline.png?w=1490&amp;ssl=1 1490w" sizes="auto, (max-width: 584px) 100vw, 584px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4113" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/updated-otl" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?fit=744%2C560&amp;ssl=1" data-orig-size="744,560" 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="updated otl" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?fit=300%2C226&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?fit=744%2C560&amp;ssl=1" class="alignnone wp-image-4113" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?resize=744%2C560" alt="" width="744" height="560" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?w=744&amp;ssl=1 744w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?resize=300%2C226&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/updated-otl.png?resize=320%2C240&amp;ssl=1 320w" sizes="auto, (max-width: 744px) 100vw, 744px" /></p>
<p>However, what if the user adds a level 1 member instead of level 0, what if they use a non-existing member.</p>
<p>Adding level 1 or higher level member and updating aliases work fine.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4141" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/different-level-file" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?fit=778%2C699&amp;ssl=1" data-orig-size="778,699" 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="different level file" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?fit=300%2C270&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?fit=778%2C699&amp;ssl=1" class="alignnone wp-image-4141" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?resize=778%2C699" alt="" width="778" height="699" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?w=778&amp;ssl=1 778w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?resize=300%2C270&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/different-level-file.png?resize=768%2C690&amp;ssl=1 768w" sizes="auto, (max-width: 778px) 100vw, 778px" /></p>
<p>The second case the non-existing member will be added as a new member.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4143" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/nonexisting-member" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?fit=1717%2C977&amp;ssl=1" data-orig-size="1717,977" 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="nonexisting member" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?fit=300%2C171&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?fit=1024%2C583&amp;ssl=1" class="alignnone size-large wp-image-4143" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member-1024x583.png?resize=1024%2C583" alt="" width="1024" height="583" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?resize=1024%2C583&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?resize=300%2C171&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?resize=768%2C437&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-member.png?w=1717&amp;ssl=1 1717w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4142" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/nonexisting-otl-update" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?fit=697%2C520&amp;ssl=1" data-orig-size="697,520" 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="nonexisting otl update" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?fit=300%2C224&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?fit=697%2C520&amp;ssl=1" class="alignnone wp-image-4142" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?resize=697%2C520" alt="" width="697" height="520" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?w=697&amp;ssl=1 697w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?resize=300%2C224&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/nonexisting-otl-update.png?resize=320%2C240&amp;ssl=1 320w" sizes="auto, (max-width: 697px) 100vw, 697px" /></p>
<p>In short, he was able to convince me to come up with this update <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>From this version of EsbMbrOperation utility, you get a new option renamealias</p>
<p>You can supply bulk alias rename operation as a commas separated file. The format is as follows</p>
<p>Alias table, Member name, New Alias</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4106" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/default-alias-file" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?fit=657%2C251&amp;ssl=1" data-orig-size="657,251" 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="default alias file" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?fit=300%2C115&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?fit=657%2C251&amp;ssl=1" class="alignnone wp-image-4106" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?resize=657%2C251" alt="" width="657" height="251" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?w=657&amp;ssl=1 657w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/default-alias-file.png?resize=300%2C115&amp;ssl=1 300w" sizes="auto, (max-width: 657px) 100vw, 657px" /></p>
<p>If no alias table is given, the default alias table will be used for the update operation.</p>
<p>A<span style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">s </span>usual, you can encrypt the whole script using the following command.</p>
<p>[plain]</p>
<p>java -jar lib\EsbMbrOperation.jar -encrypt=&#8221;-u=admin -p=password -S=localhost -App=Sample -Db=Basic -file=C:\AliasChange.txt -renamealias&#8221;</p>
<p>[\plain]</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4114" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/aliasrename-encrypt" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?fit=839%2C541&amp;ssl=1" data-orig-size="839,541" 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="aliasrename encrypt" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?fit=300%2C193&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?fit=839%2C541&amp;ssl=1" class="alignnone size-medium wp-image-4114" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?resize=839%2C541" width="839" height="541" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?w=839&amp;ssl=1 839w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?resize=300%2C193&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/aliasrename-encrypt.png?resize=768%2C495&amp;ssl=1 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></p>
<p>Once encrypted use the encrypted string in the bat/shell script.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4144" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/encrypted-bat-2" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?fit=2704%2C1238&amp;ssl=1" data-orig-size="2704,1238" 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="encrypted bat" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?fit=300%2C137&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?fit=1024%2C469&amp;ssl=1" class="alignnone wp-image-4144 size-large" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat-1024x469.png?resize=1024%2C469" alt="" width="1024" height="469" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?resize=1024%2C469&amp;ssl=1 1024w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?resize=300%2C137&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?resize=768%2C352&amp;ssl=1 768w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/encrypted-bat.png?w=2340&amp;ssl=1 2340w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4109" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-exception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?fit=842%2C547&amp;ssl=1" data-orig-size="842,547" 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="renamealias operation exception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?fit=300%2C195&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?fit=842%2C547&amp;ssl=1" class="alignnone size-medium wp-image-4109" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?resize=842%2C547" width="842" height="547" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?w=842&amp;ssl=1 842w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-exception.png?resize=768%2C499&amp;ssl=1 768w" sizes="auto, (max-width: 842px) 100vw, 842px" /></p>
<p>While I was at it, I found that sometimes you might want to continue the process even if there is an exception. As you can see from the above screenshot since the member &#8220;test&#8221; is not found, it&#8217;ll stop the process and won&#8217;t rename the aliases of Jan and Feb.</p>
<p>From this version, you get an option, not to abort the process. The utility will just report the error message and continue with the process.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="4110" data-permalink="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/renamealias-operation-noexception" data-orig-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" data-orig-size="836,542" 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="renamealias operation noexception" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?fit=836%2C542&amp;ssl=1" class="alignnone size-medium wp-image-4110" src="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=836%2C542" width="836" height="542" srcset="https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?w=836&amp;ssl=1 836w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=300%2C194&amp;ssl=1 300w, https://i0.wp.com/orahyplabs.com/wp-content/uploads/2017/12/renamealias-operation-noexception.png?resize=768%2C498&amp;ssl=1 768w" sizes="auto, (max-width: 836px) 100vw, 836px" /></p>
<p>You can download the latest version <a href="https://sourceforge.net/projects/essbase-member-operations/files" rel="noopener">here</a>.</p>
<p>The documentation can be found <a rel="noopener">here</a>.</p>
<p>The post <a href="https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html">Essbase Member Operation Utility – Rename Aliases and Exception handling</a> appeared first on <a href="https://orahyplabs.com">Oracle - Hyperion Labs</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://orahyplabs.com/2017/12/essbase-member-operation-utility-rename-aliases-exception-handling.html/feed</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4115</post-id>	</item>
	</channel>
</rss>
