Getting a handle on social MDM

Since this is the first work related post for a while, it’s probably a good idea to drop in the usual disclaimer as a reminder: “The postings on this site are my own and don’t necessarily represent IBM’s positions, strategies or opinions.”

Anyway, I recently spotted an MDM enhancement request, Improve Better support for social handle support, and it seemed odd that there wasn’t already something in the data model that could do a better job than using misc values. There are probably several options but I think this is what I’d do…

Add a new “Social Network” contact method category, and associated contact method types, for example: “Twitter”, “LinkedIn”, etc. Here’s what those look like in the Business Admin UI:



Now you can just add social network contact methods in the same way as you would for telephone numbers and email addresses, which means you get all the standard functionality you’re likely to need.

For example, here’s what an example getPerson response looks like with my Twitter and LinkedIn details:

<?xml version="1.0" encoding="UTF-8"?>
<TCRMService xmlns="" xmlns:xsi="" xsi:schemaLocation=" MDMDomains.xsd">
                <DisplayName>James Taylor</DisplayName>
                <CreatedDate>2013-11-03 07:10:40.909</CreatedDate>
                <PartyLastUpdateDate>2013-11-03 07:10:41.175</PartyLastUpdateDate>
                <PersonLastUpdateDate>2013-11-03 07:10:41.767</PersonLastUpdateDate>
                    <StartDate>2013-11-03 07:13:47.966</StartDate>
                    <AddressGroupLastUpdateDate>2013-11-03 07:14:17.854</AddressGroupLastUpdateDate>
                    <LocationGroupLastUpdateDate>2013-11-03 07:14:17.839</LocationGroupLastUpdateDate>
                        <AddressLineOne>IBM UK Ltd</AddressLineOne>
                        <AddressLineTwo>Hursley Park</AddressLineTwo>
                        <ZipPostalCode>SO21 2JN</ZipPostalCode>
                        <CountryValue>Great Britain and N Ireland</CountryValue>
                        <AddressLastUpdateDate>2013-11-03 07:14:17.839</AddressLastUpdateDate>
                    <StartDate>2013-11-03 07:17:24.762</StartDate>
                    <ContactMethodGroupLastUpdateDate>2013-11-03 07:17:24.778</ContactMethodGroupLastUpdateDate>
                    <LocationGroupLastUpdateDate>2013-11-03 07:17:24.762</LocationGroupLastUpdateDate>
                        <ContactMethodValue>Social Network</ContactMethodValue>
                        <ContactMethodLastUpdateDate>2013-11-03 07:17:24.762</ContactMethodLastUpdateDate>
                    <StartDate>2013-11-03 07:12:03.523</StartDate>
                    <ContactMethodGroupLastUpdateDate>2013-11-03 07:12:03.57</ContactMethodGroupLastUpdateDate>
                    <LocationGroupLastUpdateDate>2013-11-03 07:12:03.523</LocationGroupLastUpdateDate>
                        <ContactMethodValue>Social Network</ContactMethodValue>
                        <ContactMethodLastUpdateDate>2013-11-03 07:12:03.289</ContactMethodLastUpdateDate>
                    <StartDate>2013-11-03 07:10:41.986</StartDate>
                    <PersonNameLastUpdateDate>2013-11-03 07:10:41.986</PersonNameLastUpdateDate>
                    <LastUpdatedDate>2013-11-03 07:10:41.986</LastUpdatedDate>

Does that sounds sensible? Are there any enhancements? For example, I wonder about standardization: I put an ‘@’ on my Twitter ID, but I can easily imagine several variations ending up in there. I’ll leave that as an exercise for another day!

Check out the MDM Developers community for much more useful MDM related posts, forums and other resources.


Getting Technical: Resources for MDM Developers

One reason for the lack of new posts here is that I’ve been attempting to write my first article for the Mastering Data Management blog. After several false starts, and falling back to old school pencil and paper to finally get going, it’s finally done! So, for anyone interested in master data management, here is the very latest Mastering Data Management front page hot off the press:

Getting Technical: Resources for MDM Developers

New home for MDM Workbench on developerWorks

If you’ve visited any developerWorks spaces recently, you’ll have noticed there’s been a bit of a change; the old spaces application has been sunset. All is not lost though, and redirects are in place for the various new homes for old spaces, including the MDM Workbench space.

Instead of just migrating from spaces to a group on My developerWorks, I took the chance to open it up to a wider community of MDM Developers. While I do miss some of the features of the old spaces, one big advantage of the new group is that it’s much easier for anyone to participate.

Apart migrating information from the old MDM Workbench space, most of the activity in the group so far has been new people joining, which is a great start. I’m also looking forward seeing who the first person to add a new bookmark or feed will be. (I’m almost tempted to have another little competition to encourage people with a much prized Hursley postcard, just for a bit of fun!)

Anyway, if you’re a developer working with any of IBM’s MDM products, have a look at the new MDM Developers group, and let me know if you have any comments or suggestions.

Master Information Hub: Customising a Maintenance UI

This is the third in a series of posts introducing Master Information Hub (MIH) development using the MIH Workbench. If you want to follow along with the example, you’ll need to take a look at the previous posts:

  1. Master Information Hub: Getting Started
  2. Master Information Hub: Social Bookmark Services

This post is just a few hints to get you started customising a maintenance UI generated for an MIH addition.

UML Diagrams

The user model generated in the previous post does not contain any diagrams. You can navigate and manipulate the model directly in the Project Explorer view but it is useful to have diagrams to show different aspects of the user model which you’re interested in, or when making modifications. There are a couple of quick ways to get UML diagrams depending on what you need them for.

If you’re just exploring the generated user model, Browse Diagrams can be handy. Right click on part of the model in the Project Explorer and choose, Visualize > Explore in Browse Diagram. For example, the diagram for Maintain Bookmark task looks like this:

Alternatively, when you want complete control over what to include in the diagram, or for editing the model, you can create a new Freeform Diagram. For the first modification to the user model I’m going to create a new freeform diagram called SocialBookmarkServices Domain. Right click on the model in Project Explorer and choose Add Diagram > Freeform Diagram. You can drag any model elements you’re interested in on to the new diagram from the project explorer, and you can add related elements automatically. For example, I added the following three user tasks:

…which leads neatly on to creating a domain for these user tasks.

SocialBookmarkServices Domain

The default user model does not include any domains, so when you initially log in you always have to switch to the goal view. One of Iain Duncan’s MDM Workbench blog posts explains how you can modify a generated user interface to only display the goal navigation method. To avoid making any code changes to the generated user interface, I’m going to create a new User Domain, so you can use both navigation methods instead. This approach would probably be more useful if your maintenance UI covers multiple modules.

Click on User Domain in the User Model section of the model palette, as shown below, and add it to the diagram.

Then use the Dynamic Connection to associate tasks to the new domain. You should have a diagram that looks something like this:

Use the Generate User Interface transformation configuration to regenerate the user interface; open the Generate User file and press the Run button on the Main tab. You can also use the context menu option to run the transformation, which is under Transform when you right click on the Generate User file.

Republish the web application and log in to see the new domain. You’ll notice that there are only two user tasks under the SocialBookmarkServices domain. This is because the addBookmark task appears in the user model as a non navigable supporting task for the Query Data goal. We’ll fix that in the next section.

Create Data Goal

To get the addBookmark task to appear in the domain navigation you could just set the isNavigable property to True on the supporting task stereotype. Instead, I’m going to go further and create a new User Goal for adding data.

Create a new Add Data Goal freeform diagram. Use the palette to create a new User Goal called Add Data Goal. Drag the Default Role user role and the addBookmark user task on to the diagram. Then simply associate both of these to the new goal using the Dynamic Connection, as shown here:

Regenerate and republish the web application and you should now see all three tasks in the domain navigation, plus a new goal in the goal navigation. Those task names don’t look all that friendly though but we change improve them very easily.

Task Names

The default task names are based on names from the module model, which may be obscure for someone using the maintenance UI. The task names aren’t actually too bad for the bookmark example but I would still prefer something a little less internal looking. The names on the UI are fully translatable using properties files in the UI’s help project, which makes it very easy to give them sensible names without needing to modify the generated user model.

Take a look in the generated ExampleHubUIHelp project. I needed to edit the file which was in the resources\i18n\ folder. Just edit the appropriate properties to modify what appears on the user interface, for example: Bookmark Bookmark Bookmark

After republishing the web application, this what all the modifications look like:

These are just a few ideas to get you started. If you change anything in the generated user model, make sure you remove the generated stereotype, otherwise your change may be lost if you regenerate the user model.

The maintenance UI looks slightly better after the modifications above, but it would be a bit easier to use if the SocialBookmarkServices model had some transactions that worked without knowing the primary key of all the bookmarks. Changing that will require some custom code in the MIH module as well as user model modifications, which should be enough for another post!

Updated: Added link to Adding related elements to a UML diagram post on developerWorks. (25 June 2010)

MDM Workbench developerWorks blog

I’m very excited to announce that the MDM Workbench now has its own dedicated blog on developerWorks! If you’ve found any of my MDM Workbench posts useful, I would definitely recommend taking a look. Iain might have been the last person in my team to start blogging but he’s already posted two great articles on the new blog:

I’ll also be using the new blog to post MDM Workbench news which I was previously featuring on the MDM Workbench space.

That isn’t the end of MDM posts here either; I’ll still be writing about my own views of MDM and the workbench, and hopefully continuing my Social Bookmarking example.

Master Information Hub: Social Bookmark Services

This is the second in a series of posts introducing Master Information Hub (MIH) development using the MIH Workbench. This time you’ll see how quick and easy it is to extend MIH and create a maintenance UI for your new domain, with no coding required. If you want to try this exercise yourself, make sure you have set up the development environment first. The sample I’ll be building is based on social bookmarking, but you could build any data model you like.

Create a Social Bookmark Services module

To begin, create a new Hub Module Project to work on your data model. Open the File menu and choose New > Project…, then look for InfoSphere Master Information Hub > Hub Module Project.

Give the project a suitable name, and enter the Java package name and service namespace you want to use. If this is the first module project in the workspace, you will also need to give the application a name and enter the database schema name. For example:

You should now have a new project containing an empty module model, which will be opened in the module editor. Switch to the SocialBookmarkServices editor’s Model page; this is where you will enter the data model for the new module. To start with, add a new entity and add a few simple attributes as follows.

Right click on the SocialBookmarkServices folder and choose New > Entity. Call the entity Bookmark. Next, right click on the Bookmark entity and choose New > Attribute to add each of the following attributes, making sure that all of the attributes have the Persistent option checked and the Type set to String:

  • Title
  • URL
  • Notes (check the Nullable option for this attribute to make it optional)

You should end up with something that looks like this:

Click on the Validate Model action to make sure there are no problems with the model, and fix any problems that are reported. Once the model validates successfully, click the Generate Code action to generate the MIH module implementation. Now for the fiddly bit…

Deploy the new hub application

When the code generation has finished, you need to follow a few additional manual steps to include the new module in the MIH application. Complete the tasks described in the following information center topic:

Modifying InfoSphere Master Information Hub using Workbench tools
> Developing InfoSphere Master Information Hub extensions and additions
> Deploying additions and extensions

We will only be using web services for this example, not XML over RMI, so you only need to complete these tasks:

  • Modifying the InfoSphere Master Information Hub database
  • Assembling the required property files
  • Preparing for deployment

Note: when running in the test environment, the server will have the contents of the CustomerResources project on its classpath, but to deploy an application on a production server, the properties.jar and DWLSchema.jar files in the MIH EAR need to be manually updated with the contents of the CustomerResources project.

Now the extended MIH application is ready to publish and use. If you followed the instructions in step 4 of the getting started post, you can right click on your server in the Servers view and choose Publish.

Create a hub client

That’s the awkward bit over. Now that the MIH application is deployed and running, you are likely to want to connect to it and run transactions. One way to simplify this is by creating a hub web service client. This is the way the automatically generated maintenance UI will connect to the MIH application, so create one now. Open the File menu and choose New > Project…, then look for InfoSphere Master Information Hub > Hub Web Service Client Project. I’ve based the client project name on the hub base name, since you probably won’t want a different client for every module. Fill in the rest of the fields and click next. These are the settings I used:

On the next page, make sure you select the OperationalCodeTypeService as well as the web services for the module you just created, as shown:

Click finish and wait for code generation to complete. Now for the fun bit!

Create a hub maintenance UI

One of the new features in the latest workbench is the ability to automatically generate a basic maintenance user interface. This uses information from module models in the client project to create a UML user model for the User Interface Generator. Even the command beans are taken care of automatically when the user interface is generated, connecting to your MIH application using the web service client. As before, open the File menu and choose New > Project…. This time you need InfoSphere Master Information Hub > Hub User Interface Project. Again, I’ve based the project name on the hub base name. Enter a Java package name for the generated code, and pick the target runtime you’re using. Click finish and wait for code generation to complete.

That’s all there is to it; deploy the generated web application to the same server as the MIH application using RSA. If you followed the same example, and your test server is using the default ports, you can open the maintenance UI using the following address.


Note: if your server is using a different port, you will need to update the service URLs used by the web service client. These are defined by the ejbModule/ file in the web service client project.

The generated user interface should provide a simple starting point for maintaining data in a custom MIH application, and it’s a great tool for development and demo purposes. In future posts I hope to show some simple ways you might want to alter the generated user model to customise this maintenance UI.

Master Information Hub: Getting Started

Like InfoSphere Master Data Management (MDM) Server, Master Information Hub (MIH) comes with Rational based model-driven tools to develop custom data domains. Without the rich data model which comes with MDM, the MIH Workbench will be essential to make use of MIH to master your own information. The blank canvas also makes MIH an ideal base for simple examples; I’ve been experimenting with a social bookmarking data domain which I hope will be a good way to demo some of the new workbench features, including the ability to create a complete domain with data stewardship user interface without writing a single line of code.

Although I plan to use the MIH Workbench for this example, the same features are available in the MDM Workbench. There are a few things to do before getting to the interesting bit though, and that’s what this post is about.

Installing the workbench

Unfortunately there are some pitfalls which can catch the unwary when installing the MIH Workbench. For example, there are some very specific prereqs which do not get checked at install time, so it’s worth spending a bit of extra time checking the documentation before you install. The readme, which does include workbench information, is available on the external information center, however the workbench installation documentation is only available in the PDFs and stand-alone information center provided with the product. (I’ll post a link if I do find it available on the internet in the future.)

If you do encounter any strange problems later (missing workbench functionality or a hang when generating web service clients being the most likely) the software requirements should be the first thing you check. In particular, because there can be problems getting the web service client generation ifix applied properly, I’ve used the latest fix pack level for RSA instead.

Prepare a new workspace

Once you have the workbench installed successfully, I recommend creating a clean new workspace. It’s important to use a short path length, for example C:\ibm\mih, to avoid Windows length limits when importing EAR files in to RSA. If you are not prompted to choose a workspace location when starting RSA, use the File > Switch Workspace… menu option instead.

Next open the Java EE perspective (click on the Show all option to find it in the list); this should prompt you to enable the required capability.

And finally, make sure the default JRE is WebSphere v7.0 JRE and the compiler compliance level is set to 1.6 in the workspace preferences.

Create a WebSphere profile

As well as a fresh workspace, I also create a new WebSphere profile for testing MIH applications. Launch the profile management tool from the Server > WebSphere Application Server workspace preferences page.

Note: the tool which will configure the WebSphere profile for MIH has very specific ideas about where this profile will be. Make sure you are using the WebSphere Application Server Test Environment installed using Installation Manager, and create your profile in the default location.

Use the advanced profile creation option to specify the following configuration settings:

  • create the server using the development template
  • disable administrative security
  • disable the option to run application server processes as a Windows service

After creating a new profile, add the server to the RSA Servers view to make it easier to publish the MIH application later. Open the server in the Servers view to change a couple of settings:

  • run with resources on server
  • never publish automatically

You can set the first of these while adding the server but when I do, I always forget to turn off automatic publishing- it just takes too long on my development machine!

Set up the development environment

After double checking the readme (there’s a specific section with Additional notes on the Development Environment Setup Tool) everything should be ready for a smooth run through the MIH Development and Test Environment (DEST) Wizard. Rather than running all the operations provided by the wizard in one go, I find it more reliable to complete the setup in five separate steps, with some checking along the way to confirm everything is going well.

This is the sequence I follow:

When using the DEST wizard, double check all the values it asks for. The defaults may not be correct for your system and not all the values are validated. These are the settings I used, where they differ from the defaults:

WebSphere version : WebSphere Application Server v7.0
Profile name :
[This should be the profile you created earlier]
Backup profile at :
WebSphere home : C:/Program Files/IBM/SDP75/runtimes/base_v7
Application distribution file : C:/Temp/MIH900_WAS_AIX.tar.gz
Unpack distribution file to : C:/MIHUNPACK
Deployment name : MIH
Temporary output folder : C:/MIHTEMP/MIH.ear
Database name : MIHDB

To find the DEST wizard for the steps below, open the File menu and choose New > Other…, then look for InfoSphere Master Information Hub > Development and Test Environment.

Step 1:

Run the Restore the Development Environment Setup Tool operation.

Step 2:

Run the first five operations:

  • Import Application Projects into Workspace
  • Customize Configuration Files
  • Backup WebSphere Profile
  • Configure WebSphere Profile
  • Create an Application Database

Check that the database was created correctly, for example using the Data perspective in RSA, and make sure that the data sources are working on the server:

  • Right click the server in the Servers view and choose Administration > Run administrative console
  • Open Resources > JDBC > Data sources in the navigation pane
  • Use the Test Connection option to verify the DWLConfig, DWLCustomer and EventManager data sources

Logs from the create database operation can be found in the following folders of the MIHDatabase project:

  • configRepository\DB2\Standard\ddl\CM\localrun
  • CoreData\DB2\Standard\ddl\CUST\localrun
  • WCCEM\DB2\Standard\ddl\EM\localrun

Step 3:

Run the next three operations :

  • Clean Projects
  • Build Projects
  • Export Application EAR

Hopefully you won’t hit any problems with these ones.

Step 4:

To make the development process a bit simpler, skip the Deploy Application to WebSphere Profile operation and use the standard tools provided with RSA instead. Right click on your server in the Servers view, choose Add and Remove Projects… and add the MIH project (you can use Add All >> if it’s the only project available).

Step 5:

Back to the DEST wizard for the final three operations :

  • Deploy Configuration
  • Import Installation Verification Project
  • Validate Installation

The first thing to check is the result of the install verification. Refresh the InstallVerification project in your workspace to pick up changes on the file system. You should find some response files in the testCases\xml_mih\response folder and, if all went well, they should contain ‘SUCCESS’ result codes!

If the response files contain an error, the Deploy Configuration operation is the most likely one to have gone wrong at this stage. Check whether the CONFIGELEMENT table contains any configuration data. If this table is empty, modify the Management Agent settings to connect to the database directly and rerun the Deploy Configuration operation; see this developerWorks forum post for details.

If rerunning the Deploy Configuration operation doesn’t fix the CONFIGELEMENT table or there were other errors, check the server and MIH logs. The MIH logs can be found in a logs folder in the CustomerResources project.

Next steps

Turn on automatic builds. (The DEST wizard turns this option off and it drives me crazy every time I forget to turn it back on!)

Please leave a comment and let me know if I’ve missed anything from these instructions so that I can improve them, however if you need help with a specific problem, the MDM Workbench forum on developerWorks is definitely the best place to ask.

Updated: added link to developerWorks forum post for tips on fixing configuration deployment problems. (4 February 2010)

Updated: added link to the next post in the series for creating your first simple MIH application. (19 March 2010)

Updated: added link to Installing MDM Workbench post on developerWorks. (17 April 2010)

Updated: added note about restrictions on WebSphere profile location. (25 June 2010)

Pic and Mix

Unfortunately decorating the bathroom is higher up the to do list than blogging at the moment — I’d rather be blogging as I’ve yet to gas myself typing on a computer! — so I haven’t had a chance to mention some cool and interesting things that have been cluttering up my list of open browser tabs. While I wait for the paint fumes to subside before going to bed, here are a few of them, in no particular order…

First from the Mix and Mash Blog, and giving this post its title, Pic and Mix project from Kent County Council: I wonder if Eastleigh do anything similar.

From John’s Random Musings, Exposing your WebSphere logs as ATOM feeds: definitely want to give this a try with MDM Server.

From, Twitterlogue: wish twitter had been around when I was in New Zealand. Brilliant.

From developerWorks, Leverage DataPower SOA Appliances to extend InfoSphere Master Data Management Server security capabilities: looks interesting but I haven’t had a chance to read it in detail yet.

And finally, also from developerWorks, two new articles for the user interface generator:

MDM Workbench white paper

If you’ve read my Setting up an MDM Server development environment post in the past, there is now a new white paper on the MDM Workbench developerWorks forum which I would definitely recommend taking a look at.

The White paper on using the MDM Workbench has updated information on setting up a development environment, with screen shots of the wizard used. It then takes you through subsequent tasks to create a working extension to the MDM Server, with essential information about working on the code in a team environment.

The information should provide a quick start for anyone new to the MDM Workbench. Please provide any feedback on the white paper in the forum thread.