Friday, April 14, 2017

Deleting a large number of groups in PBCS

Adjusting to working in the cloud takes some time; there are things we are used to being able to do on-premise where the functionality may be more mature or we have additional utilities to assist us.

Recently I ran into an issue in PBCS where we had imported a large number of groups and then decided we did not need them.  At first glance it appeared the only way to remove them was one by one via the GUI.  Since there were over 500 groups I was not willing to do that.  I opened an SR and unfortunately Oracle confirmed there was no way to do it and I would need to submit an enhancement request.

I did some poking around on blogs and the documentation, along with some more trial and error and actually figured out a way to do it by altering LCM exports and the Import Settings.  Below are the steps I took to accomplish this.  I suspect this method might be "unsupported" by Oracle, I'm not sure, so full disclosure that you are doing this at your own risk.  Please be sure to take a full back up of your environment before you attempt this in case you have to roll back.

With that said, these are the steps to delete groups en masse in PBCS.


1. LCM Export your current security, and name the snapshot GROUPS




2. Download the GROUPS Snapshot












3. Once downloaded, extract GROUPS.zip to a temp directory on your PC, such as C:\Temp. 

4. Open C:\Temp\GROUPS\HSS-Shared Services\resource\Native Directory\Groups.csv with a text editor.
     - Remove the groups you want to KEEP from the #group section
     - Remove all #group_children sections (you don't need them for delete operation)

5. Go to C:\Temp\GROUPS\HSS-Shared Services\resource\Native Directory\Assigned Roles
     - Open the various folders and modify the .csv files in them.  You have to remove all references to the groups you are deleting.  Leave references to groups that you are keeping.
6. Now that you are done editing, you can Zip your modified files for re-import to PBCS.

*Note that I had a lot of issues when I first tried to re-zip my files.  I was getting a lot of errors on upload and import.  I will show the method I used that seems to work, this may or may not be optional.

-If you do not already have 7zip, download and install it.
-Open 7zip and navigate to the temp directory where the modified files are located.
Note it is important that you do not zip the GROUPS folder, you have to archive the folder 'HSS-Shared Services', and the two xml files 'Export.xml' and 'Import.xml' (see screenshot)








-Click the Add button 

In the 'Add to Archive' options select 
Archive format = Zip 
Compression level = Store

(This is a case where other compression methods may work but I had errors with the few I tried. Stored essentially puts the file in a zip container but it doesn't actually compress it.  This was the way I got it to import back into PBCS successfully.)



7. Rename your zip to GROUPSMOD.zip

8. Go to PBCS and import your zip file

9. The next setting is extremely important.  You need to tell LCM to Delete instead of add when you import the files back in.  Next to the Refresh button is the 'Import Settings' button, it looks like a hammer and wrench.  Open 'Import Settings' and change 'Groups and Membership - Import Mode' to 'Delete' and click 'Save and Close'.


10. Import your modified LCM


Check the migration status report for Completion

Navigate back to Access Control and you should see your groups have been removed.

*** Important - Be sure to go back to 'Import Options' and change it from 'Delete' to the default 'Create or Update'.  Failing to do this could result in a big problem the next time someone tries to restore a back up or migrate across environments.


Tuesday, August 23, 2016

Smart View prompts user to upgrade when connecting to HFM provider

Ran into this issue a little while back and with HFM 11.1.2.4 it was a little tricky to figure out, so I thought it was worth posting.

Problem
Smartview users get a pop-up when connecting to HFM provider that there is a newer version of Smartview and for them to upgrade.
Many of our customers have stated they do not want users upgrading Smartview versions with each update and do not want Smartview to prompt them to do so.

Solution
The solution to this can be found in Oracle Knowledge Document 1993603.1

Please make sure you have a backup of your system before making any changes.
As these options are now removed from the EPM configurator, the following steps can be followed to turn off the warning messages.
 1. Log On to the shared services console.
 2. Expand Application Groups>Foundation>Deployment Metadata
 3. Financial Management> LWA-hfmadf
 4. Select> Properties > right click
5. Export export to some local drive and edit the file Component.properties
                  ForceClientUpgrade=true -----Change to false
                  WarnIfClientIsNewer=true ------change to false
 5. Save the file
 6. Financial Management> LWA-hfmadf
 7. Select> Properties > right click import
 8. Restart HFM services for the change to take effect.


*Please note that this solution is for HFM Smartview provider. Users getting this pop-up when connecting to other products require a different approach such as updating APS settings for Essbase provider.

Monday, August 15, 2016

Finding EPM Logs on Exalytics T5 (Solaris)

When troubleshooting an EPM issue, reviewing log files is an important step.  The following explains how to find EPM log files on the Exalytics T5 (Solaris)

Step-by-step guide

  1. Connect to the host using a supported tool such as WinSCP, Filezilla, PuTTy, vSSH, etc.
  2. cd to the following directories
    1. Essbase server - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs/essbase/essbase
    2. Essbase application - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs/essbase/essbase/app/{app}
    3. Essbase Studio - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs/EssbaseStudio
    4. HFM - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs/hfm
    5. Planning - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs/planning
    6. Weblogic - cd  /u01/Oracle/Middleware/user_projects/domains/EPMSystem/servers/{JVM_name}/logs
    7. Install - cd  /u01/Oracle/Middleware/EPMSystem11R1/diagnostics/logs
    8. Opatch / Config - cd  /u01/Oracle/Middleware/EPMSystem11R1/cfgtoollogs/
    9. Others - cd /u01/Oracle/Middleware/user_projects/{host}/diagnostics/logs

Wednesday, July 27, 2016

Firefox right click menu not working properly with Workspace

As more people continue to move away from IE and adopt Firefox as the default Oracle EPM browser, some run into an annoying little issue.

When performing a right click in Workspace, using Firefox browser, the Firefox shortcut menu overlays the Oracle Workspace menu making it difficult to access the Oracle menu items.




A quick way to get to the Oracle menu is to press the escape key, but having to do that all the time can be annoying.

There is a setting in Firefox that drives this behavior.  The solution to this is to change the Context Menu option in Firefox to True. 

Basic solution


1) Open Firefox and type 'about:config' in the search bar


2) Search for 'dom.event.contextmenu.enabled and change value to 'true'



You can now go into Workspace and the right click menu will work as expected.

Advanced solution

We actually had an interesting time with this for a while.  Once we figured out how to correct the issue we were getting complaints from users that it worked for a while but then would revert back to the old behavior.  This took some more digging and I finally figured out the issue.

Some enterprise deployments of Firefox will actually distribute a 'Firefox preferences configuration file'.  This file has various settings that the administrator wants for the browser by default.  When a user logs in, the file is read and Firefox settings are updated.  So in our case we were changing the option to true but the config file had it set to false, so the next time the users went back into Firefox the options were reseting.

The steps for updating the config file are as follows:

32 bit Windows
  1. Make sure Firefox is closed
  2. Go to C:\Program Files\Mozilla Firefox
  3. Scroll to find mozilla.cfg
  4. Make a copy of the file called mozilla.cfg_old (this is just so you have a backup of original)
  5. Open mozilla.cfg in text editor
  6. Scroll to pref("dom.event.contextmenu.enabled”,false);
  7. Change it to pref("dom.event.contextmenu.enabled",true);
  8. Save and close file
  9. Restart Firefox

64 bit Windows
  1. Make sure Firefox is closed
  2. Go to C:\Program Files (x86)\Mozilla Firefox
  3. Scroll to find mozilla.cfg
  4. Make a copy of the file called mozilla.cfg_old (this is just so you have a backup of original)
  5. Open mozilla.cfg in text editor
  6. Scroll to pref("dom.event.contextmenu.enabled”,false);
  7. Change it to pref("dom.event.contextmenu.enabled",true);
  8. Save and close file
  9. Restart Firefox

Now depending on how your administrator distributes this file you could still wind up with an issue if they overwrite your updated file, but at least now you know where to check.  You could discuss with the administrator and find out why they want it to false and have them change it.  In our case there was a concern this was a security risk, but the admin team agreed it wasn't and changed it back to true.  In the worst case scenario if the admin insists it needs to be false, depending on your willingness to break the rules, you could always create a batch script that runs on login and edits the file.  Of course depending on how strict your company is this could result in you getting fired so take that advice with a grain of salt and exercise your own discretion.  If you are stuck with the option set to false, refer to the beginning of this post where I suggested using the 'Escape' key!


Wednesday, June 1, 2016

Big feature comes to Essbase in standard PSU

Introduction

Back when Essbase version 7 came out and we were introduced to ASO, Hyperion also introduced us to MDX.  It was added as the calculation language for member formulas in ASO cubes but we also were able to use it as a query language against the database.  As a bonus we were not limited to just ASO we could write queries against BSO databases too.  Having a powerful query language similar to SQL had tremendous potential for Essbase.  We could write complex scripts to pull very specific data from our cubes and even had the ability to create custom members and sets in the queries alleviating the need to modify the actual outline just to get a calculated result.

Overtime the MDX query language has been improved and Oracle has done some very cool things with it behind the scenes to drive things like OBIEE.  For the average power user though, MDX for Essbase had one major limitation; there was no good way to get the results of the query in a useable format.  When using MDX against Essbase you had a few options to get data.

  1. You could pull the data through EAS using an MDX script.  
    1. While EAS could be useful for writing a script, the result set was returned into the EAS window with no way to get it out to Excel or even Notepad.  Large MDX scripts could time out and sometimes even take EAS down completely.
  2. You could copy and paste your MDX script into the Smartview query window.  
    1. This worked well enough for small to medium size queries.  Large queries would tend to cause issues with APS and Excel.  In addition, Excel became unresponsive while the query was running, so once you kicked it off you had to wait for it to complete.  If it was a 20 minute query, you weren't doing anything else in Excel in that time.  This also meant you had to run the query manually with no way to automate or run multiple queries as a batch.
  3. Running the queries via MaxL.  
    1. MaxL had the benefit of running the query in the background allowing you to run larger queries that typically didn't time out.  You could pull back really large data sets and you could write a script to run multiple queries in a batch.  The problem with MaxL was the output was not useable (see samples below).  MaxL did not allow for a delimiter so results were fixed width; that itself was not a show stopper but it was often problematic.  The real issue however was that MaxL would echo additional info in the result set about the query itself.  It would echo the query before the result set and then insert other info about the process.  If your intention was to have a user run these queries or to feed this data to another system you found that no one was going to be happy because you would need to clean up the result set before it became useable.  This meant a one off query could be done, but you weren't going to be able to use this as a standard solution.
  4. Use a third party tool.  
    1. While a few have been developed getting access to them usually involved additional licensing fees and adding another component to the system.
So for me looking at all of those options, MaxL would often seem to be a good choice except for the formatting issues.  At least that was the case up until now!

The Fix

I've been a vocal proponent of fixing this functionality for a long time, often discussing it at conferences with product and development managers, and submitting enhancement requests.  Recently I had the opportunity to work with the Essbase development team on some features and the issue of MDX output came up.  We talked through the short list of what was needed to get over this hump and the development team was very responsive.

With this latest release of Essbase 11.1.2.4.010, Oracle has added a few key enhancements to MaxL that will allow you to modify the MDX output as a clean and useful data set.  The rest of this post will be dedicated to these new features and how to use them.  I will also discuss the use of some existing MaxL features that will be needed to get the output the way you want it.

One more very important point to mention is that these enhancements are not limited to just MDX output, they also work for DISPLAY and QUERY commands. 

11.1.2.4.010 new features in Maxl

  • set column_separator
    • Allows you to define a delimiter to separate your columns.  This could be a comma, tab, vertical bar, or pretty much any other characters.  As a nice bonus the dev team made this a multi-byte delimiter, meaning you can specify a sequence of characters as your delimiter.  This comes in real handy for when you have that brilliant financial analyst who thought he was being so cool when he decided to use a pipe (|) in his member descriptions and inadvertently broke all the exports going from one system to another.
    • Examples:
      • Pipe - set column_separator "|";
      • Comma - set column_separator ",";
      • Tab - set column_separator " ";
      • Multi character - set column_separator "~#";
  • set column_header
    • This setting has an ON | OFF switch allowing you to have column headers in your result set or suppress them.  In most cases you will want them on, but turning them off can be useful particularly when passing the output to another system.  In case you were wondering, it shows the column heading for dimensions in the rows as well, even when using complex Crossjoins.
    • Examples: 
      • On - set column_header ON;
      • Off - set column_header OFF;
  • set echo_mode
    • This setting has an ON | OFF switch that allows you to suppress all that excess content I was describing above.  By setting this to OFF, you will no longer get the query repeated back in the result set or any of the other system messages that you would find in prior versions.
    • Examples: 
      • On - set echo_mode OFF;
      • Off - set echo_mode ON;

Existing features in MaxL you will need or want to get this working

  • set column_width
    • The set column width feature for this use case is being used as a kind of a safety feature.  If you don't set it large enough there is a chance some data can get cut off.  This is especially true in some of the DISPLAY result sets.  So to be safe we set it really high since it has no downside impact when using a delimiter
    • Example: 
      • set column_width 10000;
  • set message level
    • Even with echo_mode off certain messages will show up in your result set if you allow them to.  To be safe, I suggest setting this to only allow FATAL messages through.  Basically if you have a fatal error your query is not going to finish anyway.
    • Example:
      • set message level fatal;
  • alter session set dml_output
    • dml_output allows you to apply some formatting to your query results.  Note that MDX output is not a replacement for the fully featured report script.  However there are a few key alters you will want to consider when generating an MDX output set.
      • Turning aliases on and off.  Often I will get requests from users to either turn aliases on or off when running a query.
        • Examples:
          • alter session set dml_output alias off;
          • alter session set dml_output alias on;
      • Formatting numbers (i.e. decimal places) is often useful when running a query
        • Examples:
          • alter session set dml_output numerical_display fixed_decimal;
          • alter session set dml_output precision 2;
      • Turn off cell status.  Cell status will return additional information about each cell.  In addition to providing extra data you don't want, on really large queries it could even impact performance.
        • Examples
          • alter session set dml_output cell_status off;

Samples

Sample 1

This is an example of a basic MDX query and the result set generated in 11.1.2.4.009.  In other words this is a "Before" example.

Script

login 'user' 'pwd' on 'host';
set message level fatal;
alter session set dml_output alias off;
alter session set dml_output cell_status off;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
spool on to 'c:\Temp\CO\output.txt';

select {[May],[Jun]} on AXIS(0), 
{[100],[200]} on AXIS(1) 
from [Sample].[Basic];

spool off;
logout;
exit;

Output

MAXL > ; select {[May],[Jun]} on AXIS(0), 
     > ; {[100],[200]} on AXIS(1) 
     > ; from [Sample].[Basic];

 Axis-1              (May)               (Jun)              
+-------------------+-------------------+-------------------
 (100)                           2571.00             2859.00
 (200)                           2302.00             2445.00


Sample 2

This is the same query run in 11.1.2.4.010 with new features

Script

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator "|";
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status on;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
spool on to 'c:\Temp\CO\output.txt';

select {[May],[Jun]} on AXIS(0), 
{[100],[200]} on AXIS(1) 
from [Sample].[Basic];

spool off;
logout;
exit;

Output

Product|May|Jun
100|2571.00|2859.00
200|2302.00|2445.00

Notes

You will see that in the second query we do not get the actual query returned to us in the spool.  We do not get mention of "AXIS(1)" as a column header, we get the actual dimension name for the rows.  We do not get the repetitive dashes as a line break -------------.  You will also note that column headers are not enclosed in parenthesis.  This output can be provided to any user to open in Excel or import into another application.

Sample 3

This is the same query run in Sample 2 but with column headers turned off

Script

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator "|";
set column_header off;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status on;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
spool on to 'c:\Temp\CO\output.txt';

select {[May],[Jun]} on AXIS(0), 
{[100],[200]} on AXIS(1) 
from [Sample].[Basic];

spool off;
logout;
exit;

Output

100|2571.00|2859.00
200|2302.00|2445.00


Sample 4

This is the same query run in Sample 1 but a tab delimiter

Script

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator " ";
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status off;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
spool on to 'c:\Temp\CO\output.txt';

select {[May],[Jun]} on AXIS(0), 
{[100],[200]} on AXIS(1) 
from [Sample].[Basic];

spool off;
logout;
exit;

Output

Product May Jun
100 2571.00 2859.00
200 2302.00 2445.00

Notes

You will see that to get tab delimiter I simply hit the tab key between two double quotes.


Sample 5

This is a similar query but now adding additional dimensions to the rows with the use of a Crossjoin

Script

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator "|";
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status off;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
alter session set dml_output get_missing_cells off
spool on to 'c:\Temp\CO\output.txt';

select NON EMPTY 
{[Year].children} on AXIS(0), 
{CrossJoin([Market].children, [Product].children)} on AXIS(1) 
from [Sample].[Basic];

spool off;
logout;
exit;

Output

Market|Product|Qtr1|Qtr2|Qtr3|Qtr4
East|100|2747.00|3352.00|3740.00|2817.00
East|200|562.00|610.00|372.00|990.00
East|300|591.00|922.00|522.00|592.00
East|400|1480.00|1615.00|1712.00|1537.00
East|Diet|555.00|652.00|644.00|557.00
West|100|1042.00|849.00|899.00|759.00
West|200|2325.00|2423.00|2540.00|2439.00
West|300|2363.00|2739.00|2937.00|2692.00
West|400|1407.00|1504.00|1563.00|1380.00
West|Diet|2025.00|1975.00|2100.00|1987.00
South|100|1051.00|1198.00|1312.00|1212.00
South|200|1465.00|1540.00|1612.00|1498.00
South|300|561.00|529.00|591.00|669.00
South|400|#Missing|#Missing|#Missing|#Missing
South|Diet|1146.00|1289.00|1310.00|1167.00
Central|100|2208.00|2473.00|2560.00|2249.00
Central|200|2369.00|2457.00|2481.00|2271.00
Central|300|2414.00|2579.00|2648.00|2450.00
Central|400|2118.00|2317.00|2423.00|2245.00
Central|Diet|3291.00|3420.00|3478.00|3230.00

Sample 6

This is a similar query to Sample 5 but now using multiple axis vs. Crossjoin.

Script

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator "|";
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status off;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
alter session set dml_output get_missing_cells off
spool on to 'c:\Temp\CO\output.txt';

select NON EMPTY 
{[Year].children} on AXIS(0), 
{[Market].children} on AXIS(1),
{[Product].children} on AXIS(2)
from [Sample].[Basic];

spool off;
logout;
exit;

Output

Market|Product|Qtr1|Qtr2|Qtr3|Qtr4
East|100|2747.00|3352.00|3740.00|2817.00
East|200|562.00|610.00|372.00|990.00
East|300|591.00|922.00|522.00|592.00
East|400|1480.00|1615.00|1712.00|1537.00
East|Diet|555.00|652.00|644.00|557.00
West|100|1042.00|849.00|899.00|759.00
West|200|2325.00|2423.00|2540.00|2439.00
West|300|2363.00|2739.00|2937.00|2692.00
West|400|1407.00|1504.00|1563.00|1380.00
West|Diet|2025.00|1975.00|2100.00|1987.00
South|100|1051.00|1198.00|1312.00|1212.00
South|200|1465.00|1540.00|1612.00|1498.00
South|300|561.00|529.00|591.00|669.00
South|400|#Missing|#Missing|#Missing|#Missing
South|Diet|1146.00|1289.00|1310.00|1167.00
Central|100|2208.00|2473.00|2560.00|2249.00
Central|200|2369.00|2457.00|2481.00|2271.00
Central|300|2414.00|2579.00|2648.00|2450.00
Central|400|2118.00|2317.00|2423.00|2245.00
Central|Diet|3291.00|3420.00|3478.00|3230.00

Notes

You will see that even with multiple Axis the column headings line up nicely.

Sample 7

The handling of #Missing poses some issues as there is still no way to remove #Missing from an MDX result set.  Structuring the query a certain way and making use of the NON EMPTY directive can usually overcome this.  In most cases you can find a dimension where you are only selecting a single member (think year, scenario, view, etc.) using a single member from one of those dimensions would allow you to place it as the sole member on the column axis effectively making it a "Data" column.  In some cases you could even use an Attribute dimension, although use of attribute could impact performance.

In this example I format the query in such a way to get a level 0 export from Sample.Basic for Actual and Budget.  Note that the if you run this without the NON EMPTY you will get #Missing values in the "Data" column but with NON EMPTY those rows are suppressed.

login 'user' 'pwd' on 'host';
set column_width 10000;
set message level fatal;
set column_separator "|";
set column_header on;
set echo_mode off;
alter session set dml_output alias off;
alter session set dml_output cell_status off;
alter session set dml_output numerical_display fixed_decimal;
alter session set dml_output precision 2;
alter session set dml_output get_missing_cells off;
spool on to 'c:\Temp\CO\output.txt';

WITH
SET [_Year] AS '{Descendants([Year], [Year].levels(0))}'
SET [_Measures] AS '{Descendants([Measures], [Measures].levels(0))}'
SET [_Product] AS '{Descendants([Product], [Product].levels(0))}'
SET [_Market] AS '{Descendants([Market], [Market].levels(0))}'
SET [_Scenario] AS '{[Actual], [Budget]}'
MEMBER [Caffeinated].[Data] AS '[Caffeinated]'

SELECT
{[Caffeinated].[Data]} ON AXIS(0),
NON EMPTY
CrossJoin([_Year], 
Crossjoin([_Measures], 
Crossjoin([_Product], 
Crossjoin([_Market], [_Scenario])
)
)
)
ON AXIS(1) 
FROM [Sample].[Basic]
;

Output (only partial output due to size)

Year|Measures|Product|Market|Scenario|Data
Jan|Sales|100-10|New York|Actual|678.00
Jan|Sales|100-10|New York|Budget|640.00
Jan|Sales|100-10|Massachusetts|Actual|494.00
Jan|Sales|100-10|Massachusetts|Budget|460.00
Jan|Sales|100-10|Florida|Actual|210.00
Jan|Sales|100-10|Florida|Budget|190.00
Jan|Sales|100-10|Connecticut|Actual|310.00
Jan|Sales|100-10|Connecticut|Budget|290.00
Jan|Sales|100-10|New Hampshire|Actual|120.00
Jan|Sales|100-10|New Hampshire|Budget|110.00
Jan|Sales|100-10|California|Actual|678.00

Closing

So there you have it, a simple enhancement with tremendous potential.  With clean formatted output, users can run complex queries and work with the results in a format they expect.

I want to give credit to the Essbase Development and Product management team for working on this and turning it around so quickly.  They really did a great job with this and I am looking forward as a customer to continued collaboration with our primary vendor/partner.

Friday, October 3, 2014

LLS Light The Night Walk, Norwalk CT, 10/24/2014

This year I am participating in the LLS Light the Night Walk in Norwalk, CT to raise money and awareness for the Leukemia and Lymphoma Society.

I am the captain of my corporate team.  We have committed to raising $5,000, and I personally have committed to raising $2,000 of that amount.

LLS is an amazing organization working for an extremely worthy cause. 

Would you please consider supporting me by making a donation at
 http://pages.lightthenight.org/ctwhv/Norwalk14/gcrisci

Thank you for your support!
Gary Crisci

Wednesday, September 17, 2014

ODTUG Board Nomination

I would like to announce that I am running for the ODTUG Board of Directors.  I submitted my nomination this past weekend and I am hopeful I will gain enough votes to be elected to the board.

Below is my campaign statement and Bio.

Voting opens October 7 - October 28 for ODTUG members with a full membership.

I hope you will please vote for me. Thank you.



Campaign Statement:
I have been involved with ODTUG since June 2008.   That year I knew ODTUG was special and my career has never been the same as a result of my involvement.  I would like to continue giving back by becoming a member of the ODTUG BOD.

I have had amazing opportunities working with ODTUG.  I was the president of the ODTUG Hyperion SIG, Vendor lead for KScope12/13, and this year I am the business content lead.  In the years I have been involved with ODTUG I have tried to promote the growth and well being of the organization.  I was instrumental as president of the Hyperion SIG in driving content expansion and I was a strong contributor to building out vendor participation.   I have worked closely with ODTUG, I understand what the organization stands for and how it operates, I am certain I can be a significant contributor as a member of the board.

As a member of the board I will

·      Dedicate myself to making sure the organization stays focused on users and provides an exceptional experience and level of service to each member. 
·      Promote the EPM community tirelessly, but not at the expense of other Oracle technology tracks.  I believe there is room for everyone and we can continue to grow the breadth and scope of the technology areas we focus on.
·      Ensure ODTUG remains the premier provider of in depth Oracle content.

Please vote for me to become a member of the ODTUG Board of Directors.

Thank you


Bio:
Gary Crisci is an Oracle ACE with over fifteen years of finance experience specializing in Oracle Hyperion Solutions software. Gary is a noted expert in the Oracle Essbase field. He has spoken at numerous Kscope conferences and is a co-author of Developing Essbase Applications. Gary will also be a presenter at this year’s Oracle Open World conference.  During his career, Gary has held various positions as a consultant and as an industry professional working for top-tier companies such as Siemens, Morgan Stanley, and General Electric. He is the former president of the ODTUG Hyperion SIG, and he was on the conference committee for Kscope12 and Kscope13. Gary has an MBA in Information Systems. His current role is Senior Hyperion Architect -- Data Relationship Management for General Electric Corporation in Fairfield, Connecticut.