Deploying Oracle Smart View to Business Users



So you have your shiny new Hyperion Planning application in place, with a spiffy and speedy ASO reporting cube to go along with it, you’ve impressed the C-Level with how great it is, and they have given you the go to roll it out to all 500 Business users, spread across 50 cities in 10 different countries.  Sounds like you’re ahead of the game at this point, but you have one issue, none of these users have Smart View installed.  If promoting Self-Service reporting capabilities for users is a stated goal of the project, then getting the Smart View deployments to users right is a critical step to complete.

 So being the resourceful individual you are, you reach out to the IT team for a mass deployment to be pushed out to these users. IT comes back the next day and says they don’t have the capabilities to do this, or it might take months for IT to figure this out, so you are in a bit of a situation. Now you have to figure out how to get this installed and configured for all of these users. 

This is exactly the situation I recently encountered, to make it even more fun,  users are typically not given local admin rights to their desktops (standard IT policy) and  restricted from doing any installs in there systems on their own;  local IT team would need to do the install.  But Local IT would not do the configuration even if they did the install, since it was considered personal preferences, and outside of their scope. Making this an easy transition for the users was key, if you have ever set up Smart View, you know that setting the shared connections URL is in the ‘Advanced’ options, this is not a big deal for most people, but some of the users are afraid of words like Advanced, URL, Server, etc. so how do we get past all of these struggles? We put together a plan.

My 3 step plan ensures a smooth (as possible) roll out of Smart View to these users and here it is:

Step 1 – Install Instructions

Local IT departments love to archive the installer for quick reference when they have new users asking for the install, unfortunately they often do not update that file to the latest version when you do.  To prevent installation of old versions, inform your users of what they need to do with instructions.  “Go have IT install Smart View” is not a set of instructions.  Users need to know what to tell IT, so tell your users where the install file is, what version they should be getting, and how to actually run the installation, and finally how they can check/test that the they have successfully completed  installing it in their system  and have the right ‘version’ of Smart View. A PowerPoint with a few pictures and arrows can do this with ease.

Step 2 – Make the install file central and easy to get

To make sure all users are on the same version of Smart View do not let them find the install file on their own, give them the install file.  There are 2 ways to do this, and you can use either/both depending on your environment
                1 – Have users install through workspace, this is great for local users, but some users might not want to wait for a 130MB+ file to download from a server on the other side of the world. But it’s easy for you to update, as the file is only in one place.
                2 – Put the install file into local share drives in each region, this allows all users to access the same file, and to gain the benefits of local file shares. The only drawback is if you update the file, you need to update all of the local shares, not just one.  In my case, we set up a share in each region (APAC, Americas, and EMEA) for the users to access.

Step 3 – Configuring Smart View

So like I mentioned earlier configuring Smart View tends to be the biggest obstacle for a lot of users, fortunately for us Smart View comes with a whole suit of VBA functions that make this process easy to automate.  As part of your instruction set, include an excel macro file that is simple for users to use, one button in the middle of the file that says “Click Here” tends to do it.  With the method in mind, the question is only what options can I set, and how do I do that? the Smart View Developers Guide has some very detailed information on the VBA functions, but we really only need a few of these:

  • HypSetSharedConnectionsURL
  • HypConnectionExists
  • HypRemoveConnection
  • HypCreateConnection 
  • HypSetOption

Before you can use the VBA functions, you need to import them into your workbook. To do this just import the Smart View.bas file into the project in the VBA editor, by default you can find this file in the  C:\Oracle\Smart View\bin directory. Now that we have the functions in our file, let’s build our macro.

The first thing I like to do is confirm that the user wants to continue, because using the macro will overwrite their existing settings, a quick message box can take care of this:


If MsgBox("Clicking ok will overwrite some options you may have already set, are you sure you want to continue?", vbYesNo, "Warning") = vbNo Then Exit Sub

Now we have our disclaimer, lets change some settings.  First thing I want to change is the Shared connections URL, we can do this with HypSetSharedConnectionsURL function:

x = HypSetSharedConnectionsURL("http://YOURSERVER:PORT/workspace/Smart ViewProviders")

That was easy, but what if this did not work? Let’s capture any error messages as we go along, we can check them at the end.

sErrors = sErrors & x & ","

This will create a string of comma separated errors that we can later reference in case of issues.

Moving on, let’s set up any private connections that may be required, this is a bit more involved and we are going to use a few functions to do it.  First we need to check if the connection, or connection with the same name, already exists.  If it does, we want to remove it, and put our connection in its place. Because some of the parameters are reused, let’s use variables for those.

hProvider = "http://yourserver:19000/aps/Smart View"
hServer = "EssbaseCluster-1"
hAlias = "CoolNewASO"
sApp = "YOURAPP"
sCube = "YOURCUBE"

x = HypRemoveConnection(hAlias)

If HypConnectionExists(hAlias) = False Then
    x = HypCreateConnection(Empty, "", "", "HYP_ESSBASE", _
    hProvider, hServer, sApp, sCube, hAlias, "Analytic Provider Services")
Else
    x = HypRemoveConnection(hAlias)
    x = HypCreateConnection(Empty, "", "", "HYP_ESSBASE", _
    hProvider, hServer, sApp, sCube, hAlias, "Analytic Provider Services")
End If
sErrors = sErrors & x & ","


Note that we are again capturing the errors in our ever growing error string. You can repeat this as needed for your case, you can do this with more than just Essbase connections as well, check out the documentation for more details on providers that can be used

Our connections are now all set up, so let’s set some options HypSetOption gives us a lot of items to work with.  Now there are a lot of options you can set in Smart View and luckily for us Oracle was nice enough to create some constants for us to use, these are in the Smart View.bas that we imported earlier.  For this example I will only set a few, but you can go through the full list to find all the options you want to set.  Using the function is fairly straight forward, chose the option you want to set, and the value to set it to, put that in a function and your all set.

x = HypSetOption(HSV_INCLUDE_SELECTION, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_INDENTATION, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SUPPRESSROWS_MISSING, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SUPPRESSROWS_ZEROS, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_MISSING_LABEL, "#NumericZero", "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SHOW_PROGRESSINFORMATION, True, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_PROGRESSINFO_TIMEDELAY, 1, "")
    sErrors = sErrors & x & ","


Again each time we change a setting, we capture the errors if they exist.  So now all of the options have been set, we have to check for errors and provide an error report if needed, since our error is a string, we can do a if statement to check if it matches a clean string, and show the user if needed.

If sErrors = "0,0,0,0,0,0,0,0,0," Then
    MsgBox "All options set without issue"
Else
    x = MsgBox("Some options have not been set, please contact EPM Team, please include the bellow Error Code: " & vbCrLf & vbCrLf & "Error Code: " & iErrors, vbCritical, "Error")
End If


Hopefully everything ran correctly, but if not, you have a starting point for troubleshooting the problem.

For reference, this is what your VBA code should look like:

Sub SET_Smart View_Options()

If MsgBox("Clicking ok will overwrite some options you may have already set, are you sure you want to continue?", vbYesNo, "Warning") = vbNo Then Exit Sub

x = HypSetSharedConnectionsURL("http://YOURSERVER:PORT/workspace/Smart ViewProviders")
sErrors = sErrors & x & ","

hProvider = "http://chnvel2bin02:19000/aps/Smart View"
hServer = "EssbaseCluster-1"
hAlias = "CoolNewASO"
sApp = "YOURAPP"
sCube = "YOURCUBE"

x = HypRemoveConnection(hAlias)

If HypConnectionExists(hAlias) = False Then
    x = HypCreateConnection(Empty, "", "", "HYP_ESSBASE", _
    hProvider, hServer, sApp, sCube, hAlias, "Analytic Provider Services")
Else
    x = HypRemoveConnection(hAlias)
    x = HypCreateConnection(Empty, "", "", "HYP_ESSBASE", _
    hProvider, hServer, sApp, sCube, hAlias, "Analytic Provider Services")
End If
sErrors = sErrors & x & ","

x = HypSetOption(HSV_INCLUDE_SELECTION, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_INDENTATION, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SUPPRESSROWS_MISSING, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SUPPRESSROWS_ZEROS, False, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_MISSING_LABEL, "#NumericZero", "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_SHOW_PROGRESSINFORMATION, True, "")
    sErrors = sErrors & x & ","
x = HypSetOption(HSV_PROGRESSINFO_TIMEDELAY, 1, "")
    sErrors = sErrors & x & ","

If sErrors = "0,0,0,0,0,0,0,0,0," Then
    MsgBox "All options set without issue"
Else
    x = MsgBox("Some options have not been set, please contact the EPM support team with the bellow Error Code: " & vbCrLf & vbCrLf & "Error Code: " & iErrors, vbCritical, "Error")
End If
  
End Sub


Now just remember to save your file as an Excel Macro-Enabled Workbook and add this Excel macro file to your Smart View Instructions PowerPoint and ask the users to click the macro button in it after they complete their Smart View Install to configure their Smart View connections.

I know Step 3 sounds excessive, but trust me, spending a little bit of time setting this up will save you hours down the road. And that’s it, you now have a deployment plan, and you can start to get your users set up.

It’s worth noting that this macro is not reserved for new installs or large deployments, you can use this for a small group as well, I have found that having consistent settings in Smart View makes everyone life easier. I hope that this helps you get your team set up and running, and look for a future post on using VBA macros to improve your Smart View user experience. There I will take you through how creating a couple of very simple macros can turn Smart View from good to great.

Comments