BISM Normalizer: Version 3.0 Released for SSAS 2016!!!

This is a major new version of BISM Normalizer. It can be downloaded from a different Visual Studio Gallery page. The current version will run for free till June 30th 2016.

Visual Studio 2010/2012/2013 (SQL Server 2012/2014) are not supported by BISM Normalizer 3. For these, you can still use BISM Normalizer 2.  See the Purchase page for more info on version compatibility.

Enhancements in Version

Support for SQL Server Analysis Services 2016 CTP3.3 and Visual Studio 2015

SSAS compatibility levels 1200, 1100 and 1103 are all supported.

JSON definitions with improved difference highlighting


Support for DirectQuery models with compatibility level 1200

Both source and target models must have the DirectQuery Mode property set to On for successful comparison.

Processing on database deployment


When deploying to a database (not project), BISM Normalizer will check connections set up for impersonation, and prompt for username and password (like deployment from SSDT).

Impersonation Credentials

Like SSDT, processing options include “Default”, “Do Not Process” and “Full”.  There is an option to process only the tables affected by the comparison (Create and Update), to avoid unnecessary processing.


Switch source and target in Connections dialog

Switch Connections

Improved scripting for JSON and XMLA

BISM Normalizer will use the appropriate editor if available. If not, can save to a file instead. Note: the JSON editor is not installed as part of a SSDT only installation with the Visual Studio Integrated Shell.

Improved Scripting

Improved Scripting Xmla

View code behind BSMN file

Allows viewing and manual setting of values in BSMN files.

View Code

Associate BSMN file types with Visual Studio

Open BSMN files direct from Windows Explorer with Visual Studio as the default application. Also set up BISM Normalizer icon for Solution Explorer. To enable this, right click a BSMN file in Solution Explorer and select the Install Solution Explorer Icon context menu. Note: administrator permissions are required to even see the menu option. This can’t be set up automatically with standard VSIX deployment from the Visual Studio Gallery because of the admin requirement.

Install Solution Explorer Icon


Upcoming features for next release

Targeted for Release 3.1: command-line execution passing BSMN file as a parameter. This will allow integration with automated builds/deployments.

Known issues

Translations are currently not supported by BISM Normalizer 3. Until this Connect bug is fixed, the target model will not contain translations, even if they were present before the comparison. The current version strips out translations when doing an update.

2 Minute Video on BISM Normalizer

BISM Normalizer is 3 Years Old!

I have given away BISM Normalizer for 3 years.  I launched it on Christmas Day 2011 (way before SQL Server 2012 hit RTM).

Check out the brand new BISM Normalizer website!

I’d like to say a big thank you to all who have used BISM Normalizer, provided feedback, and especially those who educated the SQL community through blog posts, publications, social media or otherwise.

I have decided to start charging license fees for BISM Normalizer.  This was not the plan from the beginning; my circumstances have changed.  Version 2.0.1 is a 20-day evaluation version, which can be purchased for $239.  This includes 1 year of support by e-mail, and updates/fixes to the major version.  See the Purchase page for more information.

How do I justify $239 per license?  Here are my price-determination factors:

  • Comparative products from bigger companies, such as database compare for relational databases, are more than twice the price for the base version, normally not including features such as source-control integration, which cost extra.
  • There is no competition in the SSAS database compare space (at least nothing that is usable). The relational-database compare products alluded to above, for example, compete in a crowded space.
  • BISM Normalizer is for corporate BI projects, not self-service BI users.  If it worked directly with Power Pivot, would target higher sales volume at a lower price point. It is geared primarily at companies and organizations, rather than individuals.
  • Not a big product-development company with marketing budget, sales team, brand name … Built up brand by giving it away for 3 years.

Given these factors, I hope you agree that $239 is a great price!   I hope you continue to gain value from my 3rd child, BISM Normalizer.

Merry Christmas – or Happy Holidays!

BISM Normalizer: Version 2.0 Released!

Easily the biggest release of BISM Normalizer since its launch almost 3 years ago.

Enhancements in Version

  • BISM Normalizer has been migrated to a VSPackage; it is no longer a VS add-in.
    • Add-ins are being deprecated in VS.  In the CTP of VS 2015, the Add-in Manager no longer exists.
    • VSPackages provide richer functionality than add-ins.  Microsoft project templates (e.g. C# projects) are built using VSPackages.
  • BISM Normalizer is now a custom editor.  This provides the following benefits.
    • Multiple comparisons are supported at the same time.
    • Comparisons can be saved to a .bsmn file.
      • Skip selections, connections and options are retained when reopened.  This means it is not necessary to make the same manual selections when deploying new versions of the same tabular model.
      • .bsmn files can be added to tabular projects using the VS New Item dialog.
      • In a future release (not 2.0), the .bsmn file will parameterize command-line deployments using BISM Normalizer.
  • VSIX deployment direct from the VS Gallery.
    • Notifications of new releases in the VS Notification tool window.
    • Upgrade to new versions from within VS in the Tools > Extensions and Updates window.
    • No longer necessary to uninstall BISM Normalizer every time upgrade to a new version.  It will upgrade as part of the new installation.
  • Numerous usability and look-and-feel enhancements.
    • Too many to document here.  Maybe another day when I have a few spare hours.


  • Remember to uninstall the previous addin version of BISM Normalizer from Control Panel > Programs and Features before installing the new version.  If you see the big old BISM Normalizer toolbar, you are using the old version.

Update 11/14/2014: enhancements/fixes in

  • Full support for VS 2010 & 2012 (in addition to 2013).  Also supports VS Community 2013.

Update 12/19/2014: enhancements/fixes in

  • 20-day evaluation version

Update 1/23/2015: enhancements/fixes in

  • Fix for creating database permission with the same (internal) name as an existing one.

Update 12/24/2015: enhancements/fixes in

  • Fix for multiple projects with same name in different solution folders.

Piecemeal Deployment of Tabular Models

BISM Normalizer allows piecemeal deployment of individual features through dev, test, prod environments. For example, we can pick limited particular features that have been signed off in a user-acceptance-testing environment and deploy to production – even if the SSAS objects required have been modified in the lower environments.

Easy deployment that is more responsive to the customer – especially in an agile-development scenario.

BISM Normalizer: Version 1.3.13 Released!

Download it from the BISM Normalizer Visual Studio Gallery page.

Enhancements in Version

  • Expiry date extended to December 31st 2014. It is unclear what will happen to BISM Normalizer after this time.
  • Tested with SQL 2012 SP2.

Update 8/22/2014: fixes in

  • Handles ‘]’ characters in measure names. Read Visual Studio Gallery page Q&A section for details.

SSAS Locking: CommitTimeout and ForceCommitTimeout

There are already plenty of good posts out there on this topic:

As mentioned by Andrew Calvett, it is possible to set the CommitTimeout for a Process command.  Here is how to do it.

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

    <Process xmlns="">



Setting CommitTimeout to 20 seconds (20000 milliseconds) means it will kick in before the server-level default ForceCommitTimeout of 30 seconds. To try this out, run the following query, which takes about 50 seconds on my laptop.  As soon as the query starts running, execute the process command.  It should rollback the process command and allow the query to run to completion.

MEASURE 'Date'[Bad Measure] =
   COUNTROWS(GENERATE(ALL('Internet Sales'), VALUES('Date'[Day Of Year])))
   VALUES('Date'[Calendar Year])
   ,"Bad Measure", [Bad Measure]


Change CommitTimeout to 40 seconds (40000 milliseconds) and the default ForceCommitTimeout of 30 seconds will kick in instead.  The query will fail – instead of the Process command – “because of locking conflicts”.


Get every new post delivered to your Inbox.