13.07.2015 Views

TIBCO MDM Customization Guide - TIBCO Product Documentation

TIBCO MDM Customization Guide - TIBCO Product Documentation

TIBCO MDM Customization Guide - TIBCO Product Documentation

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>TIBCO</strong> ® <strong>MDM</strong><strong>Customization</strong> <strong>Guide</strong>Software Release 8.3.1October 2013Two-Second Advantage ®


| iiiContentsTables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ixFigures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiPreface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiiiChanges from the Previous Release of this <strong>Guide</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xivRelated <strong>Documentation</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv<strong>TIBCO</strong> <strong>MDM</strong> <strong>Documentation</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvOther <strong>TIBCO</strong> <strong>Product</strong> <strong>Documentation</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvTypographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiConnecting with <strong>TIBCO</strong> Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiHow to Join <strong>TIBCO</strong>mmunity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiHow to Access <strong>TIBCO</strong> <strong>Documentation</strong>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiHow to Contact <strong>TIBCO</strong> Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiiChapter 1 Customizing Roles, Menus, and Access Rights . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1Setting up Role-based Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Customizing Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Adding a New Menu: Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Changing Permissions for the New Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Customizing Roles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Filtering HTML Elements: Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Modifying Predefined Roles: Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Adding a New Role: Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Modifying or Deleting a User's Role Assignment: Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Tracking History of User, Role Assignments, and Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Configuring Password Policy Rulebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Differences between Software Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Chapter 2 Customizing User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17Customizing the Login Screen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 - Left Part. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 - Middle Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 - Right Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


iv| Contents4 - Bottom Left Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 - Bottom Middle Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 - Bottom Right Part . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Customizing Login Information Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Customizing Welcome Message Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Customizing Additional Information Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Customizing Contact Information Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Customizing Help Center Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Customizing Company Logo Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Customizing Title Bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Customizing the Landing Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Redirecting an Application Link to Custom Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Using Multiple Versions of General Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Redirecting Application Link to Custom Page in Google Web Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Redirecting from a Custom Page to the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Customizing GUI Colors and Logos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Customizing Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Style Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Customizing Logos and Images. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Customizing Workitem Forms and Email Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67How do Forms Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67XML Form Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Writing a Custom Work Item Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Compiling and Deploying the Custom Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Gathering Inputs from a User Using the Workitem Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Adding Repeating Elements in the Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Using Reserved XMLC IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<strong>Customization</strong> of HTML Labels Using Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84Customizing Other GUI Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Changing the Edit Box to Multi-line Edit Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Mouse Over Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Refresh Rate for Event Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Number of Days for Event List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Default Number of Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Display Date and Time Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Repository Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Chapter 3 Customizing Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Customizing Attributes and Attribute Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Customizing Record Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Configuring Value Based Security for Record List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Managing Relationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Contents| vConfiguring Security of Relationship Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94Suppressing Informational and Warning Validation Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96Customizing Validation Using a Java Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Customizing Standard Record Validations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98Chapter 4 Customizing Inbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101Customizing Work Item Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Variables Available for Rulebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Handling Hyperlinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Customizing Record Attribute Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Customizing the Sort Order of Work Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107Enabling and Configuring Work Item Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Enabling Work Item Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Configuring Work Item Locking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Chapter 5 Customizing Business Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Adding New Business Process Domains. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Defining a New Rule Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Defining New Conditions and Actions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Adding New Domain to an Existing Enterprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Adding New Conditions and Actions to Existing Rule Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Creating New Business Process Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Allowing Multiple Templates in a Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Defining a Custom Workflow Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Chapter 6 FileWatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121FileWatcher Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122FileWatcher Configuration Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Global Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123DataSet Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134ExportRecords Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Load Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136LoadImport Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Import Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138DataServiceQuery and DataServiceUpdate Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139ImportClassificationScheme Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Purge Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Advanced Purge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Publish and Validate Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


vi| ContentsUsing FileWatcher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Start FileWatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Disable FileWatcher. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Re-Initialize the Configuration File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148Check for Duplicate Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Concurrent File Loading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149Import Data using FileWatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149DataServiceUpdate actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Error Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Archiving Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Move Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Configuring FileWatcher to Import or Export Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Chapter 7 Customizing Data Synchronization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Customizing Format-Specific Attributes on GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Configuring Format-Specific Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Configuring Operation Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164Configuring Operation Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Configuring ResponseHandlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Configuring MessagingHandlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Role Derivation Rulebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Protocol Derivation Rulebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Configuring Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Chapter 8 Customizing Generic Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178Configuring Generic Screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Customizing <strong>Product</strong> Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Customizing Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181RFCIN Handling - Retailer Side. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182Customizing MarketPlace and TradingPartner Credentials. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184Customizing User Defined Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Chapter 9 Setting up GPC Classification Scheme Data Load (GDSN Only) . . . . . . . . . . . . . . 187Configuring GPC Classification Scheme Loading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Configuring Support for GPC Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Adding GPC drop-downs for Editing Records in a Repository. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Chapter 10 Setting up Data Quality Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Contents| viiRecord Duplicate Detection Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195Specifying Index Entities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Enabling Text Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200Running Netrics Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Restarting <strong>MDM</strong> Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Selecting Data Quality Workflows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Specifying Matching Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203Enabling Reference Repository Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Specifying Merge Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Selecting Match Record Approval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Matching Records Using MatchRecord Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212Merging Records Using MergeRecord Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Working with Work Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Types of Work Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Working with Merge Record screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223Scheduler Duplicate Detection Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Configuring Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230Specifying Matching Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Specifying Display Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Restarting <strong>MDM</strong> Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Selecting Scheduler Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Downloading Generated Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Chapter 11 Localizing Text Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241htmlresources.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242jsresources.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243SharedDBStringResources.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244SharedStringResources.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245UserText.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<strong>TIBCO</strong> General Interface (GI) Screens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247Extracting the Locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Customizing Resource Bundles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Customizing Resource Bundles on JBoss Application Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249Customizing Resource Bundles on WebSphere and WebLogic Application Servers. . . . . . . . . . . . . . . . . . 251Example 1: Customize Company Logo on Login screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Example 2: Customize Company Logo for Entire Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252Example 3: Customize Company Logo for an Enterprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .253Example 4: Customize Text Strings of a Set of Properties for Entire Application . . . . . . . . . . . . . . . . . . . . . 253Example 5: Customize Text strings of a Set of Properties for an Enterprise . . . . . . . . . . . . . . . . . . . . . . . . 254<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


viii| ContentsCreating Locale-specific Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Externalizing Buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Input Tag and Java Script Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256DIV Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258jsresources.properties File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Translating Dynamically Generated Text Created by Rulebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Translating Role Names and Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Translating Relationship Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Externalizing Text Displayed by Workflows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Translating Meta Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Repository Attribute Display Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Repository Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Repository Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Attribute Group Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265Attribute Group Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Loading Resource Bundles for Plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267Chapter 12 Setting up Data Extraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Data Extractor Interfaces and Concrete Implementations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Setting up Data Extractor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Context Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271IDataProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272IDataProcessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273AbstractDbDataProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274IBatchIterator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275IRowMapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Tables| ixTablesTable 1 General Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviiTable 2 Role Configuration Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Table 3 History Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Table 4 Default Term Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Table 5 Business Process Rule and Ruleset Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Table 6 Hidden Fields on UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Table 7 Redirecting an Application Link to Custom Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Table 8 Redirecting from a Custom Page to the Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Table 9 Sub Classes in styleforwidgets6.css . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Table 10 SharedStringResources.properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Table 11 Reserved XMLC IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82Table 12 Levels of Access and their Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Table 13 Rulebase Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Table 14 Hyperlinks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Table 15 Valid Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166Table 16 Conditional Parent and Child Relationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Table 17 Tag Names and Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Table 18 Resource Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Table 19 Externalized Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244Table 20 Prefix for Various Errors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


x| Tables<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Figures| xiFiguresFigure 1 RFCIN Handling - Retailer Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Figure 2 Record Duplicate Detection Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Figure 3 Cross-Repository Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204Figure 4 Cross-Repository Overlapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205Figure 5 Reference Repository Matching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Figure 6 Adding a Single Record . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213Figure 7 Bulk Import Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Figure 8 Match Record : Cross-Repository Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215Figure 9 Match Record : Reference Repositories Matching Workflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216Figure 10 Merge Record : InDocument mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Figure 11 Merge Record : Legacy mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Figure 12 Scheduler Duplicate Detection Process. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


xii| Figures<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| xiiiPreface<strong>TIBCO</strong> ® <strong>MDM</strong> is a tool to manage master data of your organization by providinga framework for governance, rules, and processes.This ensures accuracy and efficiency both inside the enterprise as well asthroughout the value chain so that multiple processes are optimally coordinated.<strong>TIBCO</strong> <strong>MDM</strong> delivers a multi domain horizontal platform to manage all types ofinformation including products, customers, vendors, reference data, tradingpartners, and so on.Topics• Changes from the Previous Release of this <strong>Guide</strong>, page xiv• Related <strong>Documentation</strong>, page xv• Typographical Conventions, page xvii• Connecting with <strong>TIBCO</strong> Resources, page xviii<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


xiv Changes from the Previous Release of this <strong>Guide</strong>|Changes from the Previous Release of this <strong>Guide</strong>This section itemizes the major changes to this guide from the previous release:Resource BundlesThe following new section has been created:• Customizing Resource Bundles on JBoss Application Server on page 249The following existing sections have been updated:• Example 1: Customize Company Logo on Login screen on page 252• Example 2: Customize Company Logo for Entire Application on page 252• Example 3: Customize Company Logo for an Enterprise on page 253• Example 5: Customize Text strings of a Set of Properties for an Enterprise onpage 254<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Preface| xvRelated <strong>Documentation</strong>This section lists documentation resources you may find useful.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Documentation</strong>The following documents form the <strong>TIBCO</strong> <strong>MDM</strong> documentation set:• <strong>TIBCO</strong> <strong>MDM</strong> Installation and Configuration <strong>Guide</strong>: Read this manual forinstructions on site preparation, installation, and configuration.• <strong>TIBCO</strong> <strong>MDM</strong> User’s <strong>Guide</strong>: This manual explains features and benefits of<strong>TIBCO</strong> <strong>MDM</strong> from the business user’s viewpoint. It describes the featuresand functionality as well as all the screens.• <strong>TIBCO</strong> <strong>MDM</strong> System Administrator’s <strong>Guide</strong>: This manual explains featuresrelevant to the system administrator.• <strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>: Read this manual to understand how theapplication can be customized to your enterprise needs.• <strong>TIBCO</strong> <strong>MDM</strong> Workflow Reference: This manual is a reference for automation ofbusiness processes.• <strong>TIBCO</strong> <strong>MDM</strong> Web Services <strong>Guide</strong>: This manual is a reference for using webservices.• <strong>TIBCO</strong> <strong>MDM</strong> Release Notes: Read the release notes for a list of new andchanged features. This document also contains lists of known issues andclosed issues for this release.Other <strong>TIBCO</strong> <strong>Product</strong> <strong>Documentation</strong>You may find it useful to read the documentation for the following <strong>TIBCO</strong>products:• <strong>TIBCO</strong> <strong>MDM</strong> Studio Installation <strong>Guide</strong>: Read this manual for instructions oninstallation of <strong>TIBCO</strong> <strong>MDM</strong> Studio.• <strong>TIBCO</strong> <strong>MDM</strong> Studio Process Designer User’s <strong>Guide</strong>: This guide is a reference fordesigning workflows using the <strong>TIBCO</strong> <strong>MDM</strong> Process Designer graphical userinterface.• <strong>TIBCO</strong> <strong>MDM</strong> Studio Process Designer Tutorial: This guide is a tutorial fordesigning workflows using the <strong>TIBCO</strong> <strong>MDM</strong> Process Designer graphical userinterface.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


xvi| Related <strong>Documentation</strong> • <strong>TIBCO</strong> <strong>MDM</strong> Studio Repository Designer User’s <strong>Guide</strong>: This guide is a referencefor designing repositories using the <strong>TIBCO</strong> <strong>MDM</strong> Repository Designergraphical user interface.• <strong>TIBCO</strong> <strong>MDM</strong> Studio Repository Designer Tutorial: This guide is a tutorial fordesigning repositories using the <strong>TIBCO</strong> <strong>MDM</strong> Repository Designer graphicaluser interface.• <strong>TIBCO</strong> <strong>MDM</strong> Studio Rulebase Designer User’s <strong>Guide</strong>: This guide is a referencefor designing rulebases using the <strong>TIBCO</strong> <strong>MDM</strong> Rulebase Designer graphicaluser interface.• <strong>TIBCO</strong> <strong>MDM</strong> Studio Rulebase Designer Tutorial: This guide is a tutorial fordesigning rulebases using the <strong>TIBCO</strong> <strong>MDM</strong> Rulebase Designer graphical userinterface.• <strong>TIBCO</strong> Enterprise Message Service software: This software allows theapplication to send and receive messages using the Java Message Service(JMS) protocol. It also integrates with <strong>TIBCO</strong> Rendezvous and <strong>TIBCO</strong>SmartSockets messaging products.• <strong>TIBCO</strong> BusinessWorks software: This is a scalable, extensible and easy to useintegration platform that allows you to develop and test integration projects.It includes a graphical user interface (GUI) for defining business processesand an engine that executes the process.• <strong>TIBCO</strong> BusinessConnect software: This software allows your company to sendand receive XML or non-XML business documents over the Internet. Based ona mutually agreed process flow and common document format, you and yourtrading partners can conduct secure and verifiable business transactionsonline.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Preface| xviiTypographical ConventionsThe following typographical conventions are used in this manual.Table 1 General Typographical ConventionsConventioncode fontbold codefontitalic fontKeycombinationsUseCode font identifies commands, code examples, filenames, pathnames, andoutput displayed in a command window. For example:Use MyCommand to start the foo process.Bold code font is used in the following ways:• In procedures, to indicate what a user types. For example: Type admin.• In large code samples, to indicate the parts of the sample that are ofparticular interest.• In command syntax, to indicate the default parameter for a command. Forexample, if no parameter is specified, MyCommand is enabled:MyCommand [enable | disable]Italic font is used in the following ways:• To indicate a document title. For example: See <strong>TIBCO</strong> BusinessWorks Concepts.• To introduce new terms For example: A portal page may contain severalportlets. Portlets are mini-applications that run in a portal.• To indicate a variable in a command or code syntax that you must replace.For example: MyCommand pathnameKey name separated by a plus sign indicate keys pressed simultaneously. Forexample: Ctrl+C.Key names separated by a comma and space indicate keys pressed one after theother. For example: Esc, Ctrl+Q.The note icon indicates information that is of special interest or importance, forexample, an additional action required only in certain circumstances.The tip icon indicates an idea that could be useful, for example, a way to applythe information provided in the current section to achieve a specific result.The warning icon indicates the potential for a damaging situation, for example,data loss or corruption if certain steps are taken or not taken.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


xviii Connecting with <strong>TIBCO</strong> Resources|Connecting with <strong>TIBCO</strong> ResourcesHow to Join <strong>TIBCO</strong>mmunity<strong>TIBCO</strong>mmunity is an online destination for <strong>TIBCO</strong> customers, partners, andresident experts. It is a place to share and access the collective experience of the<strong>TIBCO</strong> community. <strong>TIBCO</strong>mmunity offers forums, blogs, and access to a varietyof resources. To register, go to http://www.tibcommunity.com.How to Access <strong>TIBCO</strong> <strong>Documentation</strong>You can access <strong>TIBCO</strong> documentation here:http://docs.tibco.comHow to Contact <strong>TIBCO</strong> SupportFor comments or problems with this manual or the software it addresses, contact<strong>TIBCO</strong> Support as follows:• For an overview of <strong>TIBCO</strong> Support, and information about getting startedwith <strong>TIBCO</strong> Support, visit this site:http://www.tibco.com/services/support• If you already have a valid maintenance or support contract, visit this site:https://support.tibco.comEntry to this site requires a user name and password. If you do not have a username, you can request one.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 1Chapter 1Customizing Roles, Menus, and AccessRights<strong>TIBCO</strong> <strong>MDM</strong> uses role-based security to restrict and grant access to specificmenus. This feature controls the actions the user can or cannot perform, such asediting or creating certain records in a record list.This chapter describes customizations related to role-based security.Topics• Setting up Role-based Security, page 2• Customizing Menus, page 3• Customizing Roles, page 6• Tracking History of User, Role Assignments, and Permissions, page 11• Configuring Password Policy Rulebase, page 14• Differences between Software Editions, page 15<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


2 Chapter 1 Customizing Roles, Menus, and Access Rights|Setting up Role-based SecurityUsers’ access privileges are defined by the roles assigned to the user by the <strong>TIBCO</strong><strong>MDM</strong> Administrator. Privileges are based on the functions performed by a role.Users may be assigned one or more roles, with each role granting the user adifferent access privilege and level. <strong>TIBCO</strong> <strong>MDM</strong> includes standard pre-defined,out-of-the-box user roles. You can define your own custom roles in addition tothose to meet your specific business needs.Role-based security in <strong>TIBCO</strong> <strong>MDM</strong> is determined by negative logic. <strong>TIBCO</strong> <strong>MDM</strong>checks which functions are not allowed. Role-based security works on functionsassociated with HTML elements. Functions identify a logical group of work,primarily menu items. For example, the repository function groups all repositoryrelated functions together.There are two aspects of role-based security:• Dynamic menu generation: If you change the user roles, the menus areupdated the next time a page is refreshed.• Filtering HTML elements: Certain HTML elements can be added or removedbased on assigned user roles.HTML elements are the hyper links such as the add new record link. You cannotcontrol access to action links like ‘modify’, ’copy’ and so on that appear against alist entry on a page. Security is applied after the page is built.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Menus| 3Customizing MenusThe <strong>TIBCO</strong> <strong>MDM</strong> menus for any given user are generated dynamically, based onthe role or roles assigned to that user. Menus are built each time a page isdisplayed. If you change the user roles, the menus will be updated the next time apage is refreshed.Adding a New Menu: ProcedureTo add a new menu:1. Modify the $MQ_HOME\config\security\allmenu.xml to include the newmenu. This file lists all menus and URLs, and refers to functions by name.Creating a new menu requires one of the following:— Use of existing screens. No merging of applications is required in this case.— Use of new applications. Merging of a new application or servlet class isrequired in this case. The following steps show how to merge servletclasses.A typical menu class entry is as follows:Mass UpdateEmbeddedGIView?embed=42. Go to $MQ_HOME and extract EML.war from ECM.ear.3. If any servlet classes are required, place the compiled servlet classes in the$MQ_HOME\ECM.ear\EML.war\WEB-INF\classes\com.tibco.mdm.ui.utilfolder.4. Update the $MQ_HOME\ECM.ear\EML.war\WEB-INF\web.xml file to includethe new servlet classes ( and tags for theservlet class that you have added). The web.xml file is an index of all servletclasses used by the application.- .........................- ............................<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


4 Chapter 1 Customizing Roles, Menus, and Access Rights|5. Jar EML.war to add the new classes.6. Jar ECM.ear to add the updated EML.war.7. Update the allmenu.xml file to add the new servlet classes as added in theweb.xml file.8. Redeploy the ECM.ear file and restart the application server.ExampleLet us say you want to add a link that will allow you to access the user guide fromthe menu. To do this:1. Modify the allmenu.xml to include the following entry.User <strong>Guide</strong>temp/index.htmThis piece of code adds a menu item User <strong>Guide</strong> to the menu. When you clickon this menu item, it should open an HTML copy of the User <strong>Guide</strong> placed ina folder called temp.2. Go to $MQ_HOME and extract EML.war from ECM.ear.3. Copy the temp directory containing all the HTML files in theECM.ear\EML.war directory.4. Jar EML.war.5. Jar ECM.ear to add the updated EML.war.6. Redeploy the ECM.ear file and restart the application server.You should see the User <strong>Guide</strong> link in the menu. This link allows you to browsethrough an HTML version of the User <strong>Guide</strong>.u<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Menus| 5Changing Permissions for the New MenuYou can also ensure that the new menu is available or hidden depending on therole. For more information on customizing roles, refer to, Customizing Roles,page 6.• To ensure that the new menu is available only to authorized roles, update thedefaultdata.xml file. For the GDSN edition, the file is nameddefaultdata.gdsn.xml.• To hide the new menu item for some roles, add an entry in the FUNC2IDMAPtable for the custom menu item that you have added.By default, the new menu works for all new enterprises.As the roles and the ROLE2FUNCMAP table are created at the time of creating anenterprise, pre-existing enterprises will not receive the new menu correctly. You canwork around this constraint by writing update scripts, based on default data, toinsert records in the ROLE2FUNCMAP table. Contact <strong>TIBCO</strong> Support to get asample script.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


6 Chapter 1 Customizing Roles, Menus, and Access Rights|Customizing RolesRoles define groups of users with common privileges and responsibilities. Youcan also use roles to further define Workflow, GUI, and Catalog access behavior.You can modify pre-defined user roles, as well as define and create new ones.Tables for Role ConfigurationTable 2 Role Configuration TablesTable NameROLEROLE2FUNCMAPFUNCTIONFUNC2IDMAPHTMLELEMENTIDDescriptionThis table holds all the roles. When a new enterprise is created, all roles forthe enterprise are created, based on the$MQ_HOME/config/security/defaultdata.xml file.Note: For the GDSN edition, the file is named defaultdata.gdsn.xml.This table associates a role with functions that are not allowed for the role.The entries in this table are populated based on$MQ_HOME/config/security/defaultdata.xml when an enterprise iscreated.Note: For the GDSN edition, the file is named defaultdata.gdsn.xml.This table identifies menus and pseudo functions assigned to HTMLelements. It is either copied from seed data or populated.This table relates functions to HTML elements. It is either copied from seeddata or populated.This table stores all HTML elements, other than menus, which are to bemanaged.Filtering HTML Elements: ProcedureHTML filtering is required if you want to hide a link shown on the screen basedon roles assigned to the user. You cannot control access to action links like‘modify’, ’copy’ and so on that appear against a list entry on a page.To filter HTML elements:1. Find the HTML name on which the link appears.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Roles| 72. Open the HTML file and find the element ID which needs to be controlled. Ifthe element which you want to control does not have an ID, you need tocontact <strong>TIBCO</strong> Customer Support to assign an ID to it.3. If not already present, insert a corresponding new function in the FUNCTIONtable.4. If not already present, add a corresponding new element in theHTMLELEMENTID table.5. Add a corresponding record in FUNC2IDMAP table.6. Identify the ID of the role for which you want hide the HTML element.7. Add an entry for this role, and the function to the ROLE2FUNCMAP table.8. Restart the application server.If you do not restart the application server, the links are not hidden from the page.Example: HTML FilteringThe following example shows how to remove the add new record link from theTaxonomyViewServlet screen for a user with an admin role:1. Find the HTML name on which the link appears.2. Open the HTML file and find the element ID which needs to be controlled. Ifthe element that you want to control does not have an ID, you need to contact<strong>TIBCO</strong> to assign an ID to it. In this case, it is found to be acreateNP.3. If not already present, insert a corresponding new function in the FUNCTIONtable as follows:INSERT INTO FUNCTION ( ID, NAME, DESCRIPTION, FUNCTION ) VALUES( 66, 'add_new_record', 'Add New Record link','add_new_record');4. If not already present, add a corresponding new element in theHTMLELEMENTID table.INSERT INTO HTMLELEMENTID ( ID, NAME, PAGENAME ) VALUES ( 32480,'acreateNP','com.tibco.mdm.ui.repository.taxonomy.TaxonomyView');where NAME is the HTML element ID. Contact <strong>TIBCO</strong> Customer Support toget the PAGENAME.5. Add a corresponding record in the FUNC2IDMAP table.INSERT INTO FUNC2IDMAP ( ID, FUNCID, NAME, ELEMENTID,ELEMENTTYPE, SECURITY ) VALUES ( 100, 66, 'add_new_record',32480, 1, 3);<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


8 Chapter 1 Customizing Roles, Menus, and Access Rights|6. Identify the ID of the role for which you want hide the HTML element:a. Find the enterprise you want to modify and note the enterprise ID. In thisexample, 1234 is the enterprise ID. Name is case sensitive.Select * from enterprise where name =''.b. Find all of the roles created for the enterprise. A list of roles for theenterprise is displayed. The name is the name of the role that is assignedto a user.Select * from role where enterpriseID = ‘’c. Note the role name and the ID of the role you want to modify. Thisexample uses 32870 as the role ID.7. Add an entry for this role (identified in step 6), and the function (created instep 3) to the ROLE2FUNCMAP table.INSERT INTO ROLE2FUNCMAP (ID, ROLEID, FUNCID, NAME, PRIORITY)VALUES (100, 32870, 'add_new_record', 32480, 1);8. Restart the application server.Modifying Predefined Roles: ProcedureTo modify a pre-defined user role by changing the default menu allocation:1. Find the enterprise you want to modify and note the enterprise ID.2. Find all roles created for this enterprise.3. Note the name and ID of the role you want to modify.4. Run an SQL query to identify which menu you want to assign or remove forthis role.5. Note the ID of the menu you want to grant or remove.6. Modify entries in the ROLE2FUNCMAP table to change the role-to-functionassociation. This table contains the exclusions, so if a role-to-function entry isincluded in this table, the menu will not be displayed for the role.Example: Modifying Predefined RolesIn the following example of modifying pre-defined roles, the enterprise “Acme”has already been created. Use the following steps to change the default menuallocation:1. Find the enterprise you want to modify and note the enterprise ID. In thisexample, 1234 is the enterprise ID. The Name is case sensitive.Select id from enterprise where name = 'Acme'.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Roles| 92. Find all of the roles created for this enterprise. A list of roles for the enterpriseis displayed. The Name is the name of the role that is assigned to a user.Select id, name, description from rolewhere enterpriseID = 12343. Note the role name and the ID of the role you want to modify. This exampleuses 9876 as the role ID.4. Run the following SQL query to identify which menu you want to assign orremove for the role. The description indicates which function corresponds tothe identified menu.Select id, Name, description from function where id not in(28,29,26) and id < 305. Note the ID of the menu you want to grant or remove. This example uses 3456as the menu ID.6. Modify entries in the ROLE2FUNCMAP table to change the role-to-functionassociation.— To grant the menu to a role, remove the entry, if present.delete from role2funcmap where roleid = and funcid =— To deny a menu to a role, insert an entry.insert into role2funcmap(id, roleid, funcid, name, priority)values(mq_sequence_1.nextval, , , , 0Adding a New Role: ProcedureTo add a new role:1. Find the enterprise ID for which a role is to be added. For example, to find theenterprise ID, run the following query:select id from enterprise where name = '’;2. Pick a unique name for the new role.3. Add an entry for the new role in the role table.insert into role (id,enterpriseid,name,description,type,active,modmemberid, moddate,modversion,organizationtype)values(mq_sequence_1.nextval, , ,, 'ACCESS', 'Y',101,sysdate,1,)To deny menu or function to newly created role:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


10 Chapter 1 Customizing Roles, Menus, and Access Rights|1. Find the role id by running following query :select id from role where name = ’’ and enterpriseid= 2. Identify the menu or function to deny for the role and add the entries in theROLE2FUNCMAP table by using following query.insert into role2funcmap(id, roleid, funcid, name, priority)values (mq_sequence_1.nextval, , , ’’, 0);To deny multiple menus to a role, entry for each menu needs to be added in theROLE2FUNCMAP table.Modifying or Deleting a User's Role Assignment: ProcedureThe following steps assume you have the appropriate access permissions. Tomodify or delete a user assigned to a role:1. Click the Show Users link to the right of the appropriate user role.2. To modify a user who is assigned to a role, click Modify. The Modify Userscreen displays.3. Optionally, to delete a user assigned to a role, click Delete. The Delete Userscreen displays.4. From the Modify User (or Delete User) screen, change the user accountinformation as needed.5. Click Save to apply the modification or deletion to the user account and roleassignments.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Tracking History of User, Role Assignments, and Permissions| 11Tracking History of User, Role Assignments, and PermissionsHistory of permissions, user, and role assignments can be managed throughhistory tables. These history tables keep track of all changes to the appropriatetables. When changes are made to the table, the changes are captured by triggersand copied to the history tables.You can manage the history of:Table 3 History TablesTableHistory TableUsers MEMBER MEMBERHISTORYRole assignments ROLEASSIGNMENT ROLEASSIGHISTORYPermissions RESOURCEACL RESOURCEACLHISTORYUsers (MEMBERHISTORY Table)The MEMBER table is used to store user information. When changes are made tothe MEMBER table, the old information is stored in the MEMBERHISTORY table.The triggers capture information when:• Data is inserted into the MEMBER table• Data from the MEMBER table is modified (an entry is added to the table)• Data is deleted from the MEMBER table. In this case, an inactive entry isadded to history table. However, the timestamp is the same as the system dateand modmemberID is the same as the old member record.• When an user is deleted, it is done by updating the Active column to N. Thisinvokes the update trigger. However, no entries are made into theROLEASSIGHISTORY and ResourceACLHistory tables.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


12 Chapter 1 Customizing Roles, Menus, and Access Rights|Role Assignments (ROLEASSIGHISTORY Table)The ROLEASSIGMENT table maintains assignment of roles to users. Whenchanges are made to the ROLEASSIGNMENT table, the old information is storedin the ROLEASSIGHISTORY table.A change to the ROLEASSIGMENT table role is always accompanied with achange to the MEMBER table (the member version is incremented). TheROLEASSIGHISTORY table inherits the member version from the MEMBERtable.This history table has MEMBERID, MEMBERVERSION as the set keys. All rolesassigned for the specific version can be found for this combination.Permissions (RESOURCEACLHISTORY Table)When resource ACLs are modified, all the ACLs are assigned the same timestamp so that they are identified as one complete set. The timestamp is the onlyway to identify a set.The history table maintains the full set of permissions associated with the memberor role. Set keys are RESOURCETYPE, GRANTEEID, MODDATE.To find out permissions granted to a resource, identify one complete set ofpermissions using RESOURCETYPE, GRANTEEID, MODDATE. Select the setwhich has same time stamp for a GRANTEEID, RESOURCETYPE. This setrepresents the total permissions for the grantee of that resource type. As "Createpermissions" are stored with resource ID = 0, you can have two resource IDs inthis set, that is, 0 and the specific resource ID.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Tracking History of User, Role Assignments, and Permissions| 13When permissions are deleted for a grantee through the UI, the existing set isadded to the history table with active = N. In this case, the history table has thecorresponding deleted entries as the trigger is also fired for an update. However,when permissions are changed, permissions are deleted and re-added. In thiscase, the history table only has the new set.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


14 Chapter 1 Customizing Roles, Menus, and Access Rights|Configuring Password Policy RulebaseYou can apply certain policies for valid passwords.1. Define a rulebase file that contains the validation rules for the user passwords.2. Upload this file to the $MQ_COMMON_DIR//rulebase/ directory.A sample file (standard/rulebase/rbpasswdval.xml) is available but thisfile is not used unless it is copied to the enterprise-specific directory.3. Specify the name of the file in Configurator (Configurator > Rule Base >Password Validation Rules File). It is recommended that the default filename (rbpasswdval.xml) be used whenever possible.The application uses this file to ensure that the password specified is per the rules.• If the file name is not specified in Configurator, no validation is done.• If a file name is specified, and the file is not found, a warning message isissued and the file is ignored.• The rulebase is used to generate a Java script which is added to the passwordfields. It does not have access to any other context variables, such as, theSESSION context variables. For more details on the context variables that canbe used in the rulebase, refer to the <strong>TIBCO</strong> <strong>MDM</strong> Rulebase <strong>Guide</strong>.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Differences between Software Editions| 15Differences between Software EditionsThis section highlights the differences between the GDSN and <strong>MDM</strong> softwareeditions. The default edition is <strong>MDM</strong>.Default Terminology DifferencesYou will notice the following terminology differences in both the editions:Table 4 Default Term ChangesGDSN NameSynchronizeTrading Partner<strong>MDM</strong> NamePublishBackend SystemDatapool —Roles (GDSN only)Roles specific to the GDSN edition are: Channel Manager and Sales Rep.Enterprise Creation (GDSN only)For the <strong>MDM</strong> edition, no options are shown while creating an enterprise. Thefollowing Enterprise Type names are specific to the GDSN edition.• Supplier• Retailer• DatapoolBusiness Process RulesSome Business Process rules are specific to the software editions as listed in thefollowing table:Table 5 Business Process Rule and Ruleset ChangesGDSN NameMaster Catalog SelectionUnknown Partner Alert<strong>MDM</strong> NameRepository SelectionUnknown System Alert<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


16 Chapter 1 Customizing Roles, Menus, and Access Rights|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 17Chapter 2Customizing User InterfaceYou can customize several functions within <strong>TIBCO</strong> <strong>MDM</strong> to suit your businessenvironment without changing the application’s source code.This document describes different environment customization options availablein <strong>TIBCO</strong> <strong>MDM</strong>, and is meant for advanced users and <strong>TIBCO</strong>’s ProfessionalServices team. Such customization does not need any changes to the applicationcode.To make the best use of this chapter, you should be familiar with:• All basic features of <strong>TIBCO</strong> <strong>MDM</strong>• Basic XML editing• Basic SQL syntaxTopics• Customizing the Login Screen, page 18• Customizing the Landing Page, page 25• Redirecting an Application Link to Custom Page, page 27• Redirecting from a Custom Page to the Application, page 35• Customizing GUI Colors and Logos, page 42• Customizing Workitem Forms and Email Templates, page 67• Customizing Other GUI Elements, page 85<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


18 Chapter 2 Customizing User Interface|Customizing the Login ScreenYou can customize images, colors, and text displayed on the Login screen.<strong>Customization</strong> of the Login screen is a static change and the changes are persistedwithin the period of application server run time.Changes are done by modifying:• Images in the ECM.ear > EML.war > images folder.• CSS styles in the ECM.ear>EML.war>css/styleforwidgets6.css file.• Modifying text strings in the htmlresources.properties resource bundle.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing the Login Screen| 19<strong>TIBCO</strong> <strong>MDM</strong> Login page consists of six parts as show in the following figure.1 - Left PartThis is a DIV HTML tag with ID as 'leftDiv0', style width 156 pixels, and CSSclass names as 'loginLeftCol' and 'loginLeftColHeader'. The CSS class'loginLeftColHeader' has the background image'CIM_Landing_HeaderLeft.jpg' which can be customized. Modify the imageand repackage it within the EML.war file.2 - Middle PartThis is a DIV HTML tag with ID as 'moddleDiv0' and CSS class names as'loginMiddleCol' and 'loginMiddleColHeader'. The CSS class'loginMiddleColHeader' has the background image 'CIM_Landing_Header.jpg'which can be customized. Modify the image and repackage it within the EML.warfile.This part consists of:• Login information box• Welcome message box<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


20 Chapter 2 Customizing User Interface|3 - Right PartThis is a DIV HTML tag with ID as 'rightDiv0', style width 156 pixels, and CSSclass names as 'loginRightCol' and 'loginRightColHeader'. The CSS class'loginRightColHeader' has the background image'CIM_Landing_HeaderRight.jpg' which can be customized. Modify the imageand repackage it within the EML.war file.4 - Bottom Left PartThis is a DIV HTML tag with ID as 'leftDiv1', style width 156 pixels, and CSSclass name as 'loginLeftCol' and 'loginLeftColHeader1'. The CSS class'loginLeftColHeader1' has the background color '#F2F2F2' which can becustomized. Modify it and repackage it within the EML.war file.5 - Bottom Middle PartThis is a DIV HTML tag with ID as 'moddleDiv1' and CSS class name as'loginMiddleCol' and 'loginMiddleColHeader1'. The CSS class'loginMiddleColHeader1' has the background color '#FFFFFF' which can becustomized. Modify it and repackage it within the EML.war file.This part consists of:• Additional information box• Contact information box• Help center box• Company Logo box6 - Bottom Right PartThis is a DIV HTML tag with ID as 'rightDiv1' and CSS class name as'loginRightCol' and 'loginRightColHeader1'. The CSS class'loginRightColHeader1' has the background color '#F2F2F2' which can becustomized. Modify it and repackage it within the EML.war file.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing the Login Screen| 21Customizing Login Information BoxThe text with in this box can be customized by extracting the following resourcekeys from htmlresources.properties resource bundle into theCustomhtmlresources.properties resource bundle.• com.tibco.mdm.ui.directory.security.login.index.aboutLbl• com.tibco.mdm.ui.directory.security.login.index.langLbl• com.tibco.mdm.ui.directory.security.login.index.enterpriseName• com.tibco.mdm.ui.directory.security.login.index.userName• com.tibco.mdm.ui.directory.security.login.index.passwordNameTo customize text 'Login', extract the 'Login' key from jsresources.propertiesresource bundle into the Customjsresources.properties resource bundle.Customizing Welcome Message BoxThe text within this box can be customized by extracting the following resourcekeys from the htmlresources.properties resource bundle into theCustomhtmlresources.properties resource bundle.• com.tibco.mdm.ui.directory.security.login.index.loginWelcomeHeader• com.tibco.mdm.ui.directory.security.login.index.loginWelcomeContents<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


22 Chapter 2 Customizing User Interface|Customizing Additional Information BoxThe text with in this box can be customized by extracting the following resourcekeys from the htmlresources.properties resource bundle into theCustomhtmlresources.properties resource bundle.• com.tibco.mdm.ui.directory.security.login.index.additionalInfoHead• com.tibco.mdm.ui.directory.security.login.index.additionalInfoCustomizing Contact Information BoxThe text in this box can be customized by extracting the following resource keysfrom the htmlresources.properties resource bundle into theCustomhtmlresources.properties resource bundle.• com.tibco.mdm.ui.directory.security.login.index.loginContactInfoHeader• com.tibco.mdm.ui.directory.security.login.index.loginContactInfoSubHeaderCustomizing Help Center BoxThe text with in this box can be customized by extracting the following resourcekeys from the htmlresources.properties resource bundle into theCustomhtmlresources.properties resource bundle.• com.tibco.mdm.ui.directory.security.login.index.loginCommunityHeaderTxt<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing the Login Screen| 23• com.tibco.mdm.ui.directory.security.login.index.commContentHeader2• com.tibco.mdm.ui.directory.security.login.index.commContent2Customizing Company Logo BoxTo change the company logo on the login screen, modify'<strong>TIBCO</strong>_PowerOfNow_Logo.jpg' file in ECM.ear > EML.war/images folder andrepackage it within EML.war.To change the copyright text, extract the resource key'com.tibco.mdm.ui.directory.security.login.index.loginCopyright'from the htmlresources.properties into theCustomhtmlresources.properties and then modify.Customizing Title BarThe Title Bar of the application displays the following:Application Name: Screen Description - Screen ID:Application Provider NameFor example, <strong>MDM</strong>:Login-900:<strong>TIBCO</strong> Software Inc.where• Application Name refers to <strong>MDM</strong>• Screen Description refers to Login• Screen ID refers to 900• Application Provider Name refers to <strong>TIBCO</strong> Software Inc.To customize the title bar, launch Configurator. Go to InitialConfig >Miscellaneous and change the value for Application name and Applicationprovider Name properties.However, the Application name and Application provider Name propertiesare optional. If you do not specify any of these properties, corresponding sectionof the title bar is omitted.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


24 Chapter 2 Customizing User Interface|If Application provider Name is not specified, the title bar displays:Application name: Screen description - Screen IDIf Application name is not specified, the title bar displays:Screen description - Screen ID: Application provider Name<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing the Landing Page| 25Customizing the Landing PageThe landing page is the first page which is displayed after logging in. By default,the Inbox is the landing page. After a session expires and you log in to theapplication again, the landing page changes.Using a map file, urlmap.prop, the landing page is mapped to a user role and isexternalized. It is similar to the rolemap.prop map file used in single sign on.Using a text editor you can edit the mapping and specify the URL of the landingpage.The mapping of roles to the landing page is enterprise specific so that differentmappings can be used for multi-tenancy. The urlmap.prop file is stored inenterprise directory similar to the rolemap.prop file.The urlmap.prop file is searched in the enterprise specific directory, followed by/standard directory. However, if the urlmap.prop file is not found in thespecified directory, Inbox is selected as the landing page.The sample urlmap.prop file.rolename=URLSUPERUSER=EnterpriseList?action=list&menulink=Enterprise ProfilesRepository\Manager=CatalogList?menulink=Master CatalogsAdmin=MemberList?menulink=User AccountsAdmin=RoleListTo customize the landing page:• Specify the complete URL in rolename=URLThe URL must be similar to the URL specified in allmenu.xml file. Do notspecify the menulink parameter if the URLs do not correspond to the menus.The role name refers to role as defined in the ROLE table. The role nameappears in various UI screen. However, as the role names are also translatedusing the resource bundle, avoid using the translated role name in themapping.• If the role name contains a blank space, specify the URL which maps to an<strong>MDM</strong> screens in Repository\Manager=URL.If more than one role is assigned, each role can have different landing pages. Theorder of the list in the urlmap.prop file determines the landing page. Forexample, if you have Admin and RepoManager roles and the order of the entriesin urlmap.prop file are as follows:Admin=url1RepoManager=url2URL1 is selected as the landing page.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


26 Chapter 2 Customizing User Interface|RepoManager=url2Admin=url1URL2 is selected as the landing page.Hot DeploymentTo enable hot deployment, set the propertycom.tibco.cim.customize.firstpage to true in the Configurator.When hot deployment is initiated, the URL map is cleared and reloads the page.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting an Application Link to Custom Page| 27Redirecting an Application Link to Custom PageThe following screens can be customized in <strong>TIBCO</strong> <strong>MDM</strong>:• Record Add• Record View• Record Modify• Inbox (work item list)• Work Item detailThese changes are applied to all repositories in an enterprise.Hidden fields available on each UI screen are listed below. These fields can bepassed to custom applications launched from the application.Table 6 Hidden Fields on UIHidden Field ID NameEnterprise ID ENTERPRISE_ID enterpriseidEnterprise Name ENTERPRISE_NAME enterprisenameUser Name/ LoginNameENTERPRISE_USER_NAMEenterpriseusernameUser ID ENTERPRISE_USER_ID enterpriseuseridMerging Custom ApplicationPerform the following steps to merge custom <strong>TIBCO</strong> General Interface or GWTapplication to ECM.ear:1. Create a temporary directory, newECM.md c:\newECM2. Change directory to newECM.cd c:\newECM3. Extract %MQ_HOME%\ECM.ear:EML.war.%JAVA_HOME%\bin\jar -xvf %MQ_HOME%\ECM.ear EML.war4. Create a directory newEML.war.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


28 Chapter 2 Customizing User Interface|md newEML.war5. Change directory to newEML.war.cd newEML.war6. Extract ..\EML.war.%JAVA_HOME%\bin\jar -xvf ..\EML.war7. Change directory for GI or GWT— For GI: cd JSXAPPS— For GWT: cd GWTAPPS8. Create and copy the GI or GWT project as follows:a. Create your GI or GWT project directory.— For GI: md CIMTestGIProject— For GWT: md CIMTestGWTProjectb. Copy your CIMTestGIProject or CIMTestGWTProject project contentfolders manually to C:\CIMTestGIProject or C:\CIMTestGWTProject.Make sure the name of your project is the same as the folder name in the Cdrive.c. Copy your GI or GWT project.— For GI: xcopy /E /Y C:\CIMTestGIProject CIMTestGIProject— For GWT: xcopy /E /Y C:\CIMTestGWTProject CIMTestGWTProject9. Change directory to newEML.war.cd ..10. Create a new EML.war.%JAVA_HOME%\bin\jar -cvfM ..\EML.war *11. Change directory to newECM.cd\newECM12. Copy %MQ_HOME%\ECM.ear file.copy %MQ_HOME%\ECM.ear13. Update new EML.war into ECM.ear.%JAVA_HOME%\bin\jar -uvf ECM.ear EML.war14. Set the relevant properties using the Configurator (Advanced > UI<strong>Customization</strong>). For example, for redirecting to custom Add Record from a<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting an Application Link to Custom Page| 29custom GI-based Add Page, enter the value box next to the Add RecordExternal URL property and press Enter:— For GI: GIClient?jsxapppath=JSXAPPS/CIMTestGIProject— For GWT: GWTClient?action=addRecordYou need to append a different set of parameters to the specified custom pageURL depending on the URL that is being customized. If no values are set in theseproperties, the application uses default pages.The following table lists the parameters for each custom page.Table 7 Redirecting an Application Link to Custom PagesCustomizablePageAdd Record UI <strong>Customization</strong> >Add Record ExternalURLConfigurator Option Parameters DescriptionmastercatalognameName of the repository towhich the record is beingadded.Modify Record UI <strong>Customization</strong> >Modify RecordExternal URLmastercatalognameproductidproductidextmodversionName of the repository towhich the record is beingadded.PRODUCTID attribute of therecord.PRODUCTIDEXT attribute ofthe record (this can be null).The version of the recordbeing modified.This parameter is optional.If this parameter is notspecified, the latest version ofthe record will be attemptedfor modification.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


30 Chapter 2 Customizing User Interface|Table 7 Redirecting an Application Link to Custom PagesCustomizablePageView Record UI <strong>Customization</strong> >View RecordExternal URLConfigurator Option Parameters DescriptionmastercatalognameName of the repository towhich the record is beingadded.productidPRODUCTID attribute of therecord.productidextPRODUCTIDEXT attribute ofthe record. This can be null.modversionThe version of the recordbeing modified.This parameter is optional.If this parameter is notspecified, the latest version ofrecord will be attempted forview.Work Item List(Inbox)UI <strong>Customization</strong> >Work List ExternalURLusernameUsername (login ID) of theuser whose work item list isneeded. This can be onlyspecified when the requestinguser has WorkSupervisorpermissions.By default it will retrieveworklist for the user in thecurrent login profile.organizationnameThe company name to whichthe user belongs (same asspecified in login screen).Work Item Detail UI <strong>Customization</strong> >Work Item ExternalURLwork itemidusernameorganizationnameA reference to the work item.Username (login ID) of theuser whose worklist isneeded.The organization to which theuser belongs.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting an Application Link to Custom Page| 3115. Deploy new ECM.ear which is in folder newECM into the application server.The default GI version is 3.7.1.16. Login to the application by accessing the URL.17. Navigate to the screen which you have redirected to a custom page. Forexample, if you have redirected the Add Record screen to a custom page,navigate to the Add Record screen. The custom GI page should be displayed.Using Multiple Versions of General InterfaceThis release of the application ships with General Interface (GI) version 3.6.1. Ifyou have custom pages created using another version of GI, do the following:You can not overwrite version 3.6.1. The InputMap and OutputMap functionalityruns on version 3.6.1. If version 3.6.1 is overwritten, the InputMap andOutputMap functionality may not work as expected.1. Create a new directory in any location. For example, C:\NewGI.2. Copy your GI project to the newly created directory including JSXAPPSfolder. For example, copy the$MQ_HOME/common/standard/samples/JSXAPPS folder to the NewGIdirectory.3. Copy the required GI libraries, GI_HOME/JSX folder, to the newly createddirectory. For example, copy C:\tibco\gi\3.4\JSX to the C:\NewGI folder.4. Expand the ECM.ear using the jar command as follows.a. Create a temporary directory called newECM and copy ECM.ear to thisdirectory.b. Execute the following command to expand $MQ_HOME/ECM.ear intonewECM/ECM.ear folder:c. $JAVA_HOME/bin/jar -xvf $MQ_HOME/ECM.ear<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


32 Chapter 2 Customizing User Interface|5. Expand EML.war using the jar command as follows.a. Create a temporary directory newEML and expand ECM.ear/EML.war tothis directory.b. Execute the following command to expand EML.war intonewECM/newEML/EML.war.$JAVA_HOME/bin/jar -xvf ../ECM.ear/EML.warcd EML.war.You should see two folders JSXAPPS and JSX. The JSXAPPS folder containsthe application files of General Interface (GI) and the JSX folder containsthe GI libraries.6. Copy the newly created directory under EML.war.7. Copy the custom GI project to the JSXAPPS folder under the EML.war folder.8. Use the jar command and re-create the EML.war and the ECM.ear as follows.a. From the EML.war folder, execute following command to re-createEML.war file in ECM.ear folder.$JAVA_HOME/bin/jar -cvf ../../ECM.ear/EML.war ./*.*b. Change to the ECM.ear folder:cd ../../ECM.earc. From the ECM.ear folder, execute the following command to re-create theECM.ear file:$JAVA_HOME/bin/jar -cvf ../ECM.ear ./*.*9. Verify that the NewGI/JSX and NewGI/JSXAPPS are in EAR (ECM.ear >EML.war > NewGI > JSX and ECM.ear > EML.war > NewGI > JSXAPPS).10. Set the relevant properties using the Configurator (Advanced > UI<strong>Customization</strong>). Change the URL accordingly for JSX path. For example:GIClient?jsxapppath=NewGI/JSXAPPS/CIMTestGIProject&amp;jsxsrc=NewGI/JSX/js/JSX30.jsPath provided for jsxsrc is case sensitive. If jsxsrc is not specified in the URL,the default JSX libraries are used.11. Redeploy and restart the application server.12. Login to the application.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting an Application Link to Custom Page| 3313. Navigate to the screen which you have redirected to a custom page. Forexample, if you have redirected the Add Record screen to a custom page,navigate to the Add Record screen. The custom GI page should be displayed.To verify the GI version used by the application, press Alt + Ctrl + Shift + J afterloading the GI application. A popup with the details of the GI version isdisplayed.Redirecting Application Link to Custom Page in Google Web ToolkitGoogle Web Toolkit (GWT) allows you to develop a web based application inJava. Using Google Web Toolkit, you can enhance the custom page as per yourrequirement. It also reduces the loading time required for general interface.1. Merge your web application war into EML.war inside ECM.ear. For moreinformation, refer to Merging Custom Application on page 27.— If you use any of the <strong>TIBCO</strong> <strong>MDM</strong> classes such as IMqSessionProfile,you may have to build your application or servlet against <strong>TIBCO</strong> <strong>MDM</strong>classes.— If you use session ID of the currently logged in <strong>TIBCO</strong> <strong>MDM</strong> user, forexample, while requesting a web service, then following code snippet is notrequired. You can get the session ID from HTTP session.String sessionId = request.getSession(false).getId();2. Extract information such as username, enterprisename, catalogname, and soon specific to the functionality, which you want to customize. Some of thisinformation may be passed to the URL as request parameters; while the restcan be extracted from MqSessionProfile stored in the HTTP session.// Get User profile object stored in Http sessionIMqSessionProfile userProfile =(IMqSessionProfile)request.getSession().getAttribute(IMqSessionProfile.SESSION_PROFILE);//Get informtion like username, enterprisename, sessionidString entepriseName = userProfile.getAttr("ENTERPRISE_NAME");String userName = userProfile.getAttr("USER_NAME");3. Add the relevant configuration for the new servlet into the web.xml inECM.ear\EML.war\WEB-INF.GWTClientcom.tibco.mdm.ui.infrastructure.CimToGwtServlet<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


34 Chapter 2 Customizing User Interface|4. Update new EML.war into ECM.ear using the following parameter:%JAVA_HOME%\bin\jar -uvf ECM.ear EML.war5. Set the relevant properties using the Configurator (Advanced > UI<strong>Customization</strong>).For example, for redirecting to custom Add Record from a custom GWT basedAdd Page, enter the value box next to the Add Record External URL propertyand press Enter. You need to append a different set of parameters to thespecified custom page URL depending on the URL that is being customized.For more information, refer to Redirecting from a Custom Page to theApplication on page 35.If no values are set in these properties, the application uses default pages.6. Deploy the updated ECM.ear into the application server.7. Log on to the application by accessing the URL.8. Navigate to the screen which you have redirected to a custom page. Forexample, if you have redirected the Add Record screen to a custom page,navigate to the Add Record screen. The custom GWT page should bedisplayed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting from a Custom Page to the Application| 35Redirecting from a Custom Page to the ApplicationThe following application screens can be hyperlinked from any other applicationor custom screens:• Record Add• Record View• Record Modify• Record History• Record Compare• Browse and SearchTable 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionRequired?Record Addhttp://host:port/eml/Add<strong>Product</strong>?htmlaction=add&mastercatalogname=value&init=true&hiddenWFCheck=default&initrecordbundle=true&retURL=BrowseRepository?&hiddenCriteriaPaneShown=true&hiddenViewAllClicked=true&currentPageNum=1&pageSize=50&goToPageNum=1&pageRequest=0&Direction=NEXT&popup=ycontextShould be in format:loginname=a%26enterprisename=test_enterprise%26passwd=a%26correlationID1=1234. The values tosubstitute are:• loginname =username to access theapplication• passwd= password toaccess the application• enterprisename=company nameYesNote: Add a valuefor themastercatalognameattribute.mastercatalognameName of the repository towhich the record is beingadded.Yes<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


36 Chapter 2 Customizing User Interface|Table 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionRequired?Record Viewhttp://host:port/eml/GWTRecordUI?mastercatalogname=value&prodid=value&idext=value&productID=value&productExt=value&initrecordbundle=true&htmlaction=view&init=true&hiddenWFCheck=Y&hasOpenWI=N&can_edit_in_wf=Y&canedit=Y&popup=yNote: Add a valuefor followingsattributes:contextShould be in format:loginname=a%26enterprisename=test_enterprise%26passwd=a%26correlationID1=1234. The values tosubstitute are:• loginname =username to access theapplication• passwd= password toaccess the application• enterprisename=company nameYes• mastercatalogname• prodid• idext• productID• productExtmastercatalognameName of the repository towhich the record is beingadded.YesproductIDPRODUCTID attribute ofthe record.YesproductExtPRODUCTIDEXTattribute of the record.Can benull<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting from a Custom Page to the Application| 37Table 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionRequired?RecordModifyhttp://host:port/eml/GWTRecordUI?mastercatalogname=value&prodid=value&idext=value&productID=value&productExt=value&initrecordbundle=true&htmlaction=modify&init=true&hiddenWFCheck=Y&hasOpenWI=N&can_edit_in_wf=Y&canedit=Y&popup=yNote: Add a valuefor followingsattributes:contextShould be in the followingformat:loginname=loginname=a%26enterprisename=test_enterprise%26passwd=a%26correlationID1=1234.The values to besubstituted are:• loginname =username to access theapplication• passwd= password toaccess the application• enterprisename=company nameYes• mastercatalogname• prodid• idext• productID• productExtmastercatalognameName of the repository towhich the record is beingadded.YesproductIDPRODUCTID attribute ofthe record.YesproductExtPRODUCTIDEXTattribute of the record.Can benull<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


38 Chapter 2 Customizing User Interface|Table 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionWorkitemListhttp://host:port/eml/Inbox?&menulink=InboxcontextShould be in the followingformat:loginname=a%26enterprisename=test_enterprise%26passwd=a%26correlationID1=1234.The values to substituteare:• loginname =username to access theapplication• passwd= password toaccess the application• enterprisename=company nameRequired?Yes<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting from a Custom Page to the Application| 39Table 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionRecordComparehttp://host:port/eml/RecordCompare?&mastercatalogname=value&closeOnOK=true&htmlaction=showRecordCompare&Direction=NEXT&retURL=BrowseRepositorycontextShould be in format:loginname=a%26passwd=a%26enterprisename=test_enterprise&externalURL=true&popup=yThe values to substituteare:• loginname =username to access theapplication• passwd= password toaccess the application• enterprisename=company nameRequired?YesmastercatalognamerecordcountproductidproductidextName of the repositoryfrom which records arebeing compared.Number of records to becompared. Valid valuesare 2 and 3.The PRODUCTIDattribute of the record.The PRODUCTIDEXTattribute of the record.YesYesYesYesproductkeyidmodversionThe productkeyid value ofthe record. Either passproductkeyid orproductid/productidext.The version of the recordsbeing compared. If notpassed, the latest versionis used.NoNo<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


40 Chapter 2 Customizing User Interface|Table 8 Redirecting from a Custom Page to the ApplicationPage URL Parameter DescriptionBrowse andSearchhttp://host:port/eml/Browse<strong>Product</strong>?menulink=Browse&repoName=valueNote: Add a valuefor the repoNameattribute.repoNameThe 'repoName' refers tothe repository to bedefaulted for browse.This URL can be invokedfrom any application. Theapplication may display alogin error, if required.After logging on to theapplication, repositoryname is defaulted. Therepository name is notsticky, it is used for thisinvocation only.If an invalid repositoryname is specified, thefollowing error message isdisplayed:CAT-1030: Repository oroutput map with name orID Account1111 does notexist; may have beenalready deleted by anotheruser.Required?No<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Redirecting from a Custom Page to the Application| 41How to RedirectPerform the following steps to redirect from a custom page to the applicationpage:1. Type the custom page URL in the Address bar. For example,http://host:port/<strong>MDM</strong>ToGwt2. Type the application screen URL in the field. For example, Record Add URL.For a list of URLs, refer to Table 8, Redirecting from a Custom Page to theApplication, page 35.3. Click the Send button to open the application page. The application page isdisplayed.You can create these buttons as per your requirement while developing thecustom page.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


42 Chapter 2 Customizing User Interface|Customizing GUI Colors and LogosCustomizing ColorsColors of different sections of <strong>TIBCO</strong> <strong>MDM</strong> GUI as well as the font type, weight,and text alignment on different UI labels can be customized. This is achieved bymodifying the CSS style sheet file styleforwidgets6.css located inECM.ear/EML.war/css. Changes made to the CSS modify the GUI for all users onthat particular instance, irrespective of the enterprise.This is achieved by making a copy ofECM.ear/EML.war/css/styleforwidgets6.css and placing it in the$MQ_COMMON_DIR/htmlprops/css directory. Modify the required CSS style class.To better understand different CSS styles, refer to the section Style Sheet, page 43.A custom CSS style sheet can also be placed by creating a custom.css file andplacing it in the $MQ_COMMON_DIR//htmlprops/css directory.To modify the CSS:1. Open {MQ_HOME}\ECM.ear\EML.war and extract the styleforwidgets6.cssfile.2. Edit the CSS file for any GUI-related changes required and save the file. Youcan edit the CSS file in Notepad or use any CSS editing software available.To modify a particular part of the GUI, edit the relevant class in the CSS file.For a list of classes that need to be modified for different parts of the UI, referto Style Sheet, page 43.3. Replace the updated CSS file in same {MQ_HOME}\ECM.ear\EML.war\.4. Deploy the updated ECM.ear on the application server.5. Restart the application.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 43Style SheetBasic TerminologyLogo BarThis contains the company logo, Login Profile information, About and Logoutaction. To control the visual style of contents with in legal bar, following CSS styledefinition are used.CSS Class NameHTML elements onwhich it is appliedProperties definedlogoFrame TABLE Border=0, width=100%,height=38px, font-size=10px,font-weight=boldA.logoA:link/active/visitedA (Anchor)Color= #CCEEFFTD TD font-family=geneva,arial,helvetica,font-size= 11px<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


44 Chapter 2 Customizing User Interface|Menu Bar or Navigation BarIt is a container that has navigation items. The CSS classes used to control theelements within the Menu Bar are as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedmenuFrame TABLE Border=0, width=100%,height=22px,padding-top=0pxmenuBlock TD Background=#F9DB6D, width:7px, height=22pxmenuLeftMargin TD padding-left=20pxclBar, clLevel0,clLevel1, clLevel2TD background-color = #396570,layer-background-color=#396570<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 45Contents FrameThis contains the actual page contents for the selected menu item. All the contentsare displayed with in the contentFrame table. CSS style used for the table is asfollows:CSS Class NameHTML elements onwhich it will be appliedProperties definedcontentFrame TABLE Border=0, width=100%,height=82%,padding-top/left/right=3px<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


46 Chapter 2 Customizing User Interface|Page/Section HeaderCSS style to control the Page or Section header is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedheaderTable TABLE Border=0, width=100%,padding-top=20pxcHeader TD Font-size=16px,font-weight=bold,color=#000000,background-color=#ffffff,width=100%, text-align=leftheaderHR HR border-top: 0px gray;background-color: gray;height: 1px;display: none;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 47Page/Section ContentsAll the contents of the page will be defined with in DIV and TABLE element. CSSstyles to control these elements are as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedheaderContentsDiv DIV padding-bottom: 0px;padding-left: 20px; width:99%; float: left; position:relative;headerContentsTable TABLE width: 100%; border: 0;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


48 Chapter 2 Customizing User Interface|Sub SectionCSS styles used for sub-sections are as follows:CSS Class NameHTML elements onwhich is appliedProperties definedsubheaderContentsDiv DIV padding-bottom: 5px; width:99%; float: left; position:relative;subheaderTable TABLE width: 100%;border: 0;subheaderHR HR border-top: 0px gray;background-color: gray;height: 1px; display: visible;cSubheader TD font-size: 14px; text-align:left; font-weight: bold; color:#000000; background-color:#ffffff width: 100%subheaderContentsTable TABLE width: 100%; border: 0;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 49Submit Section or Action BarCSS style used for Subsection or Action Bar is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedsubmitContainerDiv DIV padding-top: 20px;padding-left:16px; width:100%; float: left; position:relative;submitTable TABLE width: 100%;border: 0;submitHR HR border-top: 0px gray;background-color: gray;height: 1px; display: none;submitBtns TD font-weight : bold;background-color : #ffffff;color : #116699; text-align : left;vertical-align: middle; height :20; width : 100%Name Value Pair ContentsCSS style used for name value pair is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedcRightTDA TD font-weight : bold; color :#000000; text-align : right;vertical-align: top;padding-top: 1px;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


50 Chapter 2 Customizing User Interface|CSS Class NameHTML elements onwhich it is appliedProperties definedcRightTD TD font-weight : normal; color :#000000; text-align : right;vertical-align: top;padding-top: 1px;cLeftTDA TD font-weight : bold; color :#000000; text-align : left;padding-right : 5;vertical-align: top;padding-top: 1px;cLeftTD TD font-weight : normal; color :#000000; text-align : left;padding-right : 5;vertical-align: top;padding-top: 1pxcCenterTDA TD font-weight : bold; color :#000000; text-align : center;vertical-align: top;padding-top: 1px;cCenterTD TD font-weight : normal; color :#000000; text-align : center;vertical-align: middle;padding-top: 1px;cCenterTD TD font-weight : normal; color :#000000; text-align : center;vertical-align: middle;padding-top: 1px;cCenterTD TD font-weight : normal; color :#000000; text-align : center;vertical-align: middle;padding-top: 1px;Grid Table Contents<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 51CSS style used to control Grid Table is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedcontentsTableWithGrid TABLE width: 100%;border-width: 1px;border-color: #555555;border-style: solid;border-collapse: collapse;padding-left: 5px;table.contentsTableWithGrid TRTD.gridTD,TD.msgGridTDTRTDheight:23px;text-align : left;font-weight : normal;color : #000000;border-width: 1px;border-color: #EAEAEA;border-style: outset;padding-left: 3px;TD.gridTDb TD text-align : left;font-weight : normal;color : #000000;border-width: 1px;border-color: #EAEAEA;border-style: outset;padding-left: 3px;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


52 Chapter 2 Customizing User Interface|CSS Class NamecontentsTableWithGridHeadercContentsTableWithGridHeadercontentsTableWithGridHeaderCursorHTML elements onwhich it is appliedTDTDTDProperties definedtext-align : left;font-weight : bold;color : #000000;background-color :#CCCCCC;border-width: 1px;border-color: #E4E4E4;border-style: outset;padding-left: 3px;background-image: url(../images/tableHeader2rowsBkgrd.jpg)text-align : center;font-weight : bold;color : #000000;background-color :#CCCCCC;border-width: 1px;border-color: #E4E4E4;border-style: outset;padding-left: 3px;background-image: url(../images/tableHeader2rowsBkgrd.jpg)text-align : left;font-weight : bold;color : #000000;background-color :#CCCCCC;border-width: 1px;border-color: #E4E4E4;border-style: outset;padding-left: 3px;background-image: url(../images/tableHeader2rowsBkgrd.jpg);cursor: pointer<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 53Display Normal MessagesCSS styles used for displaying normal messages are as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedmsgLeftTD TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : normal;color : #000000;text-align : left;vertical-align: top;padding-top: 1px;msgRightTD TD font-family :geneva,arial,helvetica;font-size : 11px; font-weight :normal;color : #000000;text-align : Right;vertical-align: top;padding-top: 1px;resultRightTD TD font-family :geneva,arial,helvetica;font-size : 11px; font-weight :normal;color : #000000;text-align : Right;vertical-align: top;padding-top: 1px;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


54 Chapter 2 Customizing User Interface|CSS Class NameHTML elements onwhich it is appliedProperties definedresultLeftTD TD font-family :geneva,arial,helvetica;font-size : 11px; font-weight :normal;color : #000000;text-align : Left;vertical-align: top;padding-top: 1px;Display Important Notes or MessagesCSS styles for displaying important notes or messages are as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedhighlightFontLeft TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : bold;color : #116699;text-align : left;vertical-align: middle;height : 20;width : 100%;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 55CSS Class NameHTML elements onwhich it is appliedProperties definednormalFont TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : normal;color : #116699;text-align : center;vertical-align: middle;height : 20;width : 100%;highlightFont TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : bold;color : #116699;text-align : center;vertical-align: middle;height : 20;width : 100%;auditFont TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : normal;color : #0000FF;text-align : left;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


56 Chapter 2 Customizing User Interface|Display Error MessagesCSS style for displaying error message or text is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definederrorTD TD font-family :geneva,arial,helvetica;font-size : 11px;font-weight : normal;color : red;text-align : left;vertical-align: top;Control Image Buttons<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 57CSS style to control Image Buttons is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedcBtns TD font-weight : bold;color : #116699;text-align : center;vertical-align: middle;height : 20;width : 100%;padding-top: 1px;Control Button LinksCSS styles to control button links are as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedA:link, A:visited A color : #396099;A:active A color : #396099;A: hover A color : #396099;cBtnLink TD font-weight : normal;text-align : right;btnLinkLeft TD font-weight : normal;text-align : left;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


58 Chapter 2 Customizing User Interface|General CSS StylesSome general styles are:CSS Class NameBody, A, Select,Option, Textarea,Input, TD, FontHTML elements onwhich it is appliedBody, A, Select, Option,Textarea, Input, TD, FontProperties definedfont-family :geneva,arial,helvetica;font-size : 11pxBody Body margin-top : 0;margin-left : 0;margin-right : 0;defaultTable TABLE border: 0;width: 100%;inputCls INPUT width: 225px;selectCls SELECT width: 225px;Attribute Details Edit FormCSS style used for Attributes Details Edit Form is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedpopupTableBgColor TABLE background-color : #C0C0C0;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 59CSS Class NameHTML elements onwhich it is appliedProperties definededitFormTitleTD TD font-size : 12px;text-align : left;font-weight : bold;color : #ffffff;background-color : #396099;width : 100%;cursor: move;vertical-align: middle;cLeftTD_popup TD font-weight : normal;color : #111111;background-color : #C0C0C0;text-align : left;padding-right : 5;vertical-align: top;padding-top: 1px;cLeftTDA_popup TD font-weight : normal;color : #111111;background-color : #C0C0C0;text-align : left;padding-right : 5;vertical-align: top;padding-top: 1px;background-color : #C0C0C0;text-align : left;padding-right : 5;vertical-align: top;padding-top: 1px;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


60 Chapter 2 Customizing User Interface|Multi-value SelectCSS style to control multi-value select is as follows:CSS Class NameHTML elements onwhich it is appliedProperties definedmvpdselectiondiv DIV width: 100%;height: 50%;overflow: auto;mvpdselectionlist TABLE background-color: #CCCCCC;border: 0;width: 100%;height: 100%;mvpdHeader TD font-family :geneva,arial,helvetica;font-size : 8pt;font-weight : bold;color : #ffffff;background-color : #116699mvpdTD TD font-family :geneva,arial,helvetica;font-size : 8pt;font-weight : normal;color : #000000;text-align : left;padding-right : 3<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 61CSS Class NameHTML elements onwhich it is appliedProperties definedmvpdselectiontable SPAN visibility : hidden;height : 180;overflow : auto<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


62 Chapter 2 Customizing User Interface|Miscellaneous CSS StylesCSS Class NameHTML elements onwhich it is appliedcWarningFont FONT color: red;cErrorFont FONT color: red;Properties definedcListPopupFont FONT color: #FFFFFF;calenderCls IMG height: 21px;vertical-align: top;border: 0;#linkhovermenu TR position: absolute;background-color: #BDE0EA;line-height: 18px;z-index: 100;visibility: hidden;font-family : arial,comic sansms,technical;color : #FFFFFF;background-color : #396570;text-align:center;#linkhovermenu a A text-decoration: none;text-align:center;font-family : arial,comic sansms,technical;font-size : 9pt;font-weight : normal;color : #FFFFFF;display: block;width:100%;#linkhovermenua:hoverAbackground-color: #DCE2ED;color: #396570;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 63Table 9 Sub Classes in styleforwidgets6.cssTo Change Assign Value To Possible Values CommentsFont type font-family Font name and fontfamily (serif,sans-serif, cursive,fantasy, monospace).When you specify alist of fonts, each valueis attempted in turn,from left to right, untilone is found that thesystem can display.That is, the first font inthe list is used bydefault. If it is notavailable on the user’scomputer, the nextone is used and so on.If none of the listedfonts are available, adefault font for thelisted family is used.Font size font-size Font size in pt. Pt.= points. The pointsused by CSS2 areequal to 1/72th of aninch.Font weight font-weight Normal or Bold.Font color color Name or hexadecimalvalue of the requiredcolor.Background color background-color Name or hexadecimalvalue of the requiredcolor.To select correct valuefor the required color,you may want todownload one ofmany free color pickerprograms from theweb.To select correct valuefor the required color,you may want todownload one ofmany free color pickerprograms from theweb.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


64 Chapter 2 Customizing User Interface|Table 9 Sub Classes in styleforwidgets6.cssTo Change Assign Value To Possible Values CommentsText alignment text-align Right, Left, or Centre.Minimum spacebetween right alignedtext and right borderof cellpadding-rightSize in pt.visibility visibility Yes or No.For more images that can be customized via the resource bundles, see the nextsection.The users of the system may have to remove cached content from their computerto get the new look and feel.To preserve customization during migration to future releases, make sure youback up these images before applying the new version of the product.Customizing Logos and ImagesThe resource bundles allow you to customize the logos and images displayed onthe user interface. For example, the <strong>TIBCO</strong> <strong>MDM</strong> GUI displays:• Company logo at the top left of the main UI screen (tibcologo2.gif)• Legal bar at the bottom of the user interface (TibcoLegalbar.gif)You can replace these images with images of your company’s logo. You can alsohave a separate set of images for each enterprise.To customize the images or logos used in the UI:1. Extract and create customized resource bundle file, that is,SharedStringResources.properties. Refer to Chapter 11, Localizing TextStrings, page 239.2. Edit the customized enterprise specific resource bundle, that is,SharedStringResources.properties as required as per the table below. Forexample, change neutralized_Logo=VeloselLogowBorder52.gif to<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing GUI Colors and Logos| 65neutralized_Logo= likeneutralized_Logo=MyCompany.gif.Table 10 SharedStringResources.propertiesTo customize this imageCompany LogoLegal bar at the bottom of thescreenSet this property inSharedStringResources.propertiesneutralized_logoneutralized_productversion3. If you need to change any logos or images:a. create a new directory called "images" under$MQ_COMMON_DIR//.b. Copy the desired logo image file and other images (For example,MyCompany.gif) in this images directory.4. Save the files.5. Restart the application server.• The <strong>TIBCO</strong> <strong>MDM</strong> login page does not display the custom images. The aboveprocedure only changes the images on all the GUI pages except the loginpage.• The logo image size must be 1600 X 67.Customizing Logo Bar1. Create a header.html in $MQ_COMMON_DIR//htmlprops.2. Check whether the contents of header.html are similar to the following.&nbsp; Logged in as&nbsp;&nbsp;&nbsp;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


66 Chapter 2 Customizing User Interface|About&nbsp;|&nbsp;Logout-test&nbsp;&nbsp;&nbsp;3. Make sure you have enclosed the contents with in the table.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 67Customizing Workitem Forms and Email TemplatesHow do Forms Work<strong>TIBCO</strong> <strong>MDM</strong> forms work using three basic components:1. A HTML template which is the work item form.2. An XML document: This is the source of data to be shown in the HTML form.3. An XML form: This is the XML file that maps data from the source XMLdocument to a Workitem or Email HTML template using an XPATH.HTML form is used to write a custom work item. The HTML form is used asinput to the XMLC tool. XMLC generates Java code and automatically compiles itto generate class file (we will refer to these files as XMLC component). EachHTML ID in HTML form is converted to Java variable and can be accessed usingXMLC APIs. Application uses XMLC APIs to get HTML IDs, set values, doHTML manipulation and finally generate HTML, which is ready to be displayedas work item.XML Form DefinitionAn XML form is used by the application to map data from source XML to thework item display. When the application displays a work item form or an Emailtemplate, it uses an XML form to get an HTML ID, and populates it with the valuepointed to by the XPATH.For example an entry in the XML form looks like:HeaderFirstShipDate/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionHeader/Date/Code/Normal[text()='FirstShipDate']/../../DateValue/Value/text()(//Form/Field/ID[text()='HeaderFirstShipDate'])/following-sibling::ValueThe XML form consists of fields defining specific data to be shown for an ID. Eachfield contains an 'ID' and an 'InputFrom' tag. The form can, optionally, have'OutputTo' and 'Value' tags.• ID: This tag maps to the ID in the HTML template.• InputFrom: This contains the XPATH from which the data is extracted and isshown at the given location identified by ID.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


68 Chapter 2 Customizing User Interface|• OutputTo: This contains an XPATH to which user input is to be written. Inmost cases, it points to the 'Value' node in the XML form.• Value: This tag is a placeholder for any user input that needs to be written outto the XML form.A form definition looks like:HeaderFirstShipDate/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionHeader/Date/Code/Normal[text()='FirstShipDate']/../../DateValue/Value/text()(//Form/Field/ID[text()='HeaderFirstShipDate'])/following-sibling::ValueWriting a Custom Work Item FormHTML form is used to write a work item. The HTML form is used as input toXMLC. XMLC generates a compiled Java class (XMLC component). Each ID in theHTML page is converted to an access method in XMLC component. The XMLCcomponent is used by the application to access HTML element using XMLC APIs,set values and generate HTML.The compiled Java class implements application interfaces such as IMqContentand IWorkItemDisplayDoc. These interfaces are used by the application to accessthe HTML elements. That is why your HTML page must have the followingelements with a predefined ID. The IDs are:• hiddenRetURL• hiddenURLCtr• divHeadId• divBodyId• command• work itemid• closedgroup• opengroup• numberOfRows<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 69• status• endday• endmonth• endyear• startday• startmonth• startyear• buyer• marketplace• recordcount• pagebeginid• pageendid• dir• doctype• setbeginid• numberOfRows• trAttachments• aAttachments• trPrintableVersion• aPrintablePOYou can use these IDs appropriately in your page.Apart from these elements you may want to display some additional informationfrom the source XML which will be an MLXML document for the work item.Use an HTML editor to draw the layout and appearance of the form. Assignunique IDs to each HTML section that needs to be populated with a value.Sample HTML PagePage Title<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


70 Chapter 2 Customizing User Interface|// boolean flag to check if the page has already been submittedyet or not// fixes the problem with double clicking on the save buttonvar alreadySubmitted = false;function gotoInbox() {document.WorkItemForm.submit();}function setAlreadySubmitted (submitted) {alreadySubmitted = submitted;}function isAlreadySubmitted () {return alreadySubmitted;}function doSubmit (command) {setCommand(command);if (!isAlreadySubmitted()) {setAlreadySubmitted(true);return true;}return false;}function setCommand(str){document.WorkItemForm.command.value=str;return;}<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 71Page TitleForm TitleThere is a newer workitem for this Order.Master CataogName&nbsp;Trading Partner&nbsp; -Message Source<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


72 Chapter 2 Customizing User Interface|&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>Product</strong> Details&nbsp;&nbsp;&nbsp;<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 73Use an HTML editor to draw the layout and appearance of the form. Assignunique IDs to each HTML section that needs to be populated with a value. Forexample, if you have an HTML element like:NameName goes here.Compiling and Deploying the Custom Form1. Set CUST_DEVROOT to your preferred location.2. Change to the %MQ_HOME%\build\custom.3. Execute the customutil script as follows:customutil.sh -createDirStructureThis command creates a directory structure in the directory specified by theCUST_DEVROOT variable. You might notice some errors. However, as long asthe directory structure is created, you can ignore the errors.4. Set the ANT_HOME variable as follows:set ANT_HOME=%MQ_HOME%\bin\buildTool5. Set the PATH variable as follows:set PATH=%PATH%;%MQ_HOME%\bin\buildTool\bin<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


74 Chapter 2 Customizing User Interface|6. Create a %MQ_HOME%\thirdparty directory and copy the XMLC JAR files,gnu-regexp JAR files, and the jsse JAR files to the %MQ_HOME%\thirdpartydirectory.7. Create the template folder in the%CUST_DEVROOT%\src\com\tibco\mdm\ui\workflow\engine\workitemdirectory.8. Copy the custom HTML to the following directories:— Workitem:%CUST_DEVROOT%\src\com\tibco\mdm\ui\workflow\engine\workitem\templates— E-mail form:%CUST_DEVROOT%\src\com\tibco\mdm\ui\directory\contact9. Save all the HTML files in the html folder and other source files underrelevant folders. For example, images in the images folder. After copying theHTML files, remember to change the links to images, css, and Javascript.10. Edit the $MQ_HOME\build\resources\html_interfaces.txt file to add aline for the HTML form that implements IWorkItemDisplayDoc:— Workitem:com.tibco.mdm.ui.workflow.engine.workitem.templates.My<strong>Customization</strong>=com.tibco.mdm.ui.infrastructure.IMqContent,com.tibco.mdm.ui.workflow.engine.workitem.workitem.IWorkItemDisplayDoc— E-mail form:com.tibco.mdm.ui.directory.contact.MyEmail<strong>Customization</strong>=com.tibco.mdm.ui.infrastructure.IMqContent11. To compile HTML into xMLC classes, open a command prompt, changedirectory to %MQ_HOME%\build\custom, and execute the following command:ant compileThe class files are created in the— Workitem:$CUST_DEVROOT\classes\servletclasses\WEB-INF\classes\com\tibco\mdm\ui\workflow\engine\workitem\templates directory— Form:$CUST_DEVROOT\classes\servletclasses\WEB-INF\classes\com\tibco\mdm\directory\contact12. To deploy the custom forms, open a command prompt, change directory to$MQ_HOME/build/custom and execute the following command:ant deployCustom<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 7513. Add the class file to the following:— For work item:ECM.ear\ECMClasses.jar\com\tibco\mdm\ui\workflow\engine\workitem\templates folder.— For Form:ECM.ear\ECMClasses.jar\com\tibco\mdm\directory\contact folder.14. If you want to create a custom TaskType to work on the HTML:a. Create acom.tibco.mdm.ui.workflow.engine.workitem.My<strong>Customization</strong>.java class that implements ICustomizer. Compile and deploy the class asdescribed in the previous steps.b. In the createWorkItem activity of the workflow, modify the TaskTypeparameter with the new value as follows:MATCHRECORDc. Associate the TaskType and the class by adding the following property inthe ConfigValues.xml file:com.tibco.workflow.workitem.MATCHRECORD.class=com.tibco.mdm.ui.workflow.engine.workitem.My<strong>Customization</strong><strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


76 Chapter 2 Customizing User Interface|15. Add an entry in WORKFLOWFORM table in application database. Theattributes of this table and the value they take are:— ID: Primary Key, provide a unique number— VERSION: Default value. For example, 1.— OWNERORGANIZATIONID: Default value is 1 for all organizations.Otherwise, provide specific organization ID.— NAME: Custom form name.— DEFINITION: XMLC generated class name.— ACTIVE: Set to 'Y'.— MODMEMBERID: Default value is 101.— MODDATE: Provide current date.— MODVERSION: Default value is 1.— TYPE: EMAIL/TASK, depending on your form type. Use TASK for workitem and EMAIL for Email.— ACTIONABLE: If form has some action, set to 'Y', otherwise 'N' fornotifications.For example:INSERT INTO WORKFLOWFORM (ID, VERSION, OWNERORGANIZATIONID,NAME, DEFINITION, ACTIVE, MODMEMBERID, MODDATE, MODVERSION,TYPE, ACTIONABLE) VALUES (MQ_SEQUENCE_1.nextval, 1, 1, 'MyCustom Form Name','com.tibco.mdm.ui.workflow.engine.workitem.template.My<strong>Customization</strong>', 'Y', 101, CURRENT_TIMESTAMP, 1, 'TASK', 'N');Gathering Inputs from a User Using the Workitem Form1. Define an HTML input element. You can use any type for input element.2. Assign the input element an 'ID'. For example, 'ID=myuserinput'.3. Set an 'OutputTo' XPATH in the XML form being used by the work item. Forexample:(//Form/Field/ID[text()='myuserinput'])/following-sibling::ValueThe work item generates two outputs, one is the result XML, and the other is amerged document.• Result XML: This is a copy of the XML form. The difference being, any userinputs given are part of it.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 77• Merged Document: Apart from the above configurations, if the user had alsoprovided a valid 'InputFrom' XPATH into the input work item document, thework item activity will merge the user input into the input document (whichin most cases will be a MLXML document).• The form that you write only displays the body of the page. It does not controleither the left hand menu or the top banner.• The IDs used in the form should NOT be substrings of one another. That is,you cannot have two IDs like 'MasterCatalogHeader' and'MasterCatalogHeader2'. IDs of this kind are used for cloning of nodes (referto 'Defining Repeating sections in a form'). Instead, in this example, you coulduse 'MasterCatalogHeader' and '2MasterCatalogHeader'.• For merging the result, it is mandatory that all XML nodes (except text nodes)given in the 'InputFrom' XPATH are present in the input document.Adding Repeating Elements in the FormIt is possible to repeat HTML elements based on collection of multiple XML nodesresulting from an xpath in the source XML. In most cases, these repeatingelements would form 'rows' in a 'table' and each node in collection could bemapped to a HTML row, for example, one 'CatalogItem' in the source XML couldbe mapped to one tr element.• An HTML element that would be repeated must be added to the HTML form.This element is not displayed to the user but is used as a reference node thatwould be cloned at runtime. In the current example, it is simply a HTML rowelement.• Each column in the HTML row must have an 'id' attribute that starts with the'id' of the reference node. Here the reference node is id 'Line' and hence allchild elements must have id like 'Line<strong>Product</strong>ID', 'Line<strong>Product</strong>Extension' andso on.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


78 Chapter 2 Customizing User Interface|• The reference node and its child element must have a corresponding entry inXML form.— The entry in XML form corresponding to reference node must have:: set to id of reference node: set to XPath of repeating XML nodes in source XMLdocument. For example, if results in collection, XPath toCatalogItem.— The entry in XML form corresponding to child element must have,: set to id of child element: set to XPath, which starts with XPath of reference node.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 79• The following example illustrates the procedure.— In the HTML code, add a sample row:<strong>Product</strong>ID<strong>Product</strong> ExtensionLong Desc&nbsp;&nbsp;&nbsp;— In the XML form, add entries having XPath pointing to location of data foreach of the row elements.Line/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionDetails/CatalogItemLine<strong>Product</strong>ID/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionDetails/CatalogItem/PartNumber/GlobalPartNumber/ProdID/IDNumberLine<strong>Product</strong>Extension/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionDetails/CatalogItem/PartNumber/GlobalPartNumber/ProdID/IDExtensionLine<strong>Product</strong>Description<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


80 Chapter 2 Customizing User Interface|/Message/Body/Document/BusinessDocument/CatalogAction/CatalogActionDetails/CatalogItem/PartNumber/GlobalPartNumber/ProdDescriptionUsing Reserved XMLC IDsApart from the above customizations, you can also use the predefined XMLC IDsto display information or links.The following XMLC IDs are available and can be used during customization ofthe page. The values will get populated automatically when you use these IDs.Restrict changes to following ids only.For Primary <strong>Product</strong>Prefix all IDs with the text "MAIN". Attributes can be added using the format"MAIN".• "MAINMODDATE": Mod Date• "MAINMODVERSION": Mod Version• "MAINMODMEMBER": Mod Member Name• "MAINCREATIONDATE": Creation Date• "MAINREJECTIONEDITLINK": Create a Rejection Edit Link• "MAINREJECTIONVIEWLINK": Create a Rejection View Link• "MAINPRODUCTEDITLINK": Create a <strong>Product</strong> Edit Link• "MAINPRODUCTVIEWLINK": Create a <strong>Product</strong> View Link• "MAINREJECTIONEDITLINK": Create a Rejection Edit Link• "MAINREJECTIONEDITLINK": Create a Rejection Edit Link• "MAINCOMPARELINK": Create a <strong>Product</strong> Compare LinkFor Associated <strong>Product</strong>sPrefix all IDs with the text "ASSOC". Attributes can be added using the format"ASSOC".• "ASSOCMODDATE": Mod Date.• "ASSOCMODVERSION": Mod Version.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 81• "ASSOCMODMEMBER": Mod Member Name.• "ASSOCCREATIONDATE": Creation Date.• "ASSOCRELATIONSHIPTYPE": Relationship type.• "ASSOCREJECTIONEDITLINK": Create a Rejection Edit Link.• "ASSOCREJECTIONVIEWLINK": Create a Rejection View Link.• "ASSOCPRODUCTEDITLINK": Create a Record Edit Link.• "ASSOCPRODUCTVIEWLINK": Create a Record View Link.• "ASSOCPRODUCTCOMPARELINK": Create a Compare <strong>Product</strong> Link.For <strong>Product</strong>s Related to Associated <strong>Product</strong>sPrefix all IDs with the text "REL". Attributes can be added using the format"REL".Using Reserved XMLC IDsRecord data from previous Confirmed version can be displayed on a work itemby specifying the element with ID as "showPrevious<strong>Product</strong>". The value for thiselement must be set to ‘Y’.For example:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


82 Chapter 2 Customizing User Interface|The following XMLC IDs are available and can be used. Prefix all IDs with the text“PMAIN”.Table 11 Reserved XMLC IDsXMLC IDPMAINPMAINMODDATEPMAINMODVERSIONPMAINMODMEMBERPMAINCREATIONDATEDescriptionAttributesModification dateModification versionMod member nameCreation date• Links are not supported.• Same support is available for associated and related records by using prefix ofPASSOC and PREL.Other Data• SubmitButtonHiddenOnErrors: Set to "Y" if you want to hide the work itemsubmit button when errors are present.For example:• ExpansionOption: Set to EXPANDALL to specify the default behavior whenrecord view/edit is clicked from work item; COLLAPSEALL otherwise.• Buyer Catalog Link: Add an element to include Buyer Catalog link on aCatalogApproval work item.For example:• Previous Alert: Alerts from previous step cab are displayed on work item. Anelement with id "showPreviousAlerts" gives an option to indicate if alertsfrom previous step should be shown or not. If a previous approver hasrejected a work item, alerts will be displayed in current approver's work itemif "showPreviousAlert" is set to Y.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Workitem Forms and Email Templates| 83For example:Customizing Email TemplatesConfigurations are described in sections Writing a Custom Work Item Form,page 68 and Adding Repeating Elements in the Form, page 77. The onlydifference in case of Email templates is the configurable subject line.Configuring Email Subject LineThe subject line is coded into the template HTML being used. The line that is usedfor setting the subject has a 'subject' id.For example:ApprovalRequested for <strong>Product</strong> : #filler# - #filler#The system fills in data from the source XML using the Xpath corresponding tothe 'id' specified in the HTML. The system builds the subject line left to right untilit hits the first 'id' resolving to a NULL, or the end of the 'div' tag. The 'div' tag isremoved from the body of the Email template actually sent.The following is the list of reserved IDs used by the system:• 'subject': This id is used by the system to identify the section to be used forbuilding the subject line.• 'defaultSubject': This id represents the static portion of the subject line thatalways appears in the subject.• 'ManagedWorkItemMsg': This id is used to place the work item delegation orreassignment messages.• 'commentData': This id is used to place the work item comments within agiven event.• The predefined XMLc IDs do not work on the input XML document.• Use of Associated<strong>Product</strong> IDs, add data, and links works for all relatedrecords.• Avoid 'Coding repeating elements' when using Associated<strong>Product</strong> IDs.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


84 Chapter 2 Customizing User Interface|<strong>Customization</strong> of HTML Labels Using Resource BundlesLike the rest of the application user interface, the HTML labels in work item formsand Email templates can also be customized for each individual installation.Refer to Chapter 11, Localizing Text Strings, page 239.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Other GUI Elements| 85Customizing Other GUI ElementsChanging the Edit Box to Multi-line Edit BoxFor the Record Modify and Add screens, you can define the threshold lengthabove which an edit box should change to a multi-line edit box. Set the followingproperties in the Configurator. This will only affect the Record user interface.• Number of charactersConfigurator > Advanced > UI <strong>Customization</strong> > Multiline Display Cutoff =400When number of characters in a line are > 400, the edit box will be changed toa multiline edit box.• Number of minimum and maximum limits on the number of lines in amulti-line box. These properties control the height of the multi line box:Configurator > Advanced > UI <strong>Customization</strong> > Multiline Display MinLines = 3Configurator > Advanced > UI <strong>Customization</strong> > Multiline Display MaxLines = 5Mouse Over HelpIt is possible to suppress the help shown on the repository and record screens(Add, Modify, and View) by setting the following property in Configurator to‘false’:Configurator > Advanced > UI <strong>Customization</strong> > Record Attribute Mouse OverHelpRefresh Rate for Event LogThe default browser refresh for the Event Log screen is 0. You can change thisvalue through Configurator > User Interface Settings > Event Details RefreshTime.To enable autorefresh of the Event Detail Log page, set this property to a valuegreater than 0. The value must be specified in seconds and the recommendedvalue is any number greater than 30.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


86 Chapter 2 Customizing User Interface|Number of Days for Event ListThe default number of days the list of events is displayed on the Event Log screenis 30 days. You can change this value through Configurator > Miscellaneous >Days Event Log Stored.Default Number of RowsYou can specify the default number of rows to be displayed in various screens bysetting the following properties in Configurator:• Synchronization Profile List Default Rows• Event Detail Log Default Rows• Event Log Default Rows• Inbox Default Rows• Record History Default Rows• Record List Default Rows• Text Search Result Default RowsDisplay Date and Time FormatsYou can specify the default display date and time formats to be displayed invarious screens by setting the following properties in Configurator:• Default Display Date Format• Default Display Time FormatRepository Management• Default Attribute Length — While defining String attributes for repository,data sources or synchronization formats, if length is not specified, this defaultlength is used. Specified in number of characters.• Import Error Threshold — Default error count threshold for number of rowsfound to be in error in an import.• Record Compare Mode — If 'All' is specified, all attributes are shown on therecord compare screen. If more than 2 records are selected, the View Option =Changes is not supported, All will be used.• Import Parent Record Version State — Parameter to indicate which previousrecord version should be used to merge incoming record data during Import.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Other GUI Elements| 87If value is LATEST, the incoming record data is merged with latestConfirmed/UnConfirmed version of the record. If value is set toCONFIRMED, the incoming record data is merged with latest Confirmedversion. Default value is CONFIRMED.• Text Indexing Enabled — Setting this flag allows you to use text indexing andsearching of the records. Valid choices for this value are:— NONE: Text Indexing and Text Searching are disabled.— OFFLINE: Text Indexing is done during off-peak hours using a console runutility scheduled by an administrator. Text Searching is enabled.— ONLINE: Text Indexing is automatically initiated while the data ischanged. Text Searching is enabled.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


88 Chapter 2 Customizing User Interface|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 89Chapter 3Customizing RepositoryThis section includes some concepts you should be familiar with before youcustomize the repositories.Topics• Customizing Attributes and Attribute Groups, page 90• Customizing Record Security, page 91• Customizing Validation Using a Java Class, page 98<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


90 Chapter 3 Customizing Repository|Customizing Attributes and Attribute GroupsYou can create an attribute or an attribute group through the user interface. Formore details on creating attributes or attribute groups, refer to the <strong>TIBCO</strong> <strong>MDM</strong>User’s <strong>Guide</strong>.You can not modify a pre-defined attribute in a repository through the userinterface. To modify the size or length of a pre-defined attribute, modify themetadata of the attribute in the database as follows. This example changes theattribute length to 10.1. ALTER TABLE MCT_ MODIFY (CVARCHAR2(10));2. UPDATE CATALOGATTRIBUTE set ATTRIBUTELENGTH=10 whereCATALOGID= and NAME='';Make sure that both the above SQL entries have the same size for length.For repositories that have user-defined table names and custom database columnnames for attributes, the statements are:1. ALTER TABLE MODIFY ( VARCHAR2(10));2. UPDATE CATALOGATTRIBUTE set ATTRIBUTELENGTH=10 whereCATALOGID= and NAME='';Navigate to the repositories screen, view the repository, modify the attributelength, and save the repository. The new length of the attribute is shown on theuser interface. You need not change anything on the user interface whilemodifying the repository.ExampleThe following example shows how to modify the length of PRODUCTID andSHORTDESC to 10 and 50 respectively.1. ALTER TABLE MCT_3323 MODIFY (CPRODUCTID VARCHAR2(10));2. UPDATE CATALOGATTRIBUTE set ATTRIBUTELENGTH=10 whereCATALOGID=3323 and NAME='PRODUCTID';3. Navigate to the repositories screen, view the repository, modify the attributelength, and save the repository. The new length of the attribute is shown onthe user interface. You need not change anything on the user interface whilemodifying the repository.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Record Security| 91Customizing Record SecurityConfiguring Value Based Security for Record ListYou can secure the record list screens (output of repository browse, subsets, andso on.) based on the value of attributes in the records itself. This security appliesto the list of records displayed in the relationship section of the View/Modifyrecord.With this customization, it is possible to completely hide a record from a userusing “hide_record” access, or restrict a user’s edit access to a record by using“view_record”. You need to enhance the repository validation rulebase to do so.Refer to the <strong>TIBCO</strong> Collaboration Information Manager Rulebase <strong>Guide</strong> for moreinformation.Restrictions on Record Access ConditionsFor performance reasons, the of rules containing record level accessactions are converted to SQL in some cases. Therefore, only functions that can betranslated into SQL can be used. These include: and, or, not, eq, neq, lt, leq, gt,geq, defined, undefined.Conditions containing expressions other than those listed above, will fail. Refer tothe <strong>TIBCO</strong> Collaboration Information Manager Rulebase <strong>Guide</strong> for more information.Managing RelationshipsRelationships are used to refer to other record data items. For example, you canspecify that a can, say a can of soda, is contained by a case, and that cases arecontained in a pallet. Relationships can also be used to define record substitutes.<strong>TIBCO</strong> <strong>MDM</strong> allows you to name these relationships, and determine whetherthey are unidirectional or bidirectional. Bidirectional relationships are visiblefrom both the parent and child record. Unidirectional relationships are valid onlyfrom parent to child and not vice-versa, for example, cross-sale.Controlling the Relationships Shown for an Item: ProcedureWhile creating a record and associating it with other records, you can controlwhich relationships apply at a specific step or level. For example, for the mainrecord, all relationships may be valid but for the associated child record, onlysome of the relationships may apply.You can also control the order in which relationships are listed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


92 Chapter 3 Customizing Repository|To determine which relationships are shown for an item:1. For each relationship type you include for an item, define a constraint in thecatalogvalidation.xml file. This file shows relationships for items in allrepositories.2. To include a relationship type that is different from relationships in the rest ofthe repositories, add a constraint (specific to the repository) to theCatalogValidation.xml file. The file is located in the MQ_COMMON_DIR//catalog/master/ directory.3. To define this constraint:a. Declare a variable named RELATIONSHIP_LIST, with the usage attributedeclared as "output".RELATIONSHIP_LISTb. Declare a variable named RECORD_ACTION.RECORD_ACTIONc. In the element of the constraint, name the type of relationship youwant to include. In the description element of the constraint, enter adescription.d. Define a condition element, similar to other conditions defined for otherconstraints in the Rulebase.e. To show a different relationship list for RECORD_ACTION, define a separateconstraint. The possible values for this RECORD_ACTION constraint are ADD,EDIT, and COPY. Optionally, you can use record attributes to control the listof valid relationships.f. Define an action element for this condition, to assign the"RELATIONSHIPLIST" output variable. The following code sample definesa constraint for the 'Contains' relationship. You can add constraints for allof the relationships that you want to include for an item.containsDefault relationship if Record Actionis"ADD" or "EDIT" or "COPY"<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Record Security| 93RECORD_ACTIONADDRECORD_ACTIONEDITRECORD_ACTIONCOPYRECORD_TYPEVENDORRELATIONSHIP_LISTCONTAINSCONTAINEDBY4. To show a relationship that is specific to RECORD_ACTION ='EDIT', define theconstraint as "a general constraint that applies to RECORD_ACTION = 'ADD' or'COPY.containsDefault relationship if Record Action is "ADD" oror "COPY"RECORD_ACTIONADDRECORD_ACTIONCOPY<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


94 Chapter 3 Customizing Repository|RELATIONSHIP_LISTCONTAINSCONTAINEDBYThe following constraint is specific to the EDIT action:containsforEditDefault relationship if Record Action is "EDIT"RECORD_ACTIONEDITRELATIONSHIP_LISTCONTAINSConfiguring Security of Relationship AttributesRulebase security access control includes relationship-based objects. Within therulebase, you can set hide, read-only view, and modify access to relationshipattributes. The only attribute currently defined for a relationship is “Quantity.”The access tag controls the read/write/show access to a particular relationshipquantity, based on the mode attribute. This feature allows certain users to haverestricted access to the quantity field for relationship attributes. For example, for aCASE that contains 12 of EACH, some users may have permissions to modify thequantity of EACH, while others may have read-only access.Note that each attribute can only be assigned one access mode, and the firstaccess mode assignment in the rulebase takes precedence.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Record Security| 95The following table lists the levels of access and their effects.Table 12 Levels of Access and their EffectsAttributesEffectsThe attribute does not appear on the screen.The attribute appears on the screen as read-only.The attribute appears on the screen and can bemodified by the user.The record appears in the record list, but cannotbe modified.The record does NOT appear in the record list orrelationships.The relationship attribute (quantity) can be declared in one of the following ways.Declaring the relationship first, and then specifying the access to the attribute ofthat relationship, as shown in this example:CONTAINSRELContainsEachAccessIf UOM is EACH then change the access forcontains Quantity to hide.UOMEACHCONTAINSREL/QUANTITYDeclaring the relationship attribute and then specifying the access to therelationship attribute:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


96 Chapter 3 Customizing Repository|CONTAINSRELQTYContainsQuantityEachAccessIf UOM is EACH then change the access forcontains Quantity to hide.UOMEACHCONTAINSRELQTYSuppressing Informational and Warning Validation MessagesA level is assigned to each informational message. The threshold level, abovewhich the messages are to be displayed in the user interface, may be configured inthe rulebase or through the workflow.Similarly, during validations, warnings of certain severities can be suppressed bysetting a warning message threshold in the rulebase or through the workflow.The three ways to set thresholds:• By defining default thresholds in the rulebase header.• By setting thresholds through work items (workflow).• By computing the threshold in the rulebase.By defining default thresholds in the rulebase headerA sample section of the rulebase is shown below:153<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Record Security| 97By Setting Thresholds through Work Item (Workflow)A sample section of workflow that sets the rulebase information threshold isshown below:Workitem553You can set:• InformationThreshold• StepInformationThreshold• WarningThreshold• StepWarningThresholdStep-thresholds are used to set thresholds that are relevant to the current step.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


98 Chapter 3 Customizing Repository|Customizing Validation Using a Java ClassWhile saving a record, the application performs the following standardvalidations:• PRODUCTID must be specified.• PRODUCTID and PRODUCTIDEXT must be unique within a repository.• For Boolean type attribute, value must be either TRUE or FALSE.If you need to extend the validations and cleansing rules defined using a rulebase,you could consider using a validator class. The use of this class is consideredadvanced customization and should be approached only if customization can notbe done using rulebase and rulebase custom functions.The standard validation applied on the records can be customized across all therepositories or for a specific repository by placing the class in the appropriatedirectory.The application looks for a Catalog<strong>Product</strong>Validator class in the following order:• $MQ_COMMON_DIR//catalog/master/directory specific to a repository. If a class is found, it is used for validation ofthe specified repository.• If it is not found, the application checks whether any class has been definedfor all repositories.$MQ_COMMON_DIR//catalog/master• If no custom class is found, the standard record validations providedout-of-box are applied.Customizing Standard Record Validations1. Write the Java class which extends the StandardCatalog<strong>Product</strong>Validator,which is the base implementation for ICatalog<strong>Product</strong>Validator interface.The sample class can be copied from$MQ_COMMON_DIR/standard/catalog/master/Catalog<strong>Product</strong>Validator.java.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Validation Using a Java Class| 99The ICatalog<strong>Product</strong>Validator interface should be implemented by theclass that provides the custom validation. This interface has followingmethods:— public HashMap preValidate(ICatalog<strong>Product</strong> cp, ICatalog<strong>Product</strong> oldCP,HashMap actions)This callback method is called before rulebase validations are done.— public HashMap validate(ICatalog<strong>Product</strong> cp, ICatalog<strong>Product</strong> oldCP,HashMap actions)This method implements record validations. These validations are appliedafter rulebase validations are done.— public ArrayList isDuplicate(ICatalog<strong>Product</strong> cp, ArrayList attrList,ArrayList valueList, int eventId, int ownerType)This method checks for duplicates. It overrides the standard duplicatecheck method.— public ArrayList isDuplicate(ICatalog<strong>Product</strong> cp, ArrayList attrList,ArrayList valueList)This method checks for duplicates. It overrides the standard duplicatecheck method. This callback is used to verify duplicate when event contextis not available.Both isDuplicate methods must be implemented.— public boolean getDuplicateCheckSQL(ArrayList attrList, ArrayListvalueList, StringBuilder sql)This method builds the where clause for a duplicate check. Forcustomization, override this method.2. Compile the class and copy it to$MQ_COMMON_DIR//catalog/master/.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


100 Chapter 3 Customizing Repository|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 101Chapter 4Customizing InboxThis chapter describes what can be customized in the Inbox and the stepsinvolved.Topics• Customizing Work Item Descriptions, page 102• Customizing Record Attribute Search, page 106• Customizing the Sort Order of Work Items, page 107• Enabling and Configuring Work Item Locking, page 108<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


102 Chapter 4 Customizing Inbox|Customizing Work Item DescriptionsOut-of-box work item descriptions are derived using the rulebaserbworkitemdescription.xml stored under$MQ_COMMON_DIR/standard/rulebase.The overall workflow is:To customize the work item descriptions:1. Copy the rbworkitemdescription.xml file to$MQ_COMMON_DIR//rulebase. Do not changethe file name.2. Modify the descriptions specified in rbworkitemdescription.xml. Seefollowing sub-sections for details.3. Save the file.Variables Available for RulebaseThe following table lists all the variables which can be used in rulebase conditionsor in message descriptions:• All values are available in session using SESSION/.• All record attribute values are for the primary record. These attributes areaccessed by simply specifying the name of the attribute.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Work Item Descriptions| 103Table 13 Rulebase AttributesThe rulebase will return message description as the output. This message will bestored in the Work-item Detail table. The output parameter name will beWORK-ITEM_DESCRIPTION.Rulebase Attribute NameWORKITEM/MASTER_CATALOG_NAMEWORKITEM/MASTER_CATALOG_VERSIONWORKITEM /CATALOG_NAMEWORKITEM /CATALOG_VERSIONWORKITEM /DOCTYPEWORKITEM /DOCSUBTYPEWORKITEM /INTENTWORKITEM /ERRORSWORKITEM /REJECTIONSWORKITEM /WARNINGSWORKITEM /TRADING_PARTNERWORKITEM/TRADING_PARTNER_TYPEWORKITEM /MARKETPLACE_NAMEWORKITEM /RECORD_COUNTWORKITEM /SEVERITYWORKITEM /STEPSEVERITYWORKITEM /ACTIVITY_NAMEDescriptionName of the repository.Version of the repository.Name of the catalog.Version of the catalog.DocType.DocSubType.Intent of the work item.Number of errors, in reference step. If none specified,0.Number of rejections, in reference step. If nonespecified, 0.Number of warnings in reference step. If nonespecified, 0.Name of trading partners.Type of trading partner organization: RETAILER,SUPPLIER or DATAPOOL.Name of the datapool.Number of records associated.Severity specified for the work item.Step severity specified for the work item.Name of the work item activity.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


104 Chapter 4 Customizing Inbox|Table 13 Rulebase AttributesRulebase Attribute NameRECORD_IDRECORD_VERSIONRECORD_KEYIDRECORD_IDEXTDescriptionRecord ID.Record mod version.Record key ID.Record ID extension.Additionally, all work item details saved can also be inquired by specifying thename as: WORK-ITEM /.If you need to save any additional work item details to include in a work itemdescription, you can specify these as input to the work item activity:my custom textNote the prefix “CUSTOM_”. It must be specified exactly as in the example. Thesecustom details can be accessed as any other work item detail.WORK-ITEM /CUSTOM_textHandling HyperlinksYou can include hyperlinks to any of the following objects in your work itemdescription. To do this, you need to include one of the following tokens in thedescription. Note that you can only have one hyperlink per object in a message.Table 14 HyperlinksToken Description Exception Conditions$MasterCatalog$ This token is to be used to create ahyper link with the repository. Thename of the repository will appear inplace of the token, and will behyperlinked to the repositorybrowsing screen. The repository isassociated with most of the workitems, however, if it is not available,the token will be replaced by blanks.Not available when repository is notdefined.Unknown system alert.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Work Item Descriptions| 105Table 14 HyperlinksToken Description Exception Conditions$Catalog$This token is to be used to create ahyperlink with the catalog. The nameof the catalog will appear in place ofthe token, and will be hyper linked tothe latest version of the catalog. If nocatalog is available, the token isreplaced by blanks.Not available when no catalog isapplicable.Add, modify, delete a record.(GDSN only) CIN messagenotifications received by retailers.(GDSN only) CIC received bysuppliers which were not sent toretailers using the catalog.Unknown partner alert.Repository import approval.$TradingPartner$$Marketplace$$PrimaryRecord$This token is to be used to create ahyperlink with the Trading partnerprofile view. The name of the tradingpartner will appear in place of thetoken and will be hyper linked to thelatest version of the profile.If no trading partner is available, thetoken is replaced by blanks.This token is to be used to create ahyper link with the datapoolorganization profile. The name of thedatapool will appear in place of thetoken and will be hyper linked to thelatest version of the profile. If no datapool is available, the token isreplaced by blanks.The attributes takes the value of theRecordId/<strong>Product</strong>ID if nothing isspecified, otherwise it picks up thementioned record attributes value.Not available when there is notrading partner associated with anevent:Add, modify, delete a record.Repository import approval.Synchronization with datapool, withno trading partner.Unknown partner alert.Not available when there is no datapool associated with an event:Add, modify, delete a record.Repository import approval.Synchronization with tradingpartner without going throughdatapool.Not available when there is norecord involved in the event.Add, Modify, Delete andsynchronization of the records.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


106 Chapter 4 Customizing Inbox|Customizing Record Attribute SearchYou can customize the attributes on which you would like to search work items.To add a new search attribute:1. Identify the name of the search attribute. The name must be an attribute namein the repository.2. Identify the workflow and the work item activity to which this parametershould be added.3. You can find the workflow files in $MQ_COMMON_DIR/standard/workflow/folder. You need to look for the workflow that creates the work item.4. Define the parameter as follows. Use uppercase for the name of the attribute.If there is already a record attribute parameter defined, add a runningnumber as in *RecordAttributeName1*.


Customizing the Sort Order of Work Items| 107Customizing the Sort Order of Work ItemsBy default, the work items in the Inbox are sorted in the descending order of thework item ID. To sort the items in the descending order of the receipt date, set theUI Inbox sorter column property in Configurator to true. The default is false.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


108 Chapter 4 Customizing Inbox|Enabling and Configuring Work Item LockingEnabling Work Item LockingTo enable work item locking, set the InitialConfig > Workflow Settings > EnableWork Item Locking property in Configurator to true. The default is false.You can also enable automatic locking of work items when they are opened fromthe UI. To enable automatic locking, set the InitialConfig > Workflow Settings >Enable Automatic Work Item Locking property in Configurator to true. Thedefault is false.This property is set to true to instruct the application to lock the work item whenthe user opens the work item using the UI. It has not impact on web services.Configuring Work Item LockingUsing the Configurator, you can configure the following properties related towork item locking:• Default Work Item Lock Expiry Method — Valid values are None andRelative. None indicates that the lock never expires. Relative indicates thatthe locks expire after a specified interval. None is the default.• Default Work Item Lock Interval — Indicates the default work item lockinterval in seconds. This is relevant only if Default Work Item Lock ExpiryMethod is Relative.• Enable Release of Work Item Lock on Timeout — On timeout of work items,the lock of a work item is released by default. To disable it, set theInitialConfig > Workflow Settings > Enable Release of work Item Lock onTimeout property in Configurator to false. The default is true.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 109Chapter 5Customizing Business ProcessesThis chapter provides an overview of customizing business processes anddescribes how to add a new process as well as create a new business processtemplate.Topics• Overview, page 110• Adding New Business Process Domains, page 111• Creating New Business Process Templates, page 118• Defining a Custom Workflow Selection, page 120<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


110 Chapter 5 Customizing Business Processes|OverviewBusiness Processes Rules allow customization of business processes in <strong>TIBCO</strong><strong>MDM</strong> . The application internally uses <strong>TIBCO</strong> BusinessEvents for evaluatingbusiness rules.The following are some useful concepts for customizing the business process:• Rule Definitions: Rules are defined as a series of conditions and actions. If theconditions are satisfied (evaluate to ‘true’), the actions are executed. Forexample, here is a rule with 3 conditions and 1 action:IFMasterCatalog is ‘MastCat1’ and<strong>Product</strong> Department is ‘ProdDept A’ andDocument Type is ‘Add <strong>Product</strong>’THENApprover is ‘Manager_123’• Rule Domain (Also called Rule Meta Model): A rule domain is a collection ofall conditions and actions required for processing a unit of the businessprocess. It is defined in XML.• Rule Template (Also called Rule Model): A rule template is a subset of theconditions and actions from a rule domain. It has a selection of the conditionsand actions that would be used to define the rules. The templates are definedusing the user interface.• Rule Instance (Or just Rule): A rule is an instance of a rule template. The userinterface is used to define the rule.• Default Rule: A default rule is a special rule in which all conditions are set to‘Any’. This rule is fired only if no other rules are fired in that domain. Therecan be only one default rule per domain.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Adding New Business Process Domains| 111Adding New Business Process DomainsBusiness process domains are the contexts in which rules are applied. Eachbusiness process domain contains one or more templates.When a new enterprise is created, all the domains listed in$MQ_HOME/config/security/defaultdata.xml (under the rulemetamodelsection) are created.To add a new domain:• Define a new rule domain.• Identify a list of conditions and actions needed. If needed, define newconditions and actions.• Add the newly created domain to the required enterprises.Defining a New Rule DomainTo define a new rule domain:1. Identify all the conditions and actions that might be needed.2. Configure the identified conditions and actions into the rule domaindefinition under $MQ_HOME/config/rules.3. To validate the correctness of the rule domain, you can use the$MQ_HOME/config/rules/RuleModel.dtd schema.For example, the following shows a rule domain with 10 conditions and 7 actions:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


112 Chapter 5 Customizing Business Processes|The following is a mandatory condition: Do not remove this condition while defining a new business process domain, elsean error occurs.4. Edit the defaultdata.xml ($MQ_HOME/config/security/defaultdata.xml)file. Add the following entries. These will add the rule domain and the‘default’ rule templates for new enterprises created henceforth.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Adding New Business Process Domains| 113Each section corresponds to the type of enterprise you are creating.— For a supplier, make an entry to the following sections:For a retailer, make an entry to the following sections:— For a datapool, make an entry to the following sections:Defining New Conditions and ActionsA standard XML definition is used to define a condition or action. To validate thecorrectness of the XML definition, you can use the$MQ_HOME/config/rules/RuleModel.dtd schema.StringYou need to change the following details for a new condition:• ID – Needs to be unique across all conditions/actions defined under$MQ_HOME/config/rules.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


114 Chapter 5 Customizing Business Processes|• Type – Data type• PresentationFormat – The text that is shown while showing/defining a rule.The open and close braces in the text, that is, (and) are mandatory, and if you donot have them, the rules don't get saved.• AttributeName – This is the same as the name of the attribute in the workflow‘parameter’ definition.• DataSourceType - Different ways to access the data:XPATH – Xpath into the mlXML document.OBJECT – Data access uses <strong>TIBCO</strong> <strong>MDM</strong> defined business objects. Below isthe list of objects and their supported DataSource values— PRODUCT:RejectedOrChangedAttrGrps - Gets the list of rejected or changedattribute groups within the current event.ChangedAttrGrps - List of attribute groups that have changed within thecurrent event.ConflictAttrGrps - List of attribute groups that have a conflict (duringmerge).— PROFILETimedOutParticipantRoles - Gets the list of roles of users whose workitems have timed out.• DataSourceValueFor DataSourceType XPATH – the actual XPATH into the mlXML documentto fetch the required data.For DataSourceType OBJECT – the command word to fetch the required datafrom the business object.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Adding New Business Process Domains| 115• ProgrammingOperator – Below is the list of supported operators— equals – valid for all data types.— contains – valid for ‘String’ data types. Checks if a substring exists.— greaterThan – valid for all data types.— greaterThanEqual – valid for all data types.— lessThan – valid for all data types.— doesntHaveValue – Checks to see that a particular value is not among thearray of values picked up by the DataSourceValue.— hasValue – Checks if a value exists in an array of values picked up by theDataSourceValue.— isEmpty – Checks to see if no value was found.• SQLQuery - This is used by the application to show a drop down list ofpossible values for a condition/action. In the given example, a list ofrepositories is shown.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


116 Chapter 5 Customizing Business Processes|Adding New Domain to an Existing EnterpriseTo add a new rule to an existing enterprise:1. Navigate to the $MQ_HOME/bin/migration directory.2. Update addNewRules.xml file with the list of rule domains that need to beinserted. (See $MQ_HOME/config/security/defaultdata.xml for sampleentries.)— ‘rulemetamodel’ is the same as the name of the domain definition fileunder $MQ_HOME/config/rules (For example:$MQ_HOME/config/rules/New<strong>Product</strong>IntroductionEdit.xml).— ‘active’ is set to ‘Y.’— ‘description’ is description of the rule domain.— ‘name’ is same as the ‘RulesetName’ attribute in the domain definition file.— ‘type’ is ‘BUSINESSPROCESS’.3. Update orglist.txt. Enter the list of organization IDs to which you want toadd the domains (the rule domains listed in the rulelist.xml file).4. Create a new rule file in $MQ_HOME/config/rules by running the followingcommand:./MigrateRules.sh -addNewRulesIn case of errors or warnings, you can correct them and try again as the scriptcan be re-run without generating duplicates.Sample addNewRules.xml File- - - CustomProtocol123YRulebase to be used for CustomProtocol123.Custom Protocol 123BUSINESSPROCESS3- - Custom Protocol123Default System Template123.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Adding New Business Process Domains| 117DefaultAdding New Conditions and Actions to Existing Rule DomainsTo add the new conditions and actions existing enterprises:1. Create new Conditions and Actions. For more information, refer to sectionDefining New Conditions and Actions, page 113.2. Go to $MQ_HOME/bin.3. Run the script ./MigrateRules.sh migrateRulesDomain.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


118 Chapter 5 Customizing Business Processes|Creating New Business Process TemplatesTo create a new rule template:1. Click Business Processes.2. From the Business Processes screen, click a process name link.3. From the Rule Template List screen, select Create. Please see the note at theend of this section if you do not see a create link.4. In the Rule Template Builder screen, enter a template name and description inthe appropriate fields.5. Select the required condition from the Condition Selection list and click > toadd it to the Selected Conditions pane. Do the same for actions.6. Repeat the previous two steps if necessary, and click Save.Allowing Multiple Templates in a DomainIf you create a "default" template for a business process, and cannot create moretemplates after the first one, use the following procedure to create moretemplates:1. Navigate to $MQ_HOME/config/security.2. Open the defaultdata.xml file.3. Search for the process for which you want to create more than one template.For example, "New <strong>Product</strong> Introduction Edit" can be appropriate search text.You may find multiple instances of this. For example:New<strong>Product</strong>IntroductionEditYRetailer person or role that will edit newlyintroduced products.New <strong>Product</strong> Introduction EditBUSINESSPROCESS14. Look for a parameter called 1. Change thisnumber if you want to change the limit for the number of rule templates. Ifyou don’t want to limit the number of rule templates, remove this entry.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Creating New Business Process Templates| 1195. You do not need to log out or restart the server to see this change the graphicaluser interface.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


120 Chapter 5 Customizing Business Processes|Defining a Custom Workflow SelectionDo the following to define a custom workflow selection:1. Make an entry of the workflow in the CONFIGURATIONDEFINITION table. Setthe member ID of the organization for which customization is to be done.INSERT INTO CONFIGURATIONDEFINITION(ID, "TYPE", OWNERID, GLOBAL,"NAME", SELECTOR, DESCRIPTION, DEFINITIONTYPE, DEFINITION, ACTIVE,MODMEMBERID, MODDATE, MODVERSION) VALUES ('','PROCESSNAME', '1', 'Y', 'wfin26dqcatsourcev1.xml', 'WORKFLOW','Process for data source upload and import with DQ', 'File','standard/workflow/wfin26dqcatsourcev1.xml', 'Y', '1',TO_DATE('15-03-2006 04:01:00 pm','DD-MM-YYYY HH:MI:SS AM'), '1');2. If the DOCTYPE and DOCSUBTYPE are different (not provided out-of-box), makean entry in the DOMAINENTRY table with domaintype as DOCTYPE andDOCSUBTYPE.INSERT INTO DOMAINENTRY(DOMAINTYPE, "VALUE", DESCRIPTION) VALUES('DOCSUBTYPE', '', '');INSERT INTO DOMAINENTRY(DOMAINTYPE, "VALUE", DESCRIPTION) VALUES('DOCTYPE', '', '');3. Log in to the application.4. Click the Business Processes link in the menu and select the ProcessDefinition Selection rule. If the out-of-box condition is not as per therequirement, add a new condition provided in the templates.5. Create a rule through the rule creation menu using the DOCTYPE,DOCSUBTYPE, and custom workflow name parameters.Rules are executed in order of definition. So, a default rule could override anexplicit one, if it is placed first.For example, if a default rule with DOCTYPE=Record Edit and DOCSUBTYPE=anyis specified before an explicit rule with doctype=Record Edit andDOCSUBTYPE=Record, the default rule gets executed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 121Chapter 6FileWatcher<strong>TIBCO</strong> <strong>MDM</strong> uses the FileWatcher utility that monitors incoming files containingdata for initiation of processes within the application. FileWatcher runs as abackground thread in the same JVM as the server.Topics• FileWatcher Overview, page 122• FileWatcher Configuration Parameters, page 123• Actions, page 134• Using FileWatcher, page 148<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


122 Chapter 6 FileWatcher|FileWatcher OverviewTo understand material presented in this chapter, the following skills and accessprivileges are required:• Working knowledge of XML• Working knowledge of <strong>TIBCO</strong> <strong>MDM</strong>• Access to $MQ_HOME/config directory• Privileges to modify FileWatcher.xmlOverview of FileWatcherFilewatcher provides a file-based integration method for some of the workflowoperations. Once configured, workflows can be triggered when new files aredetected and input files are processed.FileWatcher polls the directories specified in the configuration file for any newfiles created there. The polling is done at a configured interval specified in theconfiguration file. When a new file is detected, it is processed according to thespecifications defined in a configuration file.After the file is successfully processed, it is moved to a /done directory. Thisprevents the file from being picked up on subsequent polls. FileWatcher has anoption to detect duplicate files by the filename. If a previously processed file(name) is copied to /incoming, it is not processed again, and is moved to/Reject.Configuration FileThe FileWatcher configuration file specifies how an input file should beprocessed, and the directory location for the file after processing is complete. Thelocation of the FileWatcher configuration file is defined in the Configurator(Configuration Files > File Watcher Configuration File). The default is$MQ_HOME/config/FileWatcher.xml.When the application is installed, the default configuration is placed in$MQ_HOME/config/FileWatcher.xml. Although it is not recommended, you canrelocate this file to any other location relative to $MQ_HOME.When the application is running, and if any change is made to FileWatcher.xml,it is automatically deployed the next time the file is accessed. Although eachinstance deployed in a cluster can have different FileWatcher configuration, it isrecommended that all servers share the same configuration.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 123FileWatcher Configuration ParametersFileWatcher configuration is defined by the Global and DataSet parameters. Thischapter describes both types of parameters, and how they control various actions.• Global Parameters, page 123• DataSet Parameters, page 125Global ParametersGlobal parameters are required for all actions. These parameters define:• How input files are managed.• How to identify the target enterprise and organization.You can set the following FileWatcher global parameters:• Polling Interval• Directory Names• In Progress Suffix• LockFilePolling IntervalThe PollingInterval parameter defines how often FileWatcher checks inputdirectories for new files. The interval is specified in seconds. For faster responsetime, set the PollingInterval to 60 seconds.3600Directory NamesFileWatcher works on a set of directories for file processing:• The directory for incoming files (incoming).• The directory for successfully uploaded files (done).• The directory for files that fail (rejected).<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


124| Chapter 6 FileWatcher These directories are specified in the FileWatcher configuration file.ParameterDefault DirectoryNameDescriptionInComingDir incoming Location where new files appear. These directories arepolled at specified intervals.DoneDir done Location where successfully uploaded files appear.RejectedDir rejected Location for failed files.Each directory can be specified with an absolute path or one relative to theMQ_COMMON_DIR or MQ_HOME or MQ_LOG environment variables. To specify anabsolute path, omit the tag.In the following example, the data set is defined, and the new files are placed inthe $MQ_COMMON_DIR/EAI/PrimData/incoming directory.MQ_COMMON_DIREAI/PrimDataFileWatcher maintains a list of files processed during a run. If the same file isresubmitted for processing, it is rejected. Duplicates are detected by file name.InProgressSuffixWhen large files are transferred to the incoming directory, FileWatcher may detectthe file before it is completely written to disk. In this situation, FileWatcher mayread the partial file, and the processing may fail. To prevent this, you can useInProgessSuffix to stop processing of the file.To do this:1. Set the InProgressSuffix in the configuration file to ignore files that end inthis value.2. When a file is being created, add the suffix to the file name.3. After the file write is complete, rename the file by removing the suffix.This procedure is not necessary for small files:incomingdonerejected.inprogress<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 125For example:datafile123.dat.inprogress - while it is being writtendatafile123.dat - rename to this when done..inprogressIn this case, the file is initially named as datafile123.dat.inprogress.FileWatcher detects the file, but ignores it, because the file ends with the“.inprogress” suffix. After the file is written, it is renamed to datafile123.datand FileWatcher will pick it up during its next polling interval.LockFileThe LockFile can be specified to synchronize processing of incoming files toensure that file is processed by only one FileWatcher at a time thereby avoidingrace conditions..lockFor more information on how the lock mechanism works for concurrent fileloading, refer to the section Concurrent File Loading, page 149.DataSet ParametersEach configuration is called a DataSet. One DataSet is set up for each type ofprocessing.Types of DataSetsYou can specify the following two types of DataSets:• Single — One file that acts as both the data and trigger files. For example,PurgeGLOBALPurgeMONTH6MQ_COMMON_DIR/Work/purge• Multiple — A multiple data set is a trigger file written to the incomingdirectory, consisting of a list of file names, and the absolute paths to theirlocations. Each file name is matched to a datasource in the DataSet and isuploaded from the specified (absolute path) location. The order of the<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


126| Chapter 6 FileWatcher filenames in the trigger file must match with the order of the data sources inthe DataSet. Multiple DataSets are not supported for all actions. For theMultiple DataSet type, specify the list value. For example,MBVLoadkkLoadMQ_COMMON_DIRstandard/MBVData/URIInfo>M1M2Name of DataSetEach DataSet has a name for informational purposes. This name has to be unique.PRIMParametersThe DataSet parameters include the following information and define a completeconfiguration:• Action• Catalog• CheckDuplicateFile• ClassificationScheme• Credential• DataSource• Incremental• InputMap<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 127• MasterCatalog• RetentionUOM• RetentionUnits• URIInfoIf the default directories are used, do not specify the following parameters in theDataSet configuration:• Incoming• Done• RejectedFiles are copied from the incoming directory to the done directory. Duplicates andfailures are placed in the rejected directory. These default values can beoverwritten by each DataSet.Enterprise name should be specified when a DataSet is defined with themartQuestNet DomainType.ActionThe Action parameter specifies the ways in which a data source can be used.Each action initiates a workflow.Note: All actions initiate are integrated with the built-in workflow engine.Parameter Description WorkflowExportRecordsExport data from arepository or subset.Initiates the Export dataworkflow.Load Upload the datasource. Initiates a datasource uploadworkflow.Multipledata setssupported?NYLoadImportUpload datasources andimport into therepository.Initiates a datasource uploadand repository importworkflow.YImportImport into therepository.Initiates a repository importworkflow.N<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


ImportClassificationSchemeImport classificationcodes, taxonomy, andreclassify products.Initiates a classification codeupload workflow. For a customclassification scheme, thisworkflow can optionallyreclassify the records in arepository.NPublishInitiate asynchronization.Initiates a catalogsynchronization workflow.NValidateInitiate a validation forsynchronization.Initiates a catalog validationworkflow.N128| Chapter 6 FileWatcher Each action may need different parameters to be specified. For example, if theDataServiceUpdate Initiate meta data import. Initiates import of meta dataworkflows.DataServiceQuery Initiate meta data export. Initiates export of meta dataworkflows.NNPurgeInitiate a data purgeworkflow. On purge, anemail is sent to theaddress specified in theCompany Profile screen.However, note that it isnecessary to set an emailmessage completion rulefor receiving this purgeemail.Initiates the Purge workflow.Note: Work/Purge directorymust be created manually in$MQ_COMMON_DIR.Naction is Import, you need to specify MasterCatalog.CatalogThe Catalog parameter identifies the name of a catalog for whichsynchronization is to be initiated. To uniquely identify the Catalog, you must alsospecify the repository. The Catalog parameters are only relevant if the specifiedaction is Publish or Validate.MYCATALOG<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 129BaseName specifies the name of an existing catalog. This catalog should alreadybe created.Note: When the specified action is Publish, the Catalog element should refer tothe synchronization profile name.CheckDuplicateFileBy default, whenever FileWatcher picks up a file, it checks whether the file hasalready been processed by comparing it against the last 100 files processed. Youcan disable this check using the CheckDuplicateFile parameter.NoIf this parameter is used, File Watcher processes the file irrespective of whetherthe file existed previously or not.The default value of CheckDuplicateFile is Yes and it checks for duplicate entriesin the history file and rejects it if it exists.This parameter can be specified for each DataSet.Example 1 FileWatcher.xml with CheckDuplicateFileThe following sample section is from FileWatcher.xml. In this example, theCheckDuplicateFile parameter has been added to the FileWatcherconfiguration file.PRIM0065064183212LoadNoMQ_COMMON_DIREAI/PrimDataUCCV3<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


130 Chapter 6 FileWatcher|ClassificationSchemeThe ClassificationScheme parameter identifies the name of the classificationscheme. If no MasterCatalog parameter is specified, the classification schemename must refer to a standard classification scheme. If a MasterCatalog parameteris specified, the classification scheme name should refer to one of the customclassifications defined for the repository.UDEXCredentialThe Credential parameter identifies the enterprise that is applicable to a specificconfiguration. The credential specified in the Data Set must match a credentialdefined in the Company Profile screen. This parameter is required for all actions.The credentials specified in FileWatcher and JMS messages are case insensitive.For more information on case sensitivity, refer to the Login section in the <strong>TIBCO</strong><strong>MDM</strong> User’s <strong>Guide</strong>.0065064183212DataSourceThe DataSource parameter specifies the name of the datasource to use. To specifya unique data source, use the datasource name in conjunction with theOrganization name specified in the Credential parameter.The datasource name is used in conjunction with Credentials to identify a datasource defined in the application.SupplierV3BaseName specifies the name of the existing Data Source.This datasource must be defined using the application user interface.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 131IncrementalThe Incremental parameter is applicable only for theImportClassificationScheme action. For ImportClassificationScheme, this is theonly mode currently supported, and it supports incremental loads of theclassification code as follows:• new classification codes are imported.• existing classification codes are updated.Existing classification codes can not be deleted.YesInputMapThe InputMap parameter identifies the Input map to be used for data import. It isapplicable for Import and LoadImport actions. If the Input map name is notspecified, then Input map name ‘DEFAULT ‘is assumed. You need to specifywhich Input Map should be used.InputmapMasterCatalogThe MasterCatalog parameter specifies the name of the repository. Therepository name should be used in conjunction with the Organization specifiedby the Credential to specify a unique repository to use. The MasterCatalogparameter is only relevant if the specified Action is one of the following:• LoadImport• Load• Publish• Purge• Validate• ImportClassification• ExportRecords<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


132| Chapter 6 FileWatcher SupplierV3BaseName specifies the name of an existing repository.RetentionUOMThe RetentionUOM parameter specifies the units of measure for RetentionUnits.This parameter is applicable only if the action specified is Purge. The valid valuesare MONTH (default) and DAY.RetentionUnitsThe RetentionUnits parameter specifies the number of days or months to purge.It is applicable only if the action specified is Purge. Any integer more than 0 isvalid. The Default is 6.URIInfoThe URIInfo parameter specifies the location of the root directory for a DataSet. Italso specifies how the information is encoded. Only local schemes are currentlyimplemented.This parameter is required for all actions.ParameterRelativeURIDescriptionAn environment variable name. Valid options areMQ_HOME, MQ_COMMON_DIR, MQ_LOG.Directory path appended to the Relativeenvironment variable.The Relative parameter is an environment variable associated with URIInfo.The URI information can be added following the Relative Parameter.In the following example, the Relative parameter specifies the <strong>TIBCO</strong> <strong>MDM</strong>environment variable MQ_COMMON_DIR, and appends to the EAI/PrimDatadirectory. Assuming MQ_COMMON_DIR translates to /usr/local/velosel, the finalroot directory would be: /usr/local/velosel/EAI/PrimData.MQ_COMMON_DIREAI/PrimData<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


FileWatcher Configuration Parameters| 133The History file is stored in the root directory. If the incoming directory is notspecified, the default directory is used. If the incoming directory is specified asthe default, input files will be copied to:/usr/local/velosel/EAI/PrimData/incoming.The URIInfo parameter describes the location of the file. It specifies the relativepath, the enterprise directory, and the directory where the FileWatcher directorystructure is created.For example:MQ_COMMON_DIRinternal-directory/SUPP/FILEWATCHER/ImportTo implement the URIInfo in the example above, ensure that the followingdirectory structure exists under the enterprise internal name directory:SUPPFILEWATCHERExportdoneincomingrejectedImportdoneincomingrejectedSubset should be included. It applies only for export records. Subset name isunique for repository.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


134 Chapter 6 FileWatcher|ActionsExportRecords ActionThe ExportRecords action is used to export data from a repository.Either all the records in the repository can be exported or records can be selectedusing a subset. The default workflow extracts all records related to selectedrecords, including records in other repositories.If only specific relationships are to be extracted, the workflow should be modifiedto specify the relationship name. The relationships to be extracted must bespecified in the workflow as follows:Rel6If no related records are to be extracted, specify a non-existing relationship asfollows:NON_EXISTANT_RELATIONSHIP_XAny number of relationships can be specified using multiple parameters(RelationshipName1, RelationshipName2, and so on).You can also control whether the latest (last confirmed or unconfirmed) version isto be exported or only the last confirmed version is to be exported. This is done byspecifying VersionOption as follows:LATESTThe default is LATEST, that is, the last confirmed or unconfirmed version isexported.To initiate the export, add a 0-byte file to the directory pointed to by incomingfolder of URI in the file watcher data set definition.The output is a zip file containing the following:• One data export file per repository• One relationship file containing record relationship information• If related records are extracted, related relationships are also codified in theCONTAINS attribute which can be imported back into the application.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 135• One index file containing information of the relationship file and the dataexport files.Parameters of this action are:Parameter Description Valid Values Mandatory DefaultMasterCatalog Name of the repository. Any existing Y -repository nameSubsetIf a subset name is specified usingthis parameter, only recordsqualifying the subset are exported.If a subset is not specified, allrecords from the repository areexported.Any existingsubset nameN -Note: To specify a subset, only onerepository must be specified.ExportRepositoryMQ_COMMON_DIR/ent1/exportGLOBALExportRecordsPRIMDATA<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


136| Chapter 6 FileWatcher MYSETLoad ActionThe Load action is used to initiate a datasource upload.Parameter Description Mandatory DefaultDataSource Name of the datasource to upload. Y -PRIM0065064183212LoadMQ_COMMON_DIREAI/PrimDataV3LoadImport ActionThe LoadImport action is used to initiate a datasource upload and import into therepository. This allows for automated data feeds into the application, when datachange is initiated in other systems.To initiate the LoadImport workflow event and to spawn the catalog record addevent through FileWatcher, put at least one file in the $Relative/URI/incomingdirectory. This file must have the records that need to be imported.Another requirement for LoadImport is that the parameter mustbe specified.FileWatcher polls for a file in the incoming directory and then processes theDataSets. For LoadImport, a file containing the records to be imported is requiredin the incoming directory. The file is moved to the done or rejected folder afterthe action is completed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 137The pre-requisites for the LoadImport action are:1. Create the repository.2. Create the datasource. Refer to the section , page 136for more details on the format of the data source.3. Create the input map between the datasource and the repository.To initiate the LoadImport event:1. Set the filewatcher configuration file. Include the parameter inthe DataSet.2. Place any file in the $Relative/URI/incoming folder and the Import eventwill be initiated.Parameter Description Valid values Mandatory DefaultDataSource Name of the datasource to Any existing Y -upload.datasource nameMasterCatalog Name of the repository. Any existingrepository nameY -IncrementalIndicates if the importshould be incremental.Yes, No N YesInputMapSpecify the name of inputmap for data importAny existinginput map withinMasterCatalogspecified aboveNDEFAULTPRIM0065064183212LoadImportMQ_COMMON_DIREAI/PrimDataUCCV3PRIMDATA<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


138| Chapter 6 FileWatcher MyInputMapImport ActionImport action is useful when there is an already uploaded Data Source to import.To initiate the Import workflow event and to spawn the catalog record add eventthrough FileWatcher, put at least one file in the $Relative/URI/incomingdirectory. This file can be empty.FileWatcher polls for a file in the incoming directory and then processes theDataSets. If the tag requires the usage of the file (as inLoad/LoadImport), the file is used. Otherwise, the file is not used. The file ismoved to the folder specified in the or tag after the action iscompleted.The ImportCatalog activity is not supported for in-memory workflows.The pre-requisites for the Import action are:1. Create the repository.2. Create the datasource.3. Upload the data into the datasource.4. Create the input map between the datasource and the repository.To initiate the Import event:1. Set the filewatcher configuration file with the DataSet as described above.2. Place any file in the $Relative/URI/incoming folder and the Import eventwill be initiated.No security is applied when import is initiated from FileWatcher. However, ifimport permissions are denied, you can not import records from the userinterface.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 139Parameter Description Valid values Mandatory DefaultMasterCatalog The repository name. Any existing Y -repository nameIncrementalIndicates if the importshould be incremental.Yes, No N YesInputMapSpecify the name of inputmap for data import.Any existing inputmap name.NDEFAULTPRIM0065064183212ImportMQ_COMMON_DIREAI/PrimDataYesPRIMDATADEFAULTDataServiceQuery and DataServiceUpdate ActionsThese actions initiate workflows for export and import of meta data. All the inputparameters are specified in the input file itself and no other parameters need to bespecified.No specific parameters are required.ENT1 Import0040885020007DataServiceUpdateMQ_COMMON_DIR/ent1/metadata/import<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


140| Chapter 6 FileWatcher ENT1 Export0040885020007DataServiceQueryMQ_COMMON_DIR/ent1/metadata/exportImportClassificationScheme ActionThis action is used to import classification codes for an existing classificationscheme. Currently, only an incremental mode is supported:• Existing codes descriptions are updated• New codes are addedIf the classification scheme is a custom classification scheme, existing records arereclassified.The ImportClassificationScheme and ReclassifyRecord activities are notsupported for in-memory workflows.Level1The classification upload is based on the data source load. The input file musthave the following format and the number of levels should match with thenumber of classification code levels defined for the classification scheme. The fileformat must be one of the supported formats for data source upload. When youwant to set up the classification loads, make sure to test the file upload using adata source.Level1DescriptionLevel2Level2DescriptionLevel3Level3DescriptionFood Food products Produce Farm products Fresh Fresh ProduceFood Food products Produce Farm products Frozen FrozenproductsFood Food products Processed Processed food Canned CannedproductsFood Food products Processed Processed food Packaged Packagedproducts<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 141The attributes (column headers in the input file) can be any name as long as thefile format matches with the format described above. Note that higher level codesrepeat for different values of low level codes.Parameter Description Valid values Mandatory DefaultDataSourceName of the data Any existing data Y -source to upload. source name.MasterCatalogThe repository name.Required if theclassification schemeis not a pre-definedclassification scheme.Any existingrepository name.N -ClassificationSchemeName of theclassification scheme.Any existingpre-definedclassification schemeor a custom schemefor the repository.Y -IncrementalIndicates if theimport should beincremental.Currently only ‘Yes’is supported.Yes, No N YesPRIM0065064183212ImportClassificationSchemeMQ_COMMON_DIREAI/PrimDataUCCV3YesPRIMDATA<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


142| Chapter 6 FileWatcher UDEXPurge ActionThis action is used to initiate a data purge workflow. On purge, an email is sent tothe address specified in the Company Profile screen. However, note that it isnecessary to set an email message completion rule for receiving this purge email.The following directory structure must be created under$MQ_COMMON_DIR/Work/purge:doneincomingrejectedFor Purge to start, you must add an empty file in the incoming directory.The Purge activity is not supported for in-memory workflows.Parameter Description Valid values Mandatory DefaultDeleteRecordVersions Specifies whetherrecords should bedeleted.If this parameter is setto Yes, old recordversions are deleted.NOTE: To deleterecord versions, youneed to specifyDeleteRecordVersionsas Y in File Watcherand pass theDeleteRecordVersionsparameter in theworkflow.YYesNNoNoNo<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 143EnterpriseNameSpecifies theenterprise to bepurged. Thecredential specifiedmust belong to theenterprise specified.ALL (Default)Any enterprisename in theapplication.NoALLIf this parameter isnot specified, allenterprises arepurged.MasterCatalogSpecifies therepositories fromwhich record versionsand historical data isto be purged.Any validrepository name.NoDefaultis ALLcatalogs.NOTE: If one or morerepositories arespecified, purge islimited to history anddata of these catalogsonly and alsorestricted to thecurrent enterprise.Enterprise name isrequired if therepository name isspecified. Allrepositories mustbelong to ONEenterprise only.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


RetentionUnitsSpecifies the numberof days or monthsfrom the current datebeyond which datawill be purged.Number greaterthan 0.No 6The cutoff dateshould be greaterthan the current date,that is,RetentionUnitsshould be greaterthan 0.RetentionUOMSpecifies the unit ofmeasure forRetentionUnits.MONTHDAYNoMONTHRecordsProcessed144| Chapter 6 FileWatcher NOTE: The parameter, EnterpriseName, does not works with the default DataSet.The number ofrecords purgedduring the run. Doesnot include recordswhich areautomaticallyremoved due todatabase referentialintegrity constraints.To specify the enterprise name or a repository of an enterprise in the DataSet, youneed to specify a DataSet similar to the one shown below:Purge0065064444443PurgeDAY1CorpAPrecedenceMQ_COMMON_DIR/Work/purge<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 145Change the values of the following elements as per your requirement:• Identity: Specify the GLN as specified in Company Profile of your setup.• EnterpriseName: Specify the name of the enterprise whose data you want topurge.• MasterCatalog: Specify the name of the repository whose data you want topurge.Advanced PurgeThe AdvancedPurge activity purges all historical data from the system (exceptdata involved in BCT tables) and a list of files to be removed is generated.For more details on configuring Advanced purge and how it works, refer to the<strong>TIBCO</strong> <strong>MDM</strong> System Administrator’s <strong>Guide</strong>.For more details on the parameters and usage rules of the AdvancedPurgeactivity, refer to the Activities chapter in the <strong>TIBCO</strong> <strong>MDM</strong> Workflow Reference.Usage <strong>Guide</strong>linesSome usage guidelines for the AdvancedPurge activity are:• Use the AdvancedPurge activity when the focus is on cleaning the dataquickly rather than precisely.• Use AdvancedPurge in situations where you want more control on the purgeprocess. Since the AdvancedPurge activity uses Oracle’s stored procedure,you can customize the procedure to change the purge process easily. Thestandard Purge activity is not easily customizable like the AdvancedPurgeactivity.• AdvancedPurge may purge some of the GeneralDocument entries which aProcessLog might be referring to. So, if accuracy of purging is of highimportance, do not use AdvancedPurge.Customizing the WorkflowYou can customize the Oracle stored procedure used by the AdvancedPurgeactivity. The script, Create_Purge_Package.sql, used to create the procedure issupplied as a sample in the $MQ_HOME\common\standard\samples\scriptsdirectory.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


146| Chapter 6 FileWatcher You can also customize the Java class,com.tibco.mdm.workflow.engine.activities.FilesAndDirectoriesCleaner, which purges the Work directory content and Temp directory content. This classis used in the PurgeFilesThroughShellScript and PurgeTempFiles workflowactivities. A sample Java class, FilesAndDirectoriesCleaner.java, is located inthe $MQ_HOME\common\standard\samples\workflow directory.Invoking the Activity From the Standard Purge WorkflowThe isAdvanced parameter of the UpdateEvent activity is commented by default.To invoke the AdvancedPurge activity from the workflow, uncomment theisAdvanced parameter.Publish and Validate ActionsThese actions initiate a synchronization workflow for the specified catalog.Specify an existing catalog name. This works exactly the same as way assynchronizations initiated from the user interface. These actions do not requireany data to be present in the input file. The input file simply acts as a trigger andcould be 0 bytes. The most common implementation is to generate a 0-byte file byusing the UNIX command ‘touch’. Make sure the file name is unique. This triggerfile should be created in the directory identified by the URI.Note: When the action is specified as Publish, the Catalog element should refer tothe synchronization profile name.Parameter Description Valid values Mandatory DefaultMasterCatalog The repository name. Any existing repositoryname.Catalog Name. Any existing catalogname.Y -Y -Action The action to be taken. PUBLISH or VALIDATE Y -PRIM0065064183212PUBLISHMQ_COMMON_DIREAI/PrimData<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Actions| 147PRIMDATAMYCATALOG<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


148 Chapter 6 FileWatcher|Using FileWatcherThis section describes the operation of FileWatcher and the procedure forcontrolling the operation.Start FileWatcherFileWatcher is a timer-based process that starts up automatically when <strong>TIBCO</strong><strong>MDM</strong> is started. During the initialization process, it checks the Credential ofevery DataSet. If a Credential does not exist, FileWatcher does not start. This is themost common configuration error for the FileWatcher. The application startupfails if FileWatcher fails.• If the FileWatcher configuration file has errors and is invalid, the applicationmay not start. it is advisable to ensure that the configuration file is a validXML and can be validated using the schema supplied in$MQ_HOME/schema/config/filewatcher/1.1/FileWatcher.xsd.• If the configuration file points to a non-existent directory or URI, FileWatcherinitiation does not fail. If the directory pointed to by the URI does not exist,FileWatcher attempts to create it.Disable FileWatcherFilewatcher can be disabled by either changing the polling interval to be veryhigh or by removing the FileWatcher from the initialization class list.Re-Initialize the Configuration FileThe FileWatcher process activates after specific intervals specified in thePollingInterval. Before processing configurations, it first checks theFileWatcher.xml configuration file for any changes (The PollingInterval isspecified in FileWatcher.xml). If there are changes, the file is re-read, and allparameters are re-initialized. The changed polling interval is effective for the nextpolling.To change the FileWatcher.xml file, make the necessary changes and wait forthe next PollingInterval to refresh the configuration. If the PollingInterval isexcessively long, you can restart <strong>TIBCO</strong> <strong>MDM</strong> to force FileWatcher to re-initialize.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 149Check for Duplicate FilesFileWatcher does not load any file it has previously processed. It maintains ahistory of the last 100 files encountered, and checks each new file against thehistory list. If a duplicate file is detected, an email with the error message is sent tothe administrator, and the duplicate file is moved to the rejected directory.Concurrent File LoadingIn a clustered environment, if more than one FileWatcher attempts to process anincoming file, it would lead to concurrency issues and possible data corruption.This is addressed by the lock mechanism which establishes a semaphore bycreating a lock file for the DataSet and releasing the lock once the processing isdone.Before processing an incoming file, FileWatcher attempts to acquire a lock on thelock file specified as a part of DataSet parameters. To acquire a lock, it attempts tocreate a file with the DataSet name suffixed with name specified in the LockFileparameter (_). If the lock is acquired for thespecified DataSet, FileWatcher processes the incoming files for that DataSet anddeletes the lock file after the processing is done.If the LockFile for a DataSet already exists and lock can not be established, theFileWatcher skips the DataSet processing and works on any other DataSets thathave been configured.The lock file is created in the / path provided in the URIInfosection of the DataSet. It contains information about the instance which acquiredthe lock so that the abandoned lock can be cleaned up by the correct instance. Theinstance ID used in the lock file is given by the JVM argument NODE_ID.A LockFile can be specified for each DataSet. If no LockFile parameter is specifiedin the DataSet information, the global LockFile parameter is used to determinelock file extension.Import Data using FileWatcherData is imported into the catalog by defining data sources and mapping the datasources into a repository. New data is imported through the user interface (UI);you upload a data source, and then import it into the repository. FileWatcherexpedites importing data by polling for new files, and uploading themautomatically. These files contain typically master data, which can uploaded intoa data source and then imported into the repository.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


150| Chapter 6 FileWatcher Users can initiate imports either manually through the <strong>TIBCO</strong> <strong>MDM</strong> userinterface (UI), or via FileWatcher in an automated lights-out manner. WhenImport Workflow is initiated, a draft is created for each imported record.While a newly uploaded file is being processed, the file ending is changed to theending defined in the InProgressSuffix, to indicate that the file should not beprocessed by any other program. When a file is successfully processed it is movedinto the 'done' directory. If the processing failed, the file is moved into the'rejected' directory to facilitate reprocessing after the error condition has beenresolved.One example for a processing failure is when you try to upload a file with thesame file name as a previously loaded file. The application assumes that the samefile name indicates the same data and prohibits this scenario. For regular uploadsit is advisable to devise a file naming convention which ensures uniqueness of afile name. For example, date and time could be a part of the file name.If the same file is being attempted to be processed, FileWatcher accesses thepreviously processed file names (which are in a file named .history) anddetermines whether the file has been loaded for this DataSet before.When one or more files are added for upload, one of the application clusterinstances acquires a lock in the root directory of the DataSet. It creates a file withthe file name specified in the LockFile property of the respective DataSetconfiguration. This file lock contains information about the instance whichacquired the lock, so that an abandoned lock can be cleaned up by the correctinstance. The instance ID used in the lock file is given by the JVM argumentNODE_ID, which must be different for each member of the cluster.The instance which successfully acquired the lock accesses all the files in thedirectory and moves them into the done or rejected directory depending on theprocessing outcome.Only after the instance has finished processing the set of files it found whileinitiating processing, it releases the file lock. The next instance can then acquirethe lock and process newly arrived files.The files are processed in order of the arrival date (last modification timestamp)on the file system.An data import through FileWatcher can lead to many simultaneous uploads ifmany data files have been added. To avoid parallel imports the engine will allowonly one import workflow on the same repository, data source or input map toproceed at the same time. The other simultaneous processes are queued for laterimport. when the first process exits workflow processing the queue is checkedand if not empty the next import will start the import process.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 151DataServiceUpdate actionsMetadata from the system is exported in the form of JAR, ZIP, or XML files. Suchexport files are used as input to the FileWatcher 'DataServiceUpdate' action.While processing DataSerivceUpdate, FileWatcher extracts the contents of the fileinto a directory such as:MQ_COMMON_DIR/Work/year/month/day/hour/unique_dir_name(where unique_dir_name is a directory created by the system with unique ID).Sample Jar File EntriesThe following are the contents of a sample jar file to be used as input to theDataServiceUpdate action. At the root of the jar is the command XML -request-response.xml. It also contains 2 attachments referred by the commandfile, data.csv, and DataCustodian.xml.• request-response.xml• $MQ_COMMON_DIR/Work/2004/Nov/19/16/55224-0888234/data.csv• $MQ_HOME/config/rules/DataCustodian.xmlThe above entries may get extracted into the following directories:• $MQ_COMMON_DIR/Work/2004/Nov/19/16/1MDNU41Q3G8TJAJT/request-response.xml• $MQ_COMMON_DIR/Work/2004/Nov/19/16/1MDNU41Q3G8TJAJT/commondir/Work/2004/Nov/19/16/55224-0888234/data.csv• $MQ_COMMON_DIR/Work/2004/Nov/19/16/1MDNU41Q3G8TJAJT/mqhome/config/rules/DataCustodian.xmlError ReportingWhen there is an error (including credential/validation errors), FileWatcher sendsa message to the address, specified in the Configurator > Email > Email ReceiverAddress for Errors.This email address should be routed to someone who accesses his or her mail on aregular basis.Note that the errors reported to this email address are technical errors, that is,configuration errors. This does not include email generated by initiatedworkflows.The Application does not start if there is an error in FileWatcher initialization. AllDataSets and users referred in the configuration should exist.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


152 Chapter 6 FileWatcher|ProcessingWhen FileWatcher loads the configuration, it parses the configuration, andensures that it is a valid XML file. It then scans each DataSet configuration andverifies that:• Directories specified for present and valid• Credentials are validWhen a file is detected, FileWatcher constructs a workflow request event, andsubmits for processing.The workflows requested by FileWatcher are treated in the same way as the onesinitiated by other input channels, that is, the UI.Normal workflow selection and routing methods are applicable. For example,using the process definition selection in Business Process Rule (BPR), you cancreate a new rule that contains the following logic:All data source upload events are routed to the wfin26catsourcev5.xmlworkflow file. After the Event is sent, FileWatcher moves the file to the donedirectory, and considers the job completed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 153Archiving FilesThe done and rejected directories accumulate files over time, and must becleaned out on a regular basis. Files are copied to these directories afterprocessing. They can be deleted, because the original files exist in their directoriesof origin.To purge these directories, first back up all directories, and then delete all files(older than 30 days) in the done and rejected directories.When using a multiple DataSet, archive your data files. The location of yourarchive is at your discretion.Move FilesFor a DataSet of type multiple, the following happens if a file is moved to adirectory, assuming that a data directory holds all of the files. The files can bestored anywhere on the network that is accessible to FileWatcher.Normal File Processing – example using multiple data setA comma separated file is copied into the data directory.$MQ_COMMOND_DIR/catalogupload/primdatamcdata_20021107135621.csv/incomingdonerejectedWhen copying is complete, write the trigger file:/datamcdata_20021107135621.csv/incominglist_20021107135621.txt/done/rejectedNote:• If your file is large, set up the inprogess flag, and name the file aslist_20021107135621.txt.inprogress. After the file is completely written,rename it to list_20021107135621.txt.• The contents of the file list_20021107135621.txt should be:/velosel/commondir/catalogupload/prim/data/mcdata_20021107135621.csv<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


154| Chapter 6 FileWatcher Watchdog wakes up and polls the incoming directory. It finds thelist_20021107135621.txt file in the incoming directory. It processes the file,and then moves it to the done directory.In the following example, the data file is not moved, because it does nottrigger the Watchdog./datamcdata_20021107135621.csv/incoming/donelist_20021107135621.txt/rejectedThe file has been successfully processed.Duplicate File ProcessingWhen copying is complete, write the trigger file:/datamcdata_20021107135621.csv/incominglist_20021107135621.txt/done/rejected<strong>TIBCO</strong> <strong>MDM</strong> remembers the last 100 files that were processed, and does notallow the same file to be processed twice.Watchdog moves the file into the rejected directory:/datamcdata_20021107135621.csv/incoming/done/rejectedlist_20021107135621.txtIf the system administrator decides to process this file, it is sufficient to copy thefile back into the incoming directory under a different name. In this example, a -2suffix is added (symbolizing version 2). The file processes normally./datamcdata_20021107135621.csv/incominglist_20021107135621-2.txt/done/rejectedlist_20021107135621.txt<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 155Configuring FileWatcher to Import or Export MetadataCopy metadata allows you to export or import metadata of business objects suchas Catalog, CatalogType, and Classificationscheme. Objects that can be exportedor imported are:• Components/Objects• SubComponents/SubObject (implicit of Objects)• Repository— Attributes— Attributes Group— Inputmap— Output map— Classification Schemes— RelationShip Definition• BusinessProcess Rules— RuleMetaModel— RuleMode— Rules/RuleInstances• CatalogFormat— Attributes— Attributes Group• Data sources— Attributes— Attributes Group— Data Source File• OutputMap— Attributes— Attributes Group• CatalogInputMap— Attributes— Attributes Group<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


156| Chapter 6 FileWatcher Exporting MetadataYou can export the metadata from the source enterprise, for any given objectwithin the request XML.Here is a sample XML:CUSTOMERCUSTOMER_DS_2ACCOUNT_DS_1CUSTOMER_FORMATACCOUNT_FORMAT<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 157ABCMC8CUSTOM1MCACUSTOM2MCAHSB1CATALOGX<strong>Product</strong> NotificationCOUNTER_PARTY_PUBLISH_OUTPUT_FORMAT<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


158| Chapter 6 FileWatcher EAN.UCCpredefinedTo do this:1. Place the request XML (similar toCatalogInput-OutputMap-Sample-CopyMetaData-Request.xml) in thedirectory accessible by FileWatcher.2. Ensure that the object name specified in the request XML exists in the sourceenterprise.3. FileWatcher initiates the copy metadata process using the request XML.4. The system parses the request XML.5. The system exports metadata object into the response XML file.6. This response XML is generated and packaged in a jar file.7. The Jar file is placed in the work directory.The export process ends abruptly if:• You try to export an object on the source enterprise.• If the object does not exist on the source enterprise. It starts exporting the nextobject specified in the request XML.Importing MetadataIf you add new attributes to a synchronization format, the attributes are displayedin the synchronization format. However, when you modify a predefinedsynchronization format through import metadata, the attributes are not displayedin the repository attribute list. To get the new attributes, select and deselect outputformat.If the object exported need to be imported with changes, you can extract theRequest XML out of the jar file, edit it and then bundle it back to the jar forimport.To import the metadata to target enterprise:1. Place the jar file created by copy metadata export, data service query requestfor the object in the directory accessible to FileWatcher.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Using FileWatcher| 1592. Ensure that the associated object exists on the source enterprise or is a part ofthe exported jar file.3. FileWatcher initiates copy metadata process using the jar file.4. System parses the response XML extracted from the jar file.5. The object is created or modified.6. Response XML is generated.7. The object is created or modified without any error.The system ends import process abruptly if:• If there is a dependency on any other object.• If the object is not a part of the import jar or does not exists in the sourceenterprise.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


160 Chapter 6 FileWatcher|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 161Chapter 7Customizing Data SynchronizationThis chapter describes the process for customizing data synchronization.Information related to Marketplace, Retailer, Rulebase operations, and so on isspecific to GDSN only.Terminology (such as Supplier, Marketplace, and so on) used in this chapter mayvary depending on customization done at your site.Topics• Customizing Format-Specific Attributes on GUI, page 162• Configuring Queues, page 174<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


162 Chapter 7 Customizing Data Synchronization|Customizing Format-Specific Attributes on GUIConfiguring Format-Specific AttributesYou can configure the trading partner-specific Synchronization profile graphicaluser interface (GUI) to allow users to specify different input variables. You candetermine which portions (or, format-specific attributes) of the trading partnerGUI apply to which input values for the trading partner Catalog. You can create,modify, publish, and view the Catalog GUI.Use the Rulebase to modify these format-specific attributes, based on thefollowing input parameters:• OUTPUT_FORMAT• MARKETPLACE_NAME• ORGANIZATION_TYPE• DELIVER_TOAn example of a variable declaration for an input parameters is:OUTPUT_FORMATThe values of these input parameters are always uppercase, and need to becompared to uppercase strings. Based on the input parameters above, thefollowing variables can be assigned for customization:• ATTRIBUTE_LIST• DELIVERY_GROUP• OPERATIONSAn example of the variable declaration is:ATTRIBUTE_LISTConfiguring the ATTRIBUTE_LISTThe values assigned to the ATTRIBUTE_LIST output variable are used topopulate format-specific attributes of the Catalog. You use a constraint tag, basedon a condition, to modify the ATTRIBUTE_LIST output variable.The following attributes can be configured for both SUPPLIER and RETAILERorganizations<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Format-Specific Attributes on GUI| 163• CLASSIFICATIONSCHEME• DELIVERCATALOG• MINIMIZENEWVERSIONS• OPERATION• VALIDFROM• VALIDUNTILThe following format-specific attributes are configurable for the SUPPLIER only:• SUPPLIERCREDENTIAL• BUYERCREDENTIALOne format-specific attribute is configurable for the RETAILER only:• RETAILERCREDENTIALExample: Valid Attribute List OutputIn the example below, CatalogFormat = 1SYNC, Organization_Type = SUPPLIER,and Deliver_To = Marketplace. A list of format-specific attributes is defined forthe ATTRIBUTE_LIST output variable.These attributes appear under format-specific attributes when the user logs intothe 'SUPPLIER' organization, and chooses the Deliver_To option of the'Marketplace', and the CatalogFormat option '1SYNC,' while creating, viewing, ormodifying the Catalog.For CatalogFormat = 1SYNCOrganization_Type = SUPPLIER andDeliver_To = Marketplace,Show the format specific attributesCLASSIFICATIONSCHEME,DELIVERCATALOG,OPERATION, SUPPLIERCREDENTIAL, VALIDFROM,VALIDUNTILMarketPlaceAndCatalogFormatAttributesForTransoraStandard format-specific attributes for thesupported Trading partners and catalogformats applicable for the supplier.OUTPUT_FORMATTRANSORA<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


164 Chapter 7 Customizing Data Synchronization|ORGANIZATION_TYPESUPPLIERDELIVER_TOMARKETPLACEATTRIBUTE_LISTCLASSIFICATIONSCHEMEDELIVERCATALOGOPERATIONSUPPLIERCREDENTIALVALIDFROMVALIDUNTILConfiguring Operation GroupsThere are three operation groups that can be configured, two for SUPPLIERorganizations and one for RETAILER organizations.You can modify these operation groups if OPERATION is specified in theformat-specific attributes.The operation groups specific to SUPPLIER organizations are:• ADDGROUP• PUBLISHGROUPThe operation group specific to the RETAILER organization is:• CONFIRMGROUP: This is additional operations group.Customizing Connector Plug-insAll connector plug-ins use two variables connectorProtocol andconnectorRole. Based on these two variables, Configurator(ConfigValues.xml) is configured.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Format-Specific Attributes on GUI| 165Different Plug-ins Used for Synchronization• ResponseHandlers — They are the gateway to the application. They help inrouting of new messages, and also handle response to messages sent out.• Operation Identifiers — This plug-in uses a rulebase to identifysynchronization operations to perform, based on the synchronization historyof a record in a given datapool.• Messaging Handlers — This plug-in decides on the order in which messagesneed to be sent. It also determines the records that need to go together in aparticular message.Configuring Variables Used in the Plugin Selection• ConnectorRole —This variable identifies the role an organization plays on agiven datapool, namely, Supplier, Retailer. The ConnectorRole used can beconfigured using a rulebase pointed to by the Configurator > Connector >Connector Role Rulebase option. It is also possible to specify the role directlyas a workflow parameter to the IdentifyProtocolOperations activity.The rulebase itself uses 4 variables:SENDER_ORGANIZATION_NAME, SENDER_ORGANIZATION_TYPE,RECEIVER_ORGANIZATION_NAME and RECEIVER_ORGANIZATION_TYPE.Where a sender organization is the organization that is trying to send themessage (usually a SUPPLIER or RETAILER). The receiver organization isusually the marketplace or the trading partner who is to receive the message.• ConnectorProtocol — This variable identifies the protocol to be used whilecommunicating with a datapool. It differs based on the datapool, that is,1Sync or Agentrics. The ConnectorRole used can be configured using therulebase pointed to by the Configurator > Connector > Connector RoleRulebase option.Configuring Operation IdentifiersThe kind of OperationsIdentifier picked depends upon the two variablesmentioned in the above section.Operations and Suboperations<strong>TIBCO</strong> <strong>MDM</strong> allows you to control the operations and sub-operations generatedfor data synchronization. Operations and sub-operations are returned in theformat: OPERATION:SUB-OPERATION.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


166 Chapter 7 Customizing Data Synchronization|Table 15 Valid OperationsEnsure that the operation returned is valid. Refer to the following table.OperationADDPUBLISHCONFIRMNOTIFY-CONFIRMATIONNOTIFY-PRODUCTCONTENTLINKSub-OperationChange, New, Correct, Cancel, Delete, Discontinue, Reinstate, RELOADNEW, CANCEL, IMPLICIT_CANCEL, DISCONTINUE,IMPLICIT_DISCONTINUE, CHANGE, CORRECT, IMPLICITACCEPTED, REJECTED, REVIEW, SYNCHRONISEDADD, CHANGE, CANCEL, DISCONTINUEADD, CHANGE, CANCEL, DISCONTINUENONE, UNLINK, CORRECTDefining the RulebaseYou define the rulebase by mapping the marketplace that you want to customize.To define the rulebase, follow these steps to change the default setup.1. Open the ConfigValues.xml file in a text editor and go to the IntegrationSetup - External section.2. Copy the following properties:


Customizing Format-Specific Attributes on GUI| 167default="com.tibco.mdm.integration.messaging.connector.ProtocolOperationsIdentifier"/>3. Change the properties as shown, where MYDATAPOOL is the name of thedatapool to which you want to synchronize:4. Edit the rbMYDATAPOOL.xml file and place it in the $MQ_COMMON_DIR//rulebase directory.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


168 Chapter 7 Customizing Data Synchronization|Use a lower priority for default assignments. The default rulebase priority is 1,so set the priority to 0 for default assignment.Optionally, you can set a different priority for each assignment. Anyassignment of the same or higher priority replaces the previous value. If thereis more than one constraint for an operation, and all assignments have thesame priority, the last assignment is retained.Determining Synchronization HistoryUse the following keywords to determine synchronization history and identifythe state of the product in the system:• HAS_PREVIOUSLY_PUBLISHED_PARENT: returns TRUE if any of therecords reached by traversing the reverse relationship of the IS_PUBLISHEDrecord are TRUE.• IS_ACCEPTED: checks the product status and determines whether aconfirmation was sent or received with an ACCEPTED status.• IS_ADDED: identifies whether a product is already added to the Registry. Itwill return FALSE if the latest version has been successfully deleted from theregistry (that is, if a product is no longer in the registry).• IS_DELETED: returns TRUE if the last registry operation deleted the productfrom the registry.• IS_DISCONTINUED: returns TRUE if the GTIN has been discontinued.Theoretically, this product cannot be synchronized in the future.• IS_LINKED: identifies whether the product has already been linked to otherrelated products in the registry.• IS_PUBLISHED: checks whether the product has ever been publishedexplicitly to a particular trading partner. If the publication was CANCELEDafter the publication, this check returns FALSE. If the product has beensuccessfully published, this check returns TRUE.• IS_PUBLISHED_TO_ANY_PARTNER: determines whether the product hasbeen published successfully to any trading partner. You can use this check tofind out if the product is listed.• IS_REVIEWED: checks the product status and determines whether aconfirmation was sent or received with a REVIEW status.• IS_REJECTED: checks the product status and determines whether aconfirmation was sent or received with a REJECTED status.• IS_SYNCHRONISED: checks the product status and determines whether aconfirmation was sent or received with a SYNCHRONISED status.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Format-Specific Attributes on GUI| 169• IS_ADD_DISCONTINUED: returns TRUE if the last registry operation isADD + DISCONTINUED.• IS_ADD_CANCELLED: returns TRUE if the last registry operation is ADD +CANCELLED.• IS_PUBLISH_CANCELLED: returns TRUE if the GTIN has beenCANCELLED. Theoretically, this product cannot be synchronized in thefuture.• IS_PUBLISH_DISCONTINUED: returns TRUE if the GTIN has beenDISCONTINUED. Theoretically, this product cannot be synchronized in thefuture.Evaluating the State of the RecordUse these keywords to evaluate the current state of the record:• HAS_ATTRIBUTE_SET_CHANGED: determines whether any of theattributes specified in the format have been modified.• HAS_LINKED_RELATION_CHANGED: determines whether any of therelationships defined for a record have been changed. If the product had norelationship earlier, but a new relationship has been defined, or vice versa, thisreturns TRUE. If any relationship has changed, this returns TRUE. If therelated products remain the same, but the quantity of the products haschanged, this returns FALSE.• HAS_LINKED_QUANTITY_CHANGED: determines whether or not any ofthe previously linked records quantity defined for the record have beenchanged. Returns TRUE if quantity is changed for linked record. If no changein quantity, it returns FALSE.• HAS_PUBLISHED_RELATION_CHANGED: determines whether or notany of the previously published records relation defined for the record havebeen changed. Returns TRUE if relation is changed for published record. If nochange in relation, it returns FALSE.Identifying <strong>Product</strong> Quantity Changes• HAS_ANY_CHILD_CHANGED: returns TRUE if any of child products(based on traversal of the given forward relationship) have changed since theywere last registered with the data pool.• HAS_CHILDREN: returns TRUE if the product has relationships defined,and has child records.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


170 Chapter 7 Customizing Data Synchronization|• HAS_LINKED_QUANTITY_CHANGED: determines whether the quantityof a particular relationship has changed from an earlier defined quantity. Itwill also return TRUE if HAS_LINKED_RELATION_CHANGED is TRUE.• HAS_PUBLISHED_QUANTITY_CHANGED: determines whether or notany of the previously published records quantity defined for the record havebeen changed. Returns TRUE if quantity is changed for publish record. If nochange in quantity, it returns FALSE.• IS_ROOT_RECORD: returns TRUE if the product has been explicitly selectedfor synchronization.• IS_PARENT: returns TRUE for all records reached using a reverserelationship starting from the root record.• IS_CHILD: returns TRUE for all records reached using specified relationshipstarting from the root record.Example:In this example, the user selected A for synchronization, and selected the Containsand ContainedBy relationships for processing. ContainedBy is defined as a reverserelationship of Contains.While evaluating A, all related records are collected in the record bundle, with Aas the root record. All records selected by traversal of the given relationships areincluded in the bundle. Refer to the Conditional Parent/Child Relationships table thatfollows.• A contains B• B contains C• Z contains A• Y contains Z• Z contains D• B, C, Z, Y and D are implicitly included.Table 16 Conditional Parent and Child RelationshipsRecord IS_ROOT_RECORD IS_PARENT IS_CHILD HAS_PREVIOUSLY_PUBLISHED_PARENTA True False False True if IS_PUBLISHED is true foreither Z or Y.B False False True True if IS_PUBLISHED is true forany of Z, A, or Y.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Format-Specific Attributes on GUI| 171Table 16 Conditional Parent and Child RelationshipsRecord IS_ROOT_RECORD IS_PARENT IS_CHILD HAS_PREVIOUSLY_PUBLISHED_PARENTC False False True True if IS_PUBLISHED is true forany of Z, A, B, or Y.Z False True False True if IS_PUBLISHED is true forY.Y False True False False.D False False False True if IS_PUBLISHED is true foreither Z or Y.Incorporating User InputUse these keywords to incorporate user input from the Catalog:• IS_ACCEPT_REQUESTED: returns TRUE if the user chose to send theACCEPTED message on the Catalog.• IS_ADD_REQUESTED: returns TRUE if the user selected the ADD option onthe Catalog.• IS_CANCEL_REQUESTED: returns TRUE if the user selected theWITHDRAW option on the Catalog.• IS_CORRECTION_REQUESTED: returns TRUE if the user selected theMinimize Version option on the Catalog.• IS_DELETE_REQUESTED: returns TRUE if the user selected the DeleteVersion option on the Catalog.• IS_DISCONTINUE_REQUESTED: returns TRUE if the user selected theDELIST option on the Catalog.• IS_INCREMENTAL_REQUESTED: returns TRUE if the user selected theIncremental Flag option on the Catalog.• IS_PUBLISH_REQUESTED: returns TRUE if the user selected the PUBLISHoption on the Catalog.• IS_REJECT_REQUESTED: returns TRUE if the user chose to send theREJECTED message on the Catalog.• IS_RELOAD_REQUESTED: returns TRUE if the user selected the INITIALLOAD option on the Catalog.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


172 Chapter 7 Customizing Data Synchronization|• IS_REVIEW_REQUESTED: returns TRUE if the user chose to send theREVIEW message on the Catalog.• IS_SYNCHRONISE_REQUESTED: returns TRUE if the user chose to sendthe SYNCHRONISED message on the Catalog.• IS_ADD_DELETE_REQUESTED: return true if user selects ADD andDELETE operations on Catalog.• IS_ADD_REINSTATE_REQUESTED: return true if user selects ADD andREINSTATE operations on Catalog.• IS_ADD_DISCONTINUE_REQUESTED: return true if user selects ADDand DISCONTINUE operations on Catalog.• IS_ADD_CANCEL_REQUESTED: return true if user selects ADD andCANCEL operations on Catalog.• IS_RFCIN_REQUESTED: return true if user selects RFCIN option onCatalog.• IS_PUBLISH_CANCEL_REQUESTED: return true if user selects PUBLISHand CANCEL operations on Catalog.• IS_PUBLISH_DISCONTINUE_REQUESTED: return true if user selectsPUBLISH and DISCONTINUE operations on CatalogConfiguring ResponseHandlersThe response handler plug-in used depends upon the ConnectorProtocol. Thereare predefined response handlers for protocols - Agentrics and 1Sync. All customprotocols go through a default response handler that simply forwards a receivedmessage (or response) to the workflow. To define a custom protocol you need toconfigure the rulebase mentioned in one of the above sections.Configuring MessagingHandlersThere are predefined messaging handlers for protocols - Agentrics and 1Sync. Allcustom protocols go through a default messaging handler that goes sequentiallythrough all the identified operations without regard to the order of recordsselected or the order of operations.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Format-Specific Attributes on GUI| 173Role Derivation RulebaseRole is one of the two variables used for selecting connector plug-ins used insynchronization workflows. The Role used can be configured using the rulebasepointed to by the property Configurator > Connector > Connector Role Rulebase(velosel.connector.rolederivationrulebase).Sync Validation Rulebase<strong>TIBCO</strong> <strong>MDM</strong> supplies sample validations for various datapools. For each datapool there are 2 validation files provided.If you want to apply validations for a specific datapool when records are createdand modified, you need to install the corresponding validation file. All validationfiles are located in /standard/rulebase/.It is recommended that if you modify these files, do not change the constraintnames. This will allow you to reapply any changes in sample files.You need to select appropriate rulebase while creating a catalog.If you do want to apply additional validations during sync, you have 2 choices:• Modify the sample rulebase. It is recommended that you copy these filesunder your enterprise directory before modifying. Also, leave the <strong>TIBCO</strong><strong>MDM</strong> defined constraint names as is, for easy upgrade.• Define additional validations in a separate rulebase.To apply 2 validations, modify the synchronization workflow as follows:1. Add a new ApplyRulebase step before the existing ApplyRulebase step.2. Specify the name of the sample file in the new step and pick the additionalvalidation file in the catalog.Protocol Derivation RulebaseProtocol is one of the two variables used for picking up connector plug-ins to beused in a synchronization workflows. The Protocol used can be configured usinga rulebase pointed to by the Configurator > Connector > Connector Rulebase.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


174 Chapter 7 Customizing Data Synchronization|Configuring QueuesFor communication between two different enterprises, a couple of gateways areneeded to transport messages across two firewalls, and to transfer messages fromthe Q_ECM_INTGR_STD_OUTBOUND_INTGR_MSG queue of the sender instance to theQ_ECM_INTGR_STD_INBOUND_INTGR_MSG queue of the receiver instance.The same physical queue (Q_ECM_INTGR_STD_INBOUND_INTGR_MSG) hosted onone of the JMS servers (the one connected to <strong>TIBCO</strong> <strong>MDM</strong> M/P) can be used, andyou can map it to the following:— logical queue (StandardOutboundIntgrMsg) used for sending outboundintegration messages from the Brand Owner instance, and— logical queue (StandardInboundIntgrMsg) used for receiving inboundintegration messages in the <strong>TIBCO</strong> <strong>MDM</strong> M/P instance.This is possible because the messaging framework allows:1. Mapping between logical queue name and physical queue names.2. Connectivity to multiple JMS servers from the same instance.The following configuration changes need to be made:• Since Brand Owner will need to connect to two different queue managers, itwill need two different clusters.• If the Brand Owner instance is using MQSeriesCluster, add the followingproperties using Configurator. This is just a copy of the MQSeriesClustersection with a different queue manager (VeloselMPJMSQMgr) and a differentIP address (VeloselMPJMSServerIPAddress):Properties needed by the messaging framework:— com.tibco.cim.queue.cluster.MQSeriesCluster2=\inherit:com.tibco.cim.queue.cluster.DefCluster— com.tibco.cim.queue.cluster.MQSeriesCluster2.clusterLiaison.class=com.tibco.mdm.integration.messaging.queue.ibm.MQSeriesClusterLiaison— com.tibco.cim.queue.cluster.MQSeriesCluster2.replaceAllConnOnFailure=true<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Configuring Queues| 175Vendor specific properties:— com.tibco.cim.bus.cluster.MQSeriesCluster.clusterLiaison.clusteredQMgrs=LocalhostQMgr— com.tibco.cim.queue.cluster.MQSeriesCluster2.clusterLiaison.clusteredQMgr.LocalhostQMgr.connFactory.mqQMgr=VeloselMPJMSQMgr— com.tibco.cim.queue.cluster.MQSeriesCluster2.clusterLiaison.clusteredQMgr.LocalhostQMgr.connFactory.mqHost=VeloselMPJMSServerIPAddress— com.tibco.cim.queue.cluster.MQSeriesCluster2.clusterLiaison.clusteredQMgr.LocalhostQMgr.connFactory.mqPort=— com.tibco.cim.queue.cluster.MQSeriesCluster2.clusterLiaison.clusteredQMgr.LocalhostQMgr.connFactory.mqChannel=SCC_ECMThe mapping of the logical queue to the physical queue on the Brand Ownerinstance needs to be changed to use Q_ECM_INTGR_STD_INBOUND_INTGR_MSG(instead of Q_ECM_INTGR_STD_OUTBOUND_INTGR_MSG) hosted on the JMSserver connected to the <strong>TIBCO</strong> <strong>MDM</strong> M/P instance (the queue will be hostedby MQSeriesCluster2).Set the following properties in the Configurator:Properties needed by the messaging framework:— com.tibco.cim.queue.queue.StandardOutboundIntgrMsg=\inherit:com.tibco.cim.queue.queue.DefOutboundIntgrQueue— com.tibco.cim..queue.queue.StandardOutboundIntgrMsg.cluster=MQSeriesCluster2— com.tibco.cim.queue.queue.StandardOutboundIntgrMsg.msgIO=\inherit:com.tibco.cim.queue.msgIO.process.OutboundIntgrMsgIOProcess— com.tibco.cim.queue.queue.StandardOutboundIntgrMsg.addToJNDI=trueCluster specific properties - JNDI:— com.tibco.cim.queue.queue.StandardOutboundIntgrMsg.cluster.JNDICluster2.jndiQueueName=Velosel_Queue_StandardInboundIntgrMsgCluster specific properties - MQSeries:— com.tibco.cim.queue.queue.StandardOutboundIntgrMsg.cluster.MQSeriesCluster2.mqBaseQueue=Q_ECM_INTGR_STD_INBOUND_INTGR_MSG<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


176 Chapter 7 Customizing Data Synchronization|The mapping of the logical queue to the physical queue on the Brand Ownerinstance needs to be changed to use Q_ECM_INTGR_STD_OUTBOUND_INTGR_MSG(instead of Q_ECM_INTGR_STD_INBOUND_INTGR_MSG) hosted on the JMS serverconnected to the <strong>TIBCO</strong> <strong>MDM</strong> M/P instance (the queue will be hosted byMQSeriesCluster2).<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 177Chapter 8Customizing Generic ScreenThis chapter describes the out-of-box implementation and possiblecustomizations of the generic screen.Information related to Marketplace, Retailer, RFCIN is specific to GDSN only.Topics• Overview, page 178• Configuring Generic Screen, page 179• Customizing <strong>Product</strong> Attributes, page 180• Customizing Actions, page 181• Customizing MarketPlace and TradingPartner Credentials, page 184• Customizing User Defined Attributes, page 185<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


178 Chapter 8 Customizing Generic Screen|OverviewThe generic screen is available from the Record View screen, where there is anactions link for SendMessage based on the user privileges (Role). The UI thatopens on clicking this link is completely customizable based on the underlinedrulebase rbsendMessage.xml. Currently, it is used to send an RFCIN messageand generate fact sheet.Following customizations are possible:• Customize the product attributes that can be displayed.• Customize action that can be performed.• Customize the MarketPlace and TradingPartner Credentials.• Customize the user defined attributesThese changes are applied to all repositories in an enterprise.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Configuring Generic Screen| 179Configuring Generic ScreenYou can configure the generic screen graphical user interface (GUI) to allow usersto specify different input variables. Use the Rulebase to modify generic screenbased on the following input parameters:• OUTPUT_FORMAT• MASTERCATALOGNAME• ORGANIZATION_TYPE• ACTIONAn example of a variable declaration for input parameters is the values of theseinput parameters are always uppercase and need to be compared to uppercasestrings. Based on the input parameters above, the following variables can beassigned for customization:• ATTRIBUTE_LIST• ACTION_LIST• USERDEFINED_LIST• CREDENTIAL_LISTAn example of the variable declaration is configuring the ATTRIBUTE_LIST. Thevalues assigned to the ATTRIBUTE_LIST output variable are used to populateformat-specific attributes of the catalog. You use a constraint tag, based on acondition, to modify the ATTRIBUTE_LIST output variable.OUTPUT_FORMATATTRIBUTE_LIST<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


180 Chapter 8 Customizing Generic Screen|Customizing <strong>Product</strong> AttributesAll the attributes that are available in the repository are valid values forATTRIBUTE_LIST and can be assigned as shown in the example below.You can assign as many attributes as required. All the display names of theseattributes are shown on the GUI.Display attribute ListStandard format specific attributes.MASTERCATALOGNAMEEANUCCSUBSCRIPTIONCATALOGATTRIBUTE_LISTSHORTDESCADDITIONAL_CLASS_CAT_CODEGTINTARGET_MARKET_IDSUPPLIERID<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Actions| 181Customizing ActionsThere are only two valid values that can be assigned to ACTION_LIST:• RFCIN — On submitting the form with Action as RFCIN, it sends an RFCINmessage to the Supplier based on the credentials. RFCIN is only valid for theretailer.• FACTSHEET — On submitting the form with Action as FACTSHEET, itgenerates the PDF format of the product.The following three constraints are provided out of box and are recommended tobe this way.Action Listlist of all actions possible with theorganization.ORGANIZATION_TYPESUPPLIERACTION_LISTFACTSHEET- Generate factsheetAction List 1list of all actions possible with theorganization.ORGANIZATION_TYPERETAILERACTIONRFCINACTION_LISTRFCIN- Generate RFCIN Message<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


182 Chapter 8 Customizing Generic Screen|FACTSHEET- Generate factsheetAction List 2list of all actions possible with theorganization.ORGANIZATION_TYPERETAILERACTIONFACTSHEETACTION_LISTFACTSHEET- Generate factsheetRFCIN- Generate RFCIN MessageIn the ACTION_LIST, FACTSHEET and RFCIN are must and description after“-“is Configurable. We can change the description as required. Default valuepopulated for ACTION on the screen is RFCIN on retailer enterprise andFACTSHEET on supply sideRFCIN Handling - Retailer SideThe following is a pictorial representation of how RFCIN messages are handledon the Retailer side:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Actions| 183Figure 1 RFCIN Handling - Retailer Side<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


184 Chapter 8 Customizing Generic Screen|Customizing MarketPlace and TradingPartner CredentialsYou can view or hide the marketplace credentials by populatingCREDENTIAL_LIST. The valid values are:• Marketplace• TradingPartnerYou can either populate just market place or both marketplace and tradingpartner, but just trading partner is invalid. Below is an example:CREDENTIAL_LISTMarketplaceTradingPartner<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing User Defined Attributes| 185Customizing User Defined AttributesThere are eight user defined attributes as follows:• two Strings• two dates• two numbers• two booleansAll these variables can be named as required by the user. The following illustratesthe assigning of user defined attributes:USERDEFINED_LISTDate1_Name:Start DateDate2_Name:End dateboolean1:boolean1boolean2:boolean2String1_Name:Special InstructionsString2_Name:String2_NameInteger1_Name:Integer1_NameInteger2_Name:Integer2_NameNames on the left of ’:’ are constants and cannot be changed. Those to the right of’:’ are configurable and are displayed on the GUI.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


186 Chapter 8 Customizing Generic Screen|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 187Chapter 9Setting up GPC Classification Scheme DataLoad (GDSN Only)This chapter describes the procedure for setting up the data load for the Global<strong>Product</strong> Classification scheme.The information in this chapter is applicable for the GDSN version of the softwareonly.Topics• Configuring GPC Classification Scheme Loading, page 188• Configuring Support for GPC Code, page 190<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


188 Chapter 9 Setting up GPC Classification Scheme Data Load (GDSN Only)|Configuring GPC Classification Scheme LoadingThe GPC data source is provided as out-of-the-box setup in the <strong>TIBCO</strong>CIMenterprise. For uploading new GPC codes:1. Add the following dataset to filewatcher.xml.DataSetS2GLOBALImportClassificationSchemeMQ_COMMON_DIRvelosel/GPCYesGPCGPC<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Configuring GPC Classification Scheme Loading| 1892. Ensure that the following sub-directories exist under the$MQ_COMMON_DIR/velosel/GPC/ directory.— incoming— rejected— done3. Place the data file (.csv) in the $MQ_COMMON_DIR/velosel/GPC/incomingdirectory. The .csv file is used for upload when the FileWatcher pollinginterval time is over. All the rows from the .csv file are uploaded into theGPC data source. If the upload is successful, the .csv file is copied into thedone directory.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


190 Chapter 9 Setting up GPC Classification Scheme Data Load (GDSN Only)|Configuring Support for GPC CodeAdding GPC drop-downs for Editing Records in a RepositoryFor dependent drop-downs, add the following section to your catalog validationrulebase:GPC_classificationGPCGPC CODEGPC CODE dropdownGPC_SEGMENT_CODEGPC_classification/SEGMENT_CODEGPC_classification/SEGMENT_DESCFAMILY CODEGPC Hierarchy Level 2 dropdownGPC_FAMILY_CODEGPC_SEGMENT_CODEGPCFAMILY_CODEFAMILY_DESCSEGMENT_CODE?GPC_SEGMENT_CODE<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Configuring Support for GPC Code| 191CLASS CODEGPC Hierarchy Level 3 dropdownGPC_CLASS_CODEGPC_FAMILY_CODEGPCCLASS_CODECLASS_DESCSEGMENT_CODE?FAMILY_CODE?GPC_SEGMENT_CODEGPC_FAMILY_CODEBRICK CODEGPC Hierarchy Level 4ADDITIONAL_CLASS_CAT_CODEGPC_CLASS_CODEGPC<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


192 Chapter 9 Setting up GPC Classification Scheme Data Load (GDSN Only)|BRICK_CODEBRICK_DESCSEGMENT_CODE?FAMILY_CODE?CLASS_CODE?GPC_SEGMENT_CODEGPC_FAMILY_CODEGPC_CLASS_CODE<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 193Chapter 10Setting up Data Quality ProcessThis chapter introduces you to the data quality processes in the application. Inparticular, it explains data duplicate detection (matching), scheduler duplicatedetection, and de-duplication (merging).Topics• Overview, page 194• Record Duplicate Detection Process, page 195• Scheduler Duplicate Detection Process, page 229• Limitations, page 237<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


194 Chapter 10 Setting up Data Quality Process|OverviewData Quality is the process used to derive unique, standardized, and completemaster data. Data quality routines ensure that the data entered in a repository is"golden" so that data can be managed appropriately. If data quality is low, therepository contains two or more records for the same logical item, that is, it resultsin duplication of data.To avoid duplicate records, it is often necessary to bring the same logical recordinto a standardized form. Only after this data standardization occurs, you cansuccessfully check for duplicates. This process of standardizing the data is alsoknown as data cleansing.Even after data cleansing, it may sometimes be difficult to determine whether arecord is really new or is actually a variation (that is, a version) of an existingrecord. It may require a mix of automated decisions (for most of the records) andsome human intervention to decide whether a record is new or existing. This isoften not a simple decision. For example, deciding whether two persons are thesame when a reliable or unique ID is missing, is difficult. It, typically, depends onthe nature of the data and, in particular, which attributes are needed foridentification. In case a reliable or unique ID is supplied, de-duplication is notrequired. However, this represents an ideal scenario which rarely occurs in thereal world.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 195Record Duplicate Detection ProcessTo detect duplicates, the application allows you to conduct ’similarity or fuzzy’searches based on certain identifying attributes.You can detect a duplicate with small variations in data and merge the dataduring a single or bulk record add or modify workflow. The duplicate detectionroutine allows you to run a fuzzy query based on a configurable record attributeand then returns one or more potential matches. Netrics or Advanced MatchingEngine is the search or match engine used for text search and record matching.You can match and de-duplicate records in bulk. Using the Business Process Rule(BPR) process definition selection, you can override the default upload or importprocess to choose the data quality import process. This direct load import processcalls the match and merge activities to detect duplicates and de-duplicate.This chapter describes in detail how the sample process functions.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


196 Chapter 10 Setting up Data Quality Process|Figure 2 Record Duplicate Detection Process<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 197The following components are involved in this process:• Specifying Index Entities, page 197• Enabling Text Indexing, page 200• Running Netrics Server, page 201• Restarting <strong>MDM</strong> Server, page 201• Selecting Data Quality Workflows, page 201• Specifying Matching Attributes, page 203• Enabling Reference Repository Matching, page 208• Specifying Merge Attributes, page 209• Customizing Workflow for Merge Attributes, page 209• Selecting Match Record Approval, page 210• Working with Merge Record screen, page 223Specifying Index EntitiesTo match and locate duplicate records in a repository, you must index therepositories in an IndexerConfig.xml file. In case of Reference RepositoryMatching, you must index both the source and target repositories. The specifiedattributes in this file are indexed.For more information on index configuration, refer to the <strong>TIBCO</strong> <strong>MDM</strong> SystemAdministration <strong>Guide</strong>.For Cross-repository MatchingScenario 1Single Parent contains single childCustomerAddressIndexEntityABCCUSTOMERFIRSTNAMELASTNAMERESIDENCEADDRESS<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


198 Chapter 10 Setting up Data Quality Process|ADDRESSADDRESSCITYZIPScenario 2Single Parent contains multiple children (Cross-repository overlapping)Specify indexing as follows:1. Customer > ResidenceAddress> Address2. Customer > CustomerToAcc > AccountEnsure that the Index entity name is unique. Example is as follows:CustomerAddressIndexEntityABCCUSTOMERFIRSTNAMELASTNAMERESIDENCEADDRESSADDRESSADDRESSCITYZIP<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 199CustomerBankIndexEntityABCCUSTOMERFIRSTNAMELASTNAMECUSTOMERTOACCACCOUNTACCOUNTBANKNAMEFor Reference Repository MatchingCustomerStagingIndexEntityABCCustomerStagingFirstNameLastNameCustomerReferenceEntityABCCustomerReferenceFNameLName<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


200 Chapter 10 Setting up Data Quality Process|Enabling Text IndexingTo enable text indexing:1. Start Configurator.2. Go InitialConfig > Repository. By default, Advanced Matching Engine isselected for the Matcher Type property.3. Select ONLINE or OFFLINE for the Text Indexing Enabled property.4. Click the Node ID from Cluster Outline.5. Go to Async Task Management in the Advanced configuration outline.6. Locate and set the value of the Text Indexing Receiver Pool Size to 1.The text indexing is enabled.CUSTOM ConfigurationYou can select the CUSTOM value for the Matcher Type property. The matcherimplementation uses the MatchingScore input parameter of the MatchRecordactivity to perform the match operation.For the CUSTOM type, use the Matcher Factory Class configuration propertyto specify the custom match factory implementation.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 201The custom factory implementation extends the MatcherFactory class andoverrides the following method:public IMatcher getMatcher() throws MqException;For more information on indexing, refer to the Search and Matching chapter of the<strong>TIBCO</strong> <strong>MDM</strong> System Administration <strong>Guide</strong>.Running Netrics ServerAfter enabling text indexing, run the netricsServer.bat/sh utility, which isavailable in the $MQ_HOME/bin folder.For more information on the options available in the utility, refer to the Search andMatching chapter of the <strong>TIBCO</strong> <strong>MDM</strong> System Administration <strong>Guide</strong>.Restarting <strong>MDM</strong> ServerAfter you update the IndexerConfig.xml file, you must restart <strong>TIBCO</strong> <strong>MDM</strong>server.Selecting Data Quality WorkflowsA de-duplication process is available out-of-the-box and can be adapted for aspecific implementation. The Process Definition Selection business process ruleallows you to select the out-of-the-box Data Quality workflows.To select Data Quality workflows1. Click Business Processes in the menu. The Business Processes screen displaysa list of all available business processes.2. Click Process Definition Selection rule. The Rule Template screen isdisplayed.3. Click Default template. The Rule List screen is displayed.4. Click Create. The New Rule screen is displayed. Select the followingconditions:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


202 Chapter 10 Setting up Data Quality Process|• Record Add Process: In this process, when a new record arrives, the processdetermines whether similar records exist in the repository.— Document type > Record Edit— Document sub type > Record Add— Set the process to > wfin26dqproductaddapprovalv1.xml• Direct Load Import Process: In case of bulk import, it is assumed that theincoming records are sufficiently standardized for duplicate detection.— Document Type > Upload/Import— Document sub type > Import Records— Set the process to > wfin26dqcatsourcev1.xml<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 2035. Click the Save button. The created rules are saved in the Rule list.Specifying Matching AttributesTo match records, specify matching attributes in a rulebase file. For example, referto the MatchAttrList.xml file located in the $MQ_COMMON_DIR/standard/rulebasefolder. Using matching attributes, you can search for close, not necessarily exact,matching records.If you copy the MatchAttrList.xml file in $MQ_COMMON_DIR\\rulebase folder, you need to change its location in relevantworkflow files.Simple MatchingIn Simple Matching process, specify only record attributes as matching criteria inthe rulebase file. For example, for a Customer repository, the matching attributesmay be FirstName, MiddleName, and LastName. If any of these attributes’ valuesmatch against an existing record upto the specified minimum matching threshold,the record can be a matching record candidate. The specified record attributes aresearched in all repositories and the matching result displays the values ofmatching attributes for all repositories.• MatchAttributesArray: Lists the record attributes to be used as matchingcriteria. For example,Attributematch attribute ListMatchAttributeArrayFIRSTNAMEMIDDLENAMELASTNAMECross-repository Matching and OverlappingIn Cross-Repository Matching process, specify attributes across relatedrepositories as matching criteria.Scenario 1Single parent contains single child<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


204 Chapter 10 Setting up Data Quality Process|Consider, a Customer repository is related to the Address repository byResidenceAddress relationship. You want to detect near-duplicate or duplicaterecords for a customer John Doe, who has a ResidenceAddress Palo Alto,94304.Figure 3 Cross-Repository Matching— MatchAttributesArray: List the record attributes of both the repositories tobe used as matching criteria. For example, FirstName and LastName fromCustomer repository and City and ZIP from Address repository.You can also specify the weightage of an attribute. Decide to whichattribute you want to provide more weightage for matching records. Forexample, the last name of a person is unique and not repeated frequently.Hence, specify weightage for the LASTNAME attribute. To specify weightage,use the caret sign (^).For example, LASTNAME^0.7.For example,Attributematch attribute ListMatchAttributeArrayCustomer:FIRSTNAMECustomer:LASTNAME^0.7Address:CITYAddress:ZIPScenario 2Single parent contains multiple children (Cross-repository Overlapping)Consider, the Customer repository is related to Address and Account repositoriesby ResidenceAddress and CustomerToAcc relationships respectively.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 205Figure 4 Cross-Repository Overlapping— MatchAttributesArray: List the record attributes to be used as matchingcriteria across multiple related repositories. For example,Attributematch attribute ListMatchAttributeArrayCustomer:FIRSTNAMECustomer:LASTNAMEAddress:CITYAddress:ZIPAccount:BanknameReference Repository MatchingIn Reference Repository Matching process, you can locate duplicate records intwo different repositories. In this process:• If a single match is found, go to direct merge. Based on the specified mergeattributes, records are automatically merged.• If more than one duplicate records are found, records are displayed in thematcher work item. Based on the merge attributes, you can merge the records.Relationships are not supported in the Reference Repository matching process.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


206 Chapter 10 Setting up Data Quality Process|Figure 5 Reference Repository MatchingFor different repositories, you must specify matching attributes criteria of onerepository and index entity attributes of another repository against which youwant to match records. These two sets of repository attributes correspond to oneanother while matching the records.— MatchAttributesArray: List the record attributes of a source repository tobe used as matching criteria.Attributematch attribute ListMatchAttributeArrayCustomerStaging:FIRSTNAMECustomerStaging:LASTNAMECustomerStaging:DateofBirth— IndexEntityAttributes: List the record attributes of a target repository to bemapped to the IndexEntityName table attributes of a target repository.IndexEntityAttributesCustomerReferenceEntity:FNAMECustomerReferenceEntity:LNAMECustomerReferenceEntity:DOB<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 207While specifying index entity attributes in the rulebase:• Ensure that the number of attributes specified in MatchAttributeArray andIndexEntityAttributes must match, else the IndexEntityAttributes areignored.• Specify the IndexEntity name followed by the attribute name. Entity namespecified for a target repository is the target repository name specified in theIndexerConfig.xml file.• Specify the MatchingAttributes and IndexEntityAttributes in thehierarchy level because the MatchRecord activity uses theMatchAttributesArray and IndexEntityAttributes in the exact specifiedorder. For example, if CustomerStaging:FIRSTNAME is the first attributespecified under MatchAttributesArray, and CustomerReferenceEntity:FNAME isthe first attribute specified under IndexEntityAttributes, the MatchRecordactivity accesses the FIRSTNAME attribute’s value (For example, JOHN) fromthe CustomerStaging record and uses this value to query theCustomerReference index entity using the FName attribute.Specifying Non-matching AttributesIf you want to display non-matching attributes of two different repositories in thework item, specify those in the catalogvalidation.xml file of the sourcerepsitory. The file is located in the $MQ_COMMON_DIR//catalog/master/ directory.For example,AttributeRRMMappingAttributesmatch attribute List RRMMappingAttributes.Each attribute must be qualified by EntityName.RRMMappingAttributesCustomerStaging:CITY=CustomerReference:BANKNAMEThe Array name must be RRMMappingAttributes.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


208 Chapter 10 Setting up Data Quality Process|Based on this list, the attributes are displayed in work item. You can mergematching and non-matching attributes.You cannot merge multiple attributes of a source repository into a single attributeof a target repository. Hence, in this example you cannot map AccNo attribute ofthe CustomerReference repository to CustomerStaging repository. Thenon-mapping attributes are not displayed in the work item.Enabling Reference Repository MatchingBy default, the wfin26productaddinternaleditv1.xml workflow is used forboth cross-repository overlapping and reference repository matching. However,you must explicitly enable the Reference Repository Matching settings in thisworkflow.1. Open wfin26productaddinternaleditv1.xml file and comment thefollowing lines:2. Uncomment the following line in EvaluateRulebase and MatchRecordactions:IndexEntityAttributes<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 209Specifying Merge AttributesIn case of large number of attributes, you may want to skip a few attributes andallow rest of the attributes. Accordingly, you can specify either allow or skipattributes in a rulebase file.To merge records, specify merging attributes based on any one of the followingtwo constraints:• Allow Merge: To allow attributes for merge, sample allowAttrList.xmlrulebase file is provided in the $MQ_COMMON_DIR/standard/rulebase folder.Specify the attribute name in this file.For Reference Repository Matching. you must specify allow merge attributes inthe following format:CUSTOMERSTAGING:FirstName=CUSTOMERREFERENCE:FNameCUSTOMERSTAGING:LastName=CUSTOMERREFERENCE:LName• Skip Merge: To skip attributes for merge, sample skipAttrList.xmlrulebase file is provided in the $MQ_COMMON_DIR/standard/rulebase folder.Specify the attribute name in this file.For Reference Repository Matching, skip Merge is not supported.In case of Direct merge, if you do not specify allow or skip merge attributes in therulebase, all attributes from source record except PRODUCTID and PRODUCTIDEXTare merged into the target record. However, in case of Reference RepositoryMatching, only matching attributes are merged.Customizing Workflow for Merge AttributesThe SkipMergeAttributeList and AllowMergeAttributeList parameters inthe MergeRecord activity evaluates merge or skip attributes. By default, theSkipMergeAttributeList parameter is specified in the MergeRecord activity.For allow merge, you need to customize the workflow.To customize the workflow:1. Go $MQ_HOME\common\standard\workflow folder.2. Open wfin26productaddinternaleditv1.xml file.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


210 Chapter 10 Setting up Data Quality Process|• For Allow merge:— Add that the following parameter in MergeRecord action:allowMergeAttributeList— Add the following parameter in EvaluateRuleBase action:allowMergeAttributeList— Specify the path of allow merge attribute rulebase file inEvaluateRuleBase action. For example,$MQ_COMMON_DIR/standard/rulebase/allowAttrList.xml• For Skip merge:— Since SkipMergeAttributeArray is not supported for ReferenceRepository Matching, perform the following:Add comment to the following parameter in the MergeRecord action:standard/rulebase/skipAttrList.xmlAdd comment to the following parameter in the EvaluateRuleBaseaction:skipMergeAttributeListBased on the specified allow or merge attributes in the rulebase, theMergeRecord activity merges or skips attribute data. For more information onthese parameters, refer to the MergeRecord activity section in the <strong>TIBCO</strong><strong>MDM</strong> Workflow Reference.Selecting Match Record ApprovalTo select Match Record Approval1. Click Business Processes in the menu. The Business Processes screen displaysa list of all available business processes.2. Click Match Record Approval rule. The Rule Template screen is displayed.3. Click Default template. The Rule List screen is displayed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Record Duplicate Detection Process| 2114. Click Create. The New Rule screen is displayed. Select the followingconditions:— Set the participant user to > — Set the next work item state to -> Final Step/Done5. Click the Save button. The created rule is saved in the Rule list.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


212 Chapter 10 Setting up Data Quality Process|Matching Records Using MatchRecord ActivityThe MatchRecord activity performs the following:• Retrieves a source record list as an input and matches each source recordagainst the existing repository data.• Runs a fuzzy search query and returns potential matches.• Identifies a matching record provided in a set of matching attribute criteria.Based on the MatchingThreshold set in the MatchRecord activity, the output ofthe workflow is as follows:• If one match is found, it is assumed that the match describes the samesemantic record and the new record is merged into the existing record as anew version.• If no match is found, the record is assumed to be a new one and is introducedas a new record in the repository.• If multiple matches are found, a work item page is displayed where you canselect one of the choices displayed. For more information, refer to Workingwith Work Item on page 221.The workflow for adding a single record for Data Quality process is shown in thefollowing diagram:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Matching Records Using MatchRecord Activity| 213Figure 6 Adding a Single Record<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


214 Chapter 10 Setting up Data Quality Process|The workflow for bulk import is shown in the following diagram:Figure 7 Bulk Import WorkflowCross-repository MatchingThe following workflow illustrates the Cross-Repository Matching process usingthe MatchRecord activity:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Matching Records Using MatchRecord Activity| 215Figure 8 Match Record : Cross-Repository WorkflowReference Repository MatchingThe following workflow illustrates the Reference Repository Matching processusing MatchRecord activity:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


216 Chapter 10 Setting up Data Quality Process|Figure 9 Match Record : Reference Repositories Matching WorkflowFor more details on the MatchRecord activity, refer to the <strong>TIBCO</strong> <strong>MDM</strong> WorkflowReference.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Merging Records Using MergeRecord Activity| 217Merging Records Using MergeRecord ActivityThe MergeRecord activity accepts the output of the MatchRecord activity, andthen merges the source record with the target record. The source record refers to anew record and the target record refers to an existing record.Mutation of RecordsIf PRODUCTID or EXTN is specified in the rulebase, record is mutated based on theAllow Merge constraint. For more information on mutation, refer to theModifying Records section of the <strong>TIBCO</strong> <strong>MDM</strong> User’s <strong>Guide</strong>.Condition for MutationMutation is possible if a record with the same ID and EXTN does not exist in arepository.MergeRecord Activity ModesThe MergeRecord activity works in the following three modes:• Bulk• InDocument• LegacyBulk ModeThe Bulk mode allows you to merge multiple records. For example, you haveimported 100 records and found a match for 50 source records. The work itemsare generated for 50 matched source records provided the MatchRecordApprovalBusiness Process Rule is set. For more details on merging records using workitems, refer to Working with Work Item on page 221.During the merge process, the ReferenceStepID of the MergeRecord activity ismapped to the out parameter MatchRecordProcessLogID of the MatchRecordactivity.InDocument ModeInDocument refers to the MLXML document that contains the source record to bemerged with the target record. The InDocument mode allows a single recordmerge, relationship merge, and hierarchy merge. For example, you have added anew record through UI or the JMS message. You can verify whether this new<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


218 Chapter 10 Setting up Data Quality Process|record already exists in the application using the MatchRecord activity. If youfound the exact match for this new record, you can directly merge the sourcerecord with the target record. For example, consider the following recordhierarchy:Figure 10 Merge Record : InDocument modeIn this case, a new record - John Roe has two related records: Address record PaloAlto, 94304 and BankAccount record Bank of California Acct Number11223344 and the existing record - John Doe has one related ResidenceAddressrecord Palo Alto, 94304 , which is found matching. However,SavingsBankAccount relationship does not exist. Hence, while merging therecords, the following records are merged:• Primary Person record is merged.• Attributes of the matching ResidenceAddress repository are merged.• By default, true value is specified for ImplicitRelationshipMergeparameter, therefore non-matching SavingsBankAccount relationship is alsomerged.ImplicitRelationshipMerge works only for Direct merge. Implicit RelationshipMerge allows you to merge non-matching relationship records. You can select notto merge such non-matching relationships implicitly by specifying the falsevalue for the ImplicitRelationshipMerge parameter of the MergeRecordactivity.Legacy ModeThe Legacy mode is supported only with the release version 8.2 or later. Legacymode uses the MergeRecordUsingLegacyProcess parameter of the MergeRecordactivity. If you found a source record matching with the existing record, you candirectly process it for merge or you can pass source and target records directly tothe merge without evaluating MatchRecord activity.The MatchRecord activity is optional for the Legacy mode.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Merging Records Using MergeRecord Activity| 219In the Legacy mode, you can merge only one level of data. For example, considerthe following record hierarchy:Figure 11 Merge Record : Legacy modeIn this case, a new record - John Roe has two related records: Address record PaloAlto, 92303 and BankAccount record Bank of California Acct Number11223344 and the existing record John Doe has one related ResidenceAddressrecord Palo Alto, 94304.If you specify true value for the MergeRecordUsingLegacyProcess parameter,only root data, that is only Person record data is merged. Merging of hierarchydata and relationship merge are not supported, that is, attributes of the matchingResidenceAddress repository are not merged. The non-matchingSavingsBankAccount relationship is also not merged.For more details on the parameters of the MergeRecord activity, refer to the<strong>TIBCO</strong> <strong>MDM</strong> Workflow Reference.TransitionsWhen the matcher work item activity is complete, that is, the work item issubmitted, the process performs the following activities:• MatcherWork Item >> SpawnWorkflowForAddNewRecordsIf there are some source records marked as "Accept as new" on the work item,they are processed for a add new record workflow.• MatcherWorkItem >> UpdateRecordStateAsRejectedIf there are some source records marked as "Rejected" on the work item, theyare processed for updating their state as Rejected.• MatcherWork Item >> MergeRecordBulkIf there are some source records marked as "Merged" with existing record onthe work item, they are processed for a Merge decision.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


220 Chapter 10 Setting up Data Quality Process|This processing is based on the output parameters set by the work item activityon submission. The following output parameters are generated by theCreateWork Item activity (refer the MatchRecordWorkItemBulk activity in thebulk workflow wfin26productmergeapprovalv1.xml) to the process state whenthe work item gets submitted.• RecordListForNew: Arraylist of recordkey IDs.• RecordListForReject: Arraylist of recordkey IDs.• MergeCount: Count of source records to be merged.• MatchingRecordKey: Output only when a single input source record ismerged with a target record, that is, the MergeCount is 1 and theRecordListForNew and RecordListForReject are empty/null.reject records.RecordListForReject com.tibco.mdm.workflow.engine.transition.WfSharedConditionTransition.isNotEmptyOrNull(RecordListForReject);add records.RecordListForNew com.tibco.mdm.workflow.engine.transition.WfSharedConditionTransition.isNotEmptyOrNull(RecordListForNew);merge records.MergeCount com.tibco.mdm.workflow.engine.transition.WfSharedConditionTransition.isGreaterThanZero(MergeCount);<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Working with Work Item| 221Working with Work ItemWhen multiple matches are found, a work item page is displayed where you can:• Accept the record as a new record• Merge a few attributes from the source record into the target record (attributelevel merge)• Merge the entire record as a new target record version (blanket merge)• Reject the source recordTypes of Work ItemsBased on your matching and configuration criteria, the following types of workitem screens are displayed:Cross-repository Simple Matching Work item<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


222 Chapter 10 Setting up Data Quality Process|Cross-repository Overlapping Work itemReference Repository Matching Work item<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Working with Work Item| 223Working with Merge Record screenWhen you open the work item, the Merge Record screen is displayed.The MergeRecord screen displays:• Work item and repository details. For example, work item ID, event ID, timeout details, repository name, and date of duplicate records detected.• Record information in a tabular format. For example, the Record ID, Status,Record Ext, Reviewed By, Reviewed On, and Number of matching recordsdetails are displayed.• Matching Record details. For example, matching threshold and duplicatedetection date.From this screen, you can:• View — The View drop-down list allows you to view the status of recordsdisplayed in the table based on whether the records are accepted as new,rejected, merged, or pending.• Accept a source record as a new record — Click Accept as new to accept theselected source record as a new record.To accept all source records as new records in the repository, you can do one ofthe following:— Click Done directly without taking any other action. A confirmation dialogwith the following message appears.Any source record(s) pending action will be accepted as new.Do you want to continue?Click Ok to accept all source records as new in the repository. Accept asnew is the default action for all pending source records.— Select all the check boxes by clicking the header check box. Click Accept asnew.• Quick Export — Click Quick Export to export matching records and attributesfrom a repository to a file in the delimited format.• Reject a source record — Click Reject to reject the selected source record. Toreject multiple source records, select the check box of the respective record andclick Reject.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


224 Chapter 10 Setting up Data Quality Process|• Merge source with an existing matching record:a. Click the record to be merged. For example, 8437. A Merge Details table isdisplayed at the bottom of the Merge Record screen. All availablematching records are displayed as separate columns in this table.b. Select the Target Matching Record by clicking the radio button of theappropriate column that you want to merge with the source record. Forexample, "4437-ext_4437".c. Click the Merge Record button. The Merge Record Details screen isdisplayed with the target record values.By default, Show All option is displayed in the View drop-down list. Theother options are Show Matcher Attributes and Show Different Values.The highlighted rows in the Source Record values column are matcherattributes.d. Select the source attribute value by clicking the respective check box in theSource Record values column. As the individual source attributes<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Working with Work Item| 225selected, the values displayed in the Target Record values column changedynamically as shown in the following figure:Merge Record Details (Reference Repository Matching)<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


226 Chapter 10 Setting up Data Quality Process|Merge Record Details (Cross-Repository Overlapping )The highlighted row in the Target Record values column represents thefinal value of the merged record.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Working with Work Item| 227Merge Record Details (Add New Relationships)The Add as New checkbox has been added on the Merge Record Details screenfor every relationship records. You can add a new relationship instead of mergingattributes.After you select this checkbox, all attributes of a related record are disabledand the relationship is added to the target record.If a relationship record is added to the target record, all its attributes andthe related records will get added. You cannot skip the sub child record.e. Click the Merge button. The record is merged and the Merge Recordscreen is displayed.If you do not select any attribute and click the Merge button, all source recordvalues apart from PRODUCTID and PRODUCTIDEXT are merged in the target recordvalues. However, if you have specified any attributes as VIEW attributes in therulebase, those are not merged.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


228 Chapter 10 Setting up Data Quality Process|To view the merged record, select the Merged option from the Viewdrop-down list.The MergeRecord activity is not yet performed as the work item is notsubmitted. The changes to the selected matching record indicate the futurestate of the matching record as a result of merge to be performed later.The merge decision can be altered again on the work item without anychange of state or version in the Matching record.f. Click the Done button. The work item is submitted and closed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Scheduler Duplicate Detection Process| 229Scheduler Duplicate Detection ProcessThe Scheduler Duplicate Detection process allows you to locate duplicate recordswithin an existing repository. In <strong>TIBCO</strong> <strong>MDM</strong> , data is retrieved and loaded frommany sources such as Web Services, bulk import, Database Loader, and so on. Inthis process, the database may contain duplicate records. Therefore, you need toperform the duplicate detection on these records on timely basis.Figure 12 Scheduler Duplicate Detection Process<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


230 Chapter 10 Setting up Data Quality Process|The following components are involved in this process:• Restarting <strong>MDM</strong> Server, page 235• Downloading Generated Report, page 236• Specifying Display Attributes, page 235• Restarting <strong>MDM</strong> Server, page 235• Selecting Scheduler Workflow, page 235• Downloading Generated Report, page 236Configuring SchedulerTo schedule the duplicate detection process in a timely manner, you need toconfigure the CronSchedules.xml file. The CronSchedules.xml file is located inthe $MQ_HOME/config folder.Specify the following tags under Schedule tag in the CronSchedules.xml file:• Name: Specify the name of the scheduler. For example, Scheduler DuplicateDetection for XYZ Enterprise.• Jobs: Specify the jobs that have to be initiated and invoked. You can includemore than one job tag.• Job: Specify the job that informs the time and job (task) to be initiated.— Name: Specify the job name. For example, FED Job.— TriggerExpression: Specify the cron trigger expression based on which thejob is invoked. For example, 0 0/5 * * * ?, which refers to SecondsMinutes Hours Day-of-Week YearThe trigger expression can contain more than one expression. For moreinformation, refer to the Scheduler Configuration chapter in the <strong>TIBCO</strong><strong>MDM</strong> System Administrator’s <strong>Guide</strong>.— JobDetailsClass: Specify the job class that implements the task. Forexample,For Future Effective Date scheduler job:com.tibco.mdm.infrastructure.scheduler.FEDSchedulerFor Scheduler Duplicate Detection job:com.tibco.dq.scheduler.DuplicateDetectionJob or implementcom.tibco.mdm.infrastructure.scheduler.CimSchedeulerjob.The JobDetailsClass must implementcom.tibco.mdm.infrastructure.scheduler.CimSchedeulerjobinterface. When a trigger is executed in the Java class, the execute()<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Scheduler Duplicate Detection Process| 231method is called. You can extend a job by specifying thecom.tibco.mdm.infrastructure.scheduler.CimSchedulerJob classand implement the executeJob methods by passing the context object. TheScheduler framework provides the context object to the implemented job.The context object contains the job name, trigger name, its description, andso on. The signature of the executJob method is public voidexecuteJob(JobExecutionContextjobExecutionContext) throwsMqException{…}• ExecuteOnStartup: If you specify true value, the scheduler runs the job at thestart of the application. By default, the value is false.• Job Inputs:— EnterpriseName: Specify the enterprise name on which duplicatedetection process must invoke.— UserName: Specify the user name. User name is case sensitive.— JobPolicy: Specify the XML file name that is parsed for repositoryattributes. For example, the MatchRecordRule.xml file.— ParserClass: Specify the class that parses through XML file and sends thevalues in a form of match. For example,com.tibco.dq.scheduler.MatchRecordRuleParser. If user has differentMatchRecordRule format, the parser class can be customized according tothe XML file.The job inputs are retrieved from the JobDataMap object in the Job classwith key as IRuleParser.GET_PARAMETER. A custom policy parser mustbe defined to implement IRuleParser interface.The Job Input tag is optional for other schedulers.You can customise other schedule jobs. These can be defined for any periodicexecutable task. For example, the Future Effective Date job or an email job to sendout a summary of pending work items every Friday evening. For moreinformation, refer to the samples located in the$MQ_COMMON_DIR/standard/samples/Scheduler sample folder.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


232 Chapter 10 Setting up Data Quality Process|Specifying Matching AttributesTo match and locate duplicate records, specify the repository attributes to be usedas matching criteria in an XML file. For example, the sampleMatchRecordRule.xml file is provided in the $MQ_COMMON_DIR/samples/DQprocess folder. You can change the file name. You must copy this XML file to the$MQ_COMMON_ DIR//rulebase folder. Thedefined repositories and their attributes are processed for duplicate detectionprocess.The sample MatchRecordRule.xml file includes the following tags and values:Table 17 Tag Names and DescriptionTag NameElementNameAttributeNameDescriptionValueRefers to the first node ofMatchRecordRule file. Itcontains SearchEntity node.SearchEntityIncludes the SearchMode,DataProvider, Repositorydetails and its attributes thatare considered in theduplicate detection process.TypeSpecifies the search entitytype. You can search recordsbased on the search entitytypes based on the repositorytype.The valid value istable or view. Thedefault value is table.• Table: Used for asingle repositoryduplicatedetection• View: Used for across-repositoryduplicatedetection<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Scheduler Duplicate Detection Process| 233Table 17 Tag Names and DescriptionTag NameElementNameAttributeNameDescriptionValueSearchModeSpecifies the search mode forscheduler duplicatedetection. You can specifyfollowing two modes:• Complete: Specifies thatfor the first time search isperformed on all data thatexists in a repository. Nexttime onwards, serververifies whether ascheduler duplicatedetection (SDD) job wasexecuted earlier, if yesonly new or changedrecords are searched. Forexample, the SDD job wasexecuted on 12 th Apriland the current SDD jobexecution date is 16 thApril. In this case, whiledetecting duplicaterecords, records aresearched between 12 thApril and 16 th April.• Incremental: Specifiesthat only new or changeddata is searched except inone case, that is, if a SDDjob was not executedearlier, then server startswith the Complete modeand the search isperformed on the entiredata.The valid value isIncremental orComplete. Thedefault value isIncremental.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


234 Chapter 10 Setting up Data Quality Process|Table 17 Tag Names and DescriptionTag NameElementNameAttributeNameDescriptionValueDataProviderThe class name of the dataprovider that returns a set ofrecords in a batch.Any custom data providerimplementation mustimplement theIRecordExtractor interfaceand provide implementationof the following twomethods:The valid value is anydata provider classname. For example,com.tibco.dq.dao.DupDetectJobDataExtractor• public IBatchIteratorgetRecords(longcatalogId,StringsearchMode,longeventId,StringviewName) throwsMqException;• public voidcloseIterator()throws MqException;MatchAttributesName of the matchingattributes and weightage. Forexample,The valid value forthe Name attribute isany valid string.• Name: The name of theattribute. For example,BANKNAME• Weight: Weight of thecharacter that is specifiedin the Name attribute. Forexample, if the Weightvalue is 0.80.The valid value forthe Weight attributeis a fraction between0 and 1.DisplayAttributesName of the attributes thatyou want to display in thereport.The valid value is anyvalid attribute name.RelationshipRefers to the relationshipname and related repositoryname.The valid value is anyvalid string.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Scheduler Duplicate Detection Process| 235Table 17 Tag Names and DescriptionTag NameElementNameAttributeNameDescriptionValueMatchingThresholdRefers to the matching scoreof the record.The value indicates aminimum matchingexpectation. For example, ifthe MatchingThresholdvalue is set to 0.75, onlyrecords matching 75% ormore are returned by thematching process.The valid value is theminimum matchingscore value between0-1.Specifying Display AttributesBesides the matching attributes, if you want other attributes to be displayed in thereport, you can specify these attributes in the DisplayAttributes tag of theMatchRecordRule.xml file.Restarting <strong>MDM</strong> ServerAfter you update the CronSchedules.xml file, you must restart <strong>TIBCO</strong> <strong>MDM</strong>server.Selecting Scheduler WorkflowThe Process Definition Selection business process rule allows you to select theout-of-the-box Scheduler Duplicate Detection workflow.To select Scheduler Duplicate Detection workflow1. Click Business Processes in the menu. The Business Processes screen displaysa list of all available business processes.2. Click Process Definition Selection rule. The Rule Template screen isdisplayed.3. Click Default template. The Rule List screen is displayed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


236 Chapter 10 Setting up Data Quality Process|4. Click Create. The New Rule screen is displayed. Select the followingconditions:— Document type > Scheduler Auto Duplicate Detection— Document sub type > Auto Duplicate Detection— Set the process to > wfin26dqscheduleddedupv1.xml5. Click the Save button. The created rule is saved in the Rule list.Downloading Generated ReportAfter you specify the matching attributes in the MatchRecordRule.xml file andscheduler job configuration details in the CronSchedules.xml file, theGenerateReportForSDD activity generates a report for the scheduler duplicatedetection process. This activity uses the text format. The job runs in the scheduledtime and the report is generated.To download the report1. Click Auto Duplicate Detection Post Process link in the Event Log screen.2. Click File Download. The File Download dialog is displayed to save or openthe text file.3. Click the Save button to download the file.Open the text file to view the duplicate records. If duplicate records do not exist,the text file contains only the specified enterprise name and matching attributes.For more details on the GenerateReportForSDD activity, refer to the <strong>TIBCO</strong> <strong>MDM</strong>Workflow Reference.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Limitations| 237LimitationsThe Matching across repositories is based on the indexing of multiple repositoriesin a single Netrics table as a composite entity. This approach of using adenormalized table for indexing has several fundamental disadvantages, such asreplicating data, requirement of more memory for too many record bundles, andso on. These disadvantages counteracts with the fast searches on thedenormalized table, which do not require any joins.Therefore, you must carefully specify the composite entities and limit theircomplexity. Following are the various limitations that you must be aware of whilespecifying the index entities:• Composite index entities cannot be defined across a self relationship.• The repositories in a composite index entity must be specified in a linear way.The index entity does not allow two relationships in one repository, which isimplemented in the Index configuration file. Each repository tag inside theindex entity can only have one associated relationship.• Relationship attributes cannot be used in matching expressions. However, theText Search web service allows specifying relationship attributes for a searchcriteria.• Defining an index across reverse relationships is not possible. Similarly,matching and text searching across reverse relationships are not supported.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


238 Chapter 10 Setting up Data Quality Process|<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 239Chapter 11Localizing Text StringsThe application supports multiple locales of the application. Currently, theapplication uses HTML templates to generate the user interface which is viewedin a browser on the client side. These templates contain static text written inEnglish. The text also exists in other locations such as JavaScript functions andimages displayed on the user interface, database tables, rulebase, and workflowtemplates.This release provides a framework which helps you reduce the workload inmaintaining multiple locales. It provides a mechanism to localize the static text invarious files to the required locale.Topics• Overview, page 240• Resource Bundles, page 241• <strong>TIBCO</strong> General Interface (GI) Screens, page 247• Extracting the Locale, page 248• Creating Locale-specific Resource Bundles, page 255• Externalizing Buttons, page 256• Translating Dynamically Generated Text Created by Rulebase, page 259• Translating Role Names and Descriptions, page 260• Translating Relationship Names, page 261• Externalizing Text Displayed by Workflows, page 262• Translating Meta Data, page 264• Loading Resource Bundles for Plug-ins, page 267<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


240 Chapter 11 Localizing Text Strings|OverviewYou can localize the strings in the following areas in various languages:• HTML pages• JavaScript files• Database tables• Strings displayed on the UI• Error messages displayed on the UI• GI screens• Pre-defined attribute groupsThe following areas can not be customized:• Email templates• Business Process Rule templates<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Resource Bundles| 241Resource BundlesYou can localize the strings from the following components:• HTML pages• JavaScript files• Database tables• Strings displayed on the UI• Error messages displayed on the UITo localize these strings, use the following resource bundles:Table 18 Resource BundlesResource Bundlehtmlresources.propertiesjsresources.propertiesSharedDBStringResources.propertiesSharedStringResources.propertiesUserText.propertiesDescriptionResource bundle that contains static strings from all HTMLpages in the UTF-8 format.Resource bundle that contains strings from JavaScript filesand the JavaScript section of the HTML files.Resource bundle that contains user interface strings fromselected tables of the database.Resource bundle that contains:• Display text of all menu items• All retailer or supplier terminologies• Descriptions and variable names defined in businessprocess rules, rulebase, and workflows which aredisplayed on UI.• Any generic text displayed on UI.• User-specified text which needs translation and isdisplayed on UI.Resource bundle that contains dynamically createdinformational, error, or warning messages displayed on theuser interface.Resource bundles specific to the software edition are bundled within theECMClasses.jar of the deployable application ECM.ear:<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


242 Chapter 11 Localizing Text Strings|• For GDSN — ECM.ear/ECMClasses.jar/com/tibco/mdm/properties/gdsn• For <strong>MDM</strong> — ECM.ear/ECMClasses.jar/com/tibco/mdm/properties/mdmThe appropriate resource bundles are retrieved based on the software editionspecified for the Application Usage Profile property in Configurator.htmlresources.propertiesThis resource bundle contains static strings from all HTML template pages in theUTF-8 format.The format of an entry in this resource bundle is:Default packagename from HtmlTranslator.properties.HTML filename.Unique ID forstring=StringFor example,com.tibco.mdm.ui.infrastructure.ObjectCopy.ObjectCopy_4=Enter CopyDetailsWhere:• com.tibco.mdm.ui.infrastructure.ObjectCopyRefers to the default package name from the HtmlTranslator.propertiesfile.• ObjectCopyRefers to the name of the HTML file.• ObjectCopy_4Refers to the unique ID for the string.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Resource Bundles| 243• Enter Copy DetailsRefers to the string.Enabling HTML Translator TraceTo enable a detailed trace generated by HTML translator and reduce the loggingof missing translations, the HTML Translator Trace Debug Mode property isdefined in Configurator (Go to Node ID > System Debugging).Use this property for debugging translation issues. By default, the false value isdefined. If <strong>TIBCO</strong> support personnel requests you to enable the property, changethe value to true.jsresources.propertiesThis resource bundle contains strings from JavaScript files. The format of an entryin this resource bundle is:Name of the JS or HTML file.Unique ID for string=StringFor example, reldefui.msg2 = Relationship name is blank.\\nWhere:• reldefuiRefers to the name of the Java Script file.• msg2Refers to the unique ID for the string, and• Relationship name is blank.Refers to the string.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


244 Chapter 11 Localizing Text Strings|SharedDBStringResources.propertiesThis resource bundle contains strings from the database tables. For this release,only the following specific column values of database tables which are renderedon the UI have been externalized. The columns mentioned in the following tableare accessible through the resource bundle only. If there are SQL queries and Javafiles that access these columns, they have been modified. These columns nolonger comes from the result set:Table 19 Externalized ColumnsTableRECORDAPPROVALRULEMETAMODELDOMAINENTRYDOMAINLINKRESOURCEACCESSSUPPLIERSTATEColumn of TableStatusName, DescriptionDescriptionDescriptionDescriptionNameThe format of an entry in this resource bundle is:TableName in upper case_PrimaryKey1 in upper case_PrimaryKey2 in upper case_ . . ._PrimaryKeyN in upper case = StringSpecial characters (: - ? .) in the primary key column name of the database tableare replaced with the underscore character (_) and then converted to upper case.Special characters ( and /) are replaced by __.For example, Show Record Attribute Help? is converted toSHOW__RECORD__ATTRIBUTE__HELP_.For example,DOMAINENTRY_CURRENCY_DEM=Deutsche MarkWhere:• DOMAINENTRYRefers to the database table.• CURRENCY and DEMRefers to the primary keys.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Resource Bundles| 245• Deutsche MarkRefers to the string.SharedStringResources.propertiesThis file contains static informational, error, or warning messages displayed onthe user interface. It also contains text, such as title of the page, soft link name,common drop-down items, product status, and any other text displayed on theUI.The format of an entry in this file is:Unique ID=StringFor example,UI_USER_SELECT_TIME_FORMAT=Select Time FormatWhere:• UI_USER_SELECT_TIME_FORMATRefers to the unique ID.• Select Time FormatRefers to the string.UserText.propertiesThis file contains dynamically created informational, error, or warning messagesdisplayed on the UI.The format of an entry in this file is:Unique ID=String with Parameter name= substitute_parameter_nameThe unique ID should be prepended with the following prefix depending on thetype of an error:Table 20 Prefix for Various ErrorsPrefixCAT-SEC-RUL-Type of ErrorCatalog errorSecurity errorRulebase Error<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


246 Chapter 11 Localizing Text Strings|Table 20 Prefix for Various ErrorsPrefixGEN-SQL-WFL-ADM-JAV-SVC-COM-CFG-DQ-RB-COM-Type of ErrorGeneral errorDatabase errorWorkflow errorAdministration errorJava ErrorService Framework errorCommunication errorConfiguration errorData Quality errorRulebase errorCommunication errorFor example,CAT-1001=Synchronization failed. Additional information:.Where:• CAT-1001Refers to the unique ID for a catalog error.• Synchronization failed. Additional information: Refers to the string.• Refers to the actual parameter name.Information messages that involve runtime append or prepend of values exist inthe UserText.properties file, and parameters are placed in the messages toretrieve the contextual information at runtime.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


<strong>TIBCO</strong> General Interface (GI) Screens| 247<strong>TIBCO</strong> General Interface (GI) ScreensGI based screens (input map and output map) have also been enabled forlocalization. Information on various styles is externalized to thestyleforwidgets6_dynamic.xml file and the text strings are externalized to thesharedStringResources.xml file using the GI builder utility.The input map and output map being GI screens identify a different type ofresource bundle than those identified by HTMLs and Java servlets. For example,the resource bundles present under com/tibco/mdm/properties/mdm cannot beused by GI screens because these resource bundles are in the properties resourcebundle format. GI identifies a specific XML format for resource bundles and it isbundled within EML.war of the deployable ECM.ear application. For example,JSXAPPS\sharedStringResources.xml.If you want to have a Japanese resource bundle, place a resource bundleconsisting of Japanese strings (for example, sharedStringResources.ja.xml)under the same location. The resource bundle is picked up based on the locale set.If you have set "Japanese" as the preferred language in the profile, the Japaneseresource bundle is initialized if the sharedStringResource.ja.xml file ispresent.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


248 Chapter 11 Localizing Text Strings|Extracting the LocaleLocale stored in databaseThe locale selected by the user when creating the user account is stored in thedatabase table Member (Locale, Language). If the user does not choose a localewhile creating or modifying the account, the fields in the database are kept blankand default JVM locale or the language selected at the login page is assigned forsuch users.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Resource Bundles| 249Customizing Resource BundlesCustomizing resource bundles signifies overriding the resource values of thedefault resource bundles. You can customize the resource bundles using thefollowing two ways:• Customize resource values for the entire application.• Customize resource values which apply only for an enterprise within theapplication. The order of retrieving resource values from the resource bundlesalways starts from the enterprise-specific resource bundles, custom specificresource bundles, and then default resource bundles.Default resource bundlesBy default, <strong>TIBCO</strong> <strong>MDM</strong> provides the following resource bundles:• htmlresources.properties• jsresources.properties• SharedStringResources.properties• SharedDBStringResources.properties• UserText.propertiesAll default resource bundles are bundled within ECM.ear > ECMClasses.jar file.Customizing Resource Bundles on JBoss Application ServerYou need to perform the specific steps to customize the resource bundles on theJBoss Application Server 7.1 version:Step 1 - Extract Resource BundlesTo extract resource bundles:1. Go to $MQ_HOME and locate the ECM.ear.2. Right-click and extract ECM.ear.3. Go to the ..\lib folder and locate the ECMClasses.jar.4. Right-click and extract ECMClasses.jar. The following directory is displayed:com\tibco\mdm\properties\mdm<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


250 Chapter 11 Localizing Text Strings|5. Copy com\tibco\mdm\properties\mdm directory to$JBOSS_HOME\modules\com\tibco\mdm\main directory.For the Simple installation, copy com\tibco\mdm\properties\mdm directory to$MQ_HOME\bin\$JBOSS_HOME\modules\com\tibco\mdm\main directory.Step 2 - Customize Text in Resource BundlesTo customize the text included in the resource bundles:1. Go to$JBOSS_HOME\modules\com\tibco\mdm\main\com\tibco\mdm\properties\mdm directory.2. Rename the SharedStringResources.properties file toCustomSharedStringResources.properties file.You can delete the unwanted folders and files located in$JBOSS_HOME\modules\com\tibco\mdm\main\com\tibco\mdm folder.3. Open the CustomSharedStringResources.properties file and keep theproperties of which text you want to customize. For example,inbox=Inboxadminmenu=Administrationsysopmenu=System Operations4. Modify the value of the selected properties. For example,inbox=Outlookadminmenu=Governancesysopmenu=Organization Tasks5. Save the CustomSharedStringResources.properties file.Step 3 - Specify Root Folder Path in module.xml FileYou need to specify the root folder path in the module.xml file to make the$JBOSS_HOME\modules\com\tibco\mdm\main\com folder path accessible.To specify the root folder path in the module.xml file:1. Go to $JBOSS_HOME\modules\com\tibco\mdm\main folder and open themodule.xml file.For Simple installation, go to$MQ_HOME\bin\JBOSS_HOME\modules\com\tibco\mdm\main folder.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Resource Bundles| 2512. Specify the tag.3. Save the module.xml file.Step 4 - Restart <strong>TIBCO</strong> <strong>MDM</strong> ServerAfter you update the CustomSharedStringResources.properties andmodule.xml files, you must restart <strong>TIBCO</strong> <strong>MDM</strong> server.Step 5 - Verify Customized TextLog onto <strong>TIBCO</strong> <strong>MDM</strong> and verify the customized new values on the the menuitems.Customizing Resource Bundles on WebSphere and WebLogic ApplicationServersTo customize text included in the resource bundles:1. Extract the resource bundles fromECM.ear/ECMClasses.jar/com/tibco/mdm/properties to a directory$MQ_HOME/custom/resources/com/tibco/mdm/properties.The following resource bundles are extracted depending on the softwareedition:— gdsn/htmlresources.properties— gdsn/jsresources.properties— gdsn/SharedDBStringResources.properties— gdsn/SharedStringResources.properties— gdsn/UserText.properties— mdm/htmlresources.properties— mdm/jsresources.properties— mdm/SharedDBStringResources.properties— mdm/SharedStringResources.properties— mdm/UserText.propertiesIgnore the resource bundles suffixed with _NoTrans.properties. These filescontain text that must not be translated.2. To customize the specific text of a specific resource bundle:a. Remove all the other resource bundles.b. Rename the resource bundle with a prefix 'Custom'.c. Edit custom resource bundle file. Retain only the keys for whichvalue/text need to be customized. Remove all other keys.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


252 Chapter 11 Localizing Text Strings|3. Add $MQ_HOME/custom/resources to the CLASSPATH of application serverstartup script.4. Restart the application server.Example 1: Customize Company Logo on Login screenTo customize company logo on the Login screen:1. Create an image of size 1920 x 427 pixels, that is, Width is equal to 1920 andHeight is equal to 427.2. Save the image file name as back_login and save as type JPEG image (*.jpg)to the local directory.3. Go to $MQ_HOME and double-click the ECM.ear file. The various JAR files andsub-folders are displayed.4. Double-click the EML.war file, and then open the images folder.5. Copy the new back_login.jpg from the local directory and replace it withthe existing back_login.jpg image.6. Restart the application server.The customized company logo is displayed on the Login screen.Example 2: Customize Company Logo for Entire ApplicationTo customize company logo for entire application:1. Create an image of size 1022 x 38 pixels, that is, Width is equal to 1022 andHeight is equal to 38.2. Save the image file name as custom_header_logo and save as type JPEGimage (*.jpg) to the local directory.3. Go to $MQ_COMMON_DIR and create the following directory structure:htmlprops > css > images4. Copy the custom_header_logo.jpg image file from the local directory andplace it in the htmlprops > css > images folder.5. Create the custom.css file and copy the following css rule:#logoFrame {background: url("/eml/Download?type=img&downloaddoc=$MQ_COMMON_DIR/htmlprops/images/custom_header_logo.jpg")no-repeat scroll 0 0 #5682BF;color: #CCEEFF;}<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Customizing Resource Bundles| 253The $MQ_COMMON_DIR/htmlprops/images/custom_header_logo.jpg refers tothe absolute path of an image file. In clustered environment, ensure that theshared file system path is mapped to the same volume.6. Save the custom.css file.7. Restart the application server.The customized company logo is displayed on the application.Example 3: Customize Company Logo for an EnterpriseTo customize company logo for an enterprise, perform the steps listed in Example2: Customize Company Logo for Entire Application, page 252 except for placingthe image file path.For an enterprise, place the customized logo in$MQ_COMMON_DIR/enterprisename/htmlprops folder and restart the applicationserver. The customized company logo is displayed for an enterprise.Example 4: Customize Text Strings of a Set of Properties for Entire Application1. Extract the software edition specific resource bundle (say <strong>MDM</strong>)SharedStringResources.properties fromECM.ear/ECMClasses.jar/com/tibco/mdm/properties/mdm to a directory$MQ_HOME/custom/resources/com/tibco/mdm/properties/mdm.2. Rename extracted resource file, that is,$MQ_HOME/custom/resourcescom/tibco/mdm/properties/mdm/SharedStringResources.properties to$MQ_HOME/custom/resources/com/tibco/mdm/properties/mdm/CustomSharedStringResources.properties.3. Edit and remove all properties from the file$MQ_HOME/custom/resources/com/tibco/mdm/properties/mdm/CustomSharedStringResources.properties and keep only the following properties:inbox=Inboxadminmenu=Administrationsysopmenu=System Operations4. Modify each properties as follow:inbox=Outlookadminmenu=Governance<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


254 Chapter 11 Localizing Text Strings|sysopmenu=Organization Tasks5. Add $MQ_HOME/custom/resources to the CLASSPATH of the applicationserver startup script.6. Restart the application server.7. Verify the menu items to see the new values are customized.Example 5: Customize Text strings of a Set of Properties for an EnterpriseTo customize text strings of a set of properties for an enterprise, perform the stepsfrom Step 1 to Step 5 listed in Example 4: Customize Text Strings of a Set ofProperties for Entire Application, page 253.After Step 5, rename the CustomSharedStringResources.properties file toCustomSharedStringResources_EnterpriseName.properties. The file islocated at $MQ_HOME/custom/resources/com/tibco/mdm/properties/mdm.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Creating Locale-specific Resource Bundles| 255Creating Locale-specific Resource Bundles1. Make a copy of the resource bundle with the English strings. Suffix the copiedresource bundle with the language code and country code (optional). Forexample, if you plan to create Japanese locale resource bundle, copy filehtmlresources.properties file to htmlresources_ja.properties.2. Translate the strings in the resource bundles manually into the requireduser-specific locale.3. Save the property file in the UTF-8 format. Convert it into the ASCII formatusing the Ant build script (native2ascii).4. Rebuild the ECM.ear file.On run-time, the locale-specific property file is read and the text in the HTMLelements of the original template is replaced with the translated strings.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


256 Chapter 11 Localizing Text Strings|Externalizing ButtonsYou can display the text on a button in a different language, if required. The textdisplayed on a button is picked up from the jsresources.properties resourcebundle and can be displayed in multiple languages.To display the text on a button in a different language:1. Add an input tag and Java Script as described in Input Tag and Java ScriptTag.2. Add a DIV tag as described in DIV Tag.3. Create an entry in the jsresources.properties resource bundle asdescribed in jsresources.properties File.Input Tag and Java Script TagTo display a button on the user interface, use the tag with the TYPE as‘button’ or ‘submit’ in the HTML template. This input tag can be used underenclosing Anchor Tag (optional). The method call buttonClicked(this) isused as the first method on the event onClick() for giving the look and feel ofclicking a button. Here, function overlibWrapper('Clear') shows theexternalized tooltip. ‘Clear’ is passed as the key for the tooltip whoseexternalized value is present in jsresources.properties file.• TYPE=button: This will show a button without any submit action. If you wantto submit the page using ‘button’ type input tag, set the submit action on the‘onClick’ event of or tag.


Externalizing Buttons| 257The following JavaScript section checks whether the ID is present or deleted in theHTML template. If it is present, the externalized text from thejsresources.properties file is set. The functiongetLocalizedString("Clear") is used to show the externalized button value.‘Clear’ is the key for the button text which is present injsresources.properties file. if(document.getElementById("btnClearImage") != null)document.getElementById("btnClearImage").value =getLocalizedString("Clear")Sample (Type=button)


258 Chapter 11 Localizing Text Strings|DIV TagCheck whether DIV ID="overDiv" tag is present in the HTML Template file. If itis not present, add the tag in all the HTML files. This DIV tag is used by theoverlib.js file.&nbsp;jsresources.properties FileCreate an entry for the value corresponding to the button key in resource bundle.For example, Back=Back.Create another entry of the key suffixed with '_help_info' to show the tool tip onmouse over. For example, Back_help_info=Back. This value may be differentfrom the button text.# Externalized Buttons TextBack=BackBack_help_info=BackCancel=CancelCancel_help_info=Cancel<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Translating Dynamically Generated Text Created by Rulebase| 259Translating Dynamically Generated Text Created by RulebaseText constructed within a rulebase can be localized and extracted into theUserText.properties resource bundle.The text within is dynamically constructed by the rulebaseengine and saved within the WORKITEMDETAIL database table during workitem creation process. This text does not get translated when you switch to adifferent locale.To translate dynamically-generated text created by a rulebase engine, use thefollowing rulebase function which takes message text, parameter list, and theresource ID.Text Messageparameter nameparameter value to be fetch from a variableFrom this rulebase function, the resource ID is assigned to the message and it isthen extracted into the UserText.properties resource bundle. The text valuespecified is the default text to be used when no resource ID entry is found in theresource bundle.The above snippet will then be replaced with the new rulebase function as follow.WORKITEM_DESCRIPTION)]]>RECORD_COUNTWORKITEM/RECORD_COUNTAfter changing the rulebase files, the resource strings with resource IDs RB-1001must be added into the UserText.properties resource bundle.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


260 Chapter 11 Localizing Text Strings|Translating Role Names and DescriptionsYou can translate a role name and description as follows:1. Form the following two keys:— ROLENAME_— ROLEDESC_For example:— ROLENAME_ADMIN=Administrator— ROLEDESC_ADMIN=Manages users, roles, permissionsIf any key contains blank or space (Work Supervisor), replace it with "__" (twounderscores).If the key contains any of : (colon), / (slash), ? (question mark), . (full stop), -(dash), replace such characters with a "_" (single underscore).The keys must be in upper case.2. Add the keys and translation in the sharedStringResources.prop resourcebundle.The translated role name and description is displayed on the appropriate screens.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Translating Relationship Names| 261Translating Relationship NamesYou can specify a display name for a relationship so that it is meaningful in arelationship tree. To do this, define the relationship name insharedStringResources.properties as follows:REL_NAME____=For example:REL_NAME__44359__CONTAINEDBY= Address and Customer RelationshipREL_NAME__44359__CONTAINS= Customer and Address RelationshipAdd all customizations to a custom resource bundle and then merge the bundles.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


262 Chapter 11 Localizing Text Strings|Externalizing Text Displayed by WorkflowsThe workflow descriptions and activity descriptions can be externalized.Workflow descriptions are defined in workflow definition files (XML). Theworkflow description is shown in the Event Log > Event Log Details >Description > against the steps which show the process ID.The translation scheme is as follows:• Translation keys: Translation keys are defined as follows.— For workflow description: _DESC— For workflow activity descriptions: _.• If any key contains blank ("Work Supervisor"), replace it with "__" (twounderscores).• If the key contains any of : (colon), / (slash), ? (question mark), . (full stop), -(dash), replace such characters with "_" (single underscore).• This key must have all upper case.Add the translation to the SharedStringResources.properties file. If notranslation is found, the text provided in XML file is displayed.ExampleWorkflow is:<strong>TIBCO</strong>wfin26dataservicev2Process for extraction/Import of metadataActivity is:UpdateEventSet the event status toSuccess/DoneSUCCESSDONE<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Externalizing Text Displayed by Workflows| 263The key will be WFIN26DATASERVICEV2_DESC andWFIN26DATASERVICEV2_SETSTATUSTOSUCCESS.Add the translation to the SharedStringResources.properties file as follows:WFIN26DATASERVICEV2_SETSTATUSTOSUCCESS=Set the event status toSuccess/DoneWFIN26DATASERVICEV2_DESC=Process for extraction/Import of metadataIf no translation is found, the text provided in XML file is displayed.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


264 Chapter 11 Localizing Text Strings|Translating Meta DataRepository Attribute Display NamesWhen repository meta data is defined, an attribute display name can be specified.This display name is shown in UI whenever attribute is displayed. You can nowtranslate the display name of an attribute as follows:1. Create a key based on attribute name (not based on display name) as follows:RAD__ __.RAD stands for "repository attribute display name".If any key contains blank (Work Supervisor), replace it with "__" (twounderscores).If the key contains any of : (colon), / (slash), ? (question mark), . (full stop), -(dash), replace such characters with "_" (single underscore).The keys must be in upper case.2. Add the translation for the key in the SharedStringResources.propertiesfile as follows:RAD__34961__EFFDATE=Effective dateThe display name is then picked up from the resource bundle, wheneverapplicable.This only applies to UI. Web services, rulebase, and workflow continue to useattribute names as currently practiced. If no translation is provided, display nameentered while defining the attribute is used.Repository NamesWhen repository meta data is defined, the repository name is provided. Thisname can also be translated and displayed in the language preferred by the user.To do this:1. Create a key based on the repository name.REPO_NAME__""2. Add the translation for the key in the SharedStringResources.propertiesfile as follows:REPO_NAME__CUSTOMER=Customers<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Translating Meta Data| 265The translated name is then picked up from the resource bundle, wheneverapplicable.• This only applies to UI. Web services, rulebase, and workflow continue to userepository name as currently practiced. If no translation is provided,repository name as provided in meta data is shown.• The meta data UI to view repository meta data uses translated names whereasto modify repository meta data uses original names.• This feature works on all screens except for Business process rules and WorkItem forms.Repository DescriptionsWhen repository meta data is defined, a repository description is provided. Thiscontent can also be translated and displayed in the language preferred by theuser.To do this:1. Create a key based on repository name.REPO_DESC__""2. Add the translation for the key in the SharedStringResources.propertiesfile as follows:REPO_DESC__CUSTOMER=CustomersThe translated description is then picked up from resource bundle, wheneverapplicable.• This only applies to UI. Web services, rulebase, and workflow continue to userepository name as currently practiced. If no translation is provided,repository description as provided in meta data is shown.• The meta data UI to view repository meta data uses translated descriptionswhereas to modify repository descriptions meta data uses originaldescriptions.Attribute Group NamesWhen repository meta data is defined, an attribute group name is provided. Thiscontent can also be translated and displayed in the language preferred by theuser.To do this:1. Create a key based on an attribute group name.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


266 Chapter 11 Localizing Text Strings|RAG_NAME__""2. Add the translation for the key in the SharedStringResources.propertiesfile as follows:RAG_NAME__FINANCE=FinanceThe meta data UI to view or edit repository meta data does not use translateddescriptions.Attribute Group DescriptionFor each attribute group, a description is provided. This content can also betranslated and displayed in the language preferred by the user.To do this:1. Create a key based on an attribute group name.RAG_NAME__""_DESC2. For predefined attribute groups, create the following key:""_DESCThe predefined groups include UNASSIGNED, SYSTEM, RELATIONSHIPS,LINKAGES, RELATIONSHIP_GROUP, CLASSIFICATIONS, andRELATIONSHIP_ATTRIBUTES.3. Add the translation for the key in the SharedStringResources.propertiesfile as follows:RAG_NAME__FINANCE_FINANCEDOMAIN=FinanceDomainThe translated description is then picked up from resource bundle, wheneverapplicable.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Loading Resource Bundles for Plug-ins| 267Loading Resource Bundles for Plug-ins<strong>TIBCO</strong> <strong>MDM</strong> plug-ins such as GDSN Plug-in provide incremental resourcebundles such as SharedStringResources.properties,SharedDBStringResources.properties, htmlresources.properties,UserText.properties, and jsresource.properties. These resource bundlesare packaged within the plug-ins library under the standard package name, thatis, com.tibco.mdm.properties..The com.tibco.mdm.plugins property in the ConfigValues.xml file determinesthe order in which the resource bundle needs to be loaded so that a correctresource value is fetched from the right resource bundle of a plug-in.When any plug-in is installed, a post-configuration step prepends thecom.tibco.mdm.plugins property value with the plug-in name.For example, after installing the GDSN Plug-in, the post-configuration stepprepends "GDSN" to the com.tibco.mdm.plugins property value. A sampleConfigValues.xml looks as follows:After installing the plug-ins, the entry for com.tibco.mdm.plugins property inthe ConfigValues.xml looks as follows:In this case, the order of loading resource bundle is:1. PluginA resource bundle:com.tibco.mdm.properties.pluginA2. GDSN Plug-in resource bundle:com.tibco.mdm.properties.gdsn<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


268 Chapter 11 Localizing Text Strings|3. Base product resource bundle:com.tibco.mdm.properties.mdm<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 269Chapter 12Setting up Data ExtractionThis chapter describes the procedure for setting up the data extraction from<strong>TIBCO</strong> <strong>MDM</strong>.Topics• Overview, page 270• IDataProvider, page 272• IDataProcessor, page 273• AbstractDbDataProvider, page 274• IBatchIterator, page 275• IBatchIterator, page 275• IRowMapper, page 276<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


270 Chapter 12 Setting up Data Extraction|OverviewThe Data Extractor is a framework for extracting and processing data from <strong>TIBCO</strong><strong>MDM</strong> by providing custom implementation. Data can be extracted from any<strong>TIBCO</strong> <strong>MDM</strong> data source such as database, matching engines, for exampleNetrics or file system.This Data Extractor framework provides interfaces where you can plug-in customimplementation for extracting and processing data. This framework needs customimplementation of these interfaces for execution.The Extract Data web service is provided for triggering Data Extractor. Fordetails, refer to <strong>TIBCO</strong> <strong>MDM</strong> Web Services <strong>Guide</strong>. You can execute the extractoreither by synchronously or asynchronously. Event is spawned and can be used fortracking the progress.Data Extractor Interfaces and Concrete ImplementationsThe interface and implementation details are:• Data provider interface (IDataProvider) has to be implemented for extractingdata. For details, refer IDataProvider, page 272.• Data processor interface (IDataProcessor) has to be implemented forprocessing data. For details, refer IDataProcessor, page 273.• Batch Iterator (IBatchIterator) and Row Mapper (IRowMapper) are optionalinterfaces, which can be used for further customizing the framework.Concrete implementation of these interfaces are already provided so you canuse these implementation out-of-the-box in the IDataProvider.• Concrete implementation for IDataProvider ; AbstractDBDataProvider isprovided for extracting data from database. Custom implementation canextend this for extracting data from <strong>TIBCO</strong> <strong>MDM</strong> database.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


Overview| 271Setting up Data Extractor• Create implementation for IDataProvider.• Create implementation for IDataProcessor.• Package these implementations in JAR file and merge it with <strong>TIBCO</strong> <strong>MDM</strong>EAR.• Add ECMClasses.jar to the classpath. IDataProvider and IDataProcess can befound in com.tibco.mdm.repository.engine.dataextractor package.• Create implementation for IDataProvider. For data extraction from databaseextend AbstractDataDBProcessor.• Create implementation for IDataProcessor.• Package these implementations in JAR file and merge it with <strong>TIBCO</strong> <strong>MDM</strong>EAR.• Send or Use Webservice Data Extractor web request.Context VariablesIDataProvider (init,cleanup) and IDataProcessor (start,process,end)are provided with following runtime context variables:• CONTEXT_EXEC_MODE: Execution Mode Sync or async.• CONTEXT_BATCH_SIZE: Batch size for async messages.• CONTEXT_EVENTID: Event ID.• CONTEXT_PROCESSID: Process ID.• CONTEXT_BATCH_NUMBER: Batch number of the async message.• CONTEXT_UNIQUEID: Unique ID identifies the async message.• CONTEXT_MEMBERID: Member ID of the member who has initiated the process.• CONTEXT_ERRORMSG: Any execution errors in current context.• CONTEXT_ISWORKFLOWPROCESS: Yes, if the process is triggered from workflow.• CONTEXT_ACTIVITYNAME: Activity name, if triggered from workflow.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


272 Chapter 12 Setting up Data Extraction|IDataProviderIDataProvider interface should be implemented for data extraction. Concreteimplementation can provide implementation for extracting data from any datasource like RDBMS, data matching engines like Netrics or files. Data Extractorframework will execute IDataProvider concrete implementation for dataextraction. IDataProvider provides the following methods:• init – Invoked only once and should be used for one time initialization such asopening files and so on. Init receives the parameters from web service requestand context.• execute – Should contain the logic to fetch data from the underlying datasources. It should return a Batch Iterator.• getTotalCount – Should return total count of the records to be extracted in theprocess.• getParams – Returns the parameters specified in init.• cleanUp – Invoked only once and should be used clean in the end such asclosing connection and so on.For details on IDataProvider interface, click the Help icon in the <strong>TIBCO</strong> <strong>MDM</strong>application. In the Contents section, click API Reference > Java API ReferencePages. Click the Java API Reference link in the left pane. The detailed descriptionof each class and method in the<strong>TIBCO</strong> <strong>MDM</strong> Java API references are provided.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


IDataProcessor| 273IDataProcessorIDataProcessor should be implemented for processing extracted data such aswriting to files, cleaning, sending e-mails, and so on. Data Extractor usesIDataProcessor concrete implementation for processing data. In async mode,framework sends async messages and each message contains IDataProcessor.IDataProcessor provides following APIs.• start – Invoked only once and should be used for one time processing such asopening connections, file and so on. Start receives parameters from webservice request and context.• process – Should contain logic for processing data. In async processing,process is invoked each time async Message is de serialized. Process receivesparameters from web service request and context.• end – Invoked only once at the end of processing. Should be used for one timeprocessing in the end such as closing a file.For details on IDataProcessor interface, click the Help icon in the <strong>TIBCO</strong> <strong>MDM</strong>application. In the Contents section, click API Reference > Java API ReferencePages. Click the Java API Reference link in the left pane. The detailed descriptionof each class and method in the<strong>TIBCO</strong> <strong>MDM</strong> Java API references are provided.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


274 Chapter 12 Setting up Data Extraction|AbstractDbDataProviderAbstractDbDataProvider is an abstract concrete implementation of IDataProviderfor extracting data from <strong>TIBCO</strong> <strong>MDM</strong> database. Concrete implementation canextend this class for database related data extraction. AbstractDataDBProviderprovides implementation for IDataProvider method and also introduces twoabstract methods which should be extended by concrete implementations,• getQuery – Should return a SQL query.• setParameters – Sets SQL Query parameter and return a MqDebbugablestatement.The concrete implementation can override getRowMapper if customIRowMapper implementation is used.For details on AbstractDbDataProvider interface, click the Help icon in the <strong>TIBCO</strong><strong>MDM</strong> application. In the Contents section, click API Reference > Java APIReference Pages. Click the Java API Reference link in the left pane. The detaileddescription of each class and method in the<strong>TIBCO</strong> <strong>MDM</strong> Java API references areprovided.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


IBatchIterator| 275IBatchIteratorThis is an optional interface. Similar to a java iterator interface but iterates over acollection in batches. Batch size can be passed externally from web servicerequest.CollectionBatchIterator and ResultSetBatchIterator are two concreteimplementations of IBatchIterator for iterating over collection and result set.For details on IBatchIterator interface, click the Help icon in the <strong>TIBCO</strong> <strong>MDM</strong>application. In the Contents section, click API Reference > Java API ReferencePages. Click the Java API Reference link in the left pane. The detailed descriptionof each class and method in the<strong>TIBCO</strong> <strong>MDM</strong> Java API references are provided.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


276 Chapter 12 Setting up Data Extraction|IRowMapperIRowMapper is used by AbstractDBDataProvider for mapping single row leveldata from SQL result set to any Java object such as Map or List or custom valueobjects.Default row mapper implementation is provided, which maps row level data to aMap.For details on IRowMapper interface, click the Help icon in the <strong>TIBCO</strong> <strong>MDM</strong>application. In the Contents section, click API Reference > Java API ReferencePages. Click the Java API Reference link in the left pane. The detailed descriptionof each class and method in the<strong>TIBCO</strong> <strong>MDM</strong> Java API references are provided.<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


| 277IndexAAbstractDataDBProvider 274Application - Customizing 17BBusiness Process - Creating new templates 118Business Process Domains - Adding New 111Customizing product attributes 180Customizing Record Attribute Search 106Customizing record security 91Customizing Record View 67Customizing Repository 89Customizing roles 6Customizing Roles, Menus and Access 1Customizing user defined attributes 185Customizing Workitems 67Customizing Workitems Descriptions 102CConfiguring generic screen 179Configuring GPC Classification Scheme Loading 188Configuring Support for GPC Code 190CronSchedules.xml 230Cross-Repository Matching 203customer support xviii, xviiiCustomizecompany logo for enterprise 253company logo for entire application 252, 252text strings for an enterprise 254text strings for entire application 253Customizing actions 181Customizing Attributes and Groups 90Customizing Business Processes 109Customizing Colors and Logos 42Customizing Data Synchronization 161Customizing generic screen 177Customizing Inbox 101Customizing marketplace / trading partnercredentials 184Customizing menus 3Customizing other UI elements 85Customizing password policy rulebase 14Ddata extractorcontext variables 271implementation 270interface 270EExportRecords 134FFilewatcher Actions 134Filewatcher Operation Notes 148Filewatcher Overview 122Filewatcher Parameters 123<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>


278| IndexGGenerateReportForSDD 236Generic screen overview 178Hhtmlresources.properties 242IIBatchIterator 275IDataProcessor 273IDataProvider 272IRowMapper 276RRedirecting from a custom page 35Redirecting links to custom page 27Resource bundles 241creating locale-specific bundles 255customizing 249SScheduler Duplicate Detection 229SearchMode 233Complete 233Incremental 233Setting up role based security 2SharedDBStringResources.properties 244SharedStringResources.properties 245Skip Merge 209support, contacting xviii, xviiiJjsresources.properties 243Ttechnical support xviii, xviiiLLocaleextracting 248LocalizeGI screens 247text strings 239UUserText.properties 245MMergeRecord Activity Modes 217Bulk Mode 217InDocument Mode 217Legacy Mode 218Mutation of Records 217<strong>TIBCO</strong> <strong>MDM</strong> <strong>Customization</strong> <strong>Guide</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!