Friday, October 31, 2014

Restarting COM Objects

Clarity uses Component Object Model (COM) objects to handle all the server-side operations. This includes querying, saving, configuring and more. For a variety of reasons, the COM objects can get confused. Often times, the system can go right back to normal if the COM objects are restarted. There are a couple of ways to do this.

IISRESET


By running iisreset, as an administrator, from the command prompt, the Internet Information Server (IIS) service will be stopped and restarted. Since the COM objects live inside IIS, this effectively stops and restarts them. For more information on this, here is an IBM article.

Restarting the COMs


If iisreset doesn't work, restarting the COMs directly may help uncover the issue, or just magically fix it. To restart the COMs, you can follow these steps.


  • Open Start..Administrative Tools..Component Services
  • Navigate COM+ Applications node on the left work pane, as shown below
  • Right-click on ClarityQueuedComponents and select Shutdown
  • Right-click on ClarityComponents and select Shutdown
  • Right-click on ClarityComponents and select Start
  • Right-click on ClarityComponents and select Start
At this point, the server should be working again. You may have encountered an error message that will lead you towards the real reason Clarity isn't working. The properties of these two objects can also be tweaked to improve performance in a variety of ways. Turning on queuing is one such optimization.

What Clarity Version Do I Have?

If you ever ask IBM Support or a consultant for help with Clarity, they will probably ask you, "What version of Clarity are you using?". This is meant to be a simple question, but for folks that don't know how to find the version, it can be a bit confusing. Here are some simple ways to identify which version of Clarity is installed on a given server.

Mouseover on the application title text



If you login to a Clarity application, you'll usually see some text describing the application on the top left of the screen. By default, this says, "Clarity 7". Often times, implementation teams will update this to a client's logo, or add the word 'Dev' to denote the development server. This helps users visually see which server they are using. By holding the mouse over this text, the exact version number of the Clarity product will be displayed, as shown above.

Properties of an Clarity DLL file


Sometimes, using the mouseover will not work, if the text is replaced by an image or logo. In that case, we can still find the Clarity version by looking at the properties of any Clarity.* DLL in the Clarity Systems\ClarityServer\Web\bin folder. 
  • Open Clarity Systems\ClarityServer\Web\bin
  • Right-click Clarity.ActivityTracker.dll and select properties (Any Clarity...DLL will work)
  • Select the Details tab
  • Look at the Product version property on the details tab

Tuesday, October 21, 2014

Versioning (Analysis Services) - How can I fix it?

Versioning is a tool in Clarity enabling users to copy data from a set of source dimension elements to a set of target dimension elements. The most common implementation of it gives users a selection for a source (scenario, year) combination and a target (scenario, year) combination. The tool itself looks clear and straightforward, but the complexity and risk is just below the surface. Below is an example of a more advanced configuration. In this example, a user selects a source (scenario, year, period, account) combination and a target (scenario, year, period) combination. This allows whole years to be copied, or individual periods. It also allows individual accounts, or a whole income statement. This also has options for which cube to version data and how many months should be copied. This screen is very flexible and configurable. This discussion will focus on SQL Server Analysis Services implementations. Versioning in Essbase is handled differently.

How Its Supposed To Work

This is how versioning should work for users.

  • User selects the source and target information
  • User clicks calculate
  • User can run reports and see the target data updated
Here are some of the common challenges that muddle this user experience
  • Users need to wait for a nightly process to run before seeing their versioned data
  • The webpage times out and users see errors
  • The webpage takes a long time to run and users are not sure if the process completed or not
  • The screen goes white while running and users are not sure if the process has crashed
  • Line item detail is not included when versioning
  • Capital or Human Resources detail is not included in versioning
Clarity Versioning Tool Screenshot

Versioning Algorithm

When implementing versioning for a client, here are the steps that need to be done to ensure a successful implementation and happy client.
  • Discuss the expectations with the client to uncover which parameters should be displayed
  • Update the Clarity Systems\ClarityServer\Web\Versioning\versioning.xml file to display those parameters and pass them to an underlying stored procedure (dbo.STP_VERSIONING)
  • Write a stored procedure to do the versioning, typically dbo.STP_VERSIONING with the following pseudocode. This could also be done using an SSIS package, but the pseudocode would be the same.
    • Check Parameters
      • Make sure source and target are different
      • Make sure target is not in an archive
      • Strip off any MDX style formatting
    • Clear Target
      • Delete data from the target combination in 
        • Each cube fact table
        • Each module table (HR/Capital)
        • Line Item Detail
    • Copy Data
      • Copy data from the source combination to the target combination in each of the above tables
    • Start a Job to Reprocess The Cube
      • At the end of the stored procedure, use something like the following to start a job that ONLY reprocesses the cube. This DOES NOT run the full nightly process. It only performs the ProcessFull process operation on the Analysis Services cube. If this is Essbase
        EXEC dbo.sp_start_job N'ProcessCube' ;
Following these steps, versioning will work fine and users will have a positive experience.

Versioning Options and Concerns

As the screen above shows, there are lots of options to consider. Here are some things to discuss with your implementation team to make sure you get all you can from this feature. 
  • What is the timing? How long will versioning take?
  • What about notifications? How do I know when it's done? ...failed?  ..emails?
  • What do I do if I see an error? How can I troubleshoot this? What are my next steps?
  • What grain of versioning do we want? OLAP? Capital? HR? LineItemDetail? Custom Tables?
  • Who should have access to this tool?
  • How can I make a backup first, in case I make a mistake?
  • How can I restore a backup, after I've made a mistake?
  • Should we use a stored procedure or a SSIS package?
  • Should I notify users before running this? ...who? ...how?
If you would like help with your current Clarity implementation, please feel free to reach out to us and we can help. (support@clearinsight.ca)