ODTUG Kscope18: Through a Newbie’s Eyes

(For my friends who requested a review of the Walt Disney World Dolphin Hotel, feel free to scroll to the end of this post.)

There is one word that I will use to describe my ODTUG Kscope18 experience:  WOW!  I am so grateful to have had the opportunity to participate in this year’s conference.

When I was 11 years old, I took a family trip from Texas to Taiwan.  (I was born in Taiwan, but have lived in the U.S. since the age of 3.)  I remember getting off the airplane, walking around the airport, and being in awe as I looked out on a crowd full of individuals who looked like me!  I immediately felt a sense of belonging amongst these strangers.  This is EXACTLY how I felt at the ODTUG Kscope18 Conference!  It was awesome to be surrounded by individuals who were so knowledgeable and passionate about the technology that is such a large part of my daily world.  It was surreal to meet the people behind the blogs / tweets and shake the hands of these “celebrities”!

I survived 5 FULL conference days (Sat. 6/9 – Wed. 6/13) and my fingers are crossed that I am able to attend Kscope19 in Seattle, Washington!

DAY 1 – Saturday 06/09/2018

Community Service Day

CommunityServiceDay

I debated whether or not I should arrive a day earlier to participate in this event, and I do not regret being able to give a few hours of my time to help a worthy organization (UP Orlando).  Community Service Day was a perfect introduction to Kscope18 and it served as a nice ice breaker to meet fellow ODTUG-ers.  After we returned to the hotel, I helped with “bag stuffing” (conference attendees received a bag of swag).  It was neat to be a little part of the magic behind the curtain of Kscope18.

Registration

Registration

This served as a preview of the AWESOME week ahead of me.  I was blown away by the magnitude of this conference.  Several people had come from all around the world!  There were so many interesting sessions, hands on labs, panels, & exciting social events.

In the evening, I enjoyed an impromptu dinner with a group of individuals who were intelligent, friendly, and full of interesting stories.  It was a great way to end my Day 1.

DAY 2 – Sunday 06/10/2018

Symposiums

After enjoying breakfast catching up with a friend, I attended two of the numerous Symposiums scheduled.  I highly recommend attending these to stay informed, especially if you are interested in what is on the horizon for your respective technologies.

Exhibit Booth Setup

Booth

I wonder how many conference attendees also get to experience the conference as an Exhibitor; I was happy to take advantage of this opportunity as a first-timer.  Helping my team setup the US-Analytics booth was a small price to pay to be allowed into the Exhibit Hall before the crowd during Breaks and Happy Hour!

Ambassador Meeting

ODTUG Kscope Ambassadors are in charge of handing out session evaluations, collecting them, and turning them into the registration desk.

Perks:

  • Chance to win a free conference pass for next year’s Kscope.
  • Chance to personally meet the presenter(s)
  • Collect Ambassador pins – I earned 3!
  • Be directly involved in the conference experience

Newcomers’ Orientation

ODTUG Board of Directors introduced themselves and provided a quick overview of Kscope18 and what participants could expect.  There were lots of friendly people, willing to answer questions.  Numerous people had attended 7 or more prior Kscope Conferences!

Welcome Reception – Be Our Guest!

WelcomeReception

Attendees were encouraged to dress up as their favorite character.  This was a fun way to explore the Exhibit Hall.  With some inspiration from the web and the help of my Silhouette CAMEO 3 craft cutter, my Lilo (Lilo & Stitch) costume was a snap to put together.

Costume

WelcomeReception2

DAY 3 – Monday 06/11/2018

General Session

So entertaining!  I really enjoyed learning about Dr. Heather Knight‘s (the keynote speaker) work with robotics.  And kudos to the ODTUG Board of Directors for the success of their hilarious introduction video, haha!

Sessions / Break / Sessions / Lunch / Sessions / Happy Hour

So many wonderful sessions, so little time.  There is no shortage of content at the conference.  The hardest part was deciding which sessions to attend.

Helpful Tips:

  • Download and leverage the ODTUG Kscope App
  • Some sessions are recorded (the app will let you know which ones are recorded)
  • Take the time to plan out your daily schedule and use the app to keep you on track.
  • Session Evaluations can be submitted from the app.
  • I believe paid ODTUG members have access to the Kscope18 presentations.

Community Night Events

Each of the 4 ODTUG Communities (APEX, BI, Database, and EPM) hosted their own Community Night.  It was a cool way to network with peers and make new friends.  I attended the EPM Speed Networking and LipSync Battle.  I was invited to join one of the LipSync Battle teams and initially chickened out.  But after I watched them practice the night before, I knew I had to be a part of this fun group.  These amazing people made this an epic event!

lipSync

Happy Birthday to Me!

The conference is a great place to be reunited with people you may not see often.  I enjoyed catching up with long-time friends, who treated me to dinner to celebrate my birthday.  After an action packed day, I returned to my hotel room to find this beautiful bouquet waiting for me.  Hugs to my thoughtful friend for making me feel so loved!

birthday

DAY 4 – Tuesday 06/12/2018

5K Fun Run

Several people thought that I was crazy for signing up for a 5K with a 6:30 AM start time, including me!  My 5K buddies and the breathtaking sunrise (no filter) made this early event completely worthwhile.

5k

Sessions / Break / Lunch & Learn / Sessions / Happy Hour

I mostly attended sessions with EPM content, but crossed over to the Oracle APEX Community for my Lunch & Learn.  It was refreshing to witness so many people excited and happy to share knowledge.

Tuesday evening was the night for vendor dinners / happy hours.  I enjoyed a quiet productive evening, and managed to get work done and even got a little rest 🙂

DAY 5 – Wednesday 06/13/2018

ODTUG 2018 Leadership Program Class – Video Interview

I was honored to be 1 of the 5 individuals selected to be in the 2018 ODTUG Leadership Program Class It was a memorable experience and I highly recommend it to anyone interested in getting more involved in the ODTUG Community.  After breakfast, the Leadership Class and Program Coordinator participated in a video interview to recap our experiences.  Talk about feeling special!

VideoInterview

Sessions /Break / Sessions

It was another full day of great sessions.  I was able to participate in a couple of AM sessions before heading to the 2018 Leadership Program Presentation & Graduation.

Women In Technology (WIT) Luncheon

It seemed counter-intuitive to polarize the community into men and women, but after attending this luncheon, I understand the importance of these type of events.  Men were invited, and I think there ended up being at least 1 male assigned to each table.  The welcome speech given by Opal was so moving that I found myself getting emotional.  The format of this was incredibly effective.  Each table had a moderator and print-outs with different workplace scenarios.  I LOVED the conversation and hearing different perspectives on each of the scenarios.  I encourage men and women alike to participate in WIT events.  I found it enlightening and inspiring!

ODTUG 2018 Leadership Program Class – Presentation & Graduation

Graduation

We enjoyed the commencement speech delivered by our special guest and then it was show time.  Every Leadership Program Class is assigned a special project.  We found ours to be challenging because there was no right or wrong answer.  I think all of us were a little bit nervous, but the ODTUG Board Members were engaged and everyone enjoyed the open dialog.  It was an empowering experience!

Special Event – Andretti Indoor Karting & Games

neon

We were instructed to get our neon on…and I DID!  This was a fun way to end my Kscope18 experience.  I had a 7am flight home the next day so opted out of the after party.  I heard it was a blast and many danced the night away.

Overall, it was an amazing week.  I learned so much and met so many wonderful people.  If you have never attended a ODTUG Kscope Conference, I highly recommend you look into checking out Kscope19 next June.

 

Walt Disney World Dolphin Hotel – Review

dolphin1

The Dolphin is an older hotel but it is nice and well maintained.   I mostly stayed in the conference area of the hotel, but did do a little bit of exploring the first day.  I did not visit any of the Disney Parks or Universal during my stay, so I do not have a lot of information to share on that topic.

Interesting fact:  While the WDW Dolphin & Swan is on Disney property, it is not a Disney owned hotel.  It is owned by Sheraton.

Dining:  Between the two hotels, there are plenty of variety in fine dining options.  There were not a lot of low-key (less expensive) dining options, but I think this is to be expected.  You can walk (less than 5 mins) between the Dolphin and the Swan, so it is convenient to get to restaurants in either hotel.

Room:  There was a fridge in the room and they provide 2 bottles of complimentary water a day.  The bed was comfortable and the rooms were clean.

Entertainment:  The hotel had a list of daily activities for families to enjoy.  The Boardwalk is right across the bridge and features more dining and entertainment.

Transportation:  There is a water bus that will take you across to Epcot.  And there is a shuttle that will take you to the Magic Kingdom and I assume the other Disney Parks (I do not know for sure).  I ended up Uber-ing to and from the airport, but the hotel has a shuttle service (Mears Transportation Orland) you can make reservations prior to arrival to handle your round-trip airport needs.  It does end up being a little cheaper than Uber.

Shopping:  There was a store in the Dolphin that sold Disney merchandise.

Pool:  Not very elaborate, but the kids there seemed to be enjoying themselves.

Disney Concierge:  The Dolphin had a concierge desk that you could go to for information and tickets to the parks. 

Below is a view overlooking The Swan and The Boardwalk from a suite in The Dolphin.  Notice the walkway between the two hotels.dolphin

When Logic and Structure Does Not Apply

Working with technology is mostly predictable.  There are clearly defined lines when it comes to what and how something will behave.  Sure, there are various ways to solution a problem.  But while the individual methodology chosen can vary, there are still rules that apply (syntax, functions, structure, logic).  Understanding these “rules” can make all the difference when it comes to problem solving.

Life, however, is not so easy to troubleshoot.  Yesterday was a tough day for my family.  We said goodbye to our dog Eli.  He had begun showing signs of renal failure a few weeks before.  Eli was disinterested in both food and water.  The doctors were able to control his dehydration through IV fluids and the vet and vet techs assist-fed him.  Unfortunately, even on three of the strongest anti-nausea medications Eli was unable to keep anything down.  He spent the weekend in the ER but with no improvement.  On Monday, his vet and I made the decision to end his suffering.

Eli was the sweetest dog.  He was loved by our family and many friends.  Even children who were frightened of dogs, quickly bonded with Eli.  He was gentle, loving, and happiest when cuddled up in a warm, welcoming lap.  Eli was my couch buddy as well as my work buddy.  Whether it was decompressing from the day or stressful nights working in front of the computer, Eli could be found by my side.  He welcomed the many additions to my life, first my husband when I got married and then my sons.  Admittedly, my sons diverted my attention from him, but what he lacked from me, he gained from the boys.  They loved him so much and would often fight over who got to take him outside or love on him.  He was the perfect dog for our family, both loving and patient.

Eli spent a couple of hours at home on Monday morning between the ER and his regular doctor.  I am so grateful for that time, both boys got to love on him before school.  He rested comfortably in our laps.  The boys knew he would be returning to the doctor, but did not fully comprehend that their goodbye that morning could be the last.  I was still holding out some hope as I drove him to the vet.  As I waited for his final lab results, he grew increasingly uncomfortable in my lap as his pain medication was wearing off.  We discussed possible options, but none seemed fair to Eli.  He deserved to be at peace.

Breaking the news to my sons was beyond difficult.  My three year old did not understand.  He processed the loss in his own way, he kept saying, “Eli is dead, he’s gone forever, we will never see him again.” all the while asking for confirmation and questioning, “Why?”  He knows the family is sad, and that he should feel sad too, but he is too young to grasp the concept of death.  My seven year old on the other hand is heartbroken.  He had bouts of sadness throughout the night and cried himself to sleep.  He even started to wonder about his own mortality.  These are the life moments that are so very gray, there is no right thing to say to console someone.  There are no formulas, scripts, rules to follow, the only thing I could do was be in the moment with him, be sad with him, and so we just cried together.

My son told me how much he missed him, how he wished that he could hold Eli in his lap.  I told him “The people and animals that move on, are at peace. There is no more suffering for them.  It’s the people who are left behind that feel the sadness and hurt.  So don’t feel bad for Eli.  Eli was very loved.  Eli was very lucky to be loved by him and he knew and felt it.”  And then my son, through heart wrenching sobs said this, “My…heart…is…broken…I…feel…so…sad…I…feel…like…I…am…the…luckiest…boy…to…have…Eli…as…my…dog.”  I could not have expressed this sentiment better.  I was lucky to be Eli’s person, to have his unconditional love and companionship.  Rest in peace Eli.  We love you!

eli

FDMEE Tutorial: Using a Source Adapter Parameter to Filter Data

Financial Data Quality Management Enterprise Edition (FDMEE) and Oracle Data Integrator (ODI) are useful products with lots of features. The various menus, options, and setup screens within FDMEE and ODI can be overwhelming.  Which is why I was intimidated when initially challenged with the task of leveraging FDMEE parameters to filter data sets, but the task turned out to be a great learning experience.  Going through the process really helped me gain a better understanding of the relationship between FDMEE and ODI objects.

NOTE: The steps below will not walk through installing or setting up FDMEE.  The assumption is that the environment is already setup and running with working source and targets.  

OBJECTIVE

Provide users with the option of filtering data based on account type. In this particular example, users can choose to include or exclude Income Statement accounts in their data load.

  • Accounts (Level 0) are 5 digit numbers
  • Non-Income Statement Accounts (Balance Sheet) begin with 1,2,3,4

Step 1: Add Parameter to a Source Adapter (FDMEE)

A. On the Setup tab, click on Source Adapter

B. Select the desired Source Adapter (SOURCEEX in this example)

C. On the Parameters tab, click on Add

D. Parameter Name: p_incl_inc_stmnt

E. Parameter Data Type: Char

F. Parameter Prompt: Include Income Statement

1sourceadapter

Step 2: Make Note of Source Adapter Details (FDMEE)

A. ODI Package Name: ODI_Package_Ex

B. ODI Project Code: OEX

2sourceadapter

Step 3: Input Value into Parameter (FDMEE)

A. On the Workflow tab, click on Data Load Rule

B. Select the desired POV (Location: LocationEX in this example)

– Location selected must be setup with the Source associated with the Source Adapter the Parameter was added to in Step 1.

 C. On the Source Options tab, notice the “Include Income Statement” property

– This will mirror the value entered in Step 1F > Parameter Prompt: Include Income Statement

D. Include Income Statement: Y

– Y = Yes, Include Income Statement Accounts

-N = No, exclude Income Statement Accounts

3dataloadrule

Step 4: Locate the Appropriate ODI Project (ODI)

 A. On the Designer tab, locate the ODI Project that correlates to the ODI Project Code associated with the Source Adapter from Step 2B > ODI Project Code: OEX

4projectcode

Step 5: Add ODI Project Variable (ODI)

A. On the Designer tab, expand the Project folder identified in Step 4

B. Add a new ODI Project Variable: p_incl_inc_stmnt

– Name: p_incl_inc_stmnt

* To keep things simple, set the variable name to mirror the value entered in Step 1D > Parameter Name: p_incl_inc_stmnt

– Datatype: Alphanumeric

– Keep History: Latest Value (Default, feel free to change)

– Default Value: 0 (Leave blank or set to Y or N)

5variable1

Step 6: Link ODI Project Variable to FDMEE Source Adapter Parameter (ODI)

A. On the Refreshing menu of the ODI Project Variable created in Step 5, select the appropriate Schema and enter the following code into the Select Query window:

f_get_param_value(‘p_incl_inc_stmnt’)

– This reference to ‘p_incl_inc_stmnt’ in the code above is a direct reference to the FDMEE Source Adapter Parameter created in Step 1 > Parameter Name: p_incl_inc_stmnt

6variable2

Step 7: Locate the Appropriate ODI Package (ODI)

A. On the Designer tab, locate the ODI Package that correlates to the ODI Package Name associated with the Source Adapter from Step 2A > ODI Package Name: ODI_Package_Ex

7packageoverview

Step 8: Add the ODI Project Variable to the Appropriate ODI Package (ODI)

A. Click on the Diagram tab of the ODI Package identified in Step 7.

B. Add the ODI Project Variable p_incl_inc_stmnt from Step 5 & 6

C. Variable Type: Refresh Variable

D. Order and link variable to other package objects as desired

8packagediagram

Step 9: Modify the ODI Interface to Include Filter (ODI)

A. Click on the Diagram tab of the ODI Package identified in Step 7.

B. Identify the appropriate ODI Interface that is responsible for the data load into FDMEE (ERPI Open Interface to ERPI Balances in this example)

C. Create the filter on the source column that houses Accounts (COL01 in this example)

– Input suitable code / logic to achieve the desired filter results, I leveraged the following code for the filter:

9filtercode

– Based on the above logic:

* If the Parameter Value in Step 3D was set to ‘Y’ then all accounts would be considered VALID (part of the data result set)

* If the Parameter Value in Step 3D was set to ‘N’ then only accounts beginning with a 1,2,3 or 4 would be considered VALID (part of the data result set)

9interface

Step 10: Regenerate ODI Scenario

To ensure the change is stored in the Scenario when FDMEE executes, be sure to regenerate the ODI Scenario corresponding to the modified package.

Once all the FDMEE and ODI objects have been successfully setup and saved, the user will then be able to filter the data set by updating the parameter value on the Data Load Rule menu in FDMEE and clicking on the Execute button.

This is just one example of how to leverage FDMEE Source Adapter Parameter, there are numerous ways to utilize this cool feature!

Toughest Interview This Year

As a Consultant, I often have to interview clients.  I have learned from experience to do the following:

  • Ask open-ended questions
  • Ask strategic follow-up questions
  • Build rapport
  • Participate in active listening
  • Be interested / friendly

Well…Yesterday was the first day of school for my first grader.  I was excited to hear all about his day but he had few words.  Ok…not a problem for a Consultant who has to obtain information from strangers frequently, right?  WRONG!  Turns out, these skills are useless when talking to my first grader.

Me:  How was your day?

Son:  Good.

Me:  Ok.  What did you do in class?

Son:  Um…I dunno…stuff.

Me:  Well, like what?

Son:  I can’t remember.

Me:  Do you like your first grade teacher?

Son:  I guess.

Much of the rest of the conversation continued at this pace…FAIL!  The only time I received more than a 3 word answer was when he told me how happy he was to find the note I packed for him in his lunch.  At least there’s that 🙂  My suggestion for anyone interested in improving their soft skills, practice by interviewing my son, ha!

The lunch note…WIN!

pikachu

 

DRM Tutorial: Bulk Inserting DRM Users

Disclaimer: Not recommended / endorsed by Oracle.  Follow these steps at your own risk.

Note: The below steps were used for an environment using MS SQL Server.

Recently, I was tasked with adding Users to DRM. The list contained almost TWO HUNDRED users!  Using the below three windows to input the users one by one was not a viable option in my opinion, instead I was able to bulk insert the users into DRM. Work smart whenever possible!

DRM_Users01

DRM_Users02

DRM_Users03

Bulk inserting DRM Users involves modifying / writing to back-end database tables. In addition to READ access to the DRM relational tables, you will also need WRITE access to the following 6 tables:

  • RM_User
  • RM_User_Role
  • RM_Category_User
  • RM_Object_Access_Group
  • RM_Object_Access_Group_User
  • DAL_Sequence

In the following example, users will be added to DRM and assigned the “Workflow User” role.

 

Step A: Backup DB Tables

As a general rule of thumb, it is always a good idea to backup database tables before modifying them.

 

Step B: Acquire Pertinent Pieces of Information

Because we will be inserting records into tables that contain primary keys and foreign keys, it will be important to do a little detective work.

  1. Determine the i_role_id key for the role you will be assigning to the users.
    • Execute the following query:
      SELECT * FROM RM_Role
    • Results:
      RM_Role
    • i_role_id for “Workflow User” –> 102
  2. Determine the beginning number to assign to the i_user_id key for input into the RM_User table
    • Execute the following query:
      SELECT MAX(i_user_id)+1 FROM RM_User
    •  Results:
      DRM_2B
    • MAX(i_user_id) + 1 –> 362
  3. Determine the beginning number to assign to the i_access_group_id key for input into the RM_Object_Access_Group table
    • Execute the following query:
      SELECT MAX(i_access_group_id)+1 FROM RM_Object_Access_Group
    •  Results:
      DRM_2C
    • MAX(i_access_group_id) + 1 –> 316

 

 Step C: Create data files for import into the following 5 tables

DRM_Users04I chose to create the data files for each table with specific fields in separate tabs within Excel, as shown below:

DRM_Users05

  1. Populating RM_User dataDRM_4A
    • Not ALL fields in the RM_User table are required for each user added. I got away with only inputting data into the above 9 fields.
    • The number sequence for the i_user_id field will begin with the value derived in Step B2 –> MAX(i_user_id) + 1 –> 362
  2. Populating RM_Category_User data
    DRM_4B

    • In the environment I was working with, i_category_id = -1 represents System and the access level required for the users is Read. If different categories and access levels are required for your purposes, adjust the data to suit your needs.
    • The number sequence for the i_user_id field will begin with the value derived in Step B2 –> MAX(i_user_id) + 1 –> 362
  3. Populating RM_Object_Access_Group data
    RM_Object_Access_Group

    • The number sequence for the i_access_group_id field will begin with the value derived in Step B3 –> MAX(i_access_group_id) + 1 –> 316.
  4. Populating RM_Object_Access_Group_User data
    RM_Object_Access_Group_User 

    • The number sequence for the i_access_group_id field will begin with the value derived in Step B3 –> MAX(i_access_group_id) + 1 –> 316
    • The number sequence for the i_user_id field will begin with the value derived in Step B2 –> MAX(i_user_id) + 1 –> 362
  5. Populating RM_User_Role data
    RM_User_Role

    • The number sequence for the i_user_id field will begin with the value derived in Step B2 –> MAX(i_user_id) + 1 –> 362
    • The i_role_id will be set for the value derived in Step B1 –> i_role_id for “Workflow User” –> 102

Step D: Import / Insert the prepared user data from prior Step into the DRM tables

I leveraged the Microsoft SQL Server Management Studio Import and Export Wizard.

  1. Import the data for the RM_User and RM_Object_Access_Group tables first.
  2. Import the data for the remaining 3 tables:
    • RM_User_Role
    • RM_Category_User
    • RM_Object_Access_Group_User

 

Step E: Reset Database Sequence Numbers  

  1. Determine the max i_user_id key in the RM_User table
    • Execute the following query:
      SELECT MAX(i_user_id) FROM RM_User
    • Results:
      371
    • MAX(i_user_id) –> 371
  2. Determine the max i_access_group_id key in the RM_Object_Access_Group table
    • Execute the following query:
      SELECT MAX(i_access_group_id) FROM RM_Object_Access_Group
    • Results:
      371 (2)
    • MAX(i_access_group_id) –> 325
  3. Execute the following update statements:
    • UPDATE DAL_SEQUENCE
      SET i_id = 371
      WHERE c_key = ‘i_user_id’
      and c_primary_table = ‘RM_User’
    • UPDATE DAL_SEQUENCE
      SET i_id = 325
      WHERE c_key = ‘i_access_group_id’
      and c_primary_table = ‘RM_Object_Access_Group’

 

Step F: Restart Oracle DRM Service
DRMService

 

Step G: Verify Users Were Added Successfully
UserRoleConfirmation


Step H: Confirm Users Roles Associated to Users Are Correct
 RoleConfir

 

Getting My Blog On

After over thirteen years in the tech industry and over six years of EPM experience, I am jumping on the “blog” bandwagon.  Expect to see tutorials on EPM topics that I have found useful as well as random anecdotes relating to my attempts at maintaining a sane work-life balance!  I welcome constructive feedback, and am always open to learning different / improved ways to tackle challenges.