hfm, workspace, and fdm – voiding your warranty
DESCRIPTION
While these three products work well out of the box and offer plenty of functionality for end users, administrators and power users are always looking for ways to increase productivity and functionality of their tools. While some updates have introduced functionality for the administrators/power users such as LCM, there are plenty of areas that could be improved. Gathering system usage statistics, performing bulk import/export operations between development/production environments, improving data import/export, generating more useful security audit data, and improving system performance are all items that can be improved upon. This presentation will provide viewers with a selection of real world “hacks” that they can apply to their environments. Viewers will first be presented with a low level technical discussion on how these products work and how they can leverage that knowledge. Fully working “hacks” are also attached at the end of the powerpoint.TRANSCRIPT
#Kscope
HFM, Workspace, and FDM – Voiding Your Warranty
Charles Beyer
#Kscope
About the Speaker
● 15+ years professional development experience in various languages/technologies (6 years w/ Hyperion products)
● Significant experience reverse engineering software
● Loves to help others solve problems● Posts under beyerch2 on OTN Discussion
Boards
#Kscope
OverviewWhy Void Your Warranty?● OOTB functionality doesn’t exist● API Doesn’t exist or isn’t practical● Learn more!
#Kscope
Will they really void my warranty?!?!● No… But you might have support trouble!
● If you are reporting a known issue, shouldn’t be a problem.
● If you have a mysterious issue that they have never heard of ……
“For Oracle operating systems software, technical support is provided for issues (including problems you create) that are demonstrable in the currently supported release(s) of the operating system, running unaltered, and on a certified hardware configuration, as specified in your order or program documentation.”
http://www.oracle.com/us/support/library/hardware-systems-support-policies-069182.pdf
#Kscope
Why Would I want to change things?● Out of the Box Functionality Not Sufficient● You Want to Experiment to Get a Better
Understanding of the Technology
#Kscope
What about APIs & Support?● ANY product change will make the product
non-standard…. ● Using API in a standalone program – OK● Altering existing Web Pages with additional API calls
– Not OK
● API may be too much overhead for what you want or doesn’t cover what you need.
● You may have requirements restricting what you can do● No DLLs / Libraries installed on machine (i.e. Smart
View)
#Kscope
How Do I Learn?
● Understand Basic Software Design / Operation● Memory, Disk, Registry, U/I, Database
● Understand Basic Operation of Hyperion Programs● Read Lots of Product Documentation● Talk to Other People about Products● “Be the Program”
● Experiment● Trial and Error, Mostly Error
#Kscope
How Do I Learn? (cont.)● Use Tools to Help Gather Information● Re-Research on New Information● Leverage Existing Code / API ● Test, Test, Test● Test More● Deploy to Production
#Kscope
Tools
#Kscope
Tools
● Product Info● http://support.oracle.com – Knowledgebase, Patches &
Update, and “Communities”
#Kscope
Tools (cont.)
● Product Info● OTN Discussion Forum (http://forums.oracle.com)
#Kscope
Tools (cont.)
● Product Info● Product Documentation
● System 11.1.2.1 - http://docs.oracle.com/cd/E24674_01/index.htm● System 9.3.x - http://docs.oracle.com/cd/E10530_01/welcome.html
● NOTE : These move periodically! Google ‘Hyperion documentation library’ if you cannot find what you are looking for
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)● Knowledge Tools
● Tips and Tricks from EPM System Infrastructure Development
● Issues 1 to 72 - http://www.oracle.com/technetwork/middleware/bi-foundation/epm-tips-issues-1-72-427329.pdf
● Issues 73 and up - http://www.oracle.com/technetwork/middleware/bi-foundation/epm-tips-issues-73-up-399995.pdf
● NOTE: Constantly updating, so there will be more, etc.
#Kscope
Tools (cont.)
#Kscope
Tools? (cont.)
● Google● +50 IQ Points
#Kscope
Tools? (cont.)
● SQL Mgmt Studio / Oracle Enterprise Manager● Review Database Structure (Tables, Views, Queries,
etc.)
#Kscope
Tools? (cont.)
● SQL Profiler / Oracle Enterprise Manager● Monitor Databases / Tables / Users / Processes to
understand how the data is moving
#Kscope
Tools? (cont.)
● SQL Profiler / Oracle Enterprise Manager● Monitor Databases / Tables / Users / Processes to
understand how the data is moving
#Kscope
Tools (cont.)
● Fiddler – Web proxy that allows you to monitor (and simulate) HTTP/HTTPS traffic. http://fiddler2.com/fiddler2/● Great Tool for HTTP/HTTPS traffic
● Warning : You can sniff / decode HTTPS traffic
● Warning : Some programs may send logins / passwords in plain text.
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)● Wireshark – Network traffic analyzer – http://www.wireshark.org● Network packet analyzer● Monitors ALL network traffic, not just HTTP/HTTPS● Warning : Can intercept all types of traffic such as:
● Streaming Audio / Video● VoiP● Types of Encrypted Data● Plain Text User Name / Password
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)
● Service Manager (services.msc) – View services to see which are running
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)
● Process Monitor – Allows you to monitor processes’ file use, registry access, memory utilization, etc. http://technet.microsoft.com/en-us/sysinternals/bb896645
#Kscope
Tools (cont.)
#Kscope
Tools (cont.)
● WinGrep – Windows text searching tool.
#Kscope
Tools (cont.)
● SQLLocator – Database Searching Tool
#Kscope
Tools (cont.)
#Kscope
Tools? (cont.)● Oracle Application Testing Suite / LoadRunner / Jmeter● Stress testing for validation of changes● Create execution scripts for repeatable test cases
● Good for Testing● Good for Trying to ‘Reverse Engineer’ functionality
#Kscope
Tools? (cont.)
● Dependency Walker● Give it EXE / DLL and it will list all other files needed
by the EXE / DLL
#Kscope
Tools? (cont.)
● Dependency Walker● Also inspect function calls in each DLL
#Kscope
Tools? (cont.)
● Reflector - .NET Reverse Engineering Tool● If you don’t obfuscate / pack your compiled
program….
#Kscope
Tools? (cont.)
● Reflector - .NET Reverse Engineering Tool● Perfectly readable source code / logic…..
#Kscope
Tools? (cont.)
● Reflector - .NET Reverse Engineering Tool● Could lead to a bad day ….
#Kscope
Tools? (cont.)
● Reflector - .NET Reverse Engineering Tool● You can even recreate the whole project!
#Kscope
Tools? (cont.)
● IDA Pro – General Reverse Engineering Tool● Not for the faint of heart….
#Kscope
Tools? (cont.)
● IDA Pro – General Reverse Engineering Tool● Not for the faint of heart….
#Kscope
Tools? (cont.)
● IDA Pro – General Reverse Engineering Tool● But even if you are not an expert, you can glean
useful info!
#Kscope
Precautions● Use a Development Environment!● Limits Risk● Easier to ‘Reverse Engineer’ when you are the only
one in the system● Virtualized Environment may be best since you can
take snapshots● Don’t forget about data files and databases though!
(back those up too)
#Kscope
HFM DEMO
Fix User Drop Down
#Kscope
HFM User Drop Down Example● Problem – Drop Downs not in order!
#Kscope
HFM User Drop Down Example (cont.)
● IDEAS??● How do we figure out what page(s) has
the problem in question?
#Kscope
HFM User Drop Down Example (cont.)
● Web Browser Properties menu
#Kscope
HFM User Drop Down Example (cont.)
● Sometimes ‘Properties’ is disabled, use Fiddler!
#Kscope
HFM User Drop Down Example (cont.)
● IDEAS??● How do we figure out WHERE the page
is?
#Kscope
HFM User Drop Down Example (cont.)
● Use File Search by filename!
#Kscope
HFM User Drop Down Example (cont.)
● IDEAS??● Now how do we find what to fix???
● HINT: Look at the screen again. Is there anything unique about the field??
#Kscope
HFM User Drop Down Example (cont.)
● Use Notepad / Text search for User Name and look in the vicinity for something making a drop down…
#Kscope
HFM User Drop Down Example (cont.)
● IDEAS??● m_straActivityUserNames is a text
array of user names in no particular order…. What now???
#Kscope
HFM User Drop Down Example (cont.)
● Increase your IQ by checking Google for premade sorting scripts!
#Kscope
HFM User Drop Down Example (cont.)
● A free quicksort routine, which is just dropped on your page
#Kscope
HFM User Drop Down Example (cont.)
● Update page to pass array through sort routine..
#Kscope
HFM User Drop Down Example (cont.)
● Update page to pass array through sort routine..
#Kscope
HFM User Drop Down Example (cont.)
● Test Output
#Kscope
HFM DEMO
Fix Orphaned Data
#Kscope
HFM Orphaned Data● Original Data
#Kscope
HFM Orphaned Data● Original Data
#Kscope
HFM Orphaned Data (cont.)
● Load new Metadata….
#Kscope
HFM Orphaned Data (cont.)
● Houston (San Antonio), we have a problem…
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● What happened?
#Kscope
HFM Orphaned Data (cont.)
● A quick scan of database tables, gives a clue…
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● How could we confirm this table is
involved?
#Kscope
HFM Orphaned Data (cont.)
● Looking at the table and it should be obvious..
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● But what about the data????
#Kscope
HFM Orphaned Data (cont.)
● SQL Profiler and some test data will help!
#Kscope
HFM Orphaned Data (cont.)
● SQL Profiler and some test data will help!
#Kscope
HFM Orphaned Data (cont.)
● SQL Profiler and some test data will help!
#Kscope
HFM Orphaned Data (cont.)
● SQL Profiler and some test data will help!
#Kscope
HFM Orphaned Data (cont.)
● How about we check for orphaned rows?
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● So we identified one table where the
data we put in went, is that it?
#Kscope
HFM Orphaned Data (cont.)
● Another look at database tables…
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● How do we attempt to verify?
#Kscope
HFM Orphaned Data (cont.)
● Lets plug our clues into Google
#Kscope
HFM Orphaned Data (cont.)
● Jackpot…..
#Kscope
HFM Orphaned Data (cont.)
● Or… we can use some SQL magic to find all tables with a reference to entity!
#Kscope
HFM Orphaned Data (cont.)
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● Now that we know what to fix, what
should we do to fix this? (HINT)
#Kscope
HFM Orphaned Data (cont.)
● IDEAS??● Should we change the ID of Lanai to
match Stamford (20)?● Should we go through every data table
and replace Stamford (20) to Lanai (26)?
#Kscope
HFM Orphaned Data (cont.)
● Lets change out the ID, but be careful
#Kscope
HFM Orphaned Data (cont.)
● Not just ENTITY_ITEM table, but ENTITY_LAYOUT!
#Kscope
HFM Orphaned Data (cont.)
● Is everything fixed and is life good?
#Kscope
HFM Orphaned Data (cont.)
● No! The App is still in memory and has cached the old info….
#Kscope
HFM Orphaned Data (cont.)
● After a restart of the app (Reboot Server / Kill HsvDatasource.exe / Log off all users)
#Kscope
HFM Orphaned Data (cont.)
● Other thoughts● What if we didn’t realize this right away
and loaded data to the new entity?● Could we prevent entities with data
from being deleted?● Does this apply to accounts?
#Kscope
Tips and Tricks● Make Small / Frequent Changes!● Limiting the number of changes and testing
immediately after making a change simplifies testing by limiting variables….
● Practice, Practice, Practice● Frequent Discussion Boards (OTN / Network 54) and
when people have issues, try to solve them. You are doing someone a favor AND learning something new.
#Kscope
Other Samples
● Workspace● Bulk Renaming of Objects (Fix Invalid Characters)● Add Links to the Install Menu
#Kscope
Other Samples ● FDM● User Synchronization Between Applications (System
9)● Global Import Format Updates● Global Mapping Updates● Remove Domain from Login Functionality
● Other● Poor Man’s Smart View Emulation
#Kscope
Questions?● If you have any questions with the sample code or presentation, feel free to ask/contact me● [email protected]