May CTP was an exciting milestone for Oslo Repository. We successfully integrated Repository with the M tool chain. All of main shapes and instances (i.e. tables, views, functions, locale instances) in Oslo Repository are now defined in M Schema instead of T-SQL.  The remaining T-SQL implementation of Oslo Repository was split into pre and post SQL scripts following the MX convention so that, we can compile everything into the Repository.mx image and install it onto the SQL Server using MX.  The diagram below describes the two steps that you would need to perform now in order to create a repository.

 

Repository.mx consists of 3 modules that are mapped to the existing Repository schemas:  Repository, System.Globalization and Repository.Item.  You can create an M model referencing all items defined in these 3 modules. However, there are two  issues below that are worth taking note of.

-          No cross image label references: Currently , you cannot reference any labeled instances that are in a different image. For example, as a part of the Repository installation, default folder M instances were created (Repository, Applications, etc.). You will not be able to reference those folders with FoldersTable.Repository.

-          No instance creation against views: Currently, you can only create M instances against extents and not computed values (i.e. views).  For example, when you create a Folder, you would actually have to create an instance of "FoldersTable" rather than "Folders".   This may cause your model to behave incorrectly if your also create a view with triggers on top of your model.

Repository.mx is a TSQL10 image and therefore compiling /t:Repository image referencing the Repository image is not supported (You would get some warnings if you try to do this but they can be ignored).  To get the same behavior as /t:Repository,  we recommend you to create an M model with a view and then make use of the stored procedure [Repository.Item].[AddStandardPatterns] to obtain all repository patterns.  You can also inject each repository pattern separately through the following stored procedures: [Repository.Item].[CreateIdSequence], [Repository.Item].[AddFolderForeighKey], [Repository.Item].[AddSecurityViewsInsteadOfTriggers], [Repository.Item].[AddAuditing], [Repository.AddChangeTracking].