DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_PARTY_SEARCH

Source


1 PACKAGE BODY HZ_PARTY_SEARCH AS
2 /*=======================================================================+
3  |  Copyright (c) 1999 Oracle Corporation Redwood Shores, California, USA|
4  |                          All rights reserved.                         |
5  +=======================================================================+
6  | NAME
7  |      HZ_PARTY_SEARCH
8  |
9  | DESCRIPTION
10  |
11  | Compiled by the HZ Match Rule Compiler
12  | PUBLIC PROCEDURES
13  |    find_parties
14  |    get_matching_party_sites
15  |    get_matching_contacts
16  |    get_matching_contact_points
17  |    get_party_score_details
18  |    
19  | HISTORY
20  |      30-MAR-2009 Generated by HZ Match Rule Compiler
21  |
22  *=======================================================================*/
23   g_debug_count                        NUMBER := 0;
24   g_last_rule			    NUMBER := -1;
25   g_last_rule_valid	 	    BOOLEAN := FALSE;
26   PROCEDURE find_parties (
27       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
28       x_rule_id               IN OUT  NUMBER,
29       p_party_search_rec      IN      party_search_rec_type,
30       p_party_site_list       IN      party_site_list,
31       p_contact_list          IN      contact_list,
32       p_contact_point_list    IN      contact_point_list,
33       p_restrict_sql          IN      VARCHAR2,
34       p_search_merged         IN      VARCHAR2,
35       x_search_ctx_id         IN OUT  NUMBER,
36       x_num_matches           IN OUT  NUMBER,
37       x_return_status         OUT     VARCHAR2,
38       x_msg_count             OUT     NUMBER,
39       x_msg_data              OUT     VARCHAR2
40 ) IS
41   BEGIN
42     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
43       hz_utility_v2pub.debug(p_message=>'find_parties-1(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
44     END IF;
45     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
46       hz_utility_v2pub.debug(p_message=>'Rule ID '||x_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
47     END IF;
48      find_parties(p_init_msg_list,x_rule_id,p_party_search_rec,
49             p_party_site_list,p_contact_list,p_contact_point_list,
50             p_restrict_sql,NULL,p_search_merged,x_search_ctx_id,
51             x_num_matches,x_return_status,x_msg_count,x_msg_data);
52     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
53       hz_utility_v2pub.debug(p_message=>'find_parties-1(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
54     END IF;
55   END;
56 
57   PROCEDURE find_parties (
58       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
59       p_rule_id               IN      NUMBER,
60       p_party_search_rec      IN      party_search_rec_type,
61       p_party_site_list       IN      party_site_list,
62       p_contact_list          IN      contact_list,
63       p_contact_point_list    IN      contact_point_list,
64       p_restrict_sql          IN      VARCHAR2,
65       p_match_type            IN      VARCHAR2,
66       p_search_merged         IN      VARCHAR2,
67       x_search_ctx_id         OUT     NUMBER,
68       x_num_matches           OUT     NUMBER,
69       x_return_status         OUT     VARCHAR2,
70       x_msg_count             OUT     NUMBER,
71       x_msg_data              OUT     VARCHAR2
72 ) IS
73   CURSOR c_match_rule IS 
74     SELECT COMPILATION_FLAG 
75     FROM HZ_MATCH_RULES_VL 
76     WHERE MATCH_RULE_ID = p_rule_id;
77   l_cmp_flag VARCHAR2(1);
78   BEGIN
79 
80     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
81       hz_utility_v2pub.debug(p_message=>'find_parties(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
82     END IF;
83     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
84       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
85     END IF;
86     -- Initialize return status and message stack
87     x_return_status := FND_API.G_RET_STS_SUCCESS;
88     IF FND_API.to_Boolean(p_init_msg_list) THEN
89       FND_MSG_PUB.initialize;
90     END IF;
91 
92     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
93       -- Find the match rule
94       null;
95 
96       -- No MATCH RULE FOUND
97       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
98       FND_MSG_PUB.ADD;
99       RAISE FND_API.G_EXC_ERROR;
100     END IF;
101     OPEN c_match_rule;
102     FETCH c_match_rule INTO l_cmp_flag;
103     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
104       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
105       FND_MSG_PUB.ADD;
106       RAISE FND_API.G_EXC_ERROR;
107     END IF;
108     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
109     IF p_rule_id=2 THEN 
110       IF NOT HZ_MATCH_RULE_2.check_staged THEN
111         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
112         FND_MSG_PUB.ADD;
113         RAISE FND_API.G_EXC_ERROR;
114       END IF;
115       HZ_MATCH_RULE_2.find_parties(
116         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
117         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
118     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
119     ELSIF p_rule_id=3 THEN 
120       IF NOT HZ_MATCH_RULE_3.check_staged THEN
121         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
122         FND_MSG_PUB.ADD;
123         RAISE FND_API.G_EXC_ERROR;
124       END IF;
125       HZ_MATCH_RULE_3.find_parties(
126         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
127         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
128     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
129     ELSIF p_rule_id=4 THEN 
130       IF NOT HZ_MATCH_RULE_4.check_staged THEN
131         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
132         FND_MSG_PUB.ADD;
133         RAISE FND_API.G_EXC_ERROR;
134       END IF;
135       HZ_MATCH_RULE_4.find_parties(
136         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
137         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
138     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
139     ELSIF p_rule_id=5 THEN 
140       IF NOT HZ_MATCH_RULE_5.check_staged THEN
141         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
142         FND_MSG_PUB.ADD;
143         RAISE FND_API.G_EXC_ERROR;
144       END IF;
145       HZ_MATCH_RULE_5.find_parties(
146         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
147         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
148     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
149     ELSIF p_rule_id=6 THEN 
150       IF NOT HZ_MATCH_RULE_6.check_staged THEN
151         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
152         FND_MSG_PUB.ADD;
153         RAISE FND_API.G_EXC_ERROR;
154       END IF;
155       HZ_MATCH_RULE_6.find_parties(
156         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
157         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
158     -- Code for Match rule SAMPLE: SIMILAR_PERSON
159     ELSIF p_rule_id=7 THEN 
160       IF NOT HZ_MATCH_RULE_7.check_staged THEN
161         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
162         FND_MSG_PUB.ADD;
163         RAISE FND_API.G_EXC_ERROR;
164       END IF;
165       HZ_MATCH_RULE_7.find_parties(
166         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
167         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
168     -- Code for Match rule SAMPLE: SEARCH
169     ELSIF p_rule_id=8 THEN 
170       IF NOT HZ_MATCH_RULE_8.check_staged THEN
171         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
172         FND_MSG_PUB.ADD;
173         RAISE FND_API.G_EXC_ERROR;
174       END IF;
175       HZ_MATCH_RULE_8.find_parties(
176         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
177         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
178     -- Code for Match rule RM SEARCH RULE
179     ELSIF p_rule_id=32 THEN 
180       IF NOT HZ_MATCH_RULE_32.check_staged THEN
181         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
182         FND_MSG_PUB.ADD;
183         RAISE FND_API.G_EXC_ERROR;
184       END IF;
185       HZ_MATCH_RULE_32.find_parties(
186         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
187         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
188     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
189     ELSIF p_rule_id=33 THEN 
190       IF NOT HZ_MATCH_RULE_33.check_staged THEN
191         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
192         FND_MSG_PUB.ADD;
193         RAISE FND_API.G_EXC_ERROR;
194       END IF;
195       HZ_MATCH_RULE_33.find_parties(
196         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
197         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
198     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
199     ELSIF p_rule_id=34 THEN 
200       IF NOT HZ_MATCH_RULE_34.check_staged THEN
201         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
202         FND_MSG_PUB.ADD;
203         RAISE FND_API.G_EXC_ERROR;
204       END IF;
205       HZ_MATCH_RULE_34.find_parties(
206         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
207         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
208     -- Code for Match rule DL SMART SEARCH
209     ELSIF p_rule_id=35 THEN 
210       IF NOT HZ_MATCH_RULE_35.check_staged THEN
211         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
212         FND_MSG_PUB.ADD;
213         RAISE FND_API.G_EXC_ERROR;
214       END IF;
215       HZ_MATCH_RULE_35.find_parties(
216         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
217         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
218     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
219     ELSIF p_rule_id=36 THEN 
220       IF NOT HZ_MATCH_RULE_36.check_staged THEN
221         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
222         FND_MSG_PUB.ADD;
223         RAISE FND_API.G_EXC_ERROR;
224       END IF;
225       HZ_MATCH_RULE_36.find_parties(
226         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
227         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
228     -- Code for Match rule DL ADDRESS DEFAULT
229     ELSIF p_rule_id=37 THEN 
230       IF NOT HZ_MATCH_RULE_37.check_staged THEN
231         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
232         FND_MSG_PUB.ADD;
233         RAISE FND_API.G_EXC_ERROR;
234       END IF;
235       HZ_MATCH_RULE_37.find_parties(
236         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
237         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
238     -- Code for Match rule DL RELATIONSHIP DEFAULT
239     ELSIF p_rule_id=38 THEN 
240       IF NOT HZ_MATCH_RULE_38.check_staged THEN
241         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
242         FND_MSG_PUB.ADD;
243         RAISE FND_API.G_EXC_ERROR;
244       END IF;
245       HZ_MATCH_RULE_38.find_parties(
246         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
247         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
248     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
249     ELSIF p_rule_id=39 THEN 
250       IF NOT HZ_MATCH_RULE_39.check_staged THEN
251         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
252         FND_MSG_PUB.ADD;
253         RAISE FND_API.G_EXC_ERROR;
254       END IF;
255       HZ_MATCH_RULE_39.find_parties(
256         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
257         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
258     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
259     ELSIF p_rule_id=40 THEN 
260       IF NOT HZ_MATCH_RULE_40.check_staged THEN
261         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
262         FND_MSG_PUB.ADD;
263         RAISE FND_API.G_EXC_ERROR;
264       END IF;
265       HZ_MATCH_RULE_40.find_parties(
266         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
267         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
268     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
269     ELSIF p_rule_id=41 THEN 
270       IF NOT HZ_MATCH_RULE_41.check_staged THEN
271         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
272         FND_MSG_PUB.ADD;
273         RAISE FND_API.G_EXC_ERROR;
274       END IF;
275       HZ_MATCH_RULE_41.find_parties(
276         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
277         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
278     -- Code for Match rule SAMPLE: SEARCH EXACT
279     ELSIF p_rule_id=42 THEN 
280       IF NOT HZ_MATCH_RULE_42.check_staged THEN
281         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
282         FND_MSG_PUB.ADD;
283         RAISE FND_API.G_EXC_ERROR;
284       END IF;
285       HZ_MATCH_RULE_42.find_parties(
286         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
287         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
288     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
289     ELSIF p_rule_id=48 THEN 
290       IF NOT HZ_MATCH_RULE_48.check_staged THEN
291         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
292         FND_MSG_PUB.ADD;
293         RAISE FND_API.G_EXC_ERROR;
294       END IF;
295       HZ_MATCH_RULE_48.find_parties(
296         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
297         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
298     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
299     ELSIF p_rule_id=50 THEN 
300       IF NOT HZ_MATCH_RULE_50.check_staged THEN
301         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
302         FND_MSG_PUB.ADD;
303         RAISE FND_API.G_EXC_ERROR;
304       END IF;
305       HZ_MATCH_RULE_50.find_parties(
306         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
307         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
308     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
309     ELSIF p_rule_id=51 THEN 
310       IF NOT HZ_MATCH_RULE_51.check_staged THEN
311         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
312         FND_MSG_PUB.ADD;
313         RAISE FND_API.G_EXC_ERROR;
314       END IF;
315       HZ_MATCH_RULE_51.find_parties(
316         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
317         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
318     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
319     ELSIF p_rule_id=52 THEN 
320       IF NOT HZ_MATCH_RULE_52.check_staged THEN
321         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
322         FND_MSG_PUB.ADD;
323         RAISE FND_API.G_EXC_ERROR;
324       END IF;
325       HZ_MATCH_RULE_52.find_parties(
326         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
327         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
328     -- Code for Match rule CREDIT MANAGEMENT SEARCH
329     ELSIF p_rule_id=53 THEN 
330       IF NOT HZ_MATCH_RULE_53.check_staged THEN
331         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
332         FND_MSG_PUB.ADD;
333         RAISE FND_API.G_EXC_ERROR;
334       END IF;
335       HZ_MATCH_RULE_53.find_parties(
336         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
337         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
338     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
339     ELSIF p_rule_id=58 THEN 
340       IF NOT HZ_MATCH_RULE_58.check_staged THEN
341         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
342         FND_MSG_PUB.ADD;
343         RAISE FND_API.G_EXC_ERROR;
344       END IF;
345       HZ_MATCH_RULE_58.find_parties(
346         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
347         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
348     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
349     ELSIF p_rule_id=60 THEN 
350       IF NOT HZ_MATCH_RULE_60.check_staged THEN
351         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
352         FND_MSG_PUB.ADD;
353         RAISE FND_API.G_EXC_ERROR;
354       END IF;
355       HZ_MATCH_RULE_60.find_parties(
356         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
357         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
358     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
359     ELSIF p_rule_id=61 THEN 
360       IF NOT HZ_MATCH_RULE_61.check_staged THEN
361         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
362         FND_MSG_PUB.ADD;
363         RAISE FND_API.G_EXC_ERROR;
364       END IF;
365       HZ_MATCH_RULE_61.find_parties(
366         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
367         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
368     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
369     ELSIF p_rule_id=62 THEN 
370       IF NOT HZ_MATCH_RULE_62.check_staged THEN
371         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
372         FND_MSG_PUB.ADD;
373         RAISE FND_API.G_EXC_ERROR;
374       END IF;
375       HZ_MATCH_RULE_62.find_parties(
376         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
377         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
378     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
379     ELSIF p_rule_id=98 THEN 
380       IF NOT HZ_MATCH_RULE_98.check_staged THEN
381         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
382         FND_MSG_PUB.ADD;
383         RAISE FND_API.G_EXC_ERROR;
384       END IF;
385       HZ_MATCH_RULE_98.find_parties(
386         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
387         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
388     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
389     ELSIF p_rule_id=99 THEN 
390       IF NOT HZ_MATCH_RULE_99.check_staged THEN
391         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
392         FND_MSG_PUB.ADD;
393         RAISE FND_API.G_EXC_ERROR;
394       END IF;
395       HZ_MATCH_RULE_99.find_parties(
396         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
397         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
398     END IF;
399  -- User quality score 
400  IF (fnd_profile.value('HZ_QUALITY_WEIGHTING_USER_HOOK') = 'Y')  THEN  
401      HZ_DQM_SEARCH_UTIL.get_quality_score ( x_search_ctx_id, p_rule_id); 
402   END IF; 
403     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
404       hz_utility_v2pub.debug(p_message=>'find_parties(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
405     END IF;
406   --Standard call to get message count and if count is 1, get message info
407   FND_MSG_PUB.Count_And_Get(
408     p_encoded => FND_API.G_FALSE,
409     p_count => x_msg_count,
410     p_data  => x_msg_data);
411   EXCEPTION
412        WHEN FND_API.G_EXC_ERROR THEN
413                x_return_status := FND_API.G_RET_STS_ERROR;
414                FND_MSG_PUB.Count_And_Get(
415                                p_encoded => FND_API.G_FALSE,
416                                p_count => x_msg_count,
417                                p_data  => x_msg_data);
418        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
419                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
420                FND_MSG_PUB.Count_And_Get(
421                                p_encoded => FND_API.G_FALSE,
422                                p_count => x_msg_count,
423                                p_data  => x_msg_data);
424 
425        WHEN OTHERS THEN
426                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
427                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
428                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
429                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
430                FND_MSG_PUB.ADD;
431 
432                FND_MSG_PUB.Count_And_Get(
433                                p_encoded => FND_API.G_FALSE,
434                                p_count => x_msg_count,
435                                p_data  => x_msg_data);
436   END;
437 
438   PROCEDURE find_persons (
439       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
440       p_rule_id               IN      NUMBER,
441       p_party_search_rec      IN      party_search_rec_type,
442       p_party_site_list       IN      party_site_list,
443       p_contact_list          IN      contact_list,
444       p_contact_point_list    IN      contact_point_list,
445       p_restrict_sql          IN      VARCHAR2,
446       p_match_type            IN      VARCHAR2,
447       p_search_merged         IN      VARCHAR2, 
448       x_search_ctx_id         OUT     NUMBER,
449       x_num_matches           OUT     NUMBER,
450       x_return_status         OUT     VARCHAR2,
451       x_msg_count             OUT     NUMBER,
452       x_msg_data              OUT     VARCHAR2
453 ) IS
454   CURSOR c_match_rule IS 
455     SELECT COMPILATION_FLAG 
456     FROM HZ_MATCH_RULES_VL 
457     WHERE MATCH_RULE_ID = p_rule_id;
458   l_cmp_flag VARCHAR2(1);
459   BEGIN
460 
461     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
462       hz_utility_v2pub.debug(p_message=>'find_persons(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
463     END IF;
464     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
465       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
466     END IF;
467     -- Initialize return status and message stack
468     x_return_status := FND_API.G_RET_STS_SUCCESS;
469     IF FND_API.to_Boolean(p_init_msg_list) THEN
470       FND_MSG_PUB.initialize;
471     END IF;
472 
473     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
474       -- Find the match rule
475       null;
476 
477       -- No MATCH RULE FOUND
478       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
479       FND_MSG_PUB.ADD;
480       RAISE FND_API.G_EXC_ERROR;
481     END IF;
482     OPEN c_match_rule;
483     FETCH c_match_rule INTO l_cmp_flag;
484     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
485       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
486       FND_MSG_PUB.ADD;
487       RAISE FND_API.G_EXC_ERROR;
488     END IF;
489     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
490     IF p_rule_id=2 THEN 
491       IF NOT HZ_MATCH_RULE_2.check_staged THEN
492         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
493         FND_MSG_PUB.ADD;
494         RAISE FND_API.G_EXC_ERROR;
495       END IF;
496       HZ_MATCH_RULE_2.find_persons(
497         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
498         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
499     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
500     ELSIF p_rule_id=3 THEN 
501       IF NOT HZ_MATCH_RULE_3.check_staged THEN
502         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
503         FND_MSG_PUB.ADD;
504         RAISE FND_API.G_EXC_ERROR;
505       END IF;
506       HZ_MATCH_RULE_3.find_persons(
507         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
508         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
509     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
510     ELSIF p_rule_id=4 THEN 
511       IF NOT HZ_MATCH_RULE_4.check_staged THEN
512         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
513         FND_MSG_PUB.ADD;
514         RAISE FND_API.G_EXC_ERROR;
515       END IF;
516       HZ_MATCH_RULE_4.find_persons(
517         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
518         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
519     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
520     ELSIF p_rule_id=5 THEN 
521       IF NOT HZ_MATCH_RULE_5.check_staged THEN
522         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
523         FND_MSG_PUB.ADD;
524         RAISE FND_API.G_EXC_ERROR;
525       END IF;
526       HZ_MATCH_RULE_5.find_persons(
527         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
528         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
529     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
530     ELSIF p_rule_id=6 THEN 
531       IF NOT HZ_MATCH_RULE_6.check_staged THEN
532         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
533         FND_MSG_PUB.ADD;
534         RAISE FND_API.G_EXC_ERROR;
535       END IF;
536       HZ_MATCH_RULE_6.find_persons(
537         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
538         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
539     -- Code for Match rule SAMPLE: SIMILAR_PERSON
540     ELSIF p_rule_id=7 THEN 
541       IF NOT HZ_MATCH_RULE_7.check_staged THEN
542         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
543         FND_MSG_PUB.ADD;
544         RAISE FND_API.G_EXC_ERROR;
545       END IF;
546       HZ_MATCH_RULE_7.find_persons(
547         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
548         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
549     -- Code for Match rule SAMPLE: SEARCH
550     ELSIF p_rule_id=8 THEN 
551       IF NOT HZ_MATCH_RULE_8.check_staged THEN
552         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
553         FND_MSG_PUB.ADD;
554         RAISE FND_API.G_EXC_ERROR;
555       END IF;
556       HZ_MATCH_RULE_8.find_persons(
557         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
558         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
559     -- Code for Match rule RM SEARCH RULE
560     ELSIF p_rule_id=32 THEN 
561       IF NOT HZ_MATCH_RULE_32.check_staged THEN
562         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
563         FND_MSG_PUB.ADD;
564         RAISE FND_API.G_EXC_ERROR;
565       END IF;
566       HZ_MATCH_RULE_32.find_persons(
567         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
568         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
569     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
570     ELSIF p_rule_id=33 THEN 
571       IF NOT HZ_MATCH_RULE_33.check_staged THEN
572         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
573         FND_MSG_PUB.ADD;
574         RAISE FND_API.G_EXC_ERROR;
575       END IF;
576       HZ_MATCH_RULE_33.find_persons(
577         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
578         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
579     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
580     ELSIF p_rule_id=34 THEN 
581       IF NOT HZ_MATCH_RULE_34.check_staged THEN
582         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
583         FND_MSG_PUB.ADD;
584         RAISE FND_API.G_EXC_ERROR;
585       END IF;
586       HZ_MATCH_RULE_34.find_persons(
587         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
588         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
589     -- Code for Match rule DL SMART SEARCH
590     ELSIF p_rule_id=35 THEN 
591       IF NOT HZ_MATCH_RULE_35.check_staged THEN
592         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
593         FND_MSG_PUB.ADD;
594         RAISE FND_API.G_EXC_ERROR;
595       END IF;
596       HZ_MATCH_RULE_35.find_persons(
597         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
598         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
599     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
600     ELSIF p_rule_id=36 THEN 
601       IF NOT HZ_MATCH_RULE_36.check_staged THEN
602         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
603         FND_MSG_PUB.ADD;
604         RAISE FND_API.G_EXC_ERROR;
605       END IF;
606       HZ_MATCH_RULE_36.find_persons(
607         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
608         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
609     -- Code for Match rule DL ADDRESS DEFAULT
610     ELSIF p_rule_id=37 THEN 
611       IF NOT HZ_MATCH_RULE_37.check_staged THEN
612         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
613         FND_MSG_PUB.ADD;
614         RAISE FND_API.G_EXC_ERROR;
615       END IF;
616       HZ_MATCH_RULE_37.find_persons(
617         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
618         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
619     -- Code for Match rule DL RELATIONSHIP DEFAULT
620     ELSIF p_rule_id=38 THEN 
621       IF NOT HZ_MATCH_RULE_38.check_staged THEN
622         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
623         FND_MSG_PUB.ADD;
624         RAISE FND_API.G_EXC_ERROR;
625       END IF;
626       HZ_MATCH_RULE_38.find_persons(
627         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
628         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
629     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
630     ELSIF p_rule_id=39 THEN 
631       IF NOT HZ_MATCH_RULE_39.check_staged THEN
632         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
633         FND_MSG_PUB.ADD;
634         RAISE FND_API.G_EXC_ERROR;
635       END IF;
636       HZ_MATCH_RULE_39.find_persons(
637         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
638         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
639     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
640     ELSIF p_rule_id=40 THEN 
641       IF NOT HZ_MATCH_RULE_40.check_staged THEN
642         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
643         FND_MSG_PUB.ADD;
644         RAISE FND_API.G_EXC_ERROR;
645       END IF;
646       HZ_MATCH_RULE_40.find_persons(
647         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
648         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
649     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
650     ELSIF p_rule_id=41 THEN 
651       IF NOT HZ_MATCH_RULE_41.check_staged THEN
652         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
653         FND_MSG_PUB.ADD;
654         RAISE FND_API.G_EXC_ERROR;
655       END IF;
656       HZ_MATCH_RULE_41.find_persons(
657         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
658         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
659     -- Code for Match rule SAMPLE: SEARCH EXACT
660     ELSIF p_rule_id=42 THEN 
661       IF NOT HZ_MATCH_RULE_42.check_staged THEN
662         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
663         FND_MSG_PUB.ADD;
664         RAISE FND_API.G_EXC_ERROR;
665       END IF;
666       HZ_MATCH_RULE_42.find_persons(
667         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
668         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
669     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
670     ELSIF p_rule_id=48 THEN 
671       IF NOT HZ_MATCH_RULE_48.check_staged THEN
672         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
673         FND_MSG_PUB.ADD;
674         RAISE FND_API.G_EXC_ERROR;
675       END IF;
676       HZ_MATCH_RULE_48.find_persons(
677         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
678         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
679     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
680     ELSIF p_rule_id=50 THEN 
681       IF NOT HZ_MATCH_RULE_50.check_staged THEN
682         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
683         FND_MSG_PUB.ADD;
684         RAISE FND_API.G_EXC_ERROR;
685       END IF;
686       HZ_MATCH_RULE_50.find_persons(
687         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
688         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
689     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
690     ELSIF p_rule_id=51 THEN 
691       IF NOT HZ_MATCH_RULE_51.check_staged THEN
692         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
693         FND_MSG_PUB.ADD;
694         RAISE FND_API.G_EXC_ERROR;
695       END IF;
696       HZ_MATCH_RULE_51.find_persons(
697         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
698         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
699     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
700     ELSIF p_rule_id=52 THEN 
701       IF NOT HZ_MATCH_RULE_52.check_staged THEN
702         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
703         FND_MSG_PUB.ADD;
704         RAISE FND_API.G_EXC_ERROR;
705       END IF;
706       HZ_MATCH_RULE_52.find_persons(
707         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
708         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
709     -- Code for Match rule CREDIT MANAGEMENT SEARCH
710     ELSIF p_rule_id=53 THEN 
711       IF NOT HZ_MATCH_RULE_53.check_staged THEN
712         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
713         FND_MSG_PUB.ADD;
714         RAISE FND_API.G_EXC_ERROR;
715       END IF;
716       HZ_MATCH_RULE_53.find_persons(
717         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
718         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
719     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
720     ELSIF p_rule_id=58 THEN 
721       IF NOT HZ_MATCH_RULE_58.check_staged THEN
722         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
723         FND_MSG_PUB.ADD;
724         RAISE FND_API.G_EXC_ERROR;
725       END IF;
726       HZ_MATCH_RULE_58.find_persons(
727         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
728         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
729     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
730     ELSIF p_rule_id=60 THEN 
731       IF NOT HZ_MATCH_RULE_60.check_staged THEN
732         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
733         FND_MSG_PUB.ADD;
734         RAISE FND_API.G_EXC_ERROR;
735       END IF;
736       HZ_MATCH_RULE_60.find_persons(
737         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
738         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
739     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
740     ELSIF p_rule_id=61 THEN 
741       IF NOT HZ_MATCH_RULE_61.check_staged THEN
742         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
743         FND_MSG_PUB.ADD;
744         RAISE FND_API.G_EXC_ERROR;
745       END IF;
746       HZ_MATCH_RULE_61.find_persons(
747         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
748         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
749     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
750     ELSIF p_rule_id=62 THEN 
751       IF NOT HZ_MATCH_RULE_62.check_staged THEN
752         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
753         FND_MSG_PUB.ADD;
754         RAISE FND_API.G_EXC_ERROR;
755       END IF;
756       HZ_MATCH_RULE_62.find_persons(
757         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
758         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
759     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
760     ELSIF p_rule_id=98 THEN 
761       IF NOT HZ_MATCH_RULE_98.check_staged THEN
762         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
763         FND_MSG_PUB.ADD;
764         RAISE FND_API.G_EXC_ERROR;
765       END IF;
766       HZ_MATCH_RULE_98.find_persons(
767         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
768         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
769     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
770     ELSIF p_rule_id=99 THEN 
771       IF NOT HZ_MATCH_RULE_99.check_staged THEN
772         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
773         FND_MSG_PUB.ADD;
774         RAISE FND_API.G_EXC_ERROR;
775       END IF;
776       HZ_MATCH_RULE_99.find_persons(
777         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
778         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
779     END IF;
780     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
781       hz_utility_v2pub.debug(p_message=>'find_persons(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
782     END IF;
783   --Standard call to get message count and if count is 1, get message info
784   FND_MSG_PUB.Count_And_Get(
785     p_encoded => FND_API.G_FALSE,
786     p_count => x_msg_count,
787     p_data  => x_msg_data);
788   EXCEPTION
789        WHEN FND_API.G_EXC_ERROR THEN
790                x_return_status := FND_API.G_RET_STS_ERROR;
791                FND_MSG_PUB.Count_And_Get(
792                                p_encoded => FND_API.G_FALSE,
793                                p_count => x_msg_count,
794                                p_data  => x_msg_data);
795        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
796                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
797                FND_MSG_PUB.Count_And_Get(
798                                p_encoded => FND_API.G_FALSE,
799                                p_count => x_msg_count,
800                                p_data  => x_msg_data);
801 
802        WHEN OTHERS THEN
803                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
804                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
805                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
806                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
807                FND_MSG_PUB.ADD;
808 
809                FND_MSG_PUB.Count_And_Get(
810                                p_encoded => FND_API.G_FALSE,
811                                p_count => x_msg_count,
812                                p_data  => x_msg_data);
813   END;
814 
815   PROCEDURE find_persons (
816       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
817       p_rule_id               IN      NUMBER,
818       p_party_search_rec      IN      party_search_rec_type,
819       p_party_site_list       IN      party_site_list,
820       p_contact_list          IN      contact_list,
821       p_contact_point_list    IN      contact_point_list,
822       p_restrict_sql          IN      VARCHAR2,
823       p_match_type            IN      VARCHAR2,
824       x_search_ctx_id         OUT     NUMBER,
825       x_num_matches           OUT     NUMBER,
826       x_return_status         OUT     VARCHAR2,
827       x_msg_count             OUT     NUMBER,
828       x_msg_data              OUT     VARCHAR2
829 ) IS
830   BEGIN
831   	find_persons (
832       p_init_msg_list,p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list, 
833       p_restrict_sql ,p_match_type,NULL,x_search_ctx_id,x_num_matches,x_return_status,
834       x_msg_count,x_msg_data);
835   END;
836 
837   PROCEDURE find_party_details (
838       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
839       p_rule_id               IN      NUMBER,
840       p_party_search_rec      IN      party_search_rec_type,
841       p_party_site_list       IN      party_site_list,
842       p_contact_list          IN      contact_list,
843       p_contact_point_list    IN      contact_point_list,
844       p_restrict_sql          IN      VARCHAR2,
845       p_match_type            IN      VARCHAR2,
846       p_search_merged         IN      VARCHAR2,
847       x_search_ctx_id         OUT     NUMBER,
848       x_num_matches           OUT     NUMBER,
849       x_return_status         OUT     VARCHAR2,
850       x_msg_count             OUT     NUMBER,
851       x_msg_data              OUT     VARCHAR2
852 ) IS
853   CURSOR c_match_rule IS 
854     SELECT COMPILATION_FLAG 
855     FROM HZ_MATCH_RULES_VL 
856     WHERE MATCH_RULE_ID = p_rule_id;
857   l_cmp_flag VARCHAR2(1);
858   BEGIN
859     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
860       hz_utility_v2pub.debug(p_message=>'find_party_details(+)',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
861     END IF;
862     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
863       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
864     END IF;
865 
866     -- Initialize return status and message stack
867     x_return_status := FND_API.G_RET_STS_SUCCESS;
868     IF FND_API.to_Boolean(p_init_msg_list) THEN
869       FND_MSG_PUB.initialize;
870     END IF;
871 
872     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
873       -- Find the match rule
874       null;
875 
876       -- No MATCH RULE FOUND
877       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
878       FND_MSG_PUB.ADD;
879       RAISE FND_API.G_EXC_ERROR;
880     END IF;
881     OPEN c_match_rule;
882     FETCH c_match_rule INTO l_cmp_flag;
883     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
884       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
885       FND_MSG_PUB.ADD;
886       RAISE FND_API.G_EXC_ERROR;
887     END IF;
888     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
889     IF p_rule_id=2 THEN 
890       IF NOT HZ_MATCH_RULE_2.check_staged THEN
891         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
892         FND_MSG_PUB.ADD;
893         RAISE FND_API.G_EXC_ERROR;
894       END IF;
895       HZ_MATCH_RULE_2.find_party_details(
896         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
897         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
898     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
899     ELSIF p_rule_id=3 THEN 
900       IF NOT HZ_MATCH_RULE_3.check_staged THEN
901         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
902         FND_MSG_PUB.ADD;
903         RAISE FND_API.G_EXC_ERROR;
904       END IF;
905       HZ_MATCH_RULE_3.find_party_details(
906         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
907         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
908     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
909     ELSIF p_rule_id=4 THEN 
910       IF NOT HZ_MATCH_RULE_4.check_staged THEN
911         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
912         FND_MSG_PUB.ADD;
913         RAISE FND_API.G_EXC_ERROR;
914       END IF;
915       HZ_MATCH_RULE_4.find_party_details(
916         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
917         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
918     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
919     ELSIF p_rule_id=5 THEN 
920       IF NOT HZ_MATCH_RULE_5.check_staged THEN
921         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
922         FND_MSG_PUB.ADD;
923         RAISE FND_API.G_EXC_ERROR;
924       END IF;
925       HZ_MATCH_RULE_5.find_party_details(
926         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
927         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
928     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
929     ELSIF p_rule_id=6 THEN 
930       IF NOT HZ_MATCH_RULE_6.check_staged THEN
931         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
932         FND_MSG_PUB.ADD;
933         RAISE FND_API.G_EXC_ERROR;
934       END IF;
935       HZ_MATCH_RULE_6.find_party_details(
936         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
937         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
938     -- Code for Match rule SAMPLE: SIMILAR_PERSON
939     ELSIF p_rule_id=7 THEN 
940       IF NOT HZ_MATCH_RULE_7.check_staged THEN
941         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
942         FND_MSG_PUB.ADD;
943         RAISE FND_API.G_EXC_ERROR;
944       END IF;
945       HZ_MATCH_RULE_7.find_party_details(
946         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
947         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
948     -- Code for Match rule SAMPLE: SEARCH
949     ELSIF p_rule_id=8 THEN 
950       IF NOT HZ_MATCH_RULE_8.check_staged THEN
951         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
952         FND_MSG_PUB.ADD;
953         RAISE FND_API.G_EXC_ERROR;
954       END IF;
955       HZ_MATCH_RULE_8.find_party_details(
956         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
957         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
958     -- Code for Match rule RM SEARCH RULE
959     ELSIF p_rule_id=32 THEN 
960       IF NOT HZ_MATCH_RULE_32.check_staged THEN
961         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
962         FND_MSG_PUB.ADD;
963         RAISE FND_API.G_EXC_ERROR;
964       END IF;
965       HZ_MATCH_RULE_32.find_party_details(
966         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
967         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
968     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
969     ELSIF p_rule_id=33 THEN 
970       IF NOT HZ_MATCH_RULE_33.check_staged THEN
971         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
972         FND_MSG_PUB.ADD;
973         RAISE FND_API.G_EXC_ERROR;
974       END IF;
975       HZ_MATCH_RULE_33.find_party_details(
976         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
977         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
978     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
979     ELSIF p_rule_id=34 THEN 
980       IF NOT HZ_MATCH_RULE_34.check_staged THEN
981         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
982         FND_MSG_PUB.ADD;
983         RAISE FND_API.G_EXC_ERROR;
984       END IF;
985       HZ_MATCH_RULE_34.find_party_details(
986         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
987         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
988     -- Code for Match rule DL SMART SEARCH
989     ELSIF p_rule_id=35 THEN 
990       IF NOT HZ_MATCH_RULE_35.check_staged THEN
991         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
992         FND_MSG_PUB.ADD;
993         RAISE FND_API.G_EXC_ERROR;
994       END IF;
995       HZ_MATCH_RULE_35.find_party_details(
996         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
997         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
998     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
999     ELSIF p_rule_id=36 THEN 
1000       IF NOT HZ_MATCH_RULE_36.check_staged THEN
1001         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1002         FND_MSG_PUB.ADD;
1003         RAISE FND_API.G_EXC_ERROR;
1004       END IF;
1005       HZ_MATCH_RULE_36.find_party_details(
1006         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1007         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1008     -- Code for Match rule DL ADDRESS DEFAULT
1009     ELSIF p_rule_id=37 THEN 
1010       IF NOT HZ_MATCH_RULE_37.check_staged THEN
1011         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1012         FND_MSG_PUB.ADD;
1013         RAISE FND_API.G_EXC_ERROR;
1014       END IF;
1015       HZ_MATCH_RULE_37.find_party_details(
1016         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1017         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1018     -- Code for Match rule DL RELATIONSHIP DEFAULT
1019     ELSIF p_rule_id=38 THEN 
1020       IF NOT HZ_MATCH_RULE_38.check_staged THEN
1021         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1022         FND_MSG_PUB.ADD;
1023         RAISE FND_API.G_EXC_ERROR;
1024       END IF;
1025       HZ_MATCH_RULE_38.find_party_details(
1026         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1027         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1028     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1029     ELSIF p_rule_id=39 THEN 
1030       IF NOT HZ_MATCH_RULE_39.check_staged THEN
1031         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1032         FND_MSG_PUB.ADD;
1033         RAISE FND_API.G_EXC_ERROR;
1034       END IF;
1035       HZ_MATCH_RULE_39.find_party_details(
1036         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1037         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1038     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1039     ELSIF p_rule_id=40 THEN 
1040       IF NOT HZ_MATCH_RULE_40.check_staged THEN
1041         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1042         FND_MSG_PUB.ADD;
1043         RAISE FND_API.G_EXC_ERROR;
1044       END IF;
1045       HZ_MATCH_RULE_40.find_party_details(
1046         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1047         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1048     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
1049     ELSIF p_rule_id=41 THEN 
1050       IF NOT HZ_MATCH_RULE_41.check_staged THEN
1051         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1052         FND_MSG_PUB.ADD;
1053         RAISE FND_API.G_EXC_ERROR;
1054       END IF;
1055       HZ_MATCH_RULE_41.find_party_details(
1056         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1057         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1058     -- Code for Match rule SAMPLE: SEARCH EXACT
1059     ELSIF p_rule_id=42 THEN 
1060       IF NOT HZ_MATCH_RULE_42.check_staged THEN
1061         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1062         FND_MSG_PUB.ADD;
1063         RAISE FND_API.G_EXC_ERROR;
1064       END IF;
1065       HZ_MATCH_RULE_42.find_party_details(
1066         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1067         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1068     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
1069     ELSIF p_rule_id=48 THEN 
1070       IF NOT HZ_MATCH_RULE_48.check_staged THEN
1071         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1072         FND_MSG_PUB.ADD;
1073         RAISE FND_API.G_EXC_ERROR;
1074       END IF;
1075       HZ_MATCH_RULE_48.find_party_details(
1076         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1077         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1078     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
1079     ELSIF p_rule_id=50 THEN 
1080       IF NOT HZ_MATCH_RULE_50.check_staged THEN
1081         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1082         FND_MSG_PUB.ADD;
1083         RAISE FND_API.G_EXC_ERROR;
1084       END IF;
1085       HZ_MATCH_RULE_50.find_party_details(
1086         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1087         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1088     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
1089     ELSIF p_rule_id=51 THEN 
1090       IF NOT HZ_MATCH_RULE_51.check_staged THEN
1091         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1092         FND_MSG_PUB.ADD;
1093         RAISE FND_API.G_EXC_ERROR;
1094       END IF;
1095       HZ_MATCH_RULE_51.find_party_details(
1096         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1097         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1098     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
1099     ELSIF p_rule_id=52 THEN 
1100       IF NOT HZ_MATCH_RULE_52.check_staged THEN
1101         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1102         FND_MSG_PUB.ADD;
1103         RAISE FND_API.G_EXC_ERROR;
1104       END IF;
1105       HZ_MATCH_RULE_52.find_party_details(
1106         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1107         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1108     -- Code for Match rule CREDIT MANAGEMENT SEARCH
1109     ELSIF p_rule_id=53 THEN 
1110       IF NOT HZ_MATCH_RULE_53.check_staged THEN
1111         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1112         FND_MSG_PUB.ADD;
1113         RAISE FND_API.G_EXC_ERROR;
1114       END IF;
1115       HZ_MATCH_RULE_53.find_party_details(
1116         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1117         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1118     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
1119     ELSIF p_rule_id=58 THEN 
1120       IF NOT HZ_MATCH_RULE_58.check_staged THEN
1121         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1122         FND_MSG_PUB.ADD;
1123         RAISE FND_API.G_EXC_ERROR;
1124       END IF;
1125       HZ_MATCH_RULE_58.find_party_details(
1126         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1127         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1128     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
1129     ELSIF p_rule_id=60 THEN 
1130       IF NOT HZ_MATCH_RULE_60.check_staged THEN
1131         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1132         FND_MSG_PUB.ADD;
1133         RAISE FND_API.G_EXC_ERROR;
1134       END IF;
1135       HZ_MATCH_RULE_60.find_party_details(
1136         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1137         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1138     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1139     ELSIF p_rule_id=61 THEN 
1140       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1141         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1142         FND_MSG_PUB.ADD;
1143         RAISE FND_API.G_EXC_ERROR;
1144       END IF;
1145       HZ_MATCH_RULE_61.find_party_details(
1146         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1147         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1148     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1149     ELSIF p_rule_id=62 THEN 
1150       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1151         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1152         FND_MSG_PUB.ADD;
1153         RAISE FND_API.G_EXC_ERROR;
1154       END IF;
1155       HZ_MATCH_RULE_62.find_party_details(
1156         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1157         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1158     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1159     ELSIF p_rule_id=98 THEN 
1160       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1161         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1162         FND_MSG_PUB.ADD;
1163         RAISE FND_API.G_EXC_ERROR;
1164       END IF;
1165       HZ_MATCH_RULE_98.find_party_details(
1166         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1167         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1168     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
1169     ELSIF p_rule_id=99 THEN 
1170       IF NOT HZ_MATCH_RULE_99.check_staged THEN
1171         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1172         FND_MSG_PUB.ADD;
1173         RAISE FND_API.G_EXC_ERROR;
1174       END IF;
1175       HZ_MATCH_RULE_99.find_party_details(
1176         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1177         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1178     END IF;
1179     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1180       hz_utility_v2pub.debug(p_message=>'find_party_details(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1181     END IF;
1182   --Standard call to get message count and if count is 1, get message info
1183   FND_MSG_PUB.Count_And_Get(
1184     p_encoded => FND_API.G_FALSE,
1185     p_count => x_msg_count,
1186     p_data  => x_msg_data);
1187   EXCEPTION
1188        WHEN FND_API.G_EXC_ERROR THEN
1189                x_return_status := FND_API.G_RET_STS_ERROR;
1190                FND_MSG_PUB.Count_And_Get(
1191                                p_encoded => FND_API.G_FALSE,
1192                                p_count => x_msg_count,
1193                                p_data  => x_msg_data);
1194        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1195                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1196                FND_MSG_PUB.Count_And_Get(
1197                                p_encoded => FND_API.G_FALSE,
1198                                p_count => x_msg_count,
1199                                p_data  => x_msg_data);
1200 
1201        WHEN OTHERS THEN
1202                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1203                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
1204                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
1205                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1206                FND_MSG_PUB.ADD;
1207 
1208                FND_MSG_PUB.Count_And_Get(
1209                                p_encoded => FND_API.G_FALSE,
1210                                p_count => x_msg_count,
1211                                p_data  => x_msg_data);
1212   END;
1213 
1214   PROCEDURE find_duplicate_parties (
1215       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
1216       p_rule_id               IN      NUMBER,
1217       p_party_id              IN      NUMBER,
1218       p_restrict_sql          IN      VARCHAR2,
1219       p_match_type            IN      VARCHAR2,
1220       p_dup_batch_id          IN      NUMBER,
1221       p_search_merged         IN      VARCHAR2,
1222       x_dup_set_id            OUT     NUMBER,
1223       x_search_ctx_id         OUT     NUMBER,
1224       x_num_matches           OUT     NUMBER,
1225       x_return_status         OUT     VARCHAR2,
1226       x_msg_count             OUT     NUMBER,
1227       x_msg_data              OUT     VARCHAR2
1228 ) IS
1229   CURSOR c_match_rule IS 
1230     SELECT COMPILATION_FLAG 
1231     FROM HZ_MATCH_RULES_VL 
1232     WHERE MATCH_RULE_ID = p_rule_id;
1233   l_cmp_flag VARCHAR2(1);
1234   BEGIN
1235     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1236       hz_utility_v2pub.debug(p_message=>'find_duplicate_parties(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1237     END IF;
1238     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1239       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1240     END IF;
1241 
1242     -- Initialize return status and message stack
1243     x_return_status := FND_API.G_RET_STS_SUCCESS;
1244     IF FND_API.to_Boolean(p_init_msg_list) THEN
1245       FND_MSG_PUB.initialize;
1246     END IF;
1247 
1248     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
1249       -- Find the match rule
1250       null;
1251 
1252       -- No MATCH RULE FOUND
1253       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
1254       FND_MSG_PUB.ADD;
1255       RAISE FND_API.G_EXC_ERROR;
1256     END IF;
1257     IF g_last_rule<>p_rule_id OR NOT g_last_rule_valid THEN
1258       OPEN c_match_rule;
1259       FETCH c_match_rule INTO l_cmp_flag;
1260       IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
1261         FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
1262         FND_MSG_PUB.ADD;
1263         RAISE FND_API.G_EXC_ERROR;
1264       END IF;
1265       g_last_rule := p_rule_id;
1266       g_last_rule_valid := TRUE;
1267     END IF;
1268     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
1269     IF p_rule_id=2 THEN 
1270       IF NOT HZ_MATCH_RULE_2.check_staged THEN
1271         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1272         FND_MSG_PUB.ADD;
1273         RAISE FND_API.G_EXC_ERROR;
1274       END IF;
1275       HZ_MATCH_RULE_2.find_duplicate_parties(
1276         p_rule_id,p_party_id,
1277         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1278     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
1279     ELSIF p_rule_id=3 THEN 
1280       IF NOT HZ_MATCH_RULE_3.check_staged THEN
1281         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1282         FND_MSG_PUB.ADD;
1283         RAISE FND_API.G_EXC_ERROR;
1284       END IF;
1285       HZ_MATCH_RULE_3.find_duplicate_parties(
1286         p_rule_id,p_party_id,
1287         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1288     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
1289     ELSIF p_rule_id=4 THEN 
1290       IF NOT HZ_MATCH_RULE_4.check_staged THEN
1291         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1292         FND_MSG_PUB.ADD;
1293         RAISE FND_API.G_EXC_ERROR;
1294       END IF;
1295       HZ_MATCH_RULE_4.find_duplicate_parties(
1296         p_rule_id,p_party_id,
1297         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1298     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
1299     ELSIF p_rule_id=5 THEN 
1300       IF NOT HZ_MATCH_RULE_5.check_staged THEN
1301         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1302         FND_MSG_PUB.ADD;
1303         RAISE FND_API.G_EXC_ERROR;
1304       END IF;
1305       HZ_MATCH_RULE_5.find_duplicate_parties(
1306         p_rule_id,p_party_id,
1307         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1308     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
1309     ELSIF p_rule_id=6 THEN 
1310       IF NOT HZ_MATCH_RULE_6.check_staged THEN
1311         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1312         FND_MSG_PUB.ADD;
1313         RAISE FND_API.G_EXC_ERROR;
1314       END IF;
1315       HZ_MATCH_RULE_6.find_duplicate_parties(
1316         p_rule_id,p_party_id,
1317         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1318     -- Code for Match rule SAMPLE: SIMILAR_PERSON
1319     ELSIF p_rule_id=7 THEN 
1320       IF NOT HZ_MATCH_RULE_7.check_staged THEN
1321         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1322         FND_MSG_PUB.ADD;
1323         RAISE FND_API.G_EXC_ERROR;
1324       END IF;
1325       HZ_MATCH_RULE_7.find_duplicate_parties(
1326         p_rule_id,p_party_id,
1327         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1328     -- Code for Match rule SAMPLE: SEARCH
1329     ELSIF p_rule_id=8 THEN 
1330       IF NOT HZ_MATCH_RULE_8.check_staged THEN
1331         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1332         FND_MSG_PUB.ADD;
1333         RAISE FND_API.G_EXC_ERROR;
1334       END IF;
1335       HZ_MATCH_RULE_8.find_duplicate_parties(
1336         p_rule_id,p_party_id,
1337         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1338     -- Code for Match rule RM SEARCH RULE
1339     ELSIF p_rule_id=32 THEN 
1340       IF NOT HZ_MATCH_RULE_32.check_staged THEN
1341         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1342         FND_MSG_PUB.ADD;
1343         RAISE FND_API.G_EXC_ERROR;
1344       END IF;
1345       HZ_MATCH_RULE_32.find_duplicate_parties(
1346         p_rule_id,p_party_id,
1347         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1348     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
1349     ELSIF p_rule_id=33 THEN 
1350       IF NOT HZ_MATCH_RULE_33.check_staged THEN
1351         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1352         FND_MSG_PUB.ADD;
1353         RAISE FND_API.G_EXC_ERROR;
1354       END IF;
1355       HZ_MATCH_RULE_33.find_duplicate_parties(
1356         p_rule_id,p_party_id,
1357         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1358     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
1359     ELSIF p_rule_id=34 THEN 
1360       IF NOT HZ_MATCH_RULE_34.check_staged THEN
1361         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1362         FND_MSG_PUB.ADD;
1363         RAISE FND_API.G_EXC_ERROR;
1364       END IF;
1365       HZ_MATCH_RULE_34.find_duplicate_parties(
1366         p_rule_id,p_party_id,
1367         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1368     -- Code for Match rule DL SMART SEARCH
1369     ELSIF p_rule_id=35 THEN 
1370       IF NOT HZ_MATCH_RULE_35.check_staged THEN
1371         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1372         FND_MSG_PUB.ADD;
1373         RAISE FND_API.G_EXC_ERROR;
1374       END IF;
1375       HZ_MATCH_RULE_35.find_duplicate_parties(
1376         p_rule_id,p_party_id,
1377         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1378     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
1379     ELSIF p_rule_id=36 THEN 
1380       IF NOT HZ_MATCH_RULE_36.check_staged THEN
1381         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1382         FND_MSG_PUB.ADD;
1383         RAISE FND_API.G_EXC_ERROR;
1384       END IF;
1385       HZ_MATCH_RULE_36.find_duplicate_parties(
1386         p_rule_id,p_party_id,
1387         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1388     -- Code for Match rule DL ADDRESS DEFAULT
1389     ELSIF p_rule_id=37 THEN 
1390       IF NOT HZ_MATCH_RULE_37.check_staged THEN
1391         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1392         FND_MSG_PUB.ADD;
1393         RAISE FND_API.G_EXC_ERROR;
1394       END IF;
1395       HZ_MATCH_RULE_37.find_duplicate_parties(
1396         p_rule_id,p_party_id,
1397         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1398     -- Code for Match rule DL RELATIONSHIP DEFAULT
1399     ELSIF p_rule_id=38 THEN 
1400       IF NOT HZ_MATCH_RULE_38.check_staged THEN
1401         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1402         FND_MSG_PUB.ADD;
1403         RAISE FND_API.G_EXC_ERROR;
1404       END IF;
1405       HZ_MATCH_RULE_38.find_duplicate_parties(
1406         p_rule_id,p_party_id,
1407         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1408     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1409     ELSIF p_rule_id=39 THEN 
1410       IF NOT HZ_MATCH_RULE_39.check_staged THEN
1411         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1412         FND_MSG_PUB.ADD;
1413         RAISE FND_API.G_EXC_ERROR;
1414       END IF;
1415       HZ_MATCH_RULE_39.find_duplicate_parties(
1416         p_rule_id,p_party_id,
1417         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1418     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1419     ELSIF p_rule_id=40 THEN 
1420       IF NOT HZ_MATCH_RULE_40.check_staged THEN
1421         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1422         FND_MSG_PUB.ADD;
1423         RAISE FND_API.G_EXC_ERROR;
1424       END IF;
1425       HZ_MATCH_RULE_40.find_duplicate_parties(
1426         p_rule_id,p_party_id,
1427         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1428     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
1429     ELSIF p_rule_id=41 THEN 
1430       IF NOT HZ_MATCH_RULE_41.check_staged THEN
1431         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1432         FND_MSG_PUB.ADD;
1433         RAISE FND_API.G_EXC_ERROR;
1434       END IF;
1435       HZ_MATCH_RULE_41.find_duplicate_parties(
1436         p_rule_id,p_party_id,
1437         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1438     -- Code for Match rule SAMPLE: SEARCH EXACT
1439     ELSIF p_rule_id=42 THEN 
1440       IF NOT HZ_MATCH_RULE_42.check_staged THEN
1441         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1442         FND_MSG_PUB.ADD;
1443         RAISE FND_API.G_EXC_ERROR;
1444       END IF;
1445       HZ_MATCH_RULE_42.find_duplicate_parties(
1446         p_rule_id,p_party_id,
1447         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1448     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
1449     ELSIF p_rule_id=48 THEN 
1450       IF NOT HZ_MATCH_RULE_48.check_staged THEN
1451         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1452         FND_MSG_PUB.ADD;
1453         RAISE FND_API.G_EXC_ERROR;
1454       END IF;
1455       HZ_MATCH_RULE_48.find_duplicate_parties(
1456         p_rule_id,p_party_id,
1457         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1458     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
1459     ELSIF p_rule_id=50 THEN 
1460       IF NOT HZ_MATCH_RULE_50.check_staged THEN
1461         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1462         FND_MSG_PUB.ADD;
1463         RAISE FND_API.G_EXC_ERROR;
1464       END IF;
1465       HZ_MATCH_RULE_50.find_duplicate_parties(
1466         p_rule_id,p_party_id,
1467         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1468     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
1469     ELSIF p_rule_id=51 THEN 
1470       IF NOT HZ_MATCH_RULE_51.check_staged THEN
1471         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1472         FND_MSG_PUB.ADD;
1473         RAISE FND_API.G_EXC_ERROR;
1474       END IF;
1475       HZ_MATCH_RULE_51.find_duplicate_parties(
1476         p_rule_id,p_party_id,
1477         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1478     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
1479     ELSIF p_rule_id=52 THEN 
1480       IF NOT HZ_MATCH_RULE_52.check_staged THEN
1481         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1482         FND_MSG_PUB.ADD;
1483         RAISE FND_API.G_EXC_ERROR;
1484       END IF;
1485       HZ_MATCH_RULE_52.find_duplicate_parties(
1486         p_rule_id,p_party_id,
1487         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1488     -- Code for Match rule CREDIT MANAGEMENT SEARCH
1489     ELSIF p_rule_id=53 THEN 
1490       IF NOT HZ_MATCH_RULE_53.check_staged THEN
1491         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1492         FND_MSG_PUB.ADD;
1493         RAISE FND_API.G_EXC_ERROR;
1494       END IF;
1495       HZ_MATCH_RULE_53.find_duplicate_parties(
1496         p_rule_id,p_party_id,
1497         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1498     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
1499     ELSIF p_rule_id=58 THEN 
1500       IF NOT HZ_MATCH_RULE_58.check_staged THEN
1501         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1502         FND_MSG_PUB.ADD;
1503         RAISE FND_API.G_EXC_ERROR;
1504       END IF;
1505       HZ_MATCH_RULE_58.find_duplicate_parties(
1506         p_rule_id,p_party_id,
1507         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1508     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
1509     ELSIF p_rule_id=60 THEN 
1510       IF NOT HZ_MATCH_RULE_60.check_staged THEN
1511         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1512         FND_MSG_PUB.ADD;
1513         RAISE FND_API.G_EXC_ERROR;
1514       END IF;
1515       HZ_MATCH_RULE_60.find_duplicate_parties(
1516         p_rule_id,p_party_id,
1517         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1518     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1519     ELSIF p_rule_id=61 THEN 
1520       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1521         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1522         FND_MSG_PUB.ADD;
1523         RAISE FND_API.G_EXC_ERROR;
1524       END IF;
1525       HZ_MATCH_RULE_61.find_duplicate_parties(
1526         p_rule_id,p_party_id,
1527         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1528     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1529     ELSIF p_rule_id=62 THEN 
1530       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1531         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1532         FND_MSG_PUB.ADD;
1533         RAISE FND_API.G_EXC_ERROR;
1534       END IF;
1535       HZ_MATCH_RULE_62.find_duplicate_parties(
1536         p_rule_id,p_party_id,
1537         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1538     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1539     ELSIF p_rule_id=98 THEN 
1540       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1541         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1542         FND_MSG_PUB.ADD;
1543         RAISE FND_API.G_EXC_ERROR;
1544       END IF;
1545       HZ_MATCH_RULE_98.find_duplicate_parties(
1546         p_rule_id,p_party_id,
1547         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1548     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
1549     ELSIF p_rule_id=99 THEN 
1550       IF NOT HZ_MATCH_RULE_99.check_staged THEN
1551         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1552         FND_MSG_PUB.ADD;
1553         RAISE FND_API.G_EXC_ERROR;
1554       END IF;
1555       HZ_MATCH_RULE_99.find_duplicate_parties(
1556         p_rule_id,p_party_id,
1557         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1558     END IF;
1559     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1560       hz_utility_v2pub.debug(p_message=>'find_duplicate_parties(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1561     END IF;
1562   --Standard call to get message count and if count is 1, get message info
1563   FND_MSG_PUB.Count_And_Get(
1564     p_encoded => FND_API.G_FALSE,
1565     p_count => x_msg_count,
1566     p_data  => x_msg_data);
1567   EXCEPTION
1568        WHEN FND_API.G_EXC_ERROR THEN
1569                x_return_status := FND_API.G_RET_STS_ERROR;
1570                FND_MSG_PUB.Count_And_Get(
1571                                p_encoded => FND_API.G_FALSE,
1572                                p_count => x_msg_count,
1573                                p_data  => x_msg_data);
1574        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1575                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1576                FND_MSG_PUB.Count_And_Get(
1577                                p_encoded => FND_API.G_FALSE,
1578                                p_count => x_msg_count,
1579                                p_data  => x_msg_data);
1580 
1581        WHEN OTHERS THEN
1582                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1583                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
1584                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
1585                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1586                FND_MSG_PUB.ADD;
1587 
1588                FND_MSG_PUB.Count_And_Get(
1589                                p_encoded => FND_API.G_FALSE,
1590                                p_count => x_msg_count,
1591                                p_data  => x_msg_data);
1592   END;
1593 
1594 
1595   PROCEDURE find_duplicate_party_sites (
1596       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
1597       p_rule_id               IN      NUMBER,
1598       p_party_site_id         IN      NUMBER,
1599       p_party_id              IN      NUMBER,
1600       p_restrict_sql          IN      VARCHAR2,
1601       p_match_type            IN      VARCHAR2,
1602       x_search_ctx_id         OUT     NUMBER,
1603       x_num_matches           OUT     NUMBER,
1604       x_return_status         OUT     VARCHAR2,
1605       x_msg_count             OUT     NUMBER,
1606       x_msg_data              OUT     VARCHAR2
1607 ) IS
1608   CURSOR c_match_rule IS 
1609     SELECT COMPILATION_FLAG 
1610     FROM HZ_MATCH_RULES_VL 
1611     WHERE MATCH_RULE_ID = p_rule_id;
1612   l_cmp_flag VARCHAR2(1);
1613   BEGIN
1614     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1615       hz_utility_v2pub.debug(p_message=>'find_duplicate_party_sites(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1616     END IF;
1617     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1618       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1619     END IF;
1620 
1621     -- Initialize return status and message stack
1622     x_return_status := FND_API.G_RET_STS_SUCCESS;
1623     IF FND_API.to_Boolean(p_init_msg_list) THEN
1624       FND_MSG_PUB.initialize;
1625     END IF;
1626 
1627     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
1628       -- Find the match rule
1629       null;
1630 
1631       -- No MATCH RULE FOUND
1632       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
1633       FND_MSG_PUB.ADD;
1634       RAISE FND_API.G_EXC_ERROR;
1635     END IF;
1636     OPEN c_match_rule;
1637     FETCH c_match_rule INTO l_cmp_flag;
1638     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
1639       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
1640       FND_MSG_PUB.ADD;
1641       RAISE FND_API.G_EXC_ERROR;
1642     END IF;
1643     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
1644     IF p_rule_id=2 THEN 
1645       IF NOT HZ_MATCH_RULE_2.check_staged THEN
1646         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1647         FND_MSG_PUB.ADD;
1648         RAISE FND_API.G_EXC_ERROR;
1649       END IF;
1650       HZ_MATCH_RULE_2.find_duplicate_party_sites(
1651         p_rule_id,p_party_site_id,p_party_id,
1652         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1653     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
1654     ELSIF p_rule_id=3 THEN 
1655       IF NOT HZ_MATCH_RULE_3.check_staged THEN
1656         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1657         FND_MSG_PUB.ADD;
1658         RAISE FND_API.G_EXC_ERROR;
1659       END IF;
1660       HZ_MATCH_RULE_3.find_duplicate_party_sites(
1661         p_rule_id,p_party_site_id,p_party_id,
1662         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1663     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
1664     ELSIF p_rule_id=4 THEN 
1665       IF NOT HZ_MATCH_RULE_4.check_staged THEN
1666         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1667         FND_MSG_PUB.ADD;
1668         RAISE FND_API.G_EXC_ERROR;
1669       END IF;
1670       HZ_MATCH_RULE_4.find_duplicate_party_sites(
1671         p_rule_id,p_party_site_id,p_party_id,
1672         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1673     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
1674     ELSIF p_rule_id=5 THEN 
1675       IF NOT HZ_MATCH_RULE_5.check_staged THEN
1676         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1677         FND_MSG_PUB.ADD;
1678         RAISE FND_API.G_EXC_ERROR;
1679       END IF;
1680       HZ_MATCH_RULE_5.find_duplicate_party_sites(
1681         p_rule_id,p_party_site_id,p_party_id,
1682         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1683     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
1684     ELSIF p_rule_id=6 THEN 
1685       IF NOT HZ_MATCH_RULE_6.check_staged THEN
1686         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1687         FND_MSG_PUB.ADD;
1688         RAISE FND_API.G_EXC_ERROR;
1689       END IF;
1690       HZ_MATCH_RULE_6.find_duplicate_party_sites(
1691         p_rule_id,p_party_site_id,p_party_id,
1692         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1693     -- Code for Match rule SAMPLE: SIMILAR_PERSON
1694     ELSIF p_rule_id=7 THEN 
1695       IF NOT HZ_MATCH_RULE_7.check_staged THEN
1696         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1697         FND_MSG_PUB.ADD;
1698         RAISE FND_API.G_EXC_ERROR;
1699       END IF;
1700       HZ_MATCH_RULE_7.find_duplicate_party_sites(
1701         p_rule_id,p_party_site_id,p_party_id,
1702         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1703     -- Code for Match rule SAMPLE: SEARCH
1704     ELSIF p_rule_id=8 THEN 
1705       IF NOT HZ_MATCH_RULE_8.check_staged THEN
1706         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1707         FND_MSG_PUB.ADD;
1708         RAISE FND_API.G_EXC_ERROR;
1709       END IF;
1710       HZ_MATCH_RULE_8.find_duplicate_party_sites(
1711         p_rule_id,p_party_site_id,p_party_id,
1712         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1713     -- Code for Match rule RM SEARCH RULE
1714     ELSIF p_rule_id=32 THEN 
1715       IF NOT HZ_MATCH_RULE_32.check_staged THEN
1716         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1717         FND_MSG_PUB.ADD;
1718         RAISE FND_API.G_EXC_ERROR;
1719       END IF;
1720       HZ_MATCH_RULE_32.find_duplicate_party_sites(
1721         p_rule_id,p_party_site_id,p_party_id,
1722         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1723     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
1724     ELSIF p_rule_id=33 THEN 
1725       IF NOT HZ_MATCH_RULE_33.check_staged THEN
1726         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1727         FND_MSG_PUB.ADD;
1728         RAISE FND_API.G_EXC_ERROR;
1729       END IF;
1730       HZ_MATCH_RULE_33.find_duplicate_party_sites(
1731         p_rule_id,p_party_site_id,p_party_id,
1732         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1733     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
1734     ELSIF p_rule_id=34 THEN 
1735       IF NOT HZ_MATCH_RULE_34.check_staged THEN
1736         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1737         FND_MSG_PUB.ADD;
1738         RAISE FND_API.G_EXC_ERROR;
1739       END IF;
1740       HZ_MATCH_RULE_34.find_duplicate_party_sites(
1741         p_rule_id,p_party_site_id,p_party_id,
1742         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1743     -- Code for Match rule DL SMART SEARCH
1744     ELSIF p_rule_id=35 THEN 
1745       IF NOT HZ_MATCH_RULE_35.check_staged THEN
1746         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1747         FND_MSG_PUB.ADD;
1748         RAISE FND_API.G_EXC_ERROR;
1749       END IF;
1750       HZ_MATCH_RULE_35.find_duplicate_party_sites(
1751         p_rule_id,p_party_site_id,p_party_id,
1752         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1753     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
1754     ELSIF p_rule_id=36 THEN 
1755       IF NOT HZ_MATCH_RULE_36.check_staged THEN
1756         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1757         FND_MSG_PUB.ADD;
1758         RAISE FND_API.G_EXC_ERROR;
1759       END IF;
1760       HZ_MATCH_RULE_36.find_duplicate_party_sites(
1761         p_rule_id,p_party_site_id,p_party_id,
1762         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1763     -- Code for Match rule DL ADDRESS DEFAULT
1764     ELSIF p_rule_id=37 THEN 
1765       IF NOT HZ_MATCH_RULE_37.check_staged THEN
1766         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1767         FND_MSG_PUB.ADD;
1768         RAISE FND_API.G_EXC_ERROR;
1769       END IF;
1770       HZ_MATCH_RULE_37.find_duplicate_party_sites(
1771         p_rule_id,p_party_site_id,p_party_id,
1772         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1773     -- Code for Match rule DL RELATIONSHIP DEFAULT
1774     ELSIF p_rule_id=38 THEN 
1775       IF NOT HZ_MATCH_RULE_38.check_staged THEN
1776         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1777         FND_MSG_PUB.ADD;
1778         RAISE FND_API.G_EXC_ERROR;
1779       END IF;
1780       HZ_MATCH_RULE_38.find_duplicate_party_sites(
1781         p_rule_id,p_party_site_id,p_party_id,
1782         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1783     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1784     ELSIF p_rule_id=39 THEN 
1785       IF NOT HZ_MATCH_RULE_39.check_staged THEN
1786         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1787         FND_MSG_PUB.ADD;
1788         RAISE FND_API.G_EXC_ERROR;
1789       END IF;
1790       HZ_MATCH_RULE_39.find_duplicate_party_sites(
1791         p_rule_id,p_party_site_id,p_party_id,
1792         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1793     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1794     ELSIF p_rule_id=40 THEN 
1795       IF NOT HZ_MATCH_RULE_40.check_staged THEN
1796         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1797         FND_MSG_PUB.ADD;
1798         RAISE FND_API.G_EXC_ERROR;
1799       END IF;
1800       HZ_MATCH_RULE_40.find_duplicate_party_sites(
1801         p_rule_id,p_party_site_id,p_party_id,
1802         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1803     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
1804     ELSIF p_rule_id=41 THEN 
1805       IF NOT HZ_MATCH_RULE_41.check_staged THEN
1806         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1807         FND_MSG_PUB.ADD;
1808         RAISE FND_API.G_EXC_ERROR;
1809       END IF;
1810       HZ_MATCH_RULE_41.find_duplicate_party_sites(
1811         p_rule_id,p_party_site_id,p_party_id,
1812         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1813     -- Code for Match rule SAMPLE: SEARCH EXACT
1814     ELSIF p_rule_id=42 THEN 
1815       IF NOT HZ_MATCH_RULE_42.check_staged THEN
1816         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1817         FND_MSG_PUB.ADD;
1818         RAISE FND_API.G_EXC_ERROR;
1819       END IF;
1820       HZ_MATCH_RULE_42.find_duplicate_party_sites(
1821         p_rule_id,p_party_site_id,p_party_id,
1822         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1823     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
1824     ELSIF p_rule_id=48 THEN 
1825       IF NOT HZ_MATCH_RULE_48.check_staged THEN
1826         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1827         FND_MSG_PUB.ADD;
1828         RAISE FND_API.G_EXC_ERROR;
1829       END IF;
1830       HZ_MATCH_RULE_48.find_duplicate_party_sites(
1831         p_rule_id,p_party_site_id,p_party_id,
1832         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1833     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
1834     ELSIF p_rule_id=50 THEN 
1835       IF NOT HZ_MATCH_RULE_50.check_staged THEN
1836         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1837         FND_MSG_PUB.ADD;
1838         RAISE FND_API.G_EXC_ERROR;
1839       END IF;
1840       HZ_MATCH_RULE_50.find_duplicate_party_sites(
1841         p_rule_id,p_party_site_id,p_party_id,
1842         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1843     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
1844     ELSIF p_rule_id=51 THEN 
1845       IF NOT HZ_MATCH_RULE_51.check_staged THEN
1846         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1847         FND_MSG_PUB.ADD;
1848         RAISE FND_API.G_EXC_ERROR;
1849       END IF;
1850       HZ_MATCH_RULE_51.find_duplicate_party_sites(
1851         p_rule_id,p_party_site_id,p_party_id,
1852         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1853     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
1854     ELSIF p_rule_id=52 THEN 
1855       IF NOT HZ_MATCH_RULE_52.check_staged THEN
1856         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1857         FND_MSG_PUB.ADD;
1858         RAISE FND_API.G_EXC_ERROR;
1859       END IF;
1860       HZ_MATCH_RULE_52.find_duplicate_party_sites(
1861         p_rule_id,p_party_site_id,p_party_id,
1862         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1863     -- Code for Match rule CREDIT MANAGEMENT SEARCH
1864     ELSIF p_rule_id=53 THEN 
1865       IF NOT HZ_MATCH_RULE_53.check_staged THEN
1866         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1867         FND_MSG_PUB.ADD;
1868         RAISE FND_API.G_EXC_ERROR;
1869       END IF;
1870       HZ_MATCH_RULE_53.find_duplicate_party_sites(
1871         p_rule_id,p_party_site_id,p_party_id,
1872         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1873     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
1874     ELSIF p_rule_id=58 THEN 
1875       IF NOT HZ_MATCH_RULE_58.check_staged THEN
1876         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1877         FND_MSG_PUB.ADD;
1878         RAISE FND_API.G_EXC_ERROR;
1879       END IF;
1880       HZ_MATCH_RULE_58.find_duplicate_party_sites(
1881         p_rule_id,p_party_site_id,p_party_id,
1882         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1883     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
1884     ELSIF p_rule_id=60 THEN 
1885       IF NOT HZ_MATCH_RULE_60.check_staged THEN
1886         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1887         FND_MSG_PUB.ADD;
1888         RAISE FND_API.G_EXC_ERROR;
1889       END IF;
1890       HZ_MATCH_RULE_60.find_duplicate_party_sites(
1891         p_rule_id,p_party_site_id,p_party_id,
1892         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1893     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1894     ELSIF p_rule_id=61 THEN 
1895       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1896         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1897         FND_MSG_PUB.ADD;
1898         RAISE FND_API.G_EXC_ERROR;
1899       END IF;
1900       HZ_MATCH_RULE_61.find_duplicate_party_sites(
1901         p_rule_id,p_party_site_id,p_party_id,
1902         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1903     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1904     ELSIF p_rule_id=62 THEN 
1905       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1906         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1907         FND_MSG_PUB.ADD;
1908         RAISE FND_API.G_EXC_ERROR;
1909       END IF;
1910       HZ_MATCH_RULE_62.find_duplicate_party_sites(
1911         p_rule_id,p_party_site_id,p_party_id,
1912         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1913     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1914     ELSIF p_rule_id=98 THEN 
1915       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1916         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1917         FND_MSG_PUB.ADD;
1918         RAISE FND_API.G_EXC_ERROR;
1919       END IF;
1920       HZ_MATCH_RULE_98.find_duplicate_party_sites(
1921         p_rule_id,p_party_site_id,p_party_id,
1922         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1923     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
1924     ELSIF p_rule_id=99 THEN 
1925       IF NOT HZ_MATCH_RULE_99.check_staged THEN
1926         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1927         FND_MSG_PUB.ADD;
1928         RAISE FND_API.G_EXC_ERROR;
1929       END IF;
1930       HZ_MATCH_RULE_99.find_duplicate_party_sites(
1931         p_rule_id,p_party_site_id,p_party_id,
1932         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1933     END IF;
1934     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1935       hz_utility_v2pub.debug(p_message=>'find_duplicate_party_sites(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1936     END IF;
1937   --Standard call to get message count and if count is 1, get message info
1938   FND_MSG_PUB.Count_And_Get(
1939     p_encoded => FND_API.G_FALSE,
1940     p_count => x_msg_count,
1941     p_data  => x_msg_data);
1942   EXCEPTION
1943        WHEN FND_API.G_EXC_ERROR THEN
1944                x_return_status := FND_API.G_RET_STS_ERROR;
1945                FND_MSG_PUB.Count_And_Get(
1946                                p_encoded => FND_API.G_FALSE,
1947                                p_count => x_msg_count,
1948                                p_data  => x_msg_data);
1949        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1950                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1951                FND_MSG_PUB.Count_And_Get(
1952                                p_encoded => FND_API.G_FALSE,
1953                                p_count => x_msg_count,
1954                                p_data  => x_msg_data);
1955 
1956        WHEN OTHERS THEN
1957                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1958                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
1959                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
1960                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1961                FND_MSG_PUB.ADD;
1962 
1963                FND_MSG_PUB.Count_And_Get(
1964                                p_encoded => FND_API.G_FALSE,
1965                                p_count => x_msg_count,
1966                                p_data  => x_msg_data);
1967   END;
1968 
1969   PROCEDURE find_duplicate_contacts (
1970       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
1971       p_rule_id               IN      NUMBER,
1972       p_org_contact_id        IN      NUMBER,
1973       p_party_id              IN      NUMBER,
1974       p_restrict_sql          IN      VARCHAR2,
1975       p_match_type            IN      VARCHAR2,
1976       x_search_ctx_id         OUT     NUMBER,
1977       x_num_matches           OUT     NUMBER,
1978       x_return_status         OUT     VARCHAR2,
1979       x_msg_count             OUT     NUMBER,
1980       x_msg_data              OUT     VARCHAR2
1981 ) IS
1982   CURSOR c_match_rule IS 
1983     SELECT COMPILATION_FLAG 
1984     FROM HZ_MATCH_RULES_VL 
1985     WHERE MATCH_RULE_ID = p_rule_id;
1986   l_cmp_flag VARCHAR2(1);
1987   BEGIN
1988     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1989       hz_utility_v2pub.debug(p_message=>'find_duplicate_contacts(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
1990     END IF;
1991     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1992       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
1993     END IF;
1994 
1995     -- Initialize return status and message stack
1996     x_return_status := FND_API.G_RET_STS_SUCCESS;
1997     IF FND_API.to_Boolean(p_init_msg_list) THEN
1998       FND_MSG_PUB.initialize;
1999     END IF;
2000 
2001     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2002       -- Find the match rule
2003       null;
2004 
2005       -- No MATCH RULE FOUND
2006       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2007       FND_MSG_PUB.ADD;
2008       RAISE FND_API.G_EXC_ERROR;
2009     END IF;
2010     OPEN c_match_rule;
2011     FETCH c_match_rule INTO l_cmp_flag;
2012     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2013       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2014       FND_MSG_PUB.ADD;
2015       RAISE FND_API.G_EXC_ERROR;
2016     END IF;
2017     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2018     IF p_rule_id=2 THEN 
2019       IF NOT HZ_MATCH_RULE_2.check_staged THEN
2020         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2021         FND_MSG_PUB.ADD;
2022         RAISE FND_API.G_EXC_ERROR;
2023       END IF;
2024       HZ_MATCH_RULE_2.find_duplicate_contacts(
2025         p_rule_id,p_org_contact_id,p_party_id,
2026         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2027     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
2028     ELSIF p_rule_id=3 THEN 
2029       IF NOT HZ_MATCH_RULE_3.check_staged THEN
2030         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2031         FND_MSG_PUB.ADD;
2032         RAISE FND_API.G_EXC_ERROR;
2033       END IF;
2034       HZ_MATCH_RULE_3.find_duplicate_contacts(
2035         p_rule_id,p_org_contact_id,p_party_id,
2036         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2037     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
2038     ELSIF p_rule_id=4 THEN 
2039       IF NOT HZ_MATCH_RULE_4.check_staged THEN
2040         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2041         FND_MSG_PUB.ADD;
2042         RAISE FND_API.G_EXC_ERROR;
2043       END IF;
2044       HZ_MATCH_RULE_4.find_duplicate_contacts(
2045         p_rule_id,p_org_contact_id,p_party_id,
2046         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2047     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
2048     ELSIF p_rule_id=5 THEN 
2049       IF NOT HZ_MATCH_RULE_5.check_staged THEN
2050         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2051         FND_MSG_PUB.ADD;
2052         RAISE FND_API.G_EXC_ERROR;
2053       END IF;
2054       HZ_MATCH_RULE_5.find_duplicate_contacts(
2055         p_rule_id,p_org_contact_id,p_party_id,
2056         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2057     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
2058     ELSIF p_rule_id=6 THEN 
2059       IF NOT HZ_MATCH_RULE_6.check_staged THEN
2060         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2061         FND_MSG_PUB.ADD;
2062         RAISE FND_API.G_EXC_ERROR;
2063       END IF;
2064       HZ_MATCH_RULE_6.find_duplicate_contacts(
2065         p_rule_id,p_org_contact_id,p_party_id,
2066         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2067     -- Code for Match rule SAMPLE: SIMILAR_PERSON
2068     ELSIF p_rule_id=7 THEN 
2069       IF NOT HZ_MATCH_RULE_7.check_staged THEN
2070         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2071         FND_MSG_PUB.ADD;
2072         RAISE FND_API.G_EXC_ERROR;
2073       END IF;
2074       HZ_MATCH_RULE_7.find_duplicate_contacts(
2075         p_rule_id,p_org_contact_id,p_party_id,
2076         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2077     -- Code for Match rule SAMPLE: SEARCH
2078     ELSIF p_rule_id=8 THEN 
2079       IF NOT HZ_MATCH_RULE_8.check_staged THEN
2080         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2081         FND_MSG_PUB.ADD;
2082         RAISE FND_API.G_EXC_ERROR;
2083       END IF;
2084       HZ_MATCH_RULE_8.find_duplicate_contacts(
2085         p_rule_id,p_org_contact_id,p_party_id,
2086         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2087     -- Code for Match rule RM SEARCH RULE
2088     ELSIF p_rule_id=32 THEN 
2089       IF NOT HZ_MATCH_RULE_32.check_staged THEN
2090         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2091         FND_MSG_PUB.ADD;
2092         RAISE FND_API.G_EXC_ERROR;
2093       END IF;
2094       HZ_MATCH_RULE_32.find_duplicate_contacts(
2095         p_rule_id,p_org_contact_id,p_party_id,
2096         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2097     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
2098     ELSIF p_rule_id=33 THEN 
2099       IF NOT HZ_MATCH_RULE_33.check_staged THEN
2100         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2101         FND_MSG_PUB.ADD;
2102         RAISE FND_API.G_EXC_ERROR;
2103       END IF;
2104       HZ_MATCH_RULE_33.find_duplicate_contacts(
2105         p_rule_id,p_org_contact_id,p_party_id,
2106         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2107     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
2108     ELSIF p_rule_id=34 THEN 
2109       IF NOT HZ_MATCH_RULE_34.check_staged THEN
2110         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2111         FND_MSG_PUB.ADD;
2112         RAISE FND_API.G_EXC_ERROR;
2113       END IF;
2114       HZ_MATCH_RULE_34.find_duplicate_contacts(
2115         p_rule_id,p_org_contact_id,p_party_id,
2116         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2117     -- Code for Match rule DL SMART SEARCH
2118     ELSIF p_rule_id=35 THEN 
2119       IF NOT HZ_MATCH_RULE_35.check_staged THEN
2120         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2121         FND_MSG_PUB.ADD;
2122         RAISE FND_API.G_EXC_ERROR;
2123       END IF;
2124       HZ_MATCH_RULE_35.find_duplicate_contacts(
2125         p_rule_id,p_org_contact_id,p_party_id,
2126         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2127     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
2128     ELSIF p_rule_id=36 THEN 
2129       IF NOT HZ_MATCH_RULE_36.check_staged THEN
2130         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2131         FND_MSG_PUB.ADD;
2132         RAISE FND_API.G_EXC_ERROR;
2133       END IF;
2134       HZ_MATCH_RULE_36.find_duplicate_contacts(
2135         p_rule_id,p_org_contact_id,p_party_id,
2136         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2137     -- Code for Match rule DL ADDRESS DEFAULT
2138     ELSIF p_rule_id=37 THEN 
2139       IF NOT HZ_MATCH_RULE_37.check_staged THEN
2140         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2141         FND_MSG_PUB.ADD;
2142         RAISE FND_API.G_EXC_ERROR;
2143       END IF;
2144       HZ_MATCH_RULE_37.find_duplicate_contacts(
2145         p_rule_id,p_org_contact_id,p_party_id,
2146         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2147     -- Code for Match rule DL RELATIONSHIP DEFAULT
2148     ELSIF p_rule_id=38 THEN 
2149       IF NOT HZ_MATCH_RULE_38.check_staged THEN
2150         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2151         FND_MSG_PUB.ADD;
2152         RAISE FND_API.G_EXC_ERROR;
2153       END IF;
2154       HZ_MATCH_RULE_38.find_duplicate_contacts(
2155         p_rule_id,p_org_contact_id,p_party_id,
2156         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2157     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
2158     ELSIF p_rule_id=39 THEN 
2159       IF NOT HZ_MATCH_RULE_39.check_staged THEN
2160         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2161         FND_MSG_PUB.ADD;
2162         RAISE FND_API.G_EXC_ERROR;
2163       END IF;
2164       HZ_MATCH_RULE_39.find_duplicate_contacts(
2165         p_rule_id,p_org_contact_id,p_party_id,
2166         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2167     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
2168     ELSIF p_rule_id=40 THEN 
2169       IF NOT HZ_MATCH_RULE_40.check_staged THEN
2170         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2171         FND_MSG_PUB.ADD;
2172         RAISE FND_API.G_EXC_ERROR;
2173       END IF;
2174       HZ_MATCH_RULE_40.find_duplicate_contacts(
2175         p_rule_id,p_org_contact_id,p_party_id,
2176         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2177     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
2178     ELSIF p_rule_id=41 THEN 
2179       IF NOT HZ_MATCH_RULE_41.check_staged THEN
2180         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2181         FND_MSG_PUB.ADD;
2182         RAISE FND_API.G_EXC_ERROR;
2183       END IF;
2184       HZ_MATCH_RULE_41.find_duplicate_contacts(
2185         p_rule_id,p_org_contact_id,p_party_id,
2186         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2187     -- Code for Match rule SAMPLE: SEARCH EXACT
2188     ELSIF p_rule_id=42 THEN 
2189       IF NOT HZ_MATCH_RULE_42.check_staged THEN
2190         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2191         FND_MSG_PUB.ADD;
2192         RAISE FND_API.G_EXC_ERROR;
2193       END IF;
2194       HZ_MATCH_RULE_42.find_duplicate_contacts(
2195         p_rule_id,p_org_contact_id,p_party_id,
2196         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2197     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
2198     ELSIF p_rule_id=48 THEN 
2199       IF NOT HZ_MATCH_RULE_48.check_staged THEN
2200         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2201         FND_MSG_PUB.ADD;
2202         RAISE FND_API.G_EXC_ERROR;
2203       END IF;
2204       HZ_MATCH_RULE_48.find_duplicate_contacts(
2205         p_rule_id,p_org_contact_id,p_party_id,
2206         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2207     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
2208     ELSIF p_rule_id=50 THEN 
2209       IF NOT HZ_MATCH_RULE_50.check_staged THEN
2210         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2211         FND_MSG_PUB.ADD;
2212         RAISE FND_API.G_EXC_ERROR;
2213       END IF;
2214       HZ_MATCH_RULE_50.find_duplicate_contacts(
2215         p_rule_id,p_org_contact_id,p_party_id,
2216         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2217     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
2218     ELSIF p_rule_id=51 THEN 
2219       IF NOT HZ_MATCH_RULE_51.check_staged THEN
2220         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2221         FND_MSG_PUB.ADD;
2222         RAISE FND_API.G_EXC_ERROR;
2223       END IF;
2224       HZ_MATCH_RULE_51.find_duplicate_contacts(
2225         p_rule_id,p_org_contact_id,p_party_id,
2226         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2227     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
2228     ELSIF p_rule_id=52 THEN 
2229       IF NOT HZ_MATCH_RULE_52.check_staged THEN
2230         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2231         FND_MSG_PUB.ADD;
2232         RAISE FND_API.G_EXC_ERROR;
2233       END IF;
2234       HZ_MATCH_RULE_52.find_duplicate_contacts(
2235         p_rule_id,p_org_contact_id,p_party_id,
2236         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2237     -- Code for Match rule CREDIT MANAGEMENT SEARCH
2238     ELSIF p_rule_id=53 THEN 
2239       IF NOT HZ_MATCH_RULE_53.check_staged THEN
2240         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2241         FND_MSG_PUB.ADD;
2242         RAISE FND_API.G_EXC_ERROR;
2243       END IF;
2244       HZ_MATCH_RULE_53.find_duplicate_contacts(
2245         p_rule_id,p_org_contact_id,p_party_id,
2246         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2247     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
2248     ELSIF p_rule_id=58 THEN 
2249       IF NOT HZ_MATCH_RULE_58.check_staged THEN
2250         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2251         FND_MSG_PUB.ADD;
2252         RAISE FND_API.G_EXC_ERROR;
2253       END IF;
2254       HZ_MATCH_RULE_58.find_duplicate_contacts(
2255         p_rule_id,p_org_contact_id,p_party_id,
2256         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2257     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
2258     ELSIF p_rule_id=60 THEN 
2259       IF NOT HZ_MATCH_RULE_60.check_staged THEN
2260         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2261         FND_MSG_PUB.ADD;
2262         RAISE FND_API.G_EXC_ERROR;
2263       END IF;
2264       HZ_MATCH_RULE_60.find_duplicate_contacts(
2265         p_rule_id,p_org_contact_id,p_party_id,
2266         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2267     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
2268     ELSIF p_rule_id=61 THEN 
2269       IF NOT HZ_MATCH_RULE_61.check_staged THEN
2270         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2271         FND_MSG_PUB.ADD;
2272         RAISE FND_API.G_EXC_ERROR;
2273       END IF;
2274       HZ_MATCH_RULE_61.find_duplicate_contacts(
2275         p_rule_id,p_org_contact_id,p_party_id,
2276         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2277     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
2278     ELSIF p_rule_id=62 THEN 
2279       IF NOT HZ_MATCH_RULE_62.check_staged THEN
2280         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2281         FND_MSG_PUB.ADD;
2282         RAISE FND_API.G_EXC_ERROR;
2283       END IF;
2284       HZ_MATCH_RULE_62.find_duplicate_contacts(
2285         p_rule_id,p_org_contact_id,p_party_id,
2286         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2287     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
2288     ELSIF p_rule_id=98 THEN 
2289       IF NOT HZ_MATCH_RULE_98.check_staged THEN
2290         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2291         FND_MSG_PUB.ADD;
2292         RAISE FND_API.G_EXC_ERROR;
2293       END IF;
2294       HZ_MATCH_RULE_98.find_duplicate_contacts(
2295         p_rule_id,p_org_contact_id,p_party_id,
2296         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2297     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
2298     ELSIF p_rule_id=99 THEN 
2299       IF NOT HZ_MATCH_RULE_99.check_staged THEN
2300         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2301         FND_MSG_PUB.ADD;
2302         RAISE FND_API.G_EXC_ERROR;
2303       END IF;
2304       HZ_MATCH_RULE_99.find_duplicate_contacts(
2305         p_rule_id,p_org_contact_id,p_party_id,
2306         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2307     END IF;
2308     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2309       hz_utility_v2pub.debug(p_message=>'find_duplicate_contacts(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2310     END IF;
2311   --Standard call to get message count and if count is 1, get message info
2312   FND_MSG_PUB.Count_And_Get(
2313     p_encoded => FND_API.G_FALSE,
2314     p_count => x_msg_count,
2315     p_data  => x_msg_data);
2316   EXCEPTION
2317        WHEN FND_API.G_EXC_ERROR THEN
2318                x_return_status := FND_API.G_RET_STS_ERROR;
2319                FND_MSG_PUB.Count_And_Get(
2320                                p_encoded => FND_API.G_FALSE,
2321                                p_count => x_msg_count,
2322                                p_data  => x_msg_data);
2323        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2324                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2325                FND_MSG_PUB.Count_And_Get(
2326                                p_encoded => FND_API.G_FALSE,
2327                                p_count => x_msg_count,
2328                                p_data  => x_msg_data);
2329 
2330        WHEN OTHERS THEN
2331                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2332                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
2333                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
2334                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2335                FND_MSG_PUB.ADD;
2336 
2337                FND_MSG_PUB.Count_And_Get(
2338                                p_encoded => FND_API.G_FALSE,
2339                                p_count => x_msg_count,
2340                                p_data  => x_msg_data);
2341   END;
2342 
2343   PROCEDURE find_duplicate_contact_points (
2344       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
2345       p_rule_id               IN      NUMBER,
2346       p_contact_point_id      IN      NUMBER,
2347       p_party_id              IN      NUMBER,
2348       p_restrict_sql          IN      VARCHAR2,
2349       p_match_type            IN      VARCHAR2,
2350       x_search_ctx_id         OUT     NUMBER,
2351       x_num_matches           OUT     NUMBER,
2352       x_return_status         OUT     VARCHAR2,
2353       x_msg_count             OUT     NUMBER,
2354       x_msg_data              OUT     VARCHAR2
2355 ) IS
2356   CURSOR c_match_rule IS 
2357     SELECT COMPILATION_FLAG 
2358     FROM HZ_MATCH_RULES_VL 
2359     WHERE MATCH_RULE_ID = p_rule_id;
2360   l_cmp_flag VARCHAR2(1);
2361   BEGIN
2362     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2363       hz_utility_v2pub.debug(p_message=>'find_duplicate_contact_points(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2364     END IF;
2365     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2366       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2367     END IF;
2368 
2369     -- Initialize return status and message stack
2370     x_return_status := FND_API.G_RET_STS_SUCCESS;
2371     IF FND_API.to_Boolean(p_init_msg_list) THEN
2372       FND_MSG_PUB.initialize;
2373     END IF;
2374 
2375     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2376       -- Find the match rule
2377       null;
2378 
2379       -- No MATCH RULE FOUND
2380       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2381       FND_MSG_PUB.ADD;
2382       RAISE FND_API.G_EXC_ERROR;
2383     END IF;
2384     OPEN c_match_rule;
2385     FETCH c_match_rule INTO l_cmp_flag;
2386     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2387       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2388       FND_MSG_PUB.ADD;
2389       RAISE FND_API.G_EXC_ERROR;
2390     END IF;
2391     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2392     IF p_rule_id=2 THEN 
2393       IF NOT HZ_MATCH_RULE_2.check_staged THEN
2394         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2395         FND_MSG_PUB.ADD;
2396         RAISE FND_API.G_EXC_ERROR;
2397       END IF;
2398       HZ_MATCH_RULE_2.find_duplicate_contact_points(
2399         p_rule_id,p_contact_point_id,p_party_id,
2400         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2401     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
2402     ELSIF p_rule_id=3 THEN 
2403       IF NOT HZ_MATCH_RULE_3.check_staged THEN
2404         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2405         FND_MSG_PUB.ADD;
2406         RAISE FND_API.G_EXC_ERROR;
2407       END IF;
2408       HZ_MATCH_RULE_3.find_duplicate_contact_points(
2409         p_rule_id,p_contact_point_id,p_party_id,
2410         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2411     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
2412     ELSIF p_rule_id=4 THEN 
2413       IF NOT HZ_MATCH_RULE_4.check_staged THEN
2414         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2415         FND_MSG_PUB.ADD;
2416         RAISE FND_API.G_EXC_ERROR;
2417       END IF;
2418       HZ_MATCH_RULE_4.find_duplicate_contact_points(
2419         p_rule_id,p_contact_point_id,p_party_id,
2420         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2421     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
2422     ELSIF p_rule_id=5 THEN 
2423       IF NOT HZ_MATCH_RULE_5.check_staged THEN
2424         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2425         FND_MSG_PUB.ADD;
2426         RAISE FND_API.G_EXC_ERROR;
2427       END IF;
2428       HZ_MATCH_RULE_5.find_duplicate_contact_points(
2429         p_rule_id,p_contact_point_id,p_party_id,
2430         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2431     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
2432     ELSIF p_rule_id=6 THEN 
2433       IF NOT HZ_MATCH_RULE_6.check_staged THEN
2434         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2435         FND_MSG_PUB.ADD;
2436         RAISE FND_API.G_EXC_ERROR;
2437       END IF;
2438       HZ_MATCH_RULE_6.find_duplicate_contact_points(
2439         p_rule_id,p_contact_point_id,p_party_id,
2440         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2441     -- Code for Match rule SAMPLE: SIMILAR_PERSON
2442     ELSIF p_rule_id=7 THEN 
2443       IF NOT HZ_MATCH_RULE_7.check_staged THEN
2444         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2445         FND_MSG_PUB.ADD;
2446         RAISE FND_API.G_EXC_ERROR;
2447       END IF;
2448       HZ_MATCH_RULE_7.find_duplicate_contact_points(
2449         p_rule_id,p_contact_point_id,p_party_id,
2450         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2451     -- Code for Match rule SAMPLE: SEARCH
2452     ELSIF p_rule_id=8 THEN 
2453       IF NOT HZ_MATCH_RULE_8.check_staged THEN
2454         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2455         FND_MSG_PUB.ADD;
2456         RAISE FND_API.G_EXC_ERROR;
2457       END IF;
2458       HZ_MATCH_RULE_8.find_duplicate_contact_points(
2459         p_rule_id,p_contact_point_id,p_party_id,
2460         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2461     -- Code for Match rule RM SEARCH RULE
2462     ELSIF p_rule_id=32 THEN 
2463       IF NOT HZ_MATCH_RULE_32.check_staged THEN
2464         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2465         FND_MSG_PUB.ADD;
2466         RAISE FND_API.G_EXC_ERROR;
2467       END IF;
2468       HZ_MATCH_RULE_32.find_duplicate_contact_points(
2469         p_rule_id,p_contact_point_id,p_party_id,
2470         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2471     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
2472     ELSIF p_rule_id=33 THEN 
2473       IF NOT HZ_MATCH_RULE_33.check_staged THEN
2474         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2475         FND_MSG_PUB.ADD;
2476         RAISE FND_API.G_EXC_ERROR;
2477       END IF;
2478       HZ_MATCH_RULE_33.find_duplicate_contact_points(
2479         p_rule_id,p_contact_point_id,p_party_id,
2480         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2481     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
2482     ELSIF p_rule_id=34 THEN 
2483       IF NOT HZ_MATCH_RULE_34.check_staged THEN
2484         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2485         FND_MSG_PUB.ADD;
2486         RAISE FND_API.G_EXC_ERROR;
2487       END IF;
2488       HZ_MATCH_RULE_34.find_duplicate_contact_points(
2489         p_rule_id,p_contact_point_id,p_party_id,
2490         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2491     -- Code for Match rule DL SMART SEARCH
2492     ELSIF p_rule_id=35 THEN 
2493       IF NOT HZ_MATCH_RULE_35.check_staged THEN
2494         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2495         FND_MSG_PUB.ADD;
2496         RAISE FND_API.G_EXC_ERROR;
2497       END IF;
2498       HZ_MATCH_RULE_35.find_duplicate_contact_points(
2499         p_rule_id,p_contact_point_id,p_party_id,
2500         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2501     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
2502     ELSIF p_rule_id=36 THEN 
2503       IF NOT HZ_MATCH_RULE_36.check_staged THEN
2504         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2505         FND_MSG_PUB.ADD;
2506         RAISE FND_API.G_EXC_ERROR;
2507       END IF;
2508       HZ_MATCH_RULE_36.find_duplicate_contact_points(
2509         p_rule_id,p_contact_point_id,p_party_id,
2510         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2511     -- Code for Match rule DL ADDRESS DEFAULT
2512     ELSIF p_rule_id=37 THEN 
2513       IF NOT HZ_MATCH_RULE_37.check_staged THEN
2514         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2515         FND_MSG_PUB.ADD;
2516         RAISE FND_API.G_EXC_ERROR;
2517       END IF;
2518       HZ_MATCH_RULE_37.find_duplicate_contact_points(
2519         p_rule_id,p_contact_point_id,p_party_id,
2520         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2521     -- Code for Match rule DL RELATIONSHIP DEFAULT
2522     ELSIF p_rule_id=38 THEN 
2523       IF NOT HZ_MATCH_RULE_38.check_staged THEN
2524         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2525         FND_MSG_PUB.ADD;
2526         RAISE FND_API.G_EXC_ERROR;
2527       END IF;
2528       HZ_MATCH_RULE_38.find_duplicate_contact_points(
2529         p_rule_id,p_contact_point_id,p_party_id,
2530         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2531     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
2532     ELSIF p_rule_id=39 THEN 
2533       IF NOT HZ_MATCH_RULE_39.check_staged THEN
2534         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2535         FND_MSG_PUB.ADD;
2536         RAISE FND_API.G_EXC_ERROR;
2537       END IF;
2538       HZ_MATCH_RULE_39.find_duplicate_contact_points(
2539         p_rule_id,p_contact_point_id,p_party_id,
2540         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2541     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
2542     ELSIF p_rule_id=40 THEN 
2543       IF NOT HZ_MATCH_RULE_40.check_staged THEN
2544         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2545         FND_MSG_PUB.ADD;
2546         RAISE FND_API.G_EXC_ERROR;
2547       END IF;
2548       HZ_MATCH_RULE_40.find_duplicate_contact_points(
2549         p_rule_id,p_contact_point_id,p_party_id,
2550         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2551     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
2552     ELSIF p_rule_id=41 THEN 
2553       IF NOT HZ_MATCH_RULE_41.check_staged THEN
2554         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2555         FND_MSG_PUB.ADD;
2556         RAISE FND_API.G_EXC_ERROR;
2557       END IF;
2558       HZ_MATCH_RULE_41.find_duplicate_contact_points(
2559         p_rule_id,p_contact_point_id,p_party_id,
2560         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2561     -- Code for Match rule SAMPLE: SEARCH EXACT
2562     ELSIF p_rule_id=42 THEN 
2563       IF NOT HZ_MATCH_RULE_42.check_staged THEN
2564         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2565         FND_MSG_PUB.ADD;
2566         RAISE FND_API.G_EXC_ERROR;
2567       END IF;
2568       HZ_MATCH_RULE_42.find_duplicate_contact_points(
2569         p_rule_id,p_contact_point_id,p_party_id,
2570         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2571     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
2572     ELSIF p_rule_id=48 THEN 
2573       IF NOT HZ_MATCH_RULE_48.check_staged THEN
2574         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2575         FND_MSG_PUB.ADD;
2576         RAISE FND_API.G_EXC_ERROR;
2577       END IF;
2578       HZ_MATCH_RULE_48.find_duplicate_contact_points(
2579         p_rule_id,p_contact_point_id,p_party_id,
2580         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2581     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
2582     ELSIF p_rule_id=50 THEN 
2583       IF NOT HZ_MATCH_RULE_50.check_staged THEN
2584         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2585         FND_MSG_PUB.ADD;
2586         RAISE FND_API.G_EXC_ERROR;
2587       END IF;
2588       HZ_MATCH_RULE_50.find_duplicate_contact_points(
2589         p_rule_id,p_contact_point_id,p_party_id,
2590         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2591     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
2592     ELSIF p_rule_id=51 THEN 
2593       IF NOT HZ_MATCH_RULE_51.check_staged THEN
2594         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2595         FND_MSG_PUB.ADD;
2596         RAISE FND_API.G_EXC_ERROR;
2597       END IF;
2598       HZ_MATCH_RULE_51.find_duplicate_contact_points(
2599         p_rule_id,p_contact_point_id,p_party_id,
2600         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2601     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
2602     ELSIF p_rule_id=52 THEN 
2603       IF NOT HZ_MATCH_RULE_52.check_staged THEN
2604         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2605         FND_MSG_PUB.ADD;
2606         RAISE FND_API.G_EXC_ERROR;
2607       END IF;
2608       HZ_MATCH_RULE_52.find_duplicate_contact_points(
2609         p_rule_id,p_contact_point_id,p_party_id,
2610         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2611     -- Code for Match rule CREDIT MANAGEMENT SEARCH
2612     ELSIF p_rule_id=53 THEN 
2613       IF NOT HZ_MATCH_RULE_53.check_staged THEN
2614         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2615         FND_MSG_PUB.ADD;
2616         RAISE FND_API.G_EXC_ERROR;
2617       END IF;
2618       HZ_MATCH_RULE_53.find_duplicate_contact_points(
2619         p_rule_id,p_contact_point_id,p_party_id,
2620         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2621     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
2622     ELSIF p_rule_id=58 THEN 
2623       IF NOT HZ_MATCH_RULE_58.check_staged THEN
2624         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2625         FND_MSG_PUB.ADD;
2626         RAISE FND_API.G_EXC_ERROR;
2627       END IF;
2628       HZ_MATCH_RULE_58.find_duplicate_contact_points(
2629         p_rule_id,p_contact_point_id,p_party_id,
2630         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2631     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
2632     ELSIF p_rule_id=60 THEN 
2633       IF NOT HZ_MATCH_RULE_60.check_staged THEN
2634         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2635         FND_MSG_PUB.ADD;
2636         RAISE FND_API.G_EXC_ERROR;
2637       END IF;
2638       HZ_MATCH_RULE_60.find_duplicate_contact_points(
2639         p_rule_id,p_contact_point_id,p_party_id,
2640         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2641     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
2642     ELSIF p_rule_id=61 THEN 
2643       IF NOT HZ_MATCH_RULE_61.check_staged THEN
2644         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2645         FND_MSG_PUB.ADD;
2646         RAISE FND_API.G_EXC_ERROR;
2647       END IF;
2648       HZ_MATCH_RULE_61.find_duplicate_contact_points(
2649         p_rule_id,p_contact_point_id,p_party_id,
2650         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2651     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
2652     ELSIF p_rule_id=62 THEN 
2653       IF NOT HZ_MATCH_RULE_62.check_staged THEN
2654         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2655         FND_MSG_PUB.ADD;
2656         RAISE FND_API.G_EXC_ERROR;
2657       END IF;
2658       HZ_MATCH_RULE_62.find_duplicate_contact_points(
2659         p_rule_id,p_contact_point_id,p_party_id,
2660         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2661     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
2662     ELSIF p_rule_id=98 THEN 
2663       IF NOT HZ_MATCH_RULE_98.check_staged THEN
2664         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2665         FND_MSG_PUB.ADD;
2666         RAISE FND_API.G_EXC_ERROR;
2667       END IF;
2668       HZ_MATCH_RULE_98.find_duplicate_contact_points(
2669         p_rule_id,p_contact_point_id,p_party_id,
2670         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2671     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
2672     ELSIF p_rule_id=99 THEN 
2673       IF NOT HZ_MATCH_RULE_99.check_staged THEN
2674         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2675         FND_MSG_PUB.ADD;
2676         RAISE FND_API.G_EXC_ERROR;
2677       END IF;
2678       HZ_MATCH_RULE_99.find_duplicate_contact_points(
2679         p_rule_id,p_contact_point_id,p_party_id,
2680         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2681     END IF;
2682     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2683       hz_utility_v2pub.debug(p_message=>'find_duplicate_contact_points(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2684     END IF;
2685   --Standard call to get message count and if count is 1, get message info
2686   FND_MSG_PUB.Count_And_Get(
2687     p_encoded => FND_API.G_FALSE,
2688     p_count => x_msg_count,
2689     p_data  => x_msg_data);
2690   EXCEPTION
2691        WHEN FND_API.G_EXC_ERROR THEN
2692                x_return_status := FND_API.G_RET_STS_ERROR;
2693                FND_MSG_PUB.Count_And_Get(
2694                                p_encoded => FND_API.G_FALSE,
2695                                p_count => x_msg_count,
2696                                p_data  => x_msg_data);
2697        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2698                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2699                FND_MSG_PUB.Count_And_Get(
2700                                p_encoded => FND_API.G_FALSE,
2701                                p_count => x_msg_count,
2702                                p_data  => x_msg_data);
2703 
2704        WHEN OTHERS THEN
2705                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2706                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
2707                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
2708                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2709                FND_MSG_PUB.ADD;
2710 
2711                FND_MSG_PUB.Count_And_Get(
2712                                p_encoded => FND_API.G_FALSE,
2713                                p_count => x_msg_count,
2714                                p_data  => x_msg_data);
2715   END;
2716 
2717 
2718   PROCEDURE find_parties_dynamic (
2719       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
2720       p_rule_id               IN      NUMBER,
2721       p_attrib_id1            IN      NUMBER,
2722       p_attrib_id2            IN      NUMBER,
2723       p_attrib_id3            IN      NUMBER,
2724       p_attrib_id4            IN      NUMBER,
2725       p_attrib_id5            IN      NUMBER,
2726       p_attrib_id6            IN      NUMBER,
2727       p_attrib_id7            IN      NUMBER,
2728       p_attrib_id8            IN      NUMBER,
2729       p_attrib_id9            IN      NUMBER,
2730       p_attrib_id10           IN      NUMBER,
2731       p_attrib_id11           IN      NUMBER,
2732       p_attrib_id12           IN      NUMBER,
2733       p_attrib_id13           IN      NUMBER,
2734       p_attrib_id14           IN      NUMBER,
2735       p_attrib_id15           IN      NUMBER,
2736       p_attrib_id16           IN      NUMBER,
2737       p_attrib_id17           IN      NUMBER,
2738       p_attrib_id18           IN      NUMBER,
2739       p_attrib_id19           IN      NUMBER,
2740       p_attrib_id20           IN      NUMBER,
2741       p_attrib_val1           IN      VARCHAR2,
2742       p_attrib_val2           IN      VARCHAR2,
2743       p_attrib_val3           IN      VARCHAR2,
2744       p_attrib_val4           IN      VARCHAR2,
2745       p_attrib_val5           IN      VARCHAR2,
2746       p_attrib_val6           IN      VARCHAR2,
2747       p_attrib_val7           IN      VARCHAR2,
2748       p_attrib_val8           IN      VARCHAR2,
2749       p_attrib_val9           IN      VARCHAR2,
2750       p_attrib_val10          IN      VARCHAR2,
2751       p_attrib_val11          IN      VARCHAR2,
2752       p_attrib_val12          IN      VARCHAR2,
2753       p_attrib_val13          IN      VARCHAR2,
2754       p_attrib_val14          IN      VARCHAR2,
2755       p_attrib_val15          IN      VARCHAR2,
2756       p_attrib_val16          IN      VARCHAR2,
2757       p_attrib_val17          IN      VARCHAR2,
2758       p_attrib_val18          IN      VARCHAR2,
2759       p_attrib_val19          IN      VARCHAR2,
2760       p_attrib_val20          IN      VARCHAR2,
2761       p_restrict_sql          IN      VARCHAR2,
2762       p_match_type            IN      VARCHAR2,
2763       p_search_merged         IN      VARCHAR2,
2764       x_search_ctx_id         OUT     NUMBER,
2765       x_num_matches           OUT     NUMBER,
2766       x_return_status         OUT     VARCHAR2,
2767       x_msg_count             OUT     NUMBER,
2768       x_msg_data              OUT     VARCHAR2
2769 ) IS
2770   CURSOR c_match_rule IS 
2771     SELECT COMPILATION_FLAG 
2772     FROM HZ_MATCH_RULES_VL 
2773     WHERE MATCH_RULE_ID = p_rule_id;
2774   l_cmp_flag VARCHAR2(1);
2775   BEGIN
2776     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2777       hz_utility_v2pub.debug(p_message=>'find_parties_dynamic(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
2778     END IF;
2779     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2780       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
2781     END IF;
2782 
2783     -- Initialize return status and message stack
2784     x_return_status := FND_API.G_RET_STS_SUCCESS;
2785     IF FND_API.to_Boolean(p_init_msg_list) THEN
2786       FND_MSG_PUB.initialize;
2787     END IF;
2788 
2789     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2790       -- Find the match rule
2791       null;
2792 
2793       -- No MATCH RULE FOUND
2794       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2795       FND_MSG_PUB.ADD;
2796       RAISE FND_API.G_EXC_ERROR;
2797     END IF;
2798     OPEN c_match_rule;
2799     FETCH c_match_rule INTO l_cmp_flag;
2800     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2801       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2802       FND_MSG_PUB.ADD;
2803       RAISE FND_API.G_EXC_ERROR;
2804     END IF;
2805     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2806     IF p_rule_id=2 THEN 
2807       IF NOT HZ_MATCH_RULE_2.check_staged THEN
2808         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2809         FND_MSG_PUB.ADD;
2810         RAISE FND_API.G_EXC_ERROR;
2811       END IF;
2812       HZ_MATCH_RULE_2.find_parties_dynamic(
2813         p_rule_id,
2814         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2815         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2816         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2817         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2818         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2819         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2820         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2821         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2822         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2823     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
2824     ELSIF p_rule_id=3 THEN 
2825       IF NOT HZ_MATCH_RULE_3.check_staged THEN
2826         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2827         FND_MSG_PUB.ADD;
2828         RAISE FND_API.G_EXC_ERROR;
2829       END IF;
2830       HZ_MATCH_RULE_3.find_parties_dynamic(
2831         p_rule_id,
2832         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2833         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2834         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2835         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2836         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2837         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2838         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2839         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2840         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2841     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
2842     ELSIF p_rule_id=4 THEN 
2843       IF NOT HZ_MATCH_RULE_4.check_staged THEN
2844         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2845         FND_MSG_PUB.ADD;
2846         RAISE FND_API.G_EXC_ERROR;
2847       END IF;
2848       HZ_MATCH_RULE_4.find_parties_dynamic(
2849         p_rule_id,
2850         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2851         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2852         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2853         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2854         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2855         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2856         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2857         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2858         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2859     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
2860     ELSIF p_rule_id=5 THEN 
2861       IF NOT HZ_MATCH_RULE_5.check_staged THEN
2862         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2863         FND_MSG_PUB.ADD;
2864         RAISE FND_API.G_EXC_ERROR;
2865       END IF;
2866       HZ_MATCH_RULE_5.find_parties_dynamic(
2867         p_rule_id,
2868         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2869         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2870         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2871         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2872         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2873         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2874         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2875         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2876         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2877     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
2878     ELSIF p_rule_id=6 THEN 
2879       IF NOT HZ_MATCH_RULE_6.check_staged THEN
2880         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2881         FND_MSG_PUB.ADD;
2882         RAISE FND_API.G_EXC_ERROR;
2883       END IF;
2884       HZ_MATCH_RULE_6.find_parties_dynamic(
2885         p_rule_id,
2886         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2887         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2888         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2889         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2890         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2891         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2892         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2893         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2894         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2895     -- Code for Match rule SAMPLE: SIMILAR_PERSON
2896     ELSIF p_rule_id=7 THEN 
2897       IF NOT HZ_MATCH_RULE_7.check_staged THEN
2898         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2899         FND_MSG_PUB.ADD;
2900         RAISE FND_API.G_EXC_ERROR;
2901       END IF;
2902       HZ_MATCH_RULE_7.find_parties_dynamic(
2903         p_rule_id,
2904         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2905         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2906         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2907         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2908         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2909         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2910         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2911         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2912         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2913     -- Code for Match rule SAMPLE: SEARCH
2914     ELSIF p_rule_id=8 THEN 
2915       IF NOT HZ_MATCH_RULE_8.check_staged THEN
2916         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2917         FND_MSG_PUB.ADD;
2918         RAISE FND_API.G_EXC_ERROR;
2919       END IF;
2920       HZ_MATCH_RULE_8.find_parties_dynamic(
2921         p_rule_id,
2922         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2923         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2924         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2925         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2926         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2927         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2928         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2929         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2930         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2931     -- Code for Match rule RM SEARCH RULE
2932     ELSIF p_rule_id=32 THEN 
2933       IF NOT HZ_MATCH_RULE_32.check_staged THEN
2934         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2935         FND_MSG_PUB.ADD;
2936         RAISE FND_API.G_EXC_ERROR;
2937       END IF;
2938       HZ_MATCH_RULE_32.find_parties_dynamic(
2939         p_rule_id,
2940         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2941         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2942         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2943         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2944         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2945         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2946         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2947         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2948         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2949     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
2950     ELSIF p_rule_id=33 THEN 
2951       IF NOT HZ_MATCH_RULE_33.check_staged THEN
2952         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2953         FND_MSG_PUB.ADD;
2954         RAISE FND_API.G_EXC_ERROR;
2955       END IF;
2956       HZ_MATCH_RULE_33.find_parties_dynamic(
2957         p_rule_id,
2958         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2959         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2960         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2961         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2962         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2963         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2964         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2965         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2966         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2967     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
2968     ELSIF p_rule_id=34 THEN 
2969       IF NOT HZ_MATCH_RULE_34.check_staged THEN
2970         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2971         FND_MSG_PUB.ADD;
2972         RAISE FND_API.G_EXC_ERROR;
2973       END IF;
2974       HZ_MATCH_RULE_34.find_parties_dynamic(
2975         p_rule_id,
2976         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2977         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2978         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2979         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2980         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2981         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2982         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2983         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2984         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2985     -- Code for Match rule DL SMART SEARCH
2986     ELSIF p_rule_id=35 THEN 
2987       IF NOT HZ_MATCH_RULE_35.check_staged THEN
2988         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2989         FND_MSG_PUB.ADD;
2990         RAISE FND_API.G_EXC_ERROR;
2991       END IF;
2992       HZ_MATCH_RULE_35.find_parties_dynamic(
2993         p_rule_id,
2994         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2995         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2996         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2997         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2998         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2999         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3000         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3001         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3002         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3003     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
3004     ELSIF p_rule_id=36 THEN 
3005       IF NOT HZ_MATCH_RULE_36.check_staged THEN
3006         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3007         FND_MSG_PUB.ADD;
3008         RAISE FND_API.G_EXC_ERROR;
3009       END IF;
3010       HZ_MATCH_RULE_36.find_parties_dynamic(
3011         p_rule_id,
3012         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3013         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3014         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3015         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3016         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3017         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3018         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3019         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3020         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3021     -- Code for Match rule DL ADDRESS DEFAULT
3022     ELSIF p_rule_id=37 THEN 
3023       IF NOT HZ_MATCH_RULE_37.check_staged THEN
3024         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3025         FND_MSG_PUB.ADD;
3026         RAISE FND_API.G_EXC_ERROR;
3027       END IF;
3028       HZ_MATCH_RULE_37.find_parties_dynamic(
3029         p_rule_id,
3030         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3031         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3032         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3033         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3034         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3035         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3036         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3037         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3038         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3039     -- Code for Match rule DL RELATIONSHIP DEFAULT
3040     ELSIF p_rule_id=38 THEN 
3041       IF NOT HZ_MATCH_RULE_38.check_staged THEN
3042         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3043         FND_MSG_PUB.ADD;
3044         RAISE FND_API.G_EXC_ERROR;
3045       END IF;
3046       HZ_MATCH_RULE_38.find_parties_dynamic(
3047         p_rule_id,
3048         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3049         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3050         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3051         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3052         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3053         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3054         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3055         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3056         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3057     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
3058     ELSIF p_rule_id=39 THEN 
3059       IF NOT HZ_MATCH_RULE_39.check_staged THEN
3060         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3061         FND_MSG_PUB.ADD;
3062         RAISE FND_API.G_EXC_ERROR;
3063       END IF;
3064       HZ_MATCH_RULE_39.find_parties_dynamic(
3065         p_rule_id,
3066         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3067         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3068         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3069         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3070         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3071         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3072         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3073         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3074         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3075     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
3076     ELSIF p_rule_id=40 THEN 
3077       IF NOT HZ_MATCH_RULE_40.check_staged THEN
3078         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3079         FND_MSG_PUB.ADD;
3080         RAISE FND_API.G_EXC_ERROR;
3081       END IF;
3082       HZ_MATCH_RULE_40.find_parties_dynamic(
3083         p_rule_id,
3084         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3085         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3086         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3087         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3088         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3089         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3090         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3091         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3092         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3093     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
3094     ELSIF p_rule_id=41 THEN 
3095       IF NOT HZ_MATCH_RULE_41.check_staged THEN
3096         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3097         FND_MSG_PUB.ADD;
3098         RAISE FND_API.G_EXC_ERROR;
3099       END IF;
3100       HZ_MATCH_RULE_41.find_parties_dynamic(
3101         p_rule_id,
3102         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3103         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3104         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3105         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3106         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3107         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3108         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3109         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3110         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3111     -- Code for Match rule SAMPLE: SEARCH EXACT
3112     ELSIF p_rule_id=42 THEN 
3113       IF NOT HZ_MATCH_RULE_42.check_staged THEN
3114         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3115         FND_MSG_PUB.ADD;
3116         RAISE FND_API.G_EXC_ERROR;
3117       END IF;
3118       HZ_MATCH_RULE_42.find_parties_dynamic(
3119         p_rule_id,
3120         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3121         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3122         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3123         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3124         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3125         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3126         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3127         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3128         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3129     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
3130     ELSIF p_rule_id=48 THEN 
3131       IF NOT HZ_MATCH_RULE_48.check_staged THEN
3132         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3133         FND_MSG_PUB.ADD;
3134         RAISE FND_API.G_EXC_ERROR;
3135       END IF;
3136       HZ_MATCH_RULE_48.find_parties_dynamic(
3137         p_rule_id,
3138         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3139         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3140         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3141         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3142         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3143         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3144         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3145         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3146         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3147     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
3148     ELSIF p_rule_id=50 THEN 
3149       IF NOT HZ_MATCH_RULE_50.check_staged THEN
3150         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3151         FND_MSG_PUB.ADD;
3152         RAISE FND_API.G_EXC_ERROR;
3153       END IF;
3154       HZ_MATCH_RULE_50.find_parties_dynamic(
3155         p_rule_id,
3156         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3157         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3158         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3159         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3160         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3161         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3162         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3163         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3164         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3165     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
3166     ELSIF p_rule_id=51 THEN 
3167       IF NOT HZ_MATCH_RULE_51.check_staged THEN
3168         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3169         FND_MSG_PUB.ADD;
3170         RAISE FND_API.G_EXC_ERROR;
3171       END IF;
3172       HZ_MATCH_RULE_51.find_parties_dynamic(
3173         p_rule_id,
3174         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3175         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3176         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3177         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3178         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3179         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3180         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3181         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3182         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3183     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
3184     ELSIF p_rule_id=52 THEN 
3185       IF NOT HZ_MATCH_RULE_52.check_staged THEN
3186         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3187         FND_MSG_PUB.ADD;
3188         RAISE FND_API.G_EXC_ERROR;
3189       END IF;
3190       HZ_MATCH_RULE_52.find_parties_dynamic(
3191         p_rule_id,
3192         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3193         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3194         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3195         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3196         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3197         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3198         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3199         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3200         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3201     -- Code for Match rule CREDIT MANAGEMENT SEARCH
3202     ELSIF p_rule_id=53 THEN 
3203       IF NOT HZ_MATCH_RULE_53.check_staged THEN
3204         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3205         FND_MSG_PUB.ADD;
3206         RAISE FND_API.G_EXC_ERROR;
3207       END IF;
3208       HZ_MATCH_RULE_53.find_parties_dynamic(
3209         p_rule_id,
3210         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3211         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3212         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3213         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3214         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3215         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3216         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3217         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3218         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3219     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
3220     ELSIF p_rule_id=58 THEN 
3221       IF NOT HZ_MATCH_RULE_58.check_staged THEN
3222         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3223         FND_MSG_PUB.ADD;
3224         RAISE FND_API.G_EXC_ERROR;
3225       END IF;
3226       HZ_MATCH_RULE_58.find_parties_dynamic(
3227         p_rule_id,
3228         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3229         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3230         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3231         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3232         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3233         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3234         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3235         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3236         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3237     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
3238     ELSIF p_rule_id=60 THEN 
3239       IF NOT HZ_MATCH_RULE_60.check_staged THEN
3240         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3241         FND_MSG_PUB.ADD;
3242         RAISE FND_API.G_EXC_ERROR;
3243       END IF;
3244       HZ_MATCH_RULE_60.find_parties_dynamic(
3245         p_rule_id,
3246         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3247         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3248         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3249         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3250         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3251         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3252         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3253         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3254         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3255     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
3256     ELSIF p_rule_id=61 THEN 
3257       IF NOT HZ_MATCH_RULE_61.check_staged THEN
3258         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3259         FND_MSG_PUB.ADD;
3260         RAISE FND_API.G_EXC_ERROR;
3261       END IF;
3262       HZ_MATCH_RULE_61.find_parties_dynamic(
3263         p_rule_id,
3264         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3265         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3266         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3267         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3268         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3269         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3270         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3271         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3272         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3273     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
3274     ELSIF p_rule_id=62 THEN 
3275       IF NOT HZ_MATCH_RULE_62.check_staged THEN
3276         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3277         FND_MSG_PUB.ADD;
3278         RAISE FND_API.G_EXC_ERROR;
3279       END IF;
3280       HZ_MATCH_RULE_62.find_parties_dynamic(
3281         p_rule_id,
3282         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3283         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3284         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3285         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3286         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3287         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3288         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3289         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3290         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3291     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
3292     ELSIF p_rule_id=98 THEN 
3293       IF NOT HZ_MATCH_RULE_98.check_staged THEN
3294         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3295         FND_MSG_PUB.ADD;
3296         RAISE FND_API.G_EXC_ERROR;
3297       END IF;
3298       HZ_MATCH_RULE_98.find_parties_dynamic(
3299         p_rule_id,
3300         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3301         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3302         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3303         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3304         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3305         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3306         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3307         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3308         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3309     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
3310     ELSIF p_rule_id=99 THEN 
3311       IF NOT HZ_MATCH_RULE_99.check_staged THEN
3312         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3313         FND_MSG_PUB.ADD;
3314         RAISE FND_API.G_EXC_ERROR;
3315       END IF;
3316       HZ_MATCH_RULE_99.find_parties_dynamic(
3317         p_rule_id,
3318         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3319         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3320         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3321         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3322         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3323         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3324         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3325         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3326         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3327     END IF;
3328     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3329       hz_utility_v2pub.debug(p_message=>'find_parties_dynamic(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
3330     END IF;
3331   --Standard call to get message count and if count is 1, get message info
3332   FND_MSG_PUB.Count_And_Get(
3333     p_encoded => FND_API.G_FALSE,
3334     p_count => x_msg_count,
3335     p_data  => x_msg_data);
3336   EXCEPTION
3337        WHEN FND_API.G_EXC_ERROR THEN
3338                x_return_status := FND_API.G_RET_STS_ERROR;
3339                FND_MSG_PUB.Count_And_Get(
3340                                p_encoded => FND_API.G_FALSE,
3341                                p_count => x_msg_count,
3342                                p_data  => x_msg_data);
3343        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3344                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3345                FND_MSG_PUB.Count_And_Get(
3346                                p_encoded => FND_API.G_FALSE,
3347                                p_count => x_msg_count,
3348                                p_data  => x_msg_data);
3349 
3350        WHEN OTHERS THEN
3351                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3352                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
3353                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
3354                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3355                FND_MSG_PUB.ADD;
3356 
3357                FND_MSG_PUB.Count_And_Get(
3358                                p_encoded => FND_API.G_FALSE,
3359                                p_count => x_msg_count,
3360                                p_data  => x_msg_data);
3361   END;
3362 
3363   PROCEDURE call_api_dynamic (
3364       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
3365       p_rule_id               IN      NUMBER,
3366       p_attrib_id1            IN      NUMBER,
3367       p_attrib_id2            IN      NUMBER,
3368       p_attrib_id3            IN      NUMBER,
3369       p_attrib_id4            IN      NUMBER,
3370       p_attrib_id5            IN      NUMBER,
3371       p_attrib_id6            IN      NUMBER,
3372       p_attrib_id7            IN      NUMBER,
3373       p_attrib_id8            IN      NUMBER,
3374       p_attrib_id9            IN      NUMBER,
3375       p_attrib_id10           IN      NUMBER,
3376       p_attrib_id11           IN      NUMBER,
3377       p_attrib_id12           IN      NUMBER,
3378       p_attrib_id13           IN      NUMBER,
3379       p_attrib_id14           IN      NUMBER,
3380       p_attrib_id15           IN      NUMBER,
3381       p_attrib_id16           IN      NUMBER,
3382       p_attrib_id17           IN      NUMBER,
3383       p_attrib_id18           IN      NUMBER,
3384       p_attrib_id19           IN      NUMBER,
3385       p_attrib_id20           IN      NUMBER,
3386       p_attrib_val1           IN      VARCHAR2,
3387       p_attrib_val2           IN      VARCHAR2,
3388       p_attrib_val3           IN      VARCHAR2,
3389       p_attrib_val4           IN      VARCHAR2,
3390       p_attrib_val5           IN      VARCHAR2,
3391       p_attrib_val6           IN      VARCHAR2,
3392       p_attrib_val7           IN      VARCHAR2,
3393       p_attrib_val8           IN      VARCHAR2,
3394       p_attrib_val9           IN      VARCHAR2,
3395       p_attrib_val10          IN      VARCHAR2,
3396       p_attrib_val11          IN      VARCHAR2,
3397       p_attrib_val12          IN      VARCHAR2,
3398       p_attrib_val13          IN      VARCHAR2,
3399       p_attrib_val14          IN      VARCHAR2,
3400       p_attrib_val15          IN      VARCHAR2,
3401       p_attrib_val16          IN      VARCHAR2,
3402       p_attrib_val17          IN      VARCHAR2,
3403       p_attrib_val18          IN      VARCHAR2,
3404       p_attrib_val19          IN      VARCHAR2,
3405       p_attrib_val20          IN      VARCHAR2,
3406       p_restrict_sql          IN      VARCHAR2,
3407       p_api_name              IN      VARCHAR2,
3408       p_match_type            IN      VARCHAR2,
3409       p_party_id              IN      NUMBER,
3410       p_search_merged         IN      VARCHAR2,
3411       x_search_ctx_id         OUT     NUMBER,
3412       x_num_matches           OUT     NUMBER,
3413       x_return_status         OUT     VARCHAR2,
3414       x_msg_count             OUT     NUMBER,
3415       x_msg_data              OUT     VARCHAR2
3416 ) IS
3417   CURSOR c_match_rule IS 
3418     SELECT COMPILATION_FLAG 
3419     FROM HZ_MATCH_RULES_VL 
3420     WHERE MATCH_RULE_ID = p_rule_id;
3421   l_cmp_flag VARCHAR2(1);
3422   BEGIN
3423     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3424       hz_utility_v2pub.debug(p_message=>'find_parties_dynamic(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
3425     END IF;
3426     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3427       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
3428     END IF;
3429 
3430     -- Initialize return status and message stack
3431     x_return_status := FND_API.G_RET_STS_SUCCESS;
3432     IF FND_API.to_Boolean(p_init_msg_list) THEN
3433       FND_MSG_PUB.initialize;
3434     END IF;
3435 
3436     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
3437       -- Find the match rule
3438       null;
3439 
3440       -- No MATCH RULE FOUND
3441       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
3442       FND_MSG_PUB.ADD;
3443       RAISE FND_API.G_EXC_ERROR;
3444     END IF;
3445     OPEN c_match_rule;
3446     FETCH c_match_rule INTO l_cmp_flag;
3447     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
3448       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
3449       FND_MSG_PUB.ADD;
3450       RAISE FND_API.G_EXC_ERROR;
3451     END IF;
3452     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
3453     IF p_rule_id=2 THEN 
3454       IF NOT HZ_MATCH_RULE_2.check_staged THEN
3455         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3456         FND_MSG_PUB.ADD;
3457         RAISE FND_API.G_EXC_ERROR;
3458       END IF;
3459       HZ_MATCH_RULE_2.call_api_dynamic(
3460         p_rule_id,
3461         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3462         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3463         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3464         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3465         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3466         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3467         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3468         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3469         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3470     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
3471     ELSIF p_rule_id=3 THEN 
3472       IF NOT HZ_MATCH_RULE_3.check_staged THEN
3473         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3474         FND_MSG_PUB.ADD;
3475         RAISE FND_API.G_EXC_ERROR;
3476       END IF;
3477       HZ_MATCH_RULE_3.call_api_dynamic(
3478         p_rule_id,
3479         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3480         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3481         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3482         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3483         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3484         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3485         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3486         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3487         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3488     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
3489     ELSIF p_rule_id=4 THEN 
3490       IF NOT HZ_MATCH_RULE_4.check_staged THEN
3491         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3492         FND_MSG_PUB.ADD;
3493         RAISE FND_API.G_EXC_ERROR;
3494       END IF;
3495       HZ_MATCH_RULE_4.call_api_dynamic(
3496         p_rule_id,
3497         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3498         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3499         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3500         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3501         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3502         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3503         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3504         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3505         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3506     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
3507     ELSIF p_rule_id=5 THEN 
3508       IF NOT HZ_MATCH_RULE_5.check_staged THEN
3509         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3510         FND_MSG_PUB.ADD;
3511         RAISE FND_API.G_EXC_ERROR;
3512       END IF;
3513       HZ_MATCH_RULE_5.call_api_dynamic(
3514         p_rule_id,
3515         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3516         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3517         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3518         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3519         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3520         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3521         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3522         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3523         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3524     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
3525     ELSIF p_rule_id=6 THEN 
3526       IF NOT HZ_MATCH_RULE_6.check_staged THEN
3527         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3528         FND_MSG_PUB.ADD;
3529         RAISE FND_API.G_EXC_ERROR;
3530       END IF;
3531       HZ_MATCH_RULE_6.call_api_dynamic(
3532         p_rule_id,
3533         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3534         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3535         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3536         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3537         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3538         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3539         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3540         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3541         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3542     -- Code for Match rule SAMPLE: SIMILAR_PERSON
3543     ELSIF p_rule_id=7 THEN 
3544       IF NOT HZ_MATCH_RULE_7.check_staged THEN
3545         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3546         FND_MSG_PUB.ADD;
3547         RAISE FND_API.G_EXC_ERROR;
3548       END IF;
3549       HZ_MATCH_RULE_7.call_api_dynamic(
3550         p_rule_id,
3551         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3552         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3553         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3554         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3555         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3556         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3557         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3558         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3559         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3560     -- Code for Match rule SAMPLE: SEARCH
3561     ELSIF p_rule_id=8 THEN 
3562       IF NOT HZ_MATCH_RULE_8.check_staged THEN
3563         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3564         FND_MSG_PUB.ADD;
3565         RAISE FND_API.G_EXC_ERROR;
3566       END IF;
3567       HZ_MATCH_RULE_8.call_api_dynamic(
3568         p_rule_id,
3569         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3570         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3571         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3572         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3573         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3574         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3575         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3576         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3577         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3578     -- Code for Match rule RM SEARCH RULE
3579     ELSIF p_rule_id=32 THEN 
3580       IF NOT HZ_MATCH_RULE_32.check_staged THEN
3581         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3582         FND_MSG_PUB.ADD;
3583         RAISE FND_API.G_EXC_ERROR;
3584       END IF;
3585       HZ_MATCH_RULE_32.call_api_dynamic(
3586         p_rule_id,
3587         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3588         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3589         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3590         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3591         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3592         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3593         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3594         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3595         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3596     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
3597     ELSIF p_rule_id=33 THEN 
3598       IF NOT HZ_MATCH_RULE_33.check_staged THEN
3599         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3600         FND_MSG_PUB.ADD;
3601         RAISE FND_API.G_EXC_ERROR;
3602       END IF;
3603       HZ_MATCH_RULE_33.call_api_dynamic(
3604         p_rule_id,
3605         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3606         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3607         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3608         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3609         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3610         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3611         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3612         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3613         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3614     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
3615     ELSIF p_rule_id=34 THEN 
3616       IF NOT HZ_MATCH_RULE_34.check_staged THEN
3617         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3618         FND_MSG_PUB.ADD;
3619         RAISE FND_API.G_EXC_ERROR;
3620       END IF;
3621       HZ_MATCH_RULE_34.call_api_dynamic(
3622         p_rule_id,
3623         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3624         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3625         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3626         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3627         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3628         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3629         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3630         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3631         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3632     -- Code for Match rule DL SMART SEARCH
3633     ELSIF p_rule_id=35 THEN 
3634       IF NOT HZ_MATCH_RULE_35.check_staged THEN
3635         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3636         FND_MSG_PUB.ADD;
3637         RAISE FND_API.G_EXC_ERROR;
3638       END IF;
3639       HZ_MATCH_RULE_35.call_api_dynamic(
3640         p_rule_id,
3641         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3642         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3643         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3644         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3645         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3646         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3647         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3648         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3649         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3650     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
3651     ELSIF p_rule_id=36 THEN 
3652       IF NOT HZ_MATCH_RULE_36.check_staged THEN
3653         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3654         FND_MSG_PUB.ADD;
3655         RAISE FND_API.G_EXC_ERROR;
3656       END IF;
3657       HZ_MATCH_RULE_36.call_api_dynamic(
3658         p_rule_id,
3659         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3660         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3661         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3662         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3663         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3664         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3665         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3666         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3667         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3668     -- Code for Match rule DL ADDRESS DEFAULT
3669     ELSIF p_rule_id=37 THEN 
3670       IF NOT HZ_MATCH_RULE_37.check_staged THEN
3671         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3672         FND_MSG_PUB.ADD;
3673         RAISE FND_API.G_EXC_ERROR;
3674       END IF;
3675       HZ_MATCH_RULE_37.call_api_dynamic(
3676         p_rule_id,
3677         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3678         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3679         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3680         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3681         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3682         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3683         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3684         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3685         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3686     -- Code for Match rule DL RELATIONSHIP DEFAULT
3687     ELSIF p_rule_id=38 THEN 
3688       IF NOT HZ_MATCH_RULE_38.check_staged THEN
3689         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3690         FND_MSG_PUB.ADD;
3691         RAISE FND_API.G_EXC_ERROR;
3692       END IF;
3693       HZ_MATCH_RULE_38.call_api_dynamic(
3694         p_rule_id,
3695         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3696         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3697         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3698         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3699         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3700         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3701         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3702         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3703         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3704     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
3705     ELSIF p_rule_id=39 THEN 
3706       IF NOT HZ_MATCH_RULE_39.check_staged THEN
3707         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3708         FND_MSG_PUB.ADD;
3709         RAISE FND_API.G_EXC_ERROR;
3710       END IF;
3711       HZ_MATCH_RULE_39.call_api_dynamic(
3712         p_rule_id,
3713         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3714         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3715         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3716         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3717         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3718         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3719         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3720         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3721         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3722     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
3723     ELSIF p_rule_id=40 THEN 
3724       IF NOT HZ_MATCH_RULE_40.check_staged THEN
3725         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3726         FND_MSG_PUB.ADD;
3727         RAISE FND_API.G_EXC_ERROR;
3728       END IF;
3729       HZ_MATCH_RULE_40.call_api_dynamic(
3730         p_rule_id,
3731         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3732         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3733         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3734         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3735         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3736         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3737         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3738         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3739         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3740     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
3741     ELSIF p_rule_id=41 THEN 
3742       IF NOT HZ_MATCH_RULE_41.check_staged THEN
3743         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3744         FND_MSG_PUB.ADD;
3745         RAISE FND_API.G_EXC_ERROR;
3746       END IF;
3747       HZ_MATCH_RULE_41.call_api_dynamic(
3748         p_rule_id,
3749         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3750         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3751         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3752         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3753         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3754         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3755         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3756         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3757         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3758     -- Code for Match rule SAMPLE: SEARCH EXACT
3759     ELSIF p_rule_id=42 THEN 
3760       IF NOT HZ_MATCH_RULE_42.check_staged THEN
3761         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3762         FND_MSG_PUB.ADD;
3763         RAISE FND_API.G_EXC_ERROR;
3764       END IF;
3765       HZ_MATCH_RULE_42.call_api_dynamic(
3766         p_rule_id,
3767         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3768         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3769         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3770         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3771         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3772         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3773         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3774         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3775         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3776     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
3777     ELSIF p_rule_id=48 THEN 
3778       IF NOT HZ_MATCH_RULE_48.check_staged THEN
3779         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3780         FND_MSG_PUB.ADD;
3781         RAISE FND_API.G_EXC_ERROR;
3782       END IF;
3783       HZ_MATCH_RULE_48.call_api_dynamic(
3784         p_rule_id,
3785         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3786         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3787         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3788         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3789         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3790         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3791         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3792         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3793         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3794     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
3795     ELSIF p_rule_id=50 THEN 
3796       IF NOT HZ_MATCH_RULE_50.check_staged THEN
3797         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3798         FND_MSG_PUB.ADD;
3799         RAISE FND_API.G_EXC_ERROR;
3800       END IF;
3801       HZ_MATCH_RULE_50.call_api_dynamic(
3802         p_rule_id,
3803         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3804         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3805         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3806         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3807         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3808         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3809         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3810         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3811         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3812     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
3813     ELSIF p_rule_id=51 THEN 
3814       IF NOT HZ_MATCH_RULE_51.check_staged THEN
3815         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3816         FND_MSG_PUB.ADD;
3817         RAISE FND_API.G_EXC_ERROR;
3818       END IF;
3819       HZ_MATCH_RULE_51.call_api_dynamic(
3820         p_rule_id,
3821         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3822         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3823         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3824         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3825         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3826         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3827         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3828         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3829         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3830     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
3831     ELSIF p_rule_id=52 THEN 
3832       IF NOT HZ_MATCH_RULE_52.check_staged THEN
3833         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3834         FND_MSG_PUB.ADD;
3835         RAISE FND_API.G_EXC_ERROR;
3836       END IF;
3837       HZ_MATCH_RULE_52.call_api_dynamic(
3838         p_rule_id,
3839         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3840         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3841         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3842         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3843         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3844         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3845         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3846         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3847         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3848     -- Code for Match rule CREDIT MANAGEMENT SEARCH
3849     ELSIF p_rule_id=53 THEN 
3850       IF NOT HZ_MATCH_RULE_53.check_staged THEN
3851         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3852         FND_MSG_PUB.ADD;
3853         RAISE FND_API.G_EXC_ERROR;
3854       END IF;
3855       HZ_MATCH_RULE_53.call_api_dynamic(
3856         p_rule_id,
3857         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3858         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3859         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3860         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3861         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3862         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3863         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3864         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3865         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3866     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
3867     ELSIF p_rule_id=58 THEN 
3868       IF NOT HZ_MATCH_RULE_58.check_staged THEN
3869         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3870         FND_MSG_PUB.ADD;
3871         RAISE FND_API.G_EXC_ERROR;
3872       END IF;
3873       HZ_MATCH_RULE_58.call_api_dynamic(
3874         p_rule_id,
3875         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3876         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3877         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3878         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3879         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3880         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3881         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3882         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3883         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3884     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
3885     ELSIF p_rule_id=60 THEN 
3886       IF NOT HZ_MATCH_RULE_60.check_staged THEN
3887         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3888         FND_MSG_PUB.ADD;
3889         RAISE FND_API.G_EXC_ERROR;
3890       END IF;
3891       HZ_MATCH_RULE_60.call_api_dynamic(
3892         p_rule_id,
3893         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3894         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3895         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3896         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3897         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3898         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3899         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3900         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3901         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3902     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
3903     ELSIF p_rule_id=61 THEN 
3904       IF NOT HZ_MATCH_RULE_61.check_staged THEN
3905         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3906         FND_MSG_PUB.ADD;
3907         RAISE FND_API.G_EXC_ERROR;
3908       END IF;
3909       HZ_MATCH_RULE_61.call_api_dynamic(
3910         p_rule_id,
3911         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3912         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3913         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3914         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3915         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3916         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3917         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3918         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3919         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3920     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
3921     ELSIF p_rule_id=62 THEN 
3922       IF NOT HZ_MATCH_RULE_62.check_staged THEN
3923         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3924         FND_MSG_PUB.ADD;
3925         RAISE FND_API.G_EXC_ERROR;
3926       END IF;
3927       HZ_MATCH_RULE_62.call_api_dynamic(
3928         p_rule_id,
3929         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3930         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3931         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3932         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3933         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3934         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3935         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3936         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3937         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3938     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
3939     ELSIF p_rule_id=98 THEN 
3940       IF NOT HZ_MATCH_RULE_98.check_staged THEN
3941         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3942         FND_MSG_PUB.ADD;
3943         RAISE FND_API.G_EXC_ERROR;
3944       END IF;
3945       HZ_MATCH_RULE_98.call_api_dynamic(
3946         p_rule_id,
3947         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3948         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3949         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3950         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3951         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3952         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3953         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3954         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3955         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3956     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
3957     ELSIF p_rule_id=99 THEN 
3958       IF NOT HZ_MATCH_RULE_99.check_staged THEN
3959         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3960         FND_MSG_PUB.ADD;
3961         RAISE FND_API.G_EXC_ERROR;
3962       END IF;
3963       HZ_MATCH_RULE_99.call_api_dynamic(
3964         p_rule_id,
3965         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3966         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3967         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3968         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3969         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3970         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3971         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3972         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3973         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3974     END IF;
3975     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3976       hz_utility_v2pub.debug(p_message=>'call_api_dynamic(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
3977     END IF;
3978   --Standard call to get message count and if count is 1, get message info
3979   FND_MSG_PUB.Count_And_Get(
3980     p_encoded => FND_API.G_FALSE,
3981     p_count => x_msg_count,
3982     p_data  => x_msg_data);
3983   EXCEPTION
3984        WHEN FND_API.G_EXC_ERROR THEN
3985                x_return_status := FND_API.G_RET_STS_ERROR;
3986                FND_MSG_PUB.Count_And_Get(
3987                                p_encoded => FND_API.G_FALSE,
3988                                p_count => x_msg_count,
3989                                p_data  => x_msg_data);
3990        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3991                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3992                FND_MSG_PUB.Count_And_Get(
3993                                p_encoded => FND_API.G_FALSE,
3994                                p_count => x_msg_count,
3995                                p_data  => x_msg_data);
3996 
3997        WHEN OTHERS THEN
3998                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3999                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4000                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4001                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4002                FND_MSG_PUB.ADD;
4003 
4004                FND_MSG_PUB.Count_And_Get(
4005                                p_encoded => FND_API.G_FALSE,
4006                                p_count => x_msg_count,
4007                                p_data  => x_msg_data);
4008   END; 
4009  
4010  FUNCTION get_attrib_id(p_str VARCHAR2)  
4011    RETURN NUMBER IS  
4012    l_id NUMBER;  
4013    l_pl NUMBER;  
4014    l_token VARCHAR2(1);  
4015    BEGIN  
4016         l_token := '.';  
4017         l_pl := instrb(p_str, l_token);  
4018         select attribute_id into l_id  
4019         from hz_trans_attributes_b  
4020         where entity_name = substrb(p_str, 0, l_pl - 1)  
4021         and ATTRIBUTE_NAME = substrb(p_str, l_pl + 1);  
4022         RETURN l_id;  
4023    EXCEPTION WHEN NO_DATA_FOUND THEN  
4024              FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_NOATTRIB_ERROR' ); 
4025              FND_MESSAGE.SET_TOKEN('ENTITY_ATTRIBUTE' ,p_str); 
4026              FND_MSG_PUB.ADD; 
4027              RAISE FND_API.G_EXC_ERROR; 
4028    END get_attrib_id;  
4029   PROCEDURE call_api_dynamic_names (
4030       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4031       p_rule_id               IN      NUMBER,
4032       p_attrib_name1            IN      VARCHAR2,
4033       p_attrib_name2            IN      VARCHAR2,
4034       p_attrib_name3            IN      VARCHAR2,
4035       p_attrib_name4            IN      VARCHAR2,
4036       p_attrib_name5            IN      VARCHAR2,
4037       p_attrib_name6            IN      VARCHAR2,
4038       p_attrib_name7            IN      VARCHAR2,
4039       p_attrib_name8            IN      VARCHAR2,
4040       p_attrib_name9            IN      VARCHAR2,
4041       p_attrib_name10           IN      VARCHAR2,
4042       p_attrib_name11           IN      VARCHAR2,
4043       p_attrib_name12           IN      VARCHAR2,
4044       p_attrib_name13           IN      VARCHAR2,
4045       p_attrib_name14           IN      VARCHAR2,
4046       p_attrib_name15           IN      VARCHAR2,
4047       p_attrib_name16           IN      VARCHAR2,
4048       p_attrib_name17           IN      VARCHAR2,
4049       p_attrib_name18           IN      VARCHAR2,
4050       p_attrib_name19           IN      VARCHAR2,
4051       p_attrib_name20           IN      VARCHAR2,
4052       p_attrib_val1           IN      VARCHAR2,
4053       p_attrib_val2           IN      VARCHAR2,
4054       p_attrib_val3           IN      VARCHAR2,
4055       p_attrib_val4           IN      VARCHAR2,
4056       p_attrib_val5           IN      VARCHAR2,
4057       p_attrib_val6           IN      VARCHAR2,
4058       p_attrib_val7           IN      VARCHAR2,
4059       p_attrib_val8           IN      VARCHAR2,
4060       p_attrib_val9           IN      VARCHAR2,
4061       p_attrib_val10          IN      VARCHAR2,
4062       p_attrib_val11          IN      VARCHAR2,
4063       p_attrib_val12          IN      VARCHAR2,
4064       p_attrib_val13          IN      VARCHAR2,
4065       p_attrib_val14          IN      VARCHAR2,
4066       p_attrib_val15          IN      VARCHAR2,
4067       p_attrib_val16          IN      VARCHAR2,
4068       p_attrib_val17          IN      VARCHAR2,
4069       p_attrib_val18          IN      VARCHAR2,
4070       p_attrib_val19          IN      VARCHAR2,
4071       p_attrib_val20          IN      VARCHAR2,
4072       p_restrict_sql          IN      VARCHAR2,
4073       p_api_name              IN      VARCHAR2,
4074       p_match_type            IN      VARCHAR2,
4075       p_party_id              IN      NUMBER,
4076       p_search_merged         IN      VARCHAR2,
4077       x_search_ctx_id         OUT     NUMBER,
4078       x_num_matches           OUT     NUMBER,
4079       x_return_status         OUT     VARCHAR2,
4080       x_msg_count             OUT     NUMBER,
4081       x_msg_data              OUT     VARCHAR2
4082  ) IS
4083      l_attrib_id1   NUMBER; 
4084        l_attrib_id2   NUMBER; 
4085        l_attrib_id3   NUMBER; 
4086        l_attrib_id4   NUMBER; 
4087        l_attrib_id5   NUMBER; 
4088        l_attrib_id6   NUMBER; 
4089        l_attrib_id7   NUMBER; 
4090        l_attrib_id8   NUMBER; 
4091        l_attrib_id9   NUMBER; 
4092        l_attrib_id10  NUMBER; 
4093        l_attrib_id11  NUMBER; 
4094        l_attrib_id12  NUMBER; 
4095        l_attrib_id13  NUMBER; 
4096        l_attrib_id14  NUMBER; 
4097        l_attrib_id15  NUMBER; 
4098        l_attrib_id16  NUMBER; 
4099        l_attrib_id17  NUMBER; 
4100        l_attrib_id18  NUMBER; 
4101        l_attrib_id19  NUMBER; 
4102        l_attrib_id20  NUMBER; 
4103   BEGIN
4104     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4105       hz_utility_v2pub.debug(p_message=>'call_api_dynamic_names(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4106     END IF;
4107     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4108       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id ,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4109     END IF;
4110  
4111       IF (p_attrib_name1 IS NOT NULL) THEN  
4112            l_attrib_id1 := get_attrib_id(p_attrib_name1); 
4113       END IF; 
4114       IF (p_attrib_name2 IS NOT NULL) THEN 
4115            l_attrib_id2 := get_attrib_id(p_attrib_name2); 
4116       END IF; 
4117       IF (p_attrib_name3 IS NOT NULL) THEN 
4118            l_attrib_id3 := get_attrib_id(p_attrib_name3); 
4119       END IF; 
4120       IF (p_attrib_name4 IS NOT NULL) THEN 
4121            l_attrib_id4 := get_attrib_id(p_attrib_name4); 
4122       END IF; 
4123       IF (p_attrib_name5 IS NOT NULL) THEN 
4124            l_attrib_id5 := get_attrib_id(p_attrib_name5); 
4125       END IF; 
4126       IF (p_attrib_name6 IS NOT NULL) THEN 
4127            l_attrib_id6 := get_attrib_id(p_attrib_name6); 
4128       END IF; 
4129       IF (p_attrib_name7 IS NOT NULL) THEN 
4130            l_attrib_id7 := get_attrib_id(p_attrib_name7); 
4131       END IF; 
4132       IF (p_attrib_name8 IS NOT NULL) THEN 
4133            l_attrib_id8 := get_attrib_id(p_attrib_name8); 
4134       END IF; 
4135       IF (p_attrib_name9 IS NOT NULL) THEN 
4136            l_attrib_id9 := get_attrib_id(p_attrib_name9); 
4137       END IF; 
4138       IF (p_attrib_name10 IS NOT NULL) THEN 
4139            l_attrib_id10 := get_attrib_id(p_attrib_name10); 
4140       END IF; 
4141       IF (p_attrib_name11 IS NOT NULL) THEN 
4142            l_attrib_id11 := get_attrib_id(p_attrib_name11); 
4143       END IF; 
4144       IF (p_attrib_name12 IS NOT NULL) THEN 
4145            l_attrib_id12 := get_attrib_id(p_attrib_name12); 
4146       END IF; 
4147       IF (p_attrib_name13 IS NOT NULL) THEN 
4148            l_attrib_id13 := get_attrib_id(p_attrib_name13); 
4149       END IF; 
4150       IF (p_attrib_name14 IS NOT NULL) THEN 
4151            l_attrib_id14 := get_attrib_id(p_attrib_name14); 
4152       END IF; 
4153       IF (p_attrib_name15 IS NOT NULL) THEN 
4154            l_attrib_id15 := get_attrib_id(p_attrib_name15); 
4155       END IF; 
4156       IF (p_attrib_name16 IS NOT NULL) THEN 
4157            l_attrib_id16 := get_attrib_id(p_attrib_name16); 
4158       END IF; 
4159       IF (p_attrib_name17 IS NOT NULL) THEN 
4160            l_attrib_id17 := get_attrib_id(p_attrib_name17); 
4161       END IF; 
4162       IF (p_attrib_name18 IS NOT NULL) THEN 
4163            l_attrib_id18 := get_attrib_id(p_attrib_name18);  
4164       END IF; 
4165       IF (p_attrib_name19 IS NOT NULL) THEN 
4166            l_attrib_id19 := get_attrib_id(p_attrib_name19); 
4167       END IF; 
4168       IF (p_attrib_name20 IS NOT NULL) THEN 
4169            l_attrib_id20 := get_attrib_id(p_attrib_name20); 
4170       END IF; 
4171     hz_party_search.call_api_dynamic( 
4172             p_init_msg_list, p_rule_id, 
4173             l_attrib_id1,l_attrib_id2,l_attrib_id3,l_attrib_id4,l_attrib_id5, 
4174             l_attrib_id6,l_attrib_id7,l_attrib_id8,l_attrib_id9,l_attrib_id10, 
4175             l_attrib_id11,l_attrib_id12,l_attrib_id13,l_attrib_id14,l_attrib_id15, 
4176             l_attrib_id16,l_attrib_id17,l_attrib_id18,l_attrib_id19,l_attrib_id20, 
4177             p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5, 
4178             p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10, 
4179             p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15, 
4180             p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20, 
4181             p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged, 
4182             x_search_ctx_id,x_num_matches, x_return_status, x_msg_count, x_msg_data);  
4183     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4184       hz_utility_v2pub.debug(p_message=>'call_api_dynamic_names(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4185     END IF;
4186   --Standard call to get message count and if count is 1, get message info
4187   FND_MSG_PUB.Count_And_Get(
4188     p_encoded => FND_API.G_FALSE,
4189     p_count => x_msg_count,
4190     p_data  => x_msg_data);
4191   EXCEPTION
4192        WHEN FND_API.G_EXC_ERROR THEN
4193                x_return_status := FND_API.G_RET_STS_ERROR;
4194                FND_MSG_PUB.Count_And_Get(
4195                                p_encoded => FND_API.G_FALSE,
4196                                p_count => x_msg_count,
4197                                p_data  => x_msg_data);
4198        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4199                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4200                FND_MSG_PUB.Count_And_Get(
4201                                p_encoded => FND_API.G_FALSE,
4202                                p_count => x_msg_count,
4203                                p_data  => x_msg_data);
4204 
4205        WHEN OTHERS THEN
4206                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4207                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4208                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4209                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4210                FND_MSG_PUB.ADD;
4211 
4212                FND_MSG_PUB.Count_And_Get(
4213                                p_encoded => FND_API.G_FALSE,
4214                                p_count => x_msg_count,
4215                                p_data  => x_msg_data);
4216   END call_api_dynamic_names; 
4217 PROCEDURE get_matching_party_sites (
4218         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4219         p_rule_id               IN      NUMBER,
4220         p_party_id              IN      NUMBER,
4221         p_party_site_list	     IN	     PARTY_SITE_LIST,
4222         p_contact_point_list    IN	     CONTACT_POINT_LIST,
4223         x_search_ctx_id         OUT     NUMBER,
4224         x_return_status         OUT     VARCHAR2,
4225         x_msg_count             OUT     NUMBER,
4226         x_msg_data              OUT     VARCHAR2
4227 ) IS
4228   l_num_matches NUMBER;
4229   BEGIN
4230     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4231       hz_utility_v2pub.debug(p_message=>'get_matching_party_sites-1(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4232     END IF;
4233     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4234       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4235     END IF;
4236      get_matching_party_sites(p_init_msg_list,p_rule_id,p_party_id,
4237             p_party_site_list,p_contact_point_list,
4238             NULL,NULL,x_search_ctx_id,
4239             l_num_matches,x_return_status,x_msg_count,x_msg_data);
4240     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4241       hz_utility_v2pub.debug(p_message=>'get_matching_party_sites-1(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4242     END IF;
4243   END;
4244 PROCEDURE get_matching_party_sites (
4245         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4246         p_rule_id               IN      NUMBER,
4247         p_party_id              IN      NUMBER,
4248         p_party_site_list       IN      PARTY_SITE_LIST,
4249         p_contact_point_list    IN      CONTACT_POINT_LIST,
4250         p_restrict_sql          IN      VARCHAR2,
4251         p_match_type            IN      VARCHAR2,
4252         x_search_ctx_id         OUT     NUMBER,
4253         x_num_matches           OUT     NUMBER,
4254         x_return_status         OUT     VARCHAR2,
4255         x_msg_count             OUT     NUMBER,
4256         x_msg_data              OUT     VARCHAR2
4257 ) IS
4258   CURSOR c_match_rule IS 
4259     SELECT COMPILATION_FLAG 
4260     FROM HZ_MATCH_RULES_VL 
4261     WHERE MATCH_RULE_ID = p_rule_id;
4262   l_cmp_flag VARCHAR2(1);
4263   BEGIN
4264     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4265       hz_utility_v2pub.debug(p_message=>'get_matching_party_sites(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4266     END IF;
4267     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4268       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4269     END IF;
4270 
4271     -- Initialize return status and message stack
4272     x_return_status := FND_API.G_RET_STS_SUCCESS;
4273     IF FND_API.to_Boolean(p_init_msg_list) THEN
4274       FND_MSG_PUB.initialize;
4275     END IF;
4276 
4277     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
4278       -- No MATCH RULE FOUND
4279       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
4280       FND_MSG_PUB.ADD;
4281       RAISE FND_API.G_EXC_ERROR;
4282     END IF;
4283     OPEN c_match_rule;
4284     FETCH c_match_rule INTO l_cmp_flag;
4285     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
4286       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
4287       FND_MSG_PUB.ADD;
4288       RAISE FND_API.G_EXC_ERROR;
4289     END IF;
4290     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
4291     IF p_rule_id=2 THEN 
4292       IF NOT HZ_MATCH_RULE_2.check_staged THEN
4293         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4294         FND_MSG_PUB.ADD;
4295         RAISE FND_API.G_EXC_ERROR;
4296       END IF;
4297       HZ_MATCH_RULE_2.get_matching_party_sites(
4298         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4299         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4300     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
4301     ELSIF p_rule_id=3 THEN 
4302       IF NOT HZ_MATCH_RULE_3.check_staged THEN
4303         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4304         FND_MSG_PUB.ADD;
4305         RAISE FND_API.G_EXC_ERROR;
4306       END IF;
4307       HZ_MATCH_RULE_3.get_matching_party_sites(
4308         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4309         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4310     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
4311     ELSIF p_rule_id=4 THEN 
4312       IF NOT HZ_MATCH_RULE_4.check_staged THEN
4313         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4314         FND_MSG_PUB.ADD;
4315         RAISE FND_API.G_EXC_ERROR;
4316       END IF;
4317       HZ_MATCH_RULE_4.get_matching_party_sites(
4318         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4319         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4320     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
4321     ELSIF p_rule_id=5 THEN 
4322       IF NOT HZ_MATCH_RULE_5.check_staged THEN
4323         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4324         FND_MSG_PUB.ADD;
4325         RAISE FND_API.G_EXC_ERROR;
4326       END IF;
4327       HZ_MATCH_RULE_5.get_matching_party_sites(
4328         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4329         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4330     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
4331     ELSIF p_rule_id=6 THEN 
4332       IF NOT HZ_MATCH_RULE_6.check_staged THEN
4333         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4334         FND_MSG_PUB.ADD;
4335         RAISE FND_API.G_EXC_ERROR;
4336       END IF;
4337       HZ_MATCH_RULE_6.get_matching_party_sites(
4338         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4339         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4340     -- Code for Match rule SAMPLE: SIMILAR_PERSON
4341     ELSIF p_rule_id=7 THEN 
4342       IF NOT HZ_MATCH_RULE_7.check_staged THEN
4343         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4344         FND_MSG_PUB.ADD;
4345         RAISE FND_API.G_EXC_ERROR;
4346       END IF;
4347       HZ_MATCH_RULE_7.get_matching_party_sites(
4348         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4349         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4350     -- Code for Match rule SAMPLE: SEARCH
4351     ELSIF p_rule_id=8 THEN 
4352       IF NOT HZ_MATCH_RULE_8.check_staged THEN
4353         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4354         FND_MSG_PUB.ADD;
4355         RAISE FND_API.G_EXC_ERROR;
4356       END IF;
4357       HZ_MATCH_RULE_8.get_matching_party_sites(
4358         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4359         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4360     -- Code for Match rule RM SEARCH RULE
4361     ELSIF p_rule_id=32 THEN 
4362       IF NOT HZ_MATCH_RULE_32.check_staged THEN
4363         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4364         FND_MSG_PUB.ADD;
4365         RAISE FND_API.G_EXC_ERROR;
4366       END IF;
4367       HZ_MATCH_RULE_32.get_matching_party_sites(
4368         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4369         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4370     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
4371     ELSIF p_rule_id=33 THEN 
4372       IF NOT HZ_MATCH_RULE_33.check_staged THEN
4373         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4374         FND_MSG_PUB.ADD;
4375         RAISE FND_API.G_EXC_ERROR;
4376       END IF;
4377       HZ_MATCH_RULE_33.get_matching_party_sites(
4378         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4379         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4380     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
4381     ELSIF p_rule_id=34 THEN 
4382       IF NOT HZ_MATCH_RULE_34.check_staged THEN
4383         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4384         FND_MSG_PUB.ADD;
4385         RAISE FND_API.G_EXC_ERROR;
4386       END IF;
4387       HZ_MATCH_RULE_34.get_matching_party_sites(
4388         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4389         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4390     -- Code for Match rule DL SMART SEARCH
4391     ELSIF p_rule_id=35 THEN 
4392       IF NOT HZ_MATCH_RULE_35.check_staged THEN
4393         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4394         FND_MSG_PUB.ADD;
4395         RAISE FND_API.G_EXC_ERROR;
4396       END IF;
4397       HZ_MATCH_RULE_35.get_matching_party_sites(
4398         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4399         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4400     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
4401     ELSIF p_rule_id=36 THEN 
4402       IF NOT HZ_MATCH_RULE_36.check_staged THEN
4403         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4404         FND_MSG_PUB.ADD;
4405         RAISE FND_API.G_EXC_ERROR;
4406       END IF;
4407       HZ_MATCH_RULE_36.get_matching_party_sites(
4408         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4409         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4410     -- Code for Match rule DL ADDRESS DEFAULT
4411     ELSIF p_rule_id=37 THEN 
4412       IF NOT HZ_MATCH_RULE_37.check_staged THEN
4413         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4414         FND_MSG_PUB.ADD;
4415         RAISE FND_API.G_EXC_ERROR;
4416       END IF;
4417       HZ_MATCH_RULE_37.get_matching_party_sites(
4418         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4419         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4420     -- Code for Match rule DL RELATIONSHIP DEFAULT
4421     ELSIF p_rule_id=38 THEN 
4422       IF NOT HZ_MATCH_RULE_38.check_staged THEN
4423         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4424         FND_MSG_PUB.ADD;
4425         RAISE FND_API.G_EXC_ERROR;
4426       END IF;
4427       HZ_MATCH_RULE_38.get_matching_party_sites(
4428         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4429         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4430     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
4431     ELSIF p_rule_id=39 THEN 
4432       IF NOT HZ_MATCH_RULE_39.check_staged THEN
4433         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4434         FND_MSG_PUB.ADD;
4435         RAISE FND_API.G_EXC_ERROR;
4436       END IF;
4437       HZ_MATCH_RULE_39.get_matching_party_sites(
4438         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4439         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4440     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
4441     ELSIF p_rule_id=40 THEN 
4442       IF NOT HZ_MATCH_RULE_40.check_staged THEN
4443         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4444         FND_MSG_PUB.ADD;
4445         RAISE FND_API.G_EXC_ERROR;
4446       END IF;
4447       HZ_MATCH_RULE_40.get_matching_party_sites(
4448         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4449         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4450     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
4451     ELSIF p_rule_id=41 THEN 
4452       IF NOT HZ_MATCH_RULE_41.check_staged THEN
4453         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4454         FND_MSG_PUB.ADD;
4455         RAISE FND_API.G_EXC_ERROR;
4456       END IF;
4457       HZ_MATCH_RULE_41.get_matching_party_sites(
4458         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4459         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4460     -- Code for Match rule SAMPLE: SEARCH EXACT
4461     ELSIF p_rule_id=42 THEN 
4462       IF NOT HZ_MATCH_RULE_42.check_staged THEN
4463         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4464         FND_MSG_PUB.ADD;
4465         RAISE FND_API.G_EXC_ERROR;
4466       END IF;
4467       HZ_MATCH_RULE_42.get_matching_party_sites(
4468         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4469         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4470     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
4471     ELSIF p_rule_id=48 THEN 
4472       IF NOT HZ_MATCH_RULE_48.check_staged THEN
4473         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4474         FND_MSG_PUB.ADD;
4475         RAISE FND_API.G_EXC_ERROR;
4476       END IF;
4477       HZ_MATCH_RULE_48.get_matching_party_sites(
4478         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4479         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4480     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
4481     ELSIF p_rule_id=50 THEN 
4482       IF NOT HZ_MATCH_RULE_50.check_staged THEN
4483         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4484         FND_MSG_PUB.ADD;
4485         RAISE FND_API.G_EXC_ERROR;
4486       END IF;
4487       HZ_MATCH_RULE_50.get_matching_party_sites(
4488         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4489         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4490     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
4491     ELSIF p_rule_id=51 THEN 
4492       IF NOT HZ_MATCH_RULE_51.check_staged THEN
4493         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4494         FND_MSG_PUB.ADD;
4495         RAISE FND_API.G_EXC_ERROR;
4496       END IF;
4497       HZ_MATCH_RULE_51.get_matching_party_sites(
4498         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4499         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4500     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
4501     ELSIF p_rule_id=52 THEN 
4502       IF NOT HZ_MATCH_RULE_52.check_staged THEN
4503         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4504         FND_MSG_PUB.ADD;
4505         RAISE FND_API.G_EXC_ERROR;
4506       END IF;
4507       HZ_MATCH_RULE_52.get_matching_party_sites(
4508         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4509         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4510     -- Code for Match rule CREDIT MANAGEMENT SEARCH
4511     ELSIF p_rule_id=53 THEN 
4512       IF NOT HZ_MATCH_RULE_53.check_staged THEN
4513         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4514         FND_MSG_PUB.ADD;
4515         RAISE FND_API.G_EXC_ERROR;
4516       END IF;
4517       HZ_MATCH_RULE_53.get_matching_party_sites(
4518         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4519         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4520     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
4521     ELSIF p_rule_id=58 THEN 
4522       IF NOT HZ_MATCH_RULE_58.check_staged THEN
4523         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4524         FND_MSG_PUB.ADD;
4525         RAISE FND_API.G_EXC_ERROR;
4526       END IF;
4527       HZ_MATCH_RULE_58.get_matching_party_sites(
4528         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4529         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4530     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
4531     ELSIF p_rule_id=60 THEN 
4532       IF NOT HZ_MATCH_RULE_60.check_staged THEN
4533         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4534         FND_MSG_PUB.ADD;
4535         RAISE FND_API.G_EXC_ERROR;
4536       END IF;
4537       HZ_MATCH_RULE_60.get_matching_party_sites(
4538         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4539         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4540     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
4541     ELSIF p_rule_id=61 THEN 
4542       IF NOT HZ_MATCH_RULE_61.check_staged THEN
4543         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4544         FND_MSG_PUB.ADD;
4545         RAISE FND_API.G_EXC_ERROR;
4546       END IF;
4547       HZ_MATCH_RULE_61.get_matching_party_sites(
4548         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4549         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4550     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
4551     ELSIF p_rule_id=62 THEN 
4552       IF NOT HZ_MATCH_RULE_62.check_staged THEN
4553         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4554         FND_MSG_PUB.ADD;
4555         RAISE FND_API.G_EXC_ERROR;
4556       END IF;
4557       HZ_MATCH_RULE_62.get_matching_party_sites(
4558         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4559         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4560     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
4561     ELSIF p_rule_id=98 THEN 
4562       IF NOT HZ_MATCH_RULE_98.check_staged THEN
4563         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4564         FND_MSG_PUB.ADD;
4565         RAISE FND_API.G_EXC_ERROR;
4566       END IF;
4567       HZ_MATCH_RULE_98.get_matching_party_sites(
4568         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4569         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4570     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
4571     ELSIF p_rule_id=99 THEN 
4572       IF NOT HZ_MATCH_RULE_99.check_staged THEN
4573         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4574         FND_MSG_PUB.ADD;
4575         RAISE FND_API.G_EXC_ERROR;
4576       END IF;
4577       HZ_MATCH_RULE_99.get_matching_party_sites(
4578         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4579         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4580     END IF;
4581     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4582       hz_utility_v2pub.debug(p_message=>'get_matching_party_sites(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4583     END IF;
4584   --Standard call to get message count and if count is 1, get message info
4585   FND_MSG_PUB.Count_And_Get(
4586     p_encoded => FND_API.G_FALSE,
4587     p_count => x_msg_count,
4588     p_data  => x_msg_data);
4589   EXCEPTION
4590        WHEN FND_API.G_EXC_ERROR THEN
4591                x_return_status := FND_API.G_RET_STS_ERROR;
4592                FND_MSG_PUB.Count_And_Get(
4593                                p_encoded => FND_API.G_FALSE,
4594                                p_count => x_msg_count,
4595                                p_data  => x_msg_data);
4596        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4597                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4598                FND_MSG_PUB.Count_And_Get(
4599                                p_encoded => FND_API.G_FALSE,
4600                                p_count => x_msg_count,
4601                                p_data  => x_msg_data);
4602 
4603        WHEN OTHERS THEN
4604                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4605                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4606                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4607                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4608                FND_MSG_PUB.ADD;
4609 
4610                FND_MSG_PUB.Count_And_Get(
4611                                p_encoded => FND_API.G_FALSE,
4612                                p_count => x_msg_count,
4613                                p_data  => x_msg_data);
4614   END;
4615 
4616 PROCEDURE get_matching_contacts (
4617         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4618         p_rule_id               IN      NUMBER,
4619         p_party_id              IN      NUMBER,
4620         p_contact_list          IN      CONTACT_LIST,
4621         p_contact_point_list    IN      CONTACT_POINT_LIST,
4622         x_search_ctx_id         OUT     NUMBER,
4623         x_return_status         OUT     VARCHAR2,
4624         x_msg_count             OUT     NUMBER,
4625         x_msg_data              OUT     VARCHAR2
4626 ) IS
4627   l_num_matches NUMBER;
4628   BEGIN
4629     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4630       hz_utility_v2pub.debug(p_message=>'get_matching_contacts-1(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4631     END IF;
4632     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4633       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4634     END IF;
4635      get_matching_contacts(p_init_msg_list,p_rule_id,p_party_id,
4636             p_contact_list,p_contact_point_list,
4637             NULL,NULL,x_search_ctx_id,
4638             l_num_matches,x_return_status,x_msg_count,x_msg_data);
4639     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4640       hz_utility_v2pub.debug(p_message=>'get_matching_contacts-1(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4641     END IF;
4642   END;
4643 PROCEDURE get_matching_contacts (
4644         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4645         p_rule_id               IN      NUMBER,
4646         p_party_id              IN      NUMBER,
4647         p_contact_list	     IN	     CONTACT_LIST,
4648         p_contact_point_list    IN	     CONTACT_POINT_LIST,
4649         p_restrict_sql          IN      VARCHAR2,
4650         p_match_type            IN      VARCHAR2,
4651         x_search_ctx_id         OUT     NUMBER,
4652         x_num_matches           OUT     NUMBER,
4653         x_return_status         OUT     VARCHAR2,
4654         x_msg_count             OUT     NUMBER,
4655         x_msg_data              OUT     VARCHAR2
4656 ) IS
4657   CURSOR c_match_rule IS 
4658     SELECT COMPILATION_FLAG 
4659     FROM HZ_MATCH_RULES_VL 
4660     WHERE MATCH_RULE_ID = p_rule_id;
4661   l_cmp_flag VARCHAR2(1);
4662   BEGIN
4663     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4664       hz_utility_v2pub.debug(p_message=>'get_matching_contacts(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
4665     END IF;
4666     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4667       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
4668     END IF;
4669 
4670     -- Initialize return status and message stack
4671     x_return_status := FND_API.G_RET_STS_SUCCESS;
4672     IF FND_API.to_Boolean(p_init_msg_list) THEN
4673       FND_MSG_PUB.initialize;
4674     END IF;
4675 
4676     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
4677       -- No MATCH RULE FOUND
4678       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
4679       FND_MSG_PUB.ADD;
4680       RAISE FND_API.G_EXC_ERROR;
4681     END IF;
4682     OPEN c_match_rule;
4683     FETCH c_match_rule INTO l_cmp_flag;
4684     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
4685       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
4686       FND_MSG_PUB.ADD;
4687       RAISE FND_API.G_EXC_ERROR;
4688     END IF;
4689     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
4690     IF p_rule_id=2 THEN 
4691       IF NOT HZ_MATCH_RULE_2.check_staged THEN
4692         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4693         FND_MSG_PUB.ADD;
4694         RAISE FND_API.G_EXC_ERROR;
4695       END IF;
4696       HZ_MATCH_RULE_2.get_matching_contacts(
4697         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4698         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4699     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
4700     ELSIF p_rule_id=3 THEN 
4701       IF NOT HZ_MATCH_RULE_3.check_staged THEN
4702         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4703         FND_MSG_PUB.ADD;
4704         RAISE FND_API.G_EXC_ERROR;
4705       END IF;
4706       HZ_MATCH_RULE_3.get_matching_contacts(
4707         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4708         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4709     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
4710     ELSIF p_rule_id=4 THEN 
4711       IF NOT HZ_MATCH_RULE_4.check_staged THEN
4712         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4713         FND_MSG_PUB.ADD;
4714         RAISE FND_API.G_EXC_ERROR;
4715       END IF;
4716       HZ_MATCH_RULE_4.get_matching_contacts(
4717         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4718         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4719     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
4720     ELSIF p_rule_id=5 THEN 
4721       IF NOT HZ_MATCH_RULE_5.check_staged THEN
4722         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4723         FND_MSG_PUB.ADD;
4724         RAISE FND_API.G_EXC_ERROR;
4725       END IF;
4726       HZ_MATCH_RULE_5.get_matching_contacts(
4727         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4728         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4729     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
4730     ELSIF p_rule_id=6 THEN 
4731       IF NOT HZ_MATCH_RULE_6.check_staged THEN
4732         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4733         FND_MSG_PUB.ADD;
4734         RAISE FND_API.G_EXC_ERROR;
4735       END IF;
4736       HZ_MATCH_RULE_6.get_matching_contacts(
4737         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4738         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4739     -- Code for Match rule SAMPLE: SIMILAR_PERSON
4740     ELSIF p_rule_id=7 THEN 
4741       IF NOT HZ_MATCH_RULE_7.check_staged THEN
4742         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4743         FND_MSG_PUB.ADD;
4744         RAISE FND_API.G_EXC_ERROR;
4745       END IF;
4746       HZ_MATCH_RULE_7.get_matching_contacts(
4747         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4748         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4749     -- Code for Match rule SAMPLE: SEARCH
4750     ELSIF p_rule_id=8 THEN 
4751       IF NOT HZ_MATCH_RULE_8.check_staged THEN
4752         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4753         FND_MSG_PUB.ADD;
4754         RAISE FND_API.G_EXC_ERROR;
4755       END IF;
4756       HZ_MATCH_RULE_8.get_matching_contacts(
4757         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4758         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4759     -- Code for Match rule RM SEARCH RULE
4760     ELSIF p_rule_id=32 THEN 
4761       IF NOT HZ_MATCH_RULE_32.check_staged THEN
4762         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4763         FND_MSG_PUB.ADD;
4764         RAISE FND_API.G_EXC_ERROR;
4765       END IF;
4766       HZ_MATCH_RULE_32.get_matching_contacts(
4767         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4768         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4769     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
4770     ELSIF p_rule_id=33 THEN 
4771       IF NOT HZ_MATCH_RULE_33.check_staged THEN
4772         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4773         FND_MSG_PUB.ADD;
4774         RAISE FND_API.G_EXC_ERROR;
4775       END IF;
4776       HZ_MATCH_RULE_33.get_matching_contacts(
4777         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4778         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4779     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
4780     ELSIF p_rule_id=34 THEN 
4781       IF NOT HZ_MATCH_RULE_34.check_staged THEN
4782         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4783         FND_MSG_PUB.ADD;
4784         RAISE FND_API.G_EXC_ERROR;
4785       END IF;
4786       HZ_MATCH_RULE_34.get_matching_contacts(
4787         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4788         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4789     -- Code for Match rule DL SMART SEARCH
4790     ELSIF p_rule_id=35 THEN 
4791       IF NOT HZ_MATCH_RULE_35.check_staged THEN
4792         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4793         FND_MSG_PUB.ADD;
4794         RAISE FND_API.G_EXC_ERROR;
4795       END IF;
4796       HZ_MATCH_RULE_35.get_matching_contacts(
4797         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4798         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4799     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
4800     ELSIF p_rule_id=36 THEN 
4801       IF NOT HZ_MATCH_RULE_36.check_staged THEN
4802         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4803         FND_MSG_PUB.ADD;
4804         RAISE FND_API.G_EXC_ERROR;
4805       END IF;
4806       HZ_MATCH_RULE_36.get_matching_contacts(
4807         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4808         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4809     -- Code for Match rule DL ADDRESS DEFAULT
4810     ELSIF p_rule_id=37 THEN 
4811       IF NOT HZ_MATCH_RULE_37.check_staged THEN
4812         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4813         FND_MSG_PUB.ADD;
4814         RAISE FND_API.G_EXC_ERROR;
4815       END IF;
4816       HZ_MATCH_RULE_37.get_matching_contacts(
4817         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4818         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4819     -- Code for Match rule DL RELATIONSHIP DEFAULT
4820     ELSIF p_rule_id=38 THEN 
4821       IF NOT HZ_MATCH_RULE_38.check_staged THEN
4822         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4823         FND_MSG_PUB.ADD;
4824         RAISE FND_API.G_EXC_ERROR;
4825       END IF;
4826       HZ_MATCH_RULE_38.get_matching_contacts(
4827         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4828         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4829     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
4830     ELSIF p_rule_id=39 THEN 
4831       IF NOT HZ_MATCH_RULE_39.check_staged THEN
4832         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4833         FND_MSG_PUB.ADD;
4834         RAISE FND_API.G_EXC_ERROR;
4835       END IF;
4836       HZ_MATCH_RULE_39.get_matching_contacts(
4837         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4838         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4839     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
4840     ELSIF p_rule_id=40 THEN 
4841       IF NOT HZ_MATCH_RULE_40.check_staged THEN
4842         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4843         FND_MSG_PUB.ADD;
4844         RAISE FND_API.G_EXC_ERROR;
4845       END IF;
4846       HZ_MATCH_RULE_40.get_matching_contacts(
4847         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4848         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4849     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
4850     ELSIF p_rule_id=41 THEN 
4851       IF NOT HZ_MATCH_RULE_41.check_staged THEN
4852         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4853         FND_MSG_PUB.ADD;
4854         RAISE FND_API.G_EXC_ERROR;
4855       END IF;
4856       HZ_MATCH_RULE_41.get_matching_contacts(
4857         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4858         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4859     -- Code for Match rule SAMPLE: SEARCH EXACT
4860     ELSIF p_rule_id=42 THEN 
4861       IF NOT HZ_MATCH_RULE_42.check_staged THEN
4862         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4863         FND_MSG_PUB.ADD;
4864         RAISE FND_API.G_EXC_ERROR;
4865       END IF;
4866       HZ_MATCH_RULE_42.get_matching_contacts(
4867         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4868         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4869     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
4870     ELSIF p_rule_id=48 THEN 
4871       IF NOT HZ_MATCH_RULE_48.check_staged THEN
4872         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4873         FND_MSG_PUB.ADD;
4874         RAISE FND_API.G_EXC_ERROR;
4875       END IF;
4876       HZ_MATCH_RULE_48.get_matching_contacts(
4877         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4878         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4879     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
4880     ELSIF p_rule_id=50 THEN 
4881       IF NOT HZ_MATCH_RULE_50.check_staged THEN
4882         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4883         FND_MSG_PUB.ADD;
4884         RAISE FND_API.G_EXC_ERROR;
4885       END IF;
4886       HZ_MATCH_RULE_50.get_matching_contacts(
4887         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4888         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4889     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
4890     ELSIF p_rule_id=51 THEN 
4891       IF NOT HZ_MATCH_RULE_51.check_staged THEN
4892         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4893         FND_MSG_PUB.ADD;
4894         RAISE FND_API.G_EXC_ERROR;
4895       END IF;
4896       HZ_MATCH_RULE_51.get_matching_contacts(
4897         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4898         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4899     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
4900     ELSIF p_rule_id=52 THEN 
4901       IF NOT HZ_MATCH_RULE_52.check_staged THEN
4902         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4903         FND_MSG_PUB.ADD;
4904         RAISE FND_API.G_EXC_ERROR;
4905       END IF;
4906       HZ_MATCH_RULE_52.get_matching_contacts(
4907         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4908         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4909     -- Code for Match rule CREDIT MANAGEMENT SEARCH
4910     ELSIF p_rule_id=53 THEN 
4911       IF NOT HZ_MATCH_RULE_53.check_staged THEN
4912         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4913         FND_MSG_PUB.ADD;
4914         RAISE FND_API.G_EXC_ERROR;
4915       END IF;
4916       HZ_MATCH_RULE_53.get_matching_contacts(
4917         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4918         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4919     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
4920     ELSIF p_rule_id=58 THEN 
4921       IF NOT HZ_MATCH_RULE_58.check_staged THEN
4922         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4923         FND_MSG_PUB.ADD;
4924         RAISE FND_API.G_EXC_ERROR;
4925       END IF;
4926       HZ_MATCH_RULE_58.get_matching_contacts(
4927         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4928         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4929     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
4930     ELSIF p_rule_id=60 THEN 
4931       IF NOT HZ_MATCH_RULE_60.check_staged THEN
4932         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4933         FND_MSG_PUB.ADD;
4934         RAISE FND_API.G_EXC_ERROR;
4935       END IF;
4936       HZ_MATCH_RULE_60.get_matching_contacts(
4937         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4938         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4939     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
4940     ELSIF p_rule_id=61 THEN 
4941       IF NOT HZ_MATCH_RULE_61.check_staged THEN
4942         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4943         FND_MSG_PUB.ADD;
4944         RAISE FND_API.G_EXC_ERROR;
4945       END IF;
4946       HZ_MATCH_RULE_61.get_matching_contacts(
4947         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4948         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4949     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
4950     ELSIF p_rule_id=62 THEN 
4951       IF NOT HZ_MATCH_RULE_62.check_staged THEN
4952         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4953         FND_MSG_PUB.ADD;
4954         RAISE FND_API.G_EXC_ERROR;
4955       END IF;
4956       HZ_MATCH_RULE_62.get_matching_contacts(
4957         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4958         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4959     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
4960     ELSIF p_rule_id=98 THEN 
4961       IF NOT HZ_MATCH_RULE_98.check_staged THEN
4962         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4963         FND_MSG_PUB.ADD;
4964         RAISE FND_API.G_EXC_ERROR;
4965       END IF;
4966       HZ_MATCH_RULE_98.get_matching_contacts(
4967         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4968         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4969     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
4970     ELSIF p_rule_id=99 THEN 
4971       IF NOT HZ_MATCH_RULE_99.check_staged THEN
4972         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4973         FND_MSG_PUB.ADD;
4974         RAISE FND_API.G_EXC_ERROR;
4975       END IF;
4976       HZ_MATCH_RULE_99.get_matching_contacts(
4977         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4978         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4979     END IF;
4980   --Standard call to get message count and if count is 1, get message info
4981   FND_MSG_PUB.Count_And_Get(
4982     p_encoded => FND_API.G_FALSE,
4983     p_count => x_msg_count,
4984     p_data  => x_msg_data);
4985   EXCEPTION
4986        WHEN FND_API.G_EXC_ERROR THEN
4987                x_return_status := FND_API.G_RET_STS_ERROR;
4988                FND_MSG_PUB.Count_And_Get(
4989                                p_encoded => FND_API.G_FALSE,
4990                                p_count => x_msg_count,
4991                                p_data  => x_msg_data);
4992        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4993                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4994                FND_MSG_PUB.Count_And_Get(
4995                                p_encoded => FND_API.G_FALSE,
4996                                p_count => x_msg_count,
4997                                p_data  => x_msg_data);
4998 
4999        WHEN OTHERS THEN
5000                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5001                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5002                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
5003                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5004                FND_MSG_PUB.ADD;
5005 
5006                FND_MSG_PUB.Count_And_Get(
5007                                p_encoded => FND_API.G_FALSE,
5008                                p_count => x_msg_count,
5009                                p_data  => x_msg_data);
5010     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5011       hz_utility_v2pub.debug(p_message=>'get_matching_contacts(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5012     END IF;
5013   END;
5014 
5015 PROCEDURE get_matching_contact_points (
5016         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5017         p_rule_id               IN      NUMBER,
5018         p_party_id              IN      NUMBER,
5019         p_contact_point_list    IN	     CONTACT_POINT_LIST,
5020         x_search_ctx_id         OUT     NUMBER,
5021         x_return_status         OUT     VARCHAR2,
5022         x_msg_count             OUT     NUMBER,
5023         x_msg_data              OUT     VARCHAR2
5024 ) IS
5025   l_num_matches NUMBER;
5026   BEGIN
5027     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5028       hz_utility_v2pub.debug(p_message=>'get_matching_contact_points-1(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5029     END IF;
5030     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5031       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5032     END IF;
5033      get_matching_contact_points(p_init_msg_list,p_rule_id,p_party_id,
5034             p_contact_point_list,
5035             NULL,NULL,x_search_ctx_id,
5036             l_num_matches,x_return_status,x_msg_count,x_msg_data);
5037     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5038       hz_utility_v2pub.debug(p_message=>'get_matching_contact_points-1(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5039     END IF;
5040   END;
5041 PROCEDURE get_matching_contact_points (
5042         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5043         p_rule_id               IN      NUMBER,
5044         p_party_id              IN      NUMBER,
5045         p_contact_point_list    IN	     CONTACT_POINT_LIST,
5046         p_restrict_sql          IN      VARCHAR2,
5047         p_match_type            IN      VARCHAR2,
5048         x_search_ctx_id         OUT     NUMBER,
5049         x_num_matches           OUT     NUMBER,
5050         x_return_status         OUT     VARCHAR2,
5051         x_msg_count             OUT     NUMBER,
5052         x_msg_data              OUT     VARCHAR2
5053 ) IS
5054   CURSOR c_match_rule IS 
5055     SELECT COMPILATION_FLAG 
5056     FROM HZ_MATCH_RULES_VL 
5057     WHERE MATCH_RULE_ID = p_rule_id;
5058   l_cmp_flag VARCHAR2(1);
5059   BEGIN
5060     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5061       hz_utility_v2pub.debug(p_message=>'get_matching_contact_points(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5062     END IF;
5063     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5064       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5065     END IF;
5066 
5067     -- Initialize return status and message stack
5068     x_return_status := FND_API.G_RET_STS_SUCCESS;
5069     IF FND_API.to_Boolean(p_init_msg_list) THEN
5070       FND_MSG_PUB.initialize;
5071     END IF;
5072 
5073     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
5074       -- No MATCH RULE FOUND
5075       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
5076       FND_MSG_PUB.ADD;
5077       RAISE FND_API.G_EXC_ERROR;
5078     END IF;
5079     OPEN c_match_rule;
5080     FETCH c_match_rule INTO l_cmp_flag;
5081     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
5082       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
5083       FND_MSG_PUB.ADD;
5084       RAISE FND_API.G_EXC_ERROR;
5085     END IF;
5086     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
5087     IF p_rule_id=2 THEN 
5088       IF NOT HZ_MATCH_RULE_2.check_staged THEN
5089         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5090         FND_MSG_PUB.ADD;
5091         RAISE FND_API.G_EXC_ERROR;
5092       END IF;
5093       HZ_MATCH_RULE_2.get_matching_contact_points(
5094         p_rule_id, p_party_id, p_contact_point_list,
5095         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5096     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
5097     ELSIF p_rule_id=3 THEN 
5098       IF NOT HZ_MATCH_RULE_3.check_staged THEN
5099         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5100         FND_MSG_PUB.ADD;
5101         RAISE FND_API.G_EXC_ERROR;
5102       END IF;
5103       HZ_MATCH_RULE_3.get_matching_contact_points(
5104         p_rule_id, p_party_id, p_contact_point_list,
5105         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5106     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
5107     ELSIF p_rule_id=4 THEN 
5108       IF NOT HZ_MATCH_RULE_4.check_staged THEN
5109         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5110         FND_MSG_PUB.ADD;
5111         RAISE FND_API.G_EXC_ERROR;
5112       END IF;
5113       HZ_MATCH_RULE_4.get_matching_contact_points(
5114         p_rule_id, p_party_id, p_contact_point_list,
5115         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5116     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
5117     ELSIF p_rule_id=5 THEN 
5118       IF NOT HZ_MATCH_RULE_5.check_staged THEN
5119         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5120         FND_MSG_PUB.ADD;
5121         RAISE FND_API.G_EXC_ERROR;
5122       END IF;
5123       HZ_MATCH_RULE_5.get_matching_contact_points(
5124         p_rule_id, p_party_id, p_contact_point_list,
5125         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5126     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
5127     ELSIF p_rule_id=6 THEN 
5128       IF NOT HZ_MATCH_RULE_6.check_staged THEN
5129         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5130         FND_MSG_PUB.ADD;
5131         RAISE FND_API.G_EXC_ERROR;
5132       END IF;
5133       HZ_MATCH_RULE_6.get_matching_contact_points(
5134         p_rule_id, p_party_id, p_contact_point_list,
5135         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5136     -- Code for Match rule SAMPLE: SIMILAR_PERSON
5137     ELSIF p_rule_id=7 THEN 
5138       IF NOT HZ_MATCH_RULE_7.check_staged THEN
5139         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5140         FND_MSG_PUB.ADD;
5141         RAISE FND_API.G_EXC_ERROR;
5142       END IF;
5143       HZ_MATCH_RULE_7.get_matching_contact_points(
5144         p_rule_id, p_party_id, p_contact_point_list,
5145         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5146     -- Code for Match rule SAMPLE: SEARCH
5147     ELSIF p_rule_id=8 THEN 
5148       IF NOT HZ_MATCH_RULE_8.check_staged THEN
5149         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5150         FND_MSG_PUB.ADD;
5151         RAISE FND_API.G_EXC_ERROR;
5152       END IF;
5153       HZ_MATCH_RULE_8.get_matching_contact_points(
5154         p_rule_id, p_party_id, p_contact_point_list,
5155         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5156     -- Code for Match rule RM SEARCH RULE
5157     ELSIF p_rule_id=32 THEN 
5158       IF NOT HZ_MATCH_RULE_32.check_staged THEN
5159         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5160         FND_MSG_PUB.ADD;
5161         RAISE FND_API.G_EXC_ERROR;
5162       END IF;
5163       HZ_MATCH_RULE_32.get_matching_contact_points(
5164         p_rule_id, p_party_id, p_contact_point_list,
5165         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5166     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5167     ELSIF p_rule_id=33 THEN 
5168       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5169         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5170         FND_MSG_PUB.ADD;
5171         RAISE FND_API.G_EXC_ERROR;
5172       END IF;
5173       HZ_MATCH_RULE_33.get_matching_contact_points(
5174         p_rule_id, p_party_id, p_contact_point_list,
5175         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5176     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5177     ELSIF p_rule_id=34 THEN 
5178       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5179         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5180         FND_MSG_PUB.ADD;
5181         RAISE FND_API.G_EXC_ERROR;
5182       END IF;
5183       HZ_MATCH_RULE_34.get_matching_contact_points(
5184         p_rule_id, p_party_id, p_contact_point_list,
5185         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5186     -- Code for Match rule DL SMART SEARCH
5187     ELSIF p_rule_id=35 THEN 
5188       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5189         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5190         FND_MSG_PUB.ADD;
5191         RAISE FND_API.G_EXC_ERROR;
5192       END IF;
5193       HZ_MATCH_RULE_35.get_matching_contact_points(
5194         p_rule_id, p_party_id, p_contact_point_list,
5195         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5196     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5197     ELSIF p_rule_id=36 THEN 
5198       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5199         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5200         FND_MSG_PUB.ADD;
5201         RAISE FND_API.G_EXC_ERROR;
5202       END IF;
5203       HZ_MATCH_RULE_36.get_matching_contact_points(
5204         p_rule_id, p_party_id, p_contact_point_list,
5205         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5206     -- Code for Match rule DL ADDRESS DEFAULT
5207     ELSIF p_rule_id=37 THEN 
5208       IF NOT HZ_MATCH_RULE_37.check_staged THEN
5209         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5210         FND_MSG_PUB.ADD;
5211         RAISE FND_API.G_EXC_ERROR;
5212       END IF;
5213       HZ_MATCH_RULE_37.get_matching_contact_points(
5214         p_rule_id, p_party_id, p_contact_point_list,
5215         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5216     -- Code for Match rule DL RELATIONSHIP DEFAULT
5217     ELSIF p_rule_id=38 THEN 
5218       IF NOT HZ_MATCH_RULE_38.check_staged THEN
5219         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5220         FND_MSG_PUB.ADD;
5221         RAISE FND_API.G_EXC_ERROR;
5222       END IF;
5223       HZ_MATCH_RULE_38.get_matching_contact_points(
5224         p_rule_id, p_party_id, p_contact_point_list,
5225         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5226     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
5227     ELSIF p_rule_id=39 THEN 
5228       IF NOT HZ_MATCH_RULE_39.check_staged THEN
5229         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5230         FND_MSG_PUB.ADD;
5231         RAISE FND_API.G_EXC_ERROR;
5232       END IF;
5233       HZ_MATCH_RULE_39.get_matching_contact_points(
5234         p_rule_id, p_party_id, p_contact_point_list,
5235         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5236     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
5237     ELSIF p_rule_id=40 THEN 
5238       IF NOT HZ_MATCH_RULE_40.check_staged THEN
5239         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5240         FND_MSG_PUB.ADD;
5241         RAISE FND_API.G_EXC_ERROR;
5242       END IF;
5243       HZ_MATCH_RULE_40.get_matching_contact_points(
5244         p_rule_id, p_party_id, p_contact_point_list,
5245         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5246     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
5247     ELSIF p_rule_id=41 THEN 
5248       IF NOT HZ_MATCH_RULE_41.check_staged THEN
5249         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5250         FND_MSG_PUB.ADD;
5251         RAISE FND_API.G_EXC_ERROR;
5252       END IF;
5253       HZ_MATCH_RULE_41.get_matching_contact_points(
5254         p_rule_id, p_party_id, p_contact_point_list,
5255         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5256     -- Code for Match rule SAMPLE: SEARCH EXACT
5257     ELSIF p_rule_id=42 THEN 
5258       IF NOT HZ_MATCH_RULE_42.check_staged THEN
5259         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5260         FND_MSG_PUB.ADD;
5261         RAISE FND_API.G_EXC_ERROR;
5262       END IF;
5263       HZ_MATCH_RULE_42.get_matching_contact_points(
5264         p_rule_id, p_party_id, p_contact_point_list,
5265         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5266     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
5267     ELSIF p_rule_id=48 THEN 
5268       IF NOT HZ_MATCH_RULE_48.check_staged THEN
5269         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5270         FND_MSG_PUB.ADD;
5271         RAISE FND_API.G_EXC_ERROR;
5272       END IF;
5273       HZ_MATCH_RULE_48.get_matching_contact_points(
5274         p_rule_id, p_party_id, p_contact_point_list,
5275         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5276     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
5277     ELSIF p_rule_id=50 THEN 
5278       IF NOT HZ_MATCH_RULE_50.check_staged THEN
5279         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5280         FND_MSG_PUB.ADD;
5281         RAISE FND_API.G_EXC_ERROR;
5282       END IF;
5283       HZ_MATCH_RULE_50.get_matching_contact_points(
5284         p_rule_id, p_party_id, p_contact_point_list,
5285         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5286     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
5287     ELSIF p_rule_id=51 THEN 
5288       IF NOT HZ_MATCH_RULE_51.check_staged THEN
5289         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5290         FND_MSG_PUB.ADD;
5291         RAISE FND_API.G_EXC_ERROR;
5292       END IF;
5293       HZ_MATCH_RULE_51.get_matching_contact_points(
5294         p_rule_id, p_party_id, p_contact_point_list,
5295         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5296     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
5297     ELSIF p_rule_id=52 THEN 
5298       IF NOT HZ_MATCH_RULE_52.check_staged THEN
5299         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5300         FND_MSG_PUB.ADD;
5301         RAISE FND_API.G_EXC_ERROR;
5302       END IF;
5303       HZ_MATCH_RULE_52.get_matching_contact_points(
5304         p_rule_id, p_party_id, p_contact_point_list,
5305         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5306     -- Code for Match rule CREDIT MANAGEMENT SEARCH
5307     ELSIF p_rule_id=53 THEN 
5308       IF NOT HZ_MATCH_RULE_53.check_staged THEN
5309         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5310         FND_MSG_PUB.ADD;
5311         RAISE FND_API.G_EXC_ERROR;
5312       END IF;
5313       HZ_MATCH_RULE_53.get_matching_contact_points(
5314         p_rule_id, p_party_id, p_contact_point_list,
5315         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5316     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
5317     ELSIF p_rule_id=58 THEN 
5318       IF NOT HZ_MATCH_RULE_58.check_staged THEN
5319         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5320         FND_MSG_PUB.ADD;
5321         RAISE FND_API.G_EXC_ERROR;
5322       END IF;
5323       HZ_MATCH_RULE_58.get_matching_contact_points(
5324         p_rule_id, p_party_id, p_contact_point_list,
5325         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5326     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
5327     ELSIF p_rule_id=60 THEN 
5328       IF NOT HZ_MATCH_RULE_60.check_staged THEN
5329         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5330         FND_MSG_PUB.ADD;
5331         RAISE FND_API.G_EXC_ERROR;
5332       END IF;
5333       HZ_MATCH_RULE_60.get_matching_contact_points(
5334         p_rule_id, p_party_id, p_contact_point_list,
5335         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5336     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
5337     ELSIF p_rule_id=61 THEN 
5338       IF NOT HZ_MATCH_RULE_61.check_staged THEN
5339         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5340         FND_MSG_PUB.ADD;
5341         RAISE FND_API.G_EXC_ERROR;
5342       END IF;
5343       HZ_MATCH_RULE_61.get_matching_contact_points(
5344         p_rule_id, p_party_id, p_contact_point_list,
5345         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5346     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
5347     ELSIF p_rule_id=62 THEN 
5348       IF NOT HZ_MATCH_RULE_62.check_staged THEN
5349         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5350         FND_MSG_PUB.ADD;
5351         RAISE FND_API.G_EXC_ERROR;
5352       END IF;
5353       HZ_MATCH_RULE_62.get_matching_contact_points(
5354         p_rule_id, p_party_id, p_contact_point_list,
5355         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5356     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
5357     ELSIF p_rule_id=98 THEN 
5358       IF NOT HZ_MATCH_RULE_98.check_staged THEN
5359         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5360         FND_MSG_PUB.ADD;
5361         RAISE FND_API.G_EXC_ERROR;
5362       END IF;
5363       HZ_MATCH_RULE_98.get_matching_contact_points(
5364         p_rule_id, p_party_id, p_contact_point_list,
5365         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5366     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
5367     ELSIF p_rule_id=99 THEN 
5368       IF NOT HZ_MATCH_RULE_99.check_staged THEN
5369         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5370         FND_MSG_PUB.ADD;
5371         RAISE FND_API.G_EXC_ERROR;
5372       END IF;
5373       HZ_MATCH_RULE_99.get_matching_contact_points(
5374         p_rule_id, p_party_id, p_contact_point_list,
5375         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5376     END IF;
5377     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5378       hz_utility_v2pub.debug(p_message=>'get_matching_contact_points(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5379     END IF;
5380   --Standard call to get message count and if count is 1, get message info
5381   FND_MSG_PUB.Count_And_Get(
5382     p_encoded => FND_API.G_FALSE,
5383     p_count => x_msg_count,
5384     p_data  => x_msg_data);
5385   EXCEPTION
5386        WHEN FND_API.G_EXC_ERROR THEN
5387                x_return_status := FND_API.G_RET_STS_ERROR;
5388                FND_MSG_PUB.Count_And_Get(
5389                                p_encoded => FND_API.G_FALSE,
5390                                p_count => x_msg_count,
5391                                p_data  => x_msg_data);
5392        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5393                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5394                FND_MSG_PUB.Count_And_Get(
5395                                p_encoded => FND_API.G_FALSE,
5396                                p_count => x_msg_count,
5397                                p_data  => x_msg_data);
5398 
5399        WHEN OTHERS THEN
5400                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5401                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5402                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
5403                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5404                FND_MSG_PUB.ADD;
5405 
5406                FND_MSG_PUB.Count_And_Get(
5407                                p_encoded => FND_API.G_FALSE,
5408                                p_count => x_msg_count,
5409                                p_data  => x_msg_data);
5410   END;
5411 
5412 PROCEDURE get_party_score_details (
5413         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5414         p_rule_id               IN      NUMBER,
5415         p_party_id              IN      NUMBER,
5416         p_search_ctx_id         IN      NUMBER,
5417       p_party_search_rec      IN      party_search_rec_type,
5418       p_party_site_list       IN      party_site_list,
5419       p_contact_list          IN      contact_list,
5420       p_contact_point_list    IN      contact_point_list,
5421         x_return_status         OUT     VARCHAR2,
5422         x_msg_count             OUT     NUMBER,
5423         x_msg_data              OUT     VARCHAR2
5424 ) IS
5425   l_search_ctx_id NUMBER;
5426   BEGIN
5427     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5428       hz_utility_v2pub.debug(p_message=>'get_party_score_details(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5429     END IF;
5430     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5431       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5432     END IF;
5433      l_search_ctx_id:=p_search_ctx_id;
5434      get_score_details(p_init_msg_list,p_rule_id,p_party_id,
5435             p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list,
5436             l_search_ctx_id,x_return_status,x_msg_count,x_msg_data);
5437     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5438       hz_utility_v2pub.debug(p_message=>'get_party_score_details(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5439     END IF;
5440   END;
5441 PROCEDURE get_score_details (
5442         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5443         p_rule_id               IN      NUMBER,
5444         p_party_id              IN      NUMBER,
5445         p_party_search_rec      IN      party_search_rec_type,
5446         p_party_site_list       IN      party_site_list,
5447         p_contact_list          IN      contact_list,
5448         p_contact_point_list    IN      contact_point_list,
5449         x_search_ctx_id         IN OUT  NUMBER,
5450         x_return_status         OUT     VARCHAR2,
5451         x_msg_count             OUT     NUMBER,
5452         x_msg_data              OUT     VARCHAR2
5453 ) IS
5454   CURSOR c_match_rule IS 
5455     SELECT COMPILATION_FLAG 
5456     FROM HZ_MATCH_RULES_VL 
5457     WHERE MATCH_RULE_ID = p_rule_id;
5458   l_cmp_flag VARCHAR2(1);
5459   BEGIN
5460     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5461       hz_utility_v2pub.debug(p_message=>'get_score_details(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5462     END IF;
5463     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5464       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5465     END IF;
5466 
5467     -- Initialize return status and message stack
5468     x_return_status := FND_API.G_RET_STS_SUCCESS;
5469     IF FND_API.to_Boolean(p_init_msg_list) THEN
5470       FND_MSG_PUB.initialize;
5471     END IF;
5472 
5473     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
5474       -- No MATCH RULE FOUND
5475       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
5476       FND_MSG_PUB.ADD;
5477       RAISE FND_API.G_EXC_ERROR;
5478     END IF;
5479     OPEN c_match_rule;
5480     FETCH c_match_rule INTO l_cmp_flag;
5481     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
5482       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
5483       FND_MSG_PUB.ADD;
5484       RAISE FND_API.G_EXC_ERROR;
5485     END IF;
5486     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
5487     IF p_rule_id=2 THEN 
5488       IF NOT HZ_MATCH_RULE_2.check_staged THEN
5489         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5490         FND_MSG_PUB.ADD;
5491         RAISE FND_API.G_EXC_ERROR;
5492       END IF;
5493       HZ_MATCH_RULE_2.get_score_details(
5494         p_rule_id,
5495         p_party_id, p_party_search_rec,p_party_site_list,
5496         p_contact_list, p_contact_point_list,x_search_ctx_id);
5497     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
5498     ELSIF p_rule_id=3 THEN 
5499       IF NOT HZ_MATCH_RULE_3.check_staged THEN
5500         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5501         FND_MSG_PUB.ADD;
5502         RAISE FND_API.G_EXC_ERROR;
5503       END IF;
5504       HZ_MATCH_RULE_3.get_score_details(
5505         p_rule_id,
5506         p_party_id, p_party_search_rec,p_party_site_list,
5507         p_contact_list, p_contact_point_list,x_search_ctx_id);
5508     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
5509     ELSIF p_rule_id=4 THEN 
5510       IF NOT HZ_MATCH_RULE_4.check_staged THEN
5511         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5512         FND_MSG_PUB.ADD;
5513         RAISE FND_API.G_EXC_ERROR;
5514       END IF;
5515       HZ_MATCH_RULE_4.get_score_details(
5516         p_rule_id,
5517         p_party_id, p_party_search_rec,p_party_site_list,
5518         p_contact_list, p_contact_point_list,x_search_ctx_id);
5519     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
5520     ELSIF p_rule_id=5 THEN 
5521       IF NOT HZ_MATCH_RULE_5.check_staged THEN
5522         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5523         FND_MSG_PUB.ADD;
5524         RAISE FND_API.G_EXC_ERROR;
5525       END IF;
5526       HZ_MATCH_RULE_5.get_score_details(
5527         p_rule_id,
5528         p_party_id, p_party_search_rec,p_party_site_list,
5529         p_contact_list, p_contact_point_list,x_search_ctx_id);
5530     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
5531     ELSIF p_rule_id=6 THEN 
5532       IF NOT HZ_MATCH_RULE_6.check_staged THEN
5533         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5534         FND_MSG_PUB.ADD;
5535         RAISE FND_API.G_EXC_ERROR;
5536       END IF;
5537       HZ_MATCH_RULE_6.get_score_details(
5538         p_rule_id,
5539         p_party_id, p_party_search_rec,p_party_site_list,
5540         p_contact_list, p_contact_point_list,x_search_ctx_id);
5541     -- Code for Match rule SAMPLE: SIMILAR_PERSON
5542     ELSIF p_rule_id=7 THEN 
5543       IF NOT HZ_MATCH_RULE_7.check_staged THEN
5544         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5545         FND_MSG_PUB.ADD;
5546         RAISE FND_API.G_EXC_ERROR;
5547       END IF;
5548       HZ_MATCH_RULE_7.get_score_details(
5549         p_rule_id,
5550         p_party_id, p_party_search_rec,p_party_site_list,
5551         p_contact_list, p_contact_point_list,x_search_ctx_id);
5552     -- Code for Match rule SAMPLE: SEARCH
5553     ELSIF p_rule_id=8 THEN 
5554       IF NOT HZ_MATCH_RULE_8.check_staged THEN
5555         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5556         FND_MSG_PUB.ADD;
5557         RAISE FND_API.G_EXC_ERROR;
5558       END IF;
5559       HZ_MATCH_RULE_8.get_score_details(
5560         p_rule_id,
5561         p_party_id, p_party_search_rec,p_party_site_list,
5562         p_contact_list, p_contact_point_list,x_search_ctx_id);
5563     -- Code for Match rule RM SEARCH RULE
5564     ELSIF p_rule_id=32 THEN 
5565       IF NOT HZ_MATCH_RULE_32.check_staged THEN
5566         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5567         FND_MSG_PUB.ADD;
5568         RAISE FND_API.G_EXC_ERROR;
5569       END IF;
5570       HZ_MATCH_RULE_32.get_score_details(
5571         p_rule_id,
5572         p_party_id, p_party_search_rec,p_party_site_list,
5573         p_contact_list, p_contact_point_list,x_search_ctx_id);
5574     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5575     ELSIF p_rule_id=33 THEN 
5576       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5577         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5578         FND_MSG_PUB.ADD;
5579         RAISE FND_API.G_EXC_ERROR;
5580       END IF;
5581       HZ_MATCH_RULE_33.get_score_details(
5582         p_rule_id,
5583         p_party_id, p_party_search_rec,p_party_site_list,
5584         p_contact_list, p_contact_point_list,x_search_ctx_id);
5585     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5586     ELSIF p_rule_id=34 THEN 
5587       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5588         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5589         FND_MSG_PUB.ADD;
5590         RAISE FND_API.G_EXC_ERROR;
5591       END IF;
5592       HZ_MATCH_RULE_34.get_score_details(
5593         p_rule_id,
5594         p_party_id, p_party_search_rec,p_party_site_list,
5595         p_contact_list, p_contact_point_list,x_search_ctx_id);
5596     -- Code for Match rule DL SMART SEARCH
5597     ELSIF p_rule_id=35 THEN 
5598       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5599         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5600         FND_MSG_PUB.ADD;
5601         RAISE FND_API.G_EXC_ERROR;
5602       END IF;
5603       HZ_MATCH_RULE_35.get_score_details(
5604         p_rule_id,
5605         p_party_id, p_party_search_rec,p_party_site_list,
5606         p_contact_list, p_contact_point_list,x_search_ctx_id);
5607     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5608     ELSIF p_rule_id=36 THEN 
5609       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5610         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5611         FND_MSG_PUB.ADD;
5612         RAISE FND_API.G_EXC_ERROR;
5613       END IF;
5614       HZ_MATCH_RULE_36.get_score_details(
5615         p_rule_id,
5616         p_party_id, p_party_search_rec,p_party_site_list,
5617         p_contact_list, p_contact_point_list,x_search_ctx_id);
5618     -- Code for Match rule DL ADDRESS DEFAULT
5619     ELSIF p_rule_id=37 THEN 
5620       IF NOT HZ_MATCH_RULE_37.check_staged THEN
5621         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5622         FND_MSG_PUB.ADD;
5623         RAISE FND_API.G_EXC_ERROR;
5624       END IF;
5625       HZ_MATCH_RULE_37.get_score_details(
5626         p_rule_id,
5627         p_party_id, p_party_search_rec,p_party_site_list,
5628         p_contact_list, p_contact_point_list,x_search_ctx_id);
5629     -- Code for Match rule DL RELATIONSHIP DEFAULT
5630     ELSIF p_rule_id=38 THEN 
5631       IF NOT HZ_MATCH_RULE_38.check_staged THEN
5632         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5633         FND_MSG_PUB.ADD;
5634         RAISE FND_API.G_EXC_ERROR;
5635       END IF;
5636       HZ_MATCH_RULE_38.get_score_details(
5637         p_rule_id,
5638         p_party_id, p_party_search_rec,p_party_site_list,
5639         p_contact_list, p_contact_point_list,x_search_ctx_id);
5640     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
5641     ELSIF p_rule_id=39 THEN 
5642       IF NOT HZ_MATCH_RULE_39.check_staged THEN
5643         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5644         FND_MSG_PUB.ADD;
5645         RAISE FND_API.G_EXC_ERROR;
5646       END IF;
5647       HZ_MATCH_RULE_39.get_score_details(
5648         p_rule_id,
5649         p_party_id, p_party_search_rec,p_party_site_list,
5650         p_contact_list, p_contact_point_list,x_search_ctx_id);
5651     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
5652     ELSIF p_rule_id=40 THEN 
5653       IF NOT HZ_MATCH_RULE_40.check_staged THEN
5654         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5655         FND_MSG_PUB.ADD;
5656         RAISE FND_API.G_EXC_ERROR;
5657       END IF;
5658       HZ_MATCH_RULE_40.get_score_details(
5659         p_rule_id,
5660         p_party_id, p_party_search_rec,p_party_site_list,
5661         p_contact_list, p_contact_point_list,x_search_ctx_id);
5662     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
5663     ELSIF p_rule_id=41 THEN 
5664       IF NOT HZ_MATCH_RULE_41.check_staged THEN
5665         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5666         FND_MSG_PUB.ADD;
5667         RAISE FND_API.G_EXC_ERROR;
5668       END IF;
5669       HZ_MATCH_RULE_41.get_score_details(
5670         p_rule_id,
5671         p_party_id, p_party_search_rec,p_party_site_list,
5672         p_contact_list, p_contact_point_list,x_search_ctx_id);
5673     -- Code for Match rule SAMPLE: SEARCH EXACT
5674     ELSIF p_rule_id=42 THEN 
5675       IF NOT HZ_MATCH_RULE_42.check_staged THEN
5676         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5677         FND_MSG_PUB.ADD;
5678         RAISE FND_API.G_EXC_ERROR;
5679       END IF;
5680       HZ_MATCH_RULE_42.get_score_details(
5681         p_rule_id,
5682         p_party_id, p_party_search_rec,p_party_site_list,
5683         p_contact_list, p_contact_point_list,x_search_ctx_id);
5684     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
5685     ELSIF p_rule_id=48 THEN 
5686       IF NOT HZ_MATCH_RULE_48.check_staged THEN
5687         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5688         FND_MSG_PUB.ADD;
5689         RAISE FND_API.G_EXC_ERROR;
5690       END IF;
5691       HZ_MATCH_RULE_48.get_score_details(
5692         p_rule_id,
5693         p_party_id, p_party_search_rec,p_party_site_list,
5694         p_contact_list, p_contact_point_list,x_search_ctx_id);
5695     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
5696     ELSIF p_rule_id=50 THEN 
5697       IF NOT HZ_MATCH_RULE_50.check_staged THEN
5698         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5699         FND_MSG_PUB.ADD;
5700         RAISE FND_API.G_EXC_ERROR;
5701       END IF;
5702       HZ_MATCH_RULE_50.get_score_details(
5703         p_rule_id,
5704         p_party_id, p_party_search_rec,p_party_site_list,
5705         p_contact_list, p_contact_point_list,x_search_ctx_id);
5706     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
5707     ELSIF p_rule_id=51 THEN 
5708       IF NOT HZ_MATCH_RULE_51.check_staged THEN
5709         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5710         FND_MSG_PUB.ADD;
5711         RAISE FND_API.G_EXC_ERROR;
5712       END IF;
5713       HZ_MATCH_RULE_51.get_score_details(
5714         p_rule_id,
5715         p_party_id, p_party_search_rec,p_party_site_list,
5716         p_contact_list, p_contact_point_list,x_search_ctx_id);
5717     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
5718     ELSIF p_rule_id=52 THEN 
5719       IF NOT HZ_MATCH_RULE_52.check_staged THEN
5720         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5721         FND_MSG_PUB.ADD;
5722         RAISE FND_API.G_EXC_ERROR;
5723       END IF;
5724       HZ_MATCH_RULE_52.get_score_details(
5725         p_rule_id,
5726         p_party_id, p_party_search_rec,p_party_site_list,
5727         p_contact_list, p_contact_point_list,x_search_ctx_id);
5728     -- Code for Match rule CREDIT MANAGEMENT SEARCH
5729     ELSIF p_rule_id=53 THEN 
5730       IF NOT HZ_MATCH_RULE_53.check_staged THEN
5731         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5732         FND_MSG_PUB.ADD;
5733         RAISE FND_API.G_EXC_ERROR;
5734       END IF;
5735       HZ_MATCH_RULE_53.get_score_details(
5736         p_rule_id,
5737         p_party_id, p_party_search_rec,p_party_site_list,
5738         p_contact_list, p_contact_point_list,x_search_ctx_id);
5739     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
5740     ELSIF p_rule_id=58 THEN 
5741       IF NOT HZ_MATCH_RULE_58.check_staged THEN
5742         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5743         FND_MSG_PUB.ADD;
5744         RAISE FND_API.G_EXC_ERROR;
5745       END IF;
5746       HZ_MATCH_RULE_58.get_score_details(
5747         p_rule_id,
5748         p_party_id, p_party_search_rec,p_party_site_list,
5749         p_contact_list, p_contact_point_list,x_search_ctx_id);
5750     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
5751     ELSIF p_rule_id=60 THEN 
5752       IF NOT HZ_MATCH_RULE_60.check_staged THEN
5753         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5754         FND_MSG_PUB.ADD;
5755         RAISE FND_API.G_EXC_ERROR;
5756       END IF;
5757       HZ_MATCH_RULE_60.get_score_details(
5758         p_rule_id,
5759         p_party_id, p_party_search_rec,p_party_site_list,
5760         p_contact_list, p_contact_point_list,x_search_ctx_id);
5761     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
5762     ELSIF p_rule_id=61 THEN 
5763       IF NOT HZ_MATCH_RULE_61.check_staged THEN
5764         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5765         FND_MSG_PUB.ADD;
5766         RAISE FND_API.G_EXC_ERROR;
5767       END IF;
5768       HZ_MATCH_RULE_61.get_score_details(
5769         p_rule_id,
5770         p_party_id, p_party_search_rec,p_party_site_list,
5771         p_contact_list, p_contact_point_list,x_search_ctx_id);
5772     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
5773     ELSIF p_rule_id=62 THEN 
5774       IF NOT HZ_MATCH_RULE_62.check_staged THEN
5775         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5776         FND_MSG_PUB.ADD;
5777         RAISE FND_API.G_EXC_ERROR;
5778       END IF;
5779       HZ_MATCH_RULE_62.get_score_details(
5780         p_rule_id,
5781         p_party_id, p_party_search_rec,p_party_site_list,
5782         p_contact_list, p_contact_point_list,x_search_ctx_id);
5783     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
5784     ELSIF p_rule_id=98 THEN 
5785       IF NOT HZ_MATCH_RULE_98.check_staged THEN
5786         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5787         FND_MSG_PUB.ADD;
5788         RAISE FND_API.G_EXC_ERROR;
5789       END IF;
5790       HZ_MATCH_RULE_98.get_score_details(
5791         p_rule_id,
5792         p_party_id, p_party_search_rec,p_party_site_list,
5793         p_contact_list, p_contact_point_list,x_search_ctx_id);
5794     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
5795     ELSIF p_rule_id=99 THEN 
5796       IF NOT HZ_MATCH_RULE_99.check_staged THEN
5797         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5798         FND_MSG_PUB.ADD;
5799         RAISE FND_API.G_EXC_ERROR;
5800       END IF;
5801       HZ_MATCH_RULE_99.get_score_details(
5802         p_rule_id,
5803         p_party_id, p_party_search_rec,p_party_site_list,
5804         p_contact_list, p_contact_point_list,x_search_ctx_id);
5805     END IF;
5806     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5807       hz_utility_v2pub.debug(p_message=>'get_score_details(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5808     END IF;
5809   --Standard call to get message count and if count is 1, get message info
5810   FND_MSG_PUB.Count_And_Get(
5811     p_encoded => FND_API.G_FALSE,
5812     p_count => x_msg_count,
5813     p_data  => x_msg_data);
5814   EXCEPTION
5815        WHEN FND_API.G_EXC_ERROR THEN
5816                x_return_status := FND_API.G_RET_STS_ERROR;
5817                FND_MSG_PUB.Count_And_Get(
5818                                p_encoded => FND_API.G_FALSE,
5819                                p_count => x_msg_count,
5820                                p_data  => x_msg_data);
5821        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5822                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5823                FND_MSG_PUB.Count_And_Get(
5824                                p_encoded => FND_API.G_FALSE,
5825                                p_count => x_msg_count,
5826                                p_data  => x_msg_data);
5827 
5828        WHEN OTHERS THEN
5829                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5830                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5831                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
5832                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5833                FND_MSG_PUB.ADD;
5834 
5835                FND_MSG_PUB.Count_And_Get(
5836                                p_encoded => FND_API.G_FALSE,
5837                                p_count => x_msg_count,
5838                                p_data  => x_msg_data);
5839   END;
5840 PROCEDURE get_party_for_search (
5841         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5842         p_rule_id               IN      NUMBER,
5843         p_party_id              IN      NUMBER,
5844         x_party_search_rec      OUT NOCOPY party_search_rec_type,
5845         x_party_site_list       OUT NOCOPY party_site_list,
5846         x_contact_list          OUT NOCOPY contact_list,
5847         x_contact_point_list    OUT NOCOPY contact_point_list,
5848         x_return_status         OUT     VARCHAR2,
5849         x_msg_count             OUT     NUMBER,
5850         x_msg_data              OUT     VARCHAR2
5851 ) IS
5852   CURSOR c_match_rule IS 
5853     SELECT COMPILATION_FLAG 
5854     FROM HZ_MATCH_RULES_VL 
5855     WHERE MATCH_RULE_ID = p_rule_id;
5856   l_cmp_flag VARCHAR2(1);
5857   BEGIN
5858     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5859       hz_utility_v2pub.debug(p_message=>'get_party_for_search(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
5860     END IF;
5861     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5862       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
5863     END IF;
5864 
5865     -- Initialize return status and message stack
5866     x_return_status := FND_API.G_RET_STS_SUCCESS;
5867     IF FND_API.to_Boolean(p_init_msg_list) THEN
5868       FND_MSG_PUB.initialize;
5869     END IF;
5870 
5871     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
5872       -- No MATCH RULE FOUND
5873       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
5874       FND_MSG_PUB.ADD;
5875       RAISE FND_API.G_EXC_ERROR;
5876     END IF;
5877     OPEN c_match_rule;
5878     FETCH c_match_rule INTO l_cmp_flag;
5879     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
5880       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
5881       FND_MSG_PUB.ADD;
5882       RAISE FND_API.G_EXC_ERROR;
5883     END IF;
5884     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
5885     IF p_rule_id=2 THEN 
5886       IF NOT HZ_MATCH_RULE_2.check_staged THEN
5887         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5888         FND_MSG_PUB.ADD;
5889         RAISE FND_API.G_EXC_ERROR;
5890       END IF;
5891       HZ_MATCH_RULE_2.get_party_for_search(
5892         p_party_id, x_party_search_rec,x_party_site_list,
5893         x_contact_list, x_contact_point_list);
5894     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
5895     ELSIF p_rule_id=3 THEN 
5896       IF NOT HZ_MATCH_RULE_3.check_staged THEN
5897         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5898         FND_MSG_PUB.ADD;
5899         RAISE FND_API.G_EXC_ERROR;
5900       END IF;
5901       HZ_MATCH_RULE_3.get_party_for_search(
5902         p_party_id, x_party_search_rec,x_party_site_list,
5903         x_contact_list, x_contact_point_list);
5904     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
5905     ELSIF p_rule_id=4 THEN 
5906       IF NOT HZ_MATCH_RULE_4.check_staged THEN
5907         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5908         FND_MSG_PUB.ADD;
5909         RAISE FND_API.G_EXC_ERROR;
5910       END IF;
5911       HZ_MATCH_RULE_4.get_party_for_search(
5912         p_party_id, x_party_search_rec,x_party_site_list,
5913         x_contact_list, x_contact_point_list);
5914     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
5915     ELSIF p_rule_id=5 THEN 
5916       IF NOT HZ_MATCH_RULE_5.check_staged THEN
5917         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5918         FND_MSG_PUB.ADD;
5919         RAISE FND_API.G_EXC_ERROR;
5920       END IF;
5921       HZ_MATCH_RULE_5.get_party_for_search(
5922         p_party_id, x_party_search_rec,x_party_site_list,
5923         x_contact_list, x_contact_point_list);
5924     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
5925     ELSIF p_rule_id=6 THEN 
5926       IF NOT HZ_MATCH_RULE_6.check_staged THEN
5927         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5928         FND_MSG_PUB.ADD;
5929         RAISE FND_API.G_EXC_ERROR;
5930       END IF;
5931       HZ_MATCH_RULE_6.get_party_for_search(
5932         p_party_id, x_party_search_rec,x_party_site_list,
5933         x_contact_list, x_contact_point_list);
5934     -- Code for Match rule SAMPLE: SIMILAR_PERSON
5935     ELSIF p_rule_id=7 THEN 
5936       IF NOT HZ_MATCH_RULE_7.check_staged THEN
5937         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5938         FND_MSG_PUB.ADD;
5939         RAISE FND_API.G_EXC_ERROR;
5940       END IF;
5941       HZ_MATCH_RULE_7.get_party_for_search(
5942         p_party_id, x_party_search_rec,x_party_site_list,
5943         x_contact_list, x_contact_point_list);
5944     -- Code for Match rule SAMPLE: SEARCH
5945     ELSIF p_rule_id=8 THEN 
5946       IF NOT HZ_MATCH_RULE_8.check_staged THEN
5947         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5948         FND_MSG_PUB.ADD;
5949         RAISE FND_API.G_EXC_ERROR;
5950       END IF;
5951       HZ_MATCH_RULE_8.get_party_for_search(
5952         p_party_id, x_party_search_rec,x_party_site_list,
5953         x_contact_list, x_contact_point_list);
5954     -- Code for Match rule RM SEARCH RULE
5955     ELSIF p_rule_id=32 THEN 
5956       IF NOT HZ_MATCH_RULE_32.check_staged THEN
5957         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5958         FND_MSG_PUB.ADD;
5959         RAISE FND_API.G_EXC_ERROR;
5960       END IF;
5961       HZ_MATCH_RULE_32.get_party_for_search(
5962         p_party_id, x_party_search_rec,x_party_site_list,
5963         x_contact_list, x_contact_point_list);
5964     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5965     ELSIF p_rule_id=33 THEN 
5966       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5967         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5968         FND_MSG_PUB.ADD;
5969         RAISE FND_API.G_EXC_ERROR;
5970       END IF;
5971       HZ_MATCH_RULE_33.get_party_for_search(
5972         p_party_id, x_party_search_rec,x_party_site_list,
5973         x_contact_list, x_contact_point_list);
5974     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5975     ELSIF p_rule_id=34 THEN 
5976       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5977         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5978         FND_MSG_PUB.ADD;
5979         RAISE FND_API.G_EXC_ERROR;
5980       END IF;
5981       HZ_MATCH_RULE_34.get_party_for_search(
5982         p_party_id, x_party_search_rec,x_party_site_list,
5983         x_contact_list, x_contact_point_list);
5984     -- Code for Match rule DL SMART SEARCH
5985     ELSIF p_rule_id=35 THEN 
5986       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5987         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5988         FND_MSG_PUB.ADD;
5989         RAISE FND_API.G_EXC_ERROR;
5990       END IF;
5991       HZ_MATCH_RULE_35.get_party_for_search(
5992         p_party_id, x_party_search_rec,x_party_site_list,
5993         x_contact_list, x_contact_point_list);
5994     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5995     ELSIF p_rule_id=36 THEN 
5996       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5997         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5998         FND_MSG_PUB.ADD;
5999         RAISE FND_API.G_EXC_ERROR;
6000       END IF;
6001       HZ_MATCH_RULE_36.get_party_for_search(
6002         p_party_id, x_party_search_rec,x_party_site_list,
6003         x_contact_list, x_contact_point_list);
6004     -- Code for Match rule DL ADDRESS DEFAULT
6005     ELSIF p_rule_id=37 THEN 
6006       IF NOT HZ_MATCH_RULE_37.check_staged THEN
6007         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6008         FND_MSG_PUB.ADD;
6009         RAISE FND_API.G_EXC_ERROR;
6010       END IF;
6011       HZ_MATCH_RULE_37.get_party_for_search(
6012         p_party_id, x_party_search_rec,x_party_site_list,
6013         x_contact_list, x_contact_point_list);
6014     -- Code for Match rule DL RELATIONSHIP DEFAULT
6015     ELSIF p_rule_id=38 THEN 
6016       IF NOT HZ_MATCH_RULE_38.check_staged THEN
6017         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6018         FND_MSG_PUB.ADD;
6019         RAISE FND_API.G_EXC_ERROR;
6020       END IF;
6021       HZ_MATCH_RULE_38.get_party_for_search(
6022         p_party_id, x_party_search_rec,x_party_site_list,
6023         x_contact_list, x_contact_point_list);
6024     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
6025     ELSIF p_rule_id=39 THEN 
6026       IF NOT HZ_MATCH_RULE_39.check_staged THEN
6027         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6028         FND_MSG_PUB.ADD;
6029         RAISE FND_API.G_EXC_ERROR;
6030       END IF;
6031       HZ_MATCH_RULE_39.get_party_for_search(
6032         p_party_id, x_party_search_rec,x_party_site_list,
6033         x_contact_list, x_contact_point_list);
6034     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
6035     ELSIF p_rule_id=40 THEN 
6036       IF NOT HZ_MATCH_RULE_40.check_staged THEN
6037         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6038         FND_MSG_PUB.ADD;
6039         RAISE FND_API.G_EXC_ERROR;
6040       END IF;
6041       HZ_MATCH_RULE_40.get_party_for_search(
6042         p_party_id, x_party_search_rec,x_party_site_list,
6043         x_contact_list, x_contact_point_list);
6044     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
6045     ELSIF p_rule_id=41 THEN 
6046       IF NOT HZ_MATCH_RULE_41.check_staged THEN
6047         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6048         FND_MSG_PUB.ADD;
6049         RAISE FND_API.G_EXC_ERROR;
6050       END IF;
6051       HZ_MATCH_RULE_41.get_party_for_search(
6052         p_party_id, x_party_search_rec,x_party_site_list,
6053         x_contact_list, x_contact_point_list);
6054     -- Code for Match rule SAMPLE: SEARCH EXACT
6055     ELSIF p_rule_id=42 THEN 
6056       IF NOT HZ_MATCH_RULE_42.check_staged THEN
6057         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6058         FND_MSG_PUB.ADD;
6059         RAISE FND_API.G_EXC_ERROR;
6060       END IF;
6061       HZ_MATCH_RULE_42.get_party_for_search(
6062         p_party_id, x_party_search_rec,x_party_site_list,
6063         x_contact_list, x_contact_point_list);
6064     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
6065     ELSIF p_rule_id=48 THEN 
6066       IF NOT HZ_MATCH_RULE_48.check_staged THEN
6067         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6068         FND_MSG_PUB.ADD;
6069         RAISE FND_API.G_EXC_ERROR;
6070       END IF;
6071       HZ_MATCH_RULE_48.get_party_for_search(
6072         p_party_id, x_party_search_rec,x_party_site_list,
6073         x_contact_list, x_contact_point_list);
6074     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
6075     ELSIF p_rule_id=50 THEN 
6076       IF NOT HZ_MATCH_RULE_50.check_staged THEN
6077         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6078         FND_MSG_PUB.ADD;
6079         RAISE FND_API.G_EXC_ERROR;
6080       END IF;
6081       HZ_MATCH_RULE_50.get_party_for_search(
6082         p_party_id, x_party_search_rec,x_party_site_list,
6083         x_contact_list, x_contact_point_list);
6084     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
6085     ELSIF p_rule_id=51 THEN 
6086       IF NOT HZ_MATCH_RULE_51.check_staged THEN
6087         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6088         FND_MSG_PUB.ADD;
6089         RAISE FND_API.G_EXC_ERROR;
6090       END IF;
6091       HZ_MATCH_RULE_51.get_party_for_search(
6092         p_party_id, x_party_search_rec,x_party_site_list,
6093         x_contact_list, x_contact_point_list);
6094     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
6095     ELSIF p_rule_id=52 THEN 
6096       IF NOT HZ_MATCH_RULE_52.check_staged THEN
6097         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6098         FND_MSG_PUB.ADD;
6099         RAISE FND_API.G_EXC_ERROR;
6100       END IF;
6101       HZ_MATCH_RULE_52.get_party_for_search(
6102         p_party_id, x_party_search_rec,x_party_site_list,
6103         x_contact_list, x_contact_point_list);
6104     -- Code for Match rule CREDIT MANAGEMENT SEARCH
6105     ELSIF p_rule_id=53 THEN 
6106       IF NOT HZ_MATCH_RULE_53.check_staged THEN
6107         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6108         FND_MSG_PUB.ADD;
6109         RAISE FND_API.G_EXC_ERROR;
6110       END IF;
6111       HZ_MATCH_RULE_53.get_party_for_search(
6112         p_party_id, x_party_search_rec,x_party_site_list,
6113         x_contact_list, x_contact_point_list);
6114     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
6115     ELSIF p_rule_id=58 THEN 
6116       IF NOT HZ_MATCH_RULE_58.check_staged THEN
6117         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6118         FND_MSG_PUB.ADD;
6119         RAISE FND_API.G_EXC_ERROR;
6120       END IF;
6121       HZ_MATCH_RULE_58.get_party_for_search(
6122         p_party_id, x_party_search_rec,x_party_site_list,
6123         x_contact_list, x_contact_point_list);
6124     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
6125     ELSIF p_rule_id=60 THEN 
6126       IF NOT HZ_MATCH_RULE_60.check_staged THEN
6127         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6128         FND_MSG_PUB.ADD;
6129         RAISE FND_API.G_EXC_ERROR;
6130       END IF;
6131       HZ_MATCH_RULE_60.get_party_for_search(
6132         p_party_id, x_party_search_rec,x_party_site_list,
6133         x_contact_list, x_contact_point_list);
6134     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
6135     ELSIF p_rule_id=61 THEN 
6136       IF NOT HZ_MATCH_RULE_61.check_staged THEN
6137         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6138         FND_MSG_PUB.ADD;
6139         RAISE FND_API.G_EXC_ERROR;
6140       END IF;
6141       HZ_MATCH_RULE_61.get_party_for_search(
6142         p_party_id, x_party_search_rec,x_party_site_list,
6143         x_contact_list, x_contact_point_list);
6144     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
6145     ELSIF p_rule_id=62 THEN 
6146       IF NOT HZ_MATCH_RULE_62.check_staged THEN
6147         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6148         FND_MSG_PUB.ADD;
6149         RAISE FND_API.G_EXC_ERROR;
6150       END IF;
6151       HZ_MATCH_RULE_62.get_party_for_search(
6152         p_party_id, x_party_search_rec,x_party_site_list,
6153         x_contact_list, x_contact_point_list);
6154     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
6155     ELSIF p_rule_id=98 THEN 
6156       IF NOT HZ_MATCH_RULE_98.check_staged THEN
6157         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6158         FND_MSG_PUB.ADD;
6159         RAISE FND_API.G_EXC_ERROR;
6160       END IF;
6161       HZ_MATCH_RULE_98.get_party_for_search(
6162         p_party_id, x_party_search_rec,x_party_site_list,
6163         x_contact_list, x_contact_point_list);
6164     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
6165     ELSIF p_rule_id=99 THEN 
6166       IF NOT HZ_MATCH_RULE_99.check_staged THEN
6167         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6168         FND_MSG_PUB.ADD;
6169         RAISE FND_API.G_EXC_ERROR;
6170       END IF;
6171       HZ_MATCH_RULE_99.get_party_for_search(
6172         p_party_id, x_party_search_rec,x_party_site_list,
6173         x_contact_list, x_contact_point_list);
6174     END IF;
6175     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6176       hz_utility_v2pub.debug(p_message=>'get_party_for_search(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6177     END IF;
6178   --Standard call to get message count and if count is 1, get message info
6179   FND_MSG_PUB.Count_And_Get(
6180     p_encoded => FND_API.G_FALSE,
6181     p_count => x_msg_count,
6182     p_data  => x_msg_data);
6183   EXCEPTION
6184        WHEN FND_API.G_EXC_ERROR THEN
6185                x_return_status := FND_API.G_RET_STS_ERROR;
6186                FND_MSG_PUB.Count_And_Get(
6187                                p_encoded => FND_API.G_FALSE,
6188                                p_count => x_msg_count,
6189                                p_data  => x_msg_data);
6190        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6191                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6192                FND_MSG_PUB.Count_And_Get(
6193                                p_encoded => FND_API.G_FALSE,
6194                                p_count => x_msg_count,
6195                                p_data  => x_msg_data);
6196 
6197        WHEN OTHERS THEN
6198                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6199                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6200                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
6201                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6202                FND_MSG_PUB.ADD;
6203 
6204                FND_MSG_PUB.Count_And_Get(
6205                                p_encoded => FND_API.G_FALSE,
6206                                p_count => x_msg_count,
6207                                p_data  => x_msg_data);
6208   END;
6209 PROCEDURE get_search_criteria (
6210         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
6211         p_rule_id               IN      NUMBER,
6212         p_party_id              IN      NUMBER,
6213         p_party_site_ids        IN      IDList,
6214         p_contact_ids           IN      IDList,
6215         p_contact_pt_ids        IN      IDList,
6216         x_party_search_rec      OUT NOCOPY party_search_rec_type,
6217         x_party_site_list       OUT NOCOPY party_site_list,
6218         x_contact_list          OUT NOCOPY contact_list,
6219         x_contact_point_list    OUT NOCOPY contact_point_list,
6220         x_return_status         OUT     VARCHAR2,
6221         x_msg_count             OUT     NUMBER,
6222         x_msg_data              OUT     VARCHAR2
6223 ) IS
6224   CURSOR c_match_rule IS 
6225     SELECT COMPILATION_FLAG 
6226     FROM HZ_MATCH_RULES_VL 
6227     WHERE MATCH_RULE_ID = p_rule_id;
6228   l_cmp_flag VARCHAR2(1);
6229   BEGIN
6230     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6231       hz_utility_v2pub.debug(p_message=>'get_search_criteria(+) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6232     END IF;
6233     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6234       hz_utility_v2pub.debug(p_message=>'Rule ID '||p_rule_id,p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_statement);
6235     END IF;
6236 
6237     -- Initialize return status and message stack
6238     x_return_status := FND_API.G_RET_STS_SUCCESS;
6239     IF FND_API.to_Boolean(p_init_msg_list) THEN
6240       FND_MSG_PUB.initialize;
6241     END IF;
6242 
6243     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
6244       -- No MATCH RULE FOUND
6245       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
6246       FND_MSG_PUB.ADD;
6247       RAISE FND_API.G_EXC_ERROR;
6248     END IF;
6249     OPEN c_match_rule;
6250     FETCH c_match_rule INTO l_cmp_flag;
6251     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
6252       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
6253       FND_MSG_PUB.ADD;
6254       RAISE FND_API.G_EXC_ERROR;
6255     END IF;
6256     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
6257     IF p_rule_id=2 THEN 
6258       IF NOT HZ_MATCH_RULE_2.check_staged THEN
6259         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6260         FND_MSG_PUB.ADD;
6261         RAISE FND_API.G_EXC_ERROR;
6262       END IF;
6263       HZ_MATCH_RULE_2.get_search_criteria(
6264         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6265         x_contact_list, x_contact_point_list);
6266     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
6267     ELSIF p_rule_id=3 THEN 
6268       IF NOT HZ_MATCH_RULE_3.check_staged THEN
6269         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6270         FND_MSG_PUB.ADD;
6271         RAISE FND_API.G_EXC_ERROR;
6272       END IF;
6273       HZ_MATCH_RULE_3.get_search_criteria(
6274         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6275         x_contact_list, x_contact_point_list);
6276     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
6277     ELSIF p_rule_id=4 THEN 
6278       IF NOT HZ_MATCH_RULE_4.check_staged THEN
6279         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6280         FND_MSG_PUB.ADD;
6281         RAISE FND_API.G_EXC_ERROR;
6282       END IF;
6283       HZ_MATCH_RULE_4.get_search_criteria(
6284         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6285         x_contact_list, x_contact_point_list);
6286     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
6287     ELSIF p_rule_id=5 THEN 
6288       IF NOT HZ_MATCH_RULE_5.check_staged THEN
6289         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6290         FND_MSG_PUB.ADD;
6291         RAISE FND_API.G_EXC_ERROR;
6292       END IF;
6293       HZ_MATCH_RULE_5.get_search_criteria(
6294         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6295         x_contact_list, x_contact_point_list);
6296     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
6297     ELSIF p_rule_id=6 THEN 
6298       IF NOT HZ_MATCH_RULE_6.check_staged THEN
6299         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6300         FND_MSG_PUB.ADD;
6301         RAISE FND_API.G_EXC_ERROR;
6302       END IF;
6303       HZ_MATCH_RULE_6.get_search_criteria(
6304         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6305         x_contact_list, x_contact_point_list);
6306     -- Code for Match rule SAMPLE: SIMILAR_PERSON
6307     ELSIF p_rule_id=7 THEN 
6308       IF NOT HZ_MATCH_RULE_7.check_staged THEN
6309         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6310         FND_MSG_PUB.ADD;
6311         RAISE FND_API.G_EXC_ERROR;
6312       END IF;
6313       HZ_MATCH_RULE_7.get_search_criteria(
6314         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6315         x_contact_list, x_contact_point_list);
6316     -- Code for Match rule SAMPLE: SEARCH
6317     ELSIF p_rule_id=8 THEN 
6318       IF NOT HZ_MATCH_RULE_8.check_staged THEN
6319         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6320         FND_MSG_PUB.ADD;
6321         RAISE FND_API.G_EXC_ERROR;
6322       END IF;
6323       HZ_MATCH_RULE_8.get_search_criteria(
6324         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6325         x_contact_list, x_contact_point_list);
6326     -- Code for Match rule RM SEARCH RULE
6327     ELSIF p_rule_id=32 THEN 
6328       IF NOT HZ_MATCH_RULE_32.check_staged THEN
6329         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6330         FND_MSG_PUB.ADD;
6331         RAISE FND_API.G_EXC_ERROR;
6332       END IF;
6333       HZ_MATCH_RULE_32.get_search_criteria(
6334         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6335         x_contact_list, x_contact_point_list);
6336     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
6337     ELSIF p_rule_id=33 THEN 
6338       IF NOT HZ_MATCH_RULE_33.check_staged THEN
6339         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6340         FND_MSG_PUB.ADD;
6341         RAISE FND_API.G_EXC_ERROR;
6342       END IF;
6343       HZ_MATCH_RULE_33.get_search_criteria(
6344         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6345         x_contact_list, x_contact_point_list);
6346     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
6347     ELSIF p_rule_id=34 THEN 
6348       IF NOT HZ_MATCH_RULE_34.check_staged THEN
6349         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6350         FND_MSG_PUB.ADD;
6351         RAISE FND_API.G_EXC_ERROR;
6352       END IF;
6353       HZ_MATCH_RULE_34.get_search_criteria(
6354         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6355         x_contact_list, x_contact_point_list);
6356     -- Code for Match rule DL SMART SEARCH
6357     ELSIF p_rule_id=35 THEN 
6358       IF NOT HZ_MATCH_RULE_35.check_staged THEN
6359         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6360         FND_MSG_PUB.ADD;
6361         RAISE FND_API.G_EXC_ERROR;
6362       END IF;
6363       HZ_MATCH_RULE_35.get_search_criteria(
6364         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6365         x_contact_list, x_contact_point_list);
6366     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
6367     ELSIF p_rule_id=36 THEN 
6368       IF NOT HZ_MATCH_RULE_36.check_staged THEN
6369         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6370         FND_MSG_PUB.ADD;
6371         RAISE FND_API.G_EXC_ERROR;
6372       END IF;
6373       HZ_MATCH_RULE_36.get_search_criteria(
6374         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6375         x_contact_list, x_contact_point_list);
6376     -- Code for Match rule DL ADDRESS DEFAULT
6377     ELSIF p_rule_id=37 THEN 
6378       IF NOT HZ_MATCH_RULE_37.check_staged THEN
6379         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6380         FND_MSG_PUB.ADD;
6381         RAISE FND_API.G_EXC_ERROR;
6382       END IF;
6383       HZ_MATCH_RULE_37.get_search_criteria(
6384         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6385         x_contact_list, x_contact_point_list);
6386     -- Code for Match rule DL RELATIONSHIP DEFAULT
6387     ELSIF p_rule_id=38 THEN 
6388       IF NOT HZ_MATCH_RULE_38.check_staged THEN
6389         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6390         FND_MSG_PUB.ADD;
6391         RAISE FND_API.G_EXC_ERROR;
6392       END IF;
6393       HZ_MATCH_RULE_38.get_search_criteria(
6394         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6395         x_contact_list, x_contact_point_list);
6396     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
6397     ELSIF p_rule_id=39 THEN 
6398       IF NOT HZ_MATCH_RULE_39.check_staged THEN
6399         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6400         FND_MSG_PUB.ADD;
6401         RAISE FND_API.G_EXC_ERROR;
6402       END IF;
6403       HZ_MATCH_RULE_39.get_search_criteria(
6404         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6405         x_contact_list, x_contact_point_list);
6406     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
6407     ELSIF p_rule_id=40 THEN 
6408       IF NOT HZ_MATCH_RULE_40.check_staged THEN
6409         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6410         FND_MSG_PUB.ADD;
6411         RAISE FND_API.G_EXC_ERROR;
6412       END IF;
6413       HZ_MATCH_RULE_40.get_search_criteria(
6414         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6415         x_contact_list, x_contact_point_list);
6416     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
6417     ELSIF p_rule_id=41 THEN 
6418       IF NOT HZ_MATCH_RULE_41.check_staged THEN
6419         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6420         FND_MSG_PUB.ADD;
6421         RAISE FND_API.G_EXC_ERROR;
6422       END IF;
6423       HZ_MATCH_RULE_41.get_search_criteria(
6424         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6425         x_contact_list, x_contact_point_list);
6426     -- Code for Match rule SAMPLE: SEARCH EXACT
6427     ELSIF p_rule_id=42 THEN 
6428       IF NOT HZ_MATCH_RULE_42.check_staged THEN
6429         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6430         FND_MSG_PUB.ADD;
6431         RAISE FND_API.G_EXC_ERROR;
6432       END IF;
6433       HZ_MATCH_RULE_42.get_search_criteria(
6434         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6435         x_contact_list, x_contact_point_list);
6436     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
6437     ELSIF p_rule_id=48 THEN 
6438       IF NOT HZ_MATCH_RULE_48.check_staged THEN
6439         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6440         FND_MSG_PUB.ADD;
6441         RAISE FND_API.G_EXC_ERROR;
6442       END IF;
6443       HZ_MATCH_RULE_48.get_search_criteria(
6444         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6445         x_contact_list, x_contact_point_list);
6446     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
6447     ELSIF p_rule_id=50 THEN 
6448       IF NOT HZ_MATCH_RULE_50.check_staged THEN
6449         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6450         FND_MSG_PUB.ADD;
6451         RAISE FND_API.G_EXC_ERROR;
6452       END IF;
6453       HZ_MATCH_RULE_50.get_search_criteria(
6454         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6455         x_contact_list, x_contact_point_list);
6456     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
6457     ELSIF p_rule_id=51 THEN 
6458       IF NOT HZ_MATCH_RULE_51.check_staged THEN
6459         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6460         FND_MSG_PUB.ADD;
6461         RAISE FND_API.G_EXC_ERROR;
6462       END IF;
6463       HZ_MATCH_RULE_51.get_search_criteria(
6464         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6465         x_contact_list, x_contact_point_list);
6466     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
6467     ELSIF p_rule_id=52 THEN 
6468       IF NOT HZ_MATCH_RULE_52.check_staged THEN
6469         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6470         FND_MSG_PUB.ADD;
6471         RAISE FND_API.G_EXC_ERROR;
6472       END IF;
6473       HZ_MATCH_RULE_52.get_search_criteria(
6474         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6475         x_contact_list, x_contact_point_list);
6476     -- Code for Match rule CREDIT MANAGEMENT SEARCH
6477     ELSIF p_rule_id=53 THEN 
6478       IF NOT HZ_MATCH_RULE_53.check_staged THEN
6479         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6480         FND_MSG_PUB.ADD;
6481         RAISE FND_API.G_EXC_ERROR;
6482       END IF;
6483       HZ_MATCH_RULE_53.get_search_criteria(
6484         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6485         x_contact_list, x_contact_point_list);
6486     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
6487     ELSIF p_rule_id=58 THEN 
6488       IF NOT HZ_MATCH_RULE_58.check_staged THEN
6489         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6490         FND_MSG_PUB.ADD;
6491         RAISE FND_API.G_EXC_ERROR;
6492       END IF;
6493       HZ_MATCH_RULE_58.get_search_criteria(
6494         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6495         x_contact_list, x_contact_point_list);
6496     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
6497     ELSIF p_rule_id=60 THEN 
6498       IF NOT HZ_MATCH_RULE_60.check_staged THEN
6499         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6500         FND_MSG_PUB.ADD;
6501         RAISE FND_API.G_EXC_ERROR;
6502       END IF;
6503       HZ_MATCH_RULE_60.get_search_criteria(
6504         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6505         x_contact_list, x_contact_point_list);
6506     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
6507     ELSIF p_rule_id=61 THEN 
6508       IF NOT HZ_MATCH_RULE_61.check_staged THEN
6509         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6510         FND_MSG_PUB.ADD;
6511         RAISE FND_API.G_EXC_ERROR;
6512       END IF;
6513       HZ_MATCH_RULE_61.get_search_criteria(
6514         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6515         x_contact_list, x_contact_point_list);
6516     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
6517     ELSIF p_rule_id=62 THEN 
6518       IF NOT HZ_MATCH_RULE_62.check_staged THEN
6519         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6520         FND_MSG_PUB.ADD;
6521         RAISE FND_API.G_EXC_ERROR;
6522       END IF;
6523       HZ_MATCH_RULE_62.get_search_criteria(
6524         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6525         x_contact_list, x_contact_point_list);
6526     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
6527     ELSIF p_rule_id=98 THEN 
6528       IF NOT HZ_MATCH_RULE_98.check_staged THEN
6529         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6530         FND_MSG_PUB.ADD;
6531         RAISE FND_API.G_EXC_ERROR;
6532       END IF;
6533       HZ_MATCH_RULE_98.get_search_criteria(
6534         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6535         x_contact_list, x_contact_point_list);
6536     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
6537     ELSIF p_rule_id=99 THEN 
6538       IF NOT HZ_MATCH_RULE_99.check_staged THEN
6539         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6540         FND_MSG_PUB.ADD;
6541         RAISE FND_API.G_EXC_ERROR;
6542       END IF;
6543       HZ_MATCH_RULE_99.get_search_criteria(
6544         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6545         x_contact_list, x_contact_point_list);
6546     END IF;
6547     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6548       hz_utility_v2pub.debug(p_message=>'get_search_criteria(-) ',p_module_prefix=>'dqm',p_module=>'hz_match_rule_xxx',p_prefix=>NULL,p_msg_level=>fnd_log.level_procedure);
6549     END IF;
6550   --Standard call to get message count and if count is 1, get message info
6551   FND_MSG_PUB.Count_And_Get(
6552     p_encoded => FND_API.G_FALSE,
6553     p_count => x_msg_count,
6554     p_data  => x_msg_data);
6555   EXCEPTION
6556        WHEN FND_API.G_EXC_ERROR THEN
6557                x_return_status := FND_API.G_RET_STS_ERROR;
6558                FND_MSG_PUB.Count_And_Get(
6559                                p_encoded => FND_API.G_FALSE,
6560                                p_count => x_msg_count,
6561                                p_data  => x_msg_data);
6562        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6563                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6564                FND_MSG_PUB.Count_And_Get(
6565                                p_encoded => FND_API.G_FALSE,
6566                                p_count => x_msg_count,
6567                                p_data  => x_msg_data);
6568 
6569        WHEN OTHERS THEN
6570                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6571                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6572                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
6573                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6574                FND_MSG_PUB.ADD;
6575 
6576                FND_MSG_PUB.Count_And_Get(
6577                                p_encoded => FND_API.G_FALSE,
6578                                p_count => x_msg_count,
6579                                p_data  => x_msg_data);
6580   END;
6581 END;