Smart View and multiple pods, how can I simplify connections?

With the shift to the cloud, one of the major differences with Smart View is the shared connection url. When it was on-prem it was pointed to my production workspace servers and all of the environments connections were available to me as a shared connection. I really only needed to change it if I wanted to work in development or test.

Now that most of my clients are moving to the cloud they are struggling with connecting to environments that have multiple pods. Oracle has given us the ability to combine the web front end via Connections but that will not yet work for Smart View. Yes, clients can define multiple Private Connections within Smart View but I think that naming those connections can be challenging to end users. I really like this approach as it provides an intuitive way of identifying the connections to the end users. Here is a sample of it in action.

I know that video was very very exciting, I hope you enjoyed it! Yes, you did see me utilize a shared connection to log in only once and ad-hoc to three different pods with nice friendly names! How did I do this? I utilized an on-prem solution and converted it to the cloud. Take a look at the following from the Smart View documentation:

Accessing Shared Connections from an XML File

I used this solution and applied it to the cloud to create a friendly Shared Connection experience. Here is an example of the syntax for what you just saw with edited domain names.

<?xml version="1.0" encoding="UTF-8"?>
<res_GetProvisionedDataSources>
<Product id="HP" name="HP-11.1.2.2" displayVersion="version">
<Server name="PLANNING_PROD" context="https://planning-a123.pbcs.us2.oraclecloud.com/HyperionPlanning/SmartView"></Server>
</Product>
<Product id="HP" name="HP-11.1.2" displayVersion="version">
<Server name="PLANNING_TEST" context="https://planning11-a123.pbcs.us2.oraclecloud.com/HyperionPlanning/SmartView"></Server>
</Product>
<Product id="HP" name="HP-11.1.2" displayVersion="version">
<Server name="REPORTING_TESTING" context="https://planning23-test-a123.pbcs.us2.oraclecloud.com/HyperionPlanning/SmartView"></Server>
</Product>
<Product id="HP" name="HP-11.1.2" displayVersion="version">
<Server name="REPORTING_UAT" context="https://planning19-test-a123.pbcs.us2.oraclecloud.com/HyperionPlanning/SmartView"></Server>
</Product>
<Product id="HP" name="HP-11.1.2" displayVersion="version">
<Server name="REPORTING_PROD" context="https://planning3-a123.pbcs.us2.oraclecloud.com/HyperionPlanning/SmartView"></Server>
</Product>
</res_GetProvisionedDataSources>

I then saved it as an XML file and defined a path to it in Smart View.

image-1

 

In the above example I am accessing it via a local file, however, clients should probably host this file in a central location on an internal web server and reference the file via URL so that everyone can get updates. I have tried hosting it in workspace but you need to login to access the file and that defeats the purpose of the connection so I would go with the URL hosting or make the file part of a deployment package.

I hope this helps clients struggling to maintain multiple pods and Smart View connections. It has saved me so much time as I have a single file for all of my clients within one shared connection profile!

Part 2 – Where is my import/export security utility? How to Import Security

UPDATE

After I posted this, I realized that I was not checking for XML special characters and if you had one in your metadata it would error when importing into PBCS. I have corrected this and updated the downloaded script. Sorry if this caused any frustration.

This is part two of the import/export utility for PBCS. Extracting security is fine, but now we want to import the security back into our system. As you may remember we extracted all of the group security and placed it all into one comma separated file using the Powershell utility in the last post.

We are going to utilize LCM to import the security back but we have to get the files and the archive in the correct format. Some key points to remember with the import:

  • LCM will import all of the user security from the file.  So even though the export creates a file for each group you can import it all in one file.
  • There does not seem to be a way to clear the security before you load it.  This was possible in the utility.  (I will keep playing with this.)
  • So based on the last point it is a merge of the security in the system. 

 

CONVERT CSV TO XML

PBCS requires a very basic but specific XML format. I have written a Powershell Script to convert the CSV into the correct format for planning to accept. To utilize the solution you will need two files located here SEC2XML.

The download has two files. Please place these files in the same directory.

  • listing.xml – is a file that will be used to build an archive file that can be loaded to your PBCS environment. 
  • sec2xml.ps1 – is the Powershell script that will convert your csv file into the correct xml format and build an archive based on your original download that can be loaded back into PBCS.

This script will accept two parameters. The first is the path and name of the csv file. The second is the path to the original archive that you extracted application folder. A bit more detail on that parameter below:

This is an example of an unzipped lcm extract of just my security groups. The second parameter is looking for the path of the application folder in this structure in the below screenshot is HP-TOYS. TOYS is the name of my planning application.

Below is an example of the syntax to run the script:

/sec2xml.ps1 /Users/anthonymanfredi/Dropbox/POWERSHELL/SECURITY/securitymac.txt /Users/anthonymanfredi/Dropbox/POWERSHELL/BLOG/ZIP/HP-TOYS

  • /sec2xml.ps1 = The name of the script
  • /Users/anthonymanfredi/Dropbox/POWERSHELL/SECURITY/securitymac.txt = The path and name of my security csv file.
  • /Users/anthonymanfredi/Dropbox/POWERSHELL/BLOG/ZIP/HP-TOYS = Unzipped application folder.

 

The script does quite a bit of magic but here is a flow chart highlighting the steps:

The script will convert the csv file back into the proper xml format. Next it utilize your original zip extract to build a zip file to load your new security upload. I would recommend just using the groups export to simplify the process. The script will delete any existing xml security files in the groups folder and then place the newly created XML file in the directory. I deleted the other files so that there would be no contention on load and the latest updates will come from the new csv file.

The next step will copy the listing.xml in the info folder. This file will let planning know about the new export that you want to load.

Once that is complete it will zip the structure and put the file security_update.zip in the same directory you executed the Powershell from.

 

IMPORT THE SECURITY

Now that the archive is built you can login to the PBCS application and navigate to the Migration section.
Once you are there select the Snapshots tab and upload your Archive.

Now that its uploaded you should be able to navigate the archive and see the security like below:

Import the snapshot when your ready and the application security will be updated

Couple of notes:

  • You will need to delete the snapshot in PBCS or rename it when you run the process again. You can’t have the same archive twice.
  • When you extract the original archive place it in its own folder so the Powershell script will not accidentally zip up extra files.  

CONCLUSION

I hope this helps everyone with their security in PBCS. Please don’t try this for the first time in PROD!! Run it in test first. If you have any questions or problems let me know!!

Where is my import/export security utility???

When I first started working on Hyperion Planning, clients and consultants would call the hotline and ask how they could see their existing security because back in the 1.0 days it was not available. So I dove into the database and wrote a Microsoft Access database that enabled consultants and clients the ability to see their security. We distributed the database and instructions if people asked nicely or loudly until the feature was written into the tool.

The Oracle EPBCS/FCCS platform does not come with a nice way of exporting and importing object security the way the on-prem version of Hyperion Planning had with its command line utilities. I decided to take a stab at hopefully making it easier.

EXPORTING SECURITY

This entry will focus on exporting the current security of an application and formatting it into a csv file so you can easily edit the security or view its contents.

I am going to focus on group security since it is a best practice to apply security at a group level. You can follow this process for users as well.

The first step is to extract the current application security using the migration component of EPBCS. You can use a complete application extract or just extract the security. Below I am just extracting the group security.

Once the migration is executed download it to your machine. Unzip the file and you will find your currently assigned security in super fun XML files for each group.

Here is what it looks like in XML.

Its pretty simple XML but not great to edit. Now that you have the files I have written a Powershell script that will convert all of the files in a directory to a combined csv file. By no means am I a Powershell master but I like it because its extremely quick, and handles XML, JSON, and CSV formats extremely well. Generally you will find it installed on most new servers or clients. Here is some documentation to enable it on windows.

It can also run on your mac or linux environment.

You can download the script here. Once you download it place it in a directory where you plan to execute it from.

The script accepts two parameters. The first is the directory where the XML files are stored and the second is the name of the file you want to create. If you don’t put a path the file will be saved in the same directory as where you execute the script. The parameters should be separated with a space.

Once you launch the shell navigate to the directory you have saved the script in.

Here is the command :

./sec2csv.ps1 “V:\POWERSHELL\BLOG\HP-TOYS\resource\Security\Access Permissions\Groups\” security.csv

Place quotes around the directory if you have spaces in it.

It will look like this in the shell.

Once the script runs it will generate your export.

It has now combined all of your group files into one csv file that will look like this.

The information in this file will be very similar to what was required for the import and export utility in planning. The definition of these fields can be found here. The only one that is really different is the IsUser field. For group security this will always be N.

CONCLUSION

I hope you find this first part of this conversion helpful. I am testing the CSV to XML script now, it has been working great and I should have that up soon. I hope this helps you manage security in the cloud!!