Intro

Just a blog listing some weird issues and their solutions with regards to the Oracle Hyperion applications I manage.
Hopefully it will help someone else resolving these -often cryptic- incidents.

Applications involved are:

Hyperion Financial Planning
Hyperion Business Rules
Hyperion Calculation Manager
Hyperion Financial Management
Hyperion Analytic Services (Essbase)
Hyperion Reporting and Analysis
Hyperion Financial Data Quality Management (FDM)
Hyperion Workspace

All running version 11.1.2.1.0

Wednesday, February 5, 2014

Arranging the Hyperion services

If one installs EPM 11.1.2.1 in a distributed environment, it's components setup as clusters it generates an impressive amount of services. These services aren't named consistently and their startup order and dependencies are not very clear. You can't rename them, so I decided to create some order from the chaos by modifying their descriptions instead. This has several benefits:

  • Hyperion services are grouped together if sorted on description
  • Hyperion services gets sorted in the order in which they should startup
  • You can add a more meaningful description

Since several servers needed to be modified a script was setup to perform this task. It can be run locally on the server or remotely by specifying a servername as parameter. It has been written in PowerShell, so it will run (and act) only on Windows servers.
Also, in our environment, HFM, FDM, Reporting & Analysis and Financial Reporting are running separately from Planning and Essbase so the descriptions reflect this. You may want to change descriptions to suit your own situation.

# Name           : Set_Services.ps1
# Purpose        : Change description of Hyperion services and set them to manual. Sorting the services by description
#                  will group the Hyperion services and sort them according to their order of startup.
# Parameter     : Servername - optional, default: localhost
# Dependencies    : None
# Author         : P. da Graça
# Remark         : Edited with Notepad++, layout maybe off in other editors
#
# When            Who                What
# 05-02-2014    PdaGraca        Initial setup in PowerShell

# optional servername as a parameter to act on remote server. Default is local server.
Param([Parameter(Mandatory=$false)][string]$servername="localhost")

# first set up a hash table with service names as keys and descriptions as values. N.B. these are SERVICE names,
# not DISPLAY names! Change descriptions as needed. Use wildcards if servicenames contain EPM instance or other
#
variable values (see 02, 07 & 99), but make sure only one unique service gets selected. Script does not handle
# multiple services simultaneously!
$hyperion_services = @{
                        "HyS9AdminServer"                                = "Hyperion 01 - Weblogic Administration Server";
                        "OracleProcessManager_ohsInstance*"                = "Hyperion 02 - Oracle HTTP Services";
                        "HyS9FoundationServices"                        = "Hyperion 03 - Foundation Services (WorkSpace, Shared Services)";
                        "HyS9CALC"                                        = "Hyperion 04 - Calculation Manager";
                        "HyS9aps"                                        = "Hyperion 05 - Analytic Provider Services";
                        "Hyperion Studio Service BPMS bpms1"            = "Hyperion 06 - Essbase Studio Server";
                        "opmn_EPM_epmsystem*"                            = "Hyperion 07 - Essbase Server";
                        "HyS9eas"                                        = "Hyperion 08 - Essbase Administration Services";
                        "HyS9Planning"                                    = "Hyperion 09 - Financial Planning Web Application";
                        "Hyperion RMI Registry"                            = "Hyperion 10 - Financial Planning RMI Registry";
                        "Hyperion S9 Financial Management DME Listener"    = "Hyperion 04 - Financial Management DME Listener";
                        "Hyperion S9 Financial Management Service"        = "Hyperion 05 - Financial Management Application Service";
                        "HFMWebServiceManager"                            = "Hyperion 06 - Financial Management Web Service";
                        "HyS9RaFrameworkAgent"                            = "Hyperion 07 - Reporting and Analysis Framework Agent";
                        "HyS9RaFramework"                                = "Hyperion 08 - Reporting and Analysis Framework Web Application";
                        "HyS9FRReports"                                    = "Hyperion 09 - Financial Reporting Web Application";
                        "HyS9FRPrint"                                    = "Hyperion 10 - Financial Reporting Print Service (Generates PDF, batch, and scheduled job output)";
                        "HyS9FDMTaskManagerSrv"                            = "Hyperion 11 - Financial Data Quality Management Task Manager (Provides the ability to schedule FDM tasks.)";
                        "Oracled_oracle_middle*"                        = "Hyperion 99 - Configuration Manager";
                        }

ForEach ($entry in $hyperion_services.GetEnumerator())                                # loop through all keys (service names) in the hash table
    {
     $servicename=$entry.name                                                        # assign key to service name
     $description=$entry.value                                                        # assign value to service description
     $service=(Get-Service -computerName $servername -Name $servicename -ErrorAction SilentlyContinue) # check if service exists
     If ($service)                                                                    # if yes
        {
         $servicename=$service.name                                                    # assign definite servicename in case of wildcards
         $service_properties=(Get-WmiObject -ComputerName $servername -Class Win32_Service -Property StartMode -Filter "Name='$servicename'") # get service properties
         If ($service_properties.Startmode -eq "Automatic"){$service_properties.StartMode = "Manual"} # set to manual if it's automatic
         Set-Service -ComputerName $servername -Name $servicename -Description $description # set description
        }
    }

Result on the server:


All Hyperion services grouped together and sorted by startup order.