Thursday, December 5, 2013

Cannot getVersions. Error while processing AppParameters in SOAP Header: AppParameters does not exist in SOAP Header.

+---------------------------------------------------------------------------+
General Ledger: Version : 12.0.0

Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.

GLDRMLDR module: Load Segment Values and Hierarchies
+---------------------------------------------------------------------------+

Current system time is 04-DEC-2013 16:16:48

+---------------------------------------------------------------------------+

2013.12.04 16:16:53:-- Initializaing Load Segment Values and Hierarchies program ...
2013.12.04 16:16:53:-- Request ID =6365737
2013.12.04 16:16:53:-- Value Set =COMPANY_CODE
2013.12.04 16:16:53:-- Fetching DRM profile options values ...
2013.12.04 16:16:53:-- Profile: GL_DRM_VALUE_SET_PROP ==> OracleGL.ValueSet
2013.12.04 16:16:53:-- Profile: GL_DRM_VER_EXPORT_PROP  ==> OracleGL.AllowExport
2013.12.04 16:16:53:-- Profile: GL_DRM_HIER_EXP_PROP ==> OracleGL.AllowHierExport
2013.12.04 16:16:53:-- Profile: GL_DRM_VER_EXPORT_DEFN ==> EBSValueSetExport
2013.12.04 16:16:53:-- Profile: GL_DRM_HIER_EXPORT_DEFN  ==> EBSHierarchyExport
2013.12.04 16:16:53:-- Profile: GL_DRM_WSDL_URL ==> http://server:9000/oracle-epm-drm-webservices/DrmService?wsdl
2013.12.04 16:16:53:-- Profile: GL_DRM_API_URL  ==> http://server:5240/Oracle/Drm/APIAdapter
2013.12.04 16:16:53:-- Profile: GL_DRM_USERNAME ==> user
2013.12.04 16:16:53:-- Scanning DRM for version to Export...
2013.12.04 16:16:57:-- oracle.apps.gl.drm.ws.DrmWSClient.getVersions(): Event payload -
<drm:getVersions xmlns:drm='http://drm.webservices.epm.oracle'/>
2013.12.04 16:16:57:-- Unexpected Error -> oracle.apps.gl.drm.ws.DrmWSException: Exception when Invoking Web Service -> oracle.apps.fnd.wf.bes.InvokerException: javax.xml.rpc.soap.SOAPFaultException: Cannot getVersions. Error while processing AppParameters in SOAP Header: AppParameters does not exist in SOAP Header.
oracle.apps.fnd.wf.bes.EventDispatcher.executeSubscription(EventDispatcher.java:891)
oracle.apps.fnd.wf.bes.EventDispatcher.processSubscription(EventDispatcher.java:556)
oracle.apps.fnd.wf.bes.EventDispatcher.dispatch(EventDispatcher.java:335)
oracle.apps.fnd.wf.bes.BusinessEvent.raise(BusinessEvent.java:1819)
oracle.apps.gl.drm.ws.DrmWSClient.raiseInvokerEvent(DrmWSClient.java:531)
oracle.apps.gl.drm.ws.DrmWSClient.getVersions(DrmWSClient.java:480)
oracle.apps.gl.drm.util.DrmLoader.scanDRMVersions(DrmLoader.java:348)
oracle.apps.gl.drm.util.DrmLoader.runProgram(DrmLoader.java:133)
oracle.apps.fnd.cp.request.Run.main(Run.java:157)
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+


If you see error like above, it is most likely because missing patch. make sure below batches are applied and re-test.
Patch set 11659733:R12.GL.B and Pre-req: 10632813:R12.OWF.B

Wednesday, November 20, 2013

Object reference not set to an instance error when opening a hierarchy.

This happens if you have included custom properties in hierarchy property "user display property" and one/many of these properties were deleted. Just update this property value and remove any properties that were deleted.

Friday, November 15, 2013

Script Formula to find distict values from all the children of a node.

/*
This formula tries to find list of all the distinct property values for all the children of a parent node.
it helps to identify nodes that have different children with different property values.
*/

var cprt;
var childEnumerator = node.GetChildEnumerator();
while(childEnumerator.MoveNext()) {
    var propValue = childEnumerator.GetCurrent().PropValue("Custom.CPRTSchedule");
       if(cprt == null)
           cprt=propValue;
   
var re=new RegExp(propValue);
    if( re.test(cprt)==false)
         cprt=cprt+","+propValue;
   
}
if(!cprt)
    return(node.PropValue("Custom.CPRTSchedule"));
return cprt;

Tuesday, November 5, 2013

There are currently no applications available for login DRM Webclient cannot connect to application.

Had tough time isloating the issue and resolving it. we were getting this error inspite of drm services and engines up and running. no issues with IIS, Database, DRM, windows etc but still drm web client would not connect.

At last was able to get it up and running with the below changes. I dont say this is the fix for the issue, but it might help if you are facing a similar problem.



  1.  Start IIS Manager
  2. Goto IIS->Application Pool->drm_pool
  3. Click Advanced properties and Click on Identity under Process Model section.
  4. Change the Built-in account from NetworkSerivce to LocalSystem. Click OK and go back to main interface (Application Pool)
  5. Recycle Application Pool (Click the recycly button on the right)
  6. Restart DRM Application. Now test if it works.

If above did not resolve then try these

  1. Create a new windows user. e.g. DRM_ADMIN (local system )
  2. add the user to Administrator group.
  3. click 

Security Policy - DRM WebServices

Tip: Everytime you make a change to security policy, make sure you restart shared services. preferabally restart both shared services and web logic.

I learnt it the hard way! :-)

Tuesday, October 29, 2013

Access DRM Application on Virtual Box (Guest) from local (host) system.

Here are instructions to setup port forwarding so users can access application hosted on virtual box from their local system.

  1. Click Settings -> Network -> Port Forwarding
  2. Click Add (+) icon to create a new rule.
  3. Enter the Application Name, Protocol,Host Ip,Host Port,Guest Ip,Guest Port. check the screen shot below (i ignored host and guest ip).
  4. now just point to the application/url from your local pc and you should be able to access it.

Monday, October 28, 2013

Check DRM Application Status - vbscript

Here is a small vbscript that can be used to check if DRM Application is up and running, this will come handy if for any reason you want to check if application is up and may be kick off exports form batch utility. Or may be use this to notify support team whenever the application is down.

1. Create a text file with extension vbs. e.g. Check_Application_Status.vbs
Note: In the example i'm only checking for Engines,Services, Process Manager and netjnibridge. If you want you can include DRM-api-Adapter and event-host.
--- Here is the vbscript code ---
set service = GetObject("winmgmts:")
i=1
cnt=0
for each Process in Service.InstancesOf("Win32_Process")
If Process.Name="drm-engine.exe" Then
i=i+1
if i=2 then
cnt=cnt+1
end if
ElseIf Process.Name="drm-process-manager.exe" Then
cnt=cnt+1
ElseIf Process.Name="drm-service.exe" Then
cnt=cnt+1
ElseIf Process.Name="drm-netjnibridge-host.exe" Then
cnt=cnt+1
End If
Next
If cnt >=4 Then
Wscript.Quit(0)
Else
Wscript.Quit(1)
End If
--- end of the vbscript code --- --- Batch File to call the vbscript ---
cscript Check_Application_Status.vbs
GoTo %ERRORLEVEL%
:0
echo Drm Services are up and running.
goto End
:1
echo DRM services are down. Please Restart.
goto End
:End
--- End of Batch File ---

Friday, October 25, 2013

DRM-12405: The TimeZoneID parameter name passed with the session is not supported: Central Standard Time (Mexico)

This error generally indicates the time zone between your database and operating system are not the same.
check the database timezone and update it or change the time on your operating system. either way make sure they both are on the same timezone.

SELECT SESSIONTIMEZONE FROM DUAL;

SELECT current_timestamp FROM DUAL;


SELECT dbtimezone FROM DUAL;

Wednesday, October 23, 2013

Controlling Hierarchy

What is Controlling Hierarchy and why do i need it?

Controlling Hierarchy plays its role for Global Inherited Properties. It lets DRM find its way to look for ancestors of the node and fetch the value.

Try the following to understand how it works.

1. Create a global inherited properties

G_I_CH  -> Global Inherited Property which will have Controlling Hierarchy set.

2. Create Following Hierarchies

Hierarchy: World
World
USA
CANADA
INDIA

Hierarchy North America
North America
USA
CANADA

Hierarchy Asia
INDIA

3. Check the value of both the properties, currently they should be NULL,

4. Update both the property values for Hierarchy: World
e.g. World (Top Node)->G_I_CH=100

5. Check the values of USA,CANADA and INDIA in Hierarchy World, They should have inherited the values.

6. Check the values of USA,CANADA in hierarchy: North America

These still should be NULL because its parent North America (Top Node) does not have the value set.

7. Now Right Click on World Hierarchy and select Assign Control and select the property (G_I_CH).

8. Go back to North America Hierarchy and check the values, it should have been set to values from the World Hierarchy.

Here is a write up about Inheritance that should explain how it works.

Inheritance
Inheritance is a feature that enables high-level nodes to share their property values with lower
points in the hierarchy, eliminating the need to store and maintain redundant information. It
enables newly entered nodes to automatically obtain their property values from the appropriate
ancestors. Proper use of inheritance can greatly reduce data-entry requirements.
When defining a property, the system administrator can define the property as inheriting. This
definition enables the values for the property to cascade down to its descendants.
Inheritance moves through a specific chain of events to determine the value for a property:
1. Data Relationship Management looks for a value entered at the current node. If a user has
directly entered a value at the node, the entered value is used.
2. If a value does not exist, Data Relationship Management searches the ancestors of the node
for a value. The first entered value that Data Relationship Management finds, moving up
the hierarchy is used. Thus, a change to the properties of a node can affect any descendents.
3. If no ancestor has an entered value, the default value is used. A default value is assigned by
the system administrator.
Global properties that inherit follow a slightly different path. In step 2, as Data Relationship
Management moves up the hierarchy in search of an entered value, it encounters the ancestors
in the controlling hierarchy. When the system administrator creates a global property, a
controlling hierarchy must be designated for the property. A controlling hierarchy tells the
system which hierarchy to use to determine the inheriting value for a global property.
Many tools are available in Data Relationship Management for maintaining inherited values:
● Locking a value so that it cannot be overridden at a descendant
● Clearing all descendant values for a particular property
● Removing an overridden value so that the property inherits from a node above

Friday, October 18, 2013

Installing Foundation Services for DRM

I was having too much fun installing and configuring Foundation Services this week and would like to share some of my experiences. hopefully it will come handy for some of you out there.

Here is my setup

Windows 2008 64bit VMware Virtual Box.
Ram: 16g
CPU: Quard Code
Database: Oracle 11G

Constraints: 
1. Windows box on which DRM and Foundation services are being installed does not have internet connection.
2. McAfee Enterprise actively monitors all the processes and file access.

Hurdles:
It was a pain to install DRM because i was not able to download anything from internet. here is the list.
1. Internet Explorer Updates.
2. .NET 4 Framework (realized later that i could have used Server Manager to add the .NET Role).
3. Firefox (Just in case things didn't work on IE)

DRM Install:
After overcoming the hurdles DRM was installed sucessfully. 

Foundation Services:
Install of foundation services started smooth but then took for ever for the process to move a millimeter.
This was not supposed to happen so i started Monkeying around the process that was taking up cpu cycles and ram and notices about 25% of cpu was used by McAfee. now as any mokney would do, i jumped from task manager to McAfee on access status and Bazinga, it was intercepting each and every file installation process was accessing, not only that it actually blocked 16 files. 
so now i had left with no choice than to pause 'McAfee mshield' service and boom installation finishes within 2 minutes.
now that installation was successful i resumed 'McAfee' but it didn't stop there, it started the attack when i started extending WebLogic to deploy security poliy. so again i pause it and continued,
it all went smooth until 'extending domain' didn't like '_' (underscore) in the host name. it only complained but let me continue but at the end it did not extend/partially extended security policy.


Moral of the story:
Keep an eye on process that are keeping eye on your processes. (McAfee).
Stop and resolve any issues/dependencies if process complains.


Monday, September 30, 2013

4mb limit on DRM local client uploads

4mb limit on DRM local client uploads

DRM puts a 4mb limit restriction on loading a file from local system. It expects users to load larger files from the server. however it may not always be possible for us to get access to server. Here is a small tip to fix it.
1. create a shared folder on your local pc.
2. grant read/write access to the folder.
3. create an external connection in drm and point it to this folder, using the local pc IP address or the computer name.
e.g.
\192.168.1.100\sharedfolder
\mypcname\sharedfolder

Hierarchy and Node URL in DRM 11.1.2.2

Hierarchy and Node URL in DRM 11.1.2.2

This can be achieved by configuring the Web Farm on the configuration console. this is what you have to do.
  1. Start Configuration Console and click on Host Machines Tab -> UI Web Servers -> Web Farm
  2. Enter the following
    1. Host Name: localhost (or name of the server where DRM is installed).
    2. Port: 80 (Default)
    3. Path:/drm-web-client (default)
  3. Click on the Test Url to make sure its working.
  4. Click on Save Configuration. (You may have to restart the application if it doesnt work the first time).
  5. Open your version->hierarchy. You should now see the Hierarchy Url property value populated.
  6. You should also be able to get the url for any node within the hierarchy.
Hope it helps

Sunday, September 29, 2013

Configuration Console Error

This error generally means two different users are trying to open the configuration console.

Fix: make sure one user exits from the console before others can open.

Check DRM Application Status

 
Here is a small vbscript that can be used to check if DRM Application is up and running, this will come handy if for any reason you want to check if application is up and may be kick off exports form batch utility. Or may be use this to notify support team whenever the application is down.

1. Create a text file with extension vbs. e.g. Check_Application_Status.vbs
Note: In the example i'm only checking for Engines,Services, Process Manager and netjnibridge. If you want you can include DRM-api-Adapter and event-host.

--- Here is the vbscript code ---
set service = GetObject("winmgmts:")
i=1
cnt=0
for each Process in Service.InstancesOf("Win32_Process")
If Process.Name="drm-engine.exe" Then
   i=i+1
   if i=2 then
      cnt=cnt+1
   end if
ElseIf Process.Name="drm-process-manager.exe" Then
   cnt=cnt+1
ElseIf Process.Name="drm-service.exe" Then
   cnt=cnt+1
ElseIf Process.Name="drm-netjnibridge-host.exe" Then
   cnt=cnt+1
End If
Next
If cnt >=4 Then
   Wscript.Quit(0)
Else
   Wscript.Quit(1)
End If
--- end of the vbscript code --- --- Batch File to call the vbscript ---
cscript Check_Application_Status.vbs
GoTo %ERRORLEVEL%

:0
echo Drm Services are up and running.
goto End

:1
echo DRM services are down. Please Restart.
goto End

:End

--- End of Batch File ---


hope it helps.

What's New in Version 11.1.2.1



Oracle Hyperion Data Relationship Management, Fusion Edition V.11.1.2.1 Release Highlights

Web 2.0 Interface: A new Web client provides access to the complete feature set of a Data Relationship Management application through a Web browser. It combines the functionality previously available in the desktop client and the Web Publishing casual user client into a Web 2.0 rich Internet applications experience. Presentation of data and access to features has been enriched to improve ease of use without compromising the power user experience of a desktop client.
Unicode Support: Unicode support allows the use of multi-byte character sets (MBCS) to handle multiple languages at the same time. Unicode support is available for user-defined metadata and data. Internationalization of date and float data types based on a user's locale is also included.
Role-based Security: Role-based security controls access to data and Data Relationship Management features. Multiple roles can be assigned to a user, allowing them to perform certain higher-level functions without giving them complete higher-level access. Security administration is now segregated from metadata administration to align with corporate policies that require this level of separation of duties. A new anonymous user role has been added to create tailored "read-only" views for different segments of casual business user audiences.
Multiple Applications, Single Server: Separate Data Relationship Management applications can operate on the same server to enable customers to physically segregate and independently manage different instances without requiring additional hardware or virtualization software. Different business groups are able to administer the metadata and data within their own applications without any impact to any other application.
External Connections: Administrators can set up common connections to external network resources that can be shared by all users. Imports and exports can directly access external connections instead of requiring a manual upload/download by a user. Centralized management of connections helps minimize maintenance of connectivity to network resources, particularly for migration scenarios across environments.
Coarse-grain Services: A new Java web service API provides improved interoperability with other Oracle Middleware and third-party Service-Oriented Architecture (SOA) applications. Policy management and message protection are now available using Oracle Web Services Manager.
Single Sign On: Data Relationship Management supports single sign-on using Oracle Access Manager. Single sign-on is available through the Data Relationship Management web user interface and web service API.
64-bit Support: 64-bit support is available for the web and application servers for Data Relationship Management. This includes certification for 64-bit Windows operating systems as well as increased memory addressability on the application server.
Workflow Development Kit: The Workflow Development Kit (WDK) enables the extended business user community to participate in master data governance processes via human workflows that allow them to create, modify, and approve changes prior to being applied to production data. The WDK provides a flexible, standards-based foundation to assist with the creation and deployment of a workflow-oriented solution built on Oracle Fusion Middleware 11g. The 11.1.2 release offers improved reusability and easy customization of components to meet customer-specific requirements.

This information has been copied from Oracle Website. All credit goes to Oracle.

Using Node Access Group with Primary and Alternative Hierarchies.




Requirement: Allow user to add/modify nodes only in alternative hierarchy. User should not be allowed to make changes to data from Primary Hierarchy directly/indirectly.

Solution:
1. Create a Node Access Group -> PrimaryRead.
2. Assign this NAG (Node Access Group) to the User.
3. Assign the same NAG to Primary Hierarchy with 'Read'.
4. Create another Node Access Group -> AlternativeWrite
5.Assign the NAG to user. 
6.Assign the NAG to Alternative Hierarchy with 'Add'.

Performance Tip


Performance Tip: Do not overload the application engines. If they get overloaded the entire application can stop. You'll have to restart the application.
This can happen even if your server's CPU and RAM is extreamly under used. The issue is more on DRM side.

Here are some reasons that will overload your application.

1. Running Large Action Scripts/Creating As of Versions/Saving a large version, Blending, Importing. In fact any large Write operations will put more load as there is only one write engine.
in such cases try to perform only one of these tasks at a time.

2. Running many exports at the same time. This may fail the exports with error like 'Unable to find Job # xxx'. Try to limit the number of exports you run simultaneously

Roles and Responsibilities

The below link tries to help you understand the roles and responsibilites in DRM.

Roles and Responsibilities

Derived Property Tip

Tip: A Derived Property that references to a local property value should always be created as a Global Derived Property. e.g. Top_Node_Level deriving PropValue(Core.Level) , then Top_Node_Level should be Derived Local.

New Feature Terms

Action Script Example

This document describes how to use action script.

Assumptions:

Version Name: Zions_09_2013
Hierarchy Name: Accounts






  1. Open your browser and visit DRM web client url. e.g. http://localhost/drm-web-client OR http://servername/drm-web-client

  1. Click Script link

  1. Click on Browse button and select the action script file.
    1. Make sure the delimiter used in the file matches the delimiter in the action script screen.
    2. Click Load button to load the action script file.
    3. You should now see the file contents at the bottom section.
    4. Click on the green triangle button to run the script.
    5. You should see the results of execution at the bottom. Any errors will be displayed.