(How to build MicroStrategy Command Manager APIs to leverage scripts-based tasks and data interchange between MicroStrategy and 3rd party applications)
MicroStrategy Command Manager (CM) lets you perform various administrative and application development tasks by using text commands that can be saved as scripts. CM can be considered to be a graphical user interface to the MSTR Server API. CM is widely used by Administrators and to some extent by MicroStrategy Developers.
CM is Flexible and Powerful
MicroStrategy has done a great job providing many out-of-the-box scripts (outlines) that make many tasks extremely fast and easy to accomplish. With CM you can manage users (create, delete, update etc.), cubes (publish, load, unload etc.), manage security, attributes and metrics (create, update etc.), and many more tasks.
CM also enables users to create custom procedures in Java and generate output with highly customizable format and business logic.
But CM Functionality Is Not Open!
In spite of its utility, CM has been the go-to tool only for trained MicroStrategy administrators. Much of CM’s powerful functionality has been unavailable in the Web SDK hindering third-party application developers who wanted to build a deeper integration layer.
Consider these recent requirements:
A third party system needs a real-time feed of all Fact objects in MSTR, including the Fact expressions and source tables/columns. Since the Web SDK does not offer any APIs to access Fact information, we considered using the COM API, but because our development is in J2EE environment, this was far from ideal.
Load all intelligent cubes into memory every time the server is restarted. CM has pre-built scripts for loading intelligent cubes. Without CM, we would had to integrate with the COM API. Again, not an optimal solution.
So We Made CM Open!
To us the solution was obvious: build an API layer on top of CM that allows developers to interact with CM for tasks and data. Thus was born the Command Manager API. Packaged as a JAR, it can be included in any Java-based application. This easy-to-use API only needs the caller to pass a standard command manager script/outline along with the environment details, and receive results back in a format of their choosing (XML or JSON).
Thoughts on the Command Manager API
Developers can now use the powerful OOTB Command Manager outlines/scripts instead of trying to construct this through the Web SDK. That is not to say that the Web SDK is redundant. The Web SDK is extremely powerful but why reinvent the wheel and re-write the logic already available in CM outlines/scripts.
Developers can also sidestep coding the (hairy) COM API; the Command Manager API offers much of the functionality in the COM API that is not available in the Web SDK. Besides, the COM API is a .NET-only API and if your primary environment is Java-based, you’re not going to be happy. Of course you could write a custom user procedure in Command Manager which writes the output to a file or database and have your third-party app read from it, but that is the opposite of elegant.
The Command Manager API has been deployed successfully at several of our clients. We are happy to share case studies and the deployment details with you.