Dayalan Punniyamoorthy Blog

Wednesday, March 20, 2024

Issues and fix - Loading MS SQL data using EPM Integration Agent!

At a high level we know to connect to SQL Server using JDBC in the EPM Integration Agent, you need to follow these general steps:



Download the JDBC Driver: First, you need to download the Microsoft JDBC Driver for SQL Server from the official Microsoft website. Make sure to choose the appropriate version of the driver that matches your SQL Server version and Java version.

Install the JDBC Driver: Once downloaded, extract the JDBC driver files from the downloaded package and place them in a location accessible to your EPM Integration Agent. This could be a directory on your system or within the EPM Integration Agent's installation directory.

Thursday, February 8, 2024

Groovy rule to perform an action depends on the selected Scenario in the RTP!

This time, A different scenario was accomplished using the Groovy by one of my teammates. I thought of sharing here.

The requirement is to populate the Long-range planning and the rule will perform an action if the OEP_Plan (budget) is selected in the RTP and a different action if OEP_Actual (actual) is selected in the RTP.

Monday, December 18, 2023

Add a New row to enter data for a New Product or a Customer - Using Groovy Part 2

 In the Part -1  we saw how to add a new row for a New Product or a Customer using the Calculation Manager rule. In this post, we will see how to do the same using the Groovy rule. 

This is the data from where add a row option is enabled,


Column A is hidden and the rest of the column will be visible.


The actual form is shown below, 

Monday, November 13, 2023

Add a New row to enter data for a New Product or a Customer - Part 1

 In this blog, let's discuss how to address the requirements of entering data into a New Product or a Customer in a Data From exists in the PBCS or EPBCS application where the Suppress missing data for Rows or Suppress Missing data for Columns are enabled. Or the data does not exist for that combination but the users want a provision to enter the data for that specific combination. 

During the Budget or the Forecast, the users might want to enter data for a combination that never had any historical data. 

It is a general best practice the Data Forms will be enabled with the following,

  • Suppress missing data - Rows
  • Suppress missing data - Columns


Wednesday, May 31, 2023

Leveraging & Introduction to Oracle OCI for Oracle EPM suite components - Part 2

Continuation of my Part-1 post

Kubernetes, also known as K8s, is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. It provides a robust framework for managing clusters of containers across multiple hosts, allowing organizations to efficiently run and scale their applications.

Tuesday, May 30, 2023

Leveraging & Introduction to Oracle OCI for Oracle EPM suite components - Part 1

In this blog series i am going to talk about my fun project which is leveraging Oracle OCI to connect to Oracle EPM and invoke EPM components to perform multiple compute/analytical operation using the REST API.





Before that we see a brief introduction to Oracle OCI.


Introduction to Oracle OCI



Global Infrastructure:

 Example: An e-commerce company wants to expand its operations to the Asia Pacific region. Oracle OCI offers multiple data centers strategically located in countries like Singapore, Australia, and Japan. The company can choose to deploy its application in the Singapore data center to serve customers in that region. By doing so, they can take advantage of the low-latency network connectivity between the data center and the end-users, resulting in faster response times and an improved user experience.

Compute Services:

Example: A software development company is working on a project that requires high-performance computing capabilities. They can utilize OCI's compute services, such as the VM.Standard.E3 shape, which provides a high CPU-to-memory ratio. This instance shape is suitable for CPU-intensive workloads, such as scientific simulations, rendering, or machine learning. By leveraging this shape, the company can allocate more computing power to their application and achieve faster processing times.

Networking:

Sunday, May 28, 2023

Restoring the Out of Box artifacts for the EPBCS modules!

It happened that some of the module-based artifacts were missing/accidentally deleted and we were finding a way to restore them.

As a user of Oracle Enterprise Performance Budgeting and Planning Cloud Service (EPBCS), you may want to restore the out-of-box artifacts that were delivered with your EPBCS instance.

In this blog, we will see how to systematically restore artifacts related to the EPBCS module's process of restoring the out-of-box artifacts for the EPBCS modules.

Sunday, May 7, 2023

EPBCS Groovy Rule series-2, One rule for multiple Data forms do the calculation!

In this second part of the blog, let's explore how to reuse the same Calculation Manager Groovy rule by attaching the rule to multiple data forms to perform different actions in each data form.

The Groovy Calculation Manager rule is dynamic, it gets the account member from the data form, and depending on the selected account member the rule will perform a specific calculation. 




We can use the same rule and attach it to multiple Data forms. 

Let's see how the rule looks,

// Capture the edited periods and products
Set<String> editedMembers = []
operation.grid.dataCellIterator({DataCell cell -> cell.edited}, MemberNameType.ESSBASE_NAME).each { DataCell cell ->
        //editedMembers << cell.periodName << cell.getMemberName("Product")
        editedMembers << cell.periodName << cell.getMemberName("Years") << cell.getMemberName("Product") << cell.getMemberName("Customer")
    }
if(editedMembers.size() == 0){
    println("No edited cells found!")
    return;

Thursday, May 4, 2023

EPBCS Groovy Rule series-1, Focused calculation based on the selected account!

This blog post will demonstrate how to carry out a targeted calculation using the accounts you've chosen from the Data Form's Page.


Product and Customers on the Rows, on the Data Form.

The Data Form allows for the selection of a single account from a group of accounts in order to perform the calculation. A specific calculation will be performed depending on the account chosen by the members on the POV and on the Page of the Data from the rule related to the Data Form.

Really neat and effective, huh?

Let's look at the Calculation rule that makes this possible.

Wednesday, November 16, 2022

Calling Data Management Rule from Calculation Manager rule using Groovy!

null

This was always a special request from multiple customers Can I run Data Management rules from a form?  For quite a while the answer was sorry you cannot. But with Groovy + Calculation Manager you can do that. Yes, you can call the Data Management rule from a Calculation manager rule and attach the Calculation Manager rule to a Menu and attach that Menu to the Form, so the users can run them when needed.

The next question is if the User id is not an Admin user, will he be still able to run the Data Management rule. As per the Oracle EPM security setup you cannot.

But you can overcome this by using Connections either by using On Demand Connections or Named Connections.

A Brief intro on when to use when, (from the Oracle document)

In general, connections can be created in one of two ways:

On-demand connection

  Connection connection = connection(http://server:port/HyperionPlanning/rest/v3/applications/Vision, "user", "password")
These connections are easy to change and are great for prototyping and trying out connections.

Named connection

  Connection connection = operation.application.getConnection("Job Definitions")
These connections allow clean separation between resource details and usage. This has multiple benefits over on-demand
connections including:

  • Ease of maintenance - Reuse a connection definition in multiple scripts. Any changes to the definition will automatically apply to all scripts using the named connection.
  • Enhanced security - with on-demand connections, confidential information such as passwords and API keys are visible to anyone who can edit the Groovy script. With named connections, sensitive information can be encrypted and stored securely and cannot be seen or retrieved by Groovy scriptwriters.
  • Ease of use - simplifies the creation of connections to first-party resources such as Oracle Cloud Services.

Monday, September 5, 2022

Invoking REST API via Groovy program outside of EPM Cloud – Authentication to EPM Cloud Part-2



This post is the continuation of the previous one where I explained how to read the User ID, Password, etc.. from a file in the Groovy Program. So the file containing the  User ID, Password, etc.. is a central repository where you need to change it only once.

In this post, I will extend that feature by using the encoding/decoding methods to encode the password and decode it wherever needed. So the password Is not exposed anywhere and no security breach of storing the password in a file or a program.

Let me divide this post into two parts

  1. Encode the Oracle EPM authenticating Password using a Secret Key.

Kindly note I have used the AES encryption algorithm to encrypt the password.