135
Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

  • Upload
    others

  • View
    16

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica MDM Multidomain Edition for Oracle(Version 9.5.1)

Services Integration Framework (SIF)Guide

Page 2: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica MDM Multidomain Edition for Oracle Services Integration Framework (SIF) Guide

Version 9.5.1September 2012

Copyright (c) 1998-2012 Informatica. All rights reserved.

This software and documentation contain proprietary information of Informatica Corporation and are provided under a license agreement containing restrictions on use anddisclosure 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 internationalPatents 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 inDFARS 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 inwriting.

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 OnDemand, Informatica Identity Resolution, Informatica Application Information Lifecycle Management, Informatica Complex Event Processing, Ultra Messaging and InformaticaMaster Data Management are trademarks or registered trademarks of Informatica Corporation in the United States and in jurisdictions throughout the world. All other companyand 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 rightsreserved. Copyright © Sun Microsystems. All rights reserved. Copyright © RSA Security Inc. All Rights Reserved. Copyright © Ordinal Technology Corp. All rightsreserved.Copyright © Aandacht c.v. All rights reserved. Copyright Genivia, Inc. All rights reserved. Copyright Isomorphic Software. All rights reserved. Copyright © MetaIntegration Technology, Inc. All rights reserved. Copyright © Intalio. All rights reserved. Copyright © Oracle. All rights reserved. Copyright © Adobe Systems Incorporated. Allrights 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 © InformationBuilders, Inc. All rights reserved. Copyright © OSS Nokalva, Inc. All rights reserved. Copyright Edifecs, Inc. All rights reserved. Copyright Cleo Communications, Inc. All rightsreserved. Copyright © International Organization for Standardization 1986. All rights reserved. Copyright © ej-technologies GmbH. All rights reserved. Copyright © JaspersoftCorporation. All rights reserved. Copyright © is International Business Machines Corporation. All rights reserved. Copyright © yWorks GmbH. All rights reserved. Copyright ©Lucent Technologies 1997. All rights reserved. Copyright (c) 1986 by University of Toronto. All rights reserved. Copyright © 1998-2003 Daniel Veillard. All rights reserved.Copyright © 2001-2004 Unicode, Inc. Copyright 1994-1999 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 © RedHat, Inc. All rights reserved. Copyright © The Board of Trustees of the Leland Stanford Junior University. All rights reserved. Copyright © EMC Corporation. All rights reserved.

This product includes software developed by the Apache Software Foundation (http://www.apache.org/), and other software which is licensed under the Apache License,Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing,software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See theLicense for the specific language governing permissions and limitations under the License.

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 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 notlimited 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 ofthis 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 thissoftware 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 withoutfee 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 availableat 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 termsavailable 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 thissoftware 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 & WirelessDeutschland. 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 subjectto 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 termsavailable 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://www.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://developer.apple.com/library/mac/#samplecode/HelpHook/Listings/HelpHook_java.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/

Page 3: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

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; and http://xsom.java.net.

This product includes software licensed under the Academic Free License (http://www.opensource.org/licenses/afl-3.0.php), the Common Development and DistributionLicense (http://www.opensource.org/licenses/cddl1.php) the Common Public License (http://www.opensource.org/licenses/cpl1.0.php), the Sun Binary Code LicenseAgreement 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 softwareare subject to terms available at http://xstream.codehaus.org/license.html. This product includes software developed by the Indiana University Extreme! Lab. For furtherinformation 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 impliedwarranties of noninfringement, merchantability, or use for a particular purpose. Informatica Corporation does not warrant that this software or documentation is error free. Theinformation provided in this software or documentation may include technical inaccuracies or typographical errors. The information in this software and documentation issubject 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 SoftwareCorporation (“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 NOTLIMITED 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 OFTHE POSSIBILITIES OF DAMAGES IN ADVANCE. THESE LIMITATIONS APPLY TO ALL CAUSES OF ACTION, INCLUDING, WITHOUT LIMITATION, BREACHOF CONTRACT, BREACH OF WARRANTY, NEGLIGENCE, STRICT LIABILITY, MISREPRESENTATION AND OTHER TORTS.

Part Number: MDM-SIF-95100-0001

Page 4: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Table of Contents

Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viLearning About Informatica MDM Hub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi

Informatica Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Customer Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Web Site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Multimedia Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii

Informatica Global Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

Chapter 1: Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Overview 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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

About Informatica MDM Hub Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

How SIF Requests Are Processed. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Types of SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Using SIF SDK to Interface with SIF Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Chapter 2: Setting Up the SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Overview of Setting Up the SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Before You Begin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Deploying the SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

About SIF API Javadoc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Building Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Chapter 3: Using the SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Overview of Using the SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

About SIF SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Informatica MDM Hub SIF Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Table of Contents i

Page 5: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF Development Kit (SIF-SDK). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

About SiperianObjectUID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

About TaskData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

About TaskRecord. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

SIF Client Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Exact Matches on Fuzzy Base Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

SIF API Debug Log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

The cmxserver.properties Search Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Using SIF API Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

SiperianRequest Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

Constructing Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

Processing Responses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

About Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

About RecordKey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Using ORS-specific APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

Generating ORS-specific APIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

ORS-specific API Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Populating SIF API Field Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Cleanse[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

CleansePut[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Get[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

Put[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

SearchMatchColumn[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

SearchMatchRecord[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

SearchQuery[Resource_Name]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Making Asynchronous SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

About JMS Event Messages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

JMS Message Queues for Asynchronous SIF Invocations. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Run-time Processing of Asynchronous SIF Service Invocations. . . . . . . . . . . . . . . . . . . . . . . . 39

Using the Security Access Manager (SAM) with SIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Using Informatica MDM Hub Metadata Management API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

SIF Requests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

SIF Metadata Management Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Using Transactions in the EJB Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Transactions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Composite Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Chapter 4: Using the Security Access Manager with SIF API. . . . . . . . . . . . . . . . . . . . . . . 43Overview of Using the Security Access Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

About SAM and SIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Setting Permissions for Specific Roles and Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Object Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

ii Table of Contents

Page 6: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Batch Group API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Data Steward API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Data Retrieval API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Data API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Data Update / Insert API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Hierarchy Manager API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Merge Workflow API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Metadata API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Metadata Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Metadata Manager API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

State Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

User Management API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Task API Required Permissions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Miscellaneous API Required Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Chapter 5: SIF API Reference. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Functional SIF API Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Reference SIF API Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

AcceptUnmatchedRecordsAsUnique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

AddRelationship. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

ApplyChangeList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

AssignUnmergedRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Authenticate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

CanUnmergeRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Cleanse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

CleansePut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

ClearAssignedUnmergedRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

CreateChangeList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

CreateTask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Delete. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

DeleteRelationship. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

DescribeSiperianObject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

ExecuteBatchGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

FlagForAutomerge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

Get. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

GetAssignableUsersForTasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

GetAssignedRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

GetBatchGroupStatus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

GetBvt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

GetEffectivePeriods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

GetEntityGraph. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

GetLookupValue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Table of Contents iii

Page 7: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

GetLookupValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

GetMatchedRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

GetMergeHistory. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

GetOneHop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

GetOrsList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

GetOrsMetadata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

GetSearchResults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

GetSiperianObjectCompatibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

GetSystemTrustSettings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

GetTaskLineage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

GetTasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

GetTrustGraphData. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

GetTrustScore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

GetUnmergedRecordCount. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

GetXrefForEffectiveDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

Link. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

ListSiperianObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

MultiMerge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

PreviewBVT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

PromotePendingXrefs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

Put . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

ReassignRecords. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

RegisterUsers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

ResetBatchGroup. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

Restore. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

SearchHmQuery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

SearchLookupValues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

SearchMatch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

SearchQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

SearchRequestBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

SearchResponseBase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

SetPassword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

SetRecordState. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

Tokenize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

Unlink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

Unmerge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

UnregisterUsers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

UpdateRelationship. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

UpdateTask. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

ValidateChangeList. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

ValidateMetadata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

ValidateTasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

iv Table of Contents

Page 8: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

Table of Contents v

Page 9: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

PrefaceWelcome to the Informatica MDM Hub Services Integration Framework Guide. This guide explains how to use theServices Integration Framework (SIF) to integrate Informatica MDM Hub functionality with your applications andhow to create applications using the data provided by Informatica MDM Hub. SIF allows you to integrateInformatica MDM Hub smoothly with your organization’s applications.

Learning About Informatica MDM Hub

Informatica MDM Hub Release GuideThe Informatica MDM Hub Release Guide describes the new features in this Informatica MDM Multidomain Editionfor Oracle release.

Informatica MDM Hub Release NotesThe Informatica MDM Hub Release Notes contain important information about this Informatica MDM MultidomainEdition for Oracle release. Installers should read the Informatica MDM Hub Release Notes before installingInformatica MDM Multidomain Edition for Oracle.

Informatica MDM Hub OverviewThe Informatica MDM Hub Overview introduces Informatica MDM Hub, describes the product architecture andexplains core concepts that users need to understand before using Informatica MDM Hub. All users should readthe Informatica MDM Hub Overview first.

Informatica MDM Hub Installation GuideThe Informatica MDM Hub Installation Guide explains to installers how to set up Informatica MDM Hub, the HubStore, the Hub Server, the Cleanse Match Servers, and other components. There is an Informatica MDM HubInstallation Guide for each supported platform.

Informatica MDM Hub Upgrade GuideThe Informatica MDM Hub Upgrade Guide explains to installers how to upgrade a previous Informatica MDM Hubversion to the most recent version.

vi

Page 10: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica MDM Hub Cleanse Adapter GuideThe Informatica MDM Hub Cleanse Adapter Guide explains to installers how to configure Informatica MDM Hub touse the supported adapters and cleanse engines.

Informatica MDM Hub Data Steward GuideThe Informatica MDM Hub Data Steward Guide explains to data stewards how to use Informatica MDM Hub toolsto consolidate and manage their organization's data. Data stewards should read the Informatica MDM Hub DataSteward Guide after having read the Informatica MDM Hub Overview.

Informatica MDM Hub Configuration GuideThe Informatica MDM Hub Configuration Guide explains to administrators how to use Informatica MDM Hub toolsto build their organization’s data model, configure and run Informatica MDM Hub data management processes, setup security, provide for external application access to Informatica MDM Hub services, and other customizationtasks. Administrators should read the Informatica MDM Hub Configuration Guide after having read theInformatica MDM Hub Overview.

Informatica MDM Hub Services Integration Framework GuideThe Informatica MDM Hub Services Integration Framework Guide explains to developers how to use theInformatica MDM Hub Services Integration Framework (SIF) to integrate Informatica MDM Hub functionality withtheir applications, and how to create applications using the data provided by Informatica MDM Hub. The ServicesIntegration Framework allows developers to integrate Informatica MDM Hub smoothly with their organization'sapplications. Developers should read the Informatica MDM Hub Services Integration Framework Guide afterhaving read the Informatica MDM Hub Overview.

Informatica MDM Hub Metadata Manager GuideThe Informatica MDM Hub Metadata Manager Guide explains how to use the Informatica MDM Hub MetadataManager tool to validate their organization’s metadata, promote changes between repositories, import objects intorepositories, export repositories, and related tasks.

Informatica MDM Hub Resource Kit GuideThe Informatica MDM Hub Resource Kit Guide explains how to install and use the Informatica MDM Hub ResourceKit, which is a set of utilities, examples, and libraries that assist developers with integrating the Informatica MDMHub into their applications and workflows. This document also provides a description of the various sampleapplications that are included with the Resource Kit.

Informatica Training and MaterialsInformatica provides live, instructor-based training to help professionals become proficient users as quickly aspossible. From initial installation onward, a dedicated team of qualified trainers ensure that an organization’s staffis equipped to take advantage of this powerful platform. To inquire about training classes or to find out where andwhen the next training session is offered, please visit Informatica’s web site (http://www.informatica.com) orcontact Informatica directly.

Preface vii

Page 11: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica Resources

Informatica Customer PortalAs an Informatica customer, you can access the Informatica Customer Portal site at http://mysupport.informatica.com. 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, the Informatica Multimedia Knowledge Base, Informatica ProductDocumentation, and access to the Informatica user community.

Informatica DocumentationThe Informatica Documentation team takes every effort to create accurate, usable documentation. If you havequestions, comments, or ideas about this documentation, contact the Informatica Documentation team throughemail at [email protected]. We will use your feedback to improve our documentation. Let usknow 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.

Informatica Web SiteYou can access the Informatica corporate web site at http://www.informatica.com. The site contains informationabout Informatica, its background, upcoming events, and sales offices. You will also find product and partnerinformation. The services area of the site includes important information about technical support, training andeducation, and implementation services.

Informatica How-To LibraryAs an Informatica customer, you can access the Informatica How-To Library at http://mysupport.informatica.com.The How-To Library is a collection of resources to help you learn more about Informatica products and features. Itincludes articles and interactive demonstrations that provide solutions to common problems, compare features andbehaviors, and guide you through performing specific real-world tasks.

Informatica Knowledge BaseAs 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 Informaticaproducts. You can also find answers to frequently asked questions, technical white papers, and technical tips. Ifyou have questions, comments, or ideas about the Knowledge Base, contact the Informatica Knowledge Baseteam through email at [email protected].

Informatica Multimedia Knowledge BaseAs an Informatica customer, you can access the Informatica Multimedia Knowledge Base at http://mysupport.informatica.com. The Multimedia Knowledge Base is a collection of instructional multimedia filesthat help you learn about common concepts and guide you through performing specific tasks. If you havequestions, comments, or ideas about the Multimedia Knowledge Base, contact the Informatica Knowledge Baseteam through email at [email protected].

viii Preface

Page 12: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica Global Customer SupportYou can contact a Customer Support Center by telephone or through the Online Support. Online Support requiresa user name and password. You can request a user name and password at http://mysupport.informatica.com.

Use the following telephone numbers to contact Informatica Global Customer Support:

North America / South America Europe / Middle East / Africa Asia / Australia

Toll FreeBrazil: 0800 891 0202Mexico: 001 888 209 8853North America: +1 877 463 2435

Toll FreeFrance: 0805 804632Germany: 0800 5891281Italy: 800 915 985Netherlands: 0800 2300001Portugal: 800 208 360Spain: 900 813 166Switzerland: 0800 463 200United Kingdom: 0800 023 4632

Standard RateBelgium: +31 30 6022 797France: +33 1 4138 9226Germany: +49 1805 702 702Netherlands: +31 306 022 797United Kingdom: +44 1628 511445

Toll FreeAustralia: 1 800 151 830New Zealand: 09 9 128 901

Standard RateIndia: +91 80 4112 5738

Preface ix

Page 13: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

x

Page 14: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

C H A P T E R 1

IntroductionThis chapter includes the following topics:

¨ Overview of Services Integration Framework (SIF), 1

¨ About Informatica MDM Hub and External Applications, 1

¨ About Services Integration Framework (SIF), 3

¨ About SIF Access Protocols, 6

¨ About Informatica MDM Hub Requests, 9

Overview of Services Integration Framework (SIF)This chapter introduces the Services Integration Framework (SIF) and describes the environment for applicationprograms that use SIF to interact with Informatica MDM Hub.

About Informatica MDM Hub and External ApplicationsInformatica MDM Hub is the best platform available today for deploying MDM solutions across the enterprise.Informatica MDM Hub offers an integrated, model-driven, and flexible enterprise MDM platform that can be used tocreate and manage all kinds of master data.

Informatica MDM Hub is a server that resides at the center of an enterprise software network. It maintains the bestversion of the truth for a set of entities (for example, customer records) that may be common to severalapplications on the network. So, for example, Informatica MDM Hub helps keep track of whether Jane Ann Smitheon the sales lead system represents the same customer as John Anders Smith on the SAP system and, if so, howthat customer spells their name.

Informatica MDM Hub uses batch processes and manual intervention when necessary to match new informationagainst its version of the information. It also interacts with Informatica applications (for example, the tools in theData 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) databasetables, which it manages in its internal database management system. Though an enterprise can have more thanone ORS, typically it has only one, for example, an ORS for its customer data. The enterprise provides a schemathat defines the database tables in the ORS.

1

Page 15: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

How External Applications Interact with Informatica MDM HubRequest/response interactions with Informatica MDM Hub typically read or update the database tables in the ORSdatabase. Informatica MDM Hub provides a generic set of API requests that are independent of the enterprise’sschema. 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 entitiesdefined in the schema. For example, a generic request might place given data into a specified database record. AnORS-specific request might identify the same data as a name and an email address and place those fields into acustomer record, as defined in the schema.

The ORS-specific requests do not exist within Informatica MDM Hub. Instead, they are methods that use theschema to validate the arguments, and then translate the ORS-specific calls into the requests and responses ofgeneric Hub operations. They allow client programs to operate at a logical level that provides greater type safetythan the generic operations.

RELATED TOPICS:¨ “Using ORS-specific APIs” on page 24

About Real-time ProcessingFor real-time processing, applications that are external to Informatica MDM Hub invoke Informatica MDM Huboperations using the Services Integration Framework (SIF) interface. SIF provides APIs for various InformaticaMDM Hub services, such as reading, cleansing, matching, inserting, and updating records.

In Informatica MDM Hub implementations, real-time processing is used as appropriate. For example, real-timeprocessing can be used to update data in the Hub Store whenever a record is added, updated, or deleted in a

2 Chapter 1: Introduction

Page 16: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

source system. Real-time processing can also be used to handle incremental data loads (data loads that occurafter 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.

About Services Integration Framework (SIF)The Services Integration Framework (SIF) is a services framework (SOA* enabled) that can be configured forInformatica MDM Hub that interfaces with client programs. Logically, it serves as a middle tier in the client/servermodel. It enables you to implement the request/response interactions using SIF access protocols.

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 toyour Informatica MDM Hub data. SIF contains:

¨ APIs for fine-grained access to data and objects in the Hub

¨ SIF SDK, a toolkit for building coarse-grained business services

¨ Set of tools designed to generate and deploy web services

RELATED TOPICS:¨ “About SIF Access Protocols” on page 6

Benefits of Using SIFUsing SIF for real-time Hub processing provides the following benefits:

¨ Rapid configuration, deployment, and management of applications integrating Informatica MDM Hub andexternal systems.

¨ Addressing integration requirements both at logical (business events and services) as well as granular (dataevents and services) levels.

¨ Process relevant events for synchronization and propagation

About Services Integration Framework (SIF) 3

Page 17: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

¨ Build services for custom data management GUI (for example, Data Manager, Merger Manager)

¨ Build services for custom applications that utilize Hub data

¨ Build services for consumption in Portals

¨ Build unified view services for composite applications that need 360° view of the customer

¨ Build virtual view services that can be integrated with applications such as Siebel (Virtual business component)

¨ Reuse business interfaces as new sources are added

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.

Here are some examples for these events services:

Data events can be generated in the external applications or Informatica MDM Hub. These events are handled byEvent driven architecture (EDA) capabilities of the Informatica MDM Hub, which includes Event Capture, EventProcessing, Event Filtering and Event Generation.

The services provided in the Informatica MDM Hub can be used by the EDA components as well as externalapplications for Query and Data Synchronization operations. Additionally existing infrastructure such as anEnterprise Service Bus (ESB) as well as Enterprise Application Integration (EAI) technologies such as Tibco,

4 Chapter 1: Introduction

Page 18: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

webMethods (and so on), and Message Oriented Middleware can be used in conjunction with Informatica’sServices Integration Framework.

About SiperianClient LibraryThe SiperianClient library and the associated Javadocs are installed with the Informatica MDM Hub Resource Kitin the resourcekit\sifsdk folder. The SIF SDK can be used for creating custom web services to be deployed alongwith Informatica MDM Hub server. These custom web services would typically be built using the SiperianClientlibrary. For an example, see the sample code for building web services using the SIF SDK in the resourcekit/samples folders.

Using SiperianClient LibraryThe process method of SiperianClient provides the basic request/response interaction between the client programand 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 youmust cast to the correct response subclass. Otherwise it throws SiperianServerException.

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 HubServer. SiperianClient can be configured for the desired protocol to communicate with the Informatica MDMHub Server: EJB, SOAP, or XML over HTTP.

Types of SIF API ApplicationsThe SIF API may be used to develop various types of applications, such as:

¨ Web services that provide a higher level, application/domain specific API.

¨ 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 EJBcan 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.

About Services Integration Framework (SIF) 5

Page 19: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

¨ Command-line application to run batch jobs and batch groups, to be run manually, scheduled for periodicexecution, or included as part of another script or application.

SIF Services Development Kit (SDK)The Informatica MDM Hub Resource Kit installer also installs the SIF Services Development Kit (SDK). You copythe SIF SDK to any client system on which you wish to develop and run programs to interact with Informatica MDMHub using SIF. If you can run a Java virtual machine (JVM) on the client system, you can use the Java classesincluded in the SIF SDK. This guide refers to these Java classes by the name of the first class you mustinstantiate, SiperianClient.

You can configure the SDK to use any SIF protocol. If you cannot run a JVM, then you must explicitly use webservices (for example, on a pure.NET system) or JMS (for example, on a mainframe system), or XML over HTTP.

About SIF Access ProtocolsThe SIF API enables you to implement the request/response interactions using any of the following accessprotocols:

¨ 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 requestand response XML. The actual development environment varies: it can be Eclipse, MS Visual Studio (.NET andothers), or other web service client tools.

¨ XML over HTTP (web services minus the SOAP envelope); this is very similar to SOAP/ web services exceptyou’re not using the SOAP protocol to “wrap” the XML request message in a SOAP envelope, nor are youneeding to retrieve the response XML from a SOAP message. One advantage of using web services is theconcept 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 inthe form of XML documents or EJBs and returns responses the same way.

6 Chapter 1: Introduction

Page 20: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF also provides a SiperianClient proxy that can be used in a Java development environment to manage theunderlying communication protocol to the Informatica MDM Hub APIs. This eliminates the complexity from such adevelopment effort and allows the users to focus on application development by configuring the chosencommunication protocol usage.

When you cannot or do not want to use the SiperianClient Java classes, you can interact directly with SIF usingother 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 configuredAsynchronousOptions object with a request. Or, you can place the request directly onto the message queue namedsiperian.sif.jms.queue.

RELATED TOPICS:¨ “Using Web Services” on page 7

¨ “Using XML Over HTTP” on page 8

¨ “Making Asynchronous SIF Requests” on page 35

Using Web ServicesInstalling Informatica MDM Hub on an application server makes the capabilities of SiperianClient available as aweb service on that application server. You can interrogate the web service to obtain Web Services DescriptionLanguage (WSDL) descriptions of the web service’s operations and arguments. These operations and argumentsparallel the methods and arguments of the SiperianClient Java classes that the web service makes available, soyou 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 APIrequest/response interactions:

1. Prepare the request

2. Submit the request

3. Process the results

4. Perform error handling

About SIF Access Protocols 7

Page 21: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Understanding WSDLIf you use a web service interface to Informatica MDM Hub, you use the same classes and methods described inthe 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 otherweb service client tools. This client environment (.NET for example) has tools for reading WSDL and producingproxies that you can call from the programming language you are using (for example, C#). The Eclipse integrateddevelopment 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 theapplication 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 yourapplication program. They translate the requests into SOAP messages and send them to the web service. Theweb service decodes the SOAP messages it receives and translates them to Java calls to the SiperianClientrunning on the application server. The web service receives responses from SiperianClient, encodes them intoSOAP 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 toconfigure 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 wasconfigured 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 14

Using XML Over HTTPUse the Hypertext Transfer Protocol (HTTP) to send requests to Informatica MDM Hub as XML documents andreceive responses the same way. The associated requests and responses are for the Informatica MDM Hubclasses that appear in Chapter 5, “SIF API Reference” on page 51

In general, you use the following generic procedure using XML over HTTP to implement the SIF API request/response interactions:

1. Prepare the request

2. Submit the request

3. Process the results

4. Perform error handling

You can access the schemas that describe the requests and responses at the following locations on theapplication server that hosts Informatica MDM Hub:

http://host:port/cmx/request/xsd/siperian-core.xsdhttp://host:port/cmx/request/xsd/siperian-types.xsdhttp://host:port/cmx/request/xsd/siperian-metadata.xsd

In these addresses, host:port represents the host name of the computer running the application server and theport on which it accepts Informatica MDM Hub requests. The three schema files provide a logical partition of theschema 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 SIFListSiperianObjects and DescribeSiperianObjects classes.

8 Chapter 1: Introduction

Page 22: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

After using the schema to construct an XML request message, use the HTTP POST method to send the request tothe 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 aboveschema.

About Informatica MDM Hub RequestsInformatica MDM Hub SIF provides a set of request/response API classes. Each Informatica MDM Hub requesthas a basic name. A naming convention enables you to predict the names associated with the various SIFprotocols from the basic name. For example, the request and response EJBs corresponding to the SIF Put classare called PutRequest and PutResponse. These names correspond in a predictable way to the Java classes usedby SiperianClient. They also correspond in a predictable way to the web services described by the Web ServicesDescription Language (WSDL) included in the SDK.

SIF provides access to these requests in the ways described in “About Services Integration Framework (SIF)” onpage 3.

How SIF Requests Are ProcessedEach SIF class is represented by a request-response pair of objects. Request object represents the action to beperformed and a response object contains the result of that action. Request and response objects can have a Javaor XML representations. Java representation requires no additional processing. XML requests will be converted toJava 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, AMand HM).

Types of SIF RequestsInformatica MDM Hub SIF provides API classes for the following services. For a complete list of the SIF requestsassociated with each functional service, and for more information regarding a specific SIF request, see Chapter 5,“SIF API Reference” on page 51.

About Informatica MDM Hub Requests 9

Page 23: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Data Steward ServicesData Steward requests enable developers to build a new breed of applications that rely on the reference data fromthe Informatica MDM Hub. Can also be used to build data management services managing both data andmetadata, including BVT, a single record or sets of records, as well as to perform searches based on matchcolumns. For more information, refer to the following SIF requests:

¨ “GetLookupValue” on page 77

¨ “GetLookupValues” on page 77

¨ “GetMatchedRecords” on page 78

¨ “GetMergeHistory” on page 78

¨ “GetSystemTrustSettings” on page 82

¨ “GetTrustGraphData” on page 86

¨ “GetTrustScore” on page 87

¨ “SearchLookupValues” on page 102

¨ “SetRecordState” on page 109

Data Retrieval ServicesData Retrieval requests enable developers to search for records. For more information, refer to the following SIFrequests:

¨ “GetBvt” on page 73

¨ “Get” on page 69

¨ “GetSearchResults ” on page 80

¨ “SearchMatch ” on page 103

¨ “SearchQuery ” on page 106

Data & Data Update / Insert ServicesData API requests enable developers to execute Informatica MDM Hub Cleanse, Link, MultiMerge, and Unlinkbase object requests. For more information, refer to the following SIF requests:

¨ “Cleanse ” on page 59

¨ “Link” on page 89

¨ “MultiMerge” on page 92

¨ “Unlink” on page 112

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 91

¨ “Put ” on page 95

¨ “Tokenize ” on page 111

¨ “Unmerge ” on page 112

10 Chapter 1: Introduction

Page 24: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Merge Workflow ServicesMerge Workflow API requests enable developers to execute post-match batch processes, such as search forunmatched or unmerged records. For more information, refer to the following SIF requests:

¨ “AcceptUnmatchedRecordsAsUnique” on page 56

¨ “AssignUnmergedRecords” on page 57

¨ “CanUnmergeRecords” on page 59

¨ “ClearAssignedUnmergedRecords” on page 63

¨ “GetAssignedRecords” on page 72

¨ “GetUnmergedRecordCount” on page 87

¨ “ReassignRecords” on page 100

Batch Group ServicesBatch Group API requests enable developers to execute batch groups directly without using the Informatica MDMHub console or stored procedures. For more information, refer to the following SIF requests:

¨ “ExecuteBatchGroup” on page 68

¨ “GetBatchGroupStatus” on page 72

¨ “ResetBatchGroup” on page 101

Metadata ServicesInformatica SIF API provides additional services for managing Informatica MDM Hub metadata. For moreinformation, refer to the following SIF requests:

¨ “ApplyChangeList” on page 56

¨ “CreateChangeList” on page 64

¨ “DeleteRelationship” on page 67

¨ “GetOrsList” on page 79

¨ “GetOrsMetadata” on page 80

¨ “ListSiperianObjects ” on page 90

¨ “ValidateChangeList” on page 116

¨ “ValidateMetadata” on page 116

ORS-specific ServicesPackages 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 24.

About Informatica MDM Hub Requests 11

Page 25: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

State Management ServicesInformatica MDM Hub supports workflow tools by storing pre-defined system states for base object and XREFrecords. By enabling state management on your data, Informatica MDM Hub offers the following additionalflexibility:

¨ Allows integration with workflow integration processes and tools

¨ Supports a “change approval” process

¨ Tracks intermediate stages of the process (pending records)

State management is the process for managing the system state of base object and XREF records to affect theprocessing 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 Hubtools that work with records. In addition, you can use the various Hub tools for managing your schema to enablestate management for a base object, or to set user permissions for controlling who can change the state of arecord.

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 ACTIVEstate for soft delete (a base object or an XREF record is marked as deleted in a user attribute or in theHUB_STATE_IND) or the PENDING state for hard delete (a base object or XREF record is physically removedfrom the database). For more information, see the chapter on state management in the Informatica MDM HubConfiguration Guide .

RELATED TOPICS:¨ “Delete” on page 65

¨ “PromotePendingXrefs” on page 93

¨ “Restore” on page 101

User Management ServicesUser Management API requests enable developers to manage user security. For more information, see thesecurity chapter in Informatica MDM Hub Configuration Guide .

RELATED TOPICS:¨ “Authenticate” on page 59

Other ServicesIn addition, the Informatica SIF API provides additional services for registering and unregistering users, managingthe audit trail, and other miscellaneous services. For more information, refer to the following SIF requests:

¨ “Audit ” on page 58

¨ “GetSiperianObjectCompatibility” on page 82

¨ “RegisterUsers” on page 100

¨ “UnregisterUsers” on page 113

12 Chapter 1: Introduction

Page 26: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Using SIF SDK to Interface with SIF ClassesThe class com.siperian.sif.client.SiperianClient contains two essentially equivalent static methods for creatingan instance of SiperianClient that is customized by a properties file or by an equivalent java.util.Propertiesobject. The properties determine the protocols that the instance uses to communicate with Informatica MDM Hub.

The process method of SiperianClient provides the basic request/response interaction between the client programand 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 youmust cast to the correct response subclass. Otherwise it throws SiperianServerException.

Each Informatica MDM Hub interaction uses a pair of subclasses of SiperianRequest and SiperianResponse. Forexample, an interaction to carry out a SIF Put request uses the classes PutRequest and PutResponse.

About Informatica MDM Hub Requests 13

Page 27: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

C H A P T E R 2

Setting Up the SIF SDKThis chapter includes the following topics:

¨ Overview of Setting Up the SIF SDK, 14

¨ Before You Begin, 14

¨ Deploying the SIF SDK, 15

¨ About SIF API Javadoc, 15

¨ Building Web Services, 16

Overview of Setting Up the SIF SDKThis chapter explains how to set up the environment and tools necessary to use the SIF SDK. It lists theprerequisites for using SIF, deploying the SIF SDK, and building web services.

Before You BeginBefore using the Informatica Services Integration Framework, you must have the following software installed:

¨ Informatica MDM Hub

¨ Ant 1.6.1 (preferred)

¨ AXIS 1.3 (optional)

¨ Eclipse Web Tools Platform IDE or 3.2 with WTP Plug-in

¨ Application server (WebLogic, WebSphere, JBoss)

Note: Ensure the Application server host computer data format is dd-mmm-yyyy. This is the date format SIFprovides.

Refer to the Informatica MDM Hub Release Notes for information about the specific versions of JDK, Ant, andsupported application servers.

14

Page 28: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Deploying the SIF SDKThe environment variable SIP_HOME denotes the directory into which you install Informatica MDM Hub. In thatdirectory 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 webservices as EAR files for deployment on an application server.

About SIF API JavadocThe Informatica MDM Hub SIF API includes Javadoc that describe the functionality and use of the individualSiperianClient java classes and objects. Javadoc is the Sun Microsystems standard for generating HTMLdocumentation from Java source code.

One you’ve deployed the SIF SDK, you can view the Javadocs for SiperianClient and its associated classes andobjects. Open index.html to see a right-hand frame and two left-hand frames, as shown in the followingillustration. The left frames provide links to the pages for all packages and all classes. The lower left framedisplays the links associated with the package you select in the upper left frame.You can select All Classes in theupper left frame to see a combined list of classes from all packages in the lower left frame.

The right frame changes to show the pages you select. Begin by exploring the classes of thecom.siperian.sif.message package. Most of the classes used in application programs are in this package and itssubpackages.

Deploying the SIF SDK 15

Page 29: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Building Web ServicesUsing the SIF Manager tool produces web services corresponding to the ORS-specific Java classes. You can usethe build.xml file included in the SIF SDK to build additional custom web services. For instructions on how tocreate a web service, see the SIF SDK Usage and Enabling SOA Guide in the Resource Kit.

RELATED TOPICS:¨ “Using ORS-specific APIs” on page 24

16 Chapter 2: Setting Up the SIF SDK

Page 30: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

C H A P T E R 3

Using the SIF SDKThis chapter includes the following topics:

¨ Overview of Using the SIF SDK, 17

¨ About SIF SDK, 17

¨ Using SIF API Requests, 22

¨ Using ORS-specific APIs, 24

¨ Making Asynchronous SIF Requests, 35

¨ Using the Security Access Manager (SAM) with SIF, 39

¨ Using Informatica MDM Hub Metadata Management API, 40

¨ Using Transactions in the EJB Protocol, 41

Overview of Using the SIF SDKThis chapter provides an overview for the Services Integration Framework API, how to use the SIF requests,Security Access Manager (SAM), ORS-specific APIs, the Metadata Management APIs, and information for workingwith transactions.

About SIF SDKThe SIF Development Kit (SIF-SDK) is a toolkit for development of web services and Java applications thatinteract with the Informatica MDM Hub. SIF-SDK is packaged with sample code that can be run in the Eclipse IDE.SIF-SDK is delivered as part of the Resource Kit containing directory structures, libraries and build files in theresourcekit\sifsdk directory of the Hub server installation.

The SIF SDK includes:

¨ utilities to build and deploy SIF applications

¨ set of Java API classes for creating services

17

Page 31: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Informatica MDM Hub SIF ManagerIn addition, Informatica MDM Hub also includes the SIF Manager, an Informatica MDM Hub Console tool thatgenerates (and deploys):

¨ data objects (Client Jar file)

¨ web services for ORS-specific APIs (WSDL and EAR file)

¨ ORS-specific JMS Event Messages for the current ORS. The XML schema for these messages can bedownloaded or accessed using a URL. For more information about JMS Event Messages, see the InformaticaMDM Hub Configuration Guide .

¨ ORS-specific APIs.

RELATED TOPICS:¨ “Making Asynchronous SIF Requests” on page 35

¨ “Using ORS-specific APIs” on page 24

SIF Development Kit (SIF-SDK)Using the SIF Development Kit (SIF-SDK) for your web services development provides the following advantages:

¨ 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 differentInformatica MDM Hub schemas (ORS databases)

You can use the SIF SDK to create data objects, components and client services, business services, and GUIcontrols for creation and deployment of web-based, rich-client applications.

About SiperianObjectUIDThe SiperianObjectUID parameter contains a string identifier for an object in Informatica MDM Hub.SiperianObjectUID is a required parameter in most API requests.

18 Chapter 3: Using the SIF SDK

Page 32: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Ensure you use the correct syntax when using the SiperianObjectUID parameter. The correct syntax is:

<Object_Type>.<Object_Name>|<Child_Object_Name>

Syntax ExamplesThe object type in the SiperianObjectUID depends on the API request. For example, the Cleanse request requiresthe 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 specifyingthe ADDRESS_UPDATE package is:

PACKAGE.ADDRESS_UPDATE

Object TypesThe following table lists the SiperianObjectUID object types.

SiperianObjectUID Object Types

AUDIT_TABLE INDEX RELATIONSHIP

BASE_OBJECT INTERNAL_TABLE REMOTE_PACKAGE

BATCH_GROUP LANDING_TABLE REPOSITORY_SETTINGS

CASCADE_UNMERGE MAPPING ROLE

CLEANSE_FUNCTION MATCH_COLUMN SAM_CUSTOM_RESOURCE

CLEANSE_LIBRARY MATCH_KEY SAM_RESOURCE

COLUMN MATCH_PATH_COMPONENT SAM_RESOURCE_GROUP

DATA_SECURITY_FILTER MATCH_PATH_COMPONENT_FILTER SAM_RESOURCE_METADATA

DISTINCT_SYSTEM MATCH_POPULATION SEQUENCE

HISTORY MATCH_RULE STAGING_TABLE

HM_BLOB MATCH_RULE_SET SUBJECT_AREA

HM_CONFIGURATION MERGE_HISTORY SYSTEM

HM_ENTITY_OBJECT MESSAGE_QUEUE_RULE SYSTEM_COLUMN_TRUST

HM_ENTITY_TYPE METADATA_MANAGER TASK_ASSIGNMENT_CONF

HM_HIERARCHY METSYSTEM TASK_TYPE

HM_PACKAGE OTHER_TABLE UNIQUE_KEY_INDEX

HM_PACKAGE_COLUMN PACKAGE USER

HM_PROFILE PRIMARY_KEY_INDEX VALIDATION_RULE

HM_RELATIONSHIP_OBJECT PRIMARY_KEY_MATCH_RULE WORKFLOW_ENGINE

About SIF SDK 19

Page 33: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SiperianObjectUID Object Types

HM_RELATIONSHIP_TYPE QUERY XREF

HM_SANDBOX QUERY_GROUP XREF_HISTORY

IMMUTABLE_SYSTEM RAW

About TaskDataThe TaskData object contains information about a task.

The following table describes the TaskData fields:

Field Description

TaskRecord A link to a data record associated with a task. See “About TaskRecord” on page 21.

Comment An optional task comment.

TaskType The task type.

SubjectAreaUID The UID of the task subject area.

Title The task title.

TaskID The ROWID of the task. Cannot be set by user.

DueDate The date when the task is due.

Priority The priority of the task.1: High priority.0: Normal priority. The default is 0.-1: Low priority.

StatusEnum The workflow status. The default is TaskStatusEnum.OPEN.

OwnerUID The user or role ID to whom the task is assigned.

InteractionID The Interaction ID.

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 isnew or has not been assigned. Cannot be set by user.

20 Chapter 3: Using the SIF SDK

Page 34: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

About TaskRecordThe TaskRecord object contains information about a record.

The following table describes the TaskRecord fields:

Field Description

SiperianObjectUID An identifier for an object in Informatica MDM Hub. See “About SiperianObjectUID” on page 18.

RecordKey An identifier for a record in Informatica MDM Hub. See “About RecordKey” on page 24.

MatchRuleUID An identifier for a match rule in Informatica MDM Hub. Only merge tasks require a MatchRuleUID.

SIF Client InterfaceThe siperian-api.jar file contains the Java classes required for using the SIF APIs:

¨ The com.siperian.sif.client package manages communications with the Hub server. You can configure theAPIs 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. Allrequests 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

Exact Matches on Fuzzy Base ObjectsTo perform exact matches on fuzzy base objects, you must add the following parameter to cleanse\resources\cmxcleanse.properties:

cmx.server.match.exact_match_fuzzy_bo_api=1

By default, this parameter is not listed by the Hub install. After adding the parameter and setting it to 1, you can doexact matching on a fuzzy BO in the API.

Note: You must restart the application server for changes to this parameter to take effect.

SIF API Debug LogThe SIF API Debug log is cmxserver.log. You can access this file here:

<hub installation>/logs/

The cmxserver.properties Search ParametersThe cmxserver.properties file contains many user-configurable settings. The cmxserver.properties file can befound in <infamdm_install_directory>/hub/server/resources/.

About SIF SDK 21

Page 35: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

The following parameters can be added to the cmxserver.properties file to change the behavior of the SIF SearchAPIs:

Parameter Description Default

sif.search.result.refresh.interval.seconds Specifies the interval for running the cleanup processfor cached searches. The cleanup process also cleansthe temporary tables that are created by the unmergeprocess.

1 second

sif.search.result.query.timeToLive.seconds Specifies the number of seconds that an unused queryremains cached. After this time has expired, anycached query can be removed.

900 seconds

sif.search.result.drop.batch.record.count Specifies the number of cached searches to process atone time. The number of searches that are specified bythis parameter are fetched until all expired searches areprocessed.The status table deletes are committed after each batchis processed.

200 searches

sif.search.result.drop.batch.interval.milliseconds Specifies the number of milliseconds to sleep after eachbatch of search results is processed. This parametercan be used to insert a delay between the processing ofeach batch.

0 milliseconds

cmx.server.match.max_time_searcher Specifies the maximum duration allowed for a search toexecute. If the search does not complete in this amountof time, the search is aborted.

99999999seconds

Using SIF API RequestsEach SIF service has a pair of messages: request and response. The typical usage is to instantiate and populate arequest (subclass of SiperianRequest), then call the SiperianClient.process() method, and cast the response(subclass of SiperianResponse), to the corresponding response class.

Note: If a date value is passed to the APIs as a string, you must ensure that the date format is yyyy/MM/ddHH:mm:ss.

SiperianRequest ClassThe SIF API classes (Java) that implement individual Informatica MDM Hub operations all extend the classSiperianRequest. This class provides access to the following information:

¨ Username and password of the user associated with the request.

¨ Every request must have an associated user. This information determines whether or not the request can haveaccess to the records and resources it needs.

¨ ORS to which the request is directed.

¨ If the request does not specify an ORS, it goes to the user’s default ORS.

¨ Interaction identifier for grouping requests into interactions.

¨ An AsynchronousOptions object containing information necessary for asynchronous requests and responses.

22 Chapter 3: Using the SIF SDK

Page 36: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

If the AsynchronousOptions object is null, SIF processes the request synchronously. If the object is not null, SIFprocesses the request synchronously or asynchronously according to the value of an option in the requestobject.

When you process a request asynchronously, SIF immediately returns a dummy response with message statusthat tells you that it is processing the request asynchronously. The actual response goes to a JMS queue ortopic that you specify. If you do not specify a queue or topic, SIF discards the actual response.

You can include a correlation ID to enable you to identify the response to this request from among multipleresponses.

¨ Transaction attribute type

The transaction attribute type specifies whether and how a request can participate in transactions. You can getbut not set this information. Different request types have different transaction attribute types. The possibletransaction attribute types are:

Transaction Attribute Type Description

SUPPORTS Works within transactions

REQUIRED Requires a transaction

REQUIRES_NEW Requires a new transaction

NOT_SUPPORTED Does not work with transactions

¨ Name of the request

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 anexception or returns a response object of the appropriate type.

Constructing RequestsEvery SIF class has an associated Request object. This object contains the description of what action is to betaken 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 ResponsesEvery 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));;

Using SIF API Requests 23

Page 37: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

About RecordsA Record is a collection of Fields, essentially a list of name/value pairs. Each name in the Record must be unique.A Field represents a named value in a Record and is strongly typed. Values can be: a String, BigInteger,BigDecimal or Date.

Both Requests and Responses can contain Records.

Usage Example… CleanseRequest cleanseRequest = new CleanseRequest(); cleanseRequest.setCleanseFunctionName( cleanseFunctionName); Record record = new Record(); for(int i=2; i<args.length; i=i+2) { Field field = new Field(); field.setName( args[i] ); field.setStringValue( args[i+1] ); record.setField(field); } cleanseRequest.setRecord(record); CleanseResponse cleanseResponse = (CleanseResponse) sipClient.process(cleanseRequest);…

About RecordKeyUniquely identifies a record in the Informatica MDM Hub. A record can be identified by a combination of:

¨ rowid—the ROWID_OBJECT value for a record

¨ systemName & pkey—a system name and primary key value in the system

¨ one or more GBIDs—Global Business identifiers that have been defined for an object

Usage Example…RecordKey recordKey = new RecordKey(); recordKey.setSystemName( systemName );recordKey.setSourceKey( sourceKey ); …putRequest.setRecordKey(recordKey );…

Using ORS-specific APIsYou can use the Hub Console SIF Manager tool to generate and deploy the code to support SIF APIs forpackages, mappings, and cleanse functions in an ORS database. Once generated, the ORS-specific APIs will beavailable with SiperianClient by using the client jar and also as a web service.

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:

¨ Field names are provided with strongly-typed values

¨ Provides a simplified use of UIDs:

- Package UIDs are implicit in the ORS-specific API name

- Match rule UIDs are selectable

¨ Allows you to find objects out-of-sync with the generated API

24 Chapter 3: Using the SIF SDK

Page 38: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Generating ORS-specific APIsUse the SIF Manager tool in the Informatica MDM Hub console to produce ORS-specific APIs for secure objects inthe form of Java classes deployed on the application server. You can also generate custom web services anddeploy them to the same application server. For more information regarding the SIF Manager, see the InformaticaMDM Hub Configuration Guide .

Note: You cannot generate ORS-specific APIs for private objects.

Note: This operation requires access to a Java compiler on the application server machine. The Java SoftwareDevelopment Kit (SDK) includes a compiler in tools.jar. The Java Runtime Environment (JRE) does not contain acompiler.

The following procedure assumes that you have already configured the base objects, packages, and mappings ofthe ORS. If you subsequently change any of these, regenerate the ORS-specific APIs.

To generate the ORS-specific APIs:

1. In the Hub Console, connect to an ORS. To learn more, see Changing the Target Database in the InformaticaMDM 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 theSIF ORS-specific APIs.Use this function to generate and deploy SIF APIs for packages, mappings, andcleanse functions in an ORS database.

Out of Sync Objects Shows the database objects in the schema that are out of sync with the generatedschema. Private objects also appear in the Out of Sync Objects list even thoughSIF APIs cannot access them.

3. Acquire a write lock.

4. Enter a value in the Logical Name field.

You can keep the default value, which is the name of the ORS. If you change the logical name, it must bedifferent from the logical name of any other ORS registered on this server.

5. Click Generate and Deploy ORS-specific SIF APIs.

SIF Manager generates the APIs. The time this requires depends on the size of the ORS schema. When thegeneration is complete, SIF Manager deploys the ORS-specific APIs and displays their URL. You can use theURL to access the WSDL descriptions from your development environment.

6. Click Download Client JAR File.

SIF Manager downloads a file called <name>Client.jar, where <name> is the logical name you provided in step “Generating ORS-specific APIs” on page 25 to a location you specify on your local machine. It is customary toplace the Jar file in the lib directory of the SIF SDK directory structure on your machine. The JAR file includesthe new classes and their Javadocs.

7. If you are using an Integrated Development Environment (IDE) and have a project file for building webservices, add the JAR file to your build classpath.

8. Modify the SIF SDK build.xml file so that the build_war macro includes the JAR file.

Note: SIF API generation requires at least one secure package, cleanse function, or mapping.

Using ORS-specific APIs 25

Page 39: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Once generated, the ORS-specific APIs will be available with SiperianClient by using the client jar and also as aweb service. The logical name is used to name the components of the deployment. SIF Manager deploys the ORS-specific APIs and displays their URL. You can use the URL to access the WSDL descriptions from yourdevelopment environment.

Note: To prevent running out of heap space for the associated SIF API Javadocs, you may need to increase thesize of the heap. The default heap size is 256M. You can override this default using the SIF.JVM.HEAP.SIZEparameter.

ORS-specific API ClassesInformatica MDM Hub ORS-specific APIs include the following classes:

¨ 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.

Populating SIF API Field Parameters

The following table provides generic parameter information for the ORS-specific APIs.

Note: The actual list of fields depends on your specific ORS.

Field Name Type Description

username String User executing request. [Optional]

password String Password of user executing request.[Optional]

encrypted Boolean true: indicates that password is encrypted.[Optional]

securityPayload Byte a security token or some other binary dataused with a third-party authenticationprovider.

orsID String ID of the ORS. [Optional]

interactionId String a unique identifier.[Optional]

isAsynchronous Boolean true: the request is placed on a JMS Queuefor processing and immediately returns aresponse acknowledging the request.[Optional]

26 Chapter 3: Using the SIF SDK

Page 40: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Field Name Type Description

jmsReplyTo Boolean true:the response is posted to the specifiedJMS Queue.false: the response is discarded. [Optional]

jmsCorrelationId Boolean true: JMS correlationId of the responsemessage is set to the specified value.[Optional]

sortCriteria String a comma-separated list of column names.

recordsToReturn Int the maximum number of Relationshiprecords to return.

returnTotal Boolean true: calculate the total number of recordssatisfying the search criteria.

removeDuplicates Boolean true: remove duplicates from the result set.

matchType MatchType object auto: matches on auto-merge match rulesonly.both: matches on both auto-merge andmanual-merge match rules.none: matches on any match column defined,regardless of match rules.

matchRuleSetUid String ID of match rule set to use, null to usedefault match rule set[Optional]

disablePaging Boolean true: disable paging to improve performance.false: returns a search token that is valid fora default of 15 minutes.

systemName String name of source system. [Optional]

sourceKey String PKEY_SRC_OBJECT of the cross-referencerecord. [Optional]

columnUid String UID of GBID Column

package Boolean the package of this role. [Optional]

xref Boolean XREF [Optional]

pendingXref Boolean true: return pending xref records. [Optional]

deletedXref Boolean true: return deleted xref records. [Optional]

history Boolean [Optional]

xrefHistory Boolean true: return xref history records. [Optional]

raw Boolean [Optional]

Using ORS-specific APIs 27

Page 41: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Field Name Type Description

returnTrustScores Boolean true: return trust scores for trust-enabledcolumns in the package and xref records.[Optional]

returnLineage Boolean true: return lineage. [Optional]

generateSourceKey Boolean true: generate a source key if one is notalready specified in the record key

lastUpdateDate Date time Last update date for the Relationship record.[Optional]

Cleanse[Resource_Name]Cleanse invokes a cleanse function defined in Informatica MDM Hub. The request specifies the record and thecleanse function. The response contains a record containing the cleansed data. Use the following syntax forcalling the ORS-specific version of Cleanse:

Cleanse[ResourceName]

Where ResourceName defines the search results.

Usage ExamplesFor 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>

For Cleanse[ResourceName] Response:

<ns1:cleanseReturn xmlns="urn:siperian.api" xmlns:ns1="urn:siperian.api"> <ns1:message>The CLEANSE was processed successfully.</ns1:message> <ns1:record/></ns1:cleanseReturn>

CleansePut[Resource_Name]CleansePut combines the functions of the Cleanse and Put API requests to cleanse the specified record andupdate or insert it in the specified table in a single request. CleansePut replicates the Stage and Load batchprocesses that move data from the landing table, through the cleansing process into the staging table and finallyinto the base object. The physical landing and staging tables are not used by CleansePut.

28 Chapter 3: Using the SIF SDK

Page 42: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use the following syntax for calling the ORS-specific version of CleansePut:

CleansePut[ResourceName]

Where ResourceName defines the search results.

Usage ExampleFor 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>

For CleansePut[ResourceName] Response:

<ns1:cleansePutReturn xmlns="urn:siperian.api" xmlns:ns1="urn:siperian.api"> <ns1:message>The CLEANSE PUT was processed successfully</ns1:message> <ns1:recordKey> <ns1:systemName>CRM</ns1:systemName> <ns1:rowid>721</ns1:rowid> <ns1:sourceKey>1548851241</ns1:sourceKey> </ns1:recordKey> <ns1:actionType>Insert</ns1:actionType></ns1:cleansePutReturn>

Get[Resource_Name]Retrieves a single record from the specified package using a known key. The Get API can be used against theregular MRM packages (“PACKAGE.” SiperianObjectUid prefix). Use the following syntax for calling the ORS-specific version of Get:

Get[ResourceName]

Where ResourceName defines the search results.

By default Get returns the package record for the specified key.

Usage ExampleFor Get[ResourceName] Request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:siperian.api"> <soapenv:Header/> <soapenv:Body> <urn:get>

Using ORS-specific APIs 29

Page 43: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

<!--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>

For Get[ResourceName] Response:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <getReturn xmlns="urn:siperian.api"> <message>The GET was executed successfully - retrieved 1 records</message> <recordKey> <rowid>173</rowid> </recordKey> <record> <field> <stringValue>173</stringValue> <name>ROWID_OBJECT</name> </field> <field> <stringValue>ELIEZER MENDEZ</stringValue> <name>DISPLAY_NAME</name> </field> <field> <stringValue>Person</stringValue> <name>PARTY_TYPE</name> </field> <siperianObjectUid>PACKAGE.PKG_PARTY</siperianObjectUid> </record> </getReturn> </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 thefollowing syntax for the ORS-specific version of Put:

Put[ResourceName]

30 Chapter 3: Using the SIF SDK

Page 44: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Where ResourceName defines the search results.

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 formedrelationship records.

Usage ExampleFor 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> </q0:record> <q0:generateSourceKey>true</q0:generateSourceKey> </q0:put>

For Put[ResourceName] Response:

<ns1:putReturn xmlns="urn:siperian.api" xmlns:ns1="urn:siperian.api"> <ns1:message>The PUT was processed successfully</ns1:message> <ns1:recordKey> <ns1:systemName>CRM</ns1:systemName> <ns1:rowid>5342</ns1:rowid> <ns1:sourceKey>323387000</ns1:sourceKey> </ns1:recordKey> <ns1:actionType>Insert</ns1:actionType></ns1:putReturn>

Using ORS-specific APIs 31

Page 45: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SearchMatchColumn[Resource_Name]User specifies values of a match column. Use the following syntax for calling the ORS-specific version ofSearchMatchRecord:

SearchMatchColumn[ResourceName]

Where ResourceName defines the search results.

In addition:

¨ User specifies the match column value.

¨ Standard match rule options apply.

¨ Results are returned as records of the package.

Usage ExampleFor 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>

For SearchMatchColumn[ResourceName] Response:

<q0:searchMatchColumnPkgParty>… <q0:personName>John Doe</q0:personName>… </q0:searchMatchColumnPkgParty>

SearchMatchRecord[Resource_Name]User specifies values of a related record (shares the same parent base object). SearchMatchRecord extracts thematch column values from the record. Use the following syntax for calling the ORS-specific version ofSearchMatchRecord:

SearchMatchRecord[ResourceName]

Where ResourceName defines the search results.

32 Chapter 3: Using the SIF SDK

Page 46: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

In addition:

¨ User specifies the values of search package.

¨ Standard match rule options apply.

¨ Results are returned as records of the package.

Usage ExampleFor 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> </soapenv:Body></soapenv:Envelope>

For SearchMatchRecord[ResourceName] Response:

<q0:searchMatchRecordPkgParty>… <q0:contactPkg><q0:firstName>John</q0:firstName><q0:lastName>Doe</q0:lastName></q0:contactPkg></q0:searchMatchRecordPkgParty>

SearchQuery[Resource_Name]SearchQuery searches for records in a package based on an SQL condition clause. The condition clause canreference any columns in the package and can use operators supported by the target database. A systemparameter determines the maximum number of records that can be returned.

Using ORS-specific APIs 33

Page 47: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Note: You can perform a case-insensitive search if the case.insensitive.search property is set to true inthecmxserver.properties.xml file. For example, to perform a case-insensitive search, you can specify a searchcriterion 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:

¨ User specifies fields of the package

¨ Implicit “AND” criteria used across Fields

¨ Implicit “OR” criteria used across Records

¨ Results are returned as records of the package

Usage ExampleFor 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>

For SearchQuery[ResourceName] Response:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <searchQueryPkgPartyReturn xmlns="urn:datastewarddemo.siperian.api"> <ns1:message xmlns:ns1="urn:siperian.api">The SEARCH QUERY REQUEST was processed successfully</ns1:message> <pkgParty> <rowidObject>173</rowidObject> <displayName>ELIEZER MENDEZ</displayName> <partyType>Person</partyType> </pkgParty> <recordCount>1</recordCount> </searchQueryPkgPartyReturn> </soapenv:Body></soapenv:Envelope>

34 Chapter 3: Using the SIF SDK

Page 48: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Making Asynchronous SIF RequestsThere are two ways to make asynchronous requests

¨ Set the AsynchronousOptions on a request. When the request is submitted is placed on a queue forprocessing. If the jmsReplyTo field is set, the response is posted to the specified queue. If the jmsCorrelationIdis 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, theresponse 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 therequest message.

Note: The Services Integration Framework (SIF) uses a message-driven bean (MDB) on the JMS queue (namedsiperian.sif.jms.queue) to process incoming asynchronous SIF requests. This message queue and theconnection factory (named siperian.mrm.jms.xaconnectionfactory) must be configured for the specific applicationserver you are using for your Informatica MDM Hub implementation. Correctly configured message queues areessential to a fully-functioning Informatica MDM Hub installation. The Informatica installer automatically sets upmessage queues and connection factory configuration. If you need to manually configure your message queues orconnection factories for testing or troubleshooting purposes, see the Informatica MDM Hub Installation Guide.

About JMS Event MessagesInformatica MDM Hub Console includes a JMS Event Schema Manager tool that you can use to generate anddeploy ORS-specific JMS event messages for the current ORS. The XML schema for these messages can bedownloaded or accessed using a URL. For more information about JMS event messages, see the “Configuring thePublish Process” and “Generating ORS-specific APIs and Message Schemas” chapters in the Informatica MDMHub Configuration Guide .

JMS ORS-specific event messages:

¨ use SIF-style XML (utilized Castor)

¨ provide an associated message schema (this is available using a file or URL)

¨ enable scheduled auto-generation

¨ are backwards-compatible; the message queue can be configured to generate new or legacy format

The JMS Event Schema Manager uses an XML schema that defines the message structure the Hub uses togenerate JMS messages. This XML schema is included as part of the Informatica MDM Hub Resource Kit. (TheORS-specific schema is available using a URL or downloadable as a file).

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 initiallysaved. Consequently, the database display name is unique and should be used as the initial logical name insteadof the schema name to be consistent with the SIF APIs. You must change the logical name before generating theschema.

Making Asynchronous SIF Requests 35

Page 49: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

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 objectsfor each package in the schema:

Object Name Description

[packageName]Event Complex type containing elements of type EventMetadata and [packageName].

[packageName]Record Complex type representing a package and its fields. Also includes an element of typeSipMetadata. This complex type resembles the package record structures defined inthe Informatica MDM Hub Services Integration Framework (SIF).

Note: If legacy XML event message objects are to be used, ORS-specific message object generation is notrequired.

Elements in an XML MessageThe following table describes the elements in an XML message.

Field Description

Root Node

<siperianEvent> Root node in the XML message.

Event Metadata

<eventMetadata> Root node for event metadata.

<messageId> Unique ID for siperianEvent messages.

<eventType> Type of event. One of the following values:InsertUpdateUpdate XREFAccept as UniqueMergeUnmergeMerge Update

<baseObjectUid> UID of the base object affected by this action.

<packageUid> UID of the package associated with this action.

<messageDate> Date/time when this message was generated.

<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

<eventTypeEvent> Root node for event details.

36 Chapter 3: Using the SIF SDK

Page 50: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Field Description

<sourceSystemName> Name of the source system associated with this event.

<sourceKey> Value of the PKEY_SRC_OBJECT associated with this event.

<eventDate> Date/time when the event was generated.

<rowid> RowID of the base object record that was affected by the event.

<xrefKey> Root node of a cross-reference record affected by this event.

<systemName> System name of the cross-reference record affected by this event.

<sourceKey> PKEY_SRC_OBJECT of the cross-reference record affected by this event.

<packageName> Name of the secure package associated with this 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 generatedusing the JMS Event Schema Manager tool.

<mergedRowid> List of ROWID_OBJECT values for the losing records in the merge. This field is included inmessages for Merge events only.

JMS Message Format Example<?xml version="1.0" encoding="UTF-8"?><siperianEvent> <eventMetadata> <eventType>Update</eventType> <baseObjectUid>BASE_OBJECT.CUSTOMER</baseObjectUid> <packageUid>PACKAGE.CUSTOMER_PKG</packageUid> <messageDate>2008-04-24T15:35:51.000-07:00</messageDate> <orsId>localhost-mrm-CMX_ORS</orsId> <triggerUid>MESSAGE_QUEUE_RULE.UpdateTrigger</triggerUid> </eventMetadata>

<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> <systemName>System1</systemName> <sourceKey>2-1</sourceKey> </xrefKey> <customerPkg> <rowidObject>1</rowidObject> <creator>admin</creator> <createDate>2008-04-22T15:47:04.000-07:00</createDate> <updatedBy>admin</updatedBy> <lastUpdateDate>2008-04-24T15:35:50.000-07:00</lastUpdateDate> <lastRowidSystem>TESTSYSTEM</lastRowidSystem> <firstName>John</firstName> <lastName>Doe</lastName> </customerPkg> </updateEvent>

</siperianEvent>

Making Asynchronous SIF Requests 37

Page 51: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

JMS Message Queues for Asynchronous SIF InvocationsThis section describes the JMS message queues that Informatica MDM Hub uses to process asynchronous SIFservice invocations.

About JMS Message QueuesInformatica supports embedded message queues, which uses the JMS providers that come with applicationservers. An embedded message queue uses the JNDI name of ConnectionFactory and queue to connect with JMSqueue. It requires those JNDI names that have been set up by the application server.

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 needto manually configure your message queues or connection factories for testing or troubleshooting purposes, seethe Informatica MDM Hub Installation Guide for your platform.

Architecture of JMS Message Queue Used with SIFYou can use asynchronous inbound message queues to handle the asynchronous processing of Informatica MDMHub service invocations, as shown in the following figure.

The Services Integration Framework (SIF) uses a message-driven bean (MDB) on the JMS queue (namedsiperian.sif.jms.queue) to process incoming asynchronous SIF requests. This message queue and theconnection factory (named siperian.mrm.jms.xaconnectionfactory) is set up during the installation process. asdescribed 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 requeston the incoming JMS queue.

If you are using asynchronous calls, you can view the response published on the outbound JMS queue; theoutbound JMS queue is specified in the request (not the JMS queue that we’re publishing to). This JMS queue isnot maintained by Informatica MDM Hub. If you’re passing the request parameter asynchronously and using aJMS queue, you must listen to the specific queue to get the response.

38 Chapter 3: Using the SIF SDK

Page 52: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Run-time Processing of Asynchronous SIF Service InvocationsYou can use an outbound message queue as a communication channel to feed data changes back to sourcesystems and/or external applications, as shown in the following figure:

For asynchronous SIF service invocations:

1. An external application sends a message containing a Informatica MDM Hub service invocation request to thesiperian.sif.jms.queue queue.

You can configure a message rule to control data going to the C_REPOS_MQ_DATA_CHANGE table. Formore 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 creatingyour 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 MDMHub 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.

Using the Security Access Manager (SAM) with SIFInformatica MDM Hub Security Access Manager (SAM) is Informatica’s comprehensive security framework forprotecting Informatica MDM Hub resources from unauthorized access. At run time, SAM enforces yourorganization’s security policy decisions for your Informatica MDM Hub implementation, handling userauthentication and access authorization according to your security configuration.

Note: SAM security applies primarily to users of third-party applications who want to gain access to InformaticaMDM Hub resources. SAM applies only tangentially to Hub Console users. The Hub Console has its own securitymechanisms to authenticate users and authorize access to Hub Console tools and resources.

Using the Security Access Manager (SAM) with SIF 39

Page 53: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

RELATED TOPICS:¨ “Using the Security Access Manager with SIF API” on page 43

Using Informatica MDM Hub Metadata ManagementAPI

The following example highlights Informatica MDM Hub requests that access metadata using the ServicesIntegration Framework (SIF).

SIF RequestsFor detailed descriptions of each request, refer to Chapter 5, “SIF API Reference” on page 51 and review theassociated Informatica MDM Hub Javadoc for that API class.

SIF API Request Description Reference

ApplyChangeList Applies a change list to the currentrepository.

“ApplyChangeList” on page 56

CreateChangeList Creates a change list in XML format forthe current repository.

“CreateChangeList” on page 64

GetOrsMetadata Export metadata to a change list XMLfile.

“GetOrsMetadata” on page 80

ValidateChangeList Validates a change list against thecurrent repository.

“ValidateChangeList” on page 116

ValidateMetadata Validates the metadata for the currentrepository.

“ValidateMetadata” on page 116

SIF Metadata Management Example// See com.siperian.sif.client.sample.SiperianClientExamples.java// code examples in the SIF SDK for an example of how to set up// the sifClient object (of type SiperianClient)

//createChangeList

CreateChangeListRequest createChangeListRequest = new CreateChangeListRequest(); createChangeListRequest.setUsername("admin"); createChangeListRequest.setPassword(new com.siperian.sif.message.Password("admin")); createChangeListRequest.setOrsId("localhost-orcl-CMX_TGT"); createChangeListRequest.setSourceRepositoryId("localhost-orcl-CMX_SRC");

CreateChangeListResponse createChangeListResponse = (CreateChangeListResponse)sifClient.process(createChangeListRequest); System.out.println("change list xml: " + createChangeListResponse.getChangeListXml());

//validateChangeList

ValidateChangeListRequest validateChangeListRequest = new ValidateChangeListRequest();

validateChangeListRequest.setUsername("admin"); validateChangeListRequest.setPassword(new com.siperian.sif.message.Password("admin")); validateChangeListRequest.setOrsId("localhost-orcl-CMX_TGT");

40 Chapter 3: Using the SIF SDK

Page 54: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

validateChangeListRequest.setChangeListXml(createChangeListResponse.getChangeListXml());

ValidateChangeListResponse validateChangeListResponse = (ValidateChangeListResponse)sifClient.process(validateChangeListRequest);

System.out.println("Change list is valid?: " + validateChangeListResponse.isSuccess());

//applyChangeList

ApplyChangeListRequest applyChangeListRequest = new ApplyChangeListRequest(); applyChangeListRequest.setUsername("admin"); applyChangeListRequest.setPassword(new com.siperian.sif.message.Password("admin")); applyChangeListRequest.setOrsId("localhost-orcl-CMX_TGT"); applyChangeListRequest.setChangeListXml(createChangeListResponse.getChangeListXml()); ApplyChangeListResponse applyChangeListResponse = (ApplyChangeListResponse)sifClient.process(applyChangeListRequest); System.out.println("apply change list was successful?: " + applyChangeListResponse.isSuccess());

//validateMetadata

ValidateMetadataRequest validateMetadataRequest = new ValidateMetadataRequest(); validateMetadataRequest.setUsername("admin"); validateMetadataRequest.setPassword(new com.siperian.sif.message.Password("admin")); validateMetadataRequest.setOrsId("localhost-orcl-CMX_TGT");

ValidationCheckType [] checkTypes = {ValidationCheckType.PHYSICAL_CHECKLETS, ValidationCheckType.REPOSITORY_CHECKLETS, ValidationCheckType.SYSTEM_CHECKLETS};

validateMetadataRequest.setChecks(checkTypes);

ValidateMetadataResponse validateMetadataResponse = (ValidateMetadataResponse)sifClient.process(validateMetadataRequest);

System.out.println("validateMetadata response: "+ validateMetadataResponse.getMessage()); System.out.println("number of validation issues found: " + validateMetadataResponse.getErrors().length);

//getOrsMetadata

GetOrsMetadataRequest getOrsMetadataRequest = new GetOrsMetadataRequest(); getOrsMetadataRequest.setUsername("admin"); getOrsMetadataRequest.setPassword(new com.siperian.sif.message.Password("admin")); getOrsMetadataRequest.setOrsId("localhost-orcl-CMX_TGT");

GetOrsMetadataResponse getOrsMetadataResponse = (GetOrsMetadataResponse) sifClient.process(getOrsMetadataRequest );

System.out.println("ORS Metadata (first line only): " + getOrsMetadataResponse.getRepositoryXml().substring(0, 80));;

Using Transactions in the EJB ProtocolInformatica MDM Hub runs within an environment that supports EJBs. This means that Informatica MDM Hubrequests can take place within transactions.

Note: Transactions are only available using the EJB protocol (that is, using a Java application, not using webservices).

Using Transactions in the EJB Protocol 41

Page 55: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

TransactionsA transaction is a set of procedures or operations that must all complete without generating an error, or return theapplication to the original state (prior to the transaction).

Composite ServicesA composite service is one that requires many requests to create the appropriate response object. For example, aservice that returns the complete client profile is created from a profile, one or more addresses, emails, and phonenumbers.

The transactions for the composite service can be enabled by changing the SiperianClient properties to use EJBsas the underlying interaction protocol. The composite service simply sends message to trigger a bunch of serverside of services through service calls. Note that the Hub does not control transactions for external compositeservices; instead, these must be managed by your service.

ExampleIf you are using the EJB protocol, then transactions are available. The SifClient object that you get when usingEJB is an instance of EjbSifClient. This object has methods to get the transaction control object:

UserTransaction tx = ((EjbSiperianClient)sifClient).createTX(30)

Then you can manage the transaction as:

tx.begin();// sif api callstx.commit();

or

tx.rollback()

42 Chapter 3: Using the SIF SDK

Page 56: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

C H A P T E R 4

Using the Security AccessManager with SIF API

This chapter includes the following topics:

¨ Overview of Using the Security Access Manager, 43

¨ About SAM and SIF, 43

¨ Setting Permissions for Specific Roles and Users, 44

Overview of Using the Security Access ManagerThis chapter explains the additional requirements the Security Access Manager (SAM) imposes on an applicationthat uses the SiperianClient SIF API. It provides information about permissions to be set for the different roles andusers using applications created with SIF API.

About SAM and SIFIf you use an application written with the SIF API requests and also implement SAM, you must ensure that theuser using an application has the appropriate permissions. To learn more about setting permissions, see thechapter on setting up security in the Informatica MDM Hub Configuration Guide .

Note: Only admin users can access private resources through SIF requests.

SAM is intended to be relatively transparent to SIF developers. Consider the following:

¨ Any user using an application that uses SIF API calls to a Informatica MDM Hub implementation that has SAMconfigured must have the appropriate permissions to access the objects that the SIF calls require. For thespecific permissions required, see Chapter 4, “Using the Security Access Manager with SIF API” on page 43.To learn more about granting those permissions, see the chapter on setting up security in the InformaticaMDM Hub Configuration Guide .

¨ In some cases, permissions are applied at the column level. An example of this would be if a user is performingGet and Put requests. (Note that column-level privileges are granted using the base object.) In this example theuser has the following permissions on a package named P_CUST:

- READ on column 1

- READ/CREATE column 2

43

Page 57: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

- no rights for column 3

For a Get request, only data from columns 1 and 2 would be displayed because only these two columns haveREAD permissions.

For a Put request, the user would be able to create a new record by inserting data into column 2 because thiscolumn 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.

Setting Permissions for Specific Roles and UsersThe SIF API calls use the underlying Informatica MDM Hub objects. For SIF API call to complete successfully, theuser must have permission to access these objects.

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 availableto the application. Set the permissions using the Secure Resources tool in the Security Access Managerworkbench.

2. Use the Roles tool in the Security Access Manager workbench to define a role to access that resource. Thisrole includes a set of access privileges to the various objects listed in “Object Types” on page 44.

3. Use the Users and Groups tool in the Security Access Manager workbench to associate the role with aspecific user.

For additional information on the tools Security Access Manager workbench, refer to the chapter on setting upsecurity in the Informatica MDM Hub Configuration Guide .

Object TypesIn the following tables, the abbreviations indicate the object or type of object for which the user requirespermission in order to successfully use this API. The degree of permission required is also indicated. The objecttypes 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

44 Chapter 4: Using the Security Access Manager with SIF API

Page 58: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Abbreviation Object

MD Metadata

MD_Man Metadata Manager

MR Match rule set

P Package

R Record

RW Raw

U Users

X XREF

XH XREF history

Batch Group API Required PermissionsThe Batch Group API calls require these permissions:

API Read Update Create Merge Delete Design Execute

ExecuteBatchGroup BG

GetBatchGroupStatus BG

ResetBatchGroup BG

Data Steward API Required PermissionsThe Data Steward APIs require these permissions.

Note: This matrix specifies a set of resource types that may be used with the certain SIF requests, but does notspecify the exact logical formula—that is, “P,B,C” can mean [P or B] and [C or B], or it can mean any other logicalcombination.

API Read Update Create Merge Delete Design Execute

AcceptUnmatchedRecordsAsUnique P, B

AssignUnmergedRecords P1

CanUnmergeRecords P, B, X

ClearAssignedUnmergedRecords P, B

Setting Permissions for Specific Roles and Users 45

Page 59: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

API Read Update Create Merge Delete Design Execute

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 tothe base object.

Data Retrieval API Required PermissionsThe Data Retrieval APIs require these permissions:

API Read Update Create Merge Delete Design Execute

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.

46 Chapter 4: Using the Security Access Manager with SIF API

Page 60: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Data API Required PermissionsThe Data API calls require these permissions:

API Read Update Create Merge Delete Design Execute

Cleanse F, M

Link P

MultiMerge P

Unlink P

Data Update / Insert API Required PermissionsThe Data Update / Insert APIs require these permissions:

API Read Update Create Merge Delete Design Execute

CleansePut B,C,D,M B,C,D,M

Merge P

Put P,C P,C

Tokenize P

Unmerge P

Hierarchy Manager API Required PermissionsThe Hierarchy Manager APIs require these permissions:

API Read Update Create Merge Delete Design Execute

AddRelationship HP

DeleteRelationship HP

GetEntityGraph HP

GetOneHop HP

SearchHmQuery P, C, HP

UpdateRelationship HP

Setting Permissions for Specific Roles and Users 47

Page 61: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Merge Workflow API Required PermissionsThe Merge Workflow APIs require these permissions:

API Read Update Create Merge Delete Design Execute

AcceptUnmatchedRecordsAsUnique P, B

AssignUnmergedRecords P

CanUnmergeRecords P, B, X

ClearAssignedUnmergedRecords P, B

GetAssignedRecords P, C

GetUnmergedRecordCount P, B

ReassignRecords P, B

Metadata API Required PermissionsThe Metadata APIs require these permissions:

API Read Update Create Merge Delete Design Execute

DescribeSiperianObject P,RP,B,D,C,F,M,MR,HP

GetOrsList (not protected)

ListSiperianObjects MD

Metadata Management API Required PermissionsThe Metadata Management APIs require these permissions:

API Read Update Create Merge Delete Design Execute

ApplyChangeList MD_Man

CreateChangeList MD_Man

ValidateChangeList MD_Man

ValidateMetadata MD_Man

48 Chapter 4: Using the Security Access Manager with SIF API

Page 62: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Metadata Manager API Required PermissionsThe Metadata Manager API requires these permissions:

API Read Update Create Merge Delete Design Execute

GetOrsMetadata MD_Man

State Management API Required PermissionsThe State Management APIs require these permissions:

API Read Update Create Merge Delete Design Execute

Delete B, if deleting BO recordX if deleting XREF recordB, X if deleting BO andXREF

PromotePendingXrefs P, C

Restore B, X

User Management API Required PermissionsThe User Management API calls require these permissions:

API Read Update Create Merge Delete Design Execute

Authenticate (none required)

SetPassword (none required)

Task API Required PermissionsThe Task API calls require the following permissions:

API Read Update Create Merge Delete Design Execute

CreateTask

GetAssignableUsersForTasks R

GetTasks

GetTaskLineage

Setting Permissions for Specific Roles and Users 49

Page 63: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

API Read Update Create Merge Delete Design Execute

UpdateTask

ValidateTasks

Miscellaneous API Required Permissions

The Informatica MDM Hub miscellaneous APIs require these permissions:

API Read Update Create Merge Delete Design Execute

Audit A

GetSiperianObjectCompatibility MD

RegisterUsers U

UnregisterUsers U

50 Chapter 4: Using the Security Access Manager with SIF API

Page 64: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

C H A P T E R 5

SIF API ReferenceThis chapter includes the following topics:

¨ Functional SIF API Listing, 51

¨ Reference SIF API Listing, 55

Functional SIF API ListingThe following is a list of Informatica SIF API requests organized by function:

SIF Functional Group/Class Description

Batch Group APIs Batch Group API requests enable developers to executebatch groups directly without using the MDM Hub Console orstored procedures.

“ExecuteBatchGroup” on page 68 Executes a set of batch jobs together, some sequentially andsome in parallel according to the configuration.

“GetBatchGroupStatus” on page 72 Get status of most recent execution; polls for status afterexecuting asynchronously.

“ResetBatchGroup” on page 101 Finds the last execution status of the given batch group, and ifits status is failed, sets it to incomplete.

Data Steward APIs Data Steward API requests are intended to make it easy for adeveloper to write applications with a custom user interfacefor data stewards. Note that this is not exclusive; you can useany SIF API requests your specific application requires, theseare just for convenience.

“GetLookupValue” on page 77 Retrieves the lookup display name (lookup code description)for the specific lookup values (lookup codes) on specifiedlookup columns.

“GetLookupValues” on page 77 Retrieves the list of valid lookup values (lookup codes) andlookup display names (lookup code descriptions) for thespecified lookup columns.

“GetMatchedRecords” on page 78 Retrieves the match candidates for the specified record.

51

Page 65: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF Functional Group/Class Description

“GetMergeHistory” on page 78 Retrieves a tree representing the history of merges for aspecified base object record.

“GetSystemTrustSettings” on page 82 Retrieves the system-specific trust settings for the specifiedcolumns.

“GetTrustGraphData” on page 86 Retrieves the data to plot the trust decay curve for thespecified trust setting.

“GetTrustScore” on page 87 Retrieves the current trust score for the specified column in abase object record.

“GetXrefForEffectiveDate” on page 88 Retrieves multiple XREF records for the specified effectivedate.

“ PreviewBVT” on page 92 Provides a preview of what a base object record would looklike when a specified set of records are merged or pendingupdates applied.

“SearchLookupValues” on page 102 Searches for lookup values that match a given lookup displayname (lookup code description).

“SetRecordState” on page 109 Sets the record state of base object records identified by thespecified keys.

Data APIs Data API requests enable developers to execute InformaticaMDM Hub Cleanse, Link, MultiMerge, and Unlink base objectrequests.

“Cleanse ” on page 59 Uses cleanse functions defined in the Informatica MDM Hubto transform an input record provided in the request to theoutput format specified by the cleanse function selected.

“Link” on page 89 Links two or more base object records using the specifiedgroupRecordKey as the group ID.

“MultiMerge” on page 92 Merges multiple base object records that have been identifiedas representing the same object and allows specifying thefield level overrides for the merged record.

“Unlink” on page 112 Unlinks two or more base object records with the group idspecified in the groupRecordKey field.

Data Update / Insert APIs Data update / insert API requests enable developers toexecute data updates and inserts on base object records.

“AddRelationship” on page 56 Enables you to add a relationship between two entities.

“CleansePut” on page 60 Inserts or updates a single record identified by a key into abase object.

“DeleteRelationship” on page 67 Deletes a relationship between two entities. by making itinactive and setting the end date to the current date. Thisdoes not remove the record from the relationship table. If therelationship is a foreign key relationship rather than a record

52 Chapter 5: SIF API Reference

Page 66: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF Functional Group/Class Description

in a relationship table, the request sets the foreign key valueto null.

“Merge ” on page 91 Merges two base object records that have been identified asrepresenting the same object.

“Put ” on page 95 Inserts or updates a single record identified by a key into abase object.

“Tokenize ” on page 111 Generates match tokens for a base object record that hasbeen updated or inserted.

“Unmerge ” on page 112 Unmerges base object (BO) records.

“UpdateRelationship” on page 114 Hierarchy Manager request for changing some characteristicsof an existing relationship.

Data Retrieval APIs Data Retrieval API requests enable developers to retrievedata, including BVT, a single record or sets of records, as wellas to perform searches based on match columns.

“GetBvt” on page 73 Retrieves the best version of truth (BVT) from the specifiedpackage using a known key.

“Get” on page 69 Retrieves a single record from the specified package using aknown key.

“GetEntityGraph” on page 75 Hierarchy Manager request for fetching a graph of entities andrelationships related to a specified set of entities.

“GetOneHop” on page 78 Hierarchy Manager request for fetching information about theentities directly related to a specified group of entities in aspecified HM configuration.

“GetSearchResults ” on page 80 Retrieves additional data when the number of records foundby the SIF API search queries (SearchMatch, SearchQuery)exceeds the number of records to return specified in thesearch API request.

“SearchHmQuery” on page 102 Provides search capabilities for Hierarchy Manager.

“SearchMatch ” on page 103 Searches for records in a package based on match columnsand rule definitions.

“SearchQuery ” on page 106 Retrieves a set of record from an MRM package satisfying thespecified criteria.

Merge Workflow APIs Merge Workflow API requests enable developers to executepost-match batch processes, such as search for unmatchedor unmerged records.

“AcceptUnmatchedRecordsAsUnique” on page 56 Once the match batch process has been run and recordshave been placed into match groups, there are often recordsthat did not match any other records in the Hub. Sets theunmatched records to unique (that is, setsCONSOLIDATION_IND=1)

Functional SIF API Listing 53

Page 67: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF Functional Group/Class Description

“AssignUnmergedRecords” on page 57 Once the match batch process has been run and recordshave been placed into match groups, the records that wereprocessed and not automatically merged are placed into theUNMERGED state. This is to assign the unmerged records tospecified user.

“CanUnmergeRecords” on page 59 Determines whether the specified cross reference (XREF)record can be unmerged from the consolidated base object.

“ClearAssignedUnmergedRecords” on page 63 Clears the list of unmerged records that are currentlyassigned to this user.

“GetAssignedRecords” on page 72 Get a set of records requiring manual merge decisions thatare assigned to the user.

“GetUnmergedRecordCount” on page 87 Get the number of unmerged records.

“ReassignRecords” on page 100 Reassigns the specified records assigned for manual mergeevaluation to another user.

Metadata APIs Metadata API requests enable developers to return metadatafor specified objects.

“DeleteRelationship” on page 67 Request to describe Informatica objects by fetching theirmetadata.

“GetOrsList” on page 79 Retrieves a list of operational record stores (ORS) registeredin the master database.

“ListSiperianObjects ” on page 90 Returns metadata of Informatica MDM Hub objects.

“DescribeSiperianObject” on page 67 Returns metadata of Informatica MDM Hub objects.

Metadata Management APIs Metadata Management API requests enable developers tomanage ORS change lists.

“ApplyChangeList” on page 56 Applies a change list to the current repository.

“CreateChangeList” on page 64 Creates a change list in XML format for the current repository.

“ValidateChangeList” on page 116 Validates a change list against the current repository.

“ValidateMetadata” on page 116 Validates the metadata for the current repository.

Metadata Manager APIs Metadata Manager API requests enable developers to exportmetadata.

“GetOrsMetadata” on page 80 Export metadata to a change list XML file.

State Management APIs State Management API requests enable developers to deleteand restore state-enabled records with state set to DELETE,as well as promote pending XREF records.

“Delete” on page 65 Deletes the specified record(s) from the Hub.

54 Chapter 5: SIF API Reference

Page 68: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SIF Functional Group/Class Description

“PromotePendingXrefs” on page 93 Promotes or flags for promotion the XREF records specified inthe request.

“Restore” on page 101 Restores the specified XREF record(s) in the Hub.

Task APIs Task APIs are used for task administration.

“CreateTask” on page 64 Creates a task.

“GetTasks ” on page 85 Retrieves lists of tasks and task details.

“GetTaskLineage” on page 83 Retrieves the lineage (history) of the specified task.

“GetAssignableUsersForTasks” on page 71 Retrieves a list of users who can be assigned a list ofspecified tasks.

“UpdateTask” on page 115 Updates a task.

“ValidateTasks” on page 117 Checks each merge task specified in the request to verifythere is a match table record

User Management APIs User Management API requests enable developers tomanage user security.

“Authenticate” on page 59 Authenticates a user against the specified ORS.

“SetPassword ” on page 109 Changes a user’s password to a new password.

Miscellaneous APIs These miscellaneous API requests enable developers toexecute audit requests, register and unregister users, andperform other compatibility requests.

“Audit ” on page 58 Add a custom entry to the Hub Audit trail.

“GetSiperianObjectCompatibility” on page 82 Request to get a checksum that represents the definition ofthe specified object in Informatica MDM Hub.

“RegisterUsers” on page 100 Allows for automated provisioning of users that areauthenticated externally using one of the registered JAASlogin modules.

“UnregisterUsers” on page 113 Allows for previously provisioned users (see RegisterUsers) tobe unregistered.

Reference SIF API ListingThis section is an alphabetical listing for the SIF API. It provides a description and use case examples for thevarious SIF API requests. Refer to the SIF Javadocs for details of how to use these API requests with theinterfaces that the Informatica Java client provides. If you are using a Web service interface to the requests, referto the Web Services Description Language (WSDL) descriptions of the Informatica Web service.

Note: Only admin users can access private resources through SIF requests.

Reference SIF API Listing 55

Page 69: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

AcceptUnmatchedRecordsAsUniqueAcceptUnmatchedRecordsAsUnique changes the state of records that have no match candidates from Unmergedto Consolidated (unique). Once a record is in the Consolidated state, it will no longer appear in the list of recordsthat needs to be reviewed and it will not be merged by the merge batch process. These records can still bemerged 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 indicatingwhether or not to change only those records assigned to the user.

The response contains the number of records accepted as unique.

Note: You can configure AcceptUnmatchedRecordsAsUnique requests only for “no system” when using the HubConsole Audit Manager to audit requests made by external applications. Once auditing for a particular SIF APIrequest is enabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. Formore information, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the AcceptUnmatchedRecordsAsUnique request:

¨ Set unmatched records as unique — You can use the AcceptUnmatchedRecordsAsUnique request in anapplication with a custom UI for the data stewards. In the screen that manages the status of records, you mightcreate a button that uses this request to accept all the unmatched records as unique.

AddRelationshipAddRelationship enables you to add a relationship between two entities.

Note: This API request applies to Hierarchy Manager. If you have not purchased, configured, and populatedHierarchy Manager, this request will fail.

The request identifies the HM configuration and hierarchy, the relationship type, the records, and a number ofoptional parameters. Note that this request cannot be used to add a new Relationship with Foreign KeyRelationship Type because adding a FK Relationship really involves updating an existing record in the FKRelationship Base Object. For more information, see “UpdateRelationship” on page 114.

The response contains the record key for the added relationship. Informatica MDM Hub infers the types of theentities being related (and thus the base objects containing those entities) from the relationship type.

Use CaseThis 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 withentities, you can use the addRelationship request to create a relationship between two entities.

Related SIF Requests¨ “UpdateRelationship” on page 114

¨ “DeleteRelationship” on page 67

ApplyChangeListThe ApplyChangeList request applies all the changes in the specified change list to the current repository (ORS).

56 Chapter 5: SIF API Reference

Page 70: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Required ParametersThe following table describes the required parameters:

Parameter Description

ChangeListXml Contains the XML string representing the change list to apply.

Optional ParametersThe 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. Thedefault is FULL_ROLLBACK.If set to ROLLBACK_TO_LAST_CHANGE: Only the change list item that failed is rolled back. All otherchanges are applied.

OwnerPassword Contains the owner password. The default is "".

ValidateDataIntegrity If set to true, data integrity validation is required.If set to false, data integrity validation is not required. The default is false.

Response FieldThe following table describes the response fields:

Field Description

Messages Contains an array of error messages.

Success If true, the change list executed without errors.If false, the change list executed with errors.

DataLost If true, data was lost because of a rollback.If false, no data was lost because of a rollback.

AssignUnmergedRecordsAssignUnmergedRecords assigns records in the unmerged state to the specified user. It assigns no more than therequested number of records. Optionally, you can specify a WHERE clause to select Unmerged records from thepackage. The Unmerged state is equivalent to setting the consolidation indicator to 2 and can also be referred toas the “ready to merge” state. Records are placed into the Unmerged state regardless of whether they matchedother records or not. This request is used to assign the records that are in the Unmerged state to a specified userfor review and processing. However, any records that are already assigned to a user will not be reassigned by thisAPI.

The response contains the number of records assigned.

Note: Hub Implementers can setup user exits that control how records are assigned. These user exits are invokedwhen this API is run and will override the standard logic for assignment of records. For information regarding userexits, see Informatica MDM Hub Configuration Guide .

Reference SIF API Listing 57

Page 71: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use CaseThis is the common scenario for using the AssignUnmergedRecords request:

¨ Assigning unmerged records to a user—You can use the AssignUnmergedRecords request in an applicationwith a custom UI for the data stewards. In the screen that manages the data steward’s queues, you mightcreate a button that uses this request to assign unmerged records.

AuditAudit adds an entry to the C_REPOS_AUDIT table to record information about some activity involving a recordstored in Informatica MDM Hub. You can log similar information about information in your own applicationprograms.

Set the attributes of the new entry (for example, component, action, status, context). Then process the request toadd the entry to the audit table. The process method returns an AuditResponse, which contains the rowid of theresulting audit record.

To use this facility, store the name of a project or similar large entity in component, and let action be an element ofthe 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 auditentries. You obtain the rowid of an audit entry from the AuditResponse that comes back when you process anAuditRequest.

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 moreinformation, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis 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 auditinginformation 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.

AuditRequest request = new AuditRequest();request.setComponent("mycompany.customerServlet");request.setAction("POST");request.setStatus("info");// from: the same system to be used in other SIF callsrequest.setFromSystem("CRM");request.setToSystem("Admin"); // to: Siperian Hub

// context: any metadata to help understand the entryrequest.setContext( dataId ); // example: pkeySource// context xml: complex metadata, for debug, may impact performancerequest.setContextXML("<metadata>"+ "<url>" + httpServletRequest. getRequestURI() + "</url>"+ "</metadata>");

// It may be helpful to identify the root packagerequest.setSiperianObjectUid(SiperianObjectType.PACKAGE.makeUid("CUSTOMER_UPDATE") );

// data xml: usually for debug only, may impact performancerequest.setDataXML( requestXmlAsString );

58 Chapter 5: SIF API Reference

Page 72: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

// If there was a related audit before this one:request.setRowidAuditPrevious(prevAuditResponse.getRowidAudit());

// If the rowid_object is known:request.setRowidObject("");

AuditResponse response = (AuditResponse)sipClient.process(request);

// Now decompose the request data and call other SIF API's ...

AuthenticateAuthenticate allows you to determine a user’s rights to access an ORS. If the user has the right to access theORS, the message in the response object is STATUS_GRANTED. Otherwise it is STATUS_DENIED. Theresponse contains a list of the roles assigned to the user and information about the user’s password—if and whenit expires and whether it is externally authenticated using a service such as LDAP.

Use CaseThis 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 accessprivileges, you can use authenticate to determine if the user possesses the required rights.

CanUnmergeRecordsCanUnmergeRecords determines whether or not specified records can be unmerged from the consolidated baseobject. The request contains a package and a key identifying the XREF to unmerge. The response contains aboolean 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 orby adding them directly using the ROWID_OBJECT of a base object record. If a cross reference is added usingthe ROWID_OBJECT and no PKEY_SOURCE_OBJECT, and there is not already a cross reference for that baseobject record for the specified system, a new cross reference record is added that is considered an “edit” crossreference.

An unmerge is not allowed if the specified cross reference is not an edit cross reference and all the other crossreferences for that base object are edit cross references. If there are at least two cross references that are not editcross references, the cross reference can be unmerged.

Note: You can configure CanUnmergeRecords requests according to a specific system when using the HubConsole Audit Manager to audit requests made by external applications. Once auditing for a particular SIF APIrequest is enabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. Formore information, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the CanUnmergeRecords request:

¨ Determining whether a given record can be unmerged—You can use the CanUnmergeRecords request inan application with a custom UI for the data stewards to determine whether two records can be unmergedbefore attempting to do so.

CleanseCleanse invokes a cleanse function defined in Informatica MDM Hub. The request specifies the record and thecleanse function. The response contains a record containing the cleansed data.

Reference SIF API Listing 59

Page 73: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Available cleanse functions can be viewed in the Hub Console in the Cleanse Function Manager. Additionally, youcan 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:

¨ a cleanse function UID: “CLEANSE_FUNCTION.[Cleanse Library Name]|[Cleanse Function Name]”

¨ or “[Cleanse Library Name]|[Cleanse Function Name]”.

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 “StringFunctions|Concatenate”.

Mappings defined in the Hub may also be accessed and used as cleanse functions. Mappings are automaticallyplaced in the “Mappings” library and can be accessed using the UID “CLEANSE_FUNCTION.Mappings|[mappingname]”.

RELATED TOPICS:¨ “CleansePut” on page 60

Use CasesThese are the common scenarios for using the cleanse request:

¨ Data cleansing for external applications — An external application can use the cleanse requestindependently of the Informatica MDM Hub master record functionality. External applications can invokecleanse 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 validateand standardize addresses. These facilities can be used by external applications to improve the quality of theaddress data that is entered into them.

¨ Cleanse used in combination with put — The most common use of the cleanse request is to cleanse anindividual 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 andallows you to search Informatica MDM Hub for records that contain values that are similar, but not necessarilyidentical to the search criteria. To improve the quality of matches returned, you can cleanse the search criteriabefore passing them to the match request.

Related SIF Requests“CleansePut” on page 60

CleansePutCleansePut cleanses the specified record and updates or inserts the record into the specified table in a singlerequest. 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 thelookups required to translate source system foreign keys into Hub foreign keys. The physical landing and stagingtables are not used by CleansePut.

The record is put into the base object based on a mapping, which defines the transformation of data from alanding table structure to a staging table structure. The staging table associated with the mapping determineswhich 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 auditrequests made by external applications. Once auditing for a particular SIF API request is enabled, Informatica

60 Chapter 5: SIF API Reference

Page 74: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

MDM Hub captures each SIF request invocation and response in the audit log. For more information, refer to theInformatica MDM Hub Configuration Guide .

Filtered RequestsA CleansePut request can be filtered so that no changes are made in the ORS. If CleansePut is filtered, anActionType 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 toprocess a record.

¨ Filtered by delta detection. In the Hub, you can enable delta detection on the staging table. With delta detectionenabled, CleansePut requests are filtered if the data does not differ from the data in the previous request.

State ManagementIf a package has state management enabled, you can specify a record's initial state when you insert a record bysetting the value of HUB_STATE_IND. When you insert a new record and do not specify a HUB_STATE_INDvalue, the HUB_STATE_IND is set to 1 (ACTIVE). You cannot use CleansePut to change the state of a record byupdating the HUB_STATE_IND value. State management is enabled in the Hub Console.

The possible values for HUB_STATE_IND and the state these values represent are outlined in the following table:

HUB_STATE_IND Value State

1 ACTIVE

0 PENDING

-1 DELETED

Transaction SupportWhen executed within an EJB context, this request can be part of a transaction with other requests. If there is afailure in any of the requests within a transaction, the entire transaction is rolled back.

RestrictionsConsider 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 havecustom code that used escaped special characters in the past, you must update your custom code to removethe escaped special characters.

¨ Both Put and CleansePut requests process null values. For example, when no value is specified for a field, thefield is set to null. However, CleansePut does not process records that contain a reference not found in alookup table.

¨ You cannot insert a null value into a nonnullable column, such as a unique key column. You must provide avalue 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 whichsystem columns can be putable.

¨ You can specify a value for HUB_STATE_IND when inserting a new record, but you cannot change the state ofan existing record by changing the HUB_STATE_IND value using the Put API. If you provide a value for theHUB_STATE_IND column when updating a record, the Put API throws an exception. To change the state of arecord, refer to the following classes: “Delete” on page 65, “Restore” on page 101, and “PromotePendingXrefs” on page 93.

Reference SIF API Listing 61

Page 75: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

¨ 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 CleansePutrequest, the lookup is on the parent key of the foreign key column instead of the lookup column defined on thestaging table.

Required ParametersThe following table lists and describes the parameters that are required by the CleansePut API:

Parameter Description

Record This parameter contains the data to be cleansed and inserted.

SiperianObjectUid Name and type of mapping to use in the CleansePutrequest. The mapping defines the structure of the record.

Optional ParametersThe following table lists and describes the optional parameters that are used by the CleansePut API:

Parameter Description

SystemName The system name of the record to be cleansed. A stagingtable is associated with a source system. If the system nameis not specified by this parameter, the staging table's sourcesystem is used.

GenerateSourceKey Useful for keyless systems (for example, an application thatdoes not persist source data). When set to true, a source keyis generated if one is not already specified.

PeriodStartDate Specifies the period start date for timeline-enabled baseobjects.

PeriodEndDate Specifies the period end date for timeline-enabled baseobjects.

Response FieldsThe Put response can contain the information described in the following table:

Field Description

RecordKey Contains the ROWID_OBJECT of the base object affected byCleansePut.When performing a CleansePut request using aROWID_OBJECT for a base object record that has beenmerged into another base object record, CleansePutresponse returns the ROWID_OBJECT of the surviving baseobject record.

62 Chapter 5: SIF API Reference

Page 76: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Field Description

RecordKey also contains a new primary key created by thekey generator if GenerateSourceKey in the request was set totrue.

ActionType Indicates the action that the Put performed. The possiblevalues are:- Insert- Update- Update XREF- No ActionTokenize requires the value of ActionType. Insertindicates that a record has not yet been tokenized and newtokens need to be created. Update and Update XREF indicatethat a record has already been tokenized and the existingtokens need to be regenerated.

Use CaseThe 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 updateor insert it in the specified table in a single request. This increases performance, when compared to doing the aCleanse 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 ofdata, inserts or updates it in the base object, and then encodes the base object so it is ready for matching. TheCleansePut response contains an ActionType value used as an input to the Tokenize request. CleansePutand Tokenize can occur in the same transaction.

Usage ExampleThe 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)

Related SIF Requests“Cleanse ” on page 59, “Put ” on page 9 5, “Tokenize ” on page 1 1 1

ClearAssignedUnmergedRecordsClearAssignedUnmergedRecords clears a user’s assigned unmerged records for the specified base object,making those records available for assignment to another user.

Note: There are no parameters for this request. All the unmerged records assigned to this user making therequest will now be available to be assigned to another user. If there is a specific user that the records should beassigned to the ReassignRecordsRequest should be used.

Reference SIF API Listing 63

Page 77: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use CaseThis is the common scenario for using the ClearAssignedUnmergedRecords request:

¨ Clearing the queue of unmerged records to a given user—You can use theClearAssignedUnmergedRecords request in an application with a custom UI for the data stewards. In thescreen that manages the data steward’s queues, you might create a button that uses this request to removeunmerged records from a user’s queue.

CreateChangeListCreateChangeList creates a change list in XML format for the current ORS. The change list contains a list ofactions and a list of any messages.

CreateChangeList Request ParametersThe following table describes the CreateChangeList parameters:

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 sourcerepository 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 FieldsThe CreateChangeList response contains the information described in the following table:

Field Description

ChangeListXml Contains the XML string representing the change list.

CreateTaskThe CreateTask API creates a new task in the C_REPOS_TASK_ASSIGNMENT table and initializes the task dataand task properties. Once a task is created, use the UpdateTask API to modify the task.

Required Request ParametersThe following table describes the required CreateTask request parameters:

Parameter Description

TaskData This parameter specifies the task to create. See “About TaskData” on page 20.If an owner is not specified in the TaskData parameter, the task assignment engine will attempt to assign thetask at its next scheduled execution time.

64 Chapter 5: SIF API Reference

Page 78: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Optional Request ParametersThe CreateTask API does not have any optional request parameters.

Response FieldsThe CreateTask response contains the information described in the following table:

Parameter Description

TaskID Contains the ROWID_OBJECT of the task that was created.

interactionID Contains the interactionID that is used to protect any pending records associated with the task. Only SIFrequests 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 inboth places and the IDs do not match, an SiperianServerException will be thrown.

Use CasesThe following scenario is a common use case for using the CreateTask request:

¨ Create a new task and assign it to a user.

Usage ExampleThe 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);

Related SIF Requests“UpdateTask” on page 115

DeleteDelete removes the specified record(s) from the Hub. If the deleteBORecord flag is specified then the BO record isdeleted even if only a sourceKey and systemName are specified.

State ManagementWhen an XREF record is deleted, the state of the BO record will be calculated as the greatest of the states of itsXREFs. The order of precedence for state is ACTIVE, PENDING, DELETED. The following list describes thebehavior of this request based on various XREF states:

¨ Active records will be transitioned to the DELETED state.

¨ Pending records will be hard deleted.

¨ Deleted records will remain unchanged.

Reference SIF API Listing 65

Page 79: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Required ParametersThe following table lists and describes the parameters that are required by the Delete API:

Parameter Description

SiperianObjectUid Name and type of the package or base object to be deleted.

SystemName Name of the system for which the record must be deleted.

RecordKey Key to uniquely identify the record to be deleted.

SourceKey Source key of the record that must be deleted.

Optional ParametersThe 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. TheDelete API deletes the base object record and all its cross-reference records. You must have delete privileges for thebase object or the parent base object.If false, the Delete API deletes the record specified by theRecordKey and SourceKey parameters.

Use CaseRecord A has two XREFs that are ACTIVE. If one of the XREFs is deleted, then record A will have one ACTIVExref and one DELETED XREF. Since the ACTIVE state has higher precedence than the DELETED state, the stateof BO record A after the delete operation is ACTIVE. If the remaining ACTIVE XREF is then deleted, record A willhave two deleted XREFs and the state of BO record A will be DELETED.

Usage ExampleThe following example deletes the XREF record with sourceKey=1234 and system=CRM from the packageCUSTOMER_UPDATE. If the XREF record is PENDING, it will be hard deleted. If the XREF record is ACTIVE, itwill be soft deleted. If the record is already in the DELETED state, the record will remain as is.

Note: Delete throws an exception if you attempt to delete a record that is in the DELETED state.

DeleteRequest request = new DeleteRequest();RecordKey recordKey = new RecordKey();recordKey.setSourceKey("1234");recordKey.setSystemName("CRM");ArrayList recordKeys = new ArrayList();recordKeys.add(recordKey);request.setRecordKeys(recordKeys); // Requiredrequest.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //RequiredDeleteResponse response = (DeleteResponse) sipClient.process(request);

Related SIF Requests“PromotePendingXrefs” on page 93, “Restore” on page 101

66 Chapter 5: SIF API Reference

Page 80: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

DeleteRelationshipDeleteRelationship deletes a relationship between two entities. This request does not remove the record from therelationship table. If the relationship is a foreign key relationship rather than a record in a relationship table, therequest sets the foreign key value to null.

This request behaves differently when used with Foreign Key Relationship Types. Since all Relationship records ofa Foreign Key Relationship Type use the same End Date, instead of setting the End Date this request sets theforeign 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 therelationship to be removed.

Note: This request requires Hierarchy Manager. If you have not purchased, installed, configured HierarchyManager, then this request will fail.

Use CaseThis is the common scenario for using the DeleteRelationship request:

¨ Delete a relationship between two HM entities — If you have Hierarchy Manager and have populated it withdata, you can use the DeleteRelationship request to delete an existing relationship between two entities.

Related SIF Requests“UpdateRelationship” on page 114, “AddRelationship” on page 56

DescribeSiperianObjectThe DescribeSiperianObject API returns the metadata for the Informatica MDM Hub objects specified in therequest.

Required ParameterThe 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 theDescribeSiperianObjects 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 18.

Response ParametersThe following table describes the information contained in the DescribeSiperianObject response.

Field Type Description

objects List A list of returned metadata for the objects specified in the request.

Reference SIF API Listing 67

Page 81: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

If you request a match key for a base object, DescribeSiperianObject returns the match column that representsthe base object, in addition to the following fields:

Field Type Description

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 asCOLUMN.<base_object_name>|<column_name>.

Use CaseThe following scenario is a common use for the DescribeSiperianObject request:

¨ Obtaining metadata about an object before manipulating it. You can use the DescribeSiperianObject requestto gather information about an object before you perform any operations on it.

Usage ExampleThe following example shows how metadata is retrieved for the base objects C_PARTY and C_ADDRESS:

DescribeSiperianObjectRequest request = new DescribeSiperianObjectRequest();request.setOrsId("orcl-VER_IDD");ArrayList objectUids = new ArrayList();objectUids.add(SiperianObjectType.BASE_OBJECT.makeUid("C_PARTY"));objectUids.add(SiperianObjectType.BASE_OBJECT.makeUid("C_ADDRESS"));request.setUids(objectUids);DescribeSiperianObjectResponse response = (DescribeSiperianObjectResponse)sipClient.process(request);

ExecuteBatchGroupExecuteBatchGroup executes a batch group. A batch group is a set of batch jobs executed together, somesequentially 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 inthis request:

¨ “ResetBatchGroup” on page 101

¨ “GetBatchGroupStatus” on page 72

Note: In addition to these Java APIs and the SOAP and HTTP XML protocols always available for SIF, thesethree (3) Batch Group requests also have database stored procedures available:

¨ cmxbg.execute_batchgroup

¨ cmxbg.reset_batchgroup

¨ cmxbg.get_batchgroup_status

For more information, see the Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the executeBatchGroup request:

¨ ExecuteBatchGroup with getBatchGroupStatus — After calling ExecuteBatchGroup, wait and then use “GetBatchGroupStatus” on page 72 to see if the batch group executed successfully.

Related SIF Requests“GetBatchGroupStatus” on page 72, “ResetBatchGroup” on page 101

68 Chapter 5: SIF API Reference

Page 82: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

FlagForAutomergeThe FlagForAutomerge API flags a record for automerge in the match table, C_<base_object_name>_MTCH. If arecord 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 thematch table and the AUTOMERGE_IND is set to 1.

Required ParametersThe 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>

UnmergedRecordKey Specifies the record key of the unmerged record.

MatchedRecordKey Specifies the record key of the matched record.

Optional ParametersThe FlagForAutomerge request does not have optional parameters.

Response FieldsThe following table describes the response fields:

Parameter Description

Message Contains a message indicating if the FlagForAutomerge request was processed successfully.

InteractionID Contains the interaction ID.

Usage ExampleThe following is a typical scenario for using the FlagForAutoMerge request:

¨ Queue a merge candidate for merge during the next automerge process.

FlagForAutomerge Usage ExampleThe following example shows how to flag record 111 to automerge with the record it matches with, in this caserecord 222:

FlagForAutomergeRequest request = new FlagForAutomergeRequest(); request.setMatchRuleUid(SiperianObjectType.MATCH_RULE.makeUid("MyMatchRule")); request.setUnmergedRecordKey(RecordKey.sourceKey("111", "Acme")); request.setMatchedRecordKey(RecordKey.sourceKey("222", "Acme")); FlagForAutomergeResponse response = sipClient.process(request);

GetGet uses a record key to retrieve a single row of data from the specified package. The row can include data frombase 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).

Reference SIF API Listing 69

Page 83: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

You can also get lineage and trust information. The trust scores are returned for the package record and the crossreference records. The lineage information returned as indicator on the trust enabled fields indicating whether thespecific 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 intoanother base object record, Get returns the surviving base object record. For example, if two base object recordsare merged, one with a ROWID_OBJECT value of ROWID_A and the other with a value of ROWID_B, theROWID_OBJECT of the surviving base object could be ROWID_A. In this scenario, if you perform a Get requestfor 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 underlyingprimary 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, thenthis 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 statemanagement 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 statemanagement 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

HISTORY Previous values for the specified base object record.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 thespecified base object.

If the package is based on a query that joins multiple base objects, content metadata is returned only for theprimary base object.

Required ParametersThe following table lists and describes the parameters that are required by the Get API:

Parameter Description

SiperianObjectUid Name and type of the package or base object to be queried.

RecordKey Key to uniquely identify the record to be fetched.

SystemName Name of the system for which XREF and XREF history mustbe retrieved.

RecordTypes Types of records to retrieve.

70 Chapter 5: SIF API Reference

Page 84: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Optional ParametersThe 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-enabledbase objects.

HistoryDate The date for which you must retrieve values of the base objectthat are effective at the specified point in time.Note: HistoryDate must be used only for timeline-enabledbase objects.

DataFilter The SQL condition to be applied to the result set.

Use CaseThe 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 singlerow of data, with any associated child records.

Usage ExampleThe following example gets a record with ROWID_OBJECT key 782 from the packagePARTY_ADDRESS_READ_PKG.

GetRequest request = new GetRequest();RecordKey recordKey = new RecordKey();recordKey.setRowid("782");request.setRecordKey(recordKey); //Requiredrequest.setSiperianObjectUID("PACKAGE.PARTY_ADDRESS_READ_PKG"); //RequiredGetResponse response = sipClient.process(request);

Related SIF Requests“GetSearchResults ” on page 80, “Put ” on page 95, “SearchQuery ” on page 106

GetAssignableUsersForTasksThe GetAssignableUsersForTasks API retrieves a list of users who can be assigned a list of specified tasks. Thealgorithm relies on the task assignment configuration by default but you can customize the configuration via theCMXUE.get_assignable_users_for_task user exit.

Required Request ParametersThe following table describes the required parameters for the GetAssignableUsersForTasks request:

Parameter Description

AssignableTaskInfoList The task type and subject area UID of a list of tasks.

Optional Request ParametersThe GetAssignableUsersForTasks request does not have optional parameters.

Reference SIF API Listing 71

Page 85: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Response FieldsThe 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 theGetAssignableUsersForTasks request.

Usage ExampleThe code in the following example retrieves users who can have Merge tasks in the Person subject area assignedto 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);

GetAssignedRecordsGetAssignedRecords fetches the current user’s records that were assigned by an “AssignUnmergedRecords” onpage 57 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 recordsto return. The response contains a set of records and a token to use to fetch more results. Use “GetSearchResults ” on page 80 to get subsequent sets of records.

Use CaseThis 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 areassigned to a specific user for display in a custom-designed UI.

Usage ExampleThe following example requests the UNMERGED records for the CUSTOMER_UPDATE package that areassigned to the user making this request.

GetAssignedRecordsRequest request = new GetAssignedRecordsRequest();request.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE");request.setRecordsToReturn(10);request.setRecordState(RecordState.UNMERGED);request.setReturnTotal(false);

GetAssignedRecordsResponse response = (GetAssignedRecordsResponse) sipClient.process(request);

Related SIF Requests“AssignUnmergedRecords” on page 57, “ClearAssignedUnmergedRecords” on page 63

GetBatchGroupStatusGetBatchGroupStatus returns the status of a batch group; polls for status after executing asynchronously. To learnmore about batch groups, see the Informatica MDM Hub Configuration Guide .

Note: When making an asynchronous call, the runStatus of 0 (success) means that GetBatchGroupStatus wassuccessfully placed in the async queue. To see the actual runStatus of the batch group, you can also specify a

72 Chapter 5: SIF API Reference

Page 86: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

value in the jmsReplyTo field when making the call. The SIF response message containing the run status of thebatch group will be returned on this queue. Alternatively, you can also use the Audit Manager in the Hub Consoleto enable the audit for “No System: GetBatchGroupStatus” and enable the audit XML. Then, use theGetBatchGroupStatus call again and then check C_REPOS_AUDIT:DATA_XML for the SIF response. Theresponse will show the batch group’s “failed” status. For more information regarding the Audit Manager, refer tothe Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the GetBatchGroupStatus request:

¨ GetBatchGroupStatus with ExecuteBatchGroup — After calling “ExecuteBatchGroup” on page 68, wait andthen use GetBatchGroupStatus to see if the batch group executed successfully.

Related SIF Requests“ExecuteBatchGroup” on page 68, “ResetBatchGroup” on page 101

GetBvtGetBvt retrieves the best version of truth (BVT) from the specified package using a known key. The specifiedpackage must have a base object (BO) as its parent and the base object must be a link style BO instead of amerge style BO. This option can be configured in the schema manager of the Hub Console. The BVT is calculatedon 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 auditrequests made by external applications. Once auditing for a particular SIF API request is enabled, InformaticaMDM Hub captures each SIF request invocation and response in the audit log. For more information, refer to theInformatica MDM Hub Configuration Guide .

State ManagementYou can include pending records in the BVT calculation if state management is enabled on the parent base objectby adding setIncludePending(TRUE) to the request. For more information regarding how to enable statemanagement, refer to Informatica MDM Hub Data Steward Guide or Informatica MDM Hub Configuration Guide .

Required ParametersThe following table lists and describes the parameters that are required by the GetBVT API:

Parameter Description

SiperianObjectUid Name and type of the package or base object to be queried.

RecordKey Key to uniquely identify the record for which BVT must beretrieved.

Optional ParametersThe 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.

Reference SIF API Listing 73

Page 87: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

Note: EffectiveDate must be used only for timeline-enabledbase objects.

HistoryDate The date for which you must retrieve values of the base objectthat are effective at the specified point in time.Note: HistoryDate must be used only for timeline-enabledbase objects.

IncludePending If set to true, it includes pending records in BVT calculation.The default is false.

Use CaseThe 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 bestversion of truth of a customer's first and last name.

Usage ExampleThe 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);

Related SIF Requests“Get” on page 69, “Link” on page 8 9, “Unlink” on page 1 1 2

GetEffectivePeriodsThe GetEffectivePeriods API retrieves the aggregate effective period for the specified base object record.

The GetEffectivePeriods request contains the key to the base object record for which the aggregate effectiveperiod must be retrieved. The response contains a list that includes all effective periods for the requested baseobject record.

Required ParameterThe RecordKey parameter is required to uniquely identify the record for which the aggregate effective period mustbe retrieved.

Optional ParameterThe HistoryDate parameter specifies the date for which base object values that are effective at the specified pointin time must be retrieved.

Note: HistoryDate must be used only for timeline-enabled base objects.

Use CaseThe following is a common scenario for using the GetEffectivePeriods request:

Retrieve the period for which a customer's billing address is valid.

74 Chapter 5: SIF API Reference

Page 88: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Usage ExampleThe following example gets the effective period for a record with ROWID_OBJECT key 28 from the base objectC_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);

GetEntityGraphThe GetEntityGraph request fetches a graph of entities and relationships related to a specified set of entities. Theentities 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 configuredHierarchy Manager, then GetEntityGraph will fail.

Required ParametersThe following table describes the required parameters for the GetEntityGraph request.

Parameter Description

HmConfigurationUid UID of the HM Configuration.

EntityKeys List of SiperianObjectRecordKey objects identifying entitiesfor which multiple levels of related relationships and entitieswill be retrieved.

Optional ParametersThe following table describes the optional parameters for the GetEntityGraph request.

Parameter Description

RecordStates Specifies the Hub State Indicator value that the returnedelements must have.Note: Only use RecordStates if State Management is enabledfor all entity and relationship base objects.

EffectiveDate Specifies that date for which the returned elements must be ineffect.Note: Only use EffectiveDate for timeline-enabled baseobjects.

EntityGraphFilter Specifies the limit on the graph depth (number of hops),breadth (number of relationships at each hop), and the totalnumber of relationships.

Reference SIF API Listing 75

Page 89: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Response FieldsThe following table describes the fields returned by the GetEntityGraph response.

Field Description

Records A list of relationship and entity record objects.

EntityInfos Contains additional information about an entity returned by GetEntityGraph. Each entity returned inthe records has a corresponding EntityInfo.

TotalGraphReturned If true, the entire graph was returned.If false, the entire graph was not returned.

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 CaseThis is the common scenario for using the GetEntityGraph request:

¨ Fetch the entities and relationships associated with a specific HM entity or entities — If you haveHierarchy Manager and have populated it with data, you can use GetEntityGraph to get the entities andrelationships associated with one or more entities.

GetEntityGraph Request Usage ExampleThe following example shows how to use the GetEntityGraph request:

GetEntityGraphRequest request = new GetEntityGraphRequest();request.setHmConfigurationUid("HM_CONFIGURATION.Default|Master");

ArrayList keys = new ArrayList();SiperianObjectRecordKey key = new SiperianObjectRecordKey();key.setRecordKey(RecordKey.rowid("123"));key.setSiperianObjectUid("HM_ENTITY_TYPE.Company");keys.add(key);

key = new SiperianObjectRecordKey();key.setRecordKey(RecordKey.rowid("456"));key.setSiperianObjectUid("HM_ENTITY_TYPE.Company");keys.add(key);

request.setEntityKeys(keys);

EntityGraphFilter filter = new EntityGraphFilter();filter.setActiveRelsOnly(true); // Only get current employees

// Only get 3 levels of relationshipsfilter.setMaximumDepth(3);

// Only traverse Entities that have less than 10 Relationshipsfilter.setMaximumBreadth(10);

// Do not return more than 100 total Relationshipsfilter.setMaximumRelationships(100);

request.setEntityGraphFilter(filter);

GetEntityGraphResponse response = (GetEntityGraphResponse) sipClient.process(request);

// Get List of Record objects for Entities and Relationships.List recs = response.getRecords();

// Get EntityInfo object for each Entity returned.List entInfos = response.getEntityInfos();

76 Chapter 5: SIF API Reference

Page 90: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Related SIF Requests“GetOneHop” on page 78

GetLookupValueGetLookupValue enables an application program to obtain the display value corresponding to a key value for thespecified object columns. This API is used to retrieve the user friendly descriptions for specific code values when apackage contains only the code value and the developer needs to display the user friendly description of the codein 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 foreignkey value.

The response contains a record that has a field for each LookupField. The order of the fields matches the order ofthe LookupFields in the request. In each field, the name is the lookup (foreign key) value and the value is thelookup display name.

This request is intended to be used together with the “GetLookupValues” on page 77 and “SearchLookupValues” on page 102 requests. The difference between these APIs is that the GetLookupValue APIretrieves descriptions only for the specified code values, while the GetLookupValuesRequest and theSearchLookupValuesRequest return the list of valid lookup code values and lookup code descriptions for thespecified lookup column.

Use CaseThis 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 useGetLookupValue to fetch a list of valid values for a field. You can then display these values as a set ofselections for the user.

Related SIF Requests“GetLookupValues” on page 77, “SearchLookupValues” on page 102, “DeleteRelationship” on page 67

GetLookupValuesGetLookupValues enables an application program to populate fields of a user interface with a list of values for agiven column. This request is similar to the “GetLookupValue” on page 77 request, but the response contains a listof lists rather than a single list.

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 lookuptables, 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, thename is the lookup (foreign key) value and the value is the lookup display name.

Use CaseThis 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 usegetLookupValues to fetch a list of valid values for a set of fields. You can then display these values as a set ofselections for the user.

Related SIF Requests“GetLookupValue” on page 77, “SearchLookupValues” on page 102, “DeleteRelationship” on page 67

Reference SIF API Listing 77

Page 91: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

GetMatchedRecordsGetMatchedRecords 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 recordsfrom the specified package.

Note: You can configure GetMatchedRecords requests in all systems when using the Hub Console Audit Managerto 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 ManagementIf Hub state is specified in the request (see setRecordStates(ArrayList)), the parent Base Object of the specifiedpackage 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 CaseThis 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 tomerge the match candidate the user selects—After using GetMatchedRecords to retrieve candidate matchesfor a record, you can display the results in a UI for a user. The user can then select a candidate. Use merge tomerge the two records.

Related SIF Requests“Merge ” on page 91

GetMergeHistoryGetMergeHistory returns a tree representing the merge history for a specified base object record. The root node ofthe tree is the surviving rowid. The child nodes represent the records that have been merged into the survivingrecord. Each node contains the rowid and merge date of the record.

The request specifies a package and a key to identify the record. The response contains a tree of (rowid, mergedate) pairs.

Note: You can configure GetMergeHistory requests according to a specific system when using the Hub ConsoleAudit Manager to audit requests made by external applications. Once auditing for a particular SIF API request isenabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For moreinformation, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis 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 ofwhose cumulative changes have resulted in this record.

Related SIF Requests“Merge ” on page 91, “Unmerge ” on page 112

GetOneHopGetOneHop Hierarchy Manager request fetches information about the entities directly related to a specified groupof entities in a specified HM configuration.

78 Chapter 5: SIF API Reference

Page 92: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

The request contains the HM configuration, a list of entity keys, and filtering criteria. The response contains lists ofentity 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 HierarchyManager, then this request fails.

Use CaseThis 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 youhave Hierarchy Manager and have populated it with data, you can use GetOneHop to get a single level of theentities and relationships associated with one or more entities.

Related SIF Requests“GetEntityGraph” on page 75, “GetSearchResults ” on page 80

GetOrsListGetOrsList retrieves a list of the Operational Record Stores (ORS) registered in the master database.

Required ParametersThe GetOrsList request does not have any required parameters. The ORS ID is not required because this APIrequest operates on the master database.

Response FieldsThe 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 aMetaDataOrs object.

Use CaseThe following scenarios are common uses of the GetOrsList API:

¨ 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 isrequired but is not hard-coded.

GetOrsList Request Usage ExampleThe following example gets the list of all registered ORS databases:

GetOrsListRequest request = new GetOrsListRequest();GetOrsListResponse response = (GetOrsListResponse)sipClient.process(request);

GetOrsList Response Usage ExampleThe following example displays the returned list of all registered ORS databases:

for(Iterator iter=response.getOrsList().iterator(); iter.hasNext();) {//iterate through response recordsMetaDataOrs ors = (MetaDataOrs) iter.next();System.out.println("ORS Display Name"+ ors.getDisplayName());System.out.println(" Physical name" + ": " + ors.getName());System.out.println(" ORS Id" + ": " + ors.getOrsId());};

Reference SIF API Listing 79

Page 93: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

GetOrsMetadataGetOrsMetadata 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 Exporttool in the MDM Hub Console. For more information about the Export tool, see the Informatica MDM Hub MetadataManager Guide.

Required ParametersThe GetOrsMetadata API does not have any required parameters.

Optional ParametersThe GetOrsMetadata API does not have any optional parameters.

Response FieldsThe GetOrsMetadata response contains the information described in the following table:

Field Description

ChangeListXml Contains the XML string representing the exported repository.

Usage ExampleThe examples shows how to use the GetOrsMetadata API to retrieve metadata:

GetOrsMetadataRequest request = new GetOrsMetadataRequest ();GetOrsMetadataResponse response = (GetOrsMetadataResponse) sipClient.process(request);

GetSearchResultsGetSearchResults retrieves additional pages of records for any API with paging enabled. The APIs that supportpaging are:

¨ GetAssignedRecords

¨ Get Matched Records

¨ GetOneHop

¨ GetTasks

¨ Search LookupValues

¨ SearchHmQuery

¨ SearchMatch

¨ SearchQuery

Use the SortCriteria parameter when using the preceding APIs to ensure the records are not returned in a randomorder. When the DisablePaging parameter for the preceding APIs is set to the default of false, a search token isreturned.

You must use the search token within a limited period of time after you receive it. The default time limit for searchtoken validity is 15 minutes. To learn more about changing this limit, contact Informatica Global Customer Support.

80 Chapter 5: SIF API Reference

Page 94: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Required ParametersThe following table lists and describes the parameters that are required by the GetSearchResults request:

Parameter Description

SearchToken Identifies which search to return additional results for.

RecordsToReturn The number of records to return.

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 41to 60).GetSearchResults returns an error if the value of FirstRecord is 0, a negative value, or greater thanthe number of records returned by the original search query.

Optional ParametersThe GetSearchResults request does not have optional parameters.

Response FieldsThe GetSearchResults response contains an array list of the records specified by the required parameters.

Use CaseThis 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 anyrequest that returns the first of multiple pages of a set of records, you can use getSearchResults repeatedly toget the subsequent pages.

GetSearchResults Request Usage ExampleThe following example requests the second page of data from a search. Ten records are displayed per page:

...SearchQueryResponse sqResponse = (SearchQueryResponse) sipClient.process(request);String searchToken = sqResponse.getSearchToken();

GetSearchResultsRequest request = new GetSearchResultsRequest();request.setSearchToken(searchToken);request.setRecordsToReturn(10);request.setFirstRecord(11); GetSearchResultsResponse response = (GetSearchResultsResponse) sipClient.process(request);

GetSearchResults Response Usage ExampleThe code in the following example shows how to print out the records returned by the GetSearchResultsresponse:

GetSearchResultsResponse response = new GetSearchResultsResponse(); int i=0; for(Iterator iter=response.getRecords().iterator(); iter.hasNext();) { //iterate through response records System.out.println("Printing response record " + i); Record record = (Record) iter.next(); Collection fields = record.getFields(); for(Iterator fieldIter=fields.iterator(); fieldIter.hasNext();){ //iterate through rest of fields Field f = (Field) fieldIter.next(); System.out.println(f.getName() + ": " + f.getValue()); } }

Reference SIF API Listing 81

Page 95: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Related SIF Requests¨ “GetAssignedRecords” on page 72

¨ “GetMatchedRecords” on page 78

¨ “GetOneHop” on page 78

¨ “GetTasks ” on page 85

¨ “SearchHmQuery” on page 102

¨ “SearchLookupValues” on page 102

¨ “SearchMatch ” on page 103

¨ “SearchQuery ” on page 106

¨ “SearchRequestBase” on page 108

GetSiperianObjectCompatibilityGetSiperianObjectCompatibility obtains a checksum that represents the definition of the specified object inInformatica 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 anORS specific PACKAGE, MAPPING, or CLEANSE_FUNCTION. ORS specific APIs and objects are generated inthe Hub Console’s SIF Manager. This request should be used to determine if an objects definition on the serverhas changed since the last time ORS specific objects were generated. To resolve an incompatibility between aclient object and its server counterpart is to regenerate the ORS specific objects. For more information ongenerating ORS specific objects, see the Informatica MDM Hub Data Steward Guide.

Use CaseThis 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-specificAPIs, you can use GetSiperianObjectCompatibility.

GetSystemTrustSettingsGetSystemTrustSettings 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 thesame order as the list of columns.

Note: You can configure GetSystemTrustSettings requests according to a specific system when using the HubConsole Audit Manager to audit requests made by external applications. Once auditing for a particular SIF APIrequest is enabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. Formore information, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the getSystemTrustSettings request:

¨ Fetch the system-specific trust settings for a set of columns.

Related SIF Requests“GetTrustGraphData” on page 86, “GetTrustScore” on page 87

82 Chapter 5: SIF API Reference

Page 96: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

GetTaskLineageThe GetTaskLineage API retrieves the following information, depending on the request parameter settings:

¨ The closed tasks for a specified user.

¨ The closed tasks for a specified user that are part of an active workflow process.

¨ The closed tasks for a specified user that are part of an completed workflow process.

¨ The open tasks that have a task in their lineage that is owned by the specified user.

¨ The lineage for a specific task.

Required Request ParametersThe GetTaskLineage request does not have required parameters.

Optional Request ParametersThe information that the GetTaskLineage response returns is based on the values in the optional requestparameters. The following table describes the optional request parameters:

Parameter Value

TaskID The TaskID parameter identifies the task. See “About TaskData” on page 20.

OwnerUID The ID of the user to whom the task belongs.

WorkflowStatus The status of the workflow process.

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

OwnerUID The user ID.

WorkflowStatus ANY

TaskPosition USER

The following table describes the parameter values necessary to get the tasks completed by a specified user thatare part of an active workflow process:

Parameter Value

TaskID NULL

OwnerUID The user ID.

Reference SIF API Listing 83

Page 97: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Value

WorkflowStatus OPEN

TaskPosition USER

The following table describes the parameter values necessary to get the tasks completed by a specified user thatare part of a completed workflow process:

Parameter Value

TaskID NULL

OwnerUID The user ID.

WorkflowStatus CLOSED

TaskPosition USER

The following table describes the parameter values necessary to get the open tasks that have a task in theirlineage that is owned by the specified user:

Parameter Value

TaskID NULL

OwnerUID The user ID.

WorkflowStatus OPEN

TaskPosition WORKFLOW

The following table describes the parameter values necessary to get the lineage for a specified task:

Parameter Value

TaskID The task ID.

OwnerUID The OwnerUID value is ignored.

WorkflowStatus The WorkflowStatus value is ignored.

TaskPosition The TaskPosition value is ignored.

84 Chapter 5: SIF API Reference

Page 98: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Response FieldsThe following table describes the fields returned in theGetTaskLineage response:

Field Description

Title Contains the task title.

TaskType Contains the task type.

Status Contains the task status.

GetTaskLineage Request Usage ExampleThe code in the following example retrieves a list of tasks belonging to the user named 'siftester' and areoverdue.

GetTaskLineageRequest request = new GetTaskLineageRequest();request.setOwner("siftester");GetTaskLineageResponse response = (GetTaskLineageResponse) sipClient.process(request);

GetTaskLineage Response Usage ExampleThe code in the following example prints out the task information that the GetTaskLineage response returns:

GetTaskLineageResponse response = (GetTaskLineageResponse) sipClient.process(request);int i=0; for(Iterator iter=response.getTaskList().iterator(); iter.hasNext();){ //iterate through response records System.out.println("Printing task " + i); TaskMetaData task = (TaskMetaData) iter.next(); System.out.println(task.getTitle()+", "+task.getTaskType()+", "+task.getStatus()); }

GetTasksThe GetTasks API retrieves a lists of tasks and task details. Optional parameters allow you to filter the tasks thatGetTasks returns.

Required ParametersThe GetTasks request does not have required parameters.

Optional ParametersUse the optional parameters to filter the list of tasks that GetTasks returns. The following table describes theoptional 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 fortasks 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 associatedwith the task are not returned.

Unassigned If set to true, GetTasks only returns unassigned tasks.

Reference SIF API Listing 85

Page 99: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

CanBeAssignedToUser If set to true, GetTasks only returns tasks that can be assigned to the user specified in theGetTasks request.

BDDApplicationName If set to true, GetTasks only returns tasks for an IDD instance.

DisablePaging The default value of DisablePaging is false.If set to false, paging is enabled and a search token is returned. Use GetSearchResults tofetch subsequent pages of search results.If set to true, paging is disabled.

Response FieldsThe GetTasks response returns a list of tasks that are filtered by the parameters specified in the GetTasksrequest. If DisablePaging is set to false, a search token is also returned.

Use CaseThis is the common scenario for using the GetTasks request:

¨ Fetch a set of tasks that match the criteria specified in the request.

GetTasks Request Usage ExampleThe following example retrieves the overdue tasks assigned to the user named 'admin'.

GetTasksRequest request = new GetTasksRequest();TaskMetaData taskMetadata = new TaskMetaData();taskMetadata.setOwnerUid("USER.admin");request.setTaskMetaData(taskMetadata);request.setOverdueOnly(true);GetTasksResponse response = (GetTasksResponse) sipClient.process(request);

Use the following line of code to return tasks with a priority of 1:

taskMetadata.setPriority(1);

Use the following line of code to return the task that has a task ID of '1234':

taskMetadata.setTaskId("1234");

GetTasks Response Usage ExampleThe code in the following example shows how to print out the records returned by the GetTasks response.

GetTasksResponse response = new GetTasksResponse();int i=0; for(Iterator iter=response.getTaskList().iterator(); iter.hasNext();){ //iterate through response records System.out.println("Printing task " + i); TaskMetaData task = (TaskMetaData) iter.next(); System.out.println(task.getTitle()+", "+task.getTaskType()+", "+task.getStatus()); }

Related SIF Request“GetSearchResults ” on page 80

GetTrustGraphDataGetTrustGraphData 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 therequired graph. The response contains a list of trust values and dates that define the graph.

86 Chapter 5: SIF API Reference

Page 100: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Note: You can configure GetTrustGraphData requests only for “no system” when using the Hub Console AuditManager to audit requests made by external applications. Once auditing for a particular SIF API request isenabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For moreinformation, refer to the Informatica MDM Hub Configuration Guide .

Use CaseThis 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 mustdisplay a trust graph, use GetTrustGraphData to get the data on which the graph is based.

Related SIF Requests“GetSystemTrustSettings” on page 82, “GetTrustScore” on page 87

GetTrustScoreGetTrustScore computes the trust score for a specified column, based on the specified trust override. The columnmust be trust-enabled in the Schema Manager of the Hub console. The trust score (type float) of the Adminsystem will be returned.

The request contains a column UID and a key identifying the base object record. The response contains the trustscore.

Use CaseThis 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 displaythat information about a column.

Usage ExampleThe following example retrieves the trust score for column FIRST_NAME on base object C_CONTACT for therecord with rowid = 3:

GetTrustScoreRequest request = new GetTrustScoreRequest();request.setColumnUid("COLUMN.C_CONTACT|FIRST_NAME"); // Requiredrequest.setRecordKey(RecordKey.rowid("3")); // RequiredGetTrustScoreResponse response = (GetTrustScoreResponse) sipClient.process(request);

Related SIF Requests“GetSystemTrustSettings” on page 82, “GetTrustGraphData” on page 86

GetUnmergedRecordCountGetUnmergedRecordCount reports the number of records that are not merged—either all such records or thoseassigned to the current user.

The request supplies the table and a boolean value that specifies whether or not to restrict the count to recordsassigned 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 ConsoleAudit Manager to audit requests made by external applications. Once auditing for a particular SIF API request isenabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For moreinformation, refer to the Informatica MDM Hub Configuration Guide .

Reference SIF API Listing 87

Page 101: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use CaseThis 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 thisrequest to display the number of unmerged records.

Related SIF Requests“AssignUnmergedRecords” on page 57, “ReassignRecords” on page 100

GetXrefForEffectiveDateThe GetXrefForEffectiveDate API retrieves multiple XREF records for the specified effective date. The response toa 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 ParametersThe 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 mustget the XREF for a specified effective date.

RecordKey Key to uniquely identify the record for which you must get theXREF for a specified effective date.

SystemNames Names of systems for which XREF and XREF history must beretrieved.

EffectiveDate The date for which you must retrieve values of the base object.Note: EffectiveDate must be used only for timeline-enabledbase objects.

Optional ParametersThe following table lists and describes the optional parameters that are used by the GetXrefForEffectiveDate API:

Parameter Description

HistoryDate The date for which you must retrieve values of the base objectthat are effective at the specified point in time.Note: HistoryDate must be used only for timeline-enabledbase objects.

OtherPeriods Periods that do not encompass the specified effective date. Ifset to true, XREF records are retrieved for all periods that donot encompass the specified effective date. The default isfalse and the GetXrefForEffectiveDate API retrieves XREFrecords for periods that encompass the specified effectivedate.

88 Chapter 5: SIF API Reference

Page 102: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

RecordStates System state of the XREF record. The record can be inACTIVE, PENDING, or DELETED state.

DataFilter Used by IDD to apply security filter.

Use CaseThe 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 ofresidence frequently, and you need to know what their address was on a specific effective date, you can use theGetXrefForEffectiveDate API in combination with the PreviewBVT API to get the address that was effective on thespecific date. The cross-reference records used by the PreviewBVT API to calculate the address for the specifiedeffective date are used by the GetXrefForEffectiveDate API to retrieve the address that was effective on thespecified effective date.

Usage ExampleThe following example shows how to retrieve XREFs for a record with ROWID_OBJECT = 28, for an effective date10/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);

Related SIF Requests“ PreviewBVT” on page 92

LinkLink links two or more base object records using the specified groupRecordKey as the group ID. Unlike a mergeoperation, when records are linked, the original base object records continue to exist and the cross referencerecords are not directly associated with the grouping record. However, the cross reference records are groupedtogether in a link group with the rowid of the groupRecordKey specified in the LinkRequest. If the records specifiedfor linking have been previously linked, then nothing is changed and the API returns a success message.

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 73 request must be invoked. This retrieves the best version oftruth (BVT) for the specified link group accounting for the combined cross reference records of all base objectrecords in the link group.

Related SIF Requests“GetBvt” on page 73, “Unlink” on page 112

Reference SIF API Listing 89

Page 103: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

ListSiperianObjectsListSiperianObjects returns basic metadata for a list of MDM Hub objects of the specified type. The metadatacontains basic information such as SiperianObjectUID, display name, and description. To get an object's completemetadata, use “DescribeSiperianObject” on page 67.

RestrictionsOnly admin users can access private resources through SIF API requests.

Required ParametersThe ListSiperianObjects request does not have required parameters.

Optional ParametersUse the optional parameters to filter the list of objects returned by ListSiperianObjects. The following tabledescribes 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 hassecurity 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 FieldsThe following table describes the response fields:

Parameter Description

Uid Contains the SiperianObjectUID.

Name Contains the object name.

DisplayName Contains the display name.

Description Contains the object description.

Use CaseThe 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 alist of packages for a base object so the user can select a base object for the current operation.

ListSiperianObjects Request Usage ExamplesThe following example shows how to request the metadata of the columns for the base object "C_PARTY":

ListSiperianObjectsRequest request = new ListSiperianObjectsRequest();request.setObjectType(SiperianObjectType.COLUMN);

90 Chapter 5: SIF API Reference

Page 104: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

request.setParentUid(SiperianObjectType.PACKAGE.makeUid("C_PARTY"));request.setUserResourcesOnly(false); //ignores security access configuration of objectListSiperianObjectsResponse response = (ListSiperianObjectsResponse) sipClient.process(request);

When retrieving a list of users, you can set the parentUID to a Role UID to restrict the list to users that belong to aspecific role. To retrieve a list of admin users, the role can be set to ROLE.REQUEST_ADMIN_USERS_ONLY usingrequest.setParentUid(SiperianObjectType.ROLE.makeUid("REQUEST_ADMIN_USERS_ONLY")). The following exampleshows 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 objectListSiperianObjectsResponse response = (ListSiperianObjectsResponse) sipClient.process(request);

ListSiperianObjects Response Usage ExampleThe following example shows how to print out the object metadata returned by the ListSiperianObjects response:

ListSiperianObjectsResponse response = new ListSiperianObjectsResponse();int i=0;for(Iterator iter=response.getMetaDataObjectList().iterator(); iter.hasNext();) { //iterate through metadata objects System.out.println("Printing metadata object " + i); MetaDataBase metadata = (MetaDataBase) iter.next(); System.out.println("/tuid="+metadata.getUid()); System.out.println("/tname="+metadata.getName()); System.out.println("/tdisplay name="+metadata.getDisplayName()); System.out.println("/tdescription="+metadata.getDescription());}

Related SIF Requests“DescribeSiperianObject” on page 67

MergeMerge merges two base object records, creating a single, consolidated base object record by merging all theXREF records from the two base objects.

When two records are merged, one is designated the source record, one is designated the target record. Therequest merges the source record into the target record. This means that after the merge the rowid for thecombined record is that of the target record. All foreign keys pointing to the source record now point to the targetrecord.

For example, there may be one base object record with the name “Alex Watson” and another with the name“Alexander Watson”; each base object record has its own set of cross reference records. These records aredetermined to represent the same person so the records are merged. The result is a single base object record thathas all the cross reference records from the original two base object records. The consolidated value for each fieldin the record is determined by the trust configuration.

Important: When you merge two records, Informatica MDM Hub does not check the match status of the records, itjust 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” on page 92 which can be used to merge two or more records in asingle operation.

For more information, refer to the Merge Settings Tab on the Match/Merge Setup Details dialog in the InformaticaMDM Hub Schema Manager, the Informatica MDM Hub Configuration Guide , and the Informatica MDM Hub DataSteward Guide.

Reference SIF API Listing 91

Page 105: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

State ManagementWhen merging records in a base object with state management enabled, records in any state can be mergedtogether. However, the following rules apply specifying a PENDING record as the target of a merge.

¨ If both records being merged together are PENDING, the records are merged as normal.

¨ If a PENDING target record is merged with an ACTIVE or DELETED source record, the target and sourcerecords are automatically swapped so the PENDING record becomes the source and the ACTIVE or DELETEDrecord becomes the target.

For more information on state management, see the Informatica MDM Hub Data Steward Guide and InformaticaMDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the merge request:

¨ Merge used with “GetMatchedRecords” on page 78 — You can use GetMatchedRecords to get a list of matchcandidates for a specified record. You can then display that list in a UI. If the user selects one of the candidaterecords, you can use merge to merge the two records.

Related SIF Requests“GetMatchedRecords” on page 78, “Unmerge ” on page 112

MultiMergeMultiMerge merges multiple base object records that have been identified as representing the same object andallows specifying the field level overrides for the merged record. MultiMerge is a more generic form of the “Merge ” on page 91 request and should be used for merging groups of records. Merge API should be used forpair-wise merges.

For example, there may be multiple base object records with the same account number “1234567” and accounttype “Personal”. Each base object record has its own set of cross reference records. When these records aremerged with the call to the MultiMerge request, the result is a single BO record with that has the cross referencesfrom all the merged base object records. The consolidated value for each field in the merged record is eitherdetermined through the survivorship rules based on the cross references of the records that are being merged orthey are specified through the override values in the API.

PreviewBVTThe PreviewBVT API enables you to preview what a base object record would look like if you merge a specifiedset of records or apply pending updates to the records.

Required ParametersThe following table lists and describes the parameters that are required by the PreviewBVT API:

Parameter Description

SiperianObjectUid Name and type of base object or package that you need touse for previewing BVT.

RecordKeyList Keys of records for which you need to preview the BVT.

92 Chapter 5: SIF API Reference

Page 106: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

Note: If you include multiple records in the record key list, theBVT of only the first record can be previewed.

FilterClause An SQL WHERE clause that can be applied to an XREF table.If you specify one record key for the RecordKeyListparameter, FilterClause is used to preview the effect ofapplying pending updates.

Optional ParametersThe 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 beretrieved.Note: EffectiveDate must be used only for timeline-enabledbase objects.

HistoryDate The date from the past for which the values of the base objectmust be retrieved.Note: HistoryDate must be used only for timeline-enabledbase objects.

Use CaseThe 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 baseobject columns change over time and only the latest value reflects in the base objects. You can use thePreviewBVT request to preview the BVT value for a base object record at a specific point in time (past, present, orfuture).

Determine the value of a record for a specific effective date — If a record has cross-references with more thanone period of effectiveness, then the PreviewBVT API can be used to calculate the BVT value of the record for aspecific effective date.

Usage ExampleThe following example shows the merge preview of three records with ROWID_OBJECTs 1, 2, and 3 into a recordwith 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);

PromotePendingXrefsPromotePendingXref promotes or flags for promotion the XREF records specified in the request.

Reference SIF API Listing 93

Page 107: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

State ManagementPromote means to change the state of a record from PENDING to ACTIVE. When the flagForPromote option isset, then this API request will queue the specified xref records for promotion using the next run of the PROMOTEbatch process. Otherwise, the request will immediately promote the specified xref records from PENDING toACTIVE. Here’s the behavior of this request based on various XREF states:

¨ ACTIVE and DELETED records will return an error.

¨ PENDING records will be made ACTIVE.

Required ParametersThe following table lists and describes the parameters that are required by the PromotePendingXref API:

Parameter Description

SiperianObjectUid Name and type of the package or base object to be promoted.

XrefKey Key to uniquely identify the record to be promoted.

SystemName Name of system for which XREF must be promoted.

SourceKey Source key of the cross-reference record that must bepromoted.

Optional ParametersThe following table lists and describes the optional parameters that are used by the PromotePendingXref API:

Parameter Description

ColumnNames Names of columns that must be promoted to the ACTIVEstate. Data is lost after promotion, in case of columns that arenot specified.This parameter is only available for online promotion and isignored when the FlagForPromote parameter is set to true.

FlagForPromote Flags records for promote when set to true. The records arepromoted when the batch process is executed in the MDMHub.

PeriodStartDate This parameter is used to specify the period start date fortimeline-enabled base objects.

PeriodEndDate This parameter is used to specify the period end date fortimeline-enabled base objects.

Usage ExampleThe following example immediately promotes the "FIRST_NAME" and "LAST_NAME" fields for the XREF recordwith sourceKey=1234 and system=CRM in the package CUSTOMER_UPDATE. If the XREF record is ACTIVE orDELETED, an error will be returned. If the XREF record is PENDING, it will be made ACTIVE.

PromotePendingXrefsRequest request = new PromotePendingXrefsRequest();ArrayList columnNames = new ArrayList();columnNames.add("FIRST_NAME");columnNames.add("LAST_NAME");request.setColumnNames(columnNames); // Optional

94 Chapter 5: SIF API Reference

Page 108: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

XrefKey xrefKey = new XrefKey();xrefKey.setSourceKey("1234");xrefKey.setSystemName("CRM");ArrayList xrefKeys = new ArrayList();xrefKeys.add(xrefKey);request.setXrefKeys(xrefKeys); // Requiredrequest.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //Required

PromotePendingXrefsResponse response = (PromotePendingXrefsResponse) sipClient.process(request);

The following example flags the XREF record with sourceKey=1234 and system=CRM in the packageCUSTOMER_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); // Optionalrequest.setXrefKeys(xrefKeys); // Requiredrequest.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //Required

PromotePendingXrefsResponse response = (PromotePendingXrefsResponse) sipClient.process(request);

Related SIF Requests“Delete” on page 65, “Restore” on page 101

PutUse the Put API to create or update a record. Use an insert operation to create a cross-reference record in thecross-reference table, and then create a base object record in the base object table. Use an update operation toupdate a cross-reference record. Trust rules and validation rules determine if the base object record is alsoupdated.

A record contains base object fields or package fields. A record can contain all fields or a subset of the fields. Forexample, a package may contain the fields FIRST_NAME and LAST_NAME. If you want to update only theLAST_NAME field, you can omit the FIRST_NAME field from the Put request. If you have not specified a value fora field, the Put API sets the value to null.

State ManagementIf state management is enabled for a package, you can set the value of HUB_STATE_IND to specify the initialstate of a record when you insert it. You cannot use the Put API to change the state of a record by updating theHUB_STATE_IND value. You can enable state management in the Hub Console.

The following table lists the possible values for HUB_STATE_IND and the state these values represent:

HUB_STATE_IND Value State Description

1 ACTIVE The record is approved. The default is 1 (Active).

0 PENDING The record is not approved.

-1 DELETED The record is not used in the MDM Hub processes.

Transaction SupportWhen executed within an EJB context, this request can be part of a transaction with other requests. If there is afailure in any of the requests within a transaction, the Put API rolls back the entire transaction.

Reference SIF API Listing 95

Page 109: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Validation Rule ProcessingThe Put API applies the applicable rule with the highest downgrade percentage.

Trust OverrideYou can override the trust settings for a trust-enabled column as part of the Put request. The following portion ofcode sets the maximum trust to 90%, sets the minimum trust to 40%, sets the unit of time for the trust graph tomonths, 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 ofwhether trust is enabled or disabled. The Put response ignores the trustOverrideField values for columns that donot have trust enabled.

Putable System ColumnsA putable column is a system column that you can update or insert data into. A system column can be putable, notputable, or putable enabled by the user.

The following table describes the putable status of the system columns:

System Column Putable Status

CM_DIRTY_IND Never putable.

CONSOLIDATION_IND Never putable.

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.

DIRTY_IND Never putable.

HUB_STATE_IND You can set as putable in the base object column properties.

INTERACTION_ID Always putable.

LAST_ROWID_SYSTEM Never putable.

LAST_UPDATE_DATE Always putable.

ROWID_OBJECT Never putable.

UPDATED_BY You can set as putable in the base object column properties.

96 Chapter 5: SIF API Reference

Page 110: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Put API Behavior for the Create_Date ColumnMultiple factors can affect the behavior of the Put API request on the Create_Date column.

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-referencerecord with the value in the Put request. Null is a permissible value. If you do not provide a value in therequest, 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-referencerecord 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-referencerecord with the value in the Put request. Null is a permissible value. If you do not provide a value in therequest, the column retains the current value.

If you do not set Create_Date to Putable, the base object record and the cross-reference record columnretains the current value. If the Hub creates a cross-reference record, the Put API populates the cross-reference record column with the SYSDATE value.

Put API Behavior for the Last_Update_Date ColumnThe Put API updates the LAST_UPDATE_DATE column with a value you specify in the Put request or with theSYSDATE value.

¨ If LAST_UPDATE_DATE is Putable and you provide a value for the LAST_UPDATE_DATE column in the Putrequest, the Put API populates the base object record and cross-reference record with this value. Null is apermissible value.

¨ If you do not provide a value for the LAST_UPDATE_DATE column in the Put request, the Put API populatesthe 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-referencerecord with the SYSDATE value.

Put API Behavior for the SRC_LUD Column in the Cross-ReferenceMultiple factors can affect the behavior of the Put API request on the SRC_LUD column in the cross-referencerecord.

¨ If LAST_UPDATE_DATE is Putable and you provide a LAST_UPDATE_DATE value, the Put API populates theSRC_LUD column with the LAST_UPDATE_DATE value.

¨ If you do not provide LAST_UPDATE_DATE value, but the Create_Date column is putable and you provide aCreate_Date value, the Put API populates the SRC_LUD column with the Create_Date value.

¨ If you do not provide a LAST_UPDATE_DATE value and you do not provide a Create_Date value, the Put APIpopulates the SRC_LUD column with the SYSDATE value.

Put API Behavior for Foreign Key Columns that are Not NullableIf 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 avalue in the Put request, the MDM Hub generates an exception.

Reference SIF API Listing 97

Page 111: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

RequirementsConsider 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 thedata.

¨ You must enable the Put API for the package.

RestrictionsConsider 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 avalue 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 aexist record by changing the HUB_STATE_IND value using the Put API. If you provide a value for theHUB_STATE_IND column when updating a record, the Put API generates an exception. To change the state ofa 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 objectneeds 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 theAddRelationship 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.

Required ParametersUse the required parameters to specify the data to insert or update and to specify which record is to receive thedata. The following table describes the required parameters.

Parameter Description

RecordKey When you insert a record, use RecordKey to specify the system name of the record to insert. The systemgenerates the ROWID_OBJECT value for the record. You cannot specify the ROWID_OBJECT value for a newrecord. 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 therecord 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 nameof the base object or put-enabled package used to identify the affected base object and constrain the fields thatyou can set.

Optional ParametersUse the optional parameters to specify a LastUpdateDate and request a source key. The following table describesthe optional parameters.

Parameter Description

GenerateSourceKey This parameter is useful for keyless systems (for example, an application that does not persist sourcedata). When set to true, a the MDM Hub generates a source key if you do not specify one.

98 Chapter 5: SIF API Reference

Page 112: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

If you are inserting a record from a keyless system, you can request that Informatica MDM Hubgenerate 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 andpasses 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-referencerecord.

BypassPostLoadUE Do not use this parameter. Metadata Manager uses this parameter. This parameter determines whetherto run the post-load user exit. When you set this parameter to true, the post-load user exit is bypassed.When you use Metadata 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. MetadataManager 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.

Response FieldsThe Put response can contain the information described in the following table:

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 anotherbase 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 ActionThe Tokenize API requires the value of ActionType. Insert indicates that a record has not yet been tokenizedand tokens need to be created. Update and Update cross-reference indicate that a record has been tokenizedand the tokens need to be regenerated.

Use CasesThe 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 orupdate the record.

¨ The Put API used in combination with the Tokenize API. A Put request followed by a Tokenize request insertsor updates the record and encodes it for matching. The Put response contains an action type string to use asan input to the Tokenize request. The Put API operation and the Tokenize operation can occur in the sametransaction.

¨ The Put API used in combination with the Cleanse API. The most common use of cleanse is when theindividual fields are cleansed before the record is passed on to the Put API.

Reference SIF API Listing 99

Page 113: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Put Request Usage ExampleThe following example updates a record with ROWID_OBJECT key 782 using the package ADDRESS_UPDATE:

PutRequest request = new PutRequest();request.setRecordKey(RecordKey.rowid("782", "SALES"));Record record = new Record();record.setSiperianObjectUid(SiperianObjectType.PACKAGE.makeUid("ADDRESS_UPDATE"));record.setField( new Field("ADDRESS_LINE1", "123 Main St.") );record.setField( new Field("CITY", "Anytown") );request.setRecord( record );PutResponse response = (PutResponse) sipClient.process(request);

ReassignRecordsReassignRecords reassigns the specified records assigned for manual merge evaluation to another user.

The new user will now be responsible for these records.

Use CaseThis 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, inthe screen for managing data steward’s queues, you might have a button that uses this request. This wouldallow data stewards to reassign the records in their queue.

Related SIF Requests“AssignUnmergedRecords” on page 57, “ClearAssignedUnmergedRecords” on page 63

RegisterUsersRegisterUsers enables an application to register selected users from the enterprise’s authentication system (forexample, LDAP) with Informatica MDM Hub. Then Informatica MDM Hub can use its existing access controlcapabilities to manage tasks like role assignments.

The application provides a list of user names, and Informatica MDM Hub fetches their information from theexternal system. Informatica MDM Hub ignores additional registrations of the same user profile from the externalauthentication system. However, it reports errors if the username is already registered using a different, or no,external profile, or if the name does not exist in the external authentication system.

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 MDMHub 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 InformaticaAdministration Console or using “UnregisterUsers” on page 113.

Transaction SupportWhen executed within an EJB context, this request can be part of a transaction with other requests. If there is afailure in any of the requests within a transaction, the entire transaction is rolled back.

Use CaseThis 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 isauthorized to do.

Related SIF Requests“Authenticate” on page 59

100 Chapter 5: SIF API Reference

Page 114: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

ResetBatchGroupResetBatchGroupfinds the last execution status of the given batch group, and if its status is failed, sets it toincomplete. To learn more about batch groups, see the Informatica MDM Hub Configuration Guide .

Use CaseThis is the common scenario for using the ResetBatchGroup request:

¨ Resetting a batch group after “GetBatchGroupStatus” on page 72 returns and unsuccessful status

Related SIF Requests“ExecuteBatchGroup” on page 68, “GetBatchGroupStatus” on page 72

RestoreRestore reinstates the specified XREF record(s) in the Hub. Restore changes the state of records from DELETEDto ACTIVE state. If an attempt is made to restore an active or pending record, an error is returned. After an XREFrecord is restored, the state of the parent BO record will be active.

Required ParametersThe following table lists and describes the parameters that are required by the Restore API:

Parameter Description

SiperianObjectUid Name and type of the package or base object to be restored.

XrefKey Key to uniquely identify the record to be restored.

SystemName Name of the system for which the record must be restored.

SourceKey Source key of the record that must be restored.

Optional ParametersThe following table lists and describes the optional parameters that are used by the Restore API:

Parameter Description

PeriodStartDate This parameter is used to specify the period start date fortimeline-enabled objects.

PeriodEndDate This parameter is used to specify the period end date fortimeline-enabled base objects.

Usage ExampleThe following example restores the XREF record with sourceKey=1234 and system=CRM from the packageCUSTOMER_UPDATE. If the XREF record is pending or active, an error will be returned. If the XREF record isdeleted, 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

Reference SIF API Listing 101

Page 115: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

request.setSiperianObjectUID("PACKAGE.CUSTOMER_UPDATE"); //Required

RestoreResponse response = (RestoreResponse) sipClient.process(request);

Related SIF Requests“Delete” on page 65, “PromotePendingXrefs” on page 93

SearchHmQuerySearchHmQuery is used to search HM Entities or Relationships. The filter, aggregate and sort criteria canreference any columns in the Display Packages associated with Entity Type / Relationship Type in the searchrequest. 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 ORSdetermines the maximum number of records that can be returned. GetSearchResultsRequest can be used to getsubsequent pages of records.

The request contains the HM configuration, the type of the entity or relationship sought, and an SQL specificationof 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 HierarchyManager, then this request will fail.

Use CaseThis 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.

Related SIF Requests“SearchRequestBase” on page 108, “GetSearchResults ” on page 80, “SearchHmQuery” on page 102

SearchLookupValuesSearchLookupValues request searches for lookup values that match a given lookup display name (lookup codedescription).

This request is typically used with foreign key columns that have a large number of possible values. The requestincludes a lookup column, a lookup display value to search for, and a comparison operator. It also includes arecord whose fields contain the lookup information. In each field, the name is the lookup (foreign key) value, andthe value is the lookup display name. For detailed information on configuring relationships and lookups in theInformatica 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” onpage 77 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 80 to get subsequent sets of records.

Use CaseThis 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 amongstthe available lookup values.

Related SIF Requests“GetLookupValue” on page 77, “GetLookupValues” on page 77

102 Chapter 5: SIF API Reference

Page 116: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SearchMatchSearchMatch generates a list of search results by identifying matching records in a package or base object usingMDM Hub match columns and, optionally, match rule sets. For information on configuring match columns andmatch 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 batchjob to tokenize records.

SearchMatch returns a list of matching records. This is unlike the Hub match batch process, which creates a listof match candidates in the ORS that you retrieve using GetMatchedRecords.

Note: For information on performing exact matches on fuzzy base objects, see “Exact Matches on Fuzzy BaseObjects” on page 21.

Required ParametersThe required SearchMatch Request parameters are described in the following table:

Parameter Description

MatchColumnField orRecordsToMatch

These parameters specify which match columns or match rules are used for matching:- 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 forwhich the records have no value. Use MatchColumnUid to restrict match columns further. Thematch columns that result from using the RecordsToMatch parameter override the match columnsspecified by MatchColumnField.

SiperianObjectUid The package or base object to search.

MatchType This parameter specifies how match rules are used in the search. If you do not specify theMatchType, 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.

Undermatching when using MatchType AUTO and BOTHThe AUTO and BOTH MatchType may result in undermatching if the search request contains empty fields. Users maynot provide data for every field when performing a search from a custom client application. If an empty field isconfigured as an exact match column in the match rules, any potential search result containing data in these fieldsis excluded from the search results returned by SearchMatch.

MatchType NONEA 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 relevantrecords from being excluded from the search results. However, overmatching and misleading match scores canoccur because nonselective fields, such as Gender, are given the same weight as selective fields, such asCustomer ID.

Reference SIF API Listing 103

Page 117: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

¨ Using a match rule set that has Enable Search by Rules enabled in the Hub. The undermatching that can occurwhen using MatchType AUTO and BOTH is avoided because empty fields provided by the search request areignored and not used to exclude search results. Overmatching and misleading match scores are avoidedbecause the match rules give the columns an appropriate weight.

MatchType DBFILTEREDThe DBFILTERED MatchType increases performance when a fuzzy search based on a nonselective term, such asName="JOHN", also provides values for exact match columns. Nonselective fuzzy search terms provide excessivesearch results which cause SearchMatch to take longer than expected to complete. When the MatchType isDBFILTERED, SearchMatch performs in one of two ways:

¨ If the fuzzy search term is selective, for example, JONATHAN LIVINGSTONE, SearchMatch functions as itdoes when MatchType is set to BOTH. Initial filtering is performed using the match key ranges generated by theHub, and then additional filtering is performed by the Cleanse Match Server using the exact match columns.This type of filtering reduces the number of database joins required and provides optimal SearchMatchperformance for selective fuzzy search terms.

¨ If the fuzzy search term is nonselective, for example, JOHN, initial filtering is done in the database on the exactmatch columns and match key ranges. This results in fewer records being returned to the Cleanse MatchServer for matching than would occur using the MatchType AUTO or BOTH. This type of filtering provides optimalSearchMatch performance for nonselective fuzzy search terms.

Consider the following when using the DBFILTERED MatchType:

¨ 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 matchingenabled.

- 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 amatch rule set to use specifically for DBFILTERED SearchMatch that is limited to the match rules essential fordatabase filtering.

¨ Ensure low cardinality (preferably 1:1) between the base object providing the match key and the exact matchcolumns 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 filteringperformance. Use as few custom column indexes as possible to avoid decreasing batch job performance.

Optional ParametersThe optional SearchMatch Request parameters are described in the following table:

Parameter Description

includePending includePending determines if SearchMatch includes pending records in the results.true: SearchMatch includes pending records in results. "Enable match on pending records" must beenabled for the base object in the Match Merge Hub setup.false: SearchMatch does not include pending records in results. The default is false.This parameter has no effect for base objects for which State Management is not enabled. See theInformatica MDM Hub Configuration Guide for more information on State Management.

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 firstname, in ascending order. Use DESC to sort in descending order. The results are returned in random

104 Chapter 5: SIF API Reference

Page 118: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

order if you do not specify the sort order, unless the MatchType is NONE. If the MatchType is NONE andsortCriteria 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.

setDisablePaging This parameter determines if paging is disabled.true: paging is disabled.false: paging is enabled. The default is false.Use GetSearchResults to fetch subsequent pages of search results.

Response FieldsThe SearchMatch Response contains a list of matching records as well as the information described in thefollowing table for each record:

Field Description

DEFINITIVE_MATCH_IND Indicates whether a match was made using a match rule enabled for automatic merging. Matchesmade using auto-merge match rules typically result in closer matches than those made usingmanual-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 isGENERATED 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 forRULE_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 thematch 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 sortCriteriaparameter.

Use CaseThis 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 listof 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 theresults to the user for editing.

SearchMatch Request Usage ExampleThe code in the following example searches for a match to 'EXAMPLES CORP' in the Organization_Name matchcolumn of the PARTY_ADDRESS_READ_PKG package. The results will be sorted based on the values in the

Reference SIF API Listing 105

Page 119: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

NAME column in descending order. SearchMatch will use the default MatchType of NONE since no MatchType isspecified.

SearchMatchRequest request = new SearchMatchRequest();request.setRecordsToReturn(5); request.setSiperianObjectUid("PACKAGE.PARTY_ADDRESS_READ_PKG"); Field orgNameField = new Field("Organization_Name"); orgNameField.setStringValue("EXAMPLES CORP");request.addMatchColumnField(orgNameField);request.setSortCriteria("NAME DESC");SearchMatchResponse response = (SearchMatchResponse) sipClient.process(request);

SearchMatch Response Usage ExampleThe code in the following example shows how to print out the records returned by the SearchMatch response.

SearchMatchResponse response = new SearchMatchResponse();int i=0;for(Iterator iter=response.getRecords().iterator(); iter.hasNext();) { //iterate through matched records System.out.println("Printing matched record " + i); Record record = (Record) iter.next(); BigDecimal definitiveMatch = record.getField("DEFINITIVE_MATCH_IND").getBigDecimalValue(); if(definitiveMatch.intValue()==1) System.out.println("Matched on an auto-merge rule"); Collection fields = record.getFields(); for(Iterator fieldIter=fields.iterator(); fieldIter.hasNext();) { //iterate through rest of fields Field f = (Field) fieldIter.next(); System.out.println(f.getName() + ": " + f.getValue()); }}

Related SIF Requests“Tokenize ” on page 111, “GetMatchedRecords” on page 78, “GetSearchResults ” on page 80, “SearchQuery ” onpage 106, “Merge ” on page 91, “MultiMerge” on page 92, “Link” on page 89

SearchQuerySearchQuery searches for records in a package, base object, or remote package based on an SQL conditionclause. The condition clause can reference any columns in the package, base object, or remote package and canuse operators supported by the target database.

When performing a SearchQuery using a ROWID_OBJECT value for a base object record that has been mergedinto another base object record, no records are returned. For example, if two base object records are merged, onewith a ROWID_OBJECT value of ROWID_A and the other with a value of ROWID_B, the ROWID_OBJECT valueof the surviving base object could be ROWID_A. In this case, if you perform a SearchQuery using aROWID_OBJECT of ROWID_B, no records are returned because a base object with a ROWID_OBJECT ofROWID_B no longer exists in the base object table.

Required ParametersThe 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 historytable 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.

106 Chapter 5: SIF API Reference

Page 120: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Parameter Description

The FilterCriteria parameter can be used to specify the literal expressions (FIRST_NAME = 'JOHN') or itcan be used in combination with FilterParameters.

FilterParameters Specifies the parameter values to be filtered as a list.

Optional ParametersThe 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. Thisparameter must be set to true for queries that return a predictable number of rows. UseGetSearchResults to fetch subsequent pages of search results.

RecordStates Specifies the Hub state indicator to use for filtering the search result.

JoinUids Specifies a list of UIDs to join with SiperiaObjectUID.

RemoveDuplicates If set to true, duplicates are removed from the result set. This parameter should be enabled only whenthere 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. WhenAdvancedMode 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.

Retrieving Large Record SetsFor information on controlling the number of records to be returned by the query and setting the data page size forpaging support, see “SearchRequestBase” on page 108.

Case SensitivityUnder normal conditions, the SearchQuery API is case sensitive. Any filter criteria specified for the request mustbe in the same case as in the ORS in order for the records to be found. However, the CASE_INDICATOR columnin C_REPOS_TABLE can be used to control case sensitivity of SearchQuery. Possible values for this indicatorare: UPPER, LOWER and NULL. When specified, the value in this column indicates that all data in thecorresponding table is in the specified case. The setting of this causes filter criteria to be automatically convertedto the appropriate case. Function-based queries are not required to implement case insensitive searches. Inpractice, the following behavior can be expected depending on the setting of CASE_INDICATOR:

Name Description

UPPER The where clause and any parameters of the query are converted to upper case prior to executing the request.

Reference SIF API Listing 107

Page 121: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Name Description

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.

NULL The query specified is executed as is with no case conversions.No assumptions are made about the case of data in the package in the request.

Use CaseThis 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 particularrecord.

Usage ExampleThe following example shows the search for a record from the package PARTY_ADDRESS_READ_PKG, wherePARTY_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);

Related SIF Requests“SearchHmQuery” on page 102, “GetSearchResults ” on page 80, “Get” on page 69, “SearchMatch ” on page 103

SearchRequestBaseSearchRequestBase is the base class for search requests (SearchQuery and SearchMatch) with parameters forpaging and sorting.

Paging SupportThe 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 inthe CMX_SYSTEM.C_REPOS_DATABASE.GETLIST_LIMIT parameter. This limit takes precedence over thevalues specified using setRecordsToReturn(int). The search queries will be limited to the minimum value of thetwo for any search request. For SearchMatchRequest API, there are also additional parameters that can bespecified on the Cleanse/Match server to control the number of matches the Hub will attempt before returningthe results.

¨ Number of records—setRecordsToReturn(int). When paging is enabled this parameter specifies the size ofthe first page of data returned by the search API. Subsequent pages can be returned using theGetSearchResultsRequest API. Alternatively, for requests that have paging disabled this method would specifythe limit of the total number of rows returned by the search API.

¨ The paging mechanism is enabled by default— disable paging by using the setDisablePaging() methods ofAPIs such as SearchQuery and SearchMatch that support paging. If the setDisablePaging() method is set tofalse, then a search token is returned. The search token is used by GetSearchResults to return additionalresults.

108 Chapter 5: SIF API Reference

Page 122: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

¨ The search token is deleted—After a period of inactivity longer than thesif.search.result.query.timeToLive.seconds setting specified in the Hub Server properties. GetSearchResultscalls made after the token is expired would result in an error.

For more information, refer to the SIF API Javadocs.

SearchResponseBaseSearchResponseBase 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 ofmatching records.

For more information, refer to the SIF API Javadocs.

SetPasswordSetPassword request changes the password for this user. The existing password must be specified in the requestas well as the new password. Passwords are specified as Password objects. The password specified must to thepassword policy configured in the Hub.

Use CaseThis 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 theadministrator to change passwords for the Informatica MDM Hub users.

SetRecordStateSetRecordState enables a client application to assign one of a predefined set of state indicator values to aspecified set of base object records. The state indicator value is stored in the CONSOLIDATION_IND column. Theconsolidation indicator can be one of the following values:

IndicatorValue

State Name Description

1 CONSOLIDATED This record has been consolidated (determined to be unique)and represents the best version of the truth.

2 UNMERGED This record has gone through the match process and is readyto be consolidated.

3 QUEUED_FOR_MATCH This record is a match candidate in the match batch that isbeing processed in the currently-executing match process.

4 NEWLY_LOADED This record is new (load insert) or changed (load update) andneeds to undergo the match process.

9 ON_HOLD The data steward has put this record on hold until furthernotice. Any record can be put on hold regardless of itsconsolidation indicator value. The match and consolidateprocesses ignore on-hold records. For more information, seeInformatica MDM Hub Data Steward Guide.

Reference SIF API Listing 109

Page 123: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

RestrictionsConsider the following when using the SetRecordState API:

¨ This request cannot be used within a transaction.

¨ The consolidation state can only be set for base object records with a Hub_State_Ind value of 1, meaning therecord has an ACTIVE hub status.

Required Parameters

Parameter Description

RecordKey Identifies the record that requires a state change. See “About RecordKey” on page 24 for moreinformation.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 ParametersThe SetRecordState request does not have any optional parameters.

Response FieldsThe following table describes the response fields:

Parameter Description

Messsage Contains the status message of the SetRecordState request.

Use CaseThis is the common scenario for using the SetRecordState request:

¨ In a client application, allow a user to explicitly set the state of a record.

SetRecordState Request Usage ExampleThe following example sets the record state of the record with a ROWID_OBJECT value of 782 toQUEUED_FOR_MATCH using the ADDRESS_UPDATE package:

SetRecordStateRequest request = new SetRecordStateRequest();request.setSiperianObjectUid("PACKAGE.ADDRESS_UPDATE");request.setRecordState(RecordState.QUEUED_FOR_MATCH);RecordKey recordKey = new RecordKey();recordKey.setRowid("782");request.addRecordKey(recordKey);SetRecordStateResponse response = (SetRecordStateResponse) sipClient.process(request);

SetRecordState Response Usage ExampleThe following example prints the status message from the SetRecordState response:

//Construct the request..

110 Chapter 5: SIF API Reference

Page 124: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

//Process the requestSetRecordStateResponse response = (SetRecordStateResponse) sipClient.process(request);

//Print the message from the response objectSystem.out.println("Message: " + response.getMessage());

TokenizeThe Tokenize API generates the match keys that the match engine and the SearchMatch request use whenperforming fuzzy matches. The Merge request does not use these match keys. Tokenize can also regeneratematch 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 matchtokens after the load process completes. See the Batch Jobs Reference in the Informatica MDM HubConfiguration Guide for more information.

If you request Tokenize to regenerate tokens for a record that has not changed since the previous Tokenize, therequest succeeds and reports that it tokenized zero records.

Transaction SupportWhen executed within an EJB context, Tokenize can follow a Put or CleansePut request in a single transaction. Ifthere is a failure in any of the requests within a transaction, the entire transaction is rolled back.

Required ParametersThe following table describes the required Tokenize parameters.

Parameter Description

setRecordKey(RecordKey) Indicates the key of the record to be tokenized.

setActionType(String) Action type returned from a previous Put or CleansePut request.Insert indicates that the record has not been tokenized.Update and Update xref indicate that the record has been previously tokenized and the tokensneed regenerated.

SiperianObjectUid The name of the package or base object.

Use CasesThe following scenarios are the common uses for the Tokenize request:

¨ 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 togenerate match keys.

Tokenize Request Usage ExampleThe following example shows how to generate match tokens for a record with ROWID_OBJECT 782 using theADDRESS_UPDATE package. This record is being tokenized for the first time, so an ActionType of Insert is used.The Put response provides the value of ActionType.

TokenizeRequest request = new TokenizeRequest(); request.setSiperianObjectUid( SiperianObjectType.PACKAGE.makeUid( "ADDRESS_UPDATE" ) ); RecordKey recordKey = new RecordKey(); recordKey.setRowid("782"); request.setRecordKey( recordKey ); request.setActionType("Insert"); TokenizeResponse response = (TokenizeResponse) sipClient.process(request);

Reference SIF API Listing 111

Page 125: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Related SIF Requests“SearchMatch ” on page 103, “CleansePut” on page 60, “Put ” on page 95

UnlinkUnlink decouples two or more base object records with the group ID specified in the groupRecordKey field. Therecords being unlinked must have been previously linked using the Link API.

UnmergeUnmerge unmerges two rows in a base object. Unmerge provides the same unmerge functionality as the DataManager 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 cannotuse unmerge within a transaction. For more information about unmerging and merging, refer to the InformaticaMDM 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 AuditManager to audit requests made by external applications. Once auditing for a particular SIF API request isenabled, Informatica MDM Hub captures each SIF request invocation and response in the audit log. For moreinformation, refer to the Informatica MDM Hub Configuration Guide .

Cross-reference Added Directly to a Base ObjectTypically when a new cross-reference is inserted, a new base object record is created for it. But Put or CleansePutAPIs and the “Load By ROWID” batch job can also add a cross-reference record directly to a base object. Thismeans that the cross-reference record was never the only cross-reference for a base object record. When such across-reference record is identified to be unmerged, it is deleted from the system and there is no independentbase object record to reinstate for it.

Linear UnmergeDuring a linear unmerge, no attention is paid to the process by which the records were originally merged.

Consider a scenario where initially there are three base object records with ROWID_OBJECT values of 1, 2, and3. Each of these base objects has a single cross-reference record with corresponding source keys 1, 2, and 3, andSALES as the SystemName value. If you merge ROWID_OBJECT 3 into 2, and then merge ROWID_OBJECT 2into 1, then as a result of the merge a single base object record with ROWID_OBJECT 1, and three cross-reference records remain.

Now, if sourceKey 2 of the SALES system is targeted for a linear unmerge, then the base object of sourceKey 2 isreinstated and the cross-reference of sourceKey 2 is associated with the reinstated base object. The resultingbase object records are as follows:

¨ ROWID_OBJECT=1 has two cross-reference records with sourceKeys 1 and 3.

¨ ROWID_OBJECT=2 has one cross-reference records with sourceKey 2.

Tree UnmergeDuring 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, and3. Each of these base objects has a single cross-reference record with corresponding source keys 1, 2, and 3, andSALES as the SystemName value. If you merge ROWID_OBJECT 3 into 2, and then merge ROWID_OBJECT 2into 1, then at the time record 2 was merged into record 1, record 3 had already been merged into 2. So the cross-

112 Chapter 5: SIF API Reference

Page 126: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

references for sourceKeys 2 and 3 are removed from the base object and the base object record for sourceKey 2is reinstated. The resulting base object records are as follows:

¨ ROWID_OBJECT=1 has one cross-reference record with sourceKey 1.

¨ ROWID_OBJECT=2 has two cross-reference records with sourceKeys 2 and 3.

Note: In both cases, the consolidated field values in the base object record are recalculated after the unmerge.

Cascade UnmergeUnmerge performs a cascade unmerge if this feature is enabled for this base object in the Schema Manager in theHub Console. With cascade unmerge, when records in the parent object are unmerged, Informatica MDM Hub alsounmerges affected records in the child base object.

Required ParametersThe 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 therecord to be unmerged.

SystemName Name of the system for which the record must be unmerged.

SourceKey Source key of the record that must be unmerged.

TreeUnmerge Set to true for a tree unmerge operation or false for a linearunmerge operation.

Use CaseThis 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 mightunmerge records when, for example, a merge of two records was done in error.

Related SIF Requests“Merge ” on page 91

UnregisterUsersUnregisterUsers enables an application to unregister selected users from Informatica MDM Hub. The applicationsends a list of user names, presumably representing users in the enterprise’s authentication system (for example,LDAP).

The application provides a list of user names, and Informatica MDM Hub removes them. Informatica MDM Hubignores 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 SupportWhen executed within an EJB context, this request can be part of a transaction with other requests. If there is afailure in any of the requests within a transaction, the entire transaction is rolled back.

Reference SIF API Listing 113

Page 127: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use CaseThis is the common scenario for using the UnregisterUsers request:

¨ Bulk unregistering with Informatica MDM Hub — Based on external authentication information, you can useunregistreUsers to bulk unregister users.

Related SIF Requests“RegisterUsers” on page 100

UpdateRelationshipUpdateRelationship Hierarchy Manager request updates a Relationship between two Entities. The existingrelationship record is updated if the Start Date, End Date, or custom columns for the Relationship record aremodified. If the update request changes the Hierarchy, Relationship Type, or one or both Entities in theRelationship, the current Relationship record is deleted (see “DeleteRelationship” on page 67) and a newRelationship record is added (see “AddRelationship” on page 56). When a new Relationship record is added, theRecordKey returned in the UpdateRelationshipResponse will be different from the one specified in theUpdateRelationshipRequest.

Note: This API request applies to Hierarchy Manager. If you have not purchased, configured, and populatedHierarchy Manager, this request will fail.

The request identifies the HM configuration and hierarchy, the relationship type, the records, and a number ofoptional parameters. The response contains the record key for the updated relationship. Informatica MDM Hubinfers the types of the entities being related, and thus the base objects containing those entities, from therelationship type.

Adding a New Relationship for a Foreign Key Relationship TypeUse UpdateRelationshipRequest instead of AddRelationshipRequest to add a new Relationship for a Foreign KeyRelationship Type because adding that Relationship really involves updating an existing record in the FKRelationship Base Object. For example, if there is a FK Relationship Base Object C_PERSON with the followingcolumns:

¨ 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 columnhas a non-null when there a HM FK Relationship between C_PERSON and C_COMPANY. The column value isset 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 followingcolumns:

¨ Rowid Object (C_PERSON.Rowid_Object): Primary Key for the FK Relationship

¨ Rowid BO1 (C_PERSON.Rowid_Object): BO1 in the FK Relationship

¨ Rowid BO2 (C_PERSON.Rowid_Company): BO2 in the FK Relationship

In other words either rowid BO1 or rowid BO2 in the Put Package maps to the Rowid Object column in the BaseObject. Updating the FK column (Rowid BO2 / C_PERSON.Rowid_Company in the example) to a non-null value isequivalent to adding a new FK Relationship. Also note that the RecordKey specified in setRecordKey() andsetBo1RecordKey() in this example would be the same.

Note: UpdateRelationshipRequest cannot be used to modify Relationship Type if the old or the new RelationshipType is a FK Relationship Type. To do that, use DeleteRelationshipRequest to delete the old Relationship. Thenuse UpdateRelationshipRequest if the new Relationship is a FK Relationship Type or AddRelationshipRequest ifthe new Relationship is not a FK Relationship Type.

114 Chapter 5: SIF API Reference

Page 128: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Use CaseThis 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 withentities, you can use the UpdateRelationship request to modify a relationship between two entities.

Related SIF Requests“AddRelationship” on page 56, “DeleteRelationship” on page 67

UpdateTaskUse the UpdateTask API to do one of the following:

¨ Reassign a task.

¨ Change the task data.

¨ Append to the task comment.

Required Request ParametersThe following table describes the required UpdateTask request parameters:

Parameter Description

TaskData This parameter specifies the task to update. See “About TaskData” on page 20.

Optional Request ParametersThe UpdateTask API does not have any optional request parameters.

Response FieldsThe following table describes the fields the UpdateTask response returns:

Parameter Description

Message Contains a message indicating if the UpdateTask request was processed successfully.

InteractionID The interaction ID.

Use CasesThe following scenario is a common use case for using the UpdateTask request:

¨ Change existing task data.

Usage ExampleThe following example updates an existing task:

UpdateTaskRequest request = new UpdateTaskRequest();TaskData task = new TaskData();request.setTaskData(task);task.setTaskId("1234");task.setTitle("Research and resolve item");task.setComment("This task has been updated.");task.setDueDate(new Date());task.setSubjectAreaUid("SUBJECT_AREA.test|Person");task.setTaskType("ReviewNoApprove");UpdateTaskResponse response = (UpdateTaskResponse) sipClient.process(request);

Reference SIF API Listing 115

Page 129: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

ValidateChangeListValidateChangeList validates a change list against the current ORS. It applies the specified change list to thecurrent repository, executing all of the changes in simulation mode without modifying the ORS, and then returnsany errors.

Required ParametersThe following table describes the required parameters:

Parameter Description

ChangeListXml Contains the XML string representing the change list to validate.

Optional ParametersThe following table describes the optional parameters:

Parameter Description

OwnerPassword Contains the owner password. The default is "".

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.

ValidateDataIntegrity If set to true, data integrity validation is required.If set to false, data integrity validation is not required. The default is false.

Response FieldThe following table describes the response fields:

Field Description

Messages Contains an array of error messages.

Success If true, the change list executed without errors.If false, the change list executed with errors.

ValidateMetadataThe ValidateMetadata API validates the metadata for the current ORS and returns a list of issues.ValidateMetadata only returns a message if metadata issues are found. You must iterate through the list ofmessages to determine:

¨ If the ValidateMetadata request ran without exceptions.

¨ If there are any metadata issues.

Required ParametersThe ValidateMetadata request does not have required parameters.

116 Chapter 5: SIF API Reference

Page 130: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Optional ParametersThe 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 FieldsThe following table describes the response fields:

Parameter Description

Message Contains a message indicating if the ValidateMetadata request was processed successfully.

ErrorID Contains an Error ID if any errors are returned.

Level Contains the error level if any errors are returned. The possible error levels are:- FATAL ERROR- ERROR- WARNING- INFORMATIONAL

Text Contains the error message if any errors are returned.

ValidateTasksThe 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.

Required Request ParametersThe following table describes the required ValidateTasks request parameters:

Parameter Description

TaskData This parameter specifies the task to validate. See “About TaskData” on page 20.

Optional Request ParametersThe ValidateTasks API does not have any optional request parameters.

Reference SIF API Listing 117

Page 131: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

Response FieldsThe ValidateTasks response returns the TaskValidationResult which contains the following information for eachtask specified in the request:

Parameter Description

TaskID This parameter identifies the task. See “About TaskData” on page 20.

isValid If true, the task is valid.If false, the task is not valid.

errorCode Contains an error code, if any errors are returned.

errorMessage Contains an error message, if any errors are returned.

Use CasesThe following scenario is a common use case for using the ValidateTasks request:

¨ Validate a merge task to ensure there is a match table record.

Usage ExampleThe 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);

118 Chapter 5: SIF API Reference

Page 132: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

I N D E X

AAcceptUnmatchedRecordsAsUnique request 56access protocols

using SIF 6addRelationship operation 56AddRelationship request 56ApplyChangeList

rollbackStrategy field 56applyChangeList call 56ApplyChangeList request 56AssignUnmergedRecords request 57asynchronous requests

making 35asynchronous SIF service invocations

run-time processing 39Audit request 58Authenticate request 59

Bbase objects, fuzzy

exact matches 21Batch Group APIs, about 51Batch Group Services, about 11build_war macro 25

CCanUnmergeRecords request 59cascade unmerge

Unmerge 112Cleanse 28cleanse request 59CleansePut

state management 60cleansePut request 28, 60ClearAssignedUnmergedRecords request 63cmxserver.properties

sif.search.result.drop.batch.interval.milliseconds 21sif.search.result.drop.batch.record.count 21sif.search.result.query.timeToLive.seconds 21sif.search.result.refresh.interval.seconds 21

com.siperian.sif.client package 21com.siperian.sif.message package 21composite services

about 42consolidation

indicator 109state 109

content metadataDELETED_XREF 69HISTORY 69PENDING_XREF 69

RAW 69XREF 69XREF_HISTORY 69

createChangeList call 64CreateChangeList request 64CreateTask 64

DData APIs, about 51Data Retrieval APIs, about 51Data Retrieval Services, about 10Data Services, about 10Data Steward APIs, about 51Data Steward Services, about 10Data Update / Insert APIs, about 51Data Update / Insert Services, about 10debug log 21Delete

state management 65DELETED_XREF

content metadata 69DeleteRelationship request 67Deleterequest 65DescribeSiperianObject request 67

EEclipse 8ExecuteBatchGroup request 68external applications

interacting with Informatica MDM Hub 2

FFlagForAutomerge 69foreign key relationship type

adding new relationship, UpdateRelationship 114fuzzy base objects

exact matches 21

GGet 29Get request 69GetAssignableUsersForTasks 71GetAssignedRecords request 72GetBatchGroupStatus request 72GetBvt

state management 73GetBvt request 73GetEffectivePeriods API 74

119

Page 133: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

GetEntityGraph request 75GetLookupValue request 77GetLookupValues request 77GetMatchedRecords

state management 78GetMatchedRecords request 78GetMergeHistory request 78GetOneHop request 78GetOrsList request 79getOrsMetadata call 80GetOrsMetadata request 80GetSearchResults request 80GetSiperianObjectCompatibility request 82getSystemTrustSettings request 82GetTaskLineage 83GetTasks request 85GetTrustGraphData request 86GetTrustScore request 87GetUnmergedRecordCount request 87GetXrefForEffectiveDate

optional parameters 88required parameters 88usage example 88use case 88

GetXrefForEffectiveDate API 88GetXrefForEffectiveDate request 88

HHISTORY

content metadata 69

Iincremental data loads, about 2index.html 15Informatica MDM Hub

external applications, how to interact with 2real-time processing 2

JJava archive (JAR) files

tools.jar 25Java compilers 25Javadoc

about 15JMS Event Messages

about 35JMS Message Queues for Asynchronous SIF Invocations, about 38

Llib directory 25linear unmerge

Unmerge 112Link request 89ListSiperianObjects request 90Load Process vs. SIF Put

validation rules 95

MMerge

state management 91Merge request 91Merge Workflow APIs, about 51Merge Workflow Services, about 11Metadata APIs, about 51metadata management API

using 40Metadata Management APIs, about 51Metadata Manager APIs, about 51Metadata Services, about 11Miscellaneous APIs, about 51MultiMerge request 92

OOperational Record Store (ORS) database, about 1ORS-specific APIs

classes 26generating 25populating SIF field parameters 26using 24

ORS-specific Services, about 11

Ppaging support

SearchRequestBase 108PENDING_XREF

content metadata 69PreviewBVT

optional parameters 92required parameters 92usage example 92use case 92

PreviewBVT API 92PreviewBVT request 92process method, about 13PromotePendingXref request 93PromotePendingXrefs

state management 93proxies 8Put

state management 95transaction support 95

Put request 95

RRAW

content metadata 69real-time processing, about 2ReassignRecords request 100RecordKey

about 24Records

about 24RegisterUsers

transaction support 100RegisterUsers request 100ResetBatchGroup request 101Restore request 101rollbackStrategy field (ApplyChangeList) 56

120 Index

Page 134: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

SSAM

using with SIF 39schema

defines the database tables in an ORS 1SearchHmQuery request 102SearchLookupValues request 102SearchMatch request 103SearchMatchColumn 32SearchMatchRecord 32searchQuery

case sensitivity 106retrieving large record sets 106

SearchQuery 33searchQuery operation 33searchQuery request 106SearchRequestBase

paging support 108SearchRequestBase request 108SearchResponseBase request 109Security Access Manager (SAM)

using with SIF 39Services Development Kit (SDK), about 6Services Integration Framework (SIF) 3SetPassword request 109SetRecordState request 109SIF

access protocols 6asynchronous requests, making 35constructing requests 23debug log 21how requests are processed 9Javadoc, about 15metadata management API, using 40processing responses 23transaction attribute type 22types of requests 9using 22using SAM 39

SIF callsapplyChangeList 56createChangeList 64getOrsMetadata 80

SIF SDKabout 17

sif.search.result.drop.batch.interval.milliseconds 21sif.search.result.drop.batch.record.count 21sif.search.result.query.timeToLive.seconds 21sif.search.result.refresh.interval.seconds 21SIP_HOME environment variable 15siperian-api.jar

about 21siperian-sifsdk.zip, about 15siperian.sif.jms.queue

about 35SiperianClient

process method, about 13SiperianClient class 6, 13SiperianObjectUID

about 19SOAP protocol 8state management

CleansePut 60defined 12Delete 65GetBvt 73GetMatchedRecords 78

Merge 91PromotePendingXrefs 93Put 95

State Management APIs, about 51State Management Services, about 12

TTask APIs, about 51TaskData

about 20TaskRecord

about 21Tokenize request 111Transaction attribute type

about 22transaction support

Put 95RegisterUsers 100UnregisterUsers 113

transactionsusing 41

tree unmergeUnmerge 112

UUnlink request 112Unmerge

cascade unmerge 112linear unmerge 112tree unmerge 112XREF added directly to BO 112

Unmerge request 112UnregisterUsers

transaction support 113UnregisterUsers request 113UpdateRelationship

adding new relationship for foreign key type 114UpdateRelationship request 114UpdateTask 115User Management APIs, about 51User Management Services, about 12

VValidateChangeList request 116ValidateMetadata 116ValidateTasks 117validation rules

Load Process vs. SIF Put 95

WWeb Services Description Language (WSDL)

ORS-specific APIs 25Web Services Description Language (WSDL), about 7web services, about 7

XXML Message

elements 36

Index 121

Page 135: Guide Services Integration Framework (SIF) › proddocs › Product... · Informatica MDM Multidomain Edition for Oracle (Version 9.5.1) Services Integration Framework (SIF) Guide

XML over HTTPusing 8

XREFcontent metadata 69

XREF_HISTORYcontent metadata 69

122 Index