Sunday, December 6, 2015

Oracle Planning and Budgeting Cloud Services FAQ


Oracle PBCS offers mainstream Planning applications as cloud services based on the industry standard Hyperion Planning with below components.
  • 11.1.2.3+ Code line Hyperion Planning
  • Calculation Manager
  • FDMEE for data integration via flat file
  • Financial Reports - Studio deployed locally accessing servers over HTTP/HTTPS
  • Smart View - Deployed locally accessing servers over HTTP/HTTPS
  • Includes Essbase ASO based reporting managed by the planning server
Here is the link for Oracle Planning and Budgeting Cloud Services FAQ
https://cloud.oracle.com/en_US/faq?subcatID=1383678917046

   Oracle Hyperion Planning Deployment Options


















      Hyperion Planning Functionality Comparison



















 Here is the link from OTN tutorials for

Data Loading with FDMEE in Oracle Planning and Budgeting Cloud


Saturday, August 4, 2012

Block Creation Issue–How Essbase Thinks

Hi,

I have written many calcs in the Essbase for as many different business cases with different volumes up to 100 gigs  . Most challenging issues that I have faced in the Essbase world of calculations w.r.to data integrity or performance somehow directly or indirectly related to block creation issues.
So I would like to bring some of experiences in this regard into this article on this cloudy Hyderabad Saturday evening.

First we will see when the blocks are created:


Data Load-- datablocks are created when data is loaded to sparse member combinations hat did not previously exist. The blocks are created upon input whether loaded using a source file and load rule or loaded from a spreadsheet using lock and send.

Sparse Rollup-- data blocks are created when sparse dimensions are rolled up as specified in the outline using a CALC ALL, CALC DIM or other calculation function.

Datacopy-- datablocks are created when the DATACOPY command is executed in a calc script.

Member Formula-- datablocks may be created under certain circumstances as a result of a member formula. eg: Bud=Act+Act*0.1                                                                                                                                                                                                                                                 This functionality is enabled when the Create Blocks On Equations checkbox is checked in the Calculation Group of the Database Settings dialog or SET CREATEBLOCKONEQ ON/ SET CREATENONMISSINGBLK ON in the calc script.

--- First three cases blocks are created natural with no effort. And the fourth one is troublesome and this whole conversation is all about.

Why we are worried about this?

 1) Logic seems good. Code seems good. But it will create severe data integrity issues.
 2) Some times it will not be found in the testing also.
 3) A change which was implemented in the middle of the year works good till Dec and suddenly it  will  create issue in Jan as the year got changed. (In a case where period is dense and year is sparse)
 4) Complex matter in Essbase to digest and handle even for the Consultants who had deep experience and understanding of Essbase.
 5) Performance will become very worse If we apply the known remedies as a safety measure in all the possible cases with out identifying the existence of issue.  

What Essbase DBAG says:


Constant Values
You can assign a constant value to a member: Florida = 120;
In this formula, California is a member in a sparse dimension and 120 is a constant value. Analytic Services automatically creates all possible data blocks for California and assigns the value 120 to all data cells. Many thousands of data blocks may be created.

--- This is also clear. No Issues in this point also.

Non-Constant Values
If you assign anything other than a constant to a member in a sparse dimension, and no data block exists for that member, new blocks may not be created unless Analytic Services is enabled to create blocks on equations.

For example, to create blocks for West that didn’t exist prior to running the calculation, you need to enable Create Blocks on Equations for this formula:
Florida = “New York” + 120;

You can enable Create Blocks on Equations at the database level whereby blocks are always created, or you can control block creation within calculation scripts.

Will study this in detailed
Sample/Basic (Most Popular and Favorite) is the cube for our study.
We all know what’s dense and what’s sparse in this cube.
Dense: Measures, Year and Scenario | Sparse: Market and Product

Have loaded the sample data calcdat.txt and cleared the blocks for Folrida using the below calc.
//ESS_LOCALE English_UnitedStates.Latin1@Binary
Fix(Florida)
ClearBlock All;
Endfix

After that below is the snapshot of data where all the blocks for Florida got cleared.

image

See below that Global Database setting “Create blocks on equations” set to Off. (This is the default).
image

We will write a calc to calculate the data for Florida from that of New York with out Create blocks on equations turned on in the calc.
//ESS_LOCALE English_UnitedStates.Latin1@Binary
Fix(Actual)
Florida="New York"+120;;
Endfix

This calc should not work as defined in the DBAG as there is no blocks for Florida.
Run this calc and see the results. Surprisingly we can see the results as per the calc logic.
image

Is this constant value (120) is making magic even in the formula.
Clear again the blocks for Florida.
image

Will write a calc with formula with two non constant operands and explicitly turn off the create blocks on equations in the calc.
//ESS_LOCALE English_UnitedStates.Latin1@Binary
SET CREATEBLOCKONEQ OFF;
Fix(Actual)
Florida="Utah"+"West";
Endfix
Run this calc and see the results. Calc is done again.
image

Is the block creation issue a myth? Shall we conclude there is no block creation issue?

No. No. It is there and it should be there. Otherwise we don’t have any work.
Will clear again and rewrite the calc with dense member formulae for the target of Florida where blocks doesn’t exists.

//ESS_LOCALE English_UnitedStates.Latin1@Binary
Fix("Actual","Florida")
"Sales"="Utah"->"Sales" + 120;
"COGS"="Utah"->"COGS" + 120;
Endfix
Sales and COGS for Florida are expected to be calculated from that Utah. Nothing calculated here.

image

Happy to see that Block creation issues is there. What happened?

By default, Essbase applies dense-member formulas only to existing data blocks. As there exists no blocks for Florida, no calculation happened here.
How this can be resolved? By updating the calc with SET CREATENONMISSINGBLK ON.

//ESS_LOCALE English_UnitedStates.Latin1@Binary
SET CREATENONMISSINGBLK ON;
Fix("Actual","Florida")
"Sales"="Utah"->"Sales" + 120;
"COGS"="Utah"->"COGS" + 120;
Endfix
Issue resolved. Calculation is done.
image

What the SET CREATENONMISSINGBLK ON will do?

SET CREATENONMISSINGBLK ON enables Essbase to create potential blocks in memory where the dense-member formulas are performed. Of these potential blocks, Essbase writes to the database only blocks that contain values; blocks resulting in only #MISSING are not written to the database.
In order to create new blocks, setting SET CREATENONMISSINGBLK to ON requires Essbase to anticipate the blocks that will be created. Working with potential blocks can affect calculation performance.
The Create Blocks on Equations setting is ignored when this setting turned on.

Is this good or any issues with this?

It will create potential blocks in memory even though it will write and store only the non missing blocks after calculation. This is a very resource intensive algorithm that will hamper the performance of the calc.

Better approach is to rewrite this as a sparse member formula.

//ESS_LOCALE English_UnitedStates.Latin1@Binary
SET CREATEBLOCKONEQ OFF;
SET MSG SUMMARY;
Fix("Actual","Sales", "COGS")
"Florida"="Utah"+ 120;
Endfix
Clear the blocks again and run this calc.
With SET CREATEBLOCKONEQ OFF, this calc should not work. But the results are fine exactly matching with that of dense formula by SET CREATENONMISSINGBLK ON.

image

As per Essbase DBAG, Essbase will not create a block when a formula assigns a non-constant value to a sparse dimension member for which no block exists with SET CREATEBLOCKONEQ OFF.

Will see the application log
[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1200481)
Formula for member [Florida] will be executed in [TOPDOWN] mode

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1012668)
Calculating [ Market(Florida)] with fixed members [Measures(Sales, COGS); Scenario(Actual)]

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1012672)
Calculator Information Message:

Maximum Number of Lock Blocks: [100] Blocks
Completion Notice Messages: [Disabled]
Calculations On Updated Blocks Only: [Enabled]
Clear Update Status After Full Calculations: [Enabled]
Calculator Cache: [Disabled]

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1012677)
Calculating in serial

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1012672)
Calculator Information Message:

Total Block Created: [0.0000e+000] Blocks
Sparse Calculations: [1.8000e+001] Writes and [7.2000e+001] Reads
Dense Calculations: [0.0000e+000] Writes and [0.0000e+000] Reads
Sparse Calculations: [0.0000e+000] Cells
Dense Calculations: [0.0000e+000] Cells

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1012579)
Total Calc Elapsed Time for [CALF0.csc] : [0.144] seconds

[Sat Aug 04 14:53:59 2012]Local/Sample/Basic/admin@Native Directory/8168/Info(1013274)
Calculation executed


See from the log, Formula calculation is happening in Top-Down for Florida.
Essbase uses one of two calculation methods to do a full calculation of a database outline: bottom-up calculation or top-down calculation. By default, Essbase does a bottom-up calculation.
If the database outline contains a complex member formula, Essbase performs a top-down calculation for the relevant member.

Will Force the Formula bottom up and see the results again.
//ESS_LOCALE English_UnitedStates.Latin1@Binary
SET CREATEBLOCKONEQ OFF;
SET FRMLBOTTOMUP ON;
SET MSG SUMMARY;
Fix("Actual","Sales", "COGS")
"Florida"="Utah"+ 120;
Endfix
Clear again the blocks for Florida and run this calc. See nothing is done. No blocks created even for the sparse member formula.

image

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1012668)
Calculating [ Market(Florida)] with fixed members [Measures(Sales, COGS); Scenario(Actual)]

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1012672)
Calculator Information Message:

Maximum Number of Lock Blocks: [100] Blocks
Completion Notice Messages: [Disabled]
Calculations On Updated Blocks Only: [Enabled]
Clear Update Status After Full Calculations: [Enabled]
Calculator Cache: [Disabled]

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1012677)
Calculating in serial

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1012672)
Calculator Information Message:

Total Block Created: [0.0000e+000] Blocks
Sparse Calculations: [0.0000e+000] Writes and [0.0000e+000] Reads
Dense Calculations: [0.0000e+000] Writes and [0.0000e+000] Reads
Sparse Calculations: [0.0000e+000] Cells
Dense Calculations: [0.0000e+000] Cells

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1012579)
Total Calc Elapsed Time for [CALF0.csc] : [0] seconds

[Sat Aug 04 15:01:24 2012]Local/Sample/Basic/admin@Native Directory/7628/Info(1013274)
Calculation executed


See the log. No Top-Down Calculation and no read and no write.

Turn on the Create Blocks on equation and see the results.
//ESS_LOCALE English_UnitedStates.Latin1@Binary
SET CREATEBLOCKONEQ ON;
SET FRMLBOTTOMUP ON;
SET MSG SUMMARY;
Fix("Actual","Sales", "COGS")
"Florida"="Utah"+ 120;
Endfix

image

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012668)
Calculating [ Market(Florida)] with fixed members [Measures(Sales, COGS); Scenario(Actual)]

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012672)
Calculator Information Message:

Maximum Number of Lock Blocks: [100] Blocks
Completion Notice Messages: [Disabled]
Calculations On Updated Blocks Only: [Enabled]
Clear Update Status After Full Calculations: [Enabled]
Calculator Cache: [Disabled]

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012672)
Calculator Information Message:

Create Blocks on Equations: [Enabled]
[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012677)
Calculating in serial

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012672)
Calculator Information Message:

Total Block Created: [3.6000e+001] Blocks
Sparse Calculations: [1.8000e+001] Writes and [3.6000e+001] Reads
Dense Calculations: [0.0000e+000] Writes and [0.0000e+000] Reads
Sparse Calculations: [0.0000e+000] Cells
Dense Calculations: [0.0000e+000] Cells

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1012579)
Total Calc Elapsed Time for [CALF0.csc] : [0.123] seconds

[Sat Aug 04 15:09:16 2012]Local/Sample/Basic/admin@Native Directory/6768/Info(1013274)
Calculation executed


Log shows - Create Blocks on Equations: [Enabled]. This helped in getting the calc done.

What SET CREATEBLOCKONEQ ON will do? What Technical Reference says?


If calculations result in a value for a sparse dimension member for which no block exists, Essbase creates a block. Sometimes, new blocks are not desired; for example, when they contain no other values. The Create Blocks on Equation setting is designed for situations when blocks would be created as a result of assigning something other than a constant to a member of a sparse dimension.

What actually it is? Which is better CREATEBLOCKONEQ/ CREATENONMISSINGBLK ?


This will create blocks if and only if the RHS expression can result in a value. Will create blocks automatically if the Sparse Formula calculation is default Top-Down with out Create Blocks on Equations: [Enabled].

Create Blocks on Equations should be enabled for the specific piece of calc having sparse member formula if the calc is globally forcing the formula bottom up or Essbase cfg setting CALCOPTFRMLBOTTOMUP set to TRUE to optimize the sparse calculations.

CREATEBLOCKONEQ/ CREATENONMISSINGBLK – Both these settings have the performance impact because of the processing overhead. But CREATEBLOCKONEQ is better compared to CREATENONMISSINGBLK as the earlier creates only the required blocks but the later creates potential blocks while calculating but store only the non missing blocks.  CREATENONMISSINGBLK  will have much impact on the calc performance.

Hope covered as much as I can. Feeling tired. Logging out here. Thanks.

Thursday, August 2, 2012

FDM - Interface to load data into Essbase

This article describes the interface development to load data into Essbase using FDM.

Technologies used in this article are
1) ORACLE database 11g
2) Hyperion Foundation Services 11.1.2.2
3) Hyperion Essbase 11.1.2.2
4) Hyperion Essbase Administration Services 11.1.2.2
5) Hyperion FDM 11.1.2.2
6) Essbase Excel Add-in 11.1.2.2

Preparation: Done the below preparatory work before proceeding with interface development.
1) Created a schema in Oracle Database as required to create a FDM application.
2) Modified the Sample/Basic application as FPLN/PNL with three additional dimensions Year, Version and Amt_Type. Renamed the Measures as Account.


Introduction: Spent a couple of hours before coming up with a sequence that keeps us in track of the interface development. After that every thing went cool.

The following steps outline the process for building a Hyperion FDM Interface to load data into an Essbase application:
Step 1: Create a new Hyperion FDM application
Step 2: Integrate the new application with the target system
Step 3: Populate the Hyperion FDM control tables
Step 4: Create the Hyperion FDM locations
Step 5: Import maps for each location
Step 6: Build import formats
Step 7: Test data loading
Step 8: Validate


clip_image002[4]
Flow Chart – To build an FDM interface for data loading.

Step 1: Create a new Hyperion FDM application

First step is to create a new FDM application.
Log onto Hyperion FDM using the <new application> option.
clip_image004

Enter the below details.
Application Name: ESSINT
Description: Essbase Integration
UNC path: \\WIN-OZCO68Q3T50\FDMData\
App Group: FDM
clip_image006

Enter the Database details:
OLEDB Provider: ORAOLEDB.ORACLE
Service: HYP001
Username: FDMESS
Password: xxxxxxxx

clip_image008

clip_image010

Step 2: Integrate the new application with the target system


Open the workbench and Login to the newly created application ESSINT
clip_image002

Import the Essbase Adaptor


clip_image004[4]

Browse to find the file ES11X-G4-J.xml and click Open.
clip_image006[4]
clip_image008[4]

Register Adaptor
clip_image010[4]

Browse to find the file named upsES11XG4J.exe and click Open.
clip_image012

Right Click on the Adaptor and Select Configure.
In the Machine Profiles Tab - Enter the Source and Target Machine details.
Here it is : WIN-OZCO68Q3T50
In the Hyperion Essbase Integration Tab - Enter as below
Essbase Application Name: FPLN
Essbase DB Name: PNL
Logon Method: Select 2-Global
Username: hypadmin
Password:xxxxxxxx
clip_image014

In the Dimensions Tab - Make the required dimensions active.

Step 3: Populate the Hyperion FDM control tables:

Control tables are used to supply the values displayed in system options. These tables allow the system administrator to control the system options and POV values that users can select.
Open the Metadata->Control Tables.
Add Periods. This will supply the Period and Year to the Target Essbase database.
The Period control table allows for the definition of the valid fiscal periods available to Hyperion FDM. The values in this table provide the list of possible periods that can be selected from the Period POV link. Changing the Hyperion FDM period will change where data is loaded in the target system.

clip_image016

Add Categories
The Categories Table contains the definition of data categories. These categories represent “buckets” (Scenarios) in which data can be loaded.

clip_image018

The values in this table provide the list of possible categories that can be selected from the Category POV link. Each Hyperion FDM category is associated with a target system’s scenario. Changing the Hyperion FDM category will change where data is loaded in the target system.

Verify the Currency Codes
The Foreign Currency Table contains a list of currency codes. Currency codes are assigned to locations. The currency code will be displayed on reports. This code does not impact any calculations, and is used for notation purposes only.

clip_image020

Step 4: Create the Hyperion FDM locations

Hyperion FDM Location Types
Hyperion FDM maintains two types of locations; Data Load and Controls Review.
Data Load — location that accepts data from a source system and loads data via mapping rules to a target system. A data load location can also be assigned financial controls. Data load locations can only be children in the controls structure, they cannot be parents.
Controls Review — location assigned only to financial controls. No data is loaded from a controls review location. Controls review locations are typically parents in the controls structure. A controls review location can also be a child of another controls review location.
clip_image022

Data loading locations have maps and are assigned an import format. Optionally, each data loading location may be assigned a logic group and validation rules.

Step 5: Build/ Import maps
The purpose of a mapping table is to map the source dimension members to their corresponding target system dimension members. A map can be loaded for each dimension in the target application defined in Hyperion FDM.
Verify the Mappable Dimensions - Metadata-Dimensions.
Here dimensions enabled for mapping are - Account, Region, Product, Amt_Type and Version.

clip_image002[4]

Define the Maps from Activities->Maps
Set the Source to Target Mapping for Accounts as below.
clip_image004[6]

Set the Source to Target Mapping for Entity(Region) as below.
clip_image006[6]

Set the Source to Target Mapping for Product as below.
clip_image008[6]

Step 6: Build import formats

Each data load location must be assigned an import group that will be used when importing data files. Import groups instruct Hyperion FDM how to interpret data files and transform them into data that can be loaded into the Hyperion FDM data structure.
The top grid shows import groups, and the bottom grid is where the fields for a group are defined.
By creating an import format, Hyperion FDM is able to interpret the file layout. Once the import format is created, it is important that the source file layout be unchanged each time you load data. If the file format of the source file changes, the import format will need to be updated.

clip_image002[6]
clip_image004[8]

Assign the Import Format to the Location - Sample here.


clip_image006[8]

Step 7: Data loading

Having the mapping tables loaded and the import formats created has prepared Hyperion FDM to import the month balance file and load it into the target system. The following steps will be repeated every month by data loaders to load the source data into the target system

Import source file
clip_image002[8]

Validate
clip_image004[10]

Validation got failed as there is no maps build for Amt_Type and Version. Initially have assumed that no mapping required if the source and target has the same value. Mapping details are must for all mappable dimensions.

Build the like Mapping for Amt_Type dimension as * to Initial.
There are four mapping types for each dimension -- Explicit, Between, In, and Like.

clip_image006[10]

Build the like Mapping for Version dimension as * to Initial.

clip_image008[8]

Again Go to Workflow and Validate. This time it is Success. See the Gold Fish.

clip_image010[6]

Click on Export

Choose "0-Replace"

clip_image012[4]

Export is success. see the Gold Fish.
clip_image014[4]

Validate using Essbase Excel Add-In.
clip_image016[4]

Validation is Successful.

Special Notes:

1) Not convinced with the provided mapping mechanism in the case if target is same as source. that should be simple with an option like equal to choose. Probably I haven't got that to make it work simple.
2) Not satisfied with performance of data load compared to native Essbase tools such as EAS/ MaxL.
3) Relatively easy once we are with the correct sequence/ process flow.
4) Essbase Integration with Essbase Adaptor also much like how it works for HFM data integration. It should have been simple based on how essbase can receive data.

Will see how we can tap the abilities of FDM in a much better way some time after. Thanks.

Sunday, May 20, 2012

ORACLE EPM 11.1.2.2 – First Look

In the first look we can see the below new features in ORACLE EPM 11.1.2.2

1) IBM WebSphere 7.0.0.19+ (AS, ND) is now supported as an application server.

2) FireFox 10.x+ and Internet Explorer 9 are now supported Web browsers.
3)  Microsoft Office 2010 64 bit is now supported.
4)  After completing an EPM System deployment, you can generate a deployment report that provides information about configured  Web applications, Web servers, databases, and data directories used by EPM System. This report can help you troubleshoot issues that might arise in your deployment.

To generate a deployment report:
a)  Open a command line window and navigate to EPM_ORACLE_INSTANCE.
b)  Run the command epmsys_registry report deployment.
By default, the report is saved as EPM_ORACLE_INSTANCE/diagnostics/reports/deployment_report.html.

image

See the link to get the detailed sample deployment report. EPM 11.1.2.2 Deployment Topology Report

5) Oracle Enterprise Manager Fusion Middleware Control can be used to manage the WebLogic domain. You can use this embedded Enterprise Manager to manage all the Java Web applications in EPM System out of the box. The full version of Oracle Enterprise Manager with Grid Control adds functionality on top of the Fusion Middleware Control, including historical information of the metrics.
a) Status of the servers and Web applications running
b) Servers the Web applications are running on and the ports they are listening on
c) Health and performance of Java Web applications and managed servers

To launch Enterprise Manager - http://WebLogicAdminServerHost:port/em.

image

6) The EPM System Media pack on Oracle Software Delivery Cloud has been simplified.Software downloads have been merged together.

image

7) Installation of Oracle HTTP Server is now optional. If you choose not to install Oracle HTTP Server, for example in a development environment, Oracle Hyperion Enterprise Performance Management System Installer installs an embedded WebLogic HTTP Server as part of Oracle Hyperion Foundation Services that acts as a proxy server. In a production environment, Oracle recommends that you install Oracle HTTP Server for use with Oracle WebLogic Server or IBM HTTP Server for use with WebSphere. You can also install and manually configure Apache HTTP Server with WebLogic Server.

8) Microsoft Windows Installer (MSI) Client Installers are now provided for Oracle Essbase Client, Oracle Essbase Administration Services Console, Oracle Essbase Studio Console, and Oracle Hyperion Financial Management Client.

image

9) The Oracle Hyperion Financial Reporting Print Server is now part of the Financial Reporting Web application. You no longer have to install the Print Server as part of the Financial Reporting Studio installation, and you no longer need Microsoft Office on the Print Server.

10) You can now deploy EPM System Web applications to a single managed server (compactserver) in Development, Test, and Production environments. This reduces the overall memory requirement of EPM System and reduces startup time.

This is really helpful in setting epm system in Virtual Mechines for POC or feasibility study. Any how we will do standard deployment as what we do in 11.1.2.1 for the standard Dev/QA/Prod environments.

See the below snapshot showing all application deployed to the single JVM running on 9000 port. Non Java applications like Essbase server, Essbase studio server, OHS and Reporting and Analysis Core services are exception.

image

See the shared services and Planning running on the same port 9000.

image

image

 

11) Online Help content for EPM System products is served from a central Oracle download location, which reduces the download and installation time for EPM System. You can also install and configure online Help to run locally.

Will discuss about the new things on application basis in the next articles. Thanks.

Regards,

Srinivas Bobbala.