Archive for the ‘Master Data Services (MDS)’ Category


Apparently, if the Code is set up to be generated automatically, MDS does not allow you to delete the records in the entity unless an index is specified. However, the index size must not exceed 900 bytes. In my case, my index is over 900 bytes so a workaround has to be put in place i.e. by manually inserting the records into the staging table and specifying the import type = 6. Check the batch execution on MDS and you will see that the deletion works instantly.

insert into [MDS].[stg].[SkillRollupMapping_Leaf] (ImportType, BatchTag, Code)

select 6, ‘delete me’, code from mdm.[Skill_Rollup_Mapping]


Read Full Post »

I noticed that whenever I changed the user permission on the derived hierarchy or model, the change did not happen immediately.

To force it to take effect immediately, run the following query:

USE [database];

SELECT @Model_ID = ID FROM mdm.tblModel WHERE [Name] = N’Model_Name’;
EXEC [mdm].[udpSecurityMemberProcessRebuildModel] @Model_ID=@Model_ID, @ProcessNow=1;




Read Full Post »

I have 3 entities that have been set up in a way that when an attribute of a member has changed value in one entity, it will be copied or moved to another entity. I am doing this in a stored procedure under the usr schema and then setting up a business rule for it.

While testing it, the member didn’t get moved or copied across. So the business rule didn’t work. The record has a member error code of 4 in the staging table.

Run the following query to view the errors that occur during the staging process. Replace name with the staging table name in the query.

SELECT * FROM stg.viw_name_MemberErrorDetails

This error means that the attribute value references a member that does not exist or is inactive.  Check the attribute list and the attribute type in each entity and make sure that they have the same configuration.

Also, when you stage domain-based attributes, you must use the code, rather than the name. Applies to ImportType0, 1, and 2 (reference: https://docs.microsoft.com/en-us/sql/master-data-services/staging-process-errors-master-data-services?view=sql-server-2017). So in your stored procedure, ensure that you only use the code to insert and not the name or both.


Read Full Post »

I have a business requirement where when a user inserts a new record via Excel on MDS, the Code will be automatically generated as a concatenated value (once published), that makes the record unique.

To do this in MDS, I have had to create a business rule on the entity to say that if the Code is equal to zero then Code equals a concatenated value. The example below uses a concatenated value that consist of position_id and cost_centre.

After the business rule is published, the user is now able to insert a new record, however, he/she must set the Code value to zero or some numbers because it cannot be empty. This can be annoying because after copy and paste the record into the Excel, the user needs to modify the Code to zero or some numbers. It will be better if he/she only needs to copy and paste and then delete the Code (so that the Code appears blank). The above business rule will not work as the Code cannot be blank.

To solve this, the Code must be an integer instead of varchar. On MDS, you can set the Code to be automatically generated. Go to Home > System Administration > Manage Models > Entities and then edit the Entity and tick the “Create code values automatically” tickbox and set the “Start with :” textbox to number 1, as shown below:

You would then need to truncate and reload data into the entity. If you add a member into the entity manually, you will see that the Code textbox is greyed out as shown below.

Once set up, all good to go! 🙂






Read Full Post »

%d bloggers like this: