MDM 960 Sif
MDM 960 Sif
0)
Version 9.6.0
June 2013
This software and documentation contain proprietary information of Informatica Corporation and are provided under a license agreement containing restrictions on use and
disclosure and are also protected by copyright law. Reverse engineering of the software is prohibited. No part of this document may be reproduced or transmitted in any form, by any
means (electronic, photocopying, recording or otherwise) without prior consent of Informatica Corporation. This Software may be protected by U.S. and/or international Patents and
other Patents Pending.
Use, duplication, or disclosure of the Software by the U.S. Government is subject to the restrictions set forth in the applicable software license agreement and as provided in DFARS
227.7202-1(a) and 227.7702-3(a) (1995), DFARS 252.227-7013©(1)(ii) (OCT 1988), FAR 12.212(a) (1995), FAR 52.227-19, or FAR 52.227-14 (ALT III), as applicable.
The information in this product or documentation is subject to change without notice. If you find any problems in this product or documentation, please report them to us in
writing.
Informatica, Informatica Platform, Informatica Data Services, PowerCenter, PowerCenterRT, PowerCenter Connect, PowerCenter Data Analyzer, PowerExchange, PowerMart,
Metadata Manager, Informatica Data Quality, Informatica Data Explorer, Informatica B2B Data Transformation, Informatica B2B Data Exchange Informatica On Demand,
Informatica Identity Resolution, Informatica Application Information Lifecycle Management, Informatica Complex Event Processing, Ultra Messaging and Informatica Master Data
Management are trademarks or registered trademarks of Informatica Corporation in the United States and in jurisdictions throughout the world. All other company and product
names may be trade names or trademarks of their respective owners.
Portions of this software and/or documentation are subject to copyright held by third parties, including without limitation: Copyright DataDirect Technologies. All rights reserved.
Copyright © Sun Microsystems. All rights reserved. Copyright © RSA Security Inc. All Rights Reserved. Copyright © Ordinal Technology Corp. All rights reserved.Copyright ©
Aandacht c.v. All rights reserved. Copyright Genivia, Inc. All rights reserved. Copyright Isomorphic Software. All rights reserved. Copyright © Meta Integration Technology, Inc. All
rights reserved. Copyright © Intalio. All rights reserved. Copyright © Oracle. All rights reserved. Copyright © Adobe Systems Incorporated. All rights reserved. Copyright © DataArt,
Inc. All rights reserved. Copyright © ComponentSource. All rights reserved. Copyright © Microsoft Corporation. All rights reserved. Copyright © Rogue Wave Software, Inc. All rights
reserved. Copyright © Teradata Corporation. All rights reserved. Copyright © Yahoo! Inc. All rights reserved. Copyright © Glyph & Cog, LLC. All rights reserved. Copyright ©
Thinkmap, Inc. All rights reserved. Copyright © Clearpace Software Limited. All rights reserved. Copyright © Information Builders, Inc. All rights reserved. Copyright © OSS Nokalva,
Inc. All rights reserved. Copyright Edifecs, Inc. All rights reserved. Copyright Cleo Communications, Inc. All rights reserved. Copyright © International Organization for
Standardization 1986. All rights reserved. Copyright © ej-technologies GmbH. All rights reserved. Copyright © Jaspersoft Corporation. All rights reserved. Copyright © is
International Business Machines Corporation. All rights reserved. Copyright © yWorks GmbH. All rights reserved. Copyright © Lucent Technologies. All rights reserved. Copyright
(c) University of Toronto. All rights reserved. Copyright © Daniel Veillard. All rights reserved. Copyright © Unicode, Inc. Copyright IBM Corp. All rights reserved. Copyright ©
MicroQuill Software Publishing, Inc. All rights reserved. Copyright © PassMark Software Pty Ltd. All rights reserved. Copyright © LogiXML, Inc. All rights reserved. Copyright ©
2003-2010 Lorenzi Davide, All rights reserved. Copyright © Red Hat, Inc. All rights reserved. Copyright © The Board of Trustees of the Leland Stanford Junior University. All rights
reserved. Copyright © EMC Corporation. All rights reserved. Copyright © Flexera Software. All rights reserved. Copyright © Jinfonet Software. All rights reserved. Copyright © Apple
Inc. All rights reserved. Copyright © Telerik Inc. All rights reserved. Copyright © BEA Systems. All rights reserved.
This product includes software developed by the Apache Software Foundation (http://www.apache.org/), and/or other software which is licensed under various versions of the
Apache License (the "License"). You may obtain a copy of these Licenses at http://www.apache.org/licenses/. Unless required by applicable law or agreed to in writing, software
distributed under these Licenses is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licenses for
the specific language governing permissions and limitations under the Licenses.
This product includes software which was developed by Mozilla (http://www.mozilla.org/), software copyright The JBoss Group, LLC, all rights reserved; software copyright ©
1999-2006 by Bruno Lowagie and Paulo Soares and other software which is licensed under various versions of the GNU Lesser General Public License Agreement, which may be
found at http:// www.gnu.org/licenses/lgpl.html. The materials are provided free of charge by Informatica, "as-is", without warranty of any kind, either express or implied, including
but not limited to the implied warranties of merchantability and fitness for a particular purpose.
The product includes ACE(TM) and TAO(TM) software copyrighted by Douglas C. Schmidt and his research group at Washington University, University of California, Irvine, and
Vanderbilt University, Copyright (©) 1993-2006, all rights reserved.
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (copyright The OpenSSL Project. All Rights Reserved) and redistribution of this
software is subject to terms available at http://www.openssl.org and http://www.openssl.org/source/license.html.
This product includes Curl software which is Copyright 1996-2007, Daniel Stenberg, <[email protected]>. All Rights Reserved. Permissions and limitations regarding this software
are subject to terms available at http://curl.haxx.se/docs/copyright.html. Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby
granted, provided that the above copyright notice and this permission notice appear in all copies.
The product includes software copyright 2001-2005 (©) MetaStuff, Ltd. All Rights Reserved. Permissions and limitations regarding this software are subject to terms available at
http://www.dom4j.org/ license.html.
The product includes software copyright © 2004-2007, The Dojo Foundation. All Rights Reserved. Permissions and limitations regarding this software are subject to terms available
at http://dojotoolkit.org/license.
This product includes ICU software which is copyright International Business Machines Corporation and others. All rights reserved. Permissions and limitations regarding this
software are subject to terms available at http://source.icu-project.org/repos/icu/icu/trunk/license.html.
This product includes software copyright © 1996-2006 Per Bothner. All rights reserved. Your right to use such materials is set forth in the license which may be found at http://
www.gnu.org/software/ kawa/Software-License.html.
This product includes OSSP UUID software which is Copyright © 2002 Ralf S. Engelschall, Copyright © 2002 The OSSP Project Copyright © 2002 Cable & Wireless Deutschland.
Permissions and limitations regarding this software are subject to terms available at http://www.opensource.org/licenses/mit-license.php.
This product includes software developed by Boost (http://www.boost.org/) or under the Boost software license. Permissions and limitations regarding this software are subject to
terms available at http:/ /www.boost.org/LICENSE_1_0.txt.
This product includes software copyright © 1997-2007 University of Cambridge. Permissions and limitations regarding this software are subject to terms available at http://
www.pcre.org/license.txt.
This product includes software copyright © 2007 The Eclipse Foundation. All Rights Reserved. Permissions and limitations regarding this software are subject to terms available at
http:// www.eclipse.org/org/documents/epl-v10.php.
This product includes software licensed under the terms at http://www.tcl.tk/software/tcltk/license.html, http://www.bosrup.com/web/overlib/?License, http://www.stlport.org/doc/
license.html, http:// asm.ow2.org/license.html, http://www.cryptix.org/LICENSE.TXT, http://hsqldb.org/web/hsqlLicense.html, http://httpunit.sourceforge.net/doc/ license.html,
http://jung.sourceforge.net/license.txt , http://www.gzip.org/zlib/zlib_license.html, http://www.openldap.org/software/release/license.html, http://www.libssh2.org, http://slf4j.org/
license.html, http://www.sente.ch/software/OpenSourceLicense.html, http://fusesource.com/downloads/license-agreements/fuse-message-broker-v-5-3- license-agreement;
http://antlr.org/license.html; http://aopalliance.sourceforge.net/; http://www.bouncycastle.org/licence.html; http://www.jgraph.com/jgraphdownload.html; http://www.jcraft.com/
jsch/LICENSE.txt; http://jotm.objectweb.org/bsd_license.html; . http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231; http://www.slf4j.org/license.html; http://
nanoxml.sourceforge.net/orig/copyright.html; http://www.json.org/license.html; http://forge.ow2.org/projects/javaservice/, http://www.postgresql.org/about/licence.html, http://
www.sqlite.org/copyright.html, http://www.tcl.tk/software/tcltk/license.html, http://www.jaxen.org/faq.html, http://www.jdom.org/docs/faq.html, http://www.slf4j.org/license.html;
http://www.iodbc.org/dataspace/iodbc/wiki/iODBC/License; http://www.keplerproject.org/md5/license.html; http://www.toedter.com/en/jcalendar/license.html; http://
www.edankert.com/bounce/index.html; http://www.net-snmp.org/about/license.html; http://www.openmdx.org/#FAQ; http://www.php.net/license/3_01.txt; http://srp.stanford.edu/
license.txt; http://www.schneier.com/blowfish.html; http://www.jmock.org/license.html; http://xsom.java.net; and http://benalman.com/about/license/; https://github.com/
CreateJS/EaselJS/blob/master/src/easeljs/display/Bitmap.js; http://www.h2database.com/html/license.html#summary; and http://jsoncpp.sourceforge.net/LICENSE.
This product includes software licensed under the Academic Free License (http://www.opensource.org/licenses/afl-3.0.php), the Common Development and Distribution License
(http://www.opensource.org/licenses/cddl1.php) the Common Public License (http://www.opensource.org/licenses/cpl1.0.php), the Sun Binary Code License Agreement
Supplemental License Terms, the BSD License (http:// www.opensource.org/licenses/bsd-license.php) the MIT License (http://www.opensource.org/licenses/mit-license.php) and
the Artistic License (http://www.opensource.org/licenses/artistic-license-1.0).
This product includes software copyright © 2003-2006 Joe WaInes, 2006-2007 XStream Committers. All rights reserved. Permissions and limitations regarding this software are
subject to terms available at http://xstream.codehaus.org/license.html. This product includes software developed by the Indiana University Extreme! Lab. For further information
please visit http://www.extreme.indiana.edu/.
This Software is protected by U.S. Patent Numbers 5,794,246; 6,014,670; 6,016,501; 6,029,178; 6,032,158; 6,035,307; 6,044,374; 6,092,086; 6,208,990; 6,339,775; 6,640,226;
6,789,096; 6,820,077; 6,823,373; 6,850,947; 6,895,471; 7,117,215; 7,162,643; 7,243,110, 7,254,590; 7,281,001; 7,421,458; 7,496,588; 7,523,121; 7,584,422; 7676516; 7,720,
842; 7,721,270; and 7,774,791, international Patents and other Patents Pending.
DISCLAIMER: Informatica Corporation provides this documentation "as is" without warranty of any kind, either express or implied, including, but not limited to, the implied
warranties of noninfringement, merchantability, or use for a particular purpose. Informatica Corporation does not warrant that this software or documentation is error free. The
information provided in this software or documentation may include technical inaccuracies or typographical errors. The information in this software and documentation is subject to
change at any time without notice.
NOTICES
This Informatica product (the "Software") includes certain drivers (the "DataDirect Drivers") from DataDirect Technologies, an operating company of Progress Software Corporation
("DataDirect") which are subject to the following terms and conditions:
1. THE DATADIRECT DRIVERS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
2. IN NO EVENT WILL DATADIRECT OR ITS THIRD PARTY SUPPLIERS BE LIABLE TO THE END-USER CUSTOMER FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, CONSEQUENTIAL OR OTHER DAMAGES ARISING OUT OF THE USE OF THE ODBC DRIVERS, WHETHER OR NOT INFORMED OF THE
POSSIBILITIES OF DAMAGES IN ADVANCE. THESE LIMITATIONS APPLY TO ALL CAUSES OF ACTION, INCLUDING, WITHOUT LIMITATION, BREACH OF
CONTRACT, BREACH OF WARRANTY, NEGLIGENCE, STRICT LIABILITY, MISREPRESENTATION AND OTHER TORTS.
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica My Support Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica Web Site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Support YouTube Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Marketplace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Velocity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Global Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Chapter 1: Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Overview of Services Integration Framework (SIF). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
About Informatica MDM Hub and External Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
How External Applications Interact with Informatica MDM Hub. . . . . . . . . . . . . . . . . . . . . . . . . . 2
About Real-time Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
About Services Integration Framework (SIF). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Benefits of Using SIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
About SiperianClient Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
About SIF Access Protocols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Using Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Using XML Over HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
About Informatica MDM Hub Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
How SIF Requests Are Processed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Types of SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Using SIF SDK to Interface with SIF Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Table of Contents i
Informatica MDM Hub SIF Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
SIF Development Kit (SIF-SDK). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
About SiperianObjectUID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
About TaskData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
About TaskRecord. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SIF Client Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Exact Matches on Fuzzy Base Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SIF API Debug Log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
The cmxserver.properties Search Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Using SIF API Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SiperianRequest Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Constructing Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Processing Responses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
About Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
About RecordKey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Using ORS-specific APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Generating ORS-specific APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
ORS-specific API Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Populating SIF API Field Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Cleanse[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
CleansePut[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Get[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Put[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
SearchMatchColumn[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
SearchMatchRecord[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
SearchQuery[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Making Asynchronous SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
About JMS Event Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
JMS Message Queues for Asynchronous SIF Invocations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Run-time Processing of Asynchronous SIF Service Invocations. . . . . . . . . . . . . . . . . . . . . . . . 38
Using the Security Access Manager (SAM) with SIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Using Informatica MDM Hub Metadata Management API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
SIF Metadata Management Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Composite Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Enterprise JavaBeans Transaction Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ExecuteBatch API Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ii Table of Contents
Object Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Batch Group API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Data Steward API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Data Retrieval API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Data API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Data Update / Insert API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Hierarchy Manager API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Merge Workflow API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Metadata API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Metadata Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Repository Manager API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
State Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
User Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Task API Required Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Miscellaneous API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
iv Table of Contents
RegisterCustomIndex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
RegisterCustomTableObject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
RegisterUsers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
RemoveMatchedRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
ResetBatchGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
Restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
SearchHmQuery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
SearchLookupValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
SearchMatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
SearchQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
SearchRequestBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
SearchResponseBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126
SetPassword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
SetRecordState. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Tokenize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Unlink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Unmerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
UnregisterUsers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
UpdateRelationship. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
UpdateTask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132
ValidateChangeList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
ValidateMetadata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ValidateTasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Table of Contents v
Preface
Welcome to the Informatica MDM Hub Services Integration Framework Guide. This guide explains how to use the
Services Integration Framework (SIF) to integrate Informatica MDM Hub functionality with your applications and how
to create applications using the data provided by Informatica MDM Hub. SIF allows you to integrate Informatica MDM
Hub smoothly with your organization’s applications.
Informatica Resources
The site contains product information, user group information, newsletters, access to the Informatica customer
support case management system (ATLAS), the Informatica How-To Library, the Informatica Knowledge Base,
Informatica Product Documentation, and access to the Informatica user community.
Informatica Documentation
The Informatica Documentation team takes every effort to create accurate, usable documentation. If you have
questions, comments, or ideas about this documentation, contact the Informatica Documentation team through email
at [email protected]. We will use your feedback to improve our documentation. Let us know if we
can contact you regarding your comments.
The Documentation team updates documentation as needed. To get the latest documentation for your product,
navigate to Product Documentation from http://mysupport.informatica.com.
vi
Informatica Knowledge Base
As an Informatica customer, you can access the Informatica Knowledge Base at http://mysupport.informatica.com.
Use the Knowledge Base to search for documented solutions to known technical issues about Informatica products.
You can also find answers to frequently asked questions, technical white papers, and technical tips. If you have
questions, comments, or ideas about the Knowledge Base, contact the Informatica Knowledge Base team through
email at [email protected].
Informatica Marketplace
The Informatica Marketplace is a forum where developers and partners can share solutions that augment, extend, or
enhance data integration implementations. By leveraging any of the hundreds of solutions available on the
Marketplace, you can improve your productivity and speed up time to implementation on your projects. You can
access Informatica Marketplace at http://www.informaticamarketplace.com.
Informatica Velocity
You can access Informatica Velocity at http://mysupport.informatica.com. Developed from the real-world experience
of hundreds of data management projects, Informatica Velocity represents the collective knowledge of our
consultants who have worked with organizations from around the world to plan, develop, deploy, and maintain
successful data management solutions. If you have questions, comments, or ideas about Informatica Velocity,
contact Informatica Professional Services at [email protected].
Preface vii
Use the following telephone numbers to contact Informatica Global Customer Support:
North America / South America Europe / Middle East / Africa Asia / Australia
viii Preface
CHAPTER 1
Introduction
This chapter includes the following topics:
Informatica MDM Hub is a server that resides at the center of an enterprise software network. It maintains the best
version of the truth for a set of entities (for example, customer records) that may be common to several applications on
the network. So, for example, Informatica MDM Hub helps keep track of whether Jane Ann Smithe on the sales lead
system represents the same customer as John Anders Smith on the SAP system and, if so, how that customer spells
their name.
Informatica MDM Hub uses batch processes and manual intervention when necessary to match new information
against its version of the information. It also interacts with Informatica applications (for example, the tools in the Data
Steward Workbench), other enterprise software packages, or ad hoc applications on an entity-by-entity basis. All of
these applications use a client/server model. Informatica MDM Hub accepts requests and sends responses.
Informatica MDM Hub maintains entity-related information in sets of Operational Record Store (ORS) database
tables, which it manages in its internal database management system. Though an enterprise can have more than one
ORS, typically it has only one, for example, an ORS for its customer data. The enterprise provides a schema that
defines the database tables in the ORS.
1
How External Applications Interact with Informatica MDM Hub
Request/response interactions with Informatica MDM Hub typically read or update the database tables in the ORS
database. Informatica MDM Hub provides a generic set of API requests that are independent of the enterprise’s
schema. These requests require the client to specify the database records for Informatica MDM Hub to access.
Informatica also provides tools that allow you to construct new ORS-specific request that act on logical entities
defined in the schema. For example, a generic request might place given data into a specified database record. An
ORS-specific request might identify the same data as a name and an email address and place those fields into a
customer record, as defined in the schema.
The ORS-specific requests do not exist within Informatica MDM Hub. Instead, they are methods that use the schema
to validate the arguments, and then translate the ORS-specific calls into the requests and responses of generic Hub
operations. They allow client programs to operate at a logical level that provides greater type safety than the generic
operations.
RELATED TOPICS:
¨ “Using ORS-specific APIs” on page 23
In Informatica MDM Hub implementations, real-time processing is used as appropriate. For example, real-time
processing can be used to update data in the Hub Store whenever a record is added, updated, or deleted in a source
2 Chapter 1: Introduction
system. Real-time processing can also be used to handle incremental data loads (data loads that occur after the initial
data load) into the Hub Store.
The following figure shows the overall real-time process flow for processing data in Informatica MDM Hub.
Note: Only admin users can access private resources through SIF requests.
SIF Framework encapsulates an API-based access in the form of a toolkit to build Web Services-based access to your
Informatica MDM Hub data. SIF contains:
RELATED TOPICS:
¨ “About SIF Access Protocols” on page 6
¨ Rapid configuration, deployment, and management of applications integrating Informatica MDM Hub and external
systems.
¨ Addressing integration requirements both at logical (business events and services) as well as granular (data
events and services) levels.
¨ Process relevant events for synchronization and propagation
The SIF APIs can interact with each other directly. For example Data Services can interact with Data Events, Process
Services with Data Services, Data Services with Business Services, Data Events with Process Services, and so on.
Data events can be generated in the external applications or Informatica MDM Hub. These events are handled by
Event driven architecture (EDA) capabilities of the Informatica MDM Hub, which includes Event Capture, Event
Processing, Event Filtering and Event Generation.
The services provided in the Informatica MDM Hub can be used by the EDA components as well as external
applications for Query and Data Synchronization operations. Additionally existing infrastructure such as an Enterprise
Service Bus (ESB) as well as Enterprise Application Integration (EAI) technologies such as Tibco, webMethods (and
4 Chapter 1: Introduction
so on), and Message Oriented Middleware can be used in conjunction with Informatica’s Services Integration
Framework.
The SiperianClient library is provided to create easy and efficient Java applications. There are two parts to the API:
¨ The MRM, HM, and AM, packages provides request and response objects for each of the available operations.
¨ The com.siperian.sif.client package manages the details of communication with the Informatica MDM Hub
Server. SiperianClient can be configured for the desired protocol to communicate with the Informatica MDM Hub
Server: EJB, SOAP, or XML over HTTP.
¨ Business Process Modeling (BPM) and workflow integration using the Java API or SOAP directly.
¨ A Java Swing UI to query, view, and edit data in the Informatica MDM Hub.
¨ Server components in a J2EE application server to get and update data in the Informatica MDM Hub. An EJB can
seamlessly integrate with the transactions of the Informatica MDM Hub.
¨ A JSP or Servlet application to present a portal view including Informatica MDM Hub data.
¨ Command-line application to run batch jobs and batch groups, to be run manually, scheduled for periodic
execution, or included as part of another script or application.
You can configure the SDK to use any SIF protocol. If you cannot run a JVM, then you must explicitly use web services
(for example, on a pure.NET system) or JMS (for example, on a mainframe system), or XML over HTTP.
¨ Java development environment; tightly-coupled Java remote procedure calls based on Enterprise JavaBeans
(EJBs).
¨ Loosely coupled web services using SOAP protocol: request XML, response XML; WSDL defines the request and
response XML. The actual development environment varies: it can be Eclipse, MS Visual Studio (.NET and
others), or other web service client tools.
¨ XML over HTTP (web services minus the SOAP envelope); this is very similar to SOAP/ web services except
you’re not using the SOAP protocol to “wrap” the XML request message in a SOAP envelope, nor are you needing
to retrieve the response XML from a SOAP message. One advantage of using web services is the concept that
“session authentication” is implicit.
¨ Asynchronous Java Message Service (JMS)-based messages; using XML over HTTP (subscribe/publish).
Each of the above SIF protocols sit on top of the native Informatica MDM Hub protocol, which accepts requests in the
form of XML documents or EJBs and returns responses the same way.
SIF also provides a SiperianClient proxy that can be used in a Java development environment to manage the
underlying communication protocol to the Informatica MDM Hub APIs. This eliminates the complexity from such a
development effort and allows the users to focus on application development by configuring the chosen
communication protocol usage.
When you cannot or do not want to use the SiperianClient Java classes, you can interact directly with SIF using other
access protocols. This guide does not include information about using the EJB or JMS protocols directly. You can use
these protocols only through SiperianClient if you supply an appropriately configured AsynchronousOptions object
with a request. Or, you can place the request directly onto the message queue named siperian.sif.jms.queue.
RELATED TOPICS:
¨ “Using Web Services” on page 7
¨ “Using XML Over HTTP” on page 7
¨ “Making Asynchronous SIF Requests” on page 34
6 Chapter 1: Introduction
Using Web Services
Installing Informatica MDM Hub on an application server makes the capabilities of SiperianClient available as a web
service on that application server. You can interrogate the web service to obtain Web Services Description Language
(WSDL) descriptions of the web service’s operations and arguments. These operations and arguments parallel the
methods and arguments of the SiperianClient Java classes that the web service makes available, so you can use the
SiperianClient Javadocs for reference information that also applies to the web service.
In general, you use the following generic procedure using a web service interface to implement the SIF API request/
response interactions:
Understanding WSDL
If you use a web service interface to Informatica MDM Hub, you use the same classes and methods described in the
Javadocs, but through proxies that wrap the interactions in SOAP messages. Use a tool to interpret the WSDL, then
look for the corresponding classes in the Javadocs for detailed reference information.
The actual development environment varies: you could use Eclipse, MS Visual Studio (.NET and others), or other web
service client tools. This client environment (.NET for example) has tools for reading WSDL and producing proxies that
you can call from the programming language you are using (for example, C#). The Eclipse integrated development
environment has a web services browser that reads the WSDL and presents the information in a user-friendly way.
Simply point the browser at the following URL (where host and port specify the location of the application server
supporting Informatica MDM Hub):
http://host:port/cmx/request/wsdl
The proxies communicate with the web service using the SOAP protocol. They receive requests from your application
program. They translate the requests into SOAP messages and send them to the web service. The web service
decodes the SOAP messages it receives and translates them to Java calls to the SiperianClient running on the
application server. The web service receives responses from SiperianClient, encodes them into SOAP messages,
and sends them back to the proxies, which return the responses to your application program.
Informatica MDM Hub uses AXIS (version 1.3) to serve up the web services. Axis is java library/tool that is used to
configure the SIF API as web services, and then make these web services accessible using a URL. For example, if you
use soapUI to enter a URL and view a list of web services, the tool presents the list of web services that was configured
in AXIS. Axis gets deployed along with siperian-mrm.ear. For more information, see http://ws.apache.org/axis/.
You can also create and deploy a web service to process ORS-specific requests.
RELATED TOPICS:
¨ “Setting Up the SIF SDK” on page 13
In these addresses, host:port represents the host name of the computer running the application server and the port on
which it accepts Informatica MDM Hub requests. The three schema files provide a logical partition of the schema that
governs requests and responses. The siperian-core file contains most of the elements. The siperian-types file
contains most of the type definitions., while siperian-metadata describes the objects used in the SIF
ListSiperianObjects and DescribeSiperianObjects classes.
After using the schema to construct an XML request message, use the HTTP POST method to send the request to the
following address (where host:port is as described above):
http://host:port/cmx/request
The body of the HTTP response is the Informatica MDM Hub response, encoded in XML according to the above
schema.
SIF provides access to these requests in the ways described in “About Services Integration Framework (SIF)” on page
3.
8 Chapter 1: Introduction
XML representations. Java representation requires no additional processing. XML requests will be converted to Java
internally.
You can invoke SIF classes using Java/XML representations using any of the following protocols: SOAP, HTTP, and
EJB. Multiple API calls can participate in a single transaction when using the EJB protocol.
SIF API offers a generic infrastructure to support various components of the Informatica MDM Hub (core MRM, AM
and HM).
¨ “GetLookupValue” on page 90
¨ “GetLookupValues” on page 91
¨ “GetMatchedRecords” on page 91
¨ “GetMergeHistory” on page 91
¨ “GetSystemTrustSettings” on page 95
¨ “GetBvt” on page 86
¨ “Get” on page 83
¨ “Cleanse ” on page 59
¨ “Link” on page 102
¨ “MultiMerge” on page 105
¨ “Unlink” on page 129
Data Update/Insert API requests enable developers to execute data updates and inserts on base object records. For
more information, refer to the following SIF requests:
¨ “CleansePut” on page 60
¨ “Merge ” on page 104
¨ “Put ” on page 108
¨ “Tokenize ” on page 128
¨ “Unmerge ” on page 129
¨ “AcceptUnmatchedRecordsAsUnique” on page 55
¨ “AssignUnmergedRecords” on page 56
¨ “CanUnmergeRecords” on page 58
¨ “ClearAssignedUnmergedRecords” on page 64
¨ “GetAssignedRecords” on page 85
¨ “GetUnmergedRecordCount” on page 101
¨ “ReassignRecords” on page 113
¨ “ExecuteBatchGroup” on page 72
¨ “GetBatchGroupStatus” on page 86
¨ “ResetBatchGroup” on page 117
10 Chapter 1: Introduction
Metadata Services
Informatica SIF API provides additional services for managing Informatica MDM Hub metadata. For more information,
refer to the following SIF requests:
¨ “ApplyChangeList” on page 55
¨ “CreateChangeList” on page 64
¨ “DeleteRelationship” on page 67
¨ “GetOrsList” on page 92
¨ “GetOrsMetadata” on page 93
¨ “ListSiperianObjects ” on page 103
¨ “ValidateChangeList” on page 133
¨ “ValidateMetadata” on page 134
ORS-specific Services
Packages configured in the ORS databases pave the way for accessing a specific view of Hub data.
¨ Use of packages is restricted to Informatica internal processes and the Hub Console tool.
¨ SIF exposes access to Hub data through the configured packages by auto-generating objects (data objects) and
services (data services) to access Hub data for the outside world.
¨ Collectively refers to the auto-generated data objects and associated services.
¨ Push-button generation from SIF Manager tool.
For more information regarding the ORS-specific APIs, see “Using ORS-specific APIs” on page 23.
State management is the process for managing the system state of base object and XREF records to affect the
processing logic throughout the MRM data flow. Informatica MDM Hub supports the following system states: ACTIVE,
PENDING, and DELETED.
You can assign a system state to base object and XREF records at various stages of the data flow using the Hub tools
that work with records. In addition, you can use the various Hub tools for managing your schema to enable state
management for a base object, or to set user permissions for controlling who can change the state of a record.
State Management API requests enable developers to restore state-enabled records with state set to DELETED, as
well as promote pending XREF records. In order for a record to be deleted, it must be in either the ACTIVE state for
soft delete (a base object or an XREF record is marked as deleted in a user attribute or in the HUB_STATE_IND) or the
PENDING state for hard delete (a base object or XREF record is physically removed from the database). For more
information, see the chapter on state management in the Informatica MDM Hub Configuration Guide .
RELATED TOPICS:
¨ “Delete” on page 65
¨ “PromotePendingXrefs” on page 107
RELATED TOPICS:
¨ “Authenticate” on page 58
Other Services
In addition, the Informatica SIF API provides additional services for registering and unregistering users, managing the
audit trail, and other miscellaneous services. For more information, refer to the following SIF requests:
¨ “Audit ” on page 57
¨ “GetSiperianObjectCompatibility” on page 95
¨ “RegisterUsers” on page 115
¨ “UnregisterUsers” on page 131
The process method of SiperianClient provides the basic request/response interaction between the client program
and Informatica MDM Hub. It accepts any subclass of com.siperian.sif.message.SiperianRequest as an argument.
When it processes the request successfully, it returns a com.siperian.sif.message.SiperianResponse, which you
must cast to the correct response subclass. Otherwise it throws SiperianServerException.
Each Informatica MDM Hub interaction uses a pair of subclasses of SiperianRequest and SiperianResponse. For
example, an interaction to carry out a SIF Put request uses the classes PutRequest and PutResponse.
12 Chapter 1: Introduction
CHAPTER 2
Note: Ensure the Application server host computer data format is dd-mmm-yyyy. This is the date format SIF
provides.
Refer to the Informatica MDM Hub Release Notes for information about the specific versions of JDK, Ant, and
supported application servers.
13
Deploying the SIF SDK
The environment variable SIP_HOME denotes the directory into which you install Informatica MDM Hub. In that
directory is a file named siperian-sifsdk.zip. Unzip this file to a location on your development machine.
The resulting directory structure contains libraries, build files, Javadocs, and everything else you need to build web
services as EAR files for deployment on an application server.
You can find the SIF API javadoc in the zip file Informatica_MDM_9.6.0_MSSQL_GA_JAVADOCS.zip that ships with
the installation files.
One you’ve deployed the SIF SDK, you can view the Javadocs for SiperianClient and its associated classes and
objects. Open index.html to see a right-hand frame and two left-hand frames, as shown in the following illustration.
The left frames provide links to the pages for all packages and all classes. The lower left frame displays the links
associated with the package you select in the upper left frame.You can select All Classes in the upper left frame to
see a combined list of classes from all packages in the lower left frame.
RELATED TOPICS:
¨ “Using ORS-specific APIs” on page 23
16
Informatica MDM Hub SIF Manager
In addition, Informatica MDM Hub also includes the SIF Manager, an Informatica MDM Hub Console tool that
generates (and deploys):
RELATED TOPICS:
¨ “Making Asynchronous SIF Requests” on page 34
¨ “Using ORS-specific APIs” on page 23
¨ automatic generation and deployment of data objects and data services for web services-based interaction
¨ generation of a “Client Jar file” that includes data objects that can be used in external applications
¨ creation and management of complex integration scenarios by combining data objects from different Informatica
MDM Hub schemas (ORS databases)
You can use the SIF SDK to create data objects, components and client services, business services, and GUI controls
for creation and deployment of web-based, rich-client applications.
About SiperianObjectUID
The SiperianObjectUID parameter contains a string identifier for an object in Informatica MDM Hub.
SiperianObjectUID is a required parameter in most API requests.
Syntax Examples
The object type in the SiperianObjectUID depends on the API request. For example, the Cleanse request requires the
SiperianObjectUID of a cleanse function. The correct syntax for specifying the Concatenate cleanse function is:
CLEANSE_FUNCTION.String Functions|Concatenate
A Put request, on the other hand, requires a base object or package object type. The correct syntax for specifying the
ADDRESS_UPDATE package is:
PACKAGE.ADDRESS_UPDATE
Object Types
The following table lists the SiperianObjectUID object types.
IMMUTABLE_SYSTEM RAW
About TaskData
The TaskData object contains information about a task.
Field Description
TaskRecord A link to a data record associated with a task. See “About TaskRecord” on page 20.
WorkflowProcessID The ID of the workflow process that contains the task. Cannot be set by user.
CreateDate The date when the task was created. Cannot be set by user.
Creator The name of the user who created the task. Cannot be set by user.
LastUpdateDate The date when the task was updated. Cannot be set by user.
LastUpdatedBy The name of the user who updated the task. Cannot be set by user.
PreviousOwner The name of the user or role to whom the task was previously assigned. The value is Null if the task is
new or has not been assigned. Cannot be set by user.
Field Description
SiperianObjectUID An identifier for an object in Informatica MDM Hub. See “About SiperianObjectUID” on page 17.
RecordKey An identifier for a record in Informatica MDM Hub. See “About RecordKey” on page 23.
MatchRuleUID An identifier for a match rule in Informatica MDM Hub. Only merge tasks require a MatchRuleUID.
¨ The com.siperian.sif.client package manages communications with the Hub server. You can configure the
APIs to use the EJB, SOAP, or HTTP protocol to communicate with the Hub Server.
¨ The com.siperian.sif.message package provides data objects and abstract classes for the SIF APIs. All requests
are sub-classes of SiperianRequest.
The siperian-api.jar file can be found in the following locations:
On Windows:
¨ <infamdm_install_directory>\hub\sifsdk\lib
¨ <infamdm_install_directory>\hub\server\lib
On UNIX:
¨ <infamdm_install_directory>/hub/sifsdk/lib
¨ <infamdm_install_directory>/hub/server/lib
By default, this parameter is not listed by the Hub install. After adding the parameter and setting it to 1, you can do
exact matching on a fuzzy BO in the API.
Note: You must restart the application server for changes to this parameter to take effect.
Note: If a date value is passed to the APIs as a string, you must ensure that the date format is yyyy/MM/dd
HH:mm:ss.
SiperianRequest Class
The SIF API classes (Java) that implement individual Informatica MDM Hub operations all extend the class
SiperianRequest. This class provides access to the following information:
The transaction attribute type specifies whether and how a request can participate in transactions. You can get but
not set this information. Different request types have different transaction attribute types. The possible transaction
attribute types are:
You can interrogate a request object to see which specific request type it is an instance of.
After setting up the request, pass it to the process method for execution. The process method either throws an
exception or returns a response object of the appropriate type.
Constructing Requests
Every SIF class has an associated Request object. This object contains the description of what action is to be taken by
SIF.
For example, the following sample SIF call is a search query request. This request will execute the package
“PARTY_ADDRESS_READ_PKG”. It will return no more than five (5) rows and use the filter criteria
“PARTY_FULL_NAME LIKE” and an inserted parameter.
SearchQueryRequest request = new SearchQueryRequest();
request.setRecordsToReturn(5); //Required
request.setSiperianObjectUID("PACKAGE.PARTY_ADDRESS_READ_PKG");//Required
request.setFilterCriteria("PARTY_FULL_NAME LIKE ?");
Processing Responses
Every SIF request returns an associated Response object. This object contains the results for the request.
For example, the following sample SIF call is a response from a GetOrsMetadataRequest request:
GetOrsMetadataResponse getOrsMetadataResponse = (GetOrsMetadataResponse)
sifClient.process(getOrsMetadataRequest );
System.out.println("ORS Metadata (first line only): " +
getOrsMetadataResponse.getRepositoryXml().substring(0, 80));;
Usage Example
…
CleanseRequest cleanseRequest = new CleanseRequest();
cleanseRequest.setCleanseFunctionName( cleanseFunctionName);
About RecordKey
Uniquely identifies a record in the Informatica MDM Hub. A record can be identified by a combination of:
Usage Example
…
RecordKey recordKey = new RecordKey();
recordKey.setSystemName( systemName );
recordKey.setSourceKey( sourceKey );
…
putRequest.setRecordKey(recordKey );
…
Note: Informatica MDM Hub generates ORS-specific APIs only for objects that are secure.
ORS-specific APIs provide the following additional benefits over the standard SIF API:
Note: This operation requires access to a Java compiler on the application server machine. The Java Software
Development Kit (SDK) includes a compiler in tools.jar. The Java Runtime Environment (JRE) does not contain a
compiler.
The following procedure assumes that you have already configured the base objects, packages, and mappings of the
ORS. If you subsequently change any of these, regenerate the ORS-specific APIs.
1. In the Hub Console, connect to an ORS. To learn more, see Changing the Target Database in the Informatica
MDM Hub Configuration Guide .
2. Expand the Informatica Utilities workbench and then click SIF Manager.
The SIF Manager tool displays the following areas:
Area Description
SIF ORS-Specific APIs Shows the logical name, java name, WSDL URL, and API generation time for the
SIF ORS-specific APIs.
Use this function to generate and deploy SIF APIs for packages, mappings, and
cleanse functions in an ORS database.
Out of Sync Objects Shows the database objects in the schema that are out of sync with the generated
schema. Private objects also appear in the Out of Sync Objects list even though
SIF APIs cannot access them.
Note: To prevent running out of heap space for the associated SIF API Javadocs, you may need to increase the size
of the heap. The default heap size is 256M. You can override this default using the SIF.JVM.HEAP.SIZE parameter.
¨ Cleanse [Resource_Name]
¨ CleansePut [Resource_Name]
¨ Get [Resource_Name]
¨ Put [Resource_Name]
¨ SearchMatchColumn [Resource_Name]
¨ SearchMatchRecord [Resource_Name]
¨ SearchQuery [Resource_Name]
Note: The Resource_Name depends on the name of the ORS-specific fields for each secure ORS resource.
Cleanse[Resource_Name]
Cleanse invokes a cleanse function defined in Informatica MDM Hub. The request specifies the record and the
cleanse function. The response contains a record containing the cleansed data. Use the following syntax for calling
the ORS-specific version of Cleanse:
Cleanse[ResourceName]
Usage Examples
For Cleanse [ResourceName] Request:
<q0:cleanse xmlns:q0="urn:siperian.api">
<q0:username>siftester</q0:username>
<q0:password>
<q0:password>siftester</q0:password>
<q0:encrypted>false</q0:encrypted>
</q0:password>
<q0:orsId>wewks01-wewks01-CMX_SIF</q0:orsId>
<q0:cleanseFunctionName>CLEANSE_FUNCTION.Data Conversion|Format Boolean</
q0:cleanseFunctionName>
<q0:record>
<q0:field>
<q0:name>falseString</q0:name>
<q0:stringValue>failed</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>trueString</q0:name>
<q0:stringValue>success</q0:stringValue>
</q0:field>
<q0:siperianObjectUid/>
</q0:record>
</q0:cleanse>
Use the following syntax for calling the ORS-specific version of CleansePut:
CleansePut[ResourceName]
Usage Example
For CleansePut[ResourceName] Request:
<q0:cleansePut xmlns:q0="urn:siperian.api">
<q0:username>b_c_m_create_user</q0:username>
<q0:password>
<q0:password>password</q0:password>
<q0:encrypted>false</q0:encrypted>
</q0:password>
<q0:orsId>wewks01-wewks01-CMX_SIF</q0:orsId>
<q0:systemName>CRM</q0:systemName>
<q0:record>
<q0:field>
<q0:name>CHAR_SOURCE</q0:name>
<q0:stringValue>CleansePTest</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>VCHAR_SOURCE</q0:name>
<q0:stringValue>0001_ValidMappingInsert</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>INT_SOURCE</q0:name>
<q0:bigIntegerValue>1548851241</q0:bigIntegerValue>
</q0:field>
<q0:field>
<q0:name>LAST_UPDATE_DATE</q0:name>
<q0:dateValue>2006-11-26T16:54:40.531Z</q0:dateValue>
</q0:field>
<q0:siperianObjectUid>MAPPING.All Types Mapping</q0:siperianObjectUid>
</q0:record>
<q0:generateSourceKey>false</q0:generateSourceKey>
</q0:cleansePut>
Get[Resource_Name]
Retrieves a single record from the specified package using a known key. The Get API can be used against the regular
MRM packages (“PACKAGE.” SiperianObjectUid prefix). Use the following syntax for calling the ORS-specific version
of Get:
Get[ResourceName]
Usage Example
For Get[ResourceName] Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:siperian.api">
<soapenv:Header/>
<soapenv:Body>
<urn:get>
<!--Optional:-->
<urn:username>admin</urn:username>
<!--Optional:-->
<urn:password>
<urn:password>admin</urn:password>
<urn:encrypted>false</urn:encrypted>
</urn:password>
<!--Optional:-->
<urn:orsId>localhost-orcl-DS_UI1</urn:orsId>
<urn:siperianObjectUid>PACKAGE.PKG_PARTY</urn:siperianObjectUid>
<urn:recordKey>
<urn:rowid>100</urn:rowid>
</urn:recordKey>
<!--Optional:-->
<urn:recordTypes>
<!--Optional:-->
<urn:package>true</urn:package>
<!--Optional:-->
<urn:xref>false</urn:xref>
<!--Optional:-->
<urn:pendingXref>false</urn:pendingXref>
<!--Optional:-->
<urn:deletedXref>false</urn:deletedXref>
<!--Optional:-->
<urn:history>false</urn:history>
<!--Optional:-->
<urn:xrefHistory>false</urn:xrefHistory>
<!--Optional:-->
<urn:raw>false</urn:raw>
</urn:recordTypes>
<!--Optional:-->
<urn:returnTrustScores>false</urn:returnTrustScores>
<!--Optional:-->
<urn:returnLineage>false</urn:returnLineage>
</urn:get>
</soapenv:Body>
</soapenv:Envelope>
Put[Resource_Name]
Put adds a new row or updates an existing row of a base object table. The package must be put-enabled. Use the
following syntax for the ORS-specific version of Put:
Put[ResourceName]
To learn more about creating put-enabled packages, see the Informatica MDM Hub Configuration Guide .
Important: Use the AddRelationship and UpdateRelationship requests to add or update relationship records. Using
the Put request or an ORS-specific put request to update relationships can lead to improperly formed relationship
records.
Usage Example
For Put[ResourceName] Request:
<q0:put xmlns:q0="urn:siperian.api">
<q0:username>p_b_create_user</q0:username>
<q0:password>
<q0:password>password</q0:password>
<q0:encrypted>false</q0:encrypted>
</q0:password>
<q0:orsId>wewks01-wewks01-CMX_SIF</q0:orsId>
<q0:recordKey>
<q0:systemName>CRM</q0:systemName>
</q0:recordKey>
<q0:record>
<q0:field>
<q0:name>CUSTOMER_CLASS</q0:name>
<q0:stringValue>R</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>FULL_NAME</q0:name>
<q0:stringValue>PUTMW1</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>FIRST_NAME</q0:name>
<q0:stringValue>PUT</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>MIDDLE_NAME</q0:name>
<q0:stringValue>M</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>LAST_NAME</q0:name>
<q0:stringValue>W1</q0:stringValue>
</q0:field>
<q0:field>
<q0:name>NAME_GENERATION</q0:name>
<q0:stringValue/>
</q0:field>
<q0:field>
<q0:name>SUB_CATEGORY_ROWID</q0:name>
<q0:stringValue/>
</q0:field>
<q0:field>
<q0:name>ROWID_BO_CLASS</q0:name>
<q0:stringValue>3</q0:stringValue>
</q0:field>
<q0:siperianObjectUid>PACKAGE.CUSTOMER_UPDATE</q0:siperianObjectUid>
SearchMatchColumn[Resource_Name]
User specifies values of a match column. Use the following syntax for calling the ORS-specific version of
SearchMatchRecord:
SearchMatchColumn[ResourceName]
In addition:
Usage Example
For SearchMatchColumn[ResourceName] Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:datastewarddemo.siperian.api" xmlns:urn1="urn:siperian.api">
<soapenv:Header/>
<soapenv:Body>
<urn:searchMatchColumnPkgParty>
<!--Optional:-->
<urn1:username>admin</urn1:username>
<!--Optional:-->
<urn1:password>
<urn1:password>admin</urn1:password>
<urn1:encrypted>false</urn1:encrypted>
</urn1:password>
<!--Optional:-->
<urn1:securityPayload>cid:1224793701596</urn1:securityPayload>
<!--Optional:-->
<urn1:orsId>localhost-orcl-DS_UI1</urn1:orsId>
<urn:sortCriteria></urn:sortCriteria>
<urn:recordsToReturn>1</urn:recordsToReturn>
<urn:returnTotal>true</urn:returnTotal>
<urn:matchType>NONE</urn:matchType>
<!--Zero or more repetitions:-->
<urn:organizationName>?</urn:organizationName>
<!--Zero or more repetitions:-->
<urn:personName>John Doe</urn:personName>
<!--Zero or more repetitions:-->
<urn:addressPart1>?</urn:addressPart1>
<!--Optional:-->
<urn:matchRuleSetUid>?</urn:matchRuleSetUid>
<!--Optional:-->
<urn:disablePaging>?</urn:disablePaging>
</urn:searchMatchColumnPkgParty>
</soapenv:Body>
</soapenv:Envelope>
SearchMatchRecord[Resource_Name]
User specifies values of a related record (shares the same parent base object). SearchMatchRecord extracts the
match column values from the record. Use the following syntax for calling the ORS-specific version of
SearchMatchRecord:
SearchMatchRecord[ResourceName]
In addition:
Usage Example
For SearchMatchRecord[ResourceName] Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:datastewarddemo.siperian.api" xmlns:urn1="urn:siperian.api">
<soapenv:Header/>
<soapenv:Body>
<urn:searchMatchRecordPkgParty>
<!--Optional:-->
<urn1:username>admin</urn1:username>
<!--Optional:-->
<urn1:password>
<urn1:password>admin</urn1:password>
<urn1:encrypted>false</urn1:encrypted>
</urn1:password>
<!--Optional:-->
<urn1:orsId>localhost-orcl-DS_UI1</urn1:orsId>
<urn:sortCriteria>?</urn:sortCriteria>
<urn:recordsToReturn>1</urn:recordsToReturn>
<urn:returnTotal>true</urn:returnTotal>
<urn:matchType>NONE</urn:matchType>
<!--Zero or more repetitions:-->
<urn:pkgOrganization>
</urn:pkgOrganization>
<!--Zero or more repetitions:-->
<urn:pkgParty>
<urn:partyType>?</urn:partyType>
</urn:pkgParty>
<!--Zero or more repetitions:-->
<urn:pkgPerson>
<!--Optional:-->
<urn:firstName>John</urn:firstName>
<!--Optional:-->
<urn:lastName>Doe</urn:lastName>
<urn:partyType>?</urn:partyType>
</urn:pkgPerson>
<!--Zero or more repetitions:-->
<urn:dnbPartyInput>
</urn:dnbPartyInput>
<!--Zero or more repetitions:-->
<urn:lgcPartyInput>
</urn:lgcPartyInput>
</urn:searchMatchRecordPkgParty>
SearchQuery[Resource_Name]
SearchQuery searches for records in a package based on an SQL condition clause. The condition clause can
reference any columns in the package and can use operators supported by the target database. A system parameter
determines the maximum number of records that can be returned.
Note: You can perform a case-insensitive search if the case.insensitive.search property is set to true in
thecmxserver.properties.xml file. For example, to perform a case-insensitive search, you can specify a search
criterion using the SearchQuery API, such as lower(name)=lower('Jim').
Use the following syntax for calling the ORS-specific version of SearchQuery:
SearchQuery[Resource_Name]
Where the Resource_Name defines the search criteria and search results.
In addition:
Usage Example
For SearchQuery[ResourceName] Request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:datastewarddemo.siperian.api" xmlns:urn1="urn:siperian.api">
<soapenv:Header/>
<soapenv:Body>
<urn:searchQueryPkgParty>
<!--Optional:-->
<urn1:username>admin</urn1:username>
<!--Optional:-->
<urn1:password>
<urn1:password>admin</urn1:password>
<urn1:encrypted>false</urn1:encrypted>
</urn1:password>
<urn1:orsId>localhost-orcl-DS_UI1</urn1:orsId>
<urn:recordsToReturn>10</urn:recordsToReturn>
<urn:returnTotal>true</urn:returnTotal>
<!--Zero or more repetitions:-->
<urn:pkgParty>
<!--Optional:-->
<urn:displayName>ELIEZER MENDEZ</urn:displayName>
</urn:pkgParty>
</urn:searchQueryPkgParty>
</soapenv:Body>
</soapenv:Envelope>
¨ Set the AsynchronousOptions on a request. When the request is submitted is placed on a queue for processing. If
the jmsReplyTo field is set, the response is posted to the specified queue. If the jmsCorrelationId is set, this ID is
set on the response.
¨ Place the request directly on the JMS queue (queue/siperian.sif.jms.queue). If the replyTo header is set, the
response is posted to the specified queue. If the jmsCorrelationId is set, this ID is set on the response. Requests
must be formatted as XML as specified in the XML schema.
The response that is placed on the outgoing JMS queue (if configured) will carry the correlation ID as set on the
request message.
Note: The Services Integration Framework (SIF) uses a message-driven bean (MDB) on the JMS queue (named
siperian.sif.jms.queue) to process incoming asynchronous SIF requests. This message queue and the connection
factory (named siperian.mrm.jms.xaconnectionfactory) must be configured for the specific application server you
are using for your Informatica MDM Hub implementation. Correctly configured message queues are essential to a
fully-functioning Informatica MDM Hub installation. The Informatica installer automatically sets up message queues
and connection factory configuration. If you need to manually configure your message queues or connection factories
for testing or troubleshooting purposes, see the Informatica MDM Hub Installation Guide.
¨ are backwards-compatible; the message queue can be configured to generate new or legacy format
Note: JMS Event Schema generation requires at least one secure package.
Important: If there are two databases that have the same schema (for example, CMX_ORS), the logical name (which
is the same as the schema name) will be duplicated for JMS Events when the configuration is initially saved.
Consequently, the database display name is unique and should be used as the initial logical name instead of the
schema name to be consistent with the SIF APIs. You must change the logical name before generating the
schema.
Each ORS has an XSD file specific to the ORS that uses the elements from the common XSD file (siperian-mrm-
events.xsd). The ORS-specific XSD is named as <ors-name>-siperian-mrm-event.xsd. The XSD defines two objects
for each package in the schema:
[packageName]Record Complex type representing a package and its fields. Also includes an element of
type SipMetadata. This complex type resembles the package record structures
defined in the Informatica MDM Hub Services Integration Framework (SIF).
Note: If legacy XML event message objects are to be used, ORS-specific message object generation is not
required.
Field Description
Root Node
Event Metadata
<orsId> ID of the Operational Record Store (ORS) associated with this event.
<triggerUid> UID of the rule that triggered the event that generated this message.
Event Details
<rowid> RowID of the base object record that was affected by the event.
<columnName> Each column in the package is represented by an element in the XML file. Examples:
rowidObject and consolidationInd. Defined in the ORS-specific XSD that is
generated using the JMS Event Schema Manager tool.
<mergedRowid> List of ROWID_OBJECT values for the losing records in the merge. This field is included
in messages for Merge events only.
<updateEvent>
<sourceSystemName>TestSystem123</sourceSystemName>
<sourceKey>123-1</sourceKey>
<eventDate>2008-04-24T15:35:51.000-07:00</eventDate>
<rowid>1</rowid>
<xrefKey>
<systemName>Admin</systemName>
<sourceKey>SVR1.161</sourceKey>
</xrefKey>
<xrefKey>
</siperianEvent>
Note: Correctly-configured message queues are essential to a fully-functioning Informatica MDM Hub installation.
The Informatica installer automatically sets up message queues and connection factory configuration. If you need to
manually configure your message queues or connection factories for testing or troubleshooting purposes, see the
Informatica MDM Hub Installation Guide for your platform.
The Services Integration Framework (SIF) uses a message-driven bean (MDB) on the JMS queue (named
siperian.sif.jms.queue) to process incoming asynchronous SIF requests. This message queue and the connection
factory (named siperian.mrm.jms.xaconnectionfactory) is set up during the installation process. as described in the
Informatica MDM Hub Installation Guide for your platform.
For JMS inbound asynchronous requests, the process is very similar to XML over HTTP--you have two options:
¨ place messages directly on the queue for the web services request
¨ or when you are making an SIF API call, run it asynchronously: SIF returns a response, then places the request on
the incoming JMS queue.
1. An external application sends a message containing a Informatica MDM Hub service invocation request to the
siperian.sif.jms.queue queue.
You can configure a message rule to control data going to the C_REPOS_MQ_DATA_CHANGE table. For more
information, refer to the “Informatica MDM Hub Processes” and “Configuring the Publish Process” chapters in the
Informatica MDM Hub Configuration Guide .
Note: The siperian.sif.jms.queue name is reserved by the system. You cannot use this name when creating
your own inbound message queues.
2. The application server polls the queue for messages.
3. The Message Driven Bean (MDB) inside the Hub Server forwards the service request to the Informatica MDM
Hub for processing.
4. Informatica MDM Hub processes the request and a response is placed on the specified JMS response queue (if
any).
5. The external application retrieves the message from the specified message queue and processes it.
Note: SAM security applies primarily to users of third-party applications who want to gain access to Informatica MDM
Hub resources. SAM applies only tangentially to Hub Console users. The Hub Console has its own security
mechanisms to authenticate users and authorize access to Hub Console tools and resources.
SIF Requests
For detailed descriptions of each request, refer to Chapter 5, “SIF API Reference” on page 50 and review the
associated Informatica MDM Hub Javadoc for that API class.
ValidateMetadata Validates the metadata for the current “ValidateMetadata” on page 134
repository.
//createChangeList
CreateChangeListResponse createChangeListResponse =
(CreateChangeListResponse)sifClient.process(createChangeListRequest);
System.out.println("change list xml: " + createChangeListResponse.getChangeListXml());
//validateChangeList
validateChangeListRequest.setUsername("admin");
validateChangeListRequest.setPassword(new com.siperian.sif.message.Password("admin"));
validateChangeListRequest.setChangeListXml(createChangeListResponse.getChangeListXml());
ValidateChangeListResponse validateChangeListResponse =
(ValidateChangeListResponse)sifClient.process(validateChangeListRequest);
//applyChangeList
//validateMetadata
validateMetadataRequest.setChecks(checkTypes);
ValidateMetadataResponse validateMetadataResponse =
(ValidateMetadataResponse)sifClient.process(validateMetadataRequest);
//getOrsMetadata
Transactions
A transaction is a set of procedures or operations that must complete without generating an error. If any procedure or
operation in the transaction generates an error, the application returns to the pre-transaction state.
You can use Enterprise JavaBean transactions and autonomous transactions. You must use autonomous
transactions with ExecuteBatch APIs. Informatica MDM Hub requests can take place within transactions. You cannot
use transactions with web services.
The transactions for the composite service can be enabled by changing the SiperianClient properties to use EJBs as
the underlying interaction protocol. The composite service simply sends message to trigger a bunch of server side of
services through service calls. Note that the Hub does not control transactions for external composite services;
instead, these must be managed by your service.
or
tx.rollback()
To use autonomous transactions, use BatchConnectionFactory to retrieve a direct java database connectivity
connection in all batch APIs.
Do not use an application server connection for batch APIs. Some batch APIs such as ExecuteBatchPromote and
ExcuteBatchRevalidate use the application server connection by default. When batch APIs use the application server
connection, the APIs inherit the transaction context form the Enterprise JavaBean container. Also, the application
server connection might time out and cause the batch APIs to fail.
Transactions 41
CHAPTER 4
Note: Only admin users can access private resources through SIF requests.
¨ Any user using an application that uses SIF API calls to a Informatica MDM Hub implementation that has SAM
configured must have the appropriate permissions to access the objects that the SIF calls require. For the specific
permissions required, see Chapter 4, “Using the Security Access Manager with SIF API” on page 42. To learn
more about granting those permissions, see the chapter on setting up security in the Informatica MDM Hub
Configuration Guide .
¨ In some cases, permissions are applied at the column level. An example of this would be if a user is performing Get
and Put requests. (Note that column-level privileges are granted using the base object.) In this example the user
has the following permissions on a package named P_CUST:
- READ on column 1
- READ/CREATE column 2
42
- no rights for column 3
For a Get request, only data from columns 1 and 2 would be displayed because only these two columns have READ
permissions.
For a Put request, the user would be able to create a new record by inserting data into column 2 because this column
has CREATE permissions. In this example, the user would have no write access to columns 1 and 3. Also, the user
would not be able update the record, since they have no UPDATE permissions on any of the columns. The Put request
results in an error if the user does not have the necessary premissions.
Use the following general procedure to ensure that the user using an application has the appropriate permissions:
1. Configure the required resource as secure (versus private). The secure permission makes the object available to
the application. Set the permissions using the Secure Resources tool in the Security Access Manager
workbench.
2. Use the Roles tool in the Security Access Manager workbench to define a role to access that resource. This role
includes a set of access privileges to the various objects listed in “Object Types” on page 43.
3. Use the Users and Groups tool in the Security Access Manager workbench to associate the role with a specific
user.
For additional information on the tools Security Access Manager workbench, refer to the chapter on setting up
security in the Informatica MDM Hub Configuration Guide .
Object Types
In the following tables, the abbreviations indicate the object or type of object for which the user requires permission in
order to successfully use this API. The degree of permission required is also indicated. The object types referenced by
the subsequent permission tables are defined here:
Abbreviation Object
A Audit table
B Base object
BG Batch group
C Column
F Function
H History
HP HM profile
M Mapping
MD Metadata
P Package
R Record
RW Raw
U Users
X XREF
XH XREF history
ExecuteBatchGroup BG
GetBatchGroupStatus BG
ResetBatchGroup BG
Note: This matrix specifies a set of resource types that may be used with the certain SIF requests, but does not
specify the exact logical formula—that is, “P,B,C” can mean [P or B] and [C or B], or it can mean any other logical
combination.
AcceptUnmatchedRecordsAsUniqu P, B
e
AssignUnmergedRecords P1
CanUnmergeRecords P, B, X
ClearAssignedUnmergedRecords P, B
GetAssignedRecords P, C
GetLookupValue C
GetLookupValues C
GetMatchedRecords P, C
GetMergeHistory P, B
GetSystemTrustSettings MD
GetTrustGraphData MD
GetTrustScore C
GetUnmergedRecordCount P, B
ReassignRecords P, B
SetRecordState P
SearchLookupValues B, C
1. In order to grant privilege to a package column the user has to grant privilege to the ultimate parent column which belongs
to the base object.
GetBvt P, C
Get P, C, H, RW,
X, XH
GetSearchResults1 - - - - - - -
SearchMatch P, MR
SearchQuery P,C
1. GetSearchResult always requires READ access. Objects depend on the primary processor involved.
Cleanse F, M
Link P
MultiMerge P
Unlink P
Merge P
Tokenize P
Unmerge P
AddRelationship HP
DeleteRelationship HP
GetEntityGraph HP
GetOneHop HP
SearchHmQuery P, C, HP
UpdateRelationship HP
AcceptUnmatchedRecordsAsUniq P, B
ue
AssignUnmergedRecords P
CanUnmergeRecords P, B, X
ClearAssignedUnmergedRecords P, B
GetAssignedRecords P, C
GetUnmergedRecordCount P, B
ReassignRecords P, B
DescribeSiperianObject P,RP,B,D,
C,F,M,MR,
HP
ListSiperianObjects MD
ApplyChangeList RP_Man
CreateChangeList RP_Man
ValidateChangeList RP_Man
ValidateMetadata RP_Man
GetOrsMetadata RP_Man
PromotePendingXrefs P, C
Restore B, X
CreateTask
GetAssignableUsersForTasks R
GetTasks
GetTaskLineage
UpdateTask
ValidateTasks
Audit A
GetSiperianObjectCompatibility MD
RegisterUsers U
UnregisterUsers U
Batch Group APIs Batch Group API requests enable developers to execute
batch groups directly without using the MDM Hub Console or
stored procedures.
“GetBatchGroupStatus” on page 86 Get status of most recent execution; polls for status after
executing asynchronously.
“ResetBatchGroup” on page 117 Finds the last execution status of the given batch group, and
if its status is failed, sets it to incomplete.
Data Steward APIs Data Steward API requests are intended to make it easy for a
developer to write applications with a custom user interface
for data stewards. Note that this is not exclusive; you can use
any SIF API requests your specific application requires,
these are just for convenience.
“GetLookupValue” on page 90 Retrieves the lookup display name (lookup code description)
for the specific lookup values (lookup codes) on specified
lookup columns.
“GetLookupValues” on page 91 Retrieves the list of valid lookup values (lookup codes) and
lookup display names (lookup code descriptions) for the
specified lookup columns.
“GetMatchedRecords” on page 91 Retrieves the match candidates for the specified record.
50
SIF Functional Group/Class Description
“GetSystemTrustSettings” on page 95 Retrieves the system-specific trust settings for the specified
columns.
“GetTrustGraphData” on page 100 Retrieves the data to plot the trust decay curve for the
specified trust setting.
“GetTrustScore” on page 100 Retrieves the current trust score for the specified column in a
base object record.
“GetXrefForEffectiveDate” on page 101 Retrieves multiple XREF records for the specified effective
date.
“ PreviewBVT” on page 105 Provides a preview of what a base object record would look
like when a specified set of records are merged or pending
updates applied.
“SearchLookupValues” on page 119 Searches for lookup values that match a given lookup
display name (lookup code description).
“SetRecordState” on page 126 Sets the record state of base object records identified by the
specified keys.
“Cleanse ” on page 59 Uses cleanse functions defined in the Informatica MDM Hub
to transform an input record provided in the request to the
output format specified by the cleanse function selected.
“Link” on page 102 Links two or more base object records using the specified
groupRecordKey as the group ID.
“MultiMerge” on page 105 Merges multiple base object records that have been
identified as representing the same object and allows
specifying the field level overrides for the merged record.
“Unlink” on page 129 Unlinks two or more base object records with the group id
specified in the groupRecordKey field.
Data Update / Insert APIs Data update / insert API requests enable developers to
execute data updates and inserts on base object records.
“Merge ” on page 104 Merges two base object records that have been identified as
representing the same object.
“Put ” on page 108 Inserts or updates a single record identified by a key into a
base object.
“Tokenize ” on page 128 Generates match tokens for a base object record that has
been updated or inserted.
Data Retrieval APIs Data Retrieval API requests enable developers to retrieve
data, including BVT, a single record or sets of records, as
well as to perform searches based on match columns.
“GetBvt” on page 86 Retrieves the best version of truth (BVT) from the specified
package using a known key.
“Get” on page 83 Retrieves a single record from the specified package using a
known key.
“GetSearchResults ” on page 93 Retrieves additional data when the number of records found
by the SIF API search queries (SearchMatch, SearchQuery)
exceeds the number of records to return specified in the
search API request.
“SearchMatch ” on page 119 Searches for records in a package based on match columns
and rule definitions.
“SearchQuery ” on page 123 Retrieves a set of record from an MRM package satisfying
the specified criteria.
Merge Workflow APIs Merge Workflow API requests enable developers to execute
post-match batch processes, such as search for unmatched
or unmerged records.
“AcceptUnmatchedRecordsAsUnique” on page 55 Once the match batch process has been run and records
have been placed into match groups, there are often records
that did not match any other records in the Hub. Sets the
unmatched records to unique (that is, sets
CONSOLIDATION_IND=1)
“AssignUnmergedRecords” on page 56 Once the match batch process has been run and records
have been placed into match groups, the records that were
processed and not automatically merged are placed into the
UNMERGED state. This is to assign the unmerged records
to specified user.
“ClearAssignedUnmergedRecords” on page 64 Clears the list of unmerged records that are currently
assigned to this user.
“GetAssignedRecords” on page 85 Get a set of records requiring manual merge decisions that
are assigned to the user.
“ReassignRecords” on page 113 Reassigns the specified records assigned for manual merge
evaluation to another user.
“CreateChangeList” on page 64 Creates a change list in XML format for the current
repository.
“ValidateChangeList” on page 133 Validates a change list against the current repository.
“ValidateMetadata” on page 134 Validates the metadata for the current repository.
“PromotePendingXrefs” on page 107 Promotes or flags for promotion the XREF records specified
in the request.
“Restore” on page 117 Restores the specified XREF record(s) in the Hub.
“ValidateTasks” on page 134 Checks each merge task specified in the request to verify
there is a match table record
“RegisterUsers” on page 115 Allows for automated provisioning of users that are
authenticated externally using one of the registered JAAS
login modules.
“UnregisterUsers” on page 131 Allows for previously provisioned users (see RegisterUsers)
to be unregistered.
Note: Only admin users can access private resources through SIF requests.
AcceptUnmatchedRecordsAsUnique
AcceptUnmatchedRecordsAsUnique changes the state of records that have no match candidates from Unmerged to
Consolidated (unique). Once a record is in the Consolidated state, it will no longer appear in the list of records that
needs to be reviewed and it will not be merged by the merge batch process. These records can still be merged
manually in the Console or by using the Merge API.
The request specifies the base object table or a package on that table. It also supplies a boolean value indicating
whether or not to change only those records assigned to the user.
Note: You can configure AcceptUnmatchedRecordsAsUnique requests only for “no system” when using the Hub
Console Audit Manager to audit requests made by external applications. Once auditing for a particular SIF API
request is enabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For
more information, refer to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the AcceptUnmatchedRecordsAsUnique request:
¨ Set unmatched records as unique — You can use the AcceptUnmatchedRecordsAsUnique request in an
application with a custom UI for the data stewards. In the screen that manages the status of records, you might
create a button that uses this request to accept all the unmatched records as unique.
AddRelationship
AddRelationship enables you to add a relationship between two entities.
Note: This API request applies to Hierarchy Manager. If you have not purchased, configured, and populated
Hierarchy Manager, this request will fail.
The request identifies the HM configuration and hierarchy, the relationship type, the records, and a number of optional
parameters. Note that this request cannot be used to add a new Relationship with Foreign Key Relationship Type
because adding a FK Relationship really involves updating an existing record in the FK Relationship Base Object. For
more information, see “UpdateRelationship” on page 131.
The response contains the record key for the added relationship. Informatica MDM Hub infers the types of the entities
being related (and thus the base objects containing those entities) from the relationship type.
Use Case
This is the common scenario for using the addRelationship request:
¨ Add a relationship between two HM entities — If you have Hierarchy Manager and have populated it with
entities, you can use the addRelationship request to create a relationship between two entities.
ApplyChangeList
The ApplyChangeList request applies all the changes in the specified change list to the current repository (ORS).
Parameter Description
ChangeListXml Contains the XML string representing the change list to apply.
Optional Parameters
The following table describes the optional parameters:
Parameter Description
RollBackStrategy If set to FULL_ROLLBACK: No changes are applied if an error occurs during the change list process.
The default is FULL_ROLLBACK.
If set to ROLLBACK_TO_LAST_CHANGE: Only the change list item that failed is rolled back. All other
changes are applied.
Response Field
The following table describes the response fields:
Field Description
AssignUnmergedRecords
AssignUnmergedRecords assigns records in the unmerged state to the specified user. It assigns no more than the
requested number of records. Optionally, you can specify a WHERE clause to select Unmerged records from the
package. The Unmerged state is equivalent to setting the consolidation indicator to 2 and can also be referred to as
the “ready to merge” state. Records are placed into the Unmerged state regardless of whether they matched other
records or not. This request is used to assign the records that are in the Unmerged state to a specified user for review
and processing. However, any records that are already assigned to a user will not be reassigned by this API.
Note: Hub Implementers can setup user exits that control how records are assigned. These user exits are invoked
when this API is run and will override the standard logic for assignment of records. For information regarding user
exits, see Informatica MDM Hub Configuration Guide .
¨ Assigning unmerged records to a user—You can use the AssignUnmergedRecords request in an application
with a custom UI for the data stewards. In the screen that manages the data steward’s queues, you might create a
button that uses this request to assign unmerged records.
Audit
Audit adds an entry to the C_REPOS_AUDIT table to record information about some activity involving a record stored
in Informatica MDM Hub. You can log similar information about information in your own application programs.
Set the attributes of the new entry (for example, component, action, status, context). Then process the request to add
the entry to the audit table. The process method returns an AuditResponse, which contains the rowid of the resulting
audit record.
To use this facility, store the name of a project or similar large entity in component, and let action be an element of the
component. For example, component might be “SIF API” and action might be AuditRequest.
You can set the audit rowid of the last previous related audit entry. In this way you can build a chain of audit entries.
You obtain the rowid of an audit entry from the AuditResponse that comes back when you process an
AuditRequest.
Use the status field to convey information useful for determining what to do with the audit record. For example, status
values might be debug, info, warn, error, and fatal.
Use the contextXML and dataXML to add XML-formatted additional information to the audit entry.
Note: You can not configure Audit API requests to audit requests made by external applications. For more
information, refer to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the Audit request:
¨ Adding auditing information to the log—You can use the audit request in an application to record auditing
information in the log for reporting or compliance purposes.
Usage Example
// For example, if this is in a Servlet that receives an XML
// to update multiple Hub packages.
// Now decompose the request data and call other SIF API's ...
Authenticate
Authenticate allows you to determine a user’s rights to access an ORS. If the user has the right to access the ORS, the
message in the response object is STATUS_GRANTED. Otherwise it is STATUS_DENIED. The response contains a
list of the roles assigned to the user and information about the user’s password—if and when it expires and whether it
is externally authenticated using a service such as LDAP.
Use Case
This is the common scenario for using the authenticate request:
¨ Determine a user’s access rights to an ORS—Before using a request that requires specific access privileges,
you can use authenticate to determine if the user possesses the required rights.
CanUnmergeRecords
CanUnmergeRecords determines whether or not specified records can be unmerged from the consolidated base
object. The request contains a package and a key identifying the XREF to unmerge. The response contains a boolean
value that is true if the records can be unmerged, false if they cannot.
Cross reference records can be added to a base object record either by consolidating two base object records or by
adding them directly using the ROWID_OBJECT of a base object record. If a cross reference is added using the
ROWID_OBJECT and no PKEY_SOURCE_OBJECT, and there is not already a cross reference for that base object
record for the specified system, a new cross reference record is added that is considered an “edit” cross reference.
An unmerge is not allowed if the specified cross reference is not an edit cross reference and all the other cross
references for that base object are edit cross references. If there are at least two cross references that are not edit
cross references, the cross reference can be unmerged.
Note: You can configure CanUnmergeRecords requests according to a specific system when using the Hub Console
Audit Manager to audit requests made by external applications. Once auditing for a particular SIF API request is
enabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For more
information, refer to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the CanUnmergeRecords request:
¨ Determining whether a given record can be unmerged—You can use the CanUnmergeRecords request in an
application with a custom UI for the data stewards to determine whether two records can be unmerged before
attempting to do so.
CleanTable
CleanTable removes all of the data from an Operational Reference Store table and all its companion tables.
Request Parameters
The CleanTable request contains the following parameters:
CleanStaging
If true, the CleanTable API removes data from rows in the staging tables and the dependent tables <staging
table>_CL, <staging table>_DLT, <staging table>_RAW, <staging table>_REJ, <staging table>_OPL, and
<staging table>_PRL.
If false, the CleanTable API does not remove data from rows in the staging tables and the dependent tables.
UseTruncate
If true, uses the faster TRUNCATE statement. If false, uses the slower Delete statement. The default is false.
Optional.
In Oracle distributed transaction environments, the TRUNCATE statement commits transactions that might
cause errors.
Response Fields
The CleanTable API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
Usage Example
The following code sample uses the TRUNCATE statement to remove data from the base object C_PARTY and the
associated staging table:
CleanTableRequest request = new CleanTableRequest();
request.setSiperianObjectUid("BASE_OBJECT.C_PARTY");
request.isCleanStaging(true);
request.isUseTruncate(true);
CleanTableResponse response = (CleanTableResponse)sipClient.process(request);
Cleanse
Cleanse invokes a cleanse function defined in Informatica MDM Hub. The request specifies the record and the
cleanse function. The response contains a record containing the cleansed data.
Available cleanse functions can be viewed in the Hub Console in the Cleanse Function Manager. Additionally, you can
use the ListSiperianObject request to retrieve the list of available cleanse functions. Cleanse function details,
including parameters, can be retrieved using the DescribeSiperianObject request.
You can specify the name of the cleanse function to use in a Cleanse request in two ways:
For example, in order to use the Concatenate cleanse function that resides in the String Functions cleanse library, the
cleanse function would be identified as either “CLEANSE_FUNCTION.String Functions|Concatenate” or “String
Functions|Concatenate”.
Mappings defined in the Hub may also be accessed and used as cleanse functions. Mappings are automatically
placed in the “Mappings” library and can be accessed using the UID “CLEANSE_FUNCTION.Mappings|[mapping
name]”.
Use Cases
These are the common scenarios for using the cleanse request:
¨ Data cleansing for external applications — An external application can use the cleanse request independently
of the Informatica MDM Hub master record functionality. External applications can invoke cleanse to interface with
data quality facilities provided by Informatica to process input data.
¨ Address verification for external applications — Informatica MDM Hub provides the functionality to validate
and standardize addresses. These facilities can be used by external applications to improve the quality of the
address data that is entered into them.
¨ Cleanse used in combination with put — The most common use of the cleanse request is to cleanse an
individual field before the record is passed to the put request.
¨ Cleanse used in combination with match — The match request provides access to the matching rules and
allows you to search Informatica MDM Hub for records that contain values that are similar, but not necessarily
identical to the search criteria. To improve the quality of matches returned, you can cleanse the search criteria
before passing them to the match request.
CleansePut
CleansePut cleanses the specified record and updates or inserts the record into the specified table in a single
request. CleansePut replicates the Stage and Load batch processes that move data from the landing table, through
the cleansing process, into the staging table, and into the base object. CleansePut can also perform the lookups
required to translate source system foreign keys into Hub foreign keys. The physical landing and staging tables are
not used by CleansePut.
The record is put into the base object based on a mapping, which defines the transformation of data from a landing
table structure to a staging table structure. The staging table associated with the mapping determines which base
object the resulting data is inserted or updated in.
You can configure CleansePut requests in all systems when using the Hub Console Audit Manager to audit requests
made by external applications. Once auditing for a particular SIF API request is enabled, Informatica MDM Hub
captures each SIF request invocation and response in the audit log. For more information, refer to the Informatica
MDM Hub Configuration Guide .
Filtered Requests
A CleansePut request can be filtered so that no changes are made in the ORS. If CleansePut is filtered, an
ActionType of No Action is returned in the CleansePut response. CleansePut can be filtered in two ways:
¨ Filtered by the mapping. The mapping can include a condition that must be true before allowing CleansePut to
process a record.
¨ Filtered by delta detection. In the Hub, you can enable delta detection on the staging table. With delta detection
enabled, CleansePut requests are filtered if the data does not differ from the data in the previous request.
State Management
If a package has state management enabled, you can specify a record's initial state when you insert a record by
setting the value of HUB_STATE_IND. When you insert a new record and do not specify a HUB_STATE_IND value,
The possible values for HUB_STATE_IND and the state these values represent are outlined in the following table:
1 ACTIVE
0 PENDING
-1 DELETED
Transaction Support
When executed within an EJB context, this request can be part of a transaction with other requests. If there is a failure
in any of the requests within a transaction, the entire transaction is rolled back.
Restrictions
Consider the following restrictions when using the CleansePut API.
¨ Special characters do not need to be escaped before making the CleansePut API call. However, if you have
custom code that used escaped special characters in the past, you must update your custom code to remove the
escaped special characters.
¨ Both Put and CleansePut requests process null values. For example, when no value is specified for a field, the
field is set to null. However, CleansePut does not process records that contain a reference not found in a lookup
table.
¨ You cannot insert a null value into a nonnullable column, such as a unique key column. You must provide a value
for nonnullable columns because empty fields are set to null.
¨ You cannot use CleansePut to insert or update a read-only column.
¨ You cannot use CleansePut to insert or update a system column unless it is enabled in the Hub to be Putable. See
the Column Properties in the Informatica MDM Hub Configuration Guide for information about which system
columns can be putable.
¨ You can specify a value for HUB_STATE_IND when inserting a new record, but you cannot change the state of an
existing record by changing the HUB_STATE_IND value using the Put API. If you provide a value for the
HUB_STATE_IND column when updating a record, the Put API throws an exception. To change the state of a
record, refer to the following classes: “Delete” on page 65, “Restore” on page 117, and
“PromotePendingXrefs” on page 107.
¨ If you use special characters like ' and ~ in CleansePut calls, you must escape them with a backslash character.
¨ If the foreign key column for a child base object is not specified or is specified as NULL in the CleansePut request,
the lookup is on the parent key of the foreign key column instead of the lookup column defined on the staging
table.
Parameter Description
Optional Parameters
The following table lists and describes the optional parameters that are used by the CleansePut API:
Parameter Description
Field Description
ActionType Indicates the action that the Put performed. The possible
values are:
- Insert
- Update
- Update XREF
- No Action
Tokenize requires the value of ActionType. Insert
indicates that a record has not yet been tokenized and new
tokens need to be created. Update and Update XREF
indicate that a record has already been tokenized and the
existing tokens need to be regenerated.
Use Case
The following is a typical scenario for using the CleansePut request:
¨ Cleanse a record and update or insert it in the specified table. You can cleanse a specified record and update or
insert it in the specified table in a single request. This increases performance, when compared to doing the a
Cleanse and then a Put, by reducing round trips between the client and Informatica MDM Hub.
¨ CleansePut used in combination with Tokenize. CleansePut, followed by Tokenize, cleanses the new row of
data, inserts or updates it in the base object, and then encodes the base object so it is ready for matching. The
CleansePut response contains an ActionType value used as an input to the Tokenize request. CleansePut and
Tokenize can occur in the same transaction.
Usage Example
The following example shows how a record with ROWID_OBJECT key 782 is updated by using the mapping, Stage
CRM Address:
CleansePutRequest request = new CleansePutRequest();Record record = new Record();
record.setSiperianObjectUid("MAPPING.Stage CRM Address");
record.setField( new Field("ADDRESS_ID", "782") );
record.setField( new Field("ADDRESS_LINE", "123 Main St.") );
record.setField( new Field("CITY_NAME", "Anytown") );
record.setField( new Field("LAST_UPDATE_DATE", new Date()) );
request.setRecord( record );
CleansePutResponse response = (CleansePutResponse) sipClient.process(request)
Note: There are no parameters for this request. All the unmerged records assigned to this user making the request
will now be available to be assigned to another user. If there is a specific user that the records should be assigned to
the ReassignRecordsRequest should be used.
Use Case
This is the common scenario for using the ClearAssignedUnmergedRecords request:
¨ Clearing the queue of unmerged records to a given user—You can use the ClearAssignedUnmergedRecords
request in an application with a custom UI for the data stewards. In the screen that manages the data steward’s
queues, you might create a button that uses this request to remove unmerged records from a user’s queue.
CreateChangeList
CreateChangeList creates a change list in XML format for the current ORS. The change list contains a list of actions
and a list of any messages.
Parameter Description
SourceRepositoryId Specifies the database ID of the source repository to use for comparison.
SourceRepositoryXml Specifies the XML string representing the source repository. Contains NULL if the source
repository is a physical database.
TransactionAttributeType If set to NOT_SUPPORTED, the request does not support a transactional context.
If set to REQUIRED, the request does requires a transactional context.
If set to REQUIRES_NEW, the request requires a new transactional context.
If set to SUPPORTS, the request supports but does not require a transactional context.
Response Fields
The CreateChangeList response contains the information described in the following table:
Field Description
CreateTask
The CreateTask API creates a new task in the C_REPOS_TASK_ASSIGNMENT table and initializes the task data
and task properties. Once a task is created, use the UpdateTask API to modify the task.
Parameter Description
TaskData This parameter specifies the task to create. See “About TaskData” on page 19.
If an owner is not specified in the TaskData parameter, the task assignment engine will attempt to assign the
task at its next scheduled execution time.
Response Fields
The CreateTask response contains the information described in the following table:
Parameter Description
interactionID Contains the interactionID that is used to protect any pending records associated with the task. Only SIF
requests having this same interactionID can update the task.
The interactionID can be set either at the request level or in the TaskData object. If an interactionID is set in
both places and the IDs do not match, an SiperianServerException will be thrown.
Use Cases
The following scenario is a common use case for using the CreateTask request:
Usage Example
The code in the following example creates a new task:
CreateTaskRequest request = new CreateTaskRequest();
TaskData newTask = new TaskData();
request.setTaskData(newTask);
newTask.setTitle("Research and resolve item");
newTask.setComment("This is a new task.");
newTask.setDueDate(new Date());
newTask.setSubjectAreaUid("SUBJECT_AREA.test|Person");
newTask.setTaskType("ReviewNoApprove");
CreateTaskResponse response = (CreateTaskResponse) sipClient.process(request);
Delete
Delete removes the specified record(s) from the Hub. If the deleteBORecord flag is specified then the BO record is
deleted even if only a sourceKey and systemName are specified.
Required Parameters
The following table lists and describes the parameters that are required by the Delete API:
Parameter Description
SystemName Name of the system for which the record must be deleted.
Optional Parameters
The following table lists and describes the optional parameters that are used by the Delete API:
Parameter Description
deleteBORecord If true, the record is deleted at the base object level. The
Delete API deletes the base object record and all its cross-
reference records. You must have delete privileges for the
base object or the parent base object.
If false, the Delete API deletes the record specified by the
RecordKey and SourceKey parameters.
deleteAsSMOS If true, the hub state of the record is set to deleted by the
state management override system, and this takes
precedence over active records from other source systems.
Default is false.
Use Case
Record A has two XREFs that are ACTIVE. If one of the XREFs is deleted, then record A will have one ACTIVE xref
and one DELETED XREF. Since the ACTIVE state has higher precedence than the DELETED state, the state of BO
record A after the delete operation is ACTIVE. If the remaining ACTIVE XREF is then deleted, record A will have two
deleted XREFs and the state of BO record A will be DELETED.
Usage Example
The following example deletes the XREF record with sourceKey=1234 and system=CRM from the package
CUSTOMER_UPDATE. If the XREF record is PENDING, it will be hard deleted. If the XREF record is ACTIVE, it will
be soft deleted. If the record is already in the DELETED state, the record will remain as is.
DeleteRelationship
DeleteRelationship deletes a relationship between two entities. This request does not remove the record from the
relationship table. If the relationship is a foreign key relationship rather than a record in a relationship table, the
request sets the foreign key value to null.
This request behaves differently when used with Foreign Key Relationship Types. Since all Relationship records of a
Foreign Key Relationship Type use the same End Date, instead of setting the End Date this request sets the foreign
key value in the FK Relationship Base Object to null.
The request provides the Hierarchy Manager configuration, the record key, and the relationship type of the
relationship to be removed.
Note: This request requires Hierarchy Manager. If you have not purchased, installed, configured Hierarchy Manager,
then this request fails.
Required Parameters
The following table lists and describes the parameters that are required by the DeleteRelationship API:
Parameter Description
Optional Parameters
The following table lists and describes the optional parameter that is used by the DeleteRelationship API:
Parameter Description
¨ Delete a relationship between two HM entities — If you have Hierarchy Manager and have populated it with
data, you can use the DeleteRelationship request to delete an existing relationship between two entities.
DescribeSiperianObject
The DescribeSiperianObject API returns the metadata for the Informatica MDM Hub objects specified in the
request.
Required Parameter
The following table describes the parameter required for the DescribeSiperianObject request.
Parameter Description
objectUid Each object defined in Informatica MDM Hub has a unique identifier of the form
<objectType>.<objectName>, for example, PACKAGE.CUSTOMER_READ. ObjectUid specifies which
object's metadata is returned in the DescribeSiperianObjects response.
Use the objectUid MATCH_KEY.<base_object_name> to request the match key of a base object.
For a list of valid object types, see “About SiperianObjectUID” on page 17.
Response Parameters
The following table describes the information contained in the DescribeSiperianObject response.
objects List A list of returned metadata for the objects specified in the request.
If you request a match key for a base object, DescribeSiperianObject returns the match column that represents the
base object, in addition to the following fields:
fuzzyColumn Boolean The value is true if the match column is a fuzzy column.
columns List The list of UIDs for the columns that make up this match column. UIDs are formed as
COLUMN.<base_object_name>|<column_name>.
Use Case
The following scenario is a common use for the DescribeSiperianObject request:
¨ Obtaining metadata about an object before manipulating it. You can use the DescribeSiperianObject request to
gather information about an object before you perform any operations on it.
ExecuteBatchAutoMatchAndMerge
ExecuteBatchAutoMatchAndMerge calls the Auto Match and Merge batch job.
Request Parameters
The ExecuteBatchAutoMatchAndMerge request contains the following parameters:
TableName
Specifies the base object table name. Required.
MatchSetName
Specifies the name of the match rule set for the batch job. Default is null. Optional.
Response Fields
The ExecuteBatchAutoMatchAndMerge API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Auto Match and Merge batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchAutoMatchAndMergeRequest req = new ExecuteBatchAutoMatchAndMergeRequest();
req.setTableName(jobContext.getTableName()); // BO table name
req.setMatchSetName(jobContext.getMatchSetName());
ExecuteBatchAutoMatchAndMergeResponse executed = (ExecuteBatchAutoMatchAndMergeResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchAutomerge
ExecuteBatchAutomerge calls the Automerge batch job.
Request Parameters
The ExecuteBatchAutomerge request contains the following parameters:
Response Fields
The ExecuteBatchAutomerge API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Automerge batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchAutomergeRequest req = new ExecuteBatchAutomergeRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchAutomergeResponse executed = (ExecuteBatchAutomergeResponse) sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchBVTSnapshot
ExecuteBatchBVTSnapshot calls the BVT Snapshot batch job.
Request Parameters
The ExecuteBatchBVTSnapshot request contains the following parameters:
TableName
Specifies the base object table name. Required.
Response Fields
The ExecuteBatchBVTSnapshot API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the BVT Snapshot batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchBVTSnapshotRequest req = new ExecuteBatchBVTSnapshotRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchBVTSnapshotResponse executed = (ExecuteBatchBVTSnapshotResponse)
sipClient.process( req );
ExecuteBatchExternalMatch
ExecuteBatchExternalMatch calls the External Match batch job.
Request Parameters
The ExecuteBatchExternalMatch request contains the following parameters:
TableName
Specifies the base object table name. Required.
MatchSetName
Specifies the name of the match rule set for the batch job. Default is null. Optional.
Response Fields
The ExecuteBatchExternalMatch API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the External Match batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new
File( context.getTestPTTStartDir() + "siperian-client.properties" ) );
ExecuteBatchExternalMatchRequest req = new ExecuteBatchExternalMatchRequest();
req.setTableName(jobContext.getTableName()); // BO table name
req.setMatchSetName(jobContext.getMatchSetName());
ExecuteBatchExternalMatchResponse executed = (ExecuteBatchExternalMatchResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchGenerateMatchTokens
ExecuteBatchGenerateMatchTokens calls the Generate Match Tokens batch job.
Request Parameters
The ExecuteBatchGenerateMatchTokens request contains the following parameters:
TableName
Specifies the base object table name. Required.
FullRestripInd
If the value is 1, the batch job tokenizes all records in the base object.
If the value is 0, the batch job tokenizes the new records and updated records in the base object with a
DIRTY_IND value of 1.
Response Fields
The ExecuteBatchGenerateMatchTokens API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Generate Match Tokens batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchGenerateMatchTokensRequest req = new ExecuteBatchGenerateMatchTokensRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchGenerateMatchTokensResponse executed = (ExecuteBatchGenerateMatchTokensResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchGroup
ExecuteBatchGroup executes a batch group. A batch group is a set of batch jobs executed together, some
sequentially and some in parallel according to the configuration. When one job has an error, the group will stop; that is,
no more jobs will be started, but running jobs will run to completion. There are two other related services in this
request:
Use Case
This is the common scenario for using the executeBatchGroup request:
¨ ExecuteBatchGroup with getBatchGroupStatus — After calling ExecuteBatchGroup, wait and then use
“GetBatchGroupStatus” on page 86 to see if the batch group executed successfully.
ExecuteBatchKeyMatch
ExecuteBatchKeyMatch calls the Key Match batch job.
Request Parameters
The ExecuteBatchKeyMatch request contains the following parameter:
TableName
Specifies the base object table name. Required.
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Key Match batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchKeyMatchRequest req = new ExecuteBatchKeyMatchRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchKeyMatchResponse executed = (ExecuteBatchKeyMatchResponse) sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchLoad
ExecuteBatchLoad calls the Load batch job.
Request Parameters
The ExecuteBatchLoad request contains the following parameters:
TableName
Specifies the staging table name. Required.
ForceUpdateInd
If the value is 0, Informatica MDM Hub only loads data that has a more recent late updated date than the data in
the hub.
If the value is 1, Informatica MDM Hub loads the data regardless of the last updated date.
Default is 0. Optional.
Response Fields
The ExecuteBatchLoad API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
ExecuteBatchMatch
ExecuteBatchMatch calls the Match batch job.
Request Parameters
The ExecuteBatchMatchAnalyze request contains the following parameters:
TableName
Specifies the base object table name. Required.
MatchSetName
Specifies the name of the match rule set for the batch job. Default is null. Optional.
Response Fields
The ExecuteBatchMatchAnalyze API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Match batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchMatchRequest req = new ExecuteBatchMatchRequest();
req.setTableName(jobContext.getTableName()); // BO table name
req.setMatchSetName(jobContext.getMatchSetName());
while(rc==0) {
ExecuteBatchMatchResponse executed = (ExecuteBatchMatchResponse) sipClient.process( req );
errMessage = executed.getMessage();
rc = executed.getRetCode();
completeStep((rc == -21014) ? 0 : rc, errMessage, context, jobContext);
}
if(rc == -21014) {
// SIP-21014: Error registering start of Match failed during post to Cleanse Server: Base Object
C_CUSTOMER is empty or no more records to match
// Regard it as normal completion so that test could continue the left jobs
rc = 0;
}
Request Parameters
The ExecuteBatchMatchAnalyze request contains the following parameters:
TableName
Specifies the base object table name. Required.
MatchSetName
Specifies the name of the match rule set for the batch job. Default is null. Optional.
Response Fields
The ExecuteBatchMatchAnalyze API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Match batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchMatchRequest req = new ExecuteBatchMatchRequest();
req.setTableName(jobContext.getTableName()); // BO table name
req.setMatchSetName(jobContext.getMatchSetName());
while(rc==0) {
ExecuteBatchMatchResponse executed = (ExecuteBatchMatchResponse) sipClient.process( req );
errMessage = executed.getMessage();
rc = executed.getRetCode();
completeStep((rc == -21014) ? 0 : rc, errMessage, context, jobContext);
}
if(rc == -21014) {
// SIP-21014: Error registering start of Match failed during post to Cleanse Server: Base Object
C_CUSTOMER is empty or no more records to match
// Regard it as normal completion so that test could continue the left jobs
rc = 0;
}
ExecuteBatchPromote
ExecuteBatchPromote calls the Promote batch job.
Request Parameters
The ExecuteBatchPromote request contains the following parameters:
TableName
Specifies the base object table name. Required.
XrefListToBePromoted
Specifies which ROWID_XREFs have to be promoted. Default is null. Optional.
Response Fields
The ExecuteBatchPromote API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Promote batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchPromoteRequest req = new ExecuteBatchPromoteRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchPromoteResponse executed = (ExecuteBatchPromoteResponse) sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchRecalculateBo
ExecuteBatchRecalculateBo calls the Recalculate BO batch job.
Request Parameters
The ExecuteBatchRecalculateBo request contains the following parameters:
TableName
Specifies the base object table name. Required.
RowidObjectTable
Specifies the name of a table or a view that contains the row ID values in the ROWID_OBJECT column.
Optional.
Response Fields
The ExecuteBatchRecalculateBo API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
ExecuteBatchRecalculateBvt
ExecuteBatchRecalculateBvt calls the Recalculate BVT batch job.
Request Parameters
The ExecuteBatchRecalculateBvt request contains the following parameters:
TableName
Specifies the base object table name. Required.
RowidObject
Specifies the rowidObject. Required.
Response Fields
The ExecuteBatchRecalculateBvt API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Recalculate BVT batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchRecalculateBvtRequest req = new ExecuteBatchRecalculateBvtRequest();
req.setTableName(jobContext.getTableName()); // BO table name
req.setRowidObject(jobContext.getRowidObject()); // rowidObject
ExecuteBatchRecalculateBvtResponse executed = (ExecuteBatchRecalculateBvtResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchResetMatchTable
ExecuteBatchResetMatchTable calls the Reset Match Table batch job.
TableName
Specifies the base object table name. Required.
Response Fields
The ExecuteBatchResetMatchTable API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Reset Match Table batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchResetMatchTableRequest req = new ExecuteBatchResetMatchTableRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchResetMatchTableResponse executed = (ExecuteBatchResetMatchTableResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchRevalidate
ExecuteBatchRevalidate calls the Revalidate BO batch job.
Request Parameters
The ExecuteBatchRevalidate request contains the following parameters:
TableName
Specifies the base object table name. Required.
OnlyCmDirtyInd
Apply only for CM_DIRTY_IND = 1. Default is false. Optional.
RecalcBvtInd
Recalculate BVT. Default is false. Optional.
Response Fields
The ExecuteBatchRevalidate API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
Usage Example
The following example runs the Revalidate BO batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchRevalidateRequest req = new ExecuteBatchRevalidateRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchRevalidateResponse executed = (ExecuteBatchRevalidateResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchStage
ExecuteBatchStage calls the Staging batch job.
Request Parameters
The ExecuteBatchStage request contains the following parameters:
TableName
Specifies the staging table name. Required.
Response Fields
The ExecuteBatchStage API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Staging batch job on a staging table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchStageRequest req = new ExecuteBatchStageRequest();
req.setTableName(jobContext.getTableName()); // STG table name
ExecuteBatchStageResponse executed = (ExecuteBatchStageResponse) sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchSynchronize
ExecuteBatchSynchronize calls the Synchronize batch job.
Request Parameters
The ExecuteBatchSynchronize request contains the following parameters:
TableName
Specifies the base object table name. Required.
Response Fields
The ExecuteBatchSynchronize API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following example runs the Synchronize batch job on a base object table:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
ExecuteBatchSynchronizeRequest req = new ExecuteBatchSynchronizeRequest();
req.setTableName(jobContext.getTableName()); // BO table name
ExecuteBatchSynchronizeResponse executed = (ExecuteBatchSynchronizeResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
ExecuteBatchValidateFKRelationships
ExecuteBatchValidateFKRelationships calls the Validate Foreign Key Relationships batch job.
Request Parameters
The ExecuteBatchValidateFKRelationships request contains the following parameters:
TableName
Specifies the base object table name. Required.
ListRowidColumn
CascadeValidateInd
Validates child foreign key relationships. Default is false. Optional.
Response Fields
The ExecuteBatchValidateFKRelationships API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
FlagForAutomerge
The FlagForAutomerge API flags a record for automerge in the match table, C_<base_object_name>_MTCH. If a
record in the match table has a AUTOMERGE_IND value of 1, the record is merged during the next automerge process. If
the FlagForAutomerge request is for a record that does not exist in the match table, the record is created in the match
table and the AUTOMERGE_IND is set to 1.
Required Parameters
The following table describes the required parameters:
Parameter Description
MatchRuleUid Specifies the match rule that the merged records are attributed to.
The match rule UID needs to be specified in the following format:
MATCH_RULE.<TABLE_NAME>|<MATCH_RULESET_NAME>|<MATCH_RULE_NUMBER>
Optional Parameters
The FlagForAutomerge request does not have optional parameters.
Response Fields
The following table describes the response fields:
Parameter Description
Message Contains a message indicating if the FlagForAutomerge request was processed successfully.
Usage Example
The following is a typical scenario for using the FlagForAutoMerge request:
¨ Queue a merge candidate for merge during the next automerge process.
GenerateConstraints
The GenerateConstraints API generates missing constraints for a table. Use the GenerateConstraints API to create
indexes after you use the RegisterCustomIndex to register an index that does not physically exist.
Request Parameters
The GenerateConstraints request contains the following parameters:
TableName
Specifies the base object table name. Required.
Scope
Specifies the scope of the constraints of the request. Required. Scope can be one of the following values:
AbortOnFail
If true, specifies that the job stops when it fails. Required.
SetFkDisabled
If true, sets the foreign keys to disabled. Required.
Analyze
Required.
Response Fields
The GenerateConstraints API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Get
Get uses a record key to retrieve a single row of data from the specified package. The row can include data from base
objects and from child records (that is, content metadata such as History, Xref, Xref History, and Raw) associated with
the base object. You can use this request against the regular MRM packages (“PACKAGE.” SiperianObjectUid
prefix).
You can also get lineage and trust information. The trust scores are returned for the package record and the cross
reference records. The lineage information returned as indicator on the trust enabled fields indicating whether the
specific field of the cross-reference record has won over other cross-references and is used on the base object.
When performing a Get request using a ROWID_OBJECT for a base object record that has been merged into another
base object record, Get returns the surviving base object record. For example, if two base object records are merged,
one with a ROWID_OBJECT value of ROWID_A and the other with a value of ROWID_B, the ROWID_OBJECT of the
surviving base object could be ROWID_A. In this scenario, if you perform a Get request for ROWID_B, the Get
response returns ROWID_A.
For MRM packages, you can use this request to retrieve the following types of the content metadata for underlying
primary base object of the package and the trust score and the lineage information for the trust enabled columns:
SiperianObjectType Description
XREF Cross-reference data. If state management is enabled for the parent of the package, then
this option will return only the cross reference records that are in the ACTIVE state.
PENDING_XREF Cross-reference data that is in the PENDING state. This option is only valid when state
management is enabled for the parent of the package. Otherwise, an exception is
thrown.
DELETED_XREF Cross-reference data that is in the DELETED state. This option is only valid when state
management is enabled for the parent of the package. Otherwise, an exception is
thrown.
XREF_HISTORY Previous values for each of the underlying cross references of the specified base
object.
Note: Base object history has to be enabled
RAW Raw records associated with the specific base object record.
Note: Raw retention needs to be enabled on at least one staging table belonging to the
specified base object.
Required Parameters
The following table lists and describes the parameters that are required by the Get API:
Parameter Description
SystemName Name of the system for which XREF and XREF history must
be retrieved.
Optional Parameters
The following table lists and describes the optional parameters that are used by the Get API:
Parameter Description
EffectiveDate The date for which you must retrieve values of the base
object.
Note: EffectiveDate must be used only for timeline-enabled
base objects.
HistoryDate The date for which you must retrieve values of the base
object that are effective at the specified point in time.
Note: HistoryDate must be used only for timeline-enabled
base objects.
Use Case
The following is a common scenario for using the Get request:
¨ Get used to retrieve a row and its associated child records. The most common use of get is to retrieve a single row
of data, with any associated child records.
Usage Example
The following example gets a record with ROWID_OBJECT key 782 from the package
PARTY_ADDRESS_READ_PKG.
GetRequest request = new GetRequest();
RecordKey recordKey = new RecordKey();
recordKey.setRowid("782");
request.setRecordKey(recordKey); //Required
request.setSiperianObjectUID("PACKAGE.PARTY_ADDRESS_READ_PKG"); //Required
GetResponse response = sipClient.process(request);
Parameter Description
AssignableTaskInfoList The task type and subject area UID of a list of tasks.
Response Fields
The following table describes the fields returned by the GetAssignableUsersForTasks response:
Field Description
UserUIDs Contains the UIDs of the users who are permitted to receive the tasks listed in the
GetAssignableUsersForTasks request.
Usage Example
The code in the following example retrieves users who can have Merge tasks in the Person subject area assigned to
them:
GetAssignableUsersForTasksRequest request = new GetAssignableUsersForTasksRequest();
List taskInfoList = new ArrayList();
taskInfoList.add(new AssignableTaskInfo("Merge","SUBJECT_AREA.test|Person"));
request.setAssignableTaskInfoList(taskInfoList);
GetAssignableUsersForTasksResponse response =
(GetAssignableUsersForTasksResponse) sipClient.process(request);
GetAssignedRecords
GetAssignedRecords fetches the current user’s records that were assigned by an “AssignUnmergedRecords” on
page 56 request. Can request records in either the Unmerged or the Onhold state.
The request contains a package, a record state (UNMERGED or ON_HOLD), and a maximum number of records to
return. The response contains a set of records and a token to use to fetch more results. Use “GetSearchResults ” on
page 93 to get subsequent sets of records.
Use Case
This is the common scenario for using the GetAssignedRecords request:
¨ GetAssignedRecords used to retrieve assigned records for display in the user interface of a custom-
designed application—The most common use of GetAssignedRecords is to retrieve the records that are
assigned to a specific user for display in a custom-designed UI.
GetBatchGroupStatus
GetBatchGroupStatus returns the status of a batch group; polls for status after executing asynchronously. To learn
more about batch groups, see the Informatica MDM Hub Configuration Guide .
Note: When making an asynchronous call, the runStatus of 0 (success) means that GetBatchGroupStatus was
successfully placed in the async queue. To see the actual runStatus of the batch group, you can also specify a value in
the jmsReplyTo field when making the call. The SIF response message containing the run status of the batch group
will be returned on this queue. Alternatively, you can also use the Audit Manager in the Hub Console to enable the
audit for “No System: GetBatchGroupStatus” and enable the audit XML. Then, use the GetBatchGroupStatus call
again and then check C_REPOS_AUDIT:DATA_XML for the SIF response. The response will show the batch group’s
“failed” status. For more information regarding the Audit Manager, refer to the Informatica MDM Hub Configuration
Guide .
Use Case
This is the common scenario for using the GetBatchGroupStatus request:
¨ GetBatchGroupStatus with ExecuteBatchGroup — After calling “ExecuteBatchGroup” on page 72, wait and
then use GetBatchGroupStatus to see if the batch group executed successfully.
GetBvt
GetBvt retrieves the best version of truth (BVT) from the specified package using a known key. The specified package
must have a base object (BO) as its parent and the base object must be a link style BO instead of a merge style BO.
This option can be configured in the schema manager of the Hub Console. The BVT is calculated on the set of records
belonging to the same link group as the input record key.
Note: You can configure GetBvt requests in all systems when using the Hub Console Audit Manager to audit requests
made by external applications. Once auditing for a particular SIF API request is enabled, Informatica MDM Hub
captures each SIF request invocation and response in the audit log. For more information, refer to the Informatica
MDM Hub Configuration Guide .
State Management
You can include pending records in the BVT calculation if state management is enabled on the parent base object by
adding setIncludePending(TRUE) to the request. For more information regarding how to enable state management,
refer to Informatica MDM Hub Data Steward Guide or Informatica MDM Hub Configuration Guide .
Parameter Description
RecordKey Key to uniquely identify the record for which BVT must be
retrieved.
Optional Parameters
The following table lists and describes the optional parameters that are used by the GetBVT API:
Parameter Description
EffectiveDate The date for which you must retrieve values of the base
object.
Note: EffectiveDate must be used only for timeline-enabled
base objects.
HistoryDate The date for which you must retrieve values of the base
object that are effective at the specified point in time.
Note: HistoryDate must be used only for timeline-enabled
base objects.
Use Case
The following is a common scenario for using the GetBVT request:
GetBVT used to retrieve the most relevant customer name — A typical use of GetBVT is to retrieve the best
version of truth of a customer's first and last name.
Usage Example
The following example gets the BVT for a record with ROWID_OBJECT key 21 from the package,
ADDRESS_UPDATE_PKG:
GetBvtRequest getBvtRequest = new GetBvtRequest();
getBvtRequest.setSiperianObjectUid(SiperianObjectType.PACKAGE.makeUid("ADDRESS_UPDATE") );
RecordKey recordKey = new RecordKey();
recordKey.setRowid("21");
getBvtRequest.setRecordKey(recordKey);
getBvtRequest.setIncludePending(false);
GetBvtResponse getBvtResponse = sipClient.process (getBvtRequest);
GetEffectivePeriods
The GetEffectivePeriods API retrieves the aggregate effective period for the specified base object record.
Required Parameter
The RecordKey parameter is required to uniquely identify the record for which the aggregate effective period must be
retrieved.
Optional Parameter
The HistoryDate parameter specifies the date for which base object values that are effective at the specified point in
time must be retrieved.
Use Case
The following is a common scenario for using the GetEffectivePeriods request:
Usage Example
The following example gets the effective period for a record with ROWID_OBJECT key 28 from the base object
C_BO:
GetEffectivePeriodsRequest req=new GetEffectivePeriodsRequest();
RecordKey rec=new RecordKey();
rec.setRowid("28");
req.setRecordKey(rec);
req.setSiperianObjectUid("BASE_OBJECT.C_BO");
GetEffectivePeriodsResponse response = (GetEffectivePeriodsResponse)sipClient.process(req);
GetEntityGraph
The GetEntityGraph request fetches a graph of entities and relationships related to a specified set of entities. The
entities and relationships returned can be one or multiple hops away from the entities in the request.
Note: The GetEntityGraph API requires Hierarchy Manager. If you have not purchased, installed, or configured
Hierarchy Manager, then GetEntityGraph will fail.
Required Parameters
The following table describes the required parameters for the GetEntityGraph request.
Parameter Description
Parameter Description
RecordStates Specifies the Hub State Indicator value that the returned
elements must have.
Note: Only use RecordStates if State Management is
enabled for all entity and relationship base objects.
EffectiveDate Specifies that date for which the returned elements must be
in effect.
Note: Only use EffectiveDate for timeline-enabled base
objects.
Response Fields
The following table describes the fields returned by the GetEntityGraph response.
Field Description
EntityInfos Contains additional information about an entity returned by GetEntityGraph. Each entity
returned in the records has a corresponding EntityInfo.
ListNode If true, the maximum breadth limit was reached for the entity.
If false, the maximum breadth limit was not reached for the entity.
Use Case
This is the common scenario for using the GetEntityGraph request:
¨ Fetch the entities and relationships associated with a specific HM entity or entities — If you have Hierarchy
Manager and have populated it with data, you can use GetEntityGraph to get the entities and relationships
associated with one or more entities.
request.setEntityKeys(keys);
request.setEntityGraphFilter(filter);
GetEntityGraphResponse response =
(GetEntityGraphResponse) sipClient.process(request);
GetLookupValue
GetLookupValue enables an application program to obtain the display value corresponding to a key value for the
specified object columns. This API is used to retrieve the user friendly descriptions for specific code values when a
package contains only the code value and the developer needs to display the user friendly description of the code in
the user interface. This request is also useful when displaying an individual record.
The request contains a list of LookupFields. Each LookupField contains an identifier for the column and a foreign key
value.
The response contains a record that has a field for each LookupField. The order of the fields matches the order of the
LookupFields in the request. In each field, the name is the lookup (foreign key) value and the value is the lookup
display name.
This request is intended to be used together with the “GetLookupValues” on page 91 and “SearchLookupValues” on
page 119 requests. The difference between these APIs is that the GetLookupValue API retrieves descriptions only for
the specified code values, while the GetLookupValuesRequest and the SearchLookupValuesRequest return the list of
valid lookup code values and lookup code descriptions for the specified lookup column.
Use Case
This is the common scenario for using the GetLookupValue request:
¨ Fetch the valid values for a particular field and display them in a UI—In a custom UI, you can use
GetLookupValue to fetch a list of valid values for a field. You can then display these values as a set of selections for
the user.
This request can be used on any foreign key column. A foreign key to a lookup table has a limited set of values. Other
foreign keys can have large numbers of possible values. This request is intended and most useful for lookup tables,
when you want to display the list of acceptable values to a user.
The response contains a record for each column that has fields with the lookup information. In each field, the name is
the lookup (foreign key) value and the value is the lookup display name.
Use Case
This is the common scenario for using the GetLookupValues request:
¨ Fetch the valid values for a set of fields and display them in a UI—In a custom UI, you can use
getLookupValues to fetch a list of valid values for a set of fields. You can then display these values as a set of
selections for the user.
GetMatchedRecords
GetMatchedRecords returns records that are candidates to match a specified record.
The request contains a package and a record. The response contains a collection of potentially matching records from
the specified package.
Note: You can configure GetMatchedRecords requests in all systems when using the Hub Console Audit Manager to
audit requests made by external applications. Once auditing for a particular SIF API request is enabled, Informatica
MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer to the
Informatica MDM Hub Configuration Guide .
State Management
If Hub state is specified in the request (see setRecordStates(ArrayList)), the parent Base Object of the specified
package must have state management enabled. For more information regarding how to enable state management,
refer to Informatica MDM Hub Data Steward Guide or Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the GetMatchedRecords request:
¨ Fetch the match candidates for a specified record, display them in a UI, and use the merge request to
merge the match candidate the user selects—After using GetMatchedRecords to retrieve candidate matches
for a record, you can display the results in a UI for a user. The user can then select a candidate. Use merge to
merge the two records.
GetMergeHistory
GetMergeHistory returns a tree representing the merge history for a specified base object record. The root node of the
tree is the surviving rowid. The child nodes represent the records that have been merged into the surviving record.
Each node contains the rowid and merge date of the record.
Note: You can configure GetMergeHistory requests according to a specific system when using the Hub Console Audit
Manager to audit requests made by external applications. Once auditing for a particular SIF API request is enabled,
Informatica MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer
to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the GetMergeHistory request:
¨ Fetch the list of merges from which the current record was formed—get the list of merges, the product of
whose cumulative changes have resulted in this record.
GetOneHop
GetOneHop Hierarchy Manager request fetches information about the entities directly related to a specified group of
entities in a specified HM configuration.
The request contains the HM configuration, a list of entity keys, and filtering criteria. The response contains lists of
entity records and relationships, and a search token to use in fetching additional information.
In the case of timeline-enabled entities, the request must include the EffectiveDate parameter value.
Note: This request requires Hierarchy Manager. If you have not purchased, installed, configured Hierarchy Manager,
then this request fails.
Use Case
This is the common scenario for using the GetOneHop request:
¨ Fetch one level of entities and relationships associated with a specific HM entity or entities — If you have
Hierarchy Manager and have populated it with data, you can use GetOneHop to get a single level of the entities
and relationships associated with one or more entities.
GetOrsList
GetOrsList retrieves a list of the Operational Record Stores (ORS) registered in the master database.
Required Parameters
The GetOrsList request does not have any required parameters. The ORS ID is not required because this API
request operates on the master database.
Response Fields
The GetOrsList response can contain the information described in the following table:
Field Description
MetaDataOrs Contains the display name, the physical name, and the ID of the ORS. Each ORS in the list is represented by
a MetaDataOrs object.
¨ Retrieve the list of ORS databases to display them for selection in a custom client application.
¨ Retrieve the ORS ID to use as an input using MetaDataOrs.getOrsId() in subsequent calls where the ORS ID is
required but is not hard-coded.
GetOrsMetadata
GetOrsMetadata retrieves the metadata for the current repository. In order to successfully export the repository, your
ORS must be in a valid state. The GetOrsMetadata request provides the same functionality as the Export tool in the
MDM Hub Console. For more information about the Export tool, see the Informatica MDM Multidomain Edition
Repository Manager Guide.
Required Parameters
The GetOrsMetadata API does not have any required parameters.
Optional Parameters
The GetOrsMetadata API does not have any optional parameters.
Response Fields
The GetOrsMetadata response contains the information described in the following table:
Field Description
Usage Example
The examples shows how to use the GetOrsMetadata API to retrieve metadata:
GetOrsMetadataRequest request = new GetOrsMetadataRequest ();
GetOrsMetadataResponse response = (GetOrsMetadataResponse) sipClient.process(request);
GetSearchResults
GetSearchResults retrieves additional pages of records for any API with paging enabled. The APIs that support
paging are:
¨ GetAssignedRecords
Use the SortCriteria parameter when using the preceding APIs to ensure the records are not returned in a random
order. When the DisablePaging parameter for the preceding APIs is set to the default of false, a search token is
returned.
You must use the search token within a limited period of time after you receive it. The default time limit for search token
validity is 15 minutes. To learn more about changing this limit, contact Informatica Global Customer Support.
Required Parameters
The following table lists and describes the parameters that are required by the GetSearchResults request:
Parameter Description
FirstRecord The index of the first record to return. This parameter is useful for returning subsequent pages of
results. For example, if RecordsToReturn=20 and FirstRecord=41, the third page of results is returned
(records 41 to 60).
GetSearchResults returns an error if the value of FirstRecord is 0, a negative value, or greater
than the number of records returned by the original search query.
Optional Parameters
The GetSearchResults request does not have optional parameters.
Response Fields
The GetSearchResults response contains an array list of the records specified by the required parameters.
Use Case
This is the common scenario for using the GetSearchResults request:
¨ Fetch the next page of a set of records returned from a request that returns multiple pages. After using any request
that returns the first of multiple pages of a set of records, you can use getSearchResults repeatedly to get the
subsequent pages.
GetSiperianObjectCompatibility
GetSiperianObjectCompatibility obtains a checksum that represents the definition of the specified object in
Informatica MDM Hub. This is used with ORS-specific APIs.
This API can be used to determine if an object on the server is compatible with a class in the client library for an ORS
specific PACKAGE, MAPPING, or CLEANSE_FUNCTION. ORS specific APIs and objects are generated in the Hub
Console’s SIF Manager. This request should be used to determine if an objects definition on the server has changed
since the last time ORS specific objects were generated. To resolve an incompatibility between a client object and its
server counterpart is to regenerate the ORS specific objects. For more information on generating ORS specific
objects, see the Informatica MDM Hub Data Steward Guide.
Use Case
This is the common scenario for using the GetSiperianObjectCompatibility request:
¨ Fetch the checksum for an object to use when using ORS-specific APIs—If you are using ORS-specific APIs,
you can use GetSiperianObjectCompatibility.
GetSystemTrustSettings
GetSystemTrustSettings fetches the system-specific trust settings for the specified columns.
The request contains a list of columns and a system. The response contains a list of trust setting objects in the same
order as the list of columns.
Use Case
This is the common scenario for using the getSystemTrustSettings request:
GetTaskLineage
The GetTaskLineage API retrieves the following information, depending on the request parameter settings:
Parameter Value
TaskID The TaskID parameter identifies the task. See “About TaskData” on page 19.
TaskPosition If TaskPosition=USER, the response returns the task assigned to the specified user.
If TaskPosition=WORKFLOW, the response returns the task that is currently active in the workflow
process.
The following table describes the parameter values necessary to get the tasks completed by a specified user:
Parameter Value
TaskID NULL
WorkflowStatus ANY
TaskPosition USER
The following table describes the parameter values necessary to get the tasks completed by a specified user that are
part of an active workflow process:
Parameter Value
TaskID NULL
WorkflowStatus OPEN
TaskPosition USER
The following table describes the parameter values necessary to get the tasks completed by a specified user that are
part of a completed workflow process:
Parameter Value
TaskID NULL
WorkflowStatus CLOSED
TaskPosition USER
The following table describes the parameter values necessary to get the open tasks that have a task in their lineage
that is owned by the specified user:
Parameter Value
TaskID NULL
WorkflowStatus OPEN
TaskPosition WORKFLOW
Parameter Value
Response Fields
The following table describes the fields returned in theGetTaskLineage response:
Field Description
GetTasks
The GetTasks API retrieves a lists of tasks and task details. Optional parameters allow you to filter the tasks that
GetTasks returns.
Required Parameters
The GetTasks request does not have required parameters.
Parameter Description
TaskMetadata Contains the filter criteria to apply to tasks for the search.
By default, GetTasks searches for tasks with priority=NORMAL and status=OPEN. To search
for tasks with other priorities or statuses, specify the priority and status in the TaskMetadata
parameter.
OverdueOnly If set to true, GetTasks only returns tasks with due dates that have already passed.
SummaryOnly If set to true, GetTasks only returns the task metadata. The records and comments
associated with the task are not returned.
CanBeAssignedToUser If set to true, GetTasks only returns tasks that can be assigned to the user specified in the
GetTasks request.
BDDApplicationName If set to true, GetTasks only returns tasks for an IDD instance.
Response Fields
The GetTasks response returns a list of tasks that are filtered by the parameters specified in the GetTasks request. If
DisablePaging is set to false, a search token is also returned.
Use Case
This is the common scenario for using the GetTasks request:
¨ Fetch a set of tasks that match the criteria specified in the request.
Use the following line of code to return the task that has a task ID of '1234':
taskMetadata.setTaskId("1234");
GetTrustGraphData
GetTrustGraphData request provides the information needed to plot a trust decay curve.
The request contains a TrustSetting, which specifies the graph type, the time units, and other parameters of the
required graph. The response contains a list of trust values and dates that define the graph.
Note: You can configure GetTrustGraphData requests only for “no system” when using the Hub Console Audit
Manager to audit requests made by external applications. Once auditing for a particular SIF API request is enabled,
Informatica MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer
to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the GetTrustGraphData request:
¨ In an application with a custom-designed UI, display a trust graph —If you have a custom UI and must display
a trust graph, use GetTrustGraphData to get the data on which the graph is based.
GetTrustScore
GetTrustScore computes the trust score for a specified column, based on the specified trust override. The column
must be trust-enabled in the Schema Manager of the Hub console. The trust score (type float) of the Admin system will
be returned.
The request contains a column UID and a key identifying the base object record. The response contains the trust
score.
Use Case
This is the common scenario for using the GetTrustScore request:
¨ Compute the trust score for a column—If you are displaying a record, you can use GetTrustScore to display that
information about a column.
Usage Example
The following example retrieves the trust score for column FIRST_NAME on base object C_CONTACT for the record
with rowid = 3:
GetTrustScoreRequest request = new GetTrustScoreRequest();
request.setColumnUid("COLUMN.C_CONTACT|FIRST_NAME"); // Required
GetUnmergedRecordCount
GetUnmergedRecordCount reports the number of records that are not merged—either all such records or those
assigned to the current user.
The request supplies the table and a boolean value that specifies whether or not to restrict the count to records
assigned to the user. The response contains the number of unmerged records.
Note: You can configure GetUnmergedRecordCount requests only for “no system” when using the Hub Console Audit
Manager to audit requests made by external applications. Once auditing for a particular SIF API request is enabled,
Informatica MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer
to the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the GetUnmergedRecordCount request:
¨ In the data steward queue management screen in a custom UI, display the number of unmerged records—If
you have a custom UI with a data steward queue management screen in a custom UI, you can use this request to
display the number of unmerged records.
GetXrefForEffectiveDate
The GetXrefForEffectiveDate API retrieves multiple XREF records for the specified effective date. The response to a
GetXrefForEffectiveDate request contains the aggregate period start date, and the aggregate period end date.
Aggregate period is the intersection of all the periods that encompass the specified effective date.
Required Parameters
The following table lists and describes the parameters that are required by the GetXrefForEffectiveDate API:
Parameter Description
SiperianObjectUid Name and type of base object or package for which you must
get the XREF for a specified effective date.
RecordKey Key to uniquely identify the record for which you must get the
XREF for a specified effective date.
SystemNames Names of systems for which XREF and XREF history must
be retrieved.
EffectiveDate The date for which you must retrieve values of the base
object.
Note: EffectiveDate must be used only for timeline-enabled
base objects.
Parameter Description
HistoryDate The date for which you must retrieve values of the base
object that are effective at the specified point in time.
Note: HistoryDate must be used only for timeline-enabled
base objects.
Use Case
The following is a typical scenario in which the GetXrefForEffectiveDate request is used:
Determining the address of residence of a client for a specific date — If your clients change their address of
residence frequently, and you need to know what their address was on a specific effective date, you can use the
GetXrefForEffectiveDate API in combination with the PreviewBVT API to get the address that was effective on the
specific date. The cross-reference records used by the PreviewBVT API to calculate the address for the specified
effective date are used by the GetXrefForEffectiveDate API to retrieve the address that was effective on the specified
effective date.
Usage Example
The following example shows how to retrieve XREFs for a record with ROWID_OBJECT = 28, for an effective date
10/10/2011.
GetXrefForEffectiveDateRequest req=new GetXrefForEffectiveDateRequest();
req.setUsername("admin");
Password passwd=new Password();
passwd.setPassword("admin");
passwd.setEncrypted(false);
req.setOrsId("orcl.informatica.com-cmx_ors");
RecordKey rec=new RecordKey();
rec.setRowid("28");
req.setRecordKey(rec);
req.setSiperianObjectUid("BASE_OBJECT.C_BO");
Date date=new Date(2011, 10, 10);
req.setEffectiveDate(date);
GetXrefForEffectiveDateResponse response = (GetXrefForEffectiveDateResponse)client.process(req);
Link
Link links two or more base object records using the specified groupRecordKey as the group ID. Unlike a merge
operation, when records are linked, the original base object records continue to exist and the cross reference records
In order to be able to use the Link request on a base object, the base object must first be configured to be a link-style
BO instead of a merge-style BO. This option can be configured in the Schema Manager of the Hub Console.
In order to use a link group, the “GetBvt” on page 86 request must be invoked. This retrieves the best version of truth
(BVT) for the specified link group accounting for the combined cross reference records of all base object records in the
link group.
ListSiperianObjects
ListSiperianObjects returns basic metadata for a list of MDM Hub objects of the specified type. The metadata
contains basic information such as SiperianObjectUID, display name, and description. To get an object's complete
metadata, use “DescribeSiperianObject” on page 68.
Restrictions
Only admin users can access private resources through SIF API requests.
Required Parameters
The ListSiperianObjects request does not have required parameters.
Optional Parameters
Use the optional parameters to filter the list of objects returned by ListSiperianObjects. The following table describes
the optional parameters.
Parameter Description
ParentUID Restricts the returned list to objects that are children of the parent specified by ParentUID.
ObjectType Restricts the returned list to objects of the type specified by ObjectType.
UserResourcesOnly When UserResourcesOnly is true, restricts the returned list to those objects for which the user has
security resource privileges enabled.
When UserResourcesOnly is false, the returned list is not restricted by security resource
privileges.
PrivilegeType Restricts the returned list to objects with a specific secure resource privilege enabled for the user.
Possible values are CREATE, DELETE, DESIGN, EXECUTE, MERGE, NONE, READ, UPDATE,
WRITE.
Response Fields
The following table describes the response fields:
Parameter Description
Use Case
The following scenario is a common use for the ListSiperianObjects request:
¨ For a particular base object, get a list of packages. If you have a custom UI, you can use this request to get a list of
packages for a base object so the user can select a base object for the current operation.
When retrieving a list of users, you can set the parentUID to a Role UID to restrict the list to users that belong to a
specific role. To retrieve a list of admin users, the role can be set to ROLE.REQUEST_ADMIN_USERS_ONLY using
request.setParentUid(SiperianObjectType.ROLE.makeUid("REQUEST_ADMIN_USERS_ONLY")). The following example
shows how to request the metadata of users that belong to the role of Manager.
ListSiperianObjectsRequest request = new ListSiperianObjectsRequest();
request.setObjectType(SiperianObjectType.USER);
request.setParentUid(SiperianObjectType.ROLE.makeUid("Manager"));
request.setUserResourcesOnly(false); //ignores security access configuration of object
ListSiperianObjectsResponse response = (ListSiperianObjectsResponse) sipClient.process(request);
Merge
Merge merges two base object records, creating a single, consolidated base object record by merging all the XREF
records from the two base objects.
When two records are merged, one is designated the source record, one is designated the target record. The request
merges the source record into the target record. This means that after the merge the ROWID for the combined record
is that of the target record. All foreign keys pointing to the source record now point to the target record.
Important: When you merge two records, Informatica MDM Hub does not check the match status of the records, it just
merges the records as you specify. Using this class, it is possible to merge two completely dissimilar records, resulting
in a nonsense record. To learn more about merging, see the Informatica MDM Hub Configuration Guide .
Note: An alternate to Merge is Multimerge, which can be used to merge two or more records in a single operation.
For more information, refer to the Merge Settings Tab on the Match/Merge Setup Details dialog in the Informatica
MDM Hub Schema Manager, the Informatica MDM Hub Configuration Guide , and the Informatica MDM Hub Data
Steward Guide.
State Management
When you merge records in a base object with state management enabled, you can merge records in any state. The
target ROWID survives in the base object regardless of the hub state. Survivorship of values are based on the trust
scores and the last updated date of the source record.
For more information on state management, see the Informatica MDM Hub Data Steward Guide and Informatica MDM
Hub Configuration Guide.
Use Case
The following scenario uses the merge request:
Merge used with GetMatchedRecords. You can use GetMatchedRecords to get a list of match candidates for a
specified record. You can then display that list in a UI. If the user selects one of the candidate records, you can use
merge to merge the two records.
MultiMerge
MultiMerge merges multiple base object records that have been identified as representing the same object and allows
specifying the field level overrides for the merged record. MultiMerge is a more generic form of the “Merge ” on page
104 request and should be used for merging groups of records. Merge API should be used for pair-wise merges.
For example, there may be multiple base object records with the same account number “1234567” and account type
“Personal”. Each base object record has its own set of cross reference records. When these records are merged with
the call to the MultiMerge request, the result is a single BO record with that has the cross references from all the
merged base object records. The consolidated value for each field in the merged record is either determined through
the survivorship rules based on the cross references of the records that are being merged or they are specified
through the override values in the API.
PreviewBVT
The PreviewBVT API enables you to preview what a base object record would look like if you merge a specified set of
records or apply pending updates to the records.
Parameter Description
SiperianObjectUid Name and type of base object or package that you need to
use for previewing BVT.
RecordKeyList Keys of records for which you need to preview the BVT.
Note: If you include multiple records in the record key list,
the BVT of only the first record can be previewed.
Optional Parameters
The following table lists and describes the optional parameters that are used by the PreviewBVT API:
Parameter Description
EffectiveDate The date for which values of the base object must be
retrieved.
Note: EffectiveDate must be used only for timeline-enabled
base objects.
HistoryDate The date from the past for which the values of the base
object must be retrieved.
Note: HistoryDate must be used only for timeline-enabled
base objects.
Use Case
The following is a typical scenario for using the PreviewBVT request:
Preview the BVT for base objects for which the trust level may change over time — Trust level for base object
columns change over time and only the latest value reflects in the base objects. You can use the PreviewBVT request
to preview the BVT value for a base object record at a specific point in time (past, present, or future).
Determine the value of a record for a specific effective date — If a record has cross-references with more than one
period of effectiveness, then the PreviewBVT API can be used to calculate the BVT value of the record for a specific
effective date.
Usage Example
The following example shows the merge preview of three records with ROWID_OBJECTs 1, 2, and 3 into a record with
ROWID_OBJECT = 1, using the package P_PARTY.
PreviewBvtRequest request = new PreviewBvtRequest ();
request.setSiperianObjectUid(SiperianObjectType.PACKAGE.makeUid("C_PARTY"));
ArrayList recordKeys = new ArrayList();
recordKeys.add(RecordKey.rowid("1"));
recordKeys.add(RecordKey.rowid("2"));
recordKeys.add(RecordKey.rowid("3"));
request.setRecordKeyList (recordKeys);
PreviewBvtResponse response = (PreviewBvtResponse) sipClient.process(request);
State Management
Promote means to change the state of a record from PENDING to ACTIVE. When the flagForPromote option is set,
then this API request will queue the specified xref records for promotion using the next run of the PROMOTE batch
process. Otherwise, the request will immediately promote the specified xref records from PENDING to ACTIVE.
Here’s the behavior of this request based on various XREF states:
Required Parameters
The following table lists and describes the parameters that are required by the PromotePendingXref API:
Parameter Description
Optional Parameters
The following table lists and describes the optional parameters that are used by the PromotePendingXref API:
Parameter Description
FlagForPromote Flags records for promote when set to true. The records
are promoted when the batch process is executed in the
MDM Hub.
PeriodStartDate This parameter is used to specify the period start date for
timeline-enabled base objects.
PeriodEndDate This parameter is used to specify the period end date for
timeline-enabled base objects.
The following example flags the XREF record with sourceKey=1234 and system=CRM in the package
CUSTOMER_UPDATE for promotion the next time the Promote batch process is run.
PromotePendingXrefsRequest request = new PromotePendingXrefsRequest();
XrefKey xrefKey = new XrefKey();
xrefKey.setSourceKey("1234");
xrefKey.setSystemName("CRM");
ArrayList xrefKeys = new ArrayList();
xrefKeys.add(xrefKey);
request.setFlagForPromote(true); // Optional
request.setXrefKeys(xrefKeys); // Required
request.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //Required
Put
Use the Put API to create or update a record. Use an insert operation to create a cross-reference record in the cross-
reference table, and then create a base object record in the base object table. Use an update operation to update a
cross-reference record. Trust rules and validation rules determine if the base object record is also updated.
A record contains base object fields or package fields. A record can contain all fields or a subset of the fields. For
example, a package may contain the fields FIRST_NAME and LAST_NAME. If you want to update only the
LAST_NAME field, you can omit the FIRST_NAME field from the Put request. If you have not specified a value for a
field, the Put API sets the value to null.
State Management
If state management is enabled for a package, you can set the value of HUB_STATE_IND to specify the initial state of
a record when you insert it. You cannot use the Put API to change the state of a record by updating the
HUB_STATE_IND value. You can enable state management in the Hub Console.
Transaction Support
When executed within an EJB context, this request can be part of a transaction with other requests. If there is a failure
in any of the requests within a transaction, the Put API rolls back the entire transaction.
Trust Override
You can override the trust settings for a trust-enabled column as part of the Put request. The following portion of code
sets the maximum trust to 90%, sets the minimum trust to 40%, sets the unit of time for the trust graph to months, sets
the number of units over which the trust decays to 12, and sets the trust graph decay to linear.
field = new TrustOverrideField();
field.setName("CITY");
field.setStringValue(city);
field.setTrustOverride(TrustSetting.createTrustSettingCustom( 90, 40, TrustTimeUnit.MONTH, 12,
TrustGraphType.LINEAR));
data.setField(field);
If the Put request contains a trustOverrideField parameter, the parameter must have a value regardless of whether
trust is enabled or disabled. The Put response ignores the trustOverrideField values for columns that do not have
trust enabled.
The following table describes the putable status of the system columns:
CREATE_DATE You can set as putable in the base object column properties.
CREATOR You can set as putable in the base object column properties.
DELETED_BY You can set as putable in the base object column properties.
DELETED_DATE You can set as putable in the base object column properties.
DELETED_IND You can set as putable in the base object column properties.
HUB_STATE_IND You can set as putable in the base object column properties.
UPDATED_BY You can set as putable in the base object column properties.
The Putable property affects the Put insert operation behavior for Create_Date.
If you set Create_Date to Putable, the Put API populates the base object record and the cross-reference record
with the value in the Put request. Null is a permissible value. If you do not provide a value in the request, the Put
API populates the base object record and cross-reference record with the SYSDATE value.
If you do not set Create_Date to Putable, the Put API populates the base object record and cross-reference
record with the SYSDATE value.
The Putable property affects the Put update operation behavior for Create_Date.
If you set Create_Date to Putable, the Put API populates the base object record and the cross-reference record
with the value in the Put request. Null is a permissible value. If you do not provide a value in the request, the
column retains the current value.
If you do not set Create_Date to Putable, the base object record and the cross-reference record column retains
the current value. If the Hub creates a cross-reference record, the Put API populates the cross-reference record
column with the SYSDATE value.
¨ If LAST_UPDATE_DATE is Putable and you provide a value for the LAST_UPDATE_DATE column in the Put
request, the Put API populates the base object record and cross-reference record with this value. Null is a
permissible value.
¨ If you do not provide a value for the LAST_UPDATE_DATE column in the Put request, the Put API populates the
base object record and cross-reference record with the SYSDATE value.
¨ If LAST_UPDATE_DATE in not Putable, the Put API populates the base object record and cross-reference record
with the SYSDATE value.
¨ If LAST_UPDATE_DATE is Putable and you provide a LAST_UPDATE_DATE value, the Put API populates the
SRC_LUD column with the LAST_UPDATE_DATE value.
Put API Behavior for Foreign Key Columns that are Not Nullable
If you configure a default value for a foreign key column and either specify a null value or do not specify a value, the Put
API inserts the default value into the corresponding column of the cross-reference table.
If you do not configure a default value for a foreign key column and either specify a null value or do not specify a value
in the Put request, the MDM Hub generates an exception.
Requirements
Consider the following requirements when using the Put API.
¨ You must specify the SystemName field to identify the cross-reference record and the system that provides the
data.
¨ You must enable the Put API for the package.
Restrictions
Consider the following restrictions when using the Put API:
¨ You cannot insert a null value into a nonnullable column, such as a unique key column. You must provide a value
for nonnullable columns because the Put API sets empty fields to null.
¨ You cannot use Put to insert or update a read-only column.
¨ You cannot use Put to insert or update a system column unless the column is putable.
¨ You can specify a value for HUB_STATE_IND when you insert a record, but you cannot change the state of a exist
record by changing the HUB_STATE_IND value using the Put API. If you provide a value for the HUB_STATE_IND
column when updating a record, the Put API generates an exception. To change the state of a record, use the
Delete, Restore, and PromotePendingXrefs APIs.
¨ Validation rules only run if all columns used in the validation rule are present in the Put request.
¨ The Put request fails for packages that are based on base objects flagged for tokenization. A base object needs to
be tokenized if the value of DIRTY_IND is 1.
¨ Using a Put request to update relationships can result in improperly formed relationship records. Use the
AddRelationship API and the UpdateRelationship API to add or update relationship records.
¨ If you use special characters like ' and ~ in Put calls, you must escape them with a backslash character.
Parameter Description
RecordKey When you insert a record, use RecordKey to specify the system name of the record to insert. The system
generates the ROWID_OBJECT value for the record. You cannot specify the ROWID_OBJECT value for a
new record. If you specify the ROWID_OBJECT value for a record that does not exist, the Put request
fails.
When you update a record, use RecordKey to specify the system name, ROWID_OBJECT, and source key of
the record to update. You can also specify the Global Business Identifier (GBID), as applicable.
Record Contains the data to update or insert. The SiperianObjectUid field for the record specifies the type and the
name of the base object or put-enabled package used to identify the affected base object and constrain the
fields that you can set.
Optional Parameters
Use the optional parameters to specify a LastUpdateDate and request a source key. The following table describes the
optional parameters.
Parameter Description
GenerateSourceKey This parameter is useful for keyless systems (for example, an application that does not persist
source data). When set to true, a the MDM Hub generates a source key if you do not specify
one.
If you are inserting a record from a keyless system, you can request that Informatica MDM Hub
generate a unique PKEY_SRC_OBJECT for the record.
If you request a primary key when you insert a base object, the key generator generates a key and
passes it to the Put part of this request.
If the cross-reference ID does not exist when you update a base object, the Put API creates a
cross-reference record.
If the cross-reference ID exists when you update a base object, the Put API updates the cross-
reference record.
BypassPostLoadUE Do not use this parameter. Repository Manager uses this parameter. This parameter determines
whether to run the post-load user exit. When you set this parameter to true, the post-load user exit
is bypassed.
When you use Repository Manager to promote changes to design objects such as
HMRelationshipType, the Put API is called. The Put API in turn invokes the POST_LOAD user exit,
which may have user-defined procedures that can result in promotion issues or changes to Hub
Server data. Repository Manager is the only calling program that should bypass the POST_LOAD
user exit.
PeriodStartDate This parameter specifies the period start date for timeline-enabled base objects.
PeriodEndDate This parameter specifies the period end date for timeline-enabled base objects.
Field Description
RecordKey Contains the ROWID_OBJECT of the base object affected by the Put API.
When performing a Put request using a ROWID_OBJECT for a base object record that has merged into
another base object record, Put response returns the ROWID_OBJECT of the surviving base object
record.
RecordKey also contains a primary key if you set GenerateSourceKey to true.
ActionType Indicates the action that the Put API performed. The possible values are:
- Insert
- Update
- Update cross-reference
- No Action
The Tokenize API requires the value of ActionType. Insert indicates that a record has not yet been
tokenized and tokens need to be created. Update and Update cross-reference indicate that a record
has been tokenized and the tokens need to be regenerated.
Use Cases
The following examples are the common scenarios for using the Put request:
¨ The user provides data in a UI for creating or updating a record, and then the UI calls the Put API to insert or update
the record.
¨ The Put API used in combination with the Tokenize API. A Put request followed by a Tokenize request inserts or
updates the record and encodes it for matching. The Put response contains an action type string to use as an input
to the Tokenize request. The Put API operation and the Tokenize operation can occur in the same transaction.
¨ The Put API used in combination with the Cleanse API. The most common use of cleanse is when the individual
fields are cleansed before the record is passed on to the Put API.
ReassignRecords
ReassignRecords reassigns the specified records assigned for manual merge evaluation to another user.
Use Case
This is the common scenario for using the ReassignRecords request:
¨ In a custom UI, allow data stewards to reassign the records in their queue—If you have a custom UI, in the
screen for managing data steward’s queues, you might have a button that uses this request. This would allow data
stewards to reassign the records in their queue.
RegisterCustomIndex
RegisterCustomIndex registers user-defined indexes in the repository.
Some batch processes drop and re-create indexes based on the repository information. If you do not register custom
indexes, the batch processes might drop them.
Request Parameters
The RegisterCustomIndex request contains the following parameters:
TableName
Specifies the base object table name. Required.
RowidColList
Contains the list of row ID column values. Informatica MDM Hub ignores leading and trailing spaces in the row ID
column. Separate each row ID column value with the tilde (~) character.
IndexType
Specifies the index type. IndexType can be one of the following values:
Only create and register non-unique type indexes. The default value is NI. Optional.
Response Fields
The RegisterCustomIndex API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following code sample registers a custom index:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
RegisterCustomIndexRequest req = new RegisterCustomIndexRequest();
req.setTableName(jobContext.getTableName()); // table name
req.setRowidColList("SVR1.DA~SVR1.DB"); // column list
RegisterCustomIndexResponse executed = (RegisterCustomIndexResponse) sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
Request Parameters
The RegisterCustomTableObject request contains the following parameters:
RowidTable
Specifies the Row ID table. Required.
ObjFuncTypeCode
Specifies the Job type code. Must be 'A' for batch group custom jobs. Required.
ObjFuncTypeDesc
Specifies the display name for the custom batch job in the Batch Groups tool in the MDM Hub Console.
Required.
ObjectName
Specifies the name of the custom job. Required.
Response Fields
The RegisterCustomTableObject API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
RetCode
Contains the return code.
Usage Example
The following code sample registers the custom stored procedure CMXBG.EXAMPLE_JOB:
SiperianClient sipClient = SiperianClient.newSiperianClient(new File( context.getTestPTTStartDir()
+ "siperian-client.properties" ) );
RegisterCustomTableObjectRequest req = new RegisterCustomTableObjectRequest();
req.setRowidTable(jobContext.getRowIdTable()); // rowid table. e.g. SVR1.44A
req.setObjFuncTypeCode("A");
req.setObjFuncTypeDesc("Custom call");
req.setObjectName("CMXBG.EXAMPLE_JOB");
RegisterCustomTableObjectResponse executed = (RegisterCustomTableObjectResponse)
sipClient.process( req );
String errMessage = executed.getMessage();
int rc = executed.getRetCode();
RegisterUsers
RegisterUsers enables an application to register selected users from the enterprise’s authentication system (for
example, LDAP) with Informatica MDM Hub. Then Informatica MDM Hub can use its existing access control
capabilities to manage tasks like role assignments.
The application provides a list of user names, and Informatica MDM Hub fetches their information from the external
system. Informatica MDM Hub ignores additional registrations of the same user profile from the external
Informatica MDM Hub registers the users within a transaction. If an error occurs, it rolls back all changes.
Provisioned users can be grouped and assigned Informatica MDM Hub security roles using the Informatica MDM Hub
Administration Console. For more information, see the Informatica MDM Hub Configuration Guide .
Automatically provisioned users can be removed from the Informatica user database either using the Informatica
Administration Console or using “UnregisterUsers” on page 131.
Transaction Support
When executed within an EJB context, this request can be part of a transaction with other requests. If there is a failure
in any of the requests within a transaction, the entire transaction is rolled back.
Use Case
This is the common scenario for using the RegisterUsers request:
¨ Checking external authentication—Before you start a logical unit of work, check to see what the user is
authorized to do.
RemoveMatchedRecords
RemoveMatchedRecords removes matches associated with a base object record from the <base object>_MTCH
table.
For example, if you decide records B and C do not match to record A, you can remove the following match pairs from
<base object>_MTCH table:
¨ A-B
¨ A-C
¨ B-A
¨ C-A
Request Parameters
The RemoveMatchedRecords request contains the following parameters:
SiperianObjectUid
Specifies the type and name of the base object or package. Required.
RecordKey
Specifies the record key that does not match with the list of record keys. Required.
RecordKeyList
Contains the list of record keys. Required.
Response Fields
The RemoveMatchedRecords API returns the following fields:
InteractionId
Contains the interaction ID.
Message
Contains a message regarding the status of the request.
ResetBatchGroup
ResetBatchGroupfinds the last execution status of the given batch group, and if its status is failed, sets it to
incomplete. To learn more about batch groups, see the Informatica MDM Hub Configuration Guide .
Use Case
This is the common scenario for using the ResetBatchGroup request:
¨ Resetting a batch group after “GetBatchGroupStatus” on page 86 returns and unsuccessful status
Restore
Restore reinstates the specified XREF record(s) in the Hub. Restore changes the state of records from DELETED to
ACTIVE state. If an attempt is made to restore an active or pending record, an error is returned. After an XREF record
is restored, the state of the parent BO record will be active.
Required Parameters
The following table lists and describes the parameters that are required by the Restore API:
Parameter Description
SystemName Name of the system for which the record must be restored.
Parameter Description
PeriodStartDate This parameter is used to specify the period start date for
timeline-enabled objects.
PeriodEndDate This parameter is used to specify the period end date for
timeline-enabled base objects.
Usage Example
The following example restores the XREF record with sourceKey=1234 and system=CRM from the package
CUSTOMER_UPDATE. If the XREF record is pending or active, an error will be returned. If the XREF record is
deleted, it will be made active.
RestoreRequest request = new RestoreRequest();
XrefKey xrefKey = new XrefKey();
xrefKey.setSourceKey("1234");
xrefKey.setSystemName("CRM");
ArrayList xrefKeys = new ArrayList();
xrefKeys.add(xrefKey);
request.setXrefKeys(xrefKeys); // Required
request.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //Required
SearchHmQuery
SearchHmQuery is used to search HM Entities or Relationships. The filter, aggregate and sort criteria can reference
any columns in the Display Packages associated with Entity Type / Relationship Type in the search request. The
criteria can use any operators supported by the underlying database.
The value stored in GETLIST_LIMIT column of CMX_SYSTEM.C_REPOS_DATABASE table for the ORS determines
the maximum number of records that can be returned. GetSearchResultsRequest can be used to get subsequent
pages of records.
The request contains the HM configuration, the type of the entity or relationship sought, and an SQL specification of
the query. The response contains the sought records and a search token to use to fetch additional data.
Note: This request requires Hierarchy Manager. If you have not purchased, installed, configured Hierarchy Manager,
then this request will fail.
Use Case
This is the common scenario for using the SearchHmQuery request:
¨ Search for specific HM entity or entities — If you have Hierarchy Manager and have populated it with data, you
can use SearchHmQuery to search for entities and relationships associated with one or more entities.
This request is typically used with foreign key columns that have a large number of possible values. The request
includes a lookup column, a lookup display value to search for, and a comparison operator. It also includes a record
whose fields contain the lookup information. In each field, the name is the lookup (foreign key) value, and the value is
the lookup display name. For detailed information on configuring relationships and lookups in the Informatica MDM
Hub, see the Informatica MDM Hub Configuration Guide .
This request allows search criteria to be specified on the lookup display name compared to “GetLookupValues” on
page 91 which retrieves all lookup values for a lookup column.
A system parameter determines the maximum number of records that can be returned. Use “GetSearchResults ” on
page 93 to get subsequent sets of records.
Use Case
This is the common scenario for using the SearchLookupValues request:
¨ Search for lookup values—In a custom UI, you can use SearchLookupValues to find that value from amongst the
available lookup values.
SearchMatch
SearchMatch generates a list of search results by identifying matching records in a package or base object using
MDM Hub match columns and, optionally, match rule sets. For information on configuring match columns and match
rule sets, see the Informatica MDM Hub Configuration Guide.
Records must be tokenized or the records cannot be returned as match results. Use the Tokenize API or batch job to
tokenize records.
SearchMatch returns a list of matching records. This is unlike the Hub match batch process, which creates a list of
match candidates in the Operational Reference Store that you retrieve using GetMatchedRecords.
When you perform an extended search, the default match rule set must have fuzzy match keys. If fuzzy match keys
are absent, the SearchMatch API does not return search results.
For information about performing exact matches on fuzzy base objects, see “Exact Matches on Fuzzy Base
Objects” on page 20.
Parameter Description
MatchColumnField or These parameters specify which match columns or match rules are used for matching:
RecordsToMatch - MatchColumnField: The name of a single match column or a list of match columns to use in
matching.
- RecordsToMatch: The Hub uses all possible match columns configured for the record or records
listed in RecordsToMatch. The Hub does not use the match columns that are based on fields for which
the records have no value. Use MatchColumnUid to restrict match columns further. The match
columns that result from using the RecordsToMatch parameter override the match columns specified
by MatchColumnField.
MatchType This parameter specifies how match rules are used in the search. If you do not specify the
MatchType, SearchMatch uses the default MatchType of NONE.
AUTO: Use auto-merge match rules only.
BOTH: Use both auto-merge and manual-merge match rules.
NONE: Use NONE to perform a broad search.
DBFILTERED: Increases performance when a fuzzy search is based on a nonselective term.
MatchType NONE
A SearchMatch with MatchType NONE can be performed in one of two ways:
¨ Without using match rules. The match is performed by giving all columns equal weight, with no required fields.
Undermatching is avoided because empty fields in the search request are ignored, which prevents relevant
records from being excluded from the search results. However, overmatching and misleading match scores can
occur because nonselective fields, such as Gender, are given the same weight as selective fields, such as
Customer ID.
¨ Using a match rule set that has Enable Search by Rules enabled in the Hub. The undermatching that can occur
when using MatchType AUTO and BOTH is avoided because empty fields provided by the search request are ignored
and not used to exclude search results. Overmatching and misleading match scores are avoided because the
match rules give the columns an appropriate weight.
MatchType DBFILTERED
The DBFILTERED MatchType increases performance when a fuzzy search based on a nonselective term, such as
Name="JOHN", also provides values for exact match columns. Nonselective fuzzy search terms provide excessive
¨ If the fuzzy search term is selective, for example, JONATHAN LIVINGSTONE, SearchMatch functions as it does
when MatchType is set to BOTH. Initial filtering is performed using the match key ranges generated by the Hub, and
then additional filtering is performed by the Process Server using the exact match columns. This type of filtering
reduces the number of database joins required and provides optimal SearchMatch performance for selective fuzzy
search terms.
¨ If the fuzzy search term is nonselective, for example, JOHN, initial filtering is done in the database on the exact
match columns and match key ranges. This results in fewer records being returned to the Process Server for
matching than would occur using the MatchType AUTO or BOTH. This type of filtering provides optimal SearchMatch
performance for nonselective fuzzy search terms.
¨ A DBFILTERED match cannot be performed using the following types of exact match columns:
- Exact match columns that have match subtype, non-equal matching, null matching, or segment matching
enabled.
- Exact match columns that are based on a concatenation of base object columns.
¨ Ensure the lock on the schema has been released. API performance decreases when the schema is locked.
¨ DBFILTERED SearchMatch performance decreases as the number of fuzzy match rules increases. Create a
match rule set to use specifically for DBFILTERED SearchMatch that is limited to the match rules essential for
database filtering.
¨ Ensure low cardinality (preferably 1:1) between the base object providing the match key and the exact match
columns used for filtering to increase database filtering performance.
¨ Add custom column indexes to some of the exact match columns used for filtering to improve database filtering
performance. Use as few custom column indexes as possible to avoid decreasing batch job performance.
Optional Parameters
The optional SearchMatch Request parameters are described in the following table:
Parameter Description
sortCriteria A string containing a comma-separated list of column names and a sort direction. For example,
"LAST_NAME ASC, FIRST_NAME ASC" returns the search results sorted by last name and then first
name, in ascending order. Use DESC to sort in descending order. The results are returned in random
order if you do not specify the sort order, unless the MatchType is NONE. If the MatchType is NONE and
sortCriteria is not specified, the records are sorted based on the Match Score.
MatchRuleSetUid A string containing the name of a match rule set. If a match rule set is not specified using this parameter,
SearchMatch uses the default match rule set. You must use one of the following formats:
- A fully qualified SiperianObjectUid followed by the match rule set. For example,
"MATCH_RULE_SET.C_PARTY|Main". You must include the MATCH_RULE_SET prefix.
- Set to NULL to use the default match rule set. To set MatchRuleSetUid to NULL, omit MatchRuleSetUid
from the SearchMatch request.
Response Fields
The SearchMatch Response contains a list of matching records as well as the information described in the following
table for each record:
Field Description
DEFINITIVE_MATCH_IND Indicates whether a match was made using a match rule enabled for automatic merging.
Matches made using auto-merge match rules typically result in closer matches than those
made using manual-merge match rules.
1: Match made using an auto-merge match rule.
0: Match made without using a manual-merge match rule.
RULESET_NAME Indicates which match rule set was used to make the match. The value for RULESET_NAME
is GENERATED SEARCH when the MatchType is NONE.
RULE_NUMBER Indicates the rule number of the match rule that was used to make the match. The value for
RULE_NUMBER is 1 when the MatchType is NONE.
MATCH_SCORE Indicates the match score of the result. If MatchType is equal to NONE, SearchMatch returns
the match score, if available, so that the search results can be ranked by the match score.
The match score is ignored when sorting if you specify a sort order using the sortCriteria
parameter.
Use Case
This is the common scenario for using the SearchMatch Request:
¨ Generate and then return a list of the possible matches in a given package or base object. Use the returned list of
match candidates to merge or link records using Merge, MultiMerge, or Link.
¨ The user specifies search criteria in a UI and the UI calls SearchMatch to find similar records and display the
results to the user for editing.
SearchQuery
SearchQuery searches for records in a package, base object, or remote package based on an SQL condition clause.
The condition clause can reference any columns in the package, base object, or remote package and can use
operators supported by the target database.
When performing a SearchQuery using a ROWID_OBJECT value for a base object record that has been merged into
another base object record, no records are returned. For example, if two base object records are merged, one with a
ROWID_OBJECT value of ROWID_A and the other with a value of ROWID_B, the ROWID_OBJECT value of the
surviving base object could be ROWID_A. In this case, if you perform a SearchQuery using a ROWID_OBJECT of
ROWID_B, no records are returned because a base object with a ROWID_OBJECT of ROWID_B no longer exists in
the base object table.
Required Parameters
The following table lists and describes the parameters that are required by the SearchQuery API:
Parameter Description
SiperianObjectUid Name and type of package, base object, XREF table, XREF history table, history table, or merge
history table that you need to query.
RecordsToReturn Sets the limit to the number of records that must be retrieved.
FilterCriteria SQL clause to filter search results for columns of the package that is being queried.
The FilterCriteria parameter can be used to specify the literal expressions (FIRST_NAME = 'JOHN') or
it can be used in combination with FilterParameters.
Optional Parameters
The following table lists and describes the optional parameters that are used by the SearchQuery API:
Parameter Description
EffectiveDate The date for which you must retrieve values of the base object.
Note: EffectiveDate must be used only for timeline-enabled base objects.
HistoryDate The date at a point in history for which the values of the base object must be retrieved.
Note: HistoryDate must be used only for timeline-enabled base objects.
DisablePaging If set to true, it disables the paging mechanism, which allows retrieving multiple pages of data. This
parameter must be set to true for queries that return a predictable number of rows. Use
GetSearchResults to fetch subsequent pages of search results.
RecordStates Specifies the Hub state indicator to use for filtering the search result.
RemoveDuplicates If set to true, duplicates are removed from the result set. This parameter should be enabled only
when there is a possibility of duplicates in the result set. The default is false.
AdvancedMode If set to true, the advanced mode of search query processing is enabled. The default is false. When
AdvancedMode is true, you can use FilterCriteria with the advanced operators EXISTS and COUNT.
However, when AdvancedMode is true, you cannot use these operators in sortCriteria.
Case Sensitivity
Under normal conditions, the SearchQuery API is case sensitive. Any filter criteria specified for the request must be in
the same case as in the ORS in order for the records to be found. However, the CASE_INDICATOR column in
C_REPOS_TABLE can be used to control case sensitivity of SearchQuery. Possible values for this indicator are:
UPPER, LOWER and NULL. When specified, the value in this column indicates that all data in the corresponding table
is in the specified case. The setting of this causes filter criteria to be automatically converted to the appropriate case.
Name Description
UPPER The where clause and any parameters of the query are converted to upper case prior to executing the
request.
This assumes that all of the data in the package in the request is stored in upper case.
LOWER The where clause and any parameters of the query are converted to lower case prior to executing the
request.
This assumes that all of the data in the package in the request is stored in lower case.
Use Case
This is the common scenario for using the SearchQuery request:
¨ Search for records in a package. In a custom UI, use SearchQuery to allow a data steward to find a particular
record.
Usage Example
The following example shows the search for a record from the package PARTY_ADDRESS_READ_PKG, where
PARTY_FULL_NAME starts with 'WAGNER':
SearchQueryRequest request = new SearchQueryRequest();
request.setRecordsToReturn(5);
request.setSiperianObjectUid("PACKAGE.PARTY_ADDRESS_READ_PKG");
request.setFilterCriteria("PARTY_FULL_NAME LIKE ?");
ArrayList params = new ArrayList(2);
params.add(new Parameter("WAGNER%"));
request.setFilterParameters(params);
SearchQueryResponse response = (SearchQueryResponse) sipClient.process(request);
SearchRequestBase
SearchRequestBase is the base class for search requests (SearchQuery and SearchMatch) with parameters for
paging and sorting.
Paging Support
The parameters for the paging mechanism to return large result sets are as follows:
¨ Maximum number of records returned—This parameter can be specified at the ORS level and it is stored in the
CMX_SYSTEM.C_REPOS_DATABASE.GETLIST_LIMIT parameter. This limit takes precedence over the values
specified using setRecordsToReturn(int). The search queries will be limited to the minimum value of the two for
any search request. For SearchMatchRequest API, there are also additional parameters that can be specified on
the Process Server to control the number of matches the Hub will attempt before returning the results.
¨ Number of records—setRecordsToReturn(int). When paging is enabled this parameter specifies the size of the
first page of data returned by the search API. Subsequent pages can be returned using the
GetSearchResultsRequest API. Alternatively, for requests that have paging disabled this method would specify
the limit of the total number of rows returned by the search API.
SearchResponseBase
SearchResponseBase is the base class for search responses.
Each response contains a list of records, a search token to use to fetch more results, and an optional count of
matching records.
SetPassword
SetPassword request changes the password for this user. The existing password must be specified in the request as
well as the new password. Passwords are specified as Password objects. The password specified must to the
password policy configured in the Hub.
Use Case
This is the common scenario for using the SetPassword request:
¨ Allow a Informatica MDM Hub administrator to set a password for a user within Informatica MDM Hub — In
an application for Informatica MDM Hub administrators, you can include functionality to allow the administrator to
change passwords for the Informatica MDM Hub users.
SetRecordState
SetRecordState enables a client application to assign one of a predefined set of state indicator values to a specified
set of base object records. The state indicator value is stored in the CONSOLIDATION_IND column. The
consolidation indicator can be one of the following values:
2 UNMERGED This record has gone through the match process and is ready
to be consolidated.
4 NEWLY_LOADED This record is new (load insert) or changed (load update) and
needs to undergo the match process.
9 ON_HOLD The data steward has put this record on hold until further
notice. Any record can be put on hold regardless of its
consolidation indicator value. The match and consolidate
processes ignore on-hold records. For more information, see
Informatica MDM Hub Data Steward Guide.
Restrictions
Consider the following when using the SetRecordState API:
¨ The consolidation state can only be set for base object records with a Hub_State_Ind value of 1, meaning the
record has an ACTIVE hub status.
Required Parameters
Parameter Description
RecordKey Identifies the record that requires a state change. See “About RecordKey” on page 23 for more
information.
Note: If the ROWID_OBJECT is provided, the systemName is not validated.
RecordState The name of the state to which the record will be set. The state name can be one of the following:
- CONSOLIDATED
- UNMERGED
- QUEUED_FOR_MATCH
- NEWLY_LOADED
- ON_HOLD
SiperianObjectUID The package or base object used to identify the record that requires a state change.
Optional Parameters
The SetRecordState request does not have any optional parameters.
Response Fields
The following table describes the response fields:
Parameter Description
Use Case
This is the common scenario for using the SetRecordState request:
Tokenize
The Tokenize API generates the match keys that the match engine and the SearchMatch request use when
performing fuzzy matches. The Merge request does not use these match keys. Tokenize can also regenerate match
tokens for a record that was previously tokenized.
In Informatica MDM Hub, you can also manually generate match tokens or configure the Hub to generate match
tokens after the load process completes. See the Batch Jobs Reference in the Informatica MDM Hub Configuration
Guide for more information.
If you request Tokenize to regenerate tokens for a record that has not changed since the previous Tokenize, the
request succeeds and reports that it tokenized zero records.
Transaction Support
When executed within an EJB context, Tokenize can follow a Put or CleansePut request in a single transaction. If
there is a failure in any of the requests within a transaction, the entire transaction is rolled back.
Required Parameters
The following table describes the required Tokenize parameters.
Parameter Description
¨ Use Put to insert or update the record in the package. Then call Tokenize to generate match keys.
¨ Call CleansePut to cleanse the data and insert or update the record in the package. Then call Tokenize to
generate match keys.
Unlink
Unlink decouples two or more base object records with the group ID specified in the groupRecordKey field. The
records being unlinked must have been previously linked using the Link API.
Unmerge
Unmerge unmerges two rows in a base object. Unmerge provides the same unmerge functionality as the Data
Manager tool in the Data Steward workbench. This request restores all foreign keys updated in the merge.
Unmerging can take a long time to complete, so you may want to run the unmerge asynchronously. You cannot use
unmerge within a transaction. For more information about unmerging and merging, refer to the Informatica MDM Hub
Configuration Guide .
If the request is unsuccessful, the program throws an Informatica request exception. If the request is successful, then
the response also indicates that the unmerge succeeded.
Note: You can configure Unmerge requests according to a specific system when using the Hub Console Audit
Manager to audit requests made by external applications. Once auditing for a particular SIF API request is enabled,
Informatica MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer
to the Informatica MDM Hub Configuration Guide .
Linear Unmerge
During a linear unmerge, no attention is paid to the process by which the records were originally merged.
Now, if sourceKey 2 of the SALES system is targeted for a linear unmerge, then the base object of sourceKey 2 is
reinstated and the cross-reference of sourceKey 2 is associated with the reinstated base object. The resulting base
object records are as follows:
Tree Unmerge
During a tree unmerge, the process by which the records were originally merged determines the outcome.
Consider a scenario where initially there are three base object records with ROWID_OBJECT values of 1, 2, and 3.
Each of these base objects has a single cross-reference record with corresponding source keys 1, 2, and 3, and
SALES as the SystemName value. If you merge ROWID_OBJECT 3 into 2, and then merge ROWID_OBJECT 2 into
1, then at the time record 2 was merged into record 1, record 3 had already been merged into 2. So the cross-
references for sourceKeys 2 and 3 are removed from the base object and the base object record for sourceKey 2 is
reinstated. The resulting base object records are as follows:
Note: In both cases, the consolidated field values in the base object record are recalculated after the unmerge.
Cascade Unmerge
Unmerge performs a cascade unmerge if this feature is enabled for this base object in the Schema Manager in the Hub
Console. With cascade unmerge, when records in the parent object are unmerged, Informatica MDM Hub also
unmerges affected records in the child base object.
Required Parameters
The following table lists and describes the parameters that are required by the Unmerge API:
Parameter Description
SiperianObjectUid Name and type of the package or base object containing the
record to be unmerged.
TreeUnmerge Set to true for a tree unmerge operation or false for a linear
unmerge operation.
Use Case
This is the common scenario for using the Unmerge request:
¨ In a custom UI, use unmerge to allow a data steward to manually unmerge records. A data steward might unmerge
records when, for example, a merge of two records was done in error.
The application provides a list of user names, and Informatica MDM Hub removes them. Informatica MDM Hub
ignores unregistrations of users that are not registered in Informatica MDM Hub.
Informatica MDM Hub unregisters the users within a transaction. If an error occurs, it rolls back all changes.
Transaction Support
When executed within an EJB context, this request can be part of a transaction with other requests. If there is a failure
in any of the requests within a transaction, the entire transaction is rolled back.
Use Case
This is the common scenario for using the UnregisterUsers request:
¨ Bulk unregistering with Informatica MDM Hub — Based on external authentication information, you can use
unregistreUsers to bulk unregister users.
UpdateRelationship
UpdateRelationship Hierarchy Manager request updates a Relationship between two Entities. The existing
relationship record is updated if the Start Date, End Date, or custom columns for the Relationship record are modified.
If the update request changes the Hierarchy, Relationship Type, or one or both Entities in the Relationship, the current
Relationship record is deleted (see “DeleteRelationship” on page 67) and a new Relationship record is added (see
“AddRelationship” on page 55). When a new Relationship record is added, the RecordKey returned in the
UpdateRelationshipResponse will be different from the one specified in the UpdateRelationshipRequest.
Note: This API request applies to Hierarchy Manager. If you have not purchased, configured, and populated
Hierarchy Manager, this request will fail.
The request identifies the HM configuration and hierarchy, the relationship type, the records, and a number of optional
parameters. The response contains the record key for the updated relationship. Informatica MDM Hub infers the types
of the entities being related, and thus the base objects containing those entities, from the relationship type.
¨ Rowid Object: Primary Key for the FK Relationship and the Entity.
¨ Rowid Company: FK that refers to the records in C_COMPANY Entity Base Object. The value in this column has a
non-null when there a HM FK Relationship between C_PERSON and C_COMPANY. The column value is set to
null when the Relationship between a Company and a Person is deleted.
¨ Any other columns needed for “Person” Entity Type and “Person To Company” FK Relationship Type.
The Put Package associated with the “Person To Company” FK Relationship Type would have the following
columns:
In other words either rowid BO1 or rowid BO2 in the Put Package maps to the Rowid Object column in the Base Object.
Updating the FK column (Rowid BO2 / C_PERSON.Rowid_Company in the example) to a non-null value is equivalent
to adding a new FK Relationship. Also note that the RecordKey specified in setRecordKey() and setBo1RecordKey()
in this example would be the same.
Note: UpdateRelationshipRequest cannot be used to modify Relationship Type if the old or the new Relationship
Type is a FK Relationship Type. To do that, use DeleteRelationshipRequest to delete the old Relationship. Then use
UpdateRelationshipRequest if the new Relationship is a FK Relationship Type or AddRelationshipRequest if the new
Relationship is not a FK Relationship Type.
Use Case
This is the common scenario for using the UpdateRelationship request:
¨ Update a relationship between two HM entities — If you have Hierarchy Manager and have populated it with
entities, you can use the UpdateRelationship request to modify a relationship between two entities.
UpdateTask
Use the UpdateTask API to do one of the following:
¨ Reassign a task.
¨ Change the task data.
¨ Append to the task comment.
Parameter Description
TaskData This parameter specifies the task to update. See “About TaskData” on page 19.
Response Fields
The following table describes the fields the UpdateTask response returns:
Parameter Description
Message Contains a message indicating if the UpdateTask request was processed successfully.
Use Cases
The following scenario is a common use case for using the UpdateTask request:
ValidateChangeList
ValidateChangeList validates a change list against the current ORS. It applies the specified change list to the current
repository, executing all of the changes in simulation mode without modifying the ORS, and then returns any
errors.
Required Parameters
The following table describes the required parameters:
Parameter Description
ChangeListXml Contains the XML string representing the change list to validate.
Optional Parameters
The following table describes the optional parameters:
Parameter Description
TransactionAttributeType If set to NOT_SUPPORTED, the request does not support a transactional context.
If set to REQUIRED, the request does requires a transactional context.
If set to REQUIRES_NEW, the request requires a new transactional context.
If set to SUPPORTS, the request supports but does not require a transactional context.
Response Field
The following table describes the response fields:
Field Description
Required Parameters
The ValidateMetadata request does not have required parameters.
Optional Parameters
The following table describes the optional parameters:
Parameter Description
Checks Contains the Checklet IDs that specify which validation checks to perform.
TransactionAttributeType If set to NOT_SUPPORTED, the request does not support a transactional context.
If set to REQUIRED, the request does requires a transactional context.
If set to REQUIRES_NEW, the request requires a new transactional context.
If set to SUPPORTS, the request supports but does not require a transactional context.
Response Fields
The following table describes the response fields:
Parameter Description
Message Contains a message indicating if the ValidateMetadata request was processed successfully.
Level Contains the error level if any errors are returned. The possible error levels are:
- FATAL ERROR
- ERROR
- WARNING
- INFORMATIONAL
ValidateTasks
The ValidateTasks API checks each merge task specified in the request to verify there is a match table record. The
ValidateTasks API can also validate external workflow engine merge tasks in addition to Hub merge tasks.
Parameter Description
TaskData This parameter specifies the task to validate. See “About TaskData” on page 19.
Response Fields
The ValidateTasks response returns the TaskValidationResult which contains the following information for each task
specified in the request:
Parameter Description
TaskID This parameter identifies the task. See “About TaskData” on page 19.
Use Cases
The following scenario is a common use case for using the ValidateTasks request:
Usage Example
The code in the following example validates a task:
ValidateTasksRequest request = new ValidateTasksRequest();
TaskMetaData task = new TaskMetaData();
task.setTaskId("1234");
task.setTitle("Research and resolve item");
task.setDueDate(new Date());
task.setSubjectAreaUid("SUBJECT_AREA.test|Person");
task.setTaskType("Merge");
ArrayList tasks = new ArrayList();
tasks.add(task);
request.setTasks(tasks);
ValidateTasksResponse response = (ValidateTasksResponse) sipClient.process(request);
A
cascade unmerge
Unmerge 129
AcceptUnmatchedRecordsAsUnique request 55 Cleanse 27
access protocols cleanse request 59
using SIF 6 CleansePut
addRelationship operation 55 state management 60
AddRelationship request 55 cleansePut request 28, 60
APIs CleanTable
RegisterCustomIndex 114 about 58
RegisterCustomTableObject 115 ClearAssignedUnmergedRecords request 64
RemoveMatchedRecord 116 cmxserver.properties
ApplyChangeList sif.search.result.drop.batch.interval.milliseconds 20
rollbackStrategy field 55 sif.search.result.drop.batch.record.count 20
applyChangeList call 55 sif.search.result.query.timeToLive.seconds 20
ApplyChangeList request 55 sif.search.result.refresh.interval.seconds 20
AssignUnmergedRecords request 56 com.siperian.sif.client package 20
asynchronous requests com.siperian.sif.message package 20
making 34 composite services
asynchronous SIF service invocations about 41
run-time processing 38 consolidation
Audit request 57 indicator 126
Authenticate request 58 state 126
content metadata
DELETED_XREF 83
B
HISTORY 83
PENDING_XREF 83
base objects, fuzzy RAW 83
exact matches 20 XREF 83
batch APIs XREF_HISTORY 83
ExecuteAutoMatchAndMerge 69 createChangeList call 64
ExecuteBatchAutomerge 69 CreateChangeList request 64
ExecuteBatchBVTSnapshot 70 CreateTask 64
ExecuteBatchExternalMatch 71
ExecuteBatchGenerateMatchTokens 71
ExecuteBatchKeyMatch 72
ExecuteBatchLoad 73
D
ExecuteBatchMatch 74 Data APIs, about 50
ExecuteBatchMatchAnalyze 75 Data Retrieval APIs, about 50
ExecuteBatchPromote 75 Data Retrieval Services, about 9
ExecuteBatchRecalculateBo 76 Data Services, about 10
ExecuteBatchRecalculateBvt 77 Data Steward APIs, about 50
ExecuteBatchResetMatchTable 78 Data Steward Services, about 9
ExecuteBatchRevalidate 78 Data Update / Insert APIs, about 50
ExecuteBatchStage 79 Data Update / Insert Services, about 10
ExecuteBatchSynchronize 79 debug log 20
ExecuteBatchValidateFKRelationships 80 Delete
transactions 41 state management 65
Batch Group APIs, about 50 DELETED_XREF
Batch Group Services, about 10 content metadata 83
build_war macro 24 DeleteRelationship request 67
Deleterequest 65
DescribeSiperianObject request 67
C
CanUnmergeRecords request 58
136
E
GetMatchedRecords request 91
GetMergeHistory request 91
Eclipse 7 GetOneHop request 92
ExecuteBatchAutoMatchAndMerge GetOrsList request 92
about 69 getOrsMetadata call 93
ExecuteBatchAutomerge GetOrsMetadata request 93
about 69 GetSearchResults request 93
ExecuteBatchBVTSnapshot GetSiperianObjectCompatibility request 95
about 70 getSystemTrustSettings request 95
ExecuteBatchExternalMatch GetTaskLineage 96
about 71 GetTasks request 98
ExecuteBatchGroup request 72 GetTrustGraphData request 100
ExecuteBatchKeyMatch GetTrustScore request 100
about 72 GetUnmergedRecordCount request 101
ExecuteBatchLoad GetXrefForEffectiveDate
about 73 optional parameters 101
ExecuteBatchMatch required parameters 101
about 74 usage example 101
ExecuteBatchMatchAnalyze use case 101
about 75 GetXrefForEffectiveDate API 101
ExecuteBatchPromote GetXrefForEffectiveDate request 101
about 75
ExecuteBatchRecalculateBo
about 76
ExecuteBatchRecalculateBvt
H
about 77 HISTORY
ExecuteBatchResetMatchTable content metadata 83
about 78
ExecuteBatchRevalidate
about 78
ExecuteBatchStage
I
about 79 incremental data loads, about 2
ExecuteBatchSynchronize 79 index.html 14
ExecuteBatchValidateFKRelationships Informatica MDM Hub
about 80 external applications, how to interact with 2
ExecuteGenerateMatchTokens real-time processing 2
about 71
external applications
interacting with Informatica MDM Hub 2
J
Java archive (JAR) files
F
tools.jar 24
Java compilers 24
FlagForAutomerge 81 Javadoc
foreign key relationship type about 14
adding new relationship, UpdateRelationship 131 JMS Event Messages
fuzzy base objects about 34
exact matches 20 JMS Message Queues for Asynchronous SIF Invocations, about 37
G L
GenerateConstraints lib directory 24
about 82 linear unmerge
Get 28 Unmerge 129
Get request 83 Link request 102
GetAssignableUsersForTasks 85 ListSiperianObjects request 103
GetAssignedRecords request 85 Load Process vs. SIF Put
GetBatchGroupStatus request 86 validation rules 108
GetBvt
state management 86
GetBvt request 86
GetEffectivePeriods API 88
M
GetEntityGraph request 88 Merge
GetLookupValue request 90 state management 104
GetLookupValues request 91 Merge request 104
GetMatchedRecords Merge Workflow APIs, about 50
state management 91 Merge Workflow Services, about 10
Index 137
S
Metadata APIs, about 50
metadata management API
using 39 SAM
Metadata Management APIs, about 50 using with SIF 38
Metadata Services, about 11 schema
Miscellaneous APIs, about 50 defines the database tables in an ORS 1
MultiMerge request 105 SearchHmQuery request 118
SearchLookupValues request 119
SearchMatch request 119
O SearchMatchColumn 31
SearchMatchRecord 32
Operational Record Store (ORS) database, about 1 searchQuery
ORS-specific APIs case sensitivity 123
classes 25 retrieving large record sets 123
generating 24 SearchQuery 33
populating SIF field parameters 25 searchQuery operation 33
using 23 searchQuery request 123
ORS-specific Services, about 11 SearchRequestBase
paging support 125
SearchRequestBase request 125
P SearchResponseBase request 126
Security Access Manager (SAM)
paging support using with SIF 38
SearchRequestBase 125 Services Development Kit (SDK), about 5
PENDING_XREF Services Integration Framework (SIF) 3
content metadata 83 SetPassword request 126
PreviewBVT SetRecordState request 126
optional parameters 105 SIF
required parameters 105 access protocols 6
usage example 105 asynchronous requests, making 34
use case 105 constructing requests 22
PreviewBVT API 105 debug log 20
PreviewBVT request 105 how requests are processed 8
process method, about 12 Javadoc, about 14
PromotePendingXref request 107 metadata management API, using 39
PromotePendingXrefs processing responses 22
state management 107 transaction attribute type 21
proxies 7 types of requests 9
Put using 21
state management 108 using SAM 38
transaction support 108 SIF calls
Put request 108 applyChangeList 55
createChangeList 64
getOrsMetadata 93
R SIF SDK
about 16
RAW sif.search.result.drop.batch.interval.milliseconds 20
content metadata 83 sif.search.result.drop.batch.record.count 20
real-time processing, about 2 sif.search.result.query.timeToLive.seconds 20
ReassignRecords request 113 sif.search.result.refresh.interval.seconds 20
RecordKey SIP_HOME environment variable 14
about 23 siperian-api.jar
Records about 20
about 23 siperian-sifsdk.zip, about 14
RegisterCustomIndex siperian.sif.jms.queue
about 114 about 34
RegisterCustomTableObject SiperianClient
about 115 process method, about 12
RegisterUsers SiperianClient class 5, 12
transaction support 115 SiperianObjectUID
RegisterUsers request 115 about 18
RemoveMatchedRecords SOAP protocol 7
about 116 state management
Repository Manager APIs, about 50 CleansePut 60
ResetBatchGroup request 117 defined 11
Restore request 117 Delete 65
rollbackStrategy field (ApplyChangeList) 55 GetBvt 86
GetMatchedRecords 91
138 Index
Merge 104 UnregisterUsers request 131
PromotePendingXrefs 107 UpdateRelationship
Put 108 adding new relationship for foreign key type 131
State Management APIs, about 50 UpdateRelationship request 131
State Management Services, about 11 UpdateTask 132
User Management APIs, about 50
User Management Services, about 12
T
Task APIs, about 50
TaskData V
about 19 ValidateChangeList request 133
TaskRecord ValidateMetadata 134
about 20 ValidateTasks 134
Tokenize request 128 validation rules
Transaction attribute type Load Process vs. SIF Put 108
about 21
transaction support
Put 108
RegisterUsers 115 W
UnregisterUsers 131 Web Services Description Language (WSDL)
transactions ORS-specific APIs 24
using 40 Web Services Description Language (WSDL), about 7
tree unmerge web services, about 7
Unmerge 129
X
U XML Message
Unlink request 129 elements 35
Unmerge XML over HTTP
cascade unmerge 129 using 7
linear unmerge 129 XREF
tree unmerge 129 content metadata 83
XREF added directly to BO 129 XREF_HISTORY
Unmerge request 129 content metadata 83
UnregisterUsers
transaction support 131
Index 139