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  |      28-NOV-2012 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     -- Code for Match rule Web Services: Identical Organizations
399     ELSIF p_rule_id=238 THEN 
400       IF NOT HZ_MATCH_RULE_238.check_staged THEN
401         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
402         FND_MSG_PUB.ADD;
403         RAISE FND_API.G_EXC_ERROR;
404       END IF;
405       HZ_MATCH_RULE_238.find_parties(
406         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
407         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
408     -- Code for Match rule Web Services: Identical Persons
409     ELSIF p_rule_id=240 THEN 
410       IF NOT HZ_MATCH_RULE_240.check_staged THEN
411         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
412         FND_MSG_PUB.ADD;
413         RAISE FND_API.G_EXC_ERROR;
414       END IF;
415       HZ_MATCH_RULE_240.find_parties(
416         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
417         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,NULL,NULL,NULL,'N',x_search_ctx_id,x_num_matches);
418     END IF;
419  -- User quality score 
420  IF (fnd_profile.value('HZ_QUALITY_WEIGHTING_USER_HOOK') = 'Y')  THEN  
421      HZ_DQM_SEARCH_UTIL.get_quality_score ( x_search_ctx_id, p_rule_id); 
422   END IF; 
423     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
424       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);
425     END IF;
426   --Standard call to get message count and if count is 1, get message info
427   FND_MSG_PUB.Count_And_Get(
428     p_encoded => FND_API.G_FALSE,
429     p_count => x_msg_count,
430     p_data  => x_msg_data);
431   EXCEPTION
432        WHEN FND_API.G_EXC_ERROR THEN
433                x_return_status := FND_API.G_RET_STS_ERROR;
434                FND_MSG_PUB.Count_And_Get(
435                                p_encoded => FND_API.G_FALSE,
436                                p_count => x_msg_count,
437                                p_data  => x_msg_data);
438        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
439                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
440                FND_MSG_PUB.Count_And_Get(
441                                p_encoded => FND_API.G_FALSE,
442                                p_count => x_msg_count,
443                                p_data  => x_msg_data);
444 
445        WHEN OTHERS THEN
446                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
447                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
448                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
449                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
450                FND_MSG_PUB.ADD;
451 
452                FND_MSG_PUB.Count_And_Get(
453                                p_encoded => FND_API.G_FALSE,
454                                p_count => x_msg_count,
455                                p_data  => x_msg_data);
456   END;
457 
458   PROCEDURE find_persons (
459       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
460       p_rule_id               IN      NUMBER,
461       p_party_search_rec      IN      party_search_rec_type,
462       p_party_site_list       IN      party_site_list,
463       p_contact_list          IN      contact_list,
464       p_contact_point_list    IN      contact_point_list,
465       p_restrict_sql          IN      VARCHAR2,
466       p_match_type            IN      VARCHAR2,
467       p_search_merged         IN      VARCHAR2, 
468       x_search_ctx_id         OUT     NUMBER,
469       x_num_matches           OUT     NUMBER,
470       x_return_status         OUT     VARCHAR2,
471       x_msg_count             OUT     NUMBER,
472       x_msg_data              OUT     VARCHAR2
473 ) IS
474   CURSOR c_match_rule IS 
475     SELECT COMPILATION_FLAG 
476     FROM HZ_MATCH_RULES_VL 
477     WHERE MATCH_RULE_ID = p_rule_id;
478   l_cmp_flag VARCHAR2(1);
479   BEGIN
480 
481     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
482       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);
483     END IF;
484     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
485       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);
486     END IF;
487     -- Initialize return status and message stack
488     x_return_status := FND_API.G_RET_STS_SUCCESS;
489     IF FND_API.to_Boolean(p_init_msg_list) THEN
490       FND_MSG_PUB.initialize;
491     END IF;
492 
493     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
494       -- Find the match rule
495       null;
496 
497       -- No MATCH RULE FOUND
498       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
499       FND_MSG_PUB.ADD;
500       RAISE FND_API.G_EXC_ERROR;
501     END IF;
502     OPEN c_match_rule;
503     FETCH c_match_rule INTO l_cmp_flag;
504     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
505       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
506       FND_MSG_PUB.ADD;
507       RAISE FND_API.G_EXC_ERROR;
508     END IF;
509     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
510     IF p_rule_id=2 THEN 
511       IF NOT HZ_MATCH_RULE_2.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_2.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: PERSON_OPTIMIZED
520     ELSIF p_rule_id=3 THEN 
521       IF NOT HZ_MATCH_RULE_3.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_3.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: ADDRESS_ORGANIZATIONS
530     ELSIF p_rule_id=4 THEN 
531       IF NOT HZ_MATCH_RULE_4.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_4.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: ADDRESS_PERSONS
540     ELSIF p_rule_id=5 THEN 
541       IF NOT HZ_MATCH_RULE_5.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_5.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: SIMILAR_ORGANIZATION
550     ELSIF p_rule_id=6 THEN 
551       IF NOT HZ_MATCH_RULE_6.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_6.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 SAMPLE: SIMILAR_PERSON
560     ELSIF p_rule_id=7 THEN 
561       IF NOT HZ_MATCH_RULE_7.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_7.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: SEARCH
570     ELSIF p_rule_id=8 THEN 
571       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
580     ELSIF p_rule_id=32 THEN 
581       IF NOT HZ_MATCH_RULE_32.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_32.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 SAMPLE:BASIC SEARCH RULE
590     ELSIF p_rule_id=33 THEN 
591       IF NOT HZ_MATCH_RULE_33.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_33.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 SAMPLE:ADVANCED SEARCH RULE
600     ELSIF p_rule_id=34 THEN 
601       IF NOT HZ_MATCH_RULE_34.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_34.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 SMART SEARCH
610     ELSIF p_rule_id=35 THEN 
611       IF NOT HZ_MATCH_RULE_35.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_35.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 ADDRESS AND RELATIONSHIP SEARCH
620     ELSIF p_rule_id=36 THEN 
621       IF NOT HZ_MATCH_RULE_36.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_36.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 DL ADDRESS DEFAULT
630     ELSIF p_rule_id=37 THEN 
631       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
640     ELSIF p_rule_id=38 THEN 
641       IF NOT HZ_MATCH_RULE_38.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_38.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 ADDRESS ORGANIZATIONS EXACT
650     ELSIF p_rule_id=39 THEN 
651       IF NOT HZ_MATCH_RULE_39.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_39.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 SIMILAR ORGANIZATION EXACT
660     ELSIF p_rule_id=40 THEN 
661       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
670     ELSIF p_rule_id=41 THEN 
671       IF NOT HZ_MATCH_RULE_41.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_41.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 SAMPLE: SEARCH EXACT
680     ELSIF p_rule_id=42 THEN 
681       IF NOT HZ_MATCH_RULE_42.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_42.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 DL SYSTEM DUPLICATE IDENTIFICATION
690     ELSIF p_rule_id=48 THEN 
691       IF NOT HZ_MATCH_RULE_48.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_48.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 ORGANIZATIONS
700     ELSIF p_rule_id=50 THEN 
701       IF NOT HZ_MATCH_RULE_50.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_50.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 BULK MATCH: IDENTICAL PERSONS
710     ELSIF p_rule_id=51 THEN 
711       IF NOT HZ_MATCH_RULE_51.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_51.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 BULK MATCH: IDENTICAL PARTIES
720     ELSIF p_rule_id=52 THEN 
721       IF NOT HZ_MATCH_RULE_52.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_52.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 CREDIT MANAGEMENT SEARCH
730     ELSIF p_rule_id=53 THEN 
731       IF NOT HZ_MATCH_RULE_53.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_53.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_PERSON_SIMPLE_SEARCH_RULE
740     ELSIF p_rule_id=58 THEN 
741       IF NOT HZ_MATCH_RULE_58.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_58.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_PERSON_ADVANCED_SEARCH_MATCH_RULE
750     ELSIF p_rule_id=60 THEN 
751       IF NOT HZ_MATCH_RULE_60.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_60.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_ORG_SIMPLE_SEARCH_RULE
760     ELSIF p_rule_id=61 THEN 
761       IF NOT HZ_MATCH_RULE_61.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_61.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_ORG_ADV_SEARCH_RULE
770     ELSIF p_rule_id=62 THEN 
771       IF NOT HZ_MATCH_RULE_62.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_62.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     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
780     ELSIF p_rule_id=98 THEN 
781       IF NOT HZ_MATCH_RULE_98.check_staged THEN
782         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
783         FND_MSG_PUB.ADD;
784         RAISE FND_API.G_EXC_ERROR;
785       END IF;
786       HZ_MATCH_RULE_98.find_persons(
787         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
788         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
789     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
790     ELSIF p_rule_id=99 THEN 
791       IF NOT HZ_MATCH_RULE_99.check_staged THEN
792         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
793         FND_MSG_PUB.ADD;
794         RAISE FND_API.G_EXC_ERROR;
795       END IF;
796       HZ_MATCH_RULE_99.find_persons(
797         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
798         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
799     -- Code for Match rule Web Services: Identical Organizations
800     ELSIF p_rule_id=238 THEN 
801       IF NOT HZ_MATCH_RULE_238.check_staged THEN
802         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
803         FND_MSG_PUB.ADD;
804         RAISE FND_API.G_EXC_ERROR;
805       END IF;
806       HZ_MATCH_RULE_238.find_persons(
807         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
808         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
809     -- Code for Match rule Web Services: Identical Persons
810     ELSIF p_rule_id=240 THEN 
811       IF NOT HZ_MATCH_RULE_240.check_staged THEN
812         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
813         FND_MSG_PUB.ADD;
814         RAISE FND_API.G_EXC_ERROR;
815       END IF;
816       HZ_MATCH_RULE_240.find_persons(
817         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
818         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,'N',x_search_ctx_id,x_num_matches);
819     END IF;
820     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
821       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);
822     END IF;
823   --Standard call to get message count and if count is 1, get message info
824   FND_MSG_PUB.Count_And_Get(
825     p_encoded => FND_API.G_FALSE,
826     p_count => x_msg_count,
827     p_data  => x_msg_data);
828   EXCEPTION
829        WHEN FND_API.G_EXC_ERROR THEN
830                x_return_status := FND_API.G_RET_STS_ERROR;
831                FND_MSG_PUB.Count_And_Get(
832                                p_encoded => FND_API.G_FALSE,
833                                p_count => x_msg_count,
834                                p_data  => x_msg_data);
835        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
836                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
837                FND_MSG_PUB.Count_And_Get(
838                                p_encoded => FND_API.G_FALSE,
839                                p_count => x_msg_count,
840                                p_data  => x_msg_data);
841 
842        WHEN OTHERS THEN
843                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
844                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
845                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
846                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
847                FND_MSG_PUB.ADD;
848 
849                FND_MSG_PUB.Count_And_Get(
850                                p_encoded => FND_API.G_FALSE,
851                                p_count => x_msg_count,
852                                p_data  => x_msg_data);
853   END;
854 
855   PROCEDURE find_persons (
856       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
857       p_rule_id               IN      NUMBER,
858       p_party_search_rec      IN      party_search_rec_type,
859       p_party_site_list       IN      party_site_list,
860       p_contact_list          IN      contact_list,
861       p_contact_point_list    IN      contact_point_list,
862       p_restrict_sql          IN      VARCHAR2,
863       p_match_type            IN      VARCHAR2,
864       x_search_ctx_id         OUT     NUMBER,
865       x_num_matches           OUT     NUMBER,
866       x_return_status         OUT     VARCHAR2,
867       x_msg_count             OUT     NUMBER,
868       x_msg_data              OUT     VARCHAR2
869 ) IS
870   BEGIN
871   	find_persons (
872       p_init_msg_list,p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list, 
873       p_restrict_sql ,p_match_type,NULL,x_search_ctx_id,x_num_matches,x_return_status,
874       x_msg_count,x_msg_data);
875   END;
876 
877   PROCEDURE find_party_details (
878       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
879       p_rule_id               IN      NUMBER,
880       p_party_search_rec      IN      party_search_rec_type,
881       p_party_site_list       IN      party_site_list,
882       p_contact_list          IN      contact_list,
883       p_contact_point_list    IN      contact_point_list,
884       p_restrict_sql          IN      VARCHAR2,
885       p_match_type            IN      VARCHAR2,
886       p_search_merged         IN      VARCHAR2,
887       x_search_ctx_id         OUT     NUMBER,
888       x_num_matches           OUT     NUMBER,
889       x_return_status         OUT     VARCHAR2,
890       x_msg_count             OUT     NUMBER,
891       x_msg_data              OUT     VARCHAR2
892 ) IS
893   CURSOR c_match_rule IS 
894     SELECT COMPILATION_FLAG 
895     FROM HZ_MATCH_RULES_VL 
896     WHERE MATCH_RULE_ID = p_rule_id;
897   l_cmp_flag VARCHAR2(1);
898   BEGIN
899     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
900       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);
901     END IF;
902     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
903       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);
904     END IF;
905 
906     -- Initialize return status and message stack
907     x_return_status := FND_API.G_RET_STS_SUCCESS;
908     IF FND_API.to_Boolean(p_init_msg_list) THEN
909       FND_MSG_PUB.initialize;
910     END IF;
911 
912     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
913       -- Find the match rule
914       null;
915 
916       -- No MATCH RULE FOUND
917       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
918       FND_MSG_PUB.ADD;
919       RAISE FND_API.G_EXC_ERROR;
920     END IF;
921     OPEN c_match_rule;
922     FETCH c_match_rule INTO l_cmp_flag;
923     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
924       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
925       FND_MSG_PUB.ADD;
926       RAISE FND_API.G_EXC_ERROR;
927     END IF;
928     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
929     IF p_rule_id=2 THEN 
930       IF NOT HZ_MATCH_RULE_2.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_2.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: PERSON_OPTIMIZED
939     ELSIF p_rule_id=3 THEN 
940       IF NOT HZ_MATCH_RULE_3.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_3.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: ADDRESS_ORGANIZATIONS
949     ELSIF p_rule_id=4 THEN 
950       IF NOT HZ_MATCH_RULE_4.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_4.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 SAMPLE: ADDRESS_PERSONS
959     ELSIF p_rule_id=5 THEN 
960       IF NOT HZ_MATCH_RULE_5.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_5.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: SIMILAR_ORGANIZATION
969     ELSIF p_rule_id=6 THEN 
970       IF NOT HZ_MATCH_RULE_6.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_6.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: SIMILAR_PERSON
979     ELSIF p_rule_id=7 THEN 
980       IF NOT HZ_MATCH_RULE_7.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_7.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 SAMPLE: SEARCH
989     ELSIF p_rule_id=8 THEN 
990       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
999     ELSIF p_rule_id=32 THEN 
1000       IF NOT HZ_MATCH_RULE_32.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_32.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 SAMPLE:BASIC SEARCH RULE
1009     ELSIF p_rule_id=33 THEN 
1010       IF NOT HZ_MATCH_RULE_33.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_33.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 SAMPLE:ADVANCED SEARCH RULE
1019     ELSIF p_rule_id=34 THEN 
1020       IF NOT HZ_MATCH_RULE_34.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_34.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 DL SMART SEARCH
1029     ELSIF p_rule_id=35 THEN 
1030       IF NOT HZ_MATCH_RULE_35.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_35.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 DL ADDRESS AND RELATIONSHIP SEARCH
1039     ELSIF p_rule_id=36 THEN 
1040       IF NOT HZ_MATCH_RULE_36.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_36.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 DL ADDRESS DEFAULT
1049     ELSIF p_rule_id=37 THEN 
1050       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
1059     ELSIF p_rule_id=38 THEN 
1060       IF NOT HZ_MATCH_RULE_38.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_38.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 SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1069     ELSIF p_rule_id=39 THEN 
1070       IF NOT HZ_MATCH_RULE_39.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_39.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 SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1079     ELSIF p_rule_id=40 THEN 
1080       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
1089     ELSIF p_rule_id=41 THEN 
1090       IF NOT HZ_MATCH_RULE_41.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_41.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 SAMPLE: SEARCH EXACT
1099     ELSIF p_rule_id=42 THEN 
1100       IF NOT HZ_MATCH_RULE_42.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_42.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 DL SYSTEM DUPLICATE IDENTIFICATION
1109     ELSIF p_rule_id=48 THEN 
1110       IF NOT HZ_MATCH_RULE_48.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_48.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 BULK MATCH: IDENTICAL ORGANIZATIONS
1119     ELSIF p_rule_id=50 THEN 
1120       IF NOT HZ_MATCH_RULE_50.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_50.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 BULK MATCH: IDENTICAL PERSONS
1129     ELSIF p_rule_id=51 THEN 
1130       IF NOT HZ_MATCH_RULE_51.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_51.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 BULK MATCH: IDENTICAL PARTIES
1139     ELSIF p_rule_id=52 THEN 
1140       IF NOT HZ_MATCH_RULE_52.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_52.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 CREDIT MANAGEMENT SEARCH
1149     ELSIF p_rule_id=53 THEN 
1150       IF NOT HZ_MATCH_RULE_53.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_53.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_PERSON_SIMPLE_SEARCH_RULE
1159     ELSIF p_rule_id=58 THEN 
1160       IF NOT HZ_MATCH_RULE_58.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_58.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_PERSON_ADVANCED_SEARCH_MATCH_RULE
1169     ELSIF p_rule_id=60 THEN 
1170       IF NOT HZ_MATCH_RULE_60.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_60.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     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1179     ELSIF p_rule_id=61 THEN 
1180       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1181         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1182         FND_MSG_PUB.ADD;
1183         RAISE FND_API.G_EXC_ERROR;
1184       END IF;
1185       HZ_MATCH_RULE_61.find_party_details(
1186         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1187         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1188     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1189     ELSIF p_rule_id=62 THEN 
1190       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1191         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1192         FND_MSG_PUB.ADD;
1193         RAISE FND_API.G_EXC_ERROR;
1194       END IF;
1195       HZ_MATCH_RULE_62.find_party_details(
1196         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1197         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1198     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1199     ELSIF p_rule_id=98 THEN 
1200       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1201         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1202         FND_MSG_PUB.ADD;
1203         RAISE FND_API.G_EXC_ERROR;
1204       END IF;
1205       HZ_MATCH_RULE_98.find_party_details(
1206         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1207         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1208     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
1209     ELSIF p_rule_id=99 THEN 
1210       IF NOT HZ_MATCH_RULE_99.check_staged THEN
1211         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1212         FND_MSG_PUB.ADD;
1213         RAISE FND_API.G_EXC_ERROR;
1214       END IF;
1215       HZ_MATCH_RULE_99.find_party_details(
1216         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1217         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1218     -- Code for Match rule Web Services: Identical Organizations
1219     ELSIF p_rule_id=238 THEN 
1220       IF NOT HZ_MATCH_RULE_238.check_staged THEN
1221         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1222         FND_MSG_PUB.ADD;
1223         RAISE FND_API.G_EXC_ERROR;
1224       END IF;
1225       HZ_MATCH_RULE_238.find_party_details(
1226         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1227         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1228     -- Code for Match rule Web Services: Identical Persons
1229     ELSIF p_rule_id=240 THEN 
1230       IF NOT HZ_MATCH_RULE_240.check_staged THEN
1231         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1232         FND_MSG_PUB.ADD;
1233         RAISE FND_API.G_EXC_ERROR;
1234       END IF;
1235       HZ_MATCH_RULE_240.find_party_details(
1236         p_rule_id,p_party_search_rec,p_party_site_list,p_contact_list,
1237         p_contact_point_list,p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
1238     END IF;
1239     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1240       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);
1241     END IF;
1242   --Standard call to get message count and if count is 1, get message info
1243   FND_MSG_PUB.Count_And_Get(
1244     p_encoded => FND_API.G_FALSE,
1245     p_count => x_msg_count,
1246     p_data  => x_msg_data);
1247   EXCEPTION
1248        WHEN FND_API.G_EXC_ERROR THEN
1249                x_return_status := FND_API.G_RET_STS_ERROR;
1250                FND_MSG_PUB.Count_And_Get(
1251                                p_encoded => FND_API.G_FALSE,
1252                                p_count => x_msg_count,
1253                                p_data  => x_msg_data);
1254        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1255                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1256                FND_MSG_PUB.Count_And_Get(
1257                                p_encoded => FND_API.G_FALSE,
1258                                p_count => x_msg_count,
1259                                p_data  => x_msg_data);
1260 
1261        WHEN OTHERS THEN
1262                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1263                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
1264                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
1265                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1266                FND_MSG_PUB.ADD;
1267 
1268                FND_MSG_PUB.Count_And_Get(
1269                                p_encoded => FND_API.G_FALSE,
1270                                p_count => x_msg_count,
1271                                p_data  => x_msg_data);
1272   END;
1273 
1274   PROCEDURE find_duplicate_parties (
1275       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
1276       p_rule_id               IN      NUMBER,
1277       p_party_id              IN      NUMBER,
1278       p_restrict_sql          IN      VARCHAR2,
1279       p_match_type            IN      VARCHAR2,
1280       p_dup_batch_id          IN      NUMBER,
1281       p_search_merged         IN      VARCHAR2,
1282       x_dup_set_id            OUT     NUMBER,
1283       x_search_ctx_id         OUT     NUMBER,
1284       x_num_matches           OUT     NUMBER,
1285       x_return_status         OUT     VARCHAR2,
1286       x_msg_count             OUT     NUMBER,
1287       x_msg_data              OUT     VARCHAR2
1288 ) IS
1289   CURSOR c_match_rule IS 
1290     SELECT COMPILATION_FLAG 
1291     FROM HZ_MATCH_RULES_VL 
1292     WHERE MATCH_RULE_ID = p_rule_id;
1293   l_cmp_flag VARCHAR2(1);
1294   BEGIN
1295     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1296       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);
1297     END IF;
1298     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1299       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);
1300     END IF;
1301 
1302     -- Initialize return status and message stack
1303     x_return_status := FND_API.G_RET_STS_SUCCESS;
1304     IF FND_API.to_Boolean(p_init_msg_list) THEN
1305       FND_MSG_PUB.initialize;
1306     END IF;
1307 
1308     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
1309       -- Find the match rule
1310       null;
1311 
1312       -- No MATCH RULE FOUND
1313       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
1314       FND_MSG_PUB.ADD;
1315       RAISE FND_API.G_EXC_ERROR;
1316     END IF;
1317     IF g_last_rule<>p_rule_id OR NOT g_last_rule_valid THEN
1318       OPEN c_match_rule;
1319       FETCH c_match_rule INTO l_cmp_flag;
1320       IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
1321         FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
1322         FND_MSG_PUB.ADD;
1323         RAISE FND_API.G_EXC_ERROR;
1324       END IF;
1325       g_last_rule := p_rule_id;
1326       g_last_rule_valid := TRUE;
1327     END IF;
1328     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
1329     IF p_rule_id=2 THEN 
1330       IF NOT HZ_MATCH_RULE_2.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_2.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 SAMPLE: PERSON_OPTIMIZED
1339     ELSIF p_rule_id=3 THEN 
1340       IF NOT HZ_MATCH_RULE_3.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_3.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: ADDRESS_ORGANIZATIONS
1349     ELSIF p_rule_id=4 THEN 
1350       IF NOT HZ_MATCH_RULE_4.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_4.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: ADDRESS_PERSONS
1359     ELSIF p_rule_id=5 THEN 
1360       IF NOT HZ_MATCH_RULE_5.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_5.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 SAMPLE: SIMILAR_ORGANIZATION
1369     ELSIF p_rule_id=6 THEN 
1370       IF NOT HZ_MATCH_RULE_6.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_6.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 SAMPLE: SIMILAR_PERSON
1379     ELSIF p_rule_id=7 THEN 
1380       IF NOT HZ_MATCH_RULE_7.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_7.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 SAMPLE: SEARCH
1389     ELSIF p_rule_id=8 THEN 
1390       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
1399     ELSIF p_rule_id=32 THEN 
1400       IF NOT HZ_MATCH_RULE_32.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_32.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:BASIC SEARCH RULE
1409     ELSIF p_rule_id=33 THEN 
1410       IF NOT HZ_MATCH_RULE_33.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_33.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:ADVANCED SEARCH RULE
1419     ELSIF p_rule_id=34 THEN 
1420       IF NOT HZ_MATCH_RULE_34.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_34.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 DL SMART SEARCH
1429     ELSIF p_rule_id=35 THEN 
1430       IF NOT HZ_MATCH_RULE_35.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_35.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 DL ADDRESS AND RELATIONSHIP SEARCH
1439     ELSIF p_rule_id=36 THEN 
1440       IF NOT HZ_MATCH_RULE_36.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_36.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 ADDRESS DEFAULT
1449     ELSIF p_rule_id=37 THEN 
1450       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
1459     ELSIF p_rule_id=38 THEN 
1460       IF NOT HZ_MATCH_RULE_38.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_38.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 SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1469     ELSIF p_rule_id=39 THEN 
1470       IF NOT HZ_MATCH_RULE_39.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_39.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 SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1479     ELSIF p_rule_id=40 THEN 
1480       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
1489     ELSIF p_rule_id=41 THEN 
1490       IF NOT HZ_MATCH_RULE_41.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_41.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 SAMPLE: SEARCH EXACT
1499     ELSIF p_rule_id=42 THEN 
1500       IF NOT HZ_MATCH_RULE_42.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_42.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 DL SYSTEM DUPLICATE IDENTIFICATION
1509     ELSIF p_rule_id=48 THEN 
1510       IF NOT HZ_MATCH_RULE_48.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_48.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 BULK MATCH: IDENTICAL ORGANIZATIONS
1519     ELSIF p_rule_id=50 THEN 
1520       IF NOT HZ_MATCH_RULE_50.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_50.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 BULK MATCH: IDENTICAL PERSONS
1529     ELSIF p_rule_id=51 THEN 
1530       IF NOT HZ_MATCH_RULE_51.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_51.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 BULK MATCH: IDENTICAL PARTIES
1539     ELSIF p_rule_id=52 THEN 
1540       IF NOT HZ_MATCH_RULE_52.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_52.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 CREDIT MANAGEMENT SEARCH
1549     ELSIF p_rule_id=53 THEN 
1550       IF NOT HZ_MATCH_RULE_53.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_53.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     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
1559     ELSIF p_rule_id=58 THEN 
1560       IF NOT HZ_MATCH_RULE_58.check_staged THEN
1561         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1562         FND_MSG_PUB.ADD;
1563         RAISE FND_API.G_EXC_ERROR;
1564       END IF;
1565       HZ_MATCH_RULE_58.find_duplicate_parties(
1566         p_rule_id,p_party_id,
1567         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1568     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
1569     ELSIF p_rule_id=60 THEN 
1570       IF NOT HZ_MATCH_RULE_60.check_staged THEN
1571         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1572         FND_MSG_PUB.ADD;
1573         RAISE FND_API.G_EXC_ERROR;
1574       END IF;
1575       HZ_MATCH_RULE_60.find_duplicate_parties(
1576         p_rule_id,p_party_id,
1577         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1578     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1579     ELSIF p_rule_id=61 THEN 
1580       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1581         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1582         FND_MSG_PUB.ADD;
1583         RAISE FND_API.G_EXC_ERROR;
1584       END IF;
1585       HZ_MATCH_RULE_61.find_duplicate_parties(
1586         p_rule_id,p_party_id,
1587         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1588     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1589     ELSIF p_rule_id=62 THEN 
1590       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1591         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1592         FND_MSG_PUB.ADD;
1593         RAISE FND_API.G_EXC_ERROR;
1594       END IF;
1595       HZ_MATCH_RULE_62.find_duplicate_parties(
1596         p_rule_id,p_party_id,
1597         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1598     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1599     ELSIF p_rule_id=98 THEN 
1600       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1601         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1602         FND_MSG_PUB.ADD;
1603         RAISE FND_API.G_EXC_ERROR;
1604       END IF;
1605       HZ_MATCH_RULE_98.find_duplicate_parties(
1606         p_rule_id,p_party_id,
1607         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1608     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
1609     ELSIF p_rule_id=99 THEN 
1610       IF NOT HZ_MATCH_RULE_99.check_staged THEN
1611         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1612         FND_MSG_PUB.ADD;
1613         RAISE FND_API.G_EXC_ERROR;
1614       END IF;
1615       HZ_MATCH_RULE_99.find_duplicate_parties(
1616         p_rule_id,p_party_id,
1617         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1618     -- Code for Match rule Web Services: Identical Organizations
1619     ELSIF p_rule_id=238 THEN 
1620       IF NOT HZ_MATCH_RULE_238.check_staged THEN
1621         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1622         FND_MSG_PUB.ADD;
1623         RAISE FND_API.G_EXC_ERROR;
1624       END IF;
1625       HZ_MATCH_RULE_238.find_duplicate_parties(
1626         p_rule_id,p_party_id,
1627         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1628     -- Code for Match rule Web Services: Identical Persons
1629     ELSIF p_rule_id=240 THEN 
1630       IF NOT HZ_MATCH_RULE_240.check_staged THEN
1631         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1632         FND_MSG_PUB.ADD;
1633         RAISE FND_API.G_EXC_ERROR;
1634       END IF;
1635       HZ_MATCH_RULE_240.find_duplicate_parties(
1636         p_rule_id,p_party_id,
1637         p_restrict_sql,p_match_type,p_dup_batch_id,p_search_merged,x_dup_set_id, x_search_ctx_id,x_num_matches);
1638     END IF;
1639     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1640       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);
1641     END IF;
1642   --Standard call to get message count and if count is 1, get message info
1643   FND_MSG_PUB.Count_And_Get(
1644     p_encoded => FND_API.G_FALSE,
1645     p_count => x_msg_count,
1646     p_data  => x_msg_data);
1647   EXCEPTION
1648        WHEN FND_API.G_EXC_ERROR THEN
1649                x_return_status := FND_API.G_RET_STS_ERROR;
1650                FND_MSG_PUB.Count_And_Get(
1651                                p_encoded => FND_API.G_FALSE,
1652                                p_count => x_msg_count,
1653                                p_data  => x_msg_data);
1654        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1655                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1656                FND_MSG_PUB.Count_And_Get(
1657                                p_encoded => FND_API.G_FALSE,
1658                                p_count => x_msg_count,
1659                                p_data  => x_msg_data);
1660 
1661        WHEN OTHERS THEN
1662                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1663                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
1664                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
1665                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
1666                FND_MSG_PUB.ADD;
1667 
1668                FND_MSG_PUB.Count_And_Get(
1669                                p_encoded => FND_API.G_FALSE,
1670                                p_count => x_msg_count,
1671                                p_data  => x_msg_data);
1672   END;
1673 
1674 
1675   PROCEDURE find_duplicate_party_sites (
1676       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
1677       p_rule_id               IN      NUMBER,
1678       p_party_site_id         IN      NUMBER,
1679       p_party_id              IN      NUMBER,
1680       p_restrict_sql          IN      VARCHAR2,
1681       p_match_type            IN      VARCHAR2,
1682       x_search_ctx_id         OUT     NUMBER,
1683       x_num_matches           OUT     NUMBER,
1684       x_return_status         OUT     VARCHAR2,
1685       x_msg_count             OUT     NUMBER,
1686       x_msg_data              OUT     VARCHAR2
1687 ) IS
1688   CURSOR c_match_rule IS 
1689     SELECT COMPILATION_FLAG 
1690     FROM HZ_MATCH_RULES_VL 
1691     WHERE MATCH_RULE_ID = p_rule_id;
1692   l_cmp_flag VARCHAR2(1);
1693   BEGIN
1694     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
1695       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);
1696     END IF;
1697     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
1698       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);
1699     END IF;
1700 
1701     -- Initialize return status and message stack
1702     x_return_status := FND_API.G_RET_STS_SUCCESS;
1703     IF FND_API.to_Boolean(p_init_msg_list) THEN
1704       FND_MSG_PUB.initialize;
1705     END IF;
1706 
1707     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
1708       -- Find the match rule
1709       null;
1710 
1711       -- No MATCH RULE FOUND
1712       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
1713       FND_MSG_PUB.ADD;
1714       RAISE FND_API.G_EXC_ERROR;
1715     END IF;
1716     OPEN c_match_rule;
1717     FETCH c_match_rule INTO l_cmp_flag;
1718     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
1719       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
1720       FND_MSG_PUB.ADD;
1721       RAISE FND_API.G_EXC_ERROR;
1722     END IF;
1723     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
1724     IF p_rule_id=2 THEN 
1725       IF NOT HZ_MATCH_RULE_2.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_2.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: PERSON_OPTIMIZED
1734     ELSIF p_rule_id=3 THEN 
1735       IF NOT HZ_MATCH_RULE_3.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_3.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 SAMPLE: ADDRESS_ORGANIZATIONS
1744     ELSIF p_rule_id=4 THEN 
1745       IF NOT HZ_MATCH_RULE_4.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_4.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 SAMPLE: ADDRESS_PERSONS
1754     ELSIF p_rule_id=5 THEN 
1755       IF NOT HZ_MATCH_RULE_5.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_5.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 SAMPLE: SIMILAR_ORGANIZATION
1764     ELSIF p_rule_id=6 THEN 
1765       IF NOT HZ_MATCH_RULE_6.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_6.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 SAMPLE: SIMILAR_PERSON
1774     ELSIF p_rule_id=7 THEN 
1775       IF NOT HZ_MATCH_RULE_7.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_7.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
1784     ELSIF p_rule_id=8 THEN 
1785       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
1794     ELSIF p_rule_id=32 THEN 
1795       IF NOT HZ_MATCH_RULE_32.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_32.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:BASIC SEARCH RULE
1804     ELSIF p_rule_id=33 THEN 
1805       IF NOT HZ_MATCH_RULE_33.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_33.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:ADVANCED SEARCH RULE
1814     ELSIF p_rule_id=34 THEN 
1815       IF NOT HZ_MATCH_RULE_34.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_34.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 SMART SEARCH
1824     ELSIF p_rule_id=35 THEN 
1825       IF NOT HZ_MATCH_RULE_35.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_35.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 DL ADDRESS AND RELATIONSHIP SEARCH
1834     ELSIF p_rule_id=36 THEN 
1835       IF NOT HZ_MATCH_RULE_36.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_36.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 DL ADDRESS DEFAULT
1844     ELSIF p_rule_id=37 THEN 
1845       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
1854     ELSIF p_rule_id=38 THEN 
1855       IF NOT HZ_MATCH_RULE_38.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_38.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 SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
1864     ELSIF p_rule_id=39 THEN 
1865       IF NOT HZ_MATCH_RULE_39.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_39.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 SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
1874     ELSIF p_rule_id=40 THEN 
1875       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
1884     ELSIF p_rule_id=41 THEN 
1885       IF NOT HZ_MATCH_RULE_41.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_41.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 SAMPLE: SEARCH EXACT
1894     ELSIF p_rule_id=42 THEN 
1895       IF NOT HZ_MATCH_RULE_42.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_42.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 DL SYSTEM DUPLICATE IDENTIFICATION
1904     ELSIF p_rule_id=48 THEN 
1905       IF NOT HZ_MATCH_RULE_48.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_48.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 BULK MATCH: IDENTICAL ORGANIZATIONS
1914     ELSIF p_rule_id=50 THEN 
1915       IF NOT HZ_MATCH_RULE_50.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_50.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 BULK MATCH: IDENTICAL PERSONS
1924     ELSIF p_rule_id=51 THEN 
1925       IF NOT HZ_MATCH_RULE_51.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_51.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     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
1934     ELSIF p_rule_id=52 THEN 
1935       IF NOT HZ_MATCH_RULE_52.check_staged THEN
1936         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1937         FND_MSG_PUB.ADD;
1938         RAISE FND_API.G_EXC_ERROR;
1939       END IF;
1940       HZ_MATCH_RULE_52.find_duplicate_party_sites(
1941         p_rule_id,p_party_site_id,p_party_id,
1942         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1943     -- Code for Match rule CREDIT MANAGEMENT SEARCH
1944     ELSIF p_rule_id=53 THEN 
1945       IF NOT HZ_MATCH_RULE_53.check_staged THEN
1946         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1947         FND_MSG_PUB.ADD;
1948         RAISE FND_API.G_EXC_ERROR;
1949       END IF;
1950       HZ_MATCH_RULE_53.find_duplicate_party_sites(
1951         p_rule_id,p_party_site_id,p_party_id,
1952         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1953     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
1954     ELSIF p_rule_id=58 THEN 
1955       IF NOT HZ_MATCH_RULE_58.check_staged THEN
1956         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1957         FND_MSG_PUB.ADD;
1958         RAISE FND_API.G_EXC_ERROR;
1959       END IF;
1960       HZ_MATCH_RULE_58.find_duplicate_party_sites(
1961         p_rule_id,p_party_site_id,p_party_id,
1962         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1963     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
1964     ELSIF p_rule_id=60 THEN 
1965       IF NOT HZ_MATCH_RULE_60.check_staged THEN
1966         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1967         FND_MSG_PUB.ADD;
1968         RAISE FND_API.G_EXC_ERROR;
1969       END IF;
1970       HZ_MATCH_RULE_60.find_duplicate_party_sites(
1971         p_rule_id,p_party_site_id,p_party_id,
1972         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1973     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
1974     ELSIF p_rule_id=61 THEN 
1975       IF NOT HZ_MATCH_RULE_61.check_staged THEN
1976         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1977         FND_MSG_PUB.ADD;
1978         RAISE FND_API.G_EXC_ERROR;
1979       END IF;
1980       HZ_MATCH_RULE_61.find_duplicate_party_sites(
1981         p_rule_id,p_party_site_id,p_party_id,
1982         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1983     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
1984     ELSIF p_rule_id=62 THEN 
1985       IF NOT HZ_MATCH_RULE_62.check_staged THEN
1986         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1987         FND_MSG_PUB.ADD;
1988         RAISE FND_API.G_EXC_ERROR;
1989       END IF;
1990       HZ_MATCH_RULE_62.find_duplicate_party_sites(
1991         p_rule_id,p_party_site_id,p_party_id,
1992         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
1993     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
1994     ELSIF p_rule_id=98 THEN 
1995       IF NOT HZ_MATCH_RULE_98.check_staged THEN
1996         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
1997         FND_MSG_PUB.ADD;
1998         RAISE FND_API.G_EXC_ERROR;
1999       END IF;
2000       HZ_MATCH_RULE_98.find_duplicate_party_sites(
2001         p_rule_id,p_party_site_id,p_party_id,
2002         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2003     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
2004     ELSIF p_rule_id=99 THEN 
2005       IF NOT HZ_MATCH_RULE_99.check_staged THEN
2006         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2007         FND_MSG_PUB.ADD;
2008         RAISE FND_API.G_EXC_ERROR;
2009       END IF;
2010       HZ_MATCH_RULE_99.find_duplicate_party_sites(
2011         p_rule_id,p_party_site_id,p_party_id,
2012         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2013     -- Code for Match rule Web Services: Identical Organizations
2014     ELSIF p_rule_id=238 THEN 
2015       IF NOT HZ_MATCH_RULE_238.check_staged THEN
2016         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2017         FND_MSG_PUB.ADD;
2018         RAISE FND_API.G_EXC_ERROR;
2019       END IF;
2020       HZ_MATCH_RULE_238.find_duplicate_party_sites(
2021         p_rule_id,p_party_site_id,p_party_id,
2022         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2023     -- Code for Match rule Web Services: Identical Persons
2024     ELSIF p_rule_id=240 THEN 
2025       IF NOT HZ_MATCH_RULE_240.check_staged THEN
2026         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2027         FND_MSG_PUB.ADD;
2028         RAISE FND_API.G_EXC_ERROR;
2029       END IF;
2030       HZ_MATCH_RULE_240.find_duplicate_party_sites(
2031         p_rule_id,p_party_site_id,p_party_id,
2032         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2033     END IF;
2034     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2035       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);
2036     END IF;
2037   --Standard call to get message count and if count is 1, get message info
2038   FND_MSG_PUB.Count_And_Get(
2039     p_encoded => FND_API.G_FALSE,
2040     p_count => x_msg_count,
2041     p_data  => x_msg_data);
2042   EXCEPTION
2043        WHEN FND_API.G_EXC_ERROR THEN
2044                x_return_status := FND_API.G_RET_STS_ERROR;
2045                FND_MSG_PUB.Count_And_Get(
2046                                p_encoded => FND_API.G_FALSE,
2047                                p_count => x_msg_count,
2048                                p_data  => x_msg_data);
2049        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2050                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2051                FND_MSG_PUB.Count_And_Get(
2052                                p_encoded => FND_API.G_FALSE,
2053                                p_count => x_msg_count,
2054                                p_data  => x_msg_data);
2055 
2056        WHEN OTHERS THEN
2057                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2058                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
2059                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
2060                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2061                FND_MSG_PUB.ADD;
2062 
2063                FND_MSG_PUB.Count_And_Get(
2064                                p_encoded => FND_API.G_FALSE,
2065                                p_count => x_msg_count,
2066                                p_data  => x_msg_data);
2067   END;
2068 
2069   PROCEDURE find_duplicate_contacts (
2070       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
2071       p_rule_id               IN      NUMBER,
2072       p_org_contact_id        IN      NUMBER,
2073       p_party_id              IN      NUMBER,
2074       p_restrict_sql          IN      VARCHAR2,
2075       p_match_type            IN      VARCHAR2,
2076       x_search_ctx_id         OUT     NUMBER,
2077       x_num_matches           OUT     NUMBER,
2078       x_return_status         OUT     VARCHAR2,
2079       x_msg_count             OUT     NUMBER,
2080       x_msg_data              OUT     VARCHAR2
2081 ) IS
2082   CURSOR c_match_rule IS 
2083     SELECT COMPILATION_FLAG 
2084     FROM HZ_MATCH_RULES_VL 
2085     WHERE MATCH_RULE_ID = p_rule_id;
2086   l_cmp_flag VARCHAR2(1);
2087   BEGIN
2088     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2089       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);
2090     END IF;
2091     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2092       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);
2093     END IF;
2094 
2095     -- Initialize return status and message stack
2096     x_return_status := FND_API.G_RET_STS_SUCCESS;
2097     IF FND_API.to_Boolean(p_init_msg_list) THEN
2098       FND_MSG_PUB.initialize;
2099     END IF;
2100 
2101     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2102       -- Find the match rule
2103       null;
2104 
2105       -- No MATCH RULE FOUND
2106       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2107       FND_MSG_PUB.ADD;
2108       RAISE FND_API.G_EXC_ERROR;
2109     END IF;
2110     OPEN c_match_rule;
2111     FETCH c_match_rule INTO l_cmp_flag;
2112     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2113       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2114       FND_MSG_PUB.ADD;
2115       RAISE FND_API.G_EXC_ERROR;
2116     END IF;
2117     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2118     IF p_rule_id=2 THEN 
2119       IF NOT HZ_MATCH_RULE_2.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_2.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 SAMPLE: PERSON_OPTIMIZED
2128     ELSIF p_rule_id=3 THEN 
2129       IF NOT HZ_MATCH_RULE_3.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_3.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 SAMPLE: ADDRESS_ORGANIZATIONS
2138     ELSIF p_rule_id=4 THEN 
2139       IF NOT HZ_MATCH_RULE_4.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_4.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 SAMPLE: ADDRESS_PERSONS
2148     ELSIF p_rule_id=5 THEN 
2149       IF NOT HZ_MATCH_RULE_5.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_5.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: SIMILAR_ORGANIZATION
2158     ELSIF p_rule_id=6 THEN 
2159       IF NOT HZ_MATCH_RULE_6.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_6.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: SIMILAR_PERSON
2168     ELSIF p_rule_id=7 THEN 
2169       IF NOT HZ_MATCH_RULE_7.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_7.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
2178     ELSIF p_rule_id=8 THEN 
2179       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
2188     ELSIF p_rule_id=32 THEN 
2189       IF NOT HZ_MATCH_RULE_32.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_32.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 SAMPLE:BASIC SEARCH RULE
2198     ELSIF p_rule_id=33 THEN 
2199       IF NOT HZ_MATCH_RULE_33.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_33.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 SAMPLE:ADVANCED SEARCH RULE
2208     ELSIF p_rule_id=34 THEN 
2209       IF NOT HZ_MATCH_RULE_34.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_34.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 DL SMART SEARCH
2218     ELSIF p_rule_id=35 THEN 
2219       IF NOT HZ_MATCH_RULE_35.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_35.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 DL ADDRESS AND RELATIONSHIP SEARCH
2228     ELSIF p_rule_id=36 THEN 
2229       IF NOT HZ_MATCH_RULE_36.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_36.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 DL ADDRESS DEFAULT
2238     ELSIF p_rule_id=37 THEN 
2239       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
2248     ELSIF p_rule_id=38 THEN 
2249       IF NOT HZ_MATCH_RULE_38.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_38.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 SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
2258     ELSIF p_rule_id=39 THEN 
2259       IF NOT HZ_MATCH_RULE_39.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_39.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 SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
2268     ELSIF p_rule_id=40 THEN 
2269       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
2278     ELSIF p_rule_id=41 THEN 
2279       IF NOT HZ_MATCH_RULE_41.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_41.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 SAMPLE: SEARCH EXACT
2288     ELSIF p_rule_id=42 THEN 
2289       IF NOT HZ_MATCH_RULE_42.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_42.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 DL SYSTEM DUPLICATE IDENTIFICATION
2298     ELSIF p_rule_id=48 THEN 
2299       IF NOT HZ_MATCH_RULE_48.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_48.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     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
2308     ELSIF p_rule_id=50 THEN 
2309       IF NOT HZ_MATCH_RULE_50.check_staged THEN
2310         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2311         FND_MSG_PUB.ADD;
2312         RAISE FND_API.G_EXC_ERROR;
2313       END IF;
2314       HZ_MATCH_RULE_50.find_duplicate_contacts(
2315         p_rule_id,p_org_contact_id,p_party_id,
2316         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2317     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
2318     ELSIF p_rule_id=51 THEN 
2319       IF NOT HZ_MATCH_RULE_51.check_staged THEN
2320         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2321         FND_MSG_PUB.ADD;
2322         RAISE FND_API.G_EXC_ERROR;
2323       END IF;
2324       HZ_MATCH_RULE_51.find_duplicate_contacts(
2325         p_rule_id,p_org_contact_id,p_party_id,
2326         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2327     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
2328     ELSIF p_rule_id=52 THEN 
2329       IF NOT HZ_MATCH_RULE_52.check_staged THEN
2330         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2331         FND_MSG_PUB.ADD;
2332         RAISE FND_API.G_EXC_ERROR;
2333       END IF;
2334       HZ_MATCH_RULE_52.find_duplicate_contacts(
2335         p_rule_id,p_org_contact_id,p_party_id,
2336         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2337     -- Code for Match rule CREDIT MANAGEMENT SEARCH
2338     ELSIF p_rule_id=53 THEN 
2339       IF NOT HZ_MATCH_RULE_53.check_staged THEN
2340         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2341         FND_MSG_PUB.ADD;
2342         RAISE FND_API.G_EXC_ERROR;
2343       END IF;
2344       HZ_MATCH_RULE_53.find_duplicate_contacts(
2345         p_rule_id,p_org_contact_id,p_party_id,
2346         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2347     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
2348     ELSIF p_rule_id=58 THEN 
2349       IF NOT HZ_MATCH_RULE_58.check_staged THEN
2350         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2351         FND_MSG_PUB.ADD;
2352         RAISE FND_API.G_EXC_ERROR;
2353       END IF;
2354       HZ_MATCH_RULE_58.find_duplicate_contacts(
2355         p_rule_id,p_org_contact_id,p_party_id,
2356         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2357     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
2358     ELSIF p_rule_id=60 THEN 
2359       IF NOT HZ_MATCH_RULE_60.check_staged THEN
2360         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2361         FND_MSG_PUB.ADD;
2362         RAISE FND_API.G_EXC_ERROR;
2363       END IF;
2364       HZ_MATCH_RULE_60.find_duplicate_contacts(
2365         p_rule_id,p_org_contact_id,p_party_id,
2366         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2367     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
2368     ELSIF p_rule_id=61 THEN 
2369       IF NOT HZ_MATCH_RULE_61.check_staged THEN
2370         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2371         FND_MSG_PUB.ADD;
2372         RAISE FND_API.G_EXC_ERROR;
2373       END IF;
2374       HZ_MATCH_RULE_61.find_duplicate_contacts(
2375         p_rule_id,p_org_contact_id,p_party_id,
2376         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2377     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
2378     ELSIF p_rule_id=62 THEN 
2379       IF NOT HZ_MATCH_RULE_62.check_staged THEN
2380         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2381         FND_MSG_PUB.ADD;
2382         RAISE FND_API.G_EXC_ERROR;
2383       END IF;
2384       HZ_MATCH_RULE_62.find_duplicate_contacts(
2385         p_rule_id,p_org_contact_id,p_party_id,
2386         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2387     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
2388     ELSIF p_rule_id=98 THEN 
2389       IF NOT HZ_MATCH_RULE_98.check_staged THEN
2390         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2391         FND_MSG_PUB.ADD;
2392         RAISE FND_API.G_EXC_ERROR;
2393       END IF;
2394       HZ_MATCH_RULE_98.find_duplicate_contacts(
2395         p_rule_id,p_org_contact_id,p_party_id,
2396         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2397     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
2398     ELSIF p_rule_id=99 THEN 
2399       IF NOT HZ_MATCH_RULE_99.check_staged THEN
2400         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2401         FND_MSG_PUB.ADD;
2402         RAISE FND_API.G_EXC_ERROR;
2403       END IF;
2404       HZ_MATCH_RULE_99.find_duplicate_contacts(
2405         p_rule_id,p_org_contact_id,p_party_id,
2406         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2407     -- Code for Match rule Web Services: Identical Organizations
2408     ELSIF p_rule_id=238 THEN 
2409       IF NOT HZ_MATCH_RULE_238.check_staged THEN
2410         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2411         FND_MSG_PUB.ADD;
2412         RAISE FND_API.G_EXC_ERROR;
2413       END IF;
2414       HZ_MATCH_RULE_238.find_duplicate_contacts(
2415         p_rule_id,p_org_contact_id,p_party_id,
2416         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2417     -- Code for Match rule Web Services: Identical Persons
2418     ELSIF p_rule_id=240 THEN 
2419       IF NOT HZ_MATCH_RULE_240.check_staged THEN
2420         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2421         FND_MSG_PUB.ADD;
2422         RAISE FND_API.G_EXC_ERROR;
2423       END IF;
2424       HZ_MATCH_RULE_240.find_duplicate_contacts(
2425         p_rule_id,p_org_contact_id,p_party_id,
2426         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2427     END IF;
2428     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2429       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);
2430     END IF;
2431   --Standard call to get message count and if count is 1, get message info
2432   FND_MSG_PUB.Count_And_Get(
2433     p_encoded => FND_API.G_FALSE,
2434     p_count => x_msg_count,
2435     p_data  => x_msg_data);
2436   EXCEPTION
2437        WHEN FND_API.G_EXC_ERROR THEN
2438                x_return_status := FND_API.G_RET_STS_ERROR;
2439                FND_MSG_PUB.Count_And_Get(
2440                                p_encoded => FND_API.G_FALSE,
2441                                p_count => x_msg_count,
2442                                p_data  => x_msg_data);
2443        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2444                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2445                FND_MSG_PUB.Count_And_Get(
2446                                p_encoded => FND_API.G_FALSE,
2447                                p_count => x_msg_count,
2448                                p_data  => x_msg_data);
2449 
2450        WHEN OTHERS THEN
2451                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2452                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
2453                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
2454                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2455                FND_MSG_PUB.ADD;
2456 
2457                FND_MSG_PUB.Count_And_Get(
2458                                p_encoded => FND_API.G_FALSE,
2459                                p_count => x_msg_count,
2460                                p_data  => x_msg_data);
2461   END;
2462 
2463   PROCEDURE find_duplicate_contact_points (
2464       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
2465       p_rule_id               IN      NUMBER,
2466       p_contact_point_id      IN      NUMBER,
2467       p_party_id              IN      NUMBER,
2468       p_restrict_sql          IN      VARCHAR2,
2469       p_match_type            IN      VARCHAR2,
2470       x_search_ctx_id         OUT     NUMBER,
2471       x_num_matches           OUT     NUMBER,
2472       x_return_status         OUT     VARCHAR2,
2473       x_msg_count             OUT     NUMBER,
2474       x_msg_data              OUT     VARCHAR2
2475 ) IS
2476   CURSOR c_match_rule IS 
2477     SELECT COMPILATION_FLAG 
2478     FROM HZ_MATCH_RULES_VL 
2479     WHERE MATCH_RULE_ID = p_rule_id;
2480   l_cmp_flag VARCHAR2(1);
2481   BEGIN
2482     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2483       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);
2484     END IF;
2485     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2486       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);
2487     END IF;
2488 
2489     -- Initialize return status and message stack
2490     x_return_status := FND_API.G_RET_STS_SUCCESS;
2491     IF FND_API.to_Boolean(p_init_msg_list) THEN
2492       FND_MSG_PUB.initialize;
2493     END IF;
2494 
2495     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2496       -- Find the match rule
2497       null;
2498 
2499       -- No MATCH RULE FOUND
2500       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2501       FND_MSG_PUB.ADD;
2502       RAISE FND_API.G_EXC_ERROR;
2503     END IF;
2504     OPEN c_match_rule;
2505     FETCH c_match_rule INTO l_cmp_flag;
2506     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2507       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2508       FND_MSG_PUB.ADD;
2509       RAISE FND_API.G_EXC_ERROR;
2510     END IF;
2511     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2512     IF p_rule_id=2 THEN 
2513       IF NOT HZ_MATCH_RULE_2.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_2.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 SAMPLE: PERSON_OPTIMIZED
2522     ELSIF p_rule_id=3 THEN 
2523       IF NOT HZ_MATCH_RULE_3.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_3.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: ADDRESS_ORGANIZATIONS
2532     ELSIF p_rule_id=4 THEN 
2533       IF NOT HZ_MATCH_RULE_4.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_4.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: ADDRESS_PERSONS
2542     ELSIF p_rule_id=5 THEN 
2543       IF NOT HZ_MATCH_RULE_5.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_5.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: SIMILAR_ORGANIZATION
2552     ELSIF p_rule_id=6 THEN 
2553       IF NOT HZ_MATCH_RULE_6.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_6.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: SIMILAR_PERSON
2562     ELSIF p_rule_id=7 THEN 
2563       IF NOT HZ_MATCH_RULE_7.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_7.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 SAMPLE: SEARCH
2572     ELSIF p_rule_id=8 THEN 
2573       IF NOT HZ_MATCH_RULE_8.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_8.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 RM SEARCH RULE
2582     ELSIF p_rule_id=32 THEN 
2583       IF NOT HZ_MATCH_RULE_32.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_32.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 SAMPLE:BASIC SEARCH RULE
2592     ELSIF p_rule_id=33 THEN 
2593       IF NOT HZ_MATCH_RULE_33.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_33.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 SAMPLE:ADVANCED SEARCH RULE
2602     ELSIF p_rule_id=34 THEN 
2603       IF NOT HZ_MATCH_RULE_34.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_34.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 DL SMART SEARCH
2612     ELSIF p_rule_id=35 THEN 
2613       IF NOT HZ_MATCH_RULE_35.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_35.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 DL ADDRESS AND RELATIONSHIP SEARCH
2622     ELSIF p_rule_id=36 THEN 
2623       IF NOT HZ_MATCH_RULE_36.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_36.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 DL ADDRESS DEFAULT
2632     ELSIF p_rule_id=37 THEN 
2633       IF NOT HZ_MATCH_RULE_37.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_37.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 DL RELATIONSHIP DEFAULT
2642     ELSIF p_rule_id=38 THEN 
2643       IF NOT HZ_MATCH_RULE_38.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_38.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 SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
2652     ELSIF p_rule_id=39 THEN 
2653       IF NOT HZ_MATCH_RULE_39.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_39.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 SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
2662     ELSIF p_rule_id=40 THEN 
2663       IF NOT HZ_MATCH_RULE_40.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_40.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 SAMPLE: SEARCH SIMILAR PERSON EXACT
2672     ELSIF p_rule_id=41 THEN 
2673       IF NOT HZ_MATCH_RULE_41.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_41.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     -- Code for Match rule SAMPLE: SEARCH EXACT
2682     ELSIF p_rule_id=42 THEN 
2683       IF NOT HZ_MATCH_RULE_42.check_staged THEN
2684         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2685         FND_MSG_PUB.ADD;
2686         RAISE FND_API.G_EXC_ERROR;
2687       END IF;
2688       HZ_MATCH_RULE_42.find_duplicate_contact_points(
2689         p_rule_id,p_contact_point_id,p_party_id,
2690         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2691     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
2692     ELSIF p_rule_id=48 THEN 
2693       IF NOT HZ_MATCH_RULE_48.check_staged THEN
2694         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2695         FND_MSG_PUB.ADD;
2696         RAISE FND_API.G_EXC_ERROR;
2697       END IF;
2698       HZ_MATCH_RULE_48.find_duplicate_contact_points(
2699         p_rule_id,p_contact_point_id,p_party_id,
2700         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2701     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
2702     ELSIF p_rule_id=50 THEN 
2703       IF NOT HZ_MATCH_RULE_50.check_staged THEN
2704         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2705         FND_MSG_PUB.ADD;
2706         RAISE FND_API.G_EXC_ERROR;
2707       END IF;
2708       HZ_MATCH_RULE_50.find_duplicate_contact_points(
2709         p_rule_id,p_contact_point_id,p_party_id,
2710         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2711     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
2712     ELSIF p_rule_id=51 THEN 
2713       IF NOT HZ_MATCH_RULE_51.check_staged THEN
2714         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2715         FND_MSG_PUB.ADD;
2716         RAISE FND_API.G_EXC_ERROR;
2717       END IF;
2718       HZ_MATCH_RULE_51.find_duplicate_contact_points(
2719         p_rule_id,p_contact_point_id,p_party_id,
2720         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2721     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
2722     ELSIF p_rule_id=52 THEN 
2723       IF NOT HZ_MATCH_RULE_52.check_staged THEN
2724         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2725         FND_MSG_PUB.ADD;
2726         RAISE FND_API.G_EXC_ERROR;
2727       END IF;
2728       HZ_MATCH_RULE_52.find_duplicate_contact_points(
2729         p_rule_id,p_contact_point_id,p_party_id,
2730         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2731     -- Code for Match rule CREDIT MANAGEMENT SEARCH
2732     ELSIF p_rule_id=53 THEN 
2733       IF NOT HZ_MATCH_RULE_53.check_staged THEN
2734         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2735         FND_MSG_PUB.ADD;
2736         RAISE FND_API.G_EXC_ERROR;
2737       END IF;
2738       HZ_MATCH_RULE_53.find_duplicate_contact_points(
2739         p_rule_id,p_contact_point_id,p_party_id,
2740         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2741     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
2742     ELSIF p_rule_id=58 THEN 
2743       IF NOT HZ_MATCH_RULE_58.check_staged THEN
2744         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2745         FND_MSG_PUB.ADD;
2746         RAISE FND_API.G_EXC_ERROR;
2747       END IF;
2748       HZ_MATCH_RULE_58.find_duplicate_contact_points(
2749         p_rule_id,p_contact_point_id,p_party_id,
2750         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2751     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
2752     ELSIF p_rule_id=60 THEN 
2753       IF NOT HZ_MATCH_RULE_60.check_staged THEN
2754         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2755         FND_MSG_PUB.ADD;
2756         RAISE FND_API.G_EXC_ERROR;
2757       END IF;
2758       HZ_MATCH_RULE_60.find_duplicate_contact_points(
2759         p_rule_id,p_contact_point_id,p_party_id,
2760         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2761     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
2762     ELSIF p_rule_id=61 THEN 
2763       IF NOT HZ_MATCH_RULE_61.check_staged THEN
2764         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2765         FND_MSG_PUB.ADD;
2766         RAISE FND_API.G_EXC_ERROR;
2767       END IF;
2768       HZ_MATCH_RULE_61.find_duplicate_contact_points(
2769         p_rule_id,p_contact_point_id,p_party_id,
2770         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2771     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
2772     ELSIF p_rule_id=62 THEN 
2773       IF NOT HZ_MATCH_RULE_62.check_staged THEN
2774         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2775         FND_MSG_PUB.ADD;
2776         RAISE FND_API.G_EXC_ERROR;
2777       END IF;
2778       HZ_MATCH_RULE_62.find_duplicate_contact_points(
2779         p_rule_id,p_contact_point_id,p_party_id,
2780         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2781     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
2782     ELSIF p_rule_id=98 THEN 
2783       IF NOT HZ_MATCH_RULE_98.check_staged THEN
2784         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2785         FND_MSG_PUB.ADD;
2786         RAISE FND_API.G_EXC_ERROR;
2787       END IF;
2788       HZ_MATCH_RULE_98.find_duplicate_contact_points(
2789         p_rule_id,p_contact_point_id,p_party_id,
2790         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2791     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
2792     ELSIF p_rule_id=99 THEN 
2793       IF NOT HZ_MATCH_RULE_99.check_staged THEN
2794         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2795         FND_MSG_PUB.ADD;
2796         RAISE FND_API.G_EXC_ERROR;
2797       END IF;
2798       HZ_MATCH_RULE_99.find_duplicate_contact_points(
2799         p_rule_id,p_contact_point_id,p_party_id,
2800         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2801     -- Code for Match rule Web Services: Identical Organizations
2802     ELSIF p_rule_id=238 THEN 
2803       IF NOT HZ_MATCH_RULE_238.check_staged THEN
2804         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2805         FND_MSG_PUB.ADD;
2806         RAISE FND_API.G_EXC_ERROR;
2807       END IF;
2808       HZ_MATCH_RULE_238.find_duplicate_contact_points(
2809         p_rule_id,p_contact_point_id,p_party_id,
2810         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2811     -- Code for Match rule Web Services: Identical Persons
2812     ELSIF p_rule_id=240 THEN 
2813       IF NOT HZ_MATCH_RULE_240.check_staged THEN
2814         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2815         FND_MSG_PUB.ADD;
2816         RAISE FND_API.G_EXC_ERROR;
2817       END IF;
2818       HZ_MATCH_RULE_240.find_duplicate_contact_points(
2819         p_rule_id,p_contact_point_id,p_party_id,
2820         p_restrict_sql,p_match_type,x_search_ctx_id,x_num_matches);
2821     END IF;
2822     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2823       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);
2824     END IF;
2825   --Standard call to get message count and if count is 1, get message info
2826   FND_MSG_PUB.Count_And_Get(
2827     p_encoded => FND_API.G_FALSE,
2828     p_count => x_msg_count,
2829     p_data  => x_msg_data);
2830   EXCEPTION
2831        WHEN FND_API.G_EXC_ERROR THEN
2832                x_return_status := FND_API.G_RET_STS_ERROR;
2833                FND_MSG_PUB.Count_And_Get(
2834                                p_encoded => FND_API.G_FALSE,
2835                                p_count => x_msg_count,
2836                                p_data  => x_msg_data);
2837        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2838                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2839                FND_MSG_PUB.Count_And_Get(
2840                                p_encoded => FND_API.G_FALSE,
2841                                p_count => x_msg_count,
2842                                p_data  => x_msg_data);
2843 
2844        WHEN OTHERS THEN
2845                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2846                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
2847                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
2848                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
2849                FND_MSG_PUB.ADD;
2850 
2851                FND_MSG_PUB.Count_And_Get(
2852                                p_encoded => FND_API.G_FALSE,
2853                                p_count => x_msg_count,
2854                                p_data  => x_msg_data);
2855   END;
2856 
2857 
2858   PROCEDURE find_parties_dynamic (
2859       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
2860       p_rule_id               IN      NUMBER,
2861       p_attrib_id1            IN      NUMBER,
2862       p_attrib_id2            IN      NUMBER,
2863       p_attrib_id3            IN      NUMBER,
2864       p_attrib_id4            IN      NUMBER,
2865       p_attrib_id5            IN      NUMBER,
2866       p_attrib_id6            IN      NUMBER,
2867       p_attrib_id7            IN      NUMBER,
2868       p_attrib_id8            IN      NUMBER,
2869       p_attrib_id9            IN      NUMBER,
2870       p_attrib_id10           IN      NUMBER,
2871       p_attrib_id11           IN      NUMBER,
2872       p_attrib_id12           IN      NUMBER,
2873       p_attrib_id13           IN      NUMBER,
2874       p_attrib_id14           IN      NUMBER,
2875       p_attrib_id15           IN      NUMBER,
2876       p_attrib_id16           IN      NUMBER,
2877       p_attrib_id17           IN      NUMBER,
2878       p_attrib_id18           IN      NUMBER,
2879       p_attrib_id19           IN      NUMBER,
2880       p_attrib_id20           IN      NUMBER,
2881       p_attrib_val1           IN      VARCHAR2,
2882       p_attrib_val2           IN      VARCHAR2,
2883       p_attrib_val3           IN      VARCHAR2,
2884       p_attrib_val4           IN      VARCHAR2,
2885       p_attrib_val5           IN      VARCHAR2,
2886       p_attrib_val6           IN      VARCHAR2,
2887       p_attrib_val7           IN      VARCHAR2,
2888       p_attrib_val8           IN      VARCHAR2,
2889       p_attrib_val9           IN      VARCHAR2,
2890       p_attrib_val10          IN      VARCHAR2,
2891       p_attrib_val11          IN      VARCHAR2,
2892       p_attrib_val12          IN      VARCHAR2,
2893       p_attrib_val13          IN      VARCHAR2,
2894       p_attrib_val14          IN      VARCHAR2,
2895       p_attrib_val15          IN      VARCHAR2,
2896       p_attrib_val16          IN      VARCHAR2,
2897       p_attrib_val17          IN      VARCHAR2,
2898       p_attrib_val18          IN      VARCHAR2,
2899       p_attrib_val19          IN      VARCHAR2,
2900       p_attrib_val20          IN      VARCHAR2,
2901       p_restrict_sql          IN      VARCHAR2,
2902       p_match_type            IN      VARCHAR2,
2903       p_search_merged         IN      VARCHAR2,
2904       x_search_ctx_id         OUT     NUMBER,
2905       x_num_matches           OUT     NUMBER,
2906       x_return_status         OUT     VARCHAR2,
2907       x_msg_count             OUT     NUMBER,
2908       x_msg_data              OUT     VARCHAR2
2909 ) IS
2910   CURSOR c_match_rule IS 
2911     SELECT COMPILATION_FLAG 
2912     FROM HZ_MATCH_RULES_VL 
2913     WHERE MATCH_RULE_ID = p_rule_id;
2914   l_cmp_flag VARCHAR2(1);
2915   BEGIN
2916     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2917       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);
2918     END IF;
2919     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
2920       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);
2921     END IF;
2922 
2923     -- Initialize return status and message stack
2924     x_return_status := FND_API.G_RET_STS_SUCCESS;
2925     IF FND_API.to_Boolean(p_init_msg_list) THEN
2926       FND_MSG_PUB.initialize;
2927     END IF;
2928 
2929     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
2930       -- Find the match rule
2931       null;
2932 
2933       -- No MATCH RULE FOUND
2934       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
2935       FND_MSG_PUB.ADD;
2936       RAISE FND_API.G_EXC_ERROR;
2937     END IF;
2938     OPEN c_match_rule;
2939     FETCH c_match_rule INTO l_cmp_flag;
2940     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
2941       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
2942       FND_MSG_PUB.ADD;
2943       RAISE FND_API.G_EXC_ERROR;
2944     END IF;
2945     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
2946     IF p_rule_id=2 THEN 
2947       IF NOT HZ_MATCH_RULE_2.check_staged THEN
2948         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2949         FND_MSG_PUB.ADD;
2950         RAISE FND_API.G_EXC_ERROR;
2951       END IF;
2952       HZ_MATCH_RULE_2.find_parties_dynamic(
2953         p_rule_id,
2954         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2955         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2956         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2957         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2958         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2959         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2960         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2961         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2962         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2963     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
2964     ELSIF p_rule_id=3 THEN 
2965       IF NOT HZ_MATCH_RULE_3.check_staged THEN
2966         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2967         FND_MSG_PUB.ADD;
2968         RAISE FND_API.G_EXC_ERROR;
2969       END IF;
2970       HZ_MATCH_RULE_3.find_parties_dynamic(
2971         p_rule_id,
2972         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2973         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2974         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2975         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2976         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2977         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2978         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2979         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2980         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2981     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
2982     ELSIF p_rule_id=4 THEN 
2983       IF NOT HZ_MATCH_RULE_4.check_staged THEN
2984         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
2985         FND_MSG_PUB.ADD;
2986         RAISE FND_API.G_EXC_ERROR;
2987       END IF;
2988       HZ_MATCH_RULE_4.find_parties_dynamic(
2989         p_rule_id,
2990         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
2991         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
2992         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
2993         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
2994         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
2995         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
2996         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
2997         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
2998         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
2999     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
3000     ELSIF p_rule_id=5 THEN 
3001       IF NOT HZ_MATCH_RULE_5.check_staged THEN
3002         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3003         FND_MSG_PUB.ADD;
3004         RAISE FND_API.G_EXC_ERROR;
3005       END IF;
3006       HZ_MATCH_RULE_5.find_parties_dynamic(
3007         p_rule_id,
3008         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3009         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3010         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3011         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3012         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3013         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3014         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3015         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3016         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3017     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
3018     ELSIF p_rule_id=6 THEN 
3019       IF NOT HZ_MATCH_RULE_6.check_staged THEN
3020         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3021         FND_MSG_PUB.ADD;
3022         RAISE FND_API.G_EXC_ERROR;
3023       END IF;
3024       HZ_MATCH_RULE_6.find_parties_dynamic(
3025         p_rule_id,
3026         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3027         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3028         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3029         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3030         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3031         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3032         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3033         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3034         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3035     -- Code for Match rule SAMPLE: SIMILAR_PERSON
3036     ELSIF p_rule_id=7 THEN 
3037       IF NOT HZ_MATCH_RULE_7.check_staged THEN
3038         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3039         FND_MSG_PUB.ADD;
3040         RAISE FND_API.G_EXC_ERROR;
3041       END IF;
3042       HZ_MATCH_RULE_7.find_parties_dynamic(
3043         p_rule_id,
3044         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3045         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3046         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3047         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3048         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3049         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3050         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3051         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3052         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3053     -- Code for Match rule SAMPLE: SEARCH
3054     ELSIF p_rule_id=8 THEN 
3055       IF NOT HZ_MATCH_RULE_8.check_staged THEN
3056         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3057         FND_MSG_PUB.ADD;
3058         RAISE FND_API.G_EXC_ERROR;
3059       END IF;
3060       HZ_MATCH_RULE_8.find_parties_dynamic(
3061         p_rule_id,
3062         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3063         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3064         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3065         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3066         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3067         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3068         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3069         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3070         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3071     -- Code for Match rule RM SEARCH RULE
3072     ELSIF p_rule_id=32 THEN 
3073       IF NOT HZ_MATCH_RULE_32.check_staged THEN
3074         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3075         FND_MSG_PUB.ADD;
3076         RAISE FND_API.G_EXC_ERROR;
3077       END IF;
3078       HZ_MATCH_RULE_32.find_parties_dynamic(
3079         p_rule_id,
3080         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3081         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3082         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3083         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3084         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3085         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3086         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3087         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3088         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3089     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
3090     ELSIF p_rule_id=33 THEN 
3091       IF NOT HZ_MATCH_RULE_33.check_staged THEN
3092         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3093         FND_MSG_PUB.ADD;
3094         RAISE FND_API.G_EXC_ERROR;
3095       END IF;
3096       HZ_MATCH_RULE_33.find_parties_dynamic(
3097         p_rule_id,
3098         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3099         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3100         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3101         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3102         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3103         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3104         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3105         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3106         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3107     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
3108     ELSIF p_rule_id=34 THEN 
3109       IF NOT HZ_MATCH_RULE_34.check_staged THEN
3110         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3111         FND_MSG_PUB.ADD;
3112         RAISE FND_API.G_EXC_ERROR;
3113       END IF;
3114       HZ_MATCH_RULE_34.find_parties_dynamic(
3115         p_rule_id,
3116         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3117         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3118         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3119         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3120         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3121         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3122         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3123         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3124         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3125     -- Code for Match rule DL SMART SEARCH
3126     ELSIF p_rule_id=35 THEN 
3127       IF NOT HZ_MATCH_RULE_35.check_staged THEN
3128         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3129         FND_MSG_PUB.ADD;
3130         RAISE FND_API.G_EXC_ERROR;
3131       END IF;
3132       HZ_MATCH_RULE_35.find_parties_dynamic(
3133         p_rule_id,
3134         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3135         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3136         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3137         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3138         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3139         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3140         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3141         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3142         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3143     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
3144     ELSIF p_rule_id=36 THEN 
3145       IF NOT HZ_MATCH_RULE_36.check_staged THEN
3146         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3147         FND_MSG_PUB.ADD;
3148         RAISE FND_API.G_EXC_ERROR;
3149       END IF;
3150       HZ_MATCH_RULE_36.find_parties_dynamic(
3151         p_rule_id,
3152         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3153         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3154         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3155         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3156         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3157         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3158         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3159         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3160         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3161     -- Code for Match rule DL ADDRESS DEFAULT
3162     ELSIF p_rule_id=37 THEN 
3163       IF NOT HZ_MATCH_RULE_37.check_staged THEN
3164         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3165         FND_MSG_PUB.ADD;
3166         RAISE FND_API.G_EXC_ERROR;
3167       END IF;
3168       HZ_MATCH_RULE_37.find_parties_dynamic(
3169         p_rule_id,
3170         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3171         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3172         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3173         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3174         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3175         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3176         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3177         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3178         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3179     -- Code for Match rule DL RELATIONSHIP DEFAULT
3180     ELSIF p_rule_id=38 THEN 
3181       IF NOT HZ_MATCH_RULE_38.check_staged THEN
3182         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3183         FND_MSG_PUB.ADD;
3184         RAISE FND_API.G_EXC_ERROR;
3185       END IF;
3186       HZ_MATCH_RULE_38.find_parties_dynamic(
3187         p_rule_id,
3188         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3189         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3190         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3191         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3192         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3193         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3194         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3195         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3196         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3197     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
3198     ELSIF p_rule_id=39 THEN 
3199       IF NOT HZ_MATCH_RULE_39.check_staged THEN
3200         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3201         FND_MSG_PUB.ADD;
3202         RAISE FND_API.G_EXC_ERROR;
3203       END IF;
3204       HZ_MATCH_RULE_39.find_parties_dynamic(
3205         p_rule_id,
3206         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3207         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3208         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3209         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3210         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3211         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3212         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3213         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3214         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3215     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
3216     ELSIF p_rule_id=40 THEN 
3217       IF NOT HZ_MATCH_RULE_40.check_staged THEN
3218         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3219         FND_MSG_PUB.ADD;
3220         RAISE FND_API.G_EXC_ERROR;
3221       END IF;
3222       HZ_MATCH_RULE_40.find_parties_dynamic(
3223         p_rule_id,
3224         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3225         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3226         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3227         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3228         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3229         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3230         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3231         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3232         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3233     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
3234     ELSIF p_rule_id=41 THEN 
3235       IF NOT HZ_MATCH_RULE_41.check_staged THEN
3236         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3237         FND_MSG_PUB.ADD;
3238         RAISE FND_API.G_EXC_ERROR;
3239       END IF;
3240       HZ_MATCH_RULE_41.find_parties_dynamic(
3241         p_rule_id,
3242         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3243         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3244         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3245         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3246         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3247         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3248         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3249         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3250         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3251     -- Code for Match rule SAMPLE: SEARCH EXACT
3252     ELSIF p_rule_id=42 THEN 
3253       IF NOT HZ_MATCH_RULE_42.check_staged THEN
3254         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3255         FND_MSG_PUB.ADD;
3256         RAISE FND_API.G_EXC_ERROR;
3257       END IF;
3258       HZ_MATCH_RULE_42.find_parties_dynamic(
3259         p_rule_id,
3260         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3261         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3262         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3263         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3264         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3265         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3266         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3267         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3268         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3269     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
3270     ELSIF p_rule_id=48 THEN 
3271       IF NOT HZ_MATCH_RULE_48.check_staged THEN
3272         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3273         FND_MSG_PUB.ADD;
3274         RAISE FND_API.G_EXC_ERROR;
3275       END IF;
3276       HZ_MATCH_RULE_48.find_parties_dynamic(
3277         p_rule_id,
3278         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3279         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3280         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3281         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3282         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3283         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3284         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3285         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3286         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3287     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
3288     ELSIF p_rule_id=50 THEN 
3289       IF NOT HZ_MATCH_RULE_50.check_staged THEN
3290         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3291         FND_MSG_PUB.ADD;
3292         RAISE FND_API.G_EXC_ERROR;
3293       END IF;
3294       HZ_MATCH_RULE_50.find_parties_dynamic(
3295         p_rule_id,
3296         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3297         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3298         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3299         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3300         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3301         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3302         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3303         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3304         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3305     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
3306     ELSIF p_rule_id=51 THEN 
3307       IF NOT HZ_MATCH_RULE_51.check_staged THEN
3308         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3309         FND_MSG_PUB.ADD;
3310         RAISE FND_API.G_EXC_ERROR;
3311       END IF;
3312       HZ_MATCH_RULE_51.find_parties_dynamic(
3313         p_rule_id,
3314         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3315         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3316         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3317         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3318         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3319         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3320         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3321         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3322         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3323     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
3324     ELSIF p_rule_id=52 THEN 
3325       IF NOT HZ_MATCH_RULE_52.check_staged THEN
3326         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3327         FND_MSG_PUB.ADD;
3328         RAISE FND_API.G_EXC_ERROR;
3329       END IF;
3330       HZ_MATCH_RULE_52.find_parties_dynamic(
3331         p_rule_id,
3332         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3333         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3334         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3335         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3336         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3337         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3338         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3339         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3340         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3341     -- Code for Match rule CREDIT MANAGEMENT SEARCH
3342     ELSIF p_rule_id=53 THEN 
3343       IF NOT HZ_MATCH_RULE_53.check_staged THEN
3344         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3345         FND_MSG_PUB.ADD;
3346         RAISE FND_API.G_EXC_ERROR;
3347       END IF;
3348       HZ_MATCH_RULE_53.find_parties_dynamic(
3349         p_rule_id,
3350         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3351         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3352         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3353         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3354         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3355         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3356         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3357         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3358         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3359     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
3360     ELSIF p_rule_id=58 THEN 
3361       IF NOT HZ_MATCH_RULE_58.check_staged THEN
3362         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3363         FND_MSG_PUB.ADD;
3364         RAISE FND_API.G_EXC_ERROR;
3365       END IF;
3366       HZ_MATCH_RULE_58.find_parties_dynamic(
3367         p_rule_id,
3368         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3369         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3370         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3371         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3372         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3373         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3374         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3375         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3376         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3377     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
3378     ELSIF p_rule_id=60 THEN 
3379       IF NOT HZ_MATCH_RULE_60.check_staged THEN
3380         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3381         FND_MSG_PUB.ADD;
3382         RAISE FND_API.G_EXC_ERROR;
3383       END IF;
3384       HZ_MATCH_RULE_60.find_parties_dynamic(
3385         p_rule_id,
3386         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3387         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3388         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3389         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3390         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3391         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3392         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3393         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3394         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3395     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
3396     ELSIF p_rule_id=61 THEN 
3397       IF NOT HZ_MATCH_RULE_61.check_staged THEN
3398         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3399         FND_MSG_PUB.ADD;
3400         RAISE FND_API.G_EXC_ERROR;
3401       END IF;
3402       HZ_MATCH_RULE_61.find_parties_dynamic(
3403         p_rule_id,
3404         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3405         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3406         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3407         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3408         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3409         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3410         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3411         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3412         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3413     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
3414     ELSIF p_rule_id=62 THEN 
3415       IF NOT HZ_MATCH_RULE_62.check_staged THEN
3416         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3417         FND_MSG_PUB.ADD;
3418         RAISE FND_API.G_EXC_ERROR;
3419       END IF;
3420       HZ_MATCH_RULE_62.find_parties_dynamic(
3421         p_rule_id,
3422         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3423         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3424         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3425         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3426         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3427         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3428         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3429         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3430         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3431     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
3432     ELSIF p_rule_id=98 THEN 
3433       IF NOT HZ_MATCH_RULE_98.check_staged THEN
3434         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3435         FND_MSG_PUB.ADD;
3436         RAISE FND_API.G_EXC_ERROR;
3437       END IF;
3438       HZ_MATCH_RULE_98.find_parties_dynamic(
3439         p_rule_id,
3440         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3441         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3442         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3443         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3444         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3445         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3446         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3447         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3448         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3449     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
3450     ELSIF p_rule_id=99 THEN 
3451       IF NOT HZ_MATCH_RULE_99.check_staged THEN
3452         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3453         FND_MSG_PUB.ADD;
3454         RAISE FND_API.G_EXC_ERROR;
3455       END IF;
3456       HZ_MATCH_RULE_99.find_parties_dynamic(
3457         p_rule_id,
3458         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3459         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3460         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3461         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3462         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3463         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3464         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3465         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3466         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3467     -- Code for Match rule Web Services: Identical Organizations
3468     ELSIF p_rule_id=238 THEN 
3469       IF NOT HZ_MATCH_RULE_238.check_staged THEN
3470         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3471         FND_MSG_PUB.ADD;
3472         RAISE FND_API.G_EXC_ERROR;
3473       END IF;
3474       HZ_MATCH_RULE_238.find_parties_dynamic(
3475         p_rule_id,
3476         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3477         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3478         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3479         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3480         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3481         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3482         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3483         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3484         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3485     -- Code for Match rule Web Services: Identical Persons
3486     ELSIF p_rule_id=240 THEN 
3487       IF NOT HZ_MATCH_RULE_240.check_staged THEN
3488         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3489         FND_MSG_PUB.ADD;
3490         RAISE FND_API.G_EXC_ERROR;
3491       END IF;
3492       HZ_MATCH_RULE_240.find_parties_dynamic(
3493         p_rule_id,
3494         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3495         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3496         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3497         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3498         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3499         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3500         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3501         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3502         p_restrict_sql,p_match_type,p_search_merged,x_search_ctx_id,x_num_matches);
3503     END IF;
3504     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3505       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);
3506     END IF;
3507   --Standard call to get message count and if count is 1, get message info
3508   FND_MSG_PUB.Count_And_Get(
3509     p_encoded => FND_API.G_FALSE,
3510     p_count => x_msg_count,
3511     p_data  => x_msg_data);
3512   EXCEPTION
3513        WHEN FND_API.G_EXC_ERROR THEN
3514                x_return_status := FND_API.G_RET_STS_ERROR;
3515                FND_MSG_PUB.Count_And_Get(
3516                                p_encoded => FND_API.G_FALSE,
3517                                p_count => x_msg_count,
3518                                p_data  => x_msg_data);
3519        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3520                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3521                FND_MSG_PUB.Count_And_Get(
3522                                p_encoded => FND_API.G_FALSE,
3523                                p_count => x_msg_count,
3524                                p_data  => x_msg_data);
3525 
3526        WHEN OTHERS THEN
3527                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3528                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
3529                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
3530                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
3531                FND_MSG_PUB.ADD;
3532 
3533                FND_MSG_PUB.Count_And_Get(
3534                                p_encoded => FND_API.G_FALSE,
3535                                p_count => x_msg_count,
3536                                p_data  => x_msg_data);
3537   END;
3538 
3539   PROCEDURE call_api_dynamic (
3540       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
3541       p_rule_id               IN      NUMBER,
3542       p_attrib_id1            IN      NUMBER,
3543       p_attrib_id2            IN      NUMBER,
3544       p_attrib_id3            IN      NUMBER,
3545       p_attrib_id4            IN      NUMBER,
3546       p_attrib_id5            IN      NUMBER,
3547       p_attrib_id6            IN      NUMBER,
3548       p_attrib_id7            IN      NUMBER,
3549       p_attrib_id8            IN      NUMBER,
3550       p_attrib_id9            IN      NUMBER,
3551       p_attrib_id10           IN      NUMBER,
3552       p_attrib_id11           IN      NUMBER,
3553       p_attrib_id12           IN      NUMBER,
3554       p_attrib_id13           IN      NUMBER,
3555       p_attrib_id14           IN      NUMBER,
3556       p_attrib_id15           IN      NUMBER,
3557       p_attrib_id16           IN      NUMBER,
3558       p_attrib_id17           IN      NUMBER,
3559       p_attrib_id18           IN      NUMBER,
3560       p_attrib_id19           IN      NUMBER,
3561       p_attrib_id20           IN      NUMBER,
3562       p_attrib_val1           IN      VARCHAR2,
3563       p_attrib_val2           IN      VARCHAR2,
3564       p_attrib_val3           IN      VARCHAR2,
3565       p_attrib_val4           IN      VARCHAR2,
3566       p_attrib_val5           IN      VARCHAR2,
3567       p_attrib_val6           IN      VARCHAR2,
3568       p_attrib_val7           IN      VARCHAR2,
3569       p_attrib_val8           IN      VARCHAR2,
3570       p_attrib_val9           IN      VARCHAR2,
3571       p_attrib_val10          IN      VARCHAR2,
3572       p_attrib_val11          IN      VARCHAR2,
3573       p_attrib_val12          IN      VARCHAR2,
3574       p_attrib_val13          IN      VARCHAR2,
3575       p_attrib_val14          IN      VARCHAR2,
3576       p_attrib_val15          IN      VARCHAR2,
3577       p_attrib_val16          IN      VARCHAR2,
3578       p_attrib_val17          IN      VARCHAR2,
3579       p_attrib_val18          IN      VARCHAR2,
3580       p_attrib_val19          IN      VARCHAR2,
3581       p_attrib_val20          IN      VARCHAR2,
3582       p_restrict_sql          IN      VARCHAR2,
3583       p_api_name              IN      VARCHAR2,
3584       p_match_type            IN      VARCHAR2,
3585       p_party_id              IN      NUMBER,
3586       p_search_merged         IN      VARCHAR2,
3587       x_search_ctx_id         OUT     NUMBER,
3588       x_num_matches           OUT     NUMBER,
3589       x_return_status         OUT     VARCHAR2,
3590       x_msg_count             OUT     NUMBER,
3591       x_msg_data              OUT     VARCHAR2
3592 ) IS
3593   CURSOR c_match_rule IS 
3594     SELECT COMPILATION_FLAG 
3595     FROM HZ_MATCH_RULES_VL 
3596     WHERE MATCH_RULE_ID = p_rule_id;
3597   l_cmp_flag VARCHAR2(1);
3598   BEGIN
3599     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
3600       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);
3601     END IF;
3602     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
3603       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);
3604     END IF;
3605 
3606     -- Initialize return status and message stack
3607     x_return_status := FND_API.G_RET_STS_SUCCESS;
3608     IF FND_API.to_Boolean(p_init_msg_list) THEN
3609       FND_MSG_PUB.initialize;
3610     END IF;
3611 
3612     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
3613       -- Find the match rule
3614       null;
3615 
3616       -- No MATCH RULE FOUND
3617       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
3618       FND_MSG_PUB.ADD;
3619       RAISE FND_API.G_EXC_ERROR;
3620     END IF;
3621     OPEN c_match_rule;
3622     FETCH c_match_rule INTO l_cmp_flag;
3623     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
3624       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
3625       FND_MSG_PUB.ADD;
3626       RAISE FND_API.G_EXC_ERROR;
3627     END IF;
3628     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
3629     IF p_rule_id=2 THEN 
3630       IF NOT HZ_MATCH_RULE_2.check_staged THEN
3631         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3632         FND_MSG_PUB.ADD;
3633         RAISE FND_API.G_EXC_ERROR;
3634       END IF;
3635       HZ_MATCH_RULE_2.call_api_dynamic(
3636         p_rule_id,
3637         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3638         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3639         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3640         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3641         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3642         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3643         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3644         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3645         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3646     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
3647     ELSIF p_rule_id=3 THEN 
3648       IF NOT HZ_MATCH_RULE_3.check_staged THEN
3649         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3650         FND_MSG_PUB.ADD;
3651         RAISE FND_API.G_EXC_ERROR;
3652       END IF;
3653       HZ_MATCH_RULE_3.call_api_dynamic(
3654         p_rule_id,
3655         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3656         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3657         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3658         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3659         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3660         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3661         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3662         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3663         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3664     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
3665     ELSIF p_rule_id=4 THEN 
3666       IF NOT HZ_MATCH_RULE_4.check_staged THEN
3667         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3668         FND_MSG_PUB.ADD;
3669         RAISE FND_API.G_EXC_ERROR;
3670       END IF;
3671       HZ_MATCH_RULE_4.call_api_dynamic(
3672         p_rule_id,
3673         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3674         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3675         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3676         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3677         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3678         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3679         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3680         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3681         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3682     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
3683     ELSIF p_rule_id=5 THEN 
3684       IF NOT HZ_MATCH_RULE_5.check_staged THEN
3685         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3686         FND_MSG_PUB.ADD;
3687         RAISE FND_API.G_EXC_ERROR;
3688       END IF;
3689       HZ_MATCH_RULE_5.call_api_dynamic(
3690         p_rule_id,
3691         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3692         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3693         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3694         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3695         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3696         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3697         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3698         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3699         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3700     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
3701     ELSIF p_rule_id=6 THEN 
3702       IF NOT HZ_MATCH_RULE_6.check_staged THEN
3703         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3704         FND_MSG_PUB.ADD;
3705         RAISE FND_API.G_EXC_ERROR;
3706       END IF;
3707       HZ_MATCH_RULE_6.call_api_dynamic(
3708         p_rule_id,
3709         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3710         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3711         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3712         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3713         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3714         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3715         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3716         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3717         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3718     -- Code for Match rule SAMPLE: SIMILAR_PERSON
3719     ELSIF p_rule_id=7 THEN 
3720       IF NOT HZ_MATCH_RULE_7.check_staged THEN
3721         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3722         FND_MSG_PUB.ADD;
3723         RAISE FND_API.G_EXC_ERROR;
3724       END IF;
3725       HZ_MATCH_RULE_7.call_api_dynamic(
3726         p_rule_id,
3727         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3728         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3729         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3730         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3731         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3732         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3733         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3734         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3735         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3736     -- Code for Match rule SAMPLE: SEARCH
3737     ELSIF p_rule_id=8 THEN 
3738       IF NOT HZ_MATCH_RULE_8.check_staged THEN
3739         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3740         FND_MSG_PUB.ADD;
3741         RAISE FND_API.G_EXC_ERROR;
3742       END IF;
3743       HZ_MATCH_RULE_8.call_api_dynamic(
3744         p_rule_id,
3745         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3746         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3747         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3748         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3749         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3750         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3751         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3752         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3753         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3754     -- Code for Match rule RM SEARCH RULE
3755     ELSIF p_rule_id=32 THEN 
3756       IF NOT HZ_MATCH_RULE_32.check_staged THEN
3757         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3758         FND_MSG_PUB.ADD;
3759         RAISE FND_API.G_EXC_ERROR;
3760       END IF;
3761       HZ_MATCH_RULE_32.call_api_dynamic(
3762         p_rule_id,
3763         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3764         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3765         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3766         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3767         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3768         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3769         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3770         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3771         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3772     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
3773     ELSIF p_rule_id=33 THEN 
3774       IF NOT HZ_MATCH_RULE_33.check_staged THEN
3775         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3776         FND_MSG_PUB.ADD;
3777         RAISE FND_API.G_EXC_ERROR;
3778       END IF;
3779       HZ_MATCH_RULE_33.call_api_dynamic(
3780         p_rule_id,
3781         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3782         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3783         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3784         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3785         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3786         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3787         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3788         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3789         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3790     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
3791     ELSIF p_rule_id=34 THEN 
3792       IF NOT HZ_MATCH_RULE_34.check_staged THEN
3793         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3794         FND_MSG_PUB.ADD;
3795         RAISE FND_API.G_EXC_ERROR;
3796       END IF;
3797       HZ_MATCH_RULE_34.call_api_dynamic(
3798         p_rule_id,
3799         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3800         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3801         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3802         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3803         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3804         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3805         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3806         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3807         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3808     -- Code for Match rule DL SMART SEARCH
3809     ELSIF p_rule_id=35 THEN 
3810       IF NOT HZ_MATCH_RULE_35.check_staged THEN
3811         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3812         FND_MSG_PUB.ADD;
3813         RAISE FND_API.G_EXC_ERROR;
3814       END IF;
3815       HZ_MATCH_RULE_35.call_api_dynamic(
3816         p_rule_id,
3817         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3818         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3819         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3820         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3821         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3822         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3823         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3824         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3825         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3826     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
3827     ELSIF p_rule_id=36 THEN 
3828       IF NOT HZ_MATCH_RULE_36.check_staged THEN
3829         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3830         FND_MSG_PUB.ADD;
3831         RAISE FND_API.G_EXC_ERROR;
3832       END IF;
3833       HZ_MATCH_RULE_36.call_api_dynamic(
3834         p_rule_id,
3835         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3836         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3837         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3838         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3839         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3840         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3841         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3842         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3843         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3844     -- Code for Match rule DL ADDRESS DEFAULT
3845     ELSIF p_rule_id=37 THEN 
3846       IF NOT HZ_MATCH_RULE_37.check_staged THEN
3847         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3848         FND_MSG_PUB.ADD;
3849         RAISE FND_API.G_EXC_ERROR;
3850       END IF;
3851       HZ_MATCH_RULE_37.call_api_dynamic(
3852         p_rule_id,
3853         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3854         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3855         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3856         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3857         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3858         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3859         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3860         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3861         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3862     -- Code for Match rule DL RELATIONSHIP DEFAULT
3863     ELSIF p_rule_id=38 THEN 
3864       IF NOT HZ_MATCH_RULE_38.check_staged THEN
3865         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3866         FND_MSG_PUB.ADD;
3867         RAISE FND_API.G_EXC_ERROR;
3868       END IF;
3869       HZ_MATCH_RULE_38.call_api_dynamic(
3870         p_rule_id,
3871         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3872         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3873         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3874         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3875         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3876         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3877         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3878         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3879         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3880     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
3881     ELSIF p_rule_id=39 THEN 
3882       IF NOT HZ_MATCH_RULE_39.check_staged THEN
3883         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3884         FND_MSG_PUB.ADD;
3885         RAISE FND_API.G_EXC_ERROR;
3886       END IF;
3887       HZ_MATCH_RULE_39.call_api_dynamic(
3888         p_rule_id,
3889         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3890         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3891         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3892         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3893         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3894         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3895         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3896         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3897         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3898     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
3899     ELSIF p_rule_id=40 THEN 
3900       IF NOT HZ_MATCH_RULE_40.check_staged THEN
3901         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3902         FND_MSG_PUB.ADD;
3903         RAISE FND_API.G_EXC_ERROR;
3904       END IF;
3905       HZ_MATCH_RULE_40.call_api_dynamic(
3906         p_rule_id,
3907         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3908         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3909         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3910         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3911         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3912         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3913         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3914         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3915         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3916     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
3917     ELSIF p_rule_id=41 THEN 
3918       IF NOT HZ_MATCH_RULE_41.check_staged THEN
3919         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3920         FND_MSG_PUB.ADD;
3921         RAISE FND_API.G_EXC_ERROR;
3922       END IF;
3923       HZ_MATCH_RULE_41.call_api_dynamic(
3924         p_rule_id,
3925         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3926         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3927         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3928         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3929         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3930         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3931         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3932         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3933         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3934     -- Code for Match rule SAMPLE: SEARCH EXACT
3935     ELSIF p_rule_id=42 THEN 
3936       IF NOT HZ_MATCH_RULE_42.check_staged THEN
3937         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3938         FND_MSG_PUB.ADD;
3939         RAISE FND_API.G_EXC_ERROR;
3940       END IF;
3941       HZ_MATCH_RULE_42.call_api_dynamic(
3942         p_rule_id,
3943         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3944         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3945         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3946         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3947         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3948         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3949         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3950         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3951         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3952     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
3953     ELSIF p_rule_id=48 THEN 
3954       IF NOT HZ_MATCH_RULE_48.check_staged THEN
3955         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3956         FND_MSG_PUB.ADD;
3957         RAISE FND_API.G_EXC_ERROR;
3958       END IF;
3959       HZ_MATCH_RULE_48.call_api_dynamic(
3960         p_rule_id,
3961         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3962         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3963         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3964         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3965         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3966         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3967         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3968         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3969         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3970     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
3971     ELSIF p_rule_id=50 THEN 
3972       IF NOT HZ_MATCH_RULE_50.check_staged THEN
3973         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3974         FND_MSG_PUB.ADD;
3975         RAISE FND_API.G_EXC_ERROR;
3976       END IF;
3977       HZ_MATCH_RULE_50.call_api_dynamic(
3978         p_rule_id,
3979         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3980         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3981         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
3982         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
3983         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
3984         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
3985         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
3986         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
3987         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
3988     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
3989     ELSIF p_rule_id=51 THEN 
3990       IF NOT HZ_MATCH_RULE_51.check_staged THEN
3991         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
3992         FND_MSG_PUB.ADD;
3993         RAISE FND_API.G_EXC_ERROR;
3994       END IF;
3995       HZ_MATCH_RULE_51.call_api_dynamic(
3996         p_rule_id,
3997         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
3998         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
3999         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4000         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4001         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4002         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4003         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4004         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4005         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4006     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
4007     ELSIF p_rule_id=52 THEN 
4008       IF NOT HZ_MATCH_RULE_52.check_staged THEN
4009         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4010         FND_MSG_PUB.ADD;
4011         RAISE FND_API.G_EXC_ERROR;
4012       END IF;
4013       HZ_MATCH_RULE_52.call_api_dynamic(
4014         p_rule_id,
4015         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4016         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4017         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4018         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4019         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4020         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4021         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4022         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4023         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4024     -- Code for Match rule CREDIT MANAGEMENT SEARCH
4025     ELSIF p_rule_id=53 THEN 
4026       IF NOT HZ_MATCH_RULE_53.check_staged THEN
4027         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4028         FND_MSG_PUB.ADD;
4029         RAISE FND_API.G_EXC_ERROR;
4030       END IF;
4031       HZ_MATCH_RULE_53.call_api_dynamic(
4032         p_rule_id,
4033         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4034         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4035         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4036         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4037         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4038         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4039         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4040         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4041         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4042     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
4043     ELSIF p_rule_id=58 THEN 
4044       IF NOT HZ_MATCH_RULE_58.check_staged THEN
4045         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4046         FND_MSG_PUB.ADD;
4047         RAISE FND_API.G_EXC_ERROR;
4048       END IF;
4049       HZ_MATCH_RULE_58.call_api_dynamic(
4050         p_rule_id,
4051         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4052         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4053         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4054         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4055         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4056         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4057         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4058         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4059         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4060     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
4061     ELSIF p_rule_id=60 THEN 
4062       IF NOT HZ_MATCH_RULE_60.check_staged THEN
4063         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4064         FND_MSG_PUB.ADD;
4065         RAISE FND_API.G_EXC_ERROR;
4066       END IF;
4067       HZ_MATCH_RULE_60.call_api_dynamic(
4068         p_rule_id,
4069         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4070         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4071         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4072         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4073         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4074         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4075         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4076         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4077         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4078     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
4079     ELSIF p_rule_id=61 THEN 
4080       IF NOT HZ_MATCH_RULE_61.check_staged THEN
4081         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4082         FND_MSG_PUB.ADD;
4083         RAISE FND_API.G_EXC_ERROR;
4084       END IF;
4085       HZ_MATCH_RULE_61.call_api_dynamic(
4086         p_rule_id,
4087         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4088         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4089         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4090         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4091         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4092         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4093         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4094         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4095         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4096     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
4097     ELSIF p_rule_id=62 THEN 
4098       IF NOT HZ_MATCH_RULE_62.check_staged THEN
4099         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4100         FND_MSG_PUB.ADD;
4101         RAISE FND_API.G_EXC_ERROR;
4102       END IF;
4103       HZ_MATCH_RULE_62.call_api_dynamic(
4104         p_rule_id,
4105         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4106         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4107         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4108         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4109         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4110         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4111         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4112         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4113         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4114     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
4115     ELSIF p_rule_id=98 THEN 
4116       IF NOT HZ_MATCH_RULE_98.check_staged THEN
4117         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4118         FND_MSG_PUB.ADD;
4119         RAISE FND_API.G_EXC_ERROR;
4120       END IF;
4121       HZ_MATCH_RULE_98.call_api_dynamic(
4122         p_rule_id,
4123         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4124         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4125         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4126         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4127         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4128         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4129         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4130         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4131         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4132     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
4133     ELSIF p_rule_id=99 THEN 
4134       IF NOT HZ_MATCH_RULE_99.check_staged THEN
4135         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4136         FND_MSG_PUB.ADD;
4137         RAISE FND_API.G_EXC_ERROR;
4138       END IF;
4139       HZ_MATCH_RULE_99.call_api_dynamic(
4140         p_rule_id,
4141         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4142         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4143         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4144         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4145         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4146         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4147         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4148         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4149         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4150     -- Code for Match rule Web Services: Identical Organizations
4151     ELSIF p_rule_id=238 THEN 
4152       IF NOT HZ_MATCH_RULE_238.check_staged THEN
4153         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4154         FND_MSG_PUB.ADD;
4155         RAISE FND_API.G_EXC_ERROR;
4156       END IF;
4157       HZ_MATCH_RULE_238.call_api_dynamic(
4158         p_rule_id,
4159         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4160         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4161         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4162         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4163         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4164         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4165         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4166         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4167         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4168     -- Code for Match rule Web Services: Identical Persons
4169     ELSIF p_rule_id=240 THEN 
4170       IF NOT HZ_MATCH_RULE_240.check_staged THEN
4171         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4172         FND_MSG_PUB.ADD;
4173         RAISE FND_API.G_EXC_ERROR;
4174       END IF;
4175       HZ_MATCH_RULE_240.call_api_dynamic(
4176         p_rule_id,
4177         p_attrib_id1,p_attrib_id2,p_attrib_id3,p_attrib_id4,p_attrib_id5,
4178         p_attrib_id6,p_attrib_id7,p_attrib_id8,p_attrib_id9,p_attrib_id10,
4179         p_attrib_id11,p_attrib_id12,p_attrib_id13,p_attrib_id14,p_attrib_id15,
4180         p_attrib_id16,p_attrib_id17,p_attrib_id18,p_attrib_id19,p_attrib_id20,
4181         p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5,
4182         p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10,
4183         p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15,
4184         p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20,
4185         p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged,x_search_ctx_id,x_num_matches);
4186     END IF;
4187     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4188       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);
4189     END IF;
4190   --Standard call to get message count and if count is 1, get message info
4191   FND_MSG_PUB.Count_And_Get(
4192     p_encoded => FND_API.G_FALSE,
4193     p_count => x_msg_count,
4194     p_data  => x_msg_data);
4195   EXCEPTION
4196        WHEN FND_API.G_EXC_ERROR THEN
4197                x_return_status := FND_API.G_RET_STS_ERROR;
4198                FND_MSG_PUB.Count_And_Get(
4199                                p_encoded => FND_API.G_FALSE,
4200                                p_count => x_msg_count,
4201                                p_data  => x_msg_data);
4202        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4203                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4204                FND_MSG_PUB.Count_And_Get(
4205                                p_encoded => FND_API.G_FALSE,
4206                                p_count => x_msg_count,
4207                                p_data  => x_msg_data);
4208 
4209        WHEN OTHERS THEN
4210                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4211                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4212                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4213                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4214                FND_MSG_PUB.ADD;
4215 
4216                FND_MSG_PUB.Count_And_Get(
4217                                p_encoded => FND_API.G_FALSE,
4218                                p_count => x_msg_count,
4219                                p_data  => x_msg_data);
4220   END; 
4221  
4222  FUNCTION get_attrib_id(p_str VARCHAR2)  
4223    RETURN NUMBER IS  
4224    l_id NUMBER;  
4225    l_pl NUMBER;  
4226    l_token VARCHAR2(1);  
4227    BEGIN  
4228         l_token := '.';  
4229         l_pl := instrb(p_str, l_token);  
4230         select attribute_id into l_id  
4231         from hz_trans_attributes_b  
4232         where entity_name = substrb(p_str, 0, l_pl - 1)  
4233         and ATTRIBUTE_NAME = substrb(p_str, l_pl + 1);  
4234         RETURN l_id;  
4235    EXCEPTION WHEN NO_DATA_FOUND THEN  
4236              FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_NOATTRIB_ERROR' ); 
4237              FND_MESSAGE.SET_TOKEN('ENTITY_ATTRIBUTE' ,p_str); 
4238              FND_MSG_PUB.ADD; 
4239              RAISE FND_API.G_EXC_ERROR; 
4240    END get_attrib_id;  
4241   PROCEDURE call_api_dynamic_names (
4242       p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4243       p_rule_id               IN      NUMBER,
4244       p_attrib_name1            IN      VARCHAR2,
4245       p_attrib_name2            IN      VARCHAR2,
4246       p_attrib_name3            IN      VARCHAR2,
4247       p_attrib_name4            IN      VARCHAR2,
4248       p_attrib_name5            IN      VARCHAR2,
4249       p_attrib_name6            IN      VARCHAR2,
4250       p_attrib_name7            IN      VARCHAR2,
4251       p_attrib_name8            IN      VARCHAR2,
4252       p_attrib_name9            IN      VARCHAR2,
4253       p_attrib_name10           IN      VARCHAR2,
4254       p_attrib_name11           IN      VARCHAR2,
4255       p_attrib_name12           IN      VARCHAR2,
4256       p_attrib_name13           IN      VARCHAR2,
4257       p_attrib_name14           IN      VARCHAR2,
4258       p_attrib_name15           IN      VARCHAR2,
4259       p_attrib_name16           IN      VARCHAR2,
4260       p_attrib_name17           IN      VARCHAR2,
4261       p_attrib_name18           IN      VARCHAR2,
4262       p_attrib_name19           IN      VARCHAR2,
4263       p_attrib_name20           IN      VARCHAR2,
4264       p_attrib_val1           IN      VARCHAR2,
4265       p_attrib_val2           IN      VARCHAR2,
4266       p_attrib_val3           IN      VARCHAR2,
4267       p_attrib_val4           IN      VARCHAR2,
4268       p_attrib_val5           IN      VARCHAR2,
4269       p_attrib_val6           IN      VARCHAR2,
4270       p_attrib_val7           IN      VARCHAR2,
4271       p_attrib_val8           IN      VARCHAR2,
4272       p_attrib_val9           IN      VARCHAR2,
4273       p_attrib_val10          IN      VARCHAR2,
4274       p_attrib_val11          IN      VARCHAR2,
4275       p_attrib_val12          IN      VARCHAR2,
4276       p_attrib_val13          IN      VARCHAR2,
4277       p_attrib_val14          IN      VARCHAR2,
4278       p_attrib_val15          IN      VARCHAR2,
4279       p_attrib_val16          IN      VARCHAR2,
4280       p_attrib_val17          IN      VARCHAR2,
4281       p_attrib_val18          IN      VARCHAR2,
4282       p_attrib_val19          IN      VARCHAR2,
4283       p_attrib_val20          IN      VARCHAR2,
4284       p_restrict_sql          IN      VARCHAR2,
4285       p_api_name              IN      VARCHAR2,
4286       p_match_type            IN      VARCHAR2,
4287       p_party_id              IN      NUMBER,
4288       p_search_merged         IN      VARCHAR2,
4289       x_search_ctx_id         OUT     NUMBER,
4290       x_num_matches           OUT     NUMBER,
4291       x_return_status         OUT     VARCHAR2,
4292       x_msg_count             OUT     NUMBER,
4293       x_msg_data              OUT     VARCHAR2
4294  ) IS
4295      l_attrib_id1   NUMBER; 
4296        l_attrib_id2   NUMBER; 
4297        l_attrib_id3   NUMBER; 
4298        l_attrib_id4   NUMBER; 
4299        l_attrib_id5   NUMBER; 
4300        l_attrib_id6   NUMBER; 
4301        l_attrib_id7   NUMBER; 
4302        l_attrib_id8   NUMBER; 
4303        l_attrib_id9   NUMBER; 
4304        l_attrib_id10  NUMBER; 
4305        l_attrib_id11  NUMBER; 
4306        l_attrib_id12  NUMBER; 
4307        l_attrib_id13  NUMBER; 
4308        l_attrib_id14  NUMBER; 
4309        l_attrib_id15  NUMBER; 
4310        l_attrib_id16  NUMBER; 
4311        l_attrib_id17  NUMBER; 
4312        l_attrib_id18  NUMBER; 
4313        l_attrib_id19  NUMBER; 
4314        l_attrib_id20  NUMBER; 
4315   BEGIN
4316     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4317       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);
4318     END IF;
4319     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4320       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);
4321     END IF;
4322  
4323       IF (p_attrib_name1 IS NOT NULL) THEN  
4324            l_attrib_id1 := get_attrib_id(p_attrib_name1); 
4325       END IF; 
4326       IF (p_attrib_name2 IS NOT NULL) THEN 
4327            l_attrib_id2 := get_attrib_id(p_attrib_name2); 
4328       END IF; 
4329       IF (p_attrib_name3 IS NOT NULL) THEN 
4330            l_attrib_id3 := get_attrib_id(p_attrib_name3); 
4331       END IF; 
4332       IF (p_attrib_name4 IS NOT NULL) THEN 
4333            l_attrib_id4 := get_attrib_id(p_attrib_name4); 
4334       END IF; 
4335       IF (p_attrib_name5 IS NOT NULL) THEN 
4336            l_attrib_id5 := get_attrib_id(p_attrib_name5); 
4337       END IF; 
4338       IF (p_attrib_name6 IS NOT NULL) THEN 
4339            l_attrib_id6 := get_attrib_id(p_attrib_name6); 
4340       END IF; 
4341       IF (p_attrib_name7 IS NOT NULL) THEN 
4342            l_attrib_id7 := get_attrib_id(p_attrib_name7); 
4343       END IF; 
4344       IF (p_attrib_name8 IS NOT NULL) THEN 
4345            l_attrib_id8 := get_attrib_id(p_attrib_name8); 
4346       END IF; 
4347       IF (p_attrib_name9 IS NOT NULL) THEN 
4348            l_attrib_id9 := get_attrib_id(p_attrib_name9); 
4349       END IF; 
4350       IF (p_attrib_name10 IS NOT NULL) THEN 
4351            l_attrib_id10 := get_attrib_id(p_attrib_name10); 
4352       END IF; 
4353       IF (p_attrib_name11 IS NOT NULL) THEN 
4354            l_attrib_id11 := get_attrib_id(p_attrib_name11); 
4355       END IF; 
4356       IF (p_attrib_name12 IS NOT NULL) THEN 
4357            l_attrib_id12 := get_attrib_id(p_attrib_name12); 
4358       END IF; 
4359       IF (p_attrib_name13 IS NOT NULL) THEN 
4360            l_attrib_id13 := get_attrib_id(p_attrib_name13); 
4361       END IF; 
4362       IF (p_attrib_name14 IS NOT NULL) THEN 
4363            l_attrib_id14 := get_attrib_id(p_attrib_name14); 
4364       END IF; 
4365       IF (p_attrib_name15 IS NOT NULL) THEN 
4366            l_attrib_id15 := get_attrib_id(p_attrib_name15); 
4367       END IF; 
4368       IF (p_attrib_name16 IS NOT NULL) THEN 
4369            l_attrib_id16 := get_attrib_id(p_attrib_name16); 
4370       END IF; 
4371       IF (p_attrib_name17 IS NOT NULL) THEN 
4372            l_attrib_id17 := get_attrib_id(p_attrib_name17); 
4373       END IF; 
4374       IF (p_attrib_name18 IS NOT NULL) THEN 
4375            l_attrib_id18 := get_attrib_id(p_attrib_name18);  
4376       END IF; 
4377       IF (p_attrib_name19 IS NOT NULL) THEN 
4378            l_attrib_id19 := get_attrib_id(p_attrib_name19); 
4379       END IF; 
4380       IF (p_attrib_name20 IS NOT NULL) THEN 
4381            l_attrib_id20 := get_attrib_id(p_attrib_name20); 
4382       END IF; 
4383     hz_party_search.call_api_dynamic( 
4384             p_init_msg_list, p_rule_id, 
4385             l_attrib_id1,l_attrib_id2,l_attrib_id3,l_attrib_id4,l_attrib_id5, 
4386             l_attrib_id6,l_attrib_id7,l_attrib_id8,l_attrib_id9,l_attrib_id10, 
4387             l_attrib_id11,l_attrib_id12,l_attrib_id13,l_attrib_id14,l_attrib_id15, 
4388             l_attrib_id16,l_attrib_id17,l_attrib_id18,l_attrib_id19,l_attrib_id20, 
4389             p_attrib_val1,p_attrib_val2,p_attrib_val3,p_attrib_val4,p_attrib_val5, 
4390             p_attrib_val6,p_attrib_val7,p_attrib_val8,p_attrib_val9,p_attrib_val10, 
4391             p_attrib_val11,p_attrib_val12,p_attrib_val13,p_attrib_val14,p_attrib_val15, 
4392             p_attrib_val16,p_attrib_val17,p_attrib_val18,p_attrib_val19,p_attrib_val20, 
4393             p_restrict_sql,p_api_name,p_match_type,p_party_id,p_search_merged, 
4394             x_search_ctx_id,x_num_matches, x_return_status, x_msg_count, x_msg_data);  
4395     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4396       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);
4397     END IF;
4398   --Standard call to get message count and if count is 1, get message info
4399   FND_MSG_PUB.Count_And_Get(
4400     p_encoded => FND_API.G_FALSE,
4401     p_count => x_msg_count,
4402     p_data  => x_msg_data);
4403   EXCEPTION
4404        WHEN FND_API.G_EXC_ERROR THEN
4405                x_return_status := FND_API.G_RET_STS_ERROR;
4406                FND_MSG_PUB.Count_And_Get(
4407                                p_encoded => FND_API.G_FALSE,
4408                                p_count => x_msg_count,
4409                                p_data  => x_msg_data);
4410        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4411                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4412                FND_MSG_PUB.Count_And_Get(
4413                                p_encoded => FND_API.G_FALSE,
4414                                p_count => x_msg_count,
4415                                p_data  => x_msg_data);
4416 
4417        WHEN OTHERS THEN
4418                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4419                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4420                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4421                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4422                FND_MSG_PUB.ADD;
4423 
4424                FND_MSG_PUB.Count_And_Get(
4425                                p_encoded => FND_API.G_FALSE,
4426                                p_count => x_msg_count,
4427                                p_data  => x_msg_data);
4428   END call_api_dynamic_names; 
4429 PROCEDURE get_matching_party_sites (
4430         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4431         p_rule_id               IN      NUMBER,
4432         p_party_id              IN      NUMBER,
4433         p_party_site_list	     IN	     PARTY_SITE_LIST,
4434         p_contact_point_list    IN	     CONTACT_POINT_LIST,
4435         x_search_ctx_id         OUT     NUMBER,
4436         x_return_status         OUT     VARCHAR2,
4437         x_msg_count             OUT     NUMBER,
4438         x_msg_data              OUT     VARCHAR2
4439 ) IS
4440   l_num_matches NUMBER;
4441   BEGIN
4442     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4443       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);
4444     END IF;
4445     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4446       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);
4447     END IF;
4448      get_matching_party_sites(p_init_msg_list,p_rule_id,p_party_id,
4449             p_party_site_list,p_contact_point_list,
4450             NULL,NULL,x_search_ctx_id,
4451             l_num_matches,x_return_status,x_msg_count,x_msg_data);
4452     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4453       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);
4454     END IF;
4455   END;
4456 PROCEDURE get_matching_party_sites (
4457         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4458         p_rule_id               IN      NUMBER,
4459         p_party_id              IN      NUMBER,
4460         p_party_site_list       IN      PARTY_SITE_LIST,
4461         p_contact_point_list    IN      CONTACT_POINT_LIST,
4462         p_restrict_sql          IN      VARCHAR2,
4463         p_match_type            IN      VARCHAR2,
4464         x_search_ctx_id         OUT     NUMBER,
4465         x_num_matches           OUT     NUMBER,
4466         x_return_status         OUT     VARCHAR2,
4467         x_msg_count             OUT     NUMBER,
4468         x_msg_data              OUT     VARCHAR2
4469 ) IS
4470   CURSOR c_match_rule IS 
4471     SELECT COMPILATION_FLAG 
4472     FROM HZ_MATCH_RULES_VL 
4473     WHERE MATCH_RULE_ID = p_rule_id;
4474   l_cmp_flag VARCHAR2(1);
4475   BEGIN
4476     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4477       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);
4478     END IF;
4479     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4480       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);
4481     END IF;
4482 
4483     -- Initialize return status and message stack
4484     x_return_status := FND_API.G_RET_STS_SUCCESS;
4485     IF FND_API.to_Boolean(p_init_msg_list) THEN
4486       FND_MSG_PUB.initialize;
4487     END IF;
4488 
4489     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
4490       -- No MATCH RULE FOUND
4491       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
4492       FND_MSG_PUB.ADD;
4493       RAISE FND_API.G_EXC_ERROR;
4494     END IF;
4495     OPEN c_match_rule;
4496     FETCH c_match_rule INTO l_cmp_flag;
4497     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
4498       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
4499       FND_MSG_PUB.ADD;
4500       RAISE FND_API.G_EXC_ERROR;
4501     END IF;
4502     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
4503     IF p_rule_id=2 THEN 
4504       IF NOT HZ_MATCH_RULE_2.check_staged THEN
4505         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4506         FND_MSG_PUB.ADD;
4507         RAISE FND_API.G_EXC_ERROR;
4508       END IF;
4509       HZ_MATCH_RULE_2.get_matching_party_sites(
4510         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4511         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4512     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
4513     ELSIF p_rule_id=3 THEN 
4514       IF NOT HZ_MATCH_RULE_3.check_staged THEN
4515         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4516         FND_MSG_PUB.ADD;
4517         RAISE FND_API.G_EXC_ERROR;
4518       END IF;
4519       HZ_MATCH_RULE_3.get_matching_party_sites(
4520         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4521         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4522     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
4523     ELSIF p_rule_id=4 THEN 
4524       IF NOT HZ_MATCH_RULE_4.check_staged THEN
4525         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4526         FND_MSG_PUB.ADD;
4527         RAISE FND_API.G_EXC_ERROR;
4528       END IF;
4529       HZ_MATCH_RULE_4.get_matching_party_sites(
4530         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4531         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4532     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
4533     ELSIF p_rule_id=5 THEN 
4534       IF NOT HZ_MATCH_RULE_5.check_staged THEN
4535         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4536         FND_MSG_PUB.ADD;
4537         RAISE FND_API.G_EXC_ERROR;
4538       END IF;
4539       HZ_MATCH_RULE_5.get_matching_party_sites(
4540         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4541         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4542     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
4543     ELSIF p_rule_id=6 THEN 
4544       IF NOT HZ_MATCH_RULE_6.check_staged THEN
4545         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4546         FND_MSG_PUB.ADD;
4547         RAISE FND_API.G_EXC_ERROR;
4548       END IF;
4549       HZ_MATCH_RULE_6.get_matching_party_sites(
4550         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4551         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4552     -- Code for Match rule SAMPLE: SIMILAR_PERSON
4553     ELSIF p_rule_id=7 THEN 
4554       IF NOT HZ_MATCH_RULE_7.check_staged THEN
4555         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4556         FND_MSG_PUB.ADD;
4557         RAISE FND_API.G_EXC_ERROR;
4558       END IF;
4559       HZ_MATCH_RULE_7.get_matching_party_sites(
4560         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4561         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4562     -- Code for Match rule SAMPLE: SEARCH
4563     ELSIF p_rule_id=8 THEN 
4564       IF NOT HZ_MATCH_RULE_8.check_staged THEN
4565         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4566         FND_MSG_PUB.ADD;
4567         RAISE FND_API.G_EXC_ERROR;
4568       END IF;
4569       HZ_MATCH_RULE_8.get_matching_party_sites(
4570         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4571         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4572     -- Code for Match rule RM SEARCH RULE
4573     ELSIF p_rule_id=32 THEN 
4574       IF NOT HZ_MATCH_RULE_32.check_staged THEN
4575         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4576         FND_MSG_PUB.ADD;
4577         RAISE FND_API.G_EXC_ERROR;
4578       END IF;
4579       HZ_MATCH_RULE_32.get_matching_party_sites(
4580         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4581         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4582     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
4583     ELSIF p_rule_id=33 THEN 
4584       IF NOT HZ_MATCH_RULE_33.check_staged THEN
4585         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4586         FND_MSG_PUB.ADD;
4587         RAISE FND_API.G_EXC_ERROR;
4588       END IF;
4589       HZ_MATCH_RULE_33.get_matching_party_sites(
4590         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4591         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4592     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
4593     ELSIF p_rule_id=34 THEN 
4594       IF NOT HZ_MATCH_RULE_34.check_staged THEN
4595         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4596         FND_MSG_PUB.ADD;
4597         RAISE FND_API.G_EXC_ERROR;
4598       END IF;
4599       HZ_MATCH_RULE_34.get_matching_party_sites(
4600         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4601         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4602     -- Code for Match rule DL SMART SEARCH
4603     ELSIF p_rule_id=35 THEN 
4604       IF NOT HZ_MATCH_RULE_35.check_staged THEN
4605         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4606         FND_MSG_PUB.ADD;
4607         RAISE FND_API.G_EXC_ERROR;
4608       END IF;
4609       HZ_MATCH_RULE_35.get_matching_party_sites(
4610         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4611         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4612     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
4613     ELSIF p_rule_id=36 THEN 
4614       IF NOT HZ_MATCH_RULE_36.check_staged THEN
4615         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4616         FND_MSG_PUB.ADD;
4617         RAISE FND_API.G_EXC_ERROR;
4618       END IF;
4619       HZ_MATCH_RULE_36.get_matching_party_sites(
4620         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4621         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4622     -- Code for Match rule DL ADDRESS DEFAULT
4623     ELSIF p_rule_id=37 THEN 
4624       IF NOT HZ_MATCH_RULE_37.check_staged THEN
4625         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4626         FND_MSG_PUB.ADD;
4627         RAISE FND_API.G_EXC_ERROR;
4628       END IF;
4629       HZ_MATCH_RULE_37.get_matching_party_sites(
4630         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4631         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4632     -- Code for Match rule DL RELATIONSHIP DEFAULT
4633     ELSIF p_rule_id=38 THEN 
4634       IF NOT HZ_MATCH_RULE_38.check_staged THEN
4635         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4636         FND_MSG_PUB.ADD;
4637         RAISE FND_API.G_EXC_ERROR;
4638       END IF;
4639       HZ_MATCH_RULE_38.get_matching_party_sites(
4640         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4641         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4642     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
4643     ELSIF p_rule_id=39 THEN 
4644       IF NOT HZ_MATCH_RULE_39.check_staged THEN
4645         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4646         FND_MSG_PUB.ADD;
4647         RAISE FND_API.G_EXC_ERROR;
4648       END IF;
4649       HZ_MATCH_RULE_39.get_matching_party_sites(
4650         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4651         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4652     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
4653     ELSIF p_rule_id=40 THEN 
4654       IF NOT HZ_MATCH_RULE_40.check_staged THEN
4655         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4656         FND_MSG_PUB.ADD;
4657         RAISE FND_API.G_EXC_ERROR;
4658       END IF;
4659       HZ_MATCH_RULE_40.get_matching_party_sites(
4660         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4661         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4662     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
4663     ELSIF p_rule_id=41 THEN 
4664       IF NOT HZ_MATCH_RULE_41.check_staged THEN
4665         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4666         FND_MSG_PUB.ADD;
4667         RAISE FND_API.G_EXC_ERROR;
4668       END IF;
4669       HZ_MATCH_RULE_41.get_matching_party_sites(
4670         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4671         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4672     -- Code for Match rule SAMPLE: SEARCH EXACT
4673     ELSIF p_rule_id=42 THEN 
4674       IF NOT HZ_MATCH_RULE_42.check_staged THEN
4675         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4676         FND_MSG_PUB.ADD;
4677         RAISE FND_API.G_EXC_ERROR;
4678       END IF;
4679       HZ_MATCH_RULE_42.get_matching_party_sites(
4680         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4681         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4682     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
4683     ELSIF p_rule_id=48 THEN 
4684       IF NOT HZ_MATCH_RULE_48.check_staged THEN
4685         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4686         FND_MSG_PUB.ADD;
4687         RAISE FND_API.G_EXC_ERROR;
4688       END IF;
4689       HZ_MATCH_RULE_48.get_matching_party_sites(
4690         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4691         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4692     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
4693     ELSIF p_rule_id=50 THEN 
4694       IF NOT HZ_MATCH_RULE_50.check_staged THEN
4695         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4696         FND_MSG_PUB.ADD;
4697         RAISE FND_API.G_EXC_ERROR;
4698       END IF;
4699       HZ_MATCH_RULE_50.get_matching_party_sites(
4700         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4701         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4702     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
4703     ELSIF p_rule_id=51 THEN 
4704       IF NOT HZ_MATCH_RULE_51.check_staged THEN
4705         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4706         FND_MSG_PUB.ADD;
4707         RAISE FND_API.G_EXC_ERROR;
4708       END IF;
4709       HZ_MATCH_RULE_51.get_matching_party_sites(
4710         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4711         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4712     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
4713     ELSIF p_rule_id=52 THEN 
4714       IF NOT HZ_MATCH_RULE_52.check_staged THEN
4715         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4716         FND_MSG_PUB.ADD;
4717         RAISE FND_API.G_EXC_ERROR;
4718       END IF;
4719       HZ_MATCH_RULE_52.get_matching_party_sites(
4720         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4721         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4722     -- Code for Match rule CREDIT MANAGEMENT SEARCH
4723     ELSIF p_rule_id=53 THEN 
4724       IF NOT HZ_MATCH_RULE_53.check_staged THEN
4725         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4726         FND_MSG_PUB.ADD;
4727         RAISE FND_API.G_EXC_ERROR;
4728       END IF;
4729       HZ_MATCH_RULE_53.get_matching_party_sites(
4730         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4731         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4732     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
4733     ELSIF p_rule_id=58 THEN 
4734       IF NOT HZ_MATCH_RULE_58.check_staged THEN
4735         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4736         FND_MSG_PUB.ADD;
4737         RAISE FND_API.G_EXC_ERROR;
4738       END IF;
4739       HZ_MATCH_RULE_58.get_matching_party_sites(
4740         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4741         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4742     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
4743     ELSIF p_rule_id=60 THEN 
4744       IF NOT HZ_MATCH_RULE_60.check_staged THEN
4745         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4746         FND_MSG_PUB.ADD;
4747         RAISE FND_API.G_EXC_ERROR;
4748       END IF;
4749       HZ_MATCH_RULE_60.get_matching_party_sites(
4750         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4751         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4752     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
4753     ELSIF p_rule_id=61 THEN 
4754       IF NOT HZ_MATCH_RULE_61.check_staged THEN
4755         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4756         FND_MSG_PUB.ADD;
4757         RAISE FND_API.G_EXC_ERROR;
4758       END IF;
4759       HZ_MATCH_RULE_61.get_matching_party_sites(
4760         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4761         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4762     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
4763     ELSIF p_rule_id=62 THEN 
4764       IF NOT HZ_MATCH_RULE_62.check_staged THEN
4765         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4766         FND_MSG_PUB.ADD;
4767         RAISE FND_API.G_EXC_ERROR;
4768       END IF;
4769       HZ_MATCH_RULE_62.get_matching_party_sites(
4770         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4771         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4772     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
4773     ELSIF p_rule_id=98 THEN 
4774       IF NOT HZ_MATCH_RULE_98.check_staged THEN
4775         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4776         FND_MSG_PUB.ADD;
4777         RAISE FND_API.G_EXC_ERROR;
4778       END IF;
4779       HZ_MATCH_RULE_98.get_matching_party_sites(
4780         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4781         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4782     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
4783     ELSIF p_rule_id=99 THEN 
4784       IF NOT HZ_MATCH_RULE_99.check_staged THEN
4785         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4786         FND_MSG_PUB.ADD;
4787         RAISE FND_API.G_EXC_ERROR;
4788       END IF;
4789       HZ_MATCH_RULE_99.get_matching_party_sites(
4790         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4791         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4792     -- Code for Match rule Web Services: Identical Organizations
4793     ELSIF p_rule_id=238 THEN 
4794       IF NOT HZ_MATCH_RULE_238.check_staged THEN
4795         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4796         FND_MSG_PUB.ADD;
4797         RAISE FND_API.G_EXC_ERROR;
4798       END IF;
4799       HZ_MATCH_RULE_238.get_matching_party_sites(
4800         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4801         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4802     -- Code for Match rule Web Services: Identical Persons
4803     ELSIF p_rule_id=240 THEN 
4804       IF NOT HZ_MATCH_RULE_240.check_staged THEN
4805         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4806         FND_MSG_PUB.ADD;
4807         RAISE FND_API.G_EXC_ERROR;
4808       END IF;
4809       HZ_MATCH_RULE_240.get_matching_party_sites(
4810         p_rule_id, p_party_id,p_party_site_list, p_contact_point_list,
4811         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4812     END IF;
4813     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4814       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);
4815     END IF;
4816   --Standard call to get message count and if count is 1, get message info
4817   FND_MSG_PUB.Count_And_Get(
4818     p_encoded => FND_API.G_FALSE,
4819     p_count => x_msg_count,
4820     p_data  => x_msg_data);
4821   EXCEPTION
4822        WHEN FND_API.G_EXC_ERROR THEN
4823                x_return_status := FND_API.G_RET_STS_ERROR;
4824                FND_MSG_PUB.Count_And_Get(
4825                                p_encoded => FND_API.G_FALSE,
4826                                p_count => x_msg_count,
4827                                p_data  => x_msg_data);
4828        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4829                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4830                FND_MSG_PUB.Count_And_Get(
4831                                p_encoded => FND_API.G_FALSE,
4832                                p_count => x_msg_count,
4833                                p_data  => x_msg_data);
4834 
4835        WHEN OTHERS THEN
4836                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4837                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
4838                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
4839                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
4840                FND_MSG_PUB.ADD;
4841 
4842                FND_MSG_PUB.Count_And_Get(
4843                                p_encoded => FND_API.G_FALSE,
4844                                p_count => x_msg_count,
4845                                p_data  => x_msg_data);
4846   END;
4847 
4848 PROCEDURE get_matching_contacts (
4849         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4850         p_rule_id               IN      NUMBER,
4851         p_party_id              IN      NUMBER,
4852         p_contact_list          IN      CONTACT_LIST,
4853         p_contact_point_list    IN      CONTACT_POINT_LIST,
4854         x_search_ctx_id         OUT     NUMBER,
4855         x_return_status         OUT     VARCHAR2,
4856         x_msg_count             OUT     NUMBER,
4857         x_msg_data              OUT     VARCHAR2
4858 ) IS
4859   l_num_matches NUMBER;
4860   BEGIN
4861     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4862       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);
4863     END IF;
4864     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4865       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);
4866     END IF;
4867      get_matching_contacts(p_init_msg_list,p_rule_id,p_party_id,
4868             p_contact_list,p_contact_point_list,
4869             NULL,NULL,x_search_ctx_id,
4870             l_num_matches,x_return_status,x_msg_count,x_msg_data);
4871     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4872       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);
4873     END IF;
4874   END;
4875 PROCEDURE get_matching_contacts (
4876         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
4877         p_rule_id               IN      NUMBER,
4878         p_party_id              IN      NUMBER,
4879         p_contact_list	     IN	     CONTACT_LIST,
4880         p_contact_point_list    IN	     CONTACT_POINT_LIST,
4881         p_restrict_sql          IN      VARCHAR2,
4882         p_match_type            IN      VARCHAR2,
4883         x_search_ctx_id         OUT     NUMBER,
4884         x_num_matches           OUT     NUMBER,
4885         x_return_status         OUT     VARCHAR2,
4886         x_msg_count             OUT     NUMBER,
4887         x_msg_data              OUT     VARCHAR2
4888 ) IS
4889   CURSOR c_match_rule IS 
4890     SELECT COMPILATION_FLAG 
4891     FROM HZ_MATCH_RULES_VL 
4892     WHERE MATCH_RULE_ID = p_rule_id;
4893   l_cmp_flag VARCHAR2(1);
4894   BEGIN
4895     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
4896       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);
4897     END IF;
4898     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
4899       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);
4900     END IF;
4901 
4902     -- Initialize return status and message stack
4903     x_return_status := FND_API.G_RET_STS_SUCCESS;
4904     IF FND_API.to_Boolean(p_init_msg_list) THEN
4905       FND_MSG_PUB.initialize;
4906     END IF;
4907 
4908     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
4909       -- No MATCH RULE FOUND
4910       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
4911       FND_MSG_PUB.ADD;
4912       RAISE FND_API.G_EXC_ERROR;
4913     END IF;
4914     OPEN c_match_rule;
4915     FETCH c_match_rule INTO l_cmp_flag;
4916     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
4917       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
4918       FND_MSG_PUB.ADD;
4919       RAISE FND_API.G_EXC_ERROR;
4920     END IF;
4921     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
4922     IF p_rule_id=2 THEN 
4923       IF NOT HZ_MATCH_RULE_2.check_staged THEN
4924         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4925         FND_MSG_PUB.ADD;
4926         RAISE FND_API.G_EXC_ERROR;
4927       END IF;
4928       HZ_MATCH_RULE_2.get_matching_contacts(
4929         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4930         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4931     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
4932     ELSIF p_rule_id=3 THEN 
4933       IF NOT HZ_MATCH_RULE_3.check_staged THEN
4934         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4935         FND_MSG_PUB.ADD;
4936         RAISE FND_API.G_EXC_ERROR;
4937       END IF;
4938       HZ_MATCH_RULE_3.get_matching_contacts(
4939         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4940         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4941     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
4942     ELSIF p_rule_id=4 THEN 
4943       IF NOT HZ_MATCH_RULE_4.check_staged THEN
4944         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4945         FND_MSG_PUB.ADD;
4946         RAISE FND_API.G_EXC_ERROR;
4947       END IF;
4948       HZ_MATCH_RULE_4.get_matching_contacts(
4949         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4950         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4951     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
4952     ELSIF p_rule_id=5 THEN 
4953       IF NOT HZ_MATCH_RULE_5.check_staged THEN
4954         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4955         FND_MSG_PUB.ADD;
4956         RAISE FND_API.G_EXC_ERROR;
4957       END IF;
4958       HZ_MATCH_RULE_5.get_matching_contacts(
4959         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4960         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4961     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
4962     ELSIF p_rule_id=6 THEN 
4963       IF NOT HZ_MATCH_RULE_6.check_staged THEN
4964         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4965         FND_MSG_PUB.ADD;
4966         RAISE FND_API.G_EXC_ERROR;
4967       END IF;
4968       HZ_MATCH_RULE_6.get_matching_contacts(
4969         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4970         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4971     -- Code for Match rule SAMPLE: SIMILAR_PERSON
4972     ELSIF p_rule_id=7 THEN 
4973       IF NOT HZ_MATCH_RULE_7.check_staged THEN
4974         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4975         FND_MSG_PUB.ADD;
4976         RAISE FND_API.G_EXC_ERROR;
4977       END IF;
4978       HZ_MATCH_RULE_7.get_matching_contacts(
4979         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4980         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4981     -- Code for Match rule SAMPLE: SEARCH
4982     ELSIF p_rule_id=8 THEN 
4983       IF NOT HZ_MATCH_RULE_8.check_staged THEN
4984         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4985         FND_MSG_PUB.ADD;
4986         RAISE FND_API.G_EXC_ERROR;
4987       END IF;
4988       HZ_MATCH_RULE_8.get_matching_contacts(
4989         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
4990         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
4991     -- Code for Match rule RM SEARCH RULE
4992     ELSIF p_rule_id=32 THEN 
4993       IF NOT HZ_MATCH_RULE_32.check_staged THEN
4994         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
4995         FND_MSG_PUB.ADD;
4996         RAISE FND_API.G_EXC_ERROR;
4997       END IF;
4998       HZ_MATCH_RULE_32.get_matching_contacts(
4999         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5000         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5001     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5002     ELSIF p_rule_id=33 THEN 
5003       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5004         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5005         FND_MSG_PUB.ADD;
5006         RAISE FND_API.G_EXC_ERROR;
5007       END IF;
5008       HZ_MATCH_RULE_33.get_matching_contacts(
5009         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5010         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5011     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5012     ELSIF p_rule_id=34 THEN 
5013       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5014         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5015         FND_MSG_PUB.ADD;
5016         RAISE FND_API.G_EXC_ERROR;
5017       END IF;
5018       HZ_MATCH_RULE_34.get_matching_contacts(
5019         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5020         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5021     -- Code for Match rule DL SMART SEARCH
5022     ELSIF p_rule_id=35 THEN 
5023       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5024         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5025         FND_MSG_PUB.ADD;
5026         RAISE FND_API.G_EXC_ERROR;
5027       END IF;
5028       HZ_MATCH_RULE_35.get_matching_contacts(
5029         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5030         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5031     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5032     ELSIF p_rule_id=36 THEN 
5033       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5034         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5035         FND_MSG_PUB.ADD;
5036         RAISE FND_API.G_EXC_ERROR;
5037       END IF;
5038       HZ_MATCH_RULE_36.get_matching_contacts(
5039         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5040         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5041     -- Code for Match rule DL ADDRESS DEFAULT
5042     ELSIF p_rule_id=37 THEN 
5043       IF NOT HZ_MATCH_RULE_37.check_staged THEN
5044         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5045         FND_MSG_PUB.ADD;
5046         RAISE FND_API.G_EXC_ERROR;
5047       END IF;
5048       HZ_MATCH_RULE_37.get_matching_contacts(
5049         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5050         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5051     -- Code for Match rule DL RELATIONSHIP DEFAULT
5052     ELSIF p_rule_id=38 THEN 
5053       IF NOT HZ_MATCH_RULE_38.check_staged THEN
5054         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5055         FND_MSG_PUB.ADD;
5056         RAISE FND_API.G_EXC_ERROR;
5057       END IF;
5058       HZ_MATCH_RULE_38.get_matching_contacts(
5059         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5060         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5061     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
5062     ELSIF p_rule_id=39 THEN 
5063       IF NOT HZ_MATCH_RULE_39.check_staged THEN
5064         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5065         FND_MSG_PUB.ADD;
5066         RAISE FND_API.G_EXC_ERROR;
5067       END IF;
5068       HZ_MATCH_RULE_39.get_matching_contacts(
5069         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5070         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5071     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
5072     ELSIF p_rule_id=40 THEN 
5073       IF NOT HZ_MATCH_RULE_40.check_staged THEN
5074         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5075         FND_MSG_PUB.ADD;
5076         RAISE FND_API.G_EXC_ERROR;
5077       END IF;
5078       HZ_MATCH_RULE_40.get_matching_contacts(
5079         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5080         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5081     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
5082     ELSIF p_rule_id=41 THEN 
5083       IF NOT HZ_MATCH_RULE_41.check_staged THEN
5084         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5085         FND_MSG_PUB.ADD;
5086         RAISE FND_API.G_EXC_ERROR;
5087       END IF;
5088       HZ_MATCH_RULE_41.get_matching_contacts(
5089         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5090         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5091     -- Code for Match rule SAMPLE: SEARCH EXACT
5092     ELSIF p_rule_id=42 THEN 
5093       IF NOT HZ_MATCH_RULE_42.check_staged THEN
5094         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5095         FND_MSG_PUB.ADD;
5096         RAISE FND_API.G_EXC_ERROR;
5097       END IF;
5098       HZ_MATCH_RULE_42.get_matching_contacts(
5099         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5100         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5101     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
5102     ELSIF p_rule_id=48 THEN 
5103       IF NOT HZ_MATCH_RULE_48.check_staged THEN
5104         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5105         FND_MSG_PUB.ADD;
5106         RAISE FND_API.G_EXC_ERROR;
5107       END IF;
5108       HZ_MATCH_RULE_48.get_matching_contacts(
5109         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5110         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5111     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
5112     ELSIF p_rule_id=50 THEN 
5113       IF NOT HZ_MATCH_RULE_50.check_staged THEN
5114         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5115         FND_MSG_PUB.ADD;
5116         RAISE FND_API.G_EXC_ERROR;
5117       END IF;
5118       HZ_MATCH_RULE_50.get_matching_contacts(
5119         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5120         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5121     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
5122     ELSIF p_rule_id=51 THEN 
5123       IF NOT HZ_MATCH_RULE_51.check_staged THEN
5124         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5125         FND_MSG_PUB.ADD;
5126         RAISE FND_API.G_EXC_ERROR;
5127       END IF;
5128       HZ_MATCH_RULE_51.get_matching_contacts(
5129         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5130         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5131     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
5132     ELSIF p_rule_id=52 THEN 
5133       IF NOT HZ_MATCH_RULE_52.check_staged THEN
5134         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5135         FND_MSG_PUB.ADD;
5136         RAISE FND_API.G_EXC_ERROR;
5137       END IF;
5138       HZ_MATCH_RULE_52.get_matching_contacts(
5139         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5140         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5141     -- Code for Match rule CREDIT MANAGEMENT SEARCH
5142     ELSIF p_rule_id=53 THEN 
5143       IF NOT HZ_MATCH_RULE_53.check_staged THEN
5144         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5145         FND_MSG_PUB.ADD;
5146         RAISE FND_API.G_EXC_ERROR;
5147       END IF;
5148       HZ_MATCH_RULE_53.get_matching_contacts(
5149         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5150         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5151     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
5152     ELSIF p_rule_id=58 THEN 
5153       IF NOT HZ_MATCH_RULE_58.check_staged THEN
5154         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5155         FND_MSG_PUB.ADD;
5156         RAISE FND_API.G_EXC_ERROR;
5157       END IF;
5158       HZ_MATCH_RULE_58.get_matching_contacts(
5159         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5160         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5161     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
5162     ELSIF p_rule_id=60 THEN 
5163       IF NOT HZ_MATCH_RULE_60.check_staged THEN
5164         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5165         FND_MSG_PUB.ADD;
5166         RAISE FND_API.G_EXC_ERROR;
5167       END IF;
5168       HZ_MATCH_RULE_60.get_matching_contacts(
5169         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5170         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5171     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
5172     ELSIF p_rule_id=61 THEN 
5173       IF NOT HZ_MATCH_RULE_61.check_staged THEN
5174         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5175         FND_MSG_PUB.ADD;
5176         RAISE FND_API.G_EXC_ERROR;
5177       END IF;
5178       HZ_MATCH_RULE_61.get_matching_contacts(
5179         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5180         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5181     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
5182     ELSIF p_rule_id=62 THEN 
5183       IF NOT HZ_MATCH_RULE_62.check_staged THEN
5184         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5185         FND_MSG_PUB.ADD;
5186         RAISE FND_API.G_EXC_ERROR;
5187       END IF;
5188       HZ_MATCH_RULE_62.get_matching_contacts(
5189         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5190         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5191     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
5192     ELSIF p_rule_id=98 THEN 
5193       IF NOT HZ_MATCH_RULE_98.check_staged THEN
5194         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5195         FND_MSG_PUB.ADD;
5196         RAISE FND_API.G_EXC_ERROR;
5197       END IF;
5198       HZ_MATCH_RULE_98.get_matching_contacts(
5199         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5200         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5201     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
5202     ELSIF p_rule_id=99 THEN 
5203       IF NOT HZ_MATCH_RULE_99.check_staged THEN
5204         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5205         FND_MSG_PUB.ADD;
5206         RAISE FND_API.G_EXC_ERROR;
5207       END IF;
5208       HZ_MATCH_RULE_99.get_matching_contacts(
5209         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5210         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5211     -- Code for Match rule Web Services: Identical Organizations
5212     ELSIF p_rule_id=238 THEN 
5213       IF NOT HZ_MATCH_RULE_238.check_staged THEN
5214         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5215         FND_MSG_PUB.ADD;
5216         RAISE FND_API.G_EXC_ERROR;
5217       END IF;
5218       HZ_MATCH_RULE_238.get_matching_contacts(
5219         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5220         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5221     -- Code for Match rule Web Services: Identical Persons
5222     ELSIF p_rule_id=240 THEN 
5223       IF NOT HZ_MATCH_RULE_240.check_staged THEN
5224         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5225         FND_MSG_PUB.ADD;
5226         RAISE FND_API.G_EXC_ERROR;
5227       END IF;
5228       HZ_MATCH_RULE_240.get_matching_contacts(
5229         p_rule_id, p_party_id,p_contact_list, p_contact_point_list,
5230         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5231     END IF;
5232   --Standard call to get message count and if count is 1, get message info
5233   FND_MSG_PUB.Count_And_Get(
5234     p_encoded => FND_API.G_FALSE,
5235     p_count => x_msg_count,
5236     p_data  => x_msg_data);
5237   EXCEPTION
5238        WHEN FND_API.G_EXC_ERROR THEN
5239                x_return_status := FND_API.G_RET_STS_ERROR;
5240                FND_MSG_PUB.Count_And_Get(
5241                                p_encoded => FND_API.G_FALSE,
5242                                p_count => x_msg_count,
5243                                p_data  => x_msg_data);
5244        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5245                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5246                FND_MSG_PUB.Count_And_Get(
5247                                p_encoded => FND_API.G_FALSE,
5248                                p_count => x_msg_count,
5249                                p_data  => x_msg_data);
5250 
5251        WHEN OTHERS THEN
5252                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5253                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5254                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
5255                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5256                FND_MSG_PUB.ADD;
5257 
5258                FND_MSG_PUB.Count_And_Get(
5259                                p_encoded => FND_API.G_FALSE,
5260                                p_count => x_msg_count,
5261                                p_data  => x_msg_data);
5262     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5263       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);
5264     END IF;
5265   END;
5266 
5267 PROCEDURE get_matching_contact_points (
5268         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5269         p_rule_id               IN      NUMBER,
5270         p_party_id              IN      NUMBER,
5271         p_contact_point_list    IN	     CONTACT_POINT_LIST,
5272         x_search_ctx_id         OUT     NUMBER,
5273         x_return_status         OUT     VARCHAR2,
5274         x_msg_count             OUT     NUMBER,
5275         x_msg_data              OUT     VARCHAR2
5276 ) IS
5277   l_num_matches NUMBER;
5278   BEGIN
5279     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5280       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);
5281     END IF;
5282     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5283       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);
5284     END IF;
5285      get_matching_contact_points(p_init_msg_list,p_rule_id,p_party_id,
5286             p_contact_point_list,
5287             NULL,NULL,x_search_ctx_id,
5288             l_num_matches,x_return_status,x_msg_count,x_msg_data);
5289     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5290       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);
5291     END IF;
5292   END;
5293 PROCEDURE get_matching_contact_points (
5294         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5295         p_rule_id               IN      NUMBER,
5296         p_party_id              IN      NUMBER,
5297         p_contact_point_list    IN	     CONTACT_POINT_LIST,
5298         p_restrict_sql          IN      VARCHAR2,
5299         p_match_type            IN      VARCHAR2,
5300         x_search_ctx_id         OUT     NUMBER,
5301         x_num_matches           OUT     NUMBER,
5302         x_return_status         OUT     VARCHAR2,
5303         x_msg_count             OUT     NUMBER,
5304         x_msg_data              OUT     VARCHAR2
5305 ) IS
5306   CURSOR c_match_rule IS 
5307     SELECT COMPILATION_FLAG 
5308     FROM HZ_MATCH_RULES_VL 
5309     WHERE MATCH_RULE_ID = p_rule_id;
5310   l_cmp_flag VARCHAR2(1);
5311   BEGIN
5312     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5313       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);
5314     END IF;
5315     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5316       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);
5317     END IF;
5318 
5319     -- Initialize return status and message stack
5320     x_return_status := FND_API.G_RET_STS_SUCCESS;
5321     IF FND_API.to_Boolean(p_init_msg_list) THEN
5322       FND_MSG_PUB.initialize;
5323     END IF;
5324 
5325     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
5326       -- No MATCH RULE FOUND
5327       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
5328       FND_MSG_PUB.ADD;
5329       RAISE FND_API.G_EXC_ERROR;
5330     END IF;
5331     OPEN c_match_rule;
5332     FETCH c_match_rule INTO l_cmp_flag;
5333     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
5334       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
5335       FND_MSG_PUB.ADD;
5336       RAISE FND_API.G_EXC_ERROR;
5337     END IF;
5338     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
5339     IF p_rule_id=2 THEN 
5340       IF NOT HZ_MATCH_RULE_2.check_staged THEN
5341         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5342         FND_MSG_PUB.ADD;
5343         RAISE FND_API.G_EXC_ERROR;
5344       END IF;
5345       HZ_MATCH_RULE_2.get_matching_contact_points(
5346         p_rule_id, p_party_id, p_contact_point_list,
5347         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5348     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
5349     ELSIF p_rule_id=3 THEN 
5350       IF NOT HZ_MATCH_RULE_3.check_staged THEN
5351         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5352         FND_MSG_PUB.ADD;
5353         RAISE FND_API.G_EXC_ERROR;
5354       END IF;
5355       HZ_MATCH_RULE_3.get_matching_contact_points(
5356         p_rule_id, p_party_id, p_contact_point_list,
5357         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5358     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
5359     ELSIF p_rule_id=4 THEN 
5360       IF NOT HZ_MATCH_RULE_4.check_staged THEN
5361         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5362         FND_MSG_PUB.ADD;
5363         RAISE FND_API.G_EXC_ERROR;
5364       END IF;
5365       HZ_MATCH_RULE_4.get_matching_contact_points(
5366         p_rule_id, p_party_id, p_contact_point_list,
5367         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5368     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
5369     ELSIF p_rule_id=5 THEN 
5370       IF NOT HZ_MATCH_RULE_5.check_staged THEN
5371         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5372         FND_MSG_PUB.ADD;
5373         RAISE FND_API.G_EXC_ERROR;
5374       END IF;
5375       HZ_MATCH_RULE_5.get_matching_contact_points(
5376         p_rule_id, p_party_id, p_contact_point_list,
5377         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5378     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
5379     ELSIF p_rule_id=6 THEN 
5380       IF NOT HZ_MATCH_RULE_6.check_staged THEN
5381         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5382         FND_MSG_PUB.ADD;
5383         RAISE FND_API.G_EXC_ERROR;
5384       END IF;
5385       HZ_MATCH_RULE_6.get_matching_contact_points(
5386         p_rule_id, p_party_id, p_contact_point_list,
5387         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5388     -- Code for Match rule SAMPLE: SIMILAR_PERSON
5389     ELSIF p_rule_id=7 THEN 
5390       IF NOT HZ_MATCH_RULE_7.check_staged THEN
5391         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5392         FND_MSG_PUB.ADD;
5393         RAISE FND_API.G_EXC_ERROR;
5394       END IF;
5395       HZ_MATCH_RULE_7.get_matching_contact_points(
5396         p_rule_id, p_party_id, p_contact_point_list,
5397         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5398     -- Code for Match rule SAMPLE: SEARCH
5399     ELSIF p_rule_id=8 THEN 
5400       IF NOT HZ_MATCH_RULE_8.check_staged THEN
5401         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5402         FND_MSG_PUB.ADD;
5403         RAISE FND_API.G_EXC_ERROR;
5404       END IF;
5405       HZ_MATCH_RULE_8.get_matching_contact_points(
5406         p_rule_id, p_party_id, p_contact_point_list,
5407         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5408     -- Code for Match rule RM SEARCH RULE
5409     ELSIF p_rule_id=32 THEN 
5410       IF NOT HZ_MATCH_RULE_32.check_staged THEN
5411         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5412         FND_MSG_PUB.ADD;
5413         RAISE FND_API.G_EXC_ERROR;
5414       END IF;
5415       HZ_MATCH_RULE_32.get_matching_contact_points(
5416         p_rule_id, p_party_id, p_contact_point_list,
5417         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5418     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5419     ELSIF p_rule_id=33 THEN 
5420       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5421         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5422         FND_MSG_PUB.ADD;
5423         RAISE FND_API.G_EXC_ERROR;
5424       END IF;
5425       HZ_MATCH_RULE_33.get_matching_contact_points(
5426         p_rule_id, p_party_id, p_contact_point_list,
5427         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5428     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5429     ELSIF p_rule_id=34 THEN 
5430       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5431         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5432         FND_MSG_PUB.ADD;
5433         RAISE FND_API.G_EXC_ERROR;
5434       END IF;
5435       HZ_MATCH_RULE_34.get_matching_contact_points(
5436         p_rule_id, p_party_id, p_contact_point_list,
5437         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5438     -- Code for Match rule DL SMART SEARCH
5439     ELSIF p_rule_id=35 THEN 
5440       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5441         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5442         FND_MSG_PUB.ADD;
5443         RAISE FND_API.G_EXC_ERROR;
5444       END IF;
5445       HZ_MATCH_RULE_35.get_matching_contact_points(
5446         p_rule_id, p_party_id, p_contact_point_list,
5447         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5448     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5449     ELSIF p_rule_id=36 THEN 
5450       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5451         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5452         FND_MSG_PUB.ADD;
5453         RAISE FND_API.G_EXC_ERROR;
5454       END IF;
5455       HZ_MATCH_RULE_36.get_matching_contact_points(
5456         p_rule_id, p_party_id, p_contact_point_list,
5457         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5458     -- Code for Match rule DL ADDRESS DEFAULT
5459     ELSIF p_rule_id=37 THEN 
5460       IF NOT HZ_MATCH_RULE_37.check_staged THEN
5461         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5462         FND_MSG_PUB.ADD;
5463         RAISE FND_API.G_EXC_ERROR;
5464       END IF;
5465       HZ_MATCH_RULE_37.get_matching_contact_points(
5466         p_rule_id, p_party_id, p_contact_point_list,
5467         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5468     -- Code for Match rule DL RELATIONSHIP DEFAULT
5469     ELSIF p_rule_id=38 THEN 
5470       IF NOT HZ_MATCH_RULE_38.check_staged THEN
5471         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5472         FND_MSG_PUB.ADD;
5473         RAISE FND_API.G_EXC_ERROR;
5474       END IF;
5475       HZ_MATCH_RULE_38.get_matching_contact_points(
5476         p_rule_id, p_party_id, p_contact_point_list,
5477         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5478     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
5479     ELSIF p_rule_id=39 THEN 
5480       IF NOT HZ_MATCH_RULE_39.check_staged THEN
5481         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5482         FND_MSG_PUB.ADD;
5483         RAISE FND_API.G_EXC_ERROR;
5484       END IF;
5485       HZ_MATCH_RULE_39.get_matching_contact_points(
5486         p_rule_id, p_party_id, p_contact_point_list,
5487         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5488     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
5489     ELSIF p_rule_id=40 THEN 
5490       IF NOT HZ_MATCH_RULE_40.check_staged THEN
5491         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5492         FND_MSG_PUB.ADD;
5493         RAISE FND_API.G_EXC_ERROR;
5494       END IF;
5495       HZ_MATCH_RULE_40.get_matching_contact_points(
5496         p_rule_id, p_party_id, p_contact_point_list,
5497         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5498     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
5499     ELSIF p_rule_id=41 THEN 
5500       IF NOT HZ_MATCH_RULE_41.check_staged THEN
5501         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5502         FND_MSG_PUB.ADD;
5503         RAISE FND_API.G_EXC_ERROR;
5504       END IF;
5505       HZ_MATCH_RULE_41.get_matching_contact_points(
5506         p_rule_id, p_party_id, p_contact_point_list,
5507         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5508     -- Code for Match rule SAMPLE: SEARCH EXACT
5509     ELSIF p_rule_id=42 THEN 
5510       IF NOT HZ_MATCH_RULE_42.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_42.get_matching_contact_points(
5516         p_rule_id, p_party_id, p_contact_point_list,
5517         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5518     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
5519     ELSIF p_rule_id=48 THEN 
5520       IF NOT HZ_MATCH_RULE_48.check_staged THEN
5521         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5522         FND_MSG_PUB.ADD;
5523         RAISE FND_API.G_EXC_ERROR;
5524       END IF;
5525       HZ_MATCH_RULE_48.get_matching_contact_points(
5526         p_rule_id, p_party_id, p_contact_point_list,
5527         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5528     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
5529     ELSIF p_rule_id=50 THEN 
5530       IF NOT HZ_MATCH_RULE_50.check_staged THEN
5531         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5532         FND_MSG_PUB.ADD;
5533         RAISE FND_API.G_EXC_ERROR;
5534       END IF;
5535       HZ_MATCH_RULE_50.get_matching_contact_points(
5536         p_rule_id, p_party_id, p_contact_point_list,
5537         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5538     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
5539     ELSIF p_rule_id=51 THEN 
5540       IF NOT HZ_MATCH_RULE_51.check_staged THEN
5541         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5542         FND_MSG_PUB.ADD;
5543         RAISE FND_API.G_EXC_ERROR;
5544       END IF;
5545       HZ_MATCH_RULE_51.get_matching_contact_points(
5546         p_rule_id, p_party_id, p_contact_point_list,
5547         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5548     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
5549     ELSIF p_rule_id=52 THEN 
5550       IF NOT HZ_MATCH_RULE_52.check_staged THEN
5551         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5552         FND_MSG_PUB.ADD;
5553         RAISE FND_API.G_EXC_ERROR;
5554       END IF;
5555       HZ_MATCH_RULE_52.get_matching_contact_points(
5556         p_rule_id, p_party_id, p_contact_point_list,
5557         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5558     -- Code for Match rule CREDIT MANAGEMENT SEARCH
5559     ELSIF p_rule_id=53 THEN 
5560       IF NOT HZ_MATCH_RULE_53.check_staged THEN
5561         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5562         FND_MSG_PUB.ADD;
5563         RAISE FND_API.G_EXC_ERROR;
5564       END IF;
5565       HZ_MATCH_RULE_53.get_matching_contact_points(
5566         p_rule_id, p_party_id, p_contact_point_list,
5567         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5568     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
5569     ELSIF p_rule_id=58 THEN 
5570       IF NOT HZ_MATCH_RULE_58.check_staged THEN
5571         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5572         FND_MSG_PUB.ADD;
5573         RAISE FND_API.G_EXC_ERROR;
5574       END IF;
5575       HZ_MATCH_RULE_58.get_matching_contact_points(
5576         p_rule_id, p_party_id, p_contact_point_list,
5577         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5578     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
5579     ELSIF p_rule_id=60 THEN 
5580       IF NOT HZ_MATCH_RULE_60.check_staged THEN
5581         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5582         FND_MSG_PUB.ADD;
5583         RAISE FND_API.G_EXC_ERROR;
5584       END IF;
5585       HZ_MATCH_RULE_60.get_matching_contact_points(
5586         p_rule_id, p_party_id, p_contact_point_list,
5587         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5588     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
5589     ELSIF p_rule_id=61 THEN 
5590       IF NOT HZ_MATCH_RULE_61.check_staged THEN
5591         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5592         FND_MSG_PUB.ADD;
5593         RAISE FND_API.G_EXC_ERROR;
5594       END IF;
5595       HZ_MATCH_RULE_61.get_matching_contact_points(
5596         p_rule_id, p_party_id, p_contact_point_list,
5597         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5598     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
5599     ELSIF p_rule_id=62 THEN 
5600       IF NOT HZ_MATCH_RULE_62.check_staged THEN
5601         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5602         FND_MSG_PUB.ADD;
5603         RAISE FND_API.G_EXC_ERROR;
5604       END IF;
5605       HZ_MATCH_RULE_62.get_matching_contact_points(
5606         p_rule_id, p_party_id, p_contact_point_list,
5607         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5608     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
5609     ELSIF p_rule_id=98 THEN 
5610       IF NOT HZ_MATCH_RULE_98.check_staged THEN
5611         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5612         FND_MSG_PUB.ADD;
5613         RAISE FND_API.G_EXC_ERROR;
5614       END IF;
5615       HZ_MATCH_RULE_98.get_matching_contact_points(
5616         p_rule_id, p_party_id, p_contact_point_list,
5617         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5618     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
5619     ELSIF p_rule_id=99 THEN 
5620       IF NOT HZ_MATCH_RULE_99.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_99.get_matching_contact_points(
5626         p_rule_id, p_party_id, p_contact_point_list,
5627         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5628     -- Code for Match rule Web Services: Identical Organizations
5629     ELSIF p_rule_id=238 THEN 
5630       IF NOT HZ_MATCH_RULE_238.check_staged THEN
5631         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5632         FND_MSG_PUB.ADD;
5633         RAISE FND_API.G_EXC_ERROR;
5634       END IF;
5635       HZ_MATCH_RULE_238.get_matching_contact_points(
5636         p_rule_id, p_party_id, p_contact_point_list,
5637         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5638     -- Code for Match rule Web Services: Identical Persons
5639     ELSIF p_rule_id=240 THEN 
5640       IF NOT HZ_MATCH_RULE_240.check_staged THEN
5641         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5642         FND_MSG_PUB.ADD;
5643         RAISE FND_API.G_EXC_ERROR;
5644       END IF;
5645       HZ_MATCH_RULE_240.get_matching_contact_points(
5646         p_rule_id, p_party_id, p_contact_point_list,
5647         p_restrict_sql, p_match_type,null,x_search_ctx_id,x_num_matches);
5648     END IF;
5649     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5650       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);
5651     END IF;
5652   --Standard call to get message count and if count is 1, get message info
5653   FND_MSG_PUB.Count_And_Get(
5654     p_encoded => FND_API.G_FALSE,
5655     p_count => x_msg_count,
5656     p_data  => x_msg_data);
5657   EXCEPTION
5658        WHEN FND_API.G_EXC_ERROR THEN
5659                x_return_status := FND_API.G_RET_STS_ERROR;
5660                FND_MSG_PUB.Count_And_Get(
5661                                p_encoded => FND_API.G_FALSE,
5662                                p_count => x_msg_count,
5663                                p_data  => x_msg_data);
5664        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5665                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5666                FND_MSG_PUB.Count_And_Get(
5667                                p_encoded => FND_API.G_FALSE,
5668                                p_count => x_msg_count,
5669                                p_data  => x_msg_data);
5670 
5671        WHEN OTHERS THEN
5672                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5673                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
5674                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
5675                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
5676                FND_MSG_PUB.ADD;
5677 
5678                FND_MSG_PUB.Count_And_Get(
5679                                p_encoded => FND_API.G_FALSE,
5680                                p_count => x_msg_count,
5681                                p_data  => x_msg_data);
5682   END;
5683 
5684 PROCEDURE get_party_score_details (
5685         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5686         p_rule_id               IN      NUMBER,
5687         p_party_id              IN      NUMBER,
5688         p_search_ctx_id         IN      NUMBER,
5689       p_party_search_rec      IN      party_search_rec_type,
5690       p_party_site_list       IN      party_site_list,
5691       p_contact_list          IN      contact_list,
5692       p_contact_point_list    IN      contact_point_list,
5693         x_return_status         OUT     VARCHAR2,
5694         x_msg_count             OUT     NUMBER,
5695         x_msg_data              OUT     VARCHAR2
5696 ) IS
5697   l_search_ctx_id NUMBER;
5698   BEGIN
5699     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5700       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);
5701     END IF;
5702     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5703       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);
5704     END IF;
5705      l_search_ctx_id:=p_search_ctx_id;
5706      get_score_details(p_init_msg_list,p_rule_id,p_party_id,
5707             p_party_search_rec,p_party_site_list,p_contact_list,p_contact_point_list,
5708             l_search_ctx_id,x_return_status,x_msg_count,x_msg_data);
5709     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5710       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);
5711     END IF;
5712   END;
5713 PROCEDURE get_score_details (
5714         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
5715         p_rule_id               IN      NUMBER,
5716         p_party_id              IN      NUMBER,
5717         p_party_search_rec      IN      party_search_rec_type,
5718         p_party_site_list       IN      party_site_list,
5719         p_contact_list          IN      contact_list,
5720         p_contact_point_list    IN      contact_point_list,
5721         x_search_ctx_id         IN OUT  NUMBER,
5722         x_return_status         OUT     VARCHAR2,
5723         x_msg_count             OUT     NUMBER,
5724         x_msg_data              OUT     VARCHAR2
5725 ) IS
5726   CURSOR c_match_rule IS 
5727     SELECT COMPILATION_FLAG 
5728     FROM HZ_MATCH_RULES_VL 
5729     WHERE MATCH_RULE_ID = p_rule_id;
5730   l_cmp_flag VARCHAR2(1);
5731   BEGIN
5732     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
5733       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);
5734     END IF;
5735     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
5736       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);
5737     END IF;
5738 
5739     -- Initialize return status and message stack
5740     x_return_status := FND_API.G_RET_STS_SUCCESS;
5741     IF FND_API.to_Boolean(p_init_msg_list) THEN
5742       FND_MSG_PUB.initialize;
5743     END IF;
5744 
5745     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
5746       -- No MATCH RULE FOUND
5747       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
5748       FND_MSG_PUB.ADD;
5749       RAISE FND_API.G_EXC_ERROR;
5750     END IF;
5751     OPEN c_match_rule;
5752     FETCH c_match_rule INTO l_cmp_flag;
5753     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
5754       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
5755       FND_MSG_PUB.ADD;
5756       RAISE FND_API.G_EXC_ERROR;
5757     END IF;
5758     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
5759     IF p_rule_id=2 THEN 
5760       IF NOT HZ_MATCH_RULE_2.check_staged THEN
5761         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5762         FND_MSG_PUB.ADD;
5763         RAISE FND_API.G_EXC_ERROR;
5764       END IF;
5765       HZ_MATCH_RULE_2.get_score_details(
5766         p_rule_id,
5767         p_party_id, p_party_search_rec,p_party_site_list,
5768         p_contact_list, p_contact_point_list,x_search_ctx_id);
5769     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
5770     ELSIF p_rule_id=3 THEN 
5771       IF NOT HZ_MATCH_RULE_3.check_staged THEN
5772         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5773         FND_MSG_PUB.ADD;
5774         RAISE FND_API.G_EXC_ERROR;
5775       END IF;
5776       HZ_MATCH_RULE_3.get_score_details(
5777         p_rule_id,
5778         p_party_id, p_party_search_rec,p_party_site_list,
5779         p_contact_list, p_contact_point_list,x_search_ctx_id);
5780     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
5781     ELSIF p_rule_id=4 THEN 
5782       IF NOT HZ_MATCH_RULE_4.check_staged THEN
5783         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5784         FND_MSG_PUB.ADD;
5785         RAISE FND_API.G_EXC_ERROR;
5786       END IF;
5787       HZ_MATCH_RULE_4.get_score_details(
5788         p_rule_id,
5789         p_party_id, p_party_search_rec,p_party_site_list,
5790         p_contact_list, p_contact_point_list,x_search_ctx_id);
5791     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
5792     ELSIF p_rule_id=5 THEN 
5793       IF NOT HZ_MATCH_RULE_5.check_staged THEN
5794         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5795         FND_MSG_PUB.ADD;
5796         RAISE FND_API.G_EXC_ERROR;
5797       END IF;
5798       HZ_MATCH_RULE_5.get_score_details(
5799         p_rule_id,
5800         p_party_id, p_party_search_rec,p_party_site_list,
5801         p_contact_list, p_contact_point_list,x_search_ctx_id);
5802     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
5803     ELSIF p_rule_id=6 THEN 
5804       IF NOT HZ_MATCH_RULE_6.check_staged THEN
5805         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5806         FND_MSG_PUB.ADD;
5807         RAISE FND_API.G_EXC_ERROR;
5808       END IF;
5809       HZ_MATCH_RULE_6.get_score_details(
5810         p_rule_id,
5811         p_party_id, p_party_search_rec,p_party_site_list,
5812         p_contact_list, p_contact_point_list,x_search_ctx_id);
5813     -- Code for Match rule SAMPLE: SIMILAR_PERSON
5814     ELSIF p_rule_id=7 THEN 
5815       IF NOT HZ_MATCH_RULE_7.check_staged THEN
5816         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5817         FND_MSG_PUB.ADD;
5818         RAISE FND_API.G_EXC_ERROR;
5819       END IF;
5820       HZ_MATCH_RULE_7.get_score_details(
5821         p_rule_id,
5822         p_party_id, p_party_search_rec,p_party_site_list,
5823         p_contact_list, p_contact_point_list,x_search_ctx_id);
5824     -- Code for Match rule SAMPLE: SEARCH
5825     ELSIF p_rule_id=8 THEN 
5826       IF NOT HZ_MATCH_RULE_8.check_staged THEN
5827         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5828         FND_MSG_PUB.ADD;
5829         RAISE FND_API.G_EXC_ERROR;
5830       END IF;
5831       HZ_MATCH_RULE_8.get_score_details(
5832         p_rule_id,
5833         p_party_id, p_party_search_rec,p_party_site_list,
5834         p_contact_list, p_contact_point_list,x_search_ctx_id);
5835     -- Code for Match rule RM SEARCH RULE
5836     ELSIF p_rule_id=32 THEN 
5837       IF NOT HZ_MATCH_RULE_32.check_staged THEN
5838         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5839         FND_MSG_PUB.ADD;
5840         RAISE FND_API.G_EXC_ERROR;
5841       END IF;
5842       HZ_MATCH_RULE_32.get_score_details(
5843         p_rule_id,
5844         p_party_id, p_party_search_rec,p_party_site_list,
5845         p_contact_list, p_contact_point_list,x_search_ctx_id);
5846     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
5847     ELSIF p_rule_id=33 THEN 
5848       IF NOT HZ_MATCH_RULE_33.check_staged THEN
5849         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5850         FND_MSG_PUB.ADD;
5851         RAISE FND_API.G_EXC_ERROR;
5852       END IF;
5853       HZ_MATCH_RULE_33.get_score_details(
5854         p_rule_id,
5855         p_party_id, p_party_search_rec,p_party_site_list,
5856         p_contact_list, p_contact_point_list,x_search_ctx_id);
5857     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
5858     ELSIF p_rule_id=34 THEN 
5859       IF NOT HZ_MATCH_RULE_34.check_staged THEN
5860         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5861         FND_MSG_PUB.ADD;
5862         RAISE FND_API.G_EXC_ERROR;
5863       END IF;
5864       HZ_MATCH_RULE_34.get_score_details(
5865         p_rule_id,
5866         p_party_id, p_party_search_rec,p_party_site_list,
5867         p_contact_list, p_contact_point_list,x_search_ctx_id);
5868     -- Code for Match rule DL SMART SEARCH
5869     ELSIF p_rule_id=35 THEN 
5870       IF NOT HZ_MATCH_RULE_35.check_staged THEN
5871         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5872         FND_MSG_PUB.ADD;
5873         RAISE FND_API.G_EXC_ERROR;
5874       END IF;
5875       HZ_MATCH_RULE_35.get_score_details(
5876         p_rule_id,
5877         p_party_id, p_party_search_rec,p_party_site_list,
5878         p_contact_list, p_contact_point_list,x_search_ctx_id);
5879     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
5880     ELSIF p_rule_id=36 THEN 
5881       IF NOT HZ_MATCH_RULE_36.check_staged THEN
5882         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5883         FND_MSG_PUB.ADD;
5884         RAISE FND_API.G_EXC_ERROR;
5885       END IF;
5886       HZ_MATCH_RULE_36.get_score_details(
5887         p_rule_id,
5888         p_party_id, p_party_search_rec,p_party_site_list,
5889         p_contact_list, p_contact_point_list,x_search_ctx_id);
5890     -- Code for Match rule DL ADDRESS DEFAULT
5891     ELSIF p_rule_id=37 THEN 
5892       IF NOT HZ_MATCH_RULE_37.check_staged THEN
5893         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5894         FND_MSG_PUB.ADD;
5895         RAISE FND_API.G_EXC_ERROR;
5896       END IF;
5897       HZ_MATCH_RULE_37.get_score_details(
5898         p_rule_id,
5899         p_party_id, p_party_search_rec,p_party_site_list,
5900         p_contact_list, p_contact_point_list,x_search_ctx_id);
5901     -- Code for Match rule DL RELATIONSHIP DEFAULT
5902     ELSIF p_rule_id=38 THEN 
5903       IF NOT HZ_MATCH_RULE_38.check_staged THEN
5904         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5905         FND_MSG_PUB.ADD;
5906         RAISE FND_API.G_EXC_ERROR;
5907       END IF;
5908       HZ_MATCH_RULE_38.get_score_details(
5909         p_rule_id,
5910         p_party_id, p_party_search_rec,p_party_site_list,
5911         p_contact_list, p_contact_point_list,x_search_ctx_id);
5912     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
5913     ELSIF p_rule_id=39 THEN 
5914       IF NOT HZ_MATCH_RULE_39.check_staged THEN
5915         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5916         FND_MSG_PUB.ADD;
5917         RAISE FND_API.G_EXC_ERROR;
5918       END IF;
5919       HZ_MATCH_RULE_39.get_score_details(
5920         p_rule_id,
5921         p_party_id, p_party_search_rec,p_party_site_list,
5922         p_contact_list, p_contact_point_list,x_search_ctx_id);
5923     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
5924     ELSIF p_rule_id=40 THEN 
5925       IF NOT HZ_MATCH_RULE_40.check_staged THEN
5926         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5927         FND_MSG_PUB.ADD;
5928         RAISE FND_API.G_EXC_ERROR;
5929       END IF;
5930       HZ_MATCH_RULE_40.get_score_details(
5931         p_rule_id,
5932         p_party_id, p_party_search_rec,p_party_site_list,
5933         p_contact_list, p_contact_point_list,x_search_ctx_id);
5934     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
5935     ELSIF p_rule_id=41 THEN 
5936       IF NOT HZ_MATCH_RULE_41.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_41.get_score_details(
5942         p_rule_id,
5943         p_party_id, p_party_search_rec,p_party_site_list,
5944         p_contact_list, p_contact_point_list,x_search_ctx_id);
5945     -- Code for Match rule SAMPLE: SEARCH EXACT
5946     ELSIF p_rule_id=42 THEN 
5947       IF NOT HZ_MATCH_RULE_42.check_staged THEN
5948         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5949         FND_MSG_PUB.ADD;
5950         RAISE FND_API.G_EXC_ERROR;
5951       END IF;
5952       HZ_MATCH_RULE_42.get_score_details(
5953         p_rule_id,
5954         p_party_id, p_party_search_rec,p_party_site_list,
5955         p_contact_list, p_contact_point_list,x_search_ctx_id);
5956     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
5957     ELSIF p_rule_id=48 THEN 
5958       IF NOT HZ_MATCH_RULE_48.check_staged THEN
5959         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5960         FND_MSG_PUB.ADD;
5961         RAISE FND_API.G_EXC_ERROR;
5962       END IF;
5963       HZ_MATCH_RULE_48.get_score_details(
5964         p_rule_id,
5965         p_party_id, p_party_search_rec,p_party_site_list,
5966         p_contact_list, p_contact_point_list,x_search_ctx_id);
5967     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
5968     ELSIF p_rule_id=50 THEN 
5969       IF NOT HZ_MATCH_RULE_50.check_staged THEN
5970         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5971         FND_MSG_PUB.ADD;
5972         RAISE FND_API.G_EXC_ERROR;
5973       END IF;
5974       HZ_MATCH_RULE_50.get_score_details(
5975         p_rule_id,
5976         p_party_id, p_party_search_rec,p_party_site_list,
5977         p_contact_list, p_contact_point_list,x_search_ctx_id);
5978     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
5979     ELSIF p_rule_id=51 THEN 
5980       IF NOT HZ_MATCH_RULE_51.check_staged THEN
5981         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5982         FND_MSG_PUB.ADD;
5983         RAISE FND_API.G_EXC_ERROR;
5984       END IF;
5985       HZ_MATCH_RULE_51.get_score_details(
5986         p_rule_id,
5987         p_party_id, p_party_search_rec,p_party_site_list,
5988         p_contact_list, p_contact_point_list,x_search_ctx_id);
5989     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
5990     ELSIF p_rule_id=52 THEN 
5991       IF NOT HZ_MATCH_RULE_52.check_staged THEN
5992         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
5993         FND_MSG_PUB.ADD;
5994         RAISE FND_API.G_EXC_ERROR;
5995       END IF;
5996       HZ_MATCH_RULE_52.get_score_details(
5997         p_rule_id,
5998         p_party_id, p_party_search_rec,p_party_site_list,
5999         p_contact_list, p_contact_point_list,x_search_ctx_id);
6000     -- Code for Match rule CREDIT MANAGEMENT SEARCH
6001     ELSIF p_rule_id=53 THEN 
6002       IF NOT HZ_MATCH_RULE_53.check_staged THEN
6003         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6004         FND_MSG_PUB.ADD;
6005         RAISE FND_API.G_EXC_ERROR;
6006       END IF;
6007       HZ_MATCH_RULE_53.get_score_details(
6008         p_rule_id,
6009         p_party_id, p_party_search_rec,p_party_site_list,
6010         p_contact_list, p_contact_point_list,x_search_ctx_id);
6011     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
6012     ELSIF p_rule_id=58 THEN 
6013       IF NOT HZ_MATCH_RULE_58.check_staged THEN
6014         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6015         FND_MSG_PUB.ADD;
6016         RAISE FND_API.G_EXC_ERROR;
6017       END IF;
6018       HZ_MATCH_RULE_58.get_score_details(
6019         p_rule_id,
6020         p_party_id, p_party_search_rec,p_party_site_list,
6021         p_contact_list, p_contact_point_list,x_search_ctx_id);
6022     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
6023     ELSIF p_rule_id=60 THEN 
6024       IF NOT HZ_MATCH_RULE_60.check_staged THEN
6025         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6026         FND_MSG_PUB.ADD;
6027         RAISE FND_API.G_EXC_ERROR;
6028       END IF;
6029       HZ_MATCH_RULE_60.get_score_details(
6030         p_rule_id,
6031         p_party_id, p_party_search_rec,p_party_site_list,
6032         p_contact_list, p_contact_point_list,x_search_ctx_id);
6033     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
6034     ELSIF p_rule_id=61 THEN 
6035       IF NOT HZ_MATCH_RULE_61.check_staged THEN
6036         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6037         FND_MSG_PUB.ADD;
6038         RAISE FND_API.G_EXC_ERROR;
6039       END IF;
6040       HZ_MATCH_RULE_61.get_score_details(
6041         p_rule_id,
6042         p_party_id, p_party_search_rec,p_party_site_list,
6043         p_contact_list, p_contact_point_list,x_search_ctx_id);
6044     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
6045     ELSIF p_rule_id=62 THEN 
6046       IF NOT HZ_MATCH_RULE_62.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_62.get_score_details(
6052         p_rule_id,
6053         p_party_id, p_party_search_rec,p_party_site_list,
6054         p_contact_list, p_contact_point_list,x_search_ctx_id);
6055     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
6056     ELSIF p_rule_id=98 THEN 
6057       IF NOT HZ_MATCH_RULE_98.check_staged THEN
6058         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6059         FND_MSG_PUB.ADD;
6060         RAISE FND_API.G_EXC_ERROR;
6061       END IF;
6062       HZ_MATCH_RULE_98.get_score_details(
6063         p_rule_id,
6064         p_party_id, p_party_search_rec,p_party_site_list,
6065         p_contact_list, p_contact_point_list,x_search_ctx_id);
6066     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
6067     ELSIF p_rule_id=99 THEN 
6068       IF NOT HZ_MATCH_RULE_99.check_staged THEN
6069         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6070         FND_MSG_PUB.ADD;
6071         RAISE FND_API.G_EXC_ERROR;
6072       END IF;
6073       HZ_MATCH_RULE_99.get_score_details(
6074         p_rule_id,
6075         p_party_id, p_party_search_rec,p_party_site_list,
6076         p_contact_list, p_contact_point_list,x_search_ctx_id);
6077     -- Code for Match rule Web Services: Identical Organizations
6078     ELSIF p_rule_id=238 THEN 
6079       IF NOT HZ_MATCH_RULE_238.check_staged THEN
6080         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6081         FND_MSG_PUB.ADD;
6082         RAISE FND_API.G_EXC_ERROR;
6083       END IF;
6084       HZ_MATCH_RULE_238.get_score_details(
6085         p_rule_id,
6086         p_party_id, p_party_search_rec,p_party_site_list,
6087         p_contact_list, p_contact_point_list,x_search_ctx_id);
6088     -- Code for Match rule Web Services: Identical Persons
6089     ELSIF p_rule_id=240 THEN 
6090       IF NOT HZ_MATCH_RULE_240.check_staged THEN
6091         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6092         FND_MSG_PUB.ADD;
6093         RAISE FND_API.G_EXC_ERROR;
6094       END IF;
6095       HZ_MATCH_RULE_240.get_score_details(
6096         p_rule_id,
6097         p_party_id, p_party_search_rec,p_party_site_list,
6098         p_contact_list, p_contact_point_list,x_search_ctx_id);
6099     END IF;
6100     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6101       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);
6102     END IF;
6103   --Standard call to get message count and if count is 1, get message info
6104   FND_MSG_PUB.Count_And_Get(
6105     p_encoded => FND_API.G_FALSE,
6106     p_count => x_msg_count,
6107     p_data  => x_msg_data);
6108   EXCEPTION
6109        WHEN FND_API.G_EXC_ERROR THEN
6110                x_return_status := FND_API.G_RET_STS_ERROR;
6111                FND_MSG_PUB.Count_And_Get(
6112                                p_encoded => FND_API.G_FALSE,
6113                                p_count => x_msg_count,
6114                                p_data  => x_msg_data);
6115        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6116                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6117                FND_MSG_PUB.Count_And_Get(
6118                                p_encoded => FND_API.G_FALSE,
6119                                p_count => x_msg_count,
6120                                p_data  => x_msg_data);
6121 
6122        WHEN OTHERS THEN
6123                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6124                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6125                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
6126                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6127                FND_MSG_PUB.ADD;
6128 
6129                FND_MSG_PUB.Count_And_Get(
6130                                p_encoded => FND_API.G_FALSE,
6131                                p_count => x_msg_count,
6132                                p_data  => x_msg_data);
6133   END;
6134 PROCEDURE get_party_for_search (
6135         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
6136         p_rule_id               IN      NUMBER,
6137         p_party_id              IN      NUMBER,
6138         x_party_search_rec      OUT NOCOPY party_search_rec_type,
6139         x_party_site_list       OUT NOCOPY party_site_list,
6140         x_contact_list          OUT NOCOPY contact_list,
6141         x_contact_point_list    OUT NOCOPY contact_point_list,
6142         x_return_status         OUT     VARCHAR2,
6143         x_msg_count             OUT     NUMBER,
6144         x_msg_data              OUT     VARCHAR2
6145 ) IS
6146   CURSOR c_match_rule IS 
6147     SELECT COMPILATION_FLAG 
6148     FROM HZ_MATCH_RULES_VL 
6149     WHERE MATCH_RULE_ID = p_rule_id;
6150   l_cmp_flag VARCHAR2(1);
6151   BEGIN
6152     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6153       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);
6154     END IF;
6155     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6156       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);
6157     END IF;
6158 
6159     -- Initialize return status and message stack
6160     x_return_status := FND_API.G_RET_STS_SUCCESS;
6161     IF FND_API.to_Boolean(p_init_msg_list) THEN
6162       FND_MSG_PUB.initialize;
6163     END IF;
6164 
6165     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
6166       -- No MATCH RULE FOUND
6167       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
6168       FND_MSG_PUB.ADD;
6169       RAISE FND_API.G_EXC_ERROR;
6170     END IF;
6171     OPEN c_match_rule;
6172     FETCH c_match_rule INTO l_cmp_flag;
6173     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
6174       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
6175       FND_MSG_PUB.ADD;
6176       RAISE FND_API.G_EXC_ERROR;
6177     END IF;
6178     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
6179     IF p_rule_id=2 THEN 
6180       IF NOT HZ_MATCH_RULE_2.check_staged THEN
6181         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6182         FND_MSG_PUB.ADD;
6183         RAISE FND_API.G_EXC_ERROR;
6184       END IF;
6185       HZ_MATCH_RULE_2.get_party_for_search(
6186         p_party_id, x_party_search_rec,x_party_site_list,
6187         x_contact_list, x_contact_point_list);
6188     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
6189     ELSIF p_rule_id=3 THEN 
6190       IF NOT HZ_MATCH_RULE_3.check_staged THEN
6191         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6192         FND_MSG_PUB.ADD;
6193         RAISE FND_API.G_EXC_ERROR;
6194       END IF;
6195       HZ_MATCH_RULE_3.get_party_for_search(
6196         p_party_id, x_party_search_rec,x_party_site_list,
6197         x_contact_list, x_contact_point_list);
6198     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
6199     ELSIF p_rule_id=4 THEN 
6200       IF NOT HZ_MATCH_RULE_4.check_staged THEN
6201         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6202         FND_MSG_PUB.ADD;
6203         RAISE FND_API.G_EXC_ERROR;
6204       END IF;
6205       HZ_MATCH_RULE_4.get_party_for_search(
6206         p_party_id, x_party_search_rec,x_party_site_list,
6207         x_contact_list, x_contact_point_list);
6208     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
6209     ELSIF p_rule_id=5 THEN 
6210       IF NOT HZ_MATCH_RULE_5.check_staged THEN
6211         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6212         FND_MSG_PUB.ADD;
6213         RAISE FND_API.G_EXC_ERROR;
6214       END IF;
6215       HZ_MATCH_RULE_5.get_party_for_search(
6216         p_party_id, x_party_search_rec,x_party_site_list,
6217         x_contact_list, x_contact_point_list);
6218     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
6219     ELSIF p_rule_id=6 THEN 
6220       IF NOT HZ_MATCH_RULE_6.check_staged THEN
6221         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6222         FND_MSG_PUB.ADD;
6223         RAISE FND_API.G_EXC_ERROR;
6224       END IF;
6225       HZ_MATCH_RULE_6.get_party_for_search(
6226         p_party_id, x_party_search_rec,x_party_site_list,
6227         x_contact_list, x_contact_point_list);
6228     -- Code for Match rule SAMPLE: SIMILAR_PERSON
6229     ELSIF p_rule_id=7 THEN 
6230       IF NOT HZ_MATCH_RULE_7.check_staged THEN
6231         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6232         FND_MSG_PUB.ADD;
6233         RAISE FND_API.G_EXC_ERROR;
6234       END IF;
6235       HZ_MATCH_RULE_7.get_party_for_search(
6236         p_party_id, x_party_search_rec,x_party_site_list,
6237         x_contact_list, x_contact_point_list);
6238     -- Code for Match rule SAMPLE: SEARCH
6239     ELSIF p_rule_id=8 THEN 
6240       IF NOT HZ_MATCH_RULE_8.check_staged THEN
6241         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6242         FND_MSG_PUB.ADD;
6243         RAISE FND_API.G_EXC_ERROR;
6244       END IF;
6245       HZ_MATCH_RULE_8.get_party_for_search(
6246         p_party_id, x_party_search_rec,x_party_site_list,
6247         x_contact_list, x_contact_point_list);
6248     -- Code for Match rule RM SEARCH RULE
6249     ELSIF p_rule_id=32 THEN 
6250       IF NOT HZ_MATCH_RULE_32.check_staged THEN
6251         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6252         FND_MSG_PUB.ADD;
6253         RAISE FND_API.G_EXC_ERROR;
6254       END IF;
6255       HZ_MATCH_RULE_32.get_party_for_search(
6256         p_party_id, x_party_search_rec,x_party_site_list,
6257         x_contact_list, x_contact_point_list);
6258     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
6259     ELSIF p_rule_id=33 THEN 
6260       IF NOT HZ_MATCH_RULE_33.check_staged THEN
6261         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6262         FND_MSG_PUB.ADD;
6263         RAISE FND_API.G_EXC_ERROR;
6264       END IF;
6265       HZ_MATCH_RULE_33.get_party_for_search(
6266         p_party_id, x_party_search_rec,x_party_site_list,
6267         x_contact_list, x_contact_point_list);
6268     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
6269     ELSIF p_rule_id=34 THEN 
6270       IF NOT HZ_MATCH_RULE_34.check_staged THEN
6271         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6272         FND_MSG_PUB.ADD;
6273         RAISE FND_API.G_EXC_ERROR;
6274       END IF;
6275       HZ_MATCH_RULE_34.get_party_for_search(
6276         p_party_id, x_party_search_rec,x_party_site_list,
6277         x_contact_list, x_contact_point_list);
6278     -- Code for Match rule DL SMART SEARCH
6279     ELSIF p_rule_id=35 THEN 
6280       IF NOT HZ_MATCH_RULE_35.check_staged THEN
6281         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6282         FND_MSG_PUB.ADD;
6283         RAISE FND_API.G_EXC_ERROR;
6284       END IF;
6285       HZ_MATCH_RULE_35.get_party_for_search(
6286         p_party_id, x_party_search_rec,x_party_site_list,
6287         x_contact_list, x_contact_point_list);
6288     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
6289     ELSIF p_rule_id=36 THEN 
6290       IF NOT HZ_MATCH_RULE_36.check_staged THEN
6291         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6292         FND_MSG_PUB.ADD;
6293         RAISE FND_API.G_EXC_ERROR;
6294       END IF;
6295       HZ_MATCH_RULE_36.get_party_for_search(
6296         p_party_id, x_party_search_rec,x_party_site_list,
6297         x_contact_list, x_contact_point_list);
6298     -- Code for Match rule DL ADDRESS DEFAULT
6299     ELSIF p_rule_id=37 THEN 
6300       IF NOT HZ_MATCH_RULE_37.check_staged THEN
6301         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6302         FND_MSG_PUB.ADD;
6303         RAISE FND_API.G_EXC_ERROR;
6304       END IF;
6305       HZ_MATCH_RULE_37.get_party_for_search(
6306         p_party_id, x_party_search_rec,x_party_site_list,
6307         x_contact_list, x_contact_point_list);
6308     -- Code for Match rule DL RELATIONSHIP DEFAULT
6309     ELSIF p_rule_id=38 THEN 
6310       IF NOT HZ_MATCH_RULE_38.check_staged THEN
6311         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6312         FND_MSG_PUB.ADD;
6313         RAISE FND_API.G_EXC_ERROR;
6314       END IF;
6315       HZ_MATCH_RULE_38.get_party_for_search(
6316         p_party_id, x_party_search_rec,x_party_site_list,
6317         x_contact_list, x_contact_point_list);
6318     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
6319     ELSIF p_rule_id=39 THEN 
6320       IF NOT HZ_MATCH_RULE_39.check_staged THEN
6321         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6322         FND_MSG_PUB.ADD;
6323         RAISE FND_API.G_EXC_ERROR;
6324       END IF;
6325       HZ_MATCH_RULE_39.get_party_for_search(
6326         p_party_id, x_party_search_rec,x_party_site_list,
6327         x_contact_list, x_contact_point_list);
6328     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
6329     ELSIF p_rule_id=40 THEN 
6330       IF NOT HZ_MATCH_RULE_40.check_staged THEN
6331         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6332         FND_MSG_PUB.ADD;
6333         RAISE FND_API.G_EXC_ERROR;
6334       END IF;
6335       HZ_MATCH_RULE_40.get_party_for_search(
6336         p_party_id, x_party_search_rec,x_party_site_list,
6337         x_contact_list, x_contact_point_list);
6338     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
6339     ELSIF p_rule_id=41 THEN 
6340       IF NOT HZ_MATCH_RULE_41.check_staged THEN
6341         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6342         FND_MSG_PUB.ADD;
6343         RAISE FND_API.G_EXC_ERROR;
6344       END IF;
6345       HZ_MATCH_RULE_41.get_party_for_search(
6346         p_party_id, x_party_search_rec,x_party_site_list,
6347         x_contact_list, x_contact_point_list);
6348     -- Code for Match rule SAMPLE: SEARCH EXACT
6349     ELSIF p_rule_id=42 THEN 
6350       IF NOT HZ_MATCH_RULE_42.check_staged THEN
6351         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6352         FND_MSG_PUB.ADD;
6353         RAISE FND_API.G_EXC_ERROR;
6354       END IF;
6355       HZ_MATCH_RULE_42.get_party_for_search(
6356         p_party_id, x_party_search_rec,x_party_site_list,
6357         x_contact_list, x_contact_point_list);
6358     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
6359     ELSIF p_rule_id=48 THEN 
6360       IF NOT HZ_MATCH_RULE_48.check_staged THEN
6361         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6362         FND_MSG_PUB.ADD;
6363         RAISE FND_API.G_EXC_ERROR;
6364       END IF;
6365       HZ_MATCH_RULE_48.get_party_for_search(
6366         p_party_id, x_party_search_rec,x_party_site_list,
6367         x_contact_list, x_contact_point_list);
6368     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
6369     ELSIF p_rule_id=50 THEN 
6370       IF NOT HZ_MATCH_RULE_50.check_staged THEN
6371         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6372         FND_MSG_PUB.ADD;
6373         RAISE FND_API.G_EXC_ERROR;
6374       END IF;
6375       HZ_MATCH_RULE_50.get_party_for_search(
6376         p_party_id, x_party_search_rec,x_party_site_list,
6377         x_contact_list, x_contact_point_list);
6378     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
6379     ELSIF p_rule_id=51 THEN 
6380       IF NOT HZ_MATCH_RULE_51.check_staged THEN
6381         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6382         FND_MSG_PUB.ADD;
6383         RAISE FND_API.G_EXC_ERROR;
6384       END IF;
6385       HZ_MATCH_RULE_51.get_party_for_search(
6386         p_party_id, x_party_search_rec,x_party_site_list,
6387         x_contact_list, x_contact_point_list);
6388     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
6389     ELSIF p_rule_id=52 THEN 
6390       IF NOT HZ_MATCH_RULE_52.check_staged THEN
6391         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6392         FND_MSG_PUB.ADD;
6393         RAISE FND_API.G_EXC_ERROR;
6394       END IF;
6395       HZ_MATCH_RULE_52.get_party_for_search(
6396         p_party_id, x_party_search_rec,x_party_site_list,
6397         x_contact_list, x_contact_point_list);
6398     -- Code for Match rule CREDIT MANAGEMENT SEARCH
6399     ELSIF p_rule_id=53 THEN 
6400       IF NOT HZ_MATCH_RULE_53.check_staged THEN
6401         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6402         FND_MSG_PUB.ADD;
6403         RAISE FND_API.G_EXC_ERROR;
6404       END IF;
6405       HZ_MATCH_RULE_53.get_party_for_search(
6406         p_party_id, x_party_search_rec,x_party_site_list,
6407         x_contact_list, x_contact_point_list);
6408     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
6409     ELSIF p_rule_id=58 THEN 
6410       IF NOT HZ_MATCH_RULE_58.check_staged THEN
6411         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6412         FND_MSG_PUB.ADD;
6413         RAISE FND_API.G_EXC_ERROR;
6414       END IF;
6415       HZ_MATCH_RULE_58.get_party_for_search(
6416         p_party_id, x_party_search_rec,x_party_site_list,
6417         x_contact_list, x_contact_point_list);
6418     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
6419     ELSIF p_rule_id=60 THEN 
6420       IF NOT HZ_MATCH_RULE_60.check_staged THEN
6421         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6422         FND_MSG_PUB.ADD;
6423         RAISE FND_API.G_EXC_ERROR;
6424       END IF;
6425       HZ_MATCH_RULE_60.get_party_for_search(
6426         p_party_id, x_party_search_rec,x_party_site_list,
6427         x_contact_list, x_contact_point_list);
6428     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
6429     ELSIF p_rule_id=61 THEN 
6430       IF NOT HZ_MATCH_RULE_61.check_staged THEN
6431         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6432         FND_MSG_PUB.ADD;
6433         RAISE FND_API.G_EXC_ERROR;
6434       END IF;
6435       HZ_MATCH_RULE_61.get_party_for_search(
6436         p_party_id, x_party_search_rec,x_party_site_list,
6437         x_contact_list, x_contact_point_list);
6438     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
6439     ELSIF p_rule_id=62 THEN 
6440       IF NOT HZ_MATCH_RULE_62.check_staged THEN
6441         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6442         FND_MSG_PUB.ADD;
6443         RAISE FND_API.G_EXC_ERROR;
6444       END IF;
6445       HZ_MATCH_RULE_62.get_party_for_search(
6446         p_party_id, x_party_search_rec,x_party_site_list,
6447         x_contact_list, x_contact_point_list);
6448     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
6449     ELSIF p_rule_id=98 THEN 
6450       IF NOT HZ_MATCH_RULE_98.check_staged THEN
6451         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6452         FND_MSG_PUB.ADD;
6453         RAISE FND_API.G_EXC_ERROR;
6454       END IF;
6455       HZ_MATCH_RULE_98.get_party_for_search(
6456         p_party_id, x_party_search_rec,x_party_site_list,
6457         x_contact_list, x_contact_point_list);
6458     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
6459     ELSIF p_rule_id=99 THEN 
6460       IF NOT HZ_MATCH_RULE_99.check_staged THEN
6461         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6462         FND_MSG_PUB.ADD;
6463         RAISE FND_API.G_EXC_ERROR;
6464       END IF;
6465       HZ_MATCH_RULE_99.get_party_for_search(
6466         p_party_id, x_party_search_rec,x_party_site_list,
6467         x_contact_list, x_contact_point_list);
6468     -- Code for Match rule Web Services: Identical Organizations
6469     ELSIF p_rule_id=238 THEN 
6470       IF NOT HZ_MATCH_RULE_238.check_staged THEN
6471         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6472         FND_MSG_PUB.ADD;
6473         RAISE FND_API.G_EXC_ERROR;
6474       END IF;
6475       HZ_MATCH_RULE_238.get_party_for_search(
6476         p_party_id, x_party_search_rec,x_party_site_list,
6477         x_contact_list, x_contact_point_list);
6478     -- Code for Match rule Web Services: Identical Persons
6479     ELSIF p_rule_id=240 THEN 
6480       IF NOT HZ_MATCH_RULE_240.check_staged THEN
6481         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6482         FND_MSG_PUB.ADD;
6483         RAISE FND_API.G_EXC_ERROR;
6484       END IF;
6485       HZ_MATCH_RULE_240.get_party_for_search(
6486         p_party_id, x_party_search_rec,x_party_site_list,
6487         x_contact_list, x_contact_point_list);
6488     END IF;
6489     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6490       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);
6491     END IF;
6492   --Standard call to get message count and if count is 1, get message info
6493   FND_MSG_PUB.Count_And_Get(
6494     p_encoded => FND_API.G_FALSE,
6495     p_count => x_msg_count,
6496     p_data  => x_msg_data);
6497   EXCEPTION
6498        WHEN FND_API.G_EXC_ERROR THEN
6499                x_return_status := FND_API.G_RET_STS_ERROR;
6500                FND_MSG_PUB.Count_And_Get(
6501                                p_encoded => FND_API.G_FALSE,
6502                                p_count => x_msg_count,
6503                                p_data  => x_msg_data);
6504        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6505                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6506                FND_MSG_PUB.Count_And_Get(
6507                                p_encoded => FND_API.G_FALSE,
6508                                p_count => x_msg_count,
6509                                p_data  => x_msg_data);
6510 
6511        WHEN OTHERS THEN
6512                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6513                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6514                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
6515                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6516                FND_MSG_PUB.ADD;
6517 
6518                FND_MSG_PUB.Count_And_Get(
6519                                p_encoded => FND_API.G_FALSE,
6520                                p_count => x_msg_count,
6521                                p_data  => x_msg_data);
6522   END;
6523 PROCEDURE get_search_criteria (
6524         p_init_msg_list         IN      VARCHAR2:= FND_API.G_FALSE,
6525         p_rule_id               IN      NUMBER,
6526         p_party_id              IN      NUMBER,
6527         p_party_site_ids        IN      IDList,
6528         p_contact_ids           IN      IDList,
6529         p_contact_pt_ids        IN      IDList,
6530         x_party_search_rec      OUT NOCOPY party_search_rec_type,
6531         x_party_site_list       OUT NOCOPY party_site_list,
6532         x_contact_list          OUT NOCOPY contact_list,
6533         x_contact_point_list    OUT NOCOPY contact_point_list,
6534         x_return_status         OUT     VARCHAR2,
6535         x_msg_count             OUT     NUMBER,
6536         x_msg_data              OUT     VARCHAR2
6537 ) IS
6538   CURSOR c_match_rule IS 
6539     SELECT COMPILATION_FLAG 
6540     FROM HZ_MATCH_RULES_VL 
6541     WHERE MATCH_RULE_ID = p_rule_id;
6542   l_cmp_flag VARCHAR2(1);
6543   BEGIN
6544     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6545       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);
6546     END IF;
6547     IF fnd_log.level_statement>=fnd_log.g_current_runtime_level THEN
6548       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);
6549     END IF;
6550 
6551     -- Initialize return status and message stack
6552     x_return_status := FND_API.G_RET_STS_SUCCESS;
6553     IF FND_API.to_Boolean(p_init_msg_list) THEN
6554       FND_MSG_PUB.initialize;
6555     END IF;
6556 
6557     IF p_rule_id IS NULL OR p_rule_id = 0 THEN
6558       -- No MATCH RULE FOUND
6559       FND_MESSAGE.SET_NAME('AR', 'HZ_NO_MATCH_RULE');
6560       FND_MSG_PUB.ADD;
6561       RAISE FND_API.G_EXC_ERROR;
6562     END IF;
6563     OPEN c_match_rule;
6564     FETCH c_match_rule INTO l_cmp_flag;
6565     IF c_match_rule%NOTFOUND OR l_cmp_flag <> 'C' THEN
6566       FND_MESSAGE.SET_NAME('AR', 'HZ_INVALID_MATCH_RULE');
6567       FND_MSG_PUB.ADD;
6568       RAISE FND_API.G_EXC_ERROR;
6569     END IF;
6570     -- Code for Match rule SAMPLE: ORGANIZATIONS_OPTIMIZED
6571     IF p_rule_id=2 THEN 
6572       IF NOT HZ_MATCH_RULE_2.check_staged THEN
6573         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6574         FND_MSG_PUB.ADD;
6575         RAISE FND_API.G_EXC_ERROR;
6576       END IF;
6577       HZ_MATCH_RULE_2.get_search_criteria(
6578         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6579         x_contact_list, x_contact_point_list);
6580     -- Code for Match rule SAMPLE: PERSON_OPTIMIZED
6581     ELSIF p_rule_id=3 THEN 
6582       IF NOT HZ_MATCH_RULE_3.check_staged THEN
6583         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6584         FND_MSG_PUB.ADD;
6585         RAISE FND_API.G_EXC_ERROR;
6586       END IF;
6587       HZ_MATCH_RULE_3.get_search_criteria(
6588         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6589         x_contact_list, x_contact_point_list);
6590     -- Code for Match rule SAMPLE: ADDRESS_ORGANIZATIONS
6591     ELSIF p_rule_id=4 THEN 
6592       IF NOT HZ_MATCH_RULE_4.check_staged THEN
6593         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6594         FND_MSG_PUB.ADD;
6595         RAISE FND_API.G_EXC_ERROR;
6596       END IF;
6597       HZ_MATCH_RULE_4.get_search_criteria(
6598         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6599         x_contact_list, x_contact_point_list);
6600     -- Code for Match rule SAMPLE: ADDRESS_PERSONS
6601     ELSIF p_rule_id=5 THEN 
6602       IF NOT HZ_MATCH_RULE_5.check_staged THEN
6603         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6604         FND_MSG_PUB.ADD;
6605         RAISE FND_API.G_EXC_ERROR;
6606       END IF;
6607       HZ_MATCH_RULE_5.get_search_criteria(
6608         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6609         x_contact_list, x_contact_point_list);
6610     -- Code for Match rule SAMPLE: SIMILAR_ORGANIZATION
6611     ELSIF p_rule_id=6 THEN 
6612       IF NOT HZ_MATCH_RULE_6.check_staged THEN
6613         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6614         FND_MSG_PUB.ADD;
6615         RAISE FND_API.G_EXC_ERROR;
6616       END IF;
6617       HZ_MATCH_RULE_6.get_search_criteria(
6618         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6619         x_contact_list, x_contact_point_list);
6620     -- Code for Match rule SAMPLE: SIMILAR_PERSON
6621     ELSIF p_rule_id=7 THEN 
6622       IF NOT HZ_MATCH_RULE_7.check_staged THEN
6623         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6624         FND_MSG_PUB.ADD;
6625         RAISE FND_API.G_EXC_ERROR;
6626       END IF;
6627       HZ_MATCH_RULE_7.get_search_criteria(
6628         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6629         x_contact_list, x_contact_point_list);
6630     -- Code for Match rule SAMPLE: SEARCH
6631     ELSIF p_rule_id=8 THEN 
6632       IF NOT HZ_MATCH_RULE_8.check_staged THEN
6633         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6634         FND_MSG_PUB.ADD;
6635         RAISE FND_API.G_EXC_ERROR;
6636       END IF;
6637       HZ_MATCH_RULE_8.get_search_criteria(
6638         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6639         x_contact_list, x_contact_point_list);
6640     -- Code for Match rule RM SEARCH RULE
6641     ELSIF p_rule_id=32 THEN 
6642       IF NOT HZ_MATCH_RULE_32.check_staged THEN
6643         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6644         FND_MSG_PUB.ADD;
6645         RAISE FND_API.G_EXC_ERROR;
6646       END IF;
6647       HZ_MATCH_RULE_32.get_search_criteria(
6648         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6649         x_contact_list, x_contact_point_list);
6650     -- Code for Match rule SAMPLE:BASIC SEARCH RULE
6651     ELSIF p_rule_id=33 THEN 
6652       IF NOT HZ_MATCH_RULE_33.check_staged THEN
6653         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6654         FND_MSG_PUB.ADD;
6655         RAISE FND_API.G_EXC_ERROR;
6656       END IF;
6657       HZ_MATCH_RULE_33.get_search_criteria(
6658         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6659         x_contact_list, x_contact_point_list);
6660     -- Code for Match rule SAMPLE:ADVANCED SEARCH RULE
6661     ELSIF p_rule_id=34 THEN 
6662       IF NOT HZ_MATCH_RULE_34.check_staged THEN
6663         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6664         FND_MSG_PUB.ADD;
6665         RAISE FND_API.G_EXC_ERROR;
6666       END IF;
6667       HZ_MATCH_RULE_34.get_search_criteria(
6668         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6669         x_contact_list, x_contact_point_list);
6670     -- Code for Match rule DL SMART SEARCH
6671     ELSIF p_rule_id=35 THEN 
6672       IF NOT HZ_MATCH_RULE_35.check_staged THEN
6673         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6674         FND_MSG_PUB.ADD;
6675         RAISE FND_API.G_EXC_ERROR;
6676       END IF;
6677       HZ_MATCH_RULE_35.get_search_criteria(
6678         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6679         x_contact_list, x_contact_point_list);
6680     -- Code for Match rule DL ADDRESS AND RELATIONSHIP SEARCH
6681     ELSIF p_rule_id=36 THEN 
6682       IF NOT HZ_MATCH_RULE_36.check_staged THEN
6683         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6684         FND_MSG_PUB.ADD;
6685         RAISE FND_API.G_EXC_ERROR;
6686       END IF;
6687       HZ_MATCH_RULE_36.get_search_criteria(
6688         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6689         x_contact_list, x_contact_point_list);
6690     -- Code for Match rule DL ADDRESS DEFAULT
6691     ELSIF p_rule_id=37 THEN 
6692       IF NOT HZ_MATCH_RULE_37.check_staged THEN
6693         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6694         FND_MSG_PUB.ADD;
6695         RAISE FND_API.G_EXC_ERROR;
6696       END IF;
6697       HZ_MATCH_RULE_37.get_search_criteria(
6698         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6699         x_contact_list, x_contact_point_list);
6700     -- Code for Match rule DL RELATIONSHIP DEFAULT
6701     ELSIF p_rule_id=38 THEN 
6702       IF NOT HZ_MATCH_RULE_38.check_staged THEN
6703         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6704         FND_MSG_PUB.ADD;
6705         RAISE FND_API.G_EXC_ERROR;
6706       END IF;
6707       HZ_MATCH_RULE_38.get_search_criteria(
6708         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6709         x_contact_list, x_contact_point_list);
6710     -- Code for Match rule SAMPLE: SEARCH ADDRESS ORGANIZATIONS EXACT
6711     ELSIF p_rule_id=39 THEN 
6712       IF NOT HZ_MATCH_RULE_39.check_staged THEN
6713         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6714         FND_MSG_PUB.ADD;
6715         RAISE FND_API.G_EXC_ERROR;
6716       END IF;
6717       HZ_MATCH_RULE_39.get_search_criteria(
6718         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6719         x_contact_list, x_contact_point_list);
6720     -- Code for Match rule SAMPLE: SEARCH SIMILAR ORGANIZATION EXACT
6721     ELSIF p_rule_id=40 THEN 
6722       IF NOT HZ_MATCH_RULE_40.check_staged THEN
6723         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6724         FND_MSG_PUB.ADD;
6725         RAISE FND_API.G_EXC_ERROR;
6726       END IF;
6727       HZ_MATCH_RULE_40.get_search_criteria(
6728         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6729         x_contact_list, x_contact_point_list);
6730     -- Code for Match rule SAMPLE: SEARCH SIMILAR PERSON EXACT
6731     ELSIF p_rule_id=41 THEN 
6732       IF NOT HZ_MATCH_RULE_41.check_staged THEN
6733         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6734         FND_MSG_PUB.ADD;
6735         RAISE FND_API.G_EXC_ERROR;
6736       END IF;
6737       HZ_MATCH_RULE_41.get_search_criteria(
6738         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6739         x_contact_list, x_contact_point_list);
6740     -- Code for Match rule SAMPLE: SEARCH EXACT
6741     ELSIF p_rule_id=42 THEN 
6742       IF NOT HZ_MATCH_RULE_42.check_staged THEN
6743         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6744         FND_MSG_PUB.ADD;
6745         RAISE FND_API.G_EXC_ERROR;
6746       END IF;
6747       HZ_MATCH_RULE_42.get_search_criteria(
6748         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6749         x_contact_list, x_contact_point_list);
6750     -- Code for Match rule DL SYSTEM DUPLICATE IDENTIFICATION
6751     ELSIF p_rule_id=48 THEN 
6752       IF NOT HZ_MATCH_RULE_48.check_staged THEN
6753         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6754         FND_MSG_PUB.ADD;
6755         RAISE FND_API.G_EXC_ERROR;
6756       END IF;
6757       HZ_MATCH_RULE_48.get_search_criteria(
6758         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6759         x_contact_list, x_contact_point_list);
6760     -- Code for Match rule BULK MATCH: IDENTICAL ORGANIZATIONS
6761     ELSIF p_rule_id=50 THEN 
6762       IF NOT HZ_MATCH_RULE_50.check_staged THEN
6763         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6764         FND_MSG_PUB.ADD;
6765         RAISE FND_API.G_EXC_ERROR;
6766       END IF;
6767       HZ_MATCH_RULE_50.get_search_criteria(
6768         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6769         x_contact_list, x_contact_point_list);
6770     -- Code for Match rule BULK MATCH: IDENTICAL PERSONS
6771     ELSIF p_rule_id=51 THEN 
6772       IF NOT HZ_MATCH_RULE_51.check_staged THEN
6773         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6774         FND_MSG_PUB.ADD;
6775         RAISE FND_API.G_EXC_ERROR;
6776       END IF;
6777       HZ_MATCH_RULE_51.get_search_criteria(
6778         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6779         x_contact_list, x_contact_point_list);
6780     -- Code for Match rule BULK MATCH: IDENTICAL PARTIES
6781     ELSIF p_rule_id=52 THEN 
6782       IF NOT HZ_MATCH_RULE_52.check_staged THEN
6783         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6784         FND_MSG_PUB.ADD;
6785         RAISE FND_API.G_EXC_ERROR;
6786       END IF;
6787       HZ_MATCH_RULE_52.get_search_criteria(
6788         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6789         x_contact_list, x_contact_point_list);
6790     -- Code for Match rule CREDIT MANAGEMENT SEARCH
6791     ELSIF p_rule_id=53 THEN 
6792       IF NOT HZ_MATCH_RULE_53.check_staged THEN
6793         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6794         FND_MSG_PUB.ADD;
6795         RAISE FND_API.G_EXC_ERROR;
6796       END IF;
6797       HZ_MATCH_RULE_53.get_search_criteria(
6798         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6799         x_contact_list, x_contact_point_list);
6800     -- Code for Match rule HZ_PERSON_SIMPLE_SEARCH_RULE
6801     ELSIF p_rule_id=58 THEN 
6802       IF NOT HZ_MATCH_RULE_58.check_staged THEN
6803         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6804         FND_MSG_PUB.ADD;
6805         RAISE FND_API.G_EXC_ERROR;
6806       END IF;
6807       HZ_MATCH_RULE_58.get_search_criteria(
6808         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6809         x_contact_list, x_contact_point_list);
6810     -- Code for Match rule HZ_PERSON_ADVANCED_SEARCH_MATCH_RULE
6811     ELSIF p_rule_id=60 THEN 
6812       IF NOT HZ_MATCH_RULE_60.check_staged THEN
6813         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6814         FND_MSG_PUB.ADD;
6815         RAISE FND_API.G_EXC_ERROR;
6816       END IF;
6817       HZ_MATCH_RULE_60.get_search_criteria(
6818         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6819         x_contact_list, x_contact_point_list);
6820     -- Code for Match rule HZ_ORG_SIMPLE_SEARCH_RULE
6821     ELSIF p_rule_id=61 THEN 
6822       IF NOT HZ_MATCH_RULE_61.check_staged THEN
6823         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6824         FND_MSG_PUB.ADD;
6825         RAISE FND_API.G_EXC_ERROR;
6826       END IF;
6827       HZ_MATCH_RULE_61.get_search_criteria(
6828         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6829         x_contact_list, x_contact_point_list);
6830     -- Code for Match rule HZ_ORG_ADV_SEARCH_RULE
6831     ELSIF p_rule_id=62 THEN 
6832       IF NOT HZ_MATCH_RULE_62.check_staged THEN
6833         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6834         FND_MSG_PUB.ADD;
6835         RAISE FND_API.G_EXC_ERROR;
6836       END IF;
6837       HZ_MATCH_RULE_62.get_search_criteria(
6838         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6839         x_contact_list, x_contact_point_list);
6840     -- Code for Match rule HZ_CONTACT_SIMPLE_SEARCH_RULE
6841     ELSIF p_rule_id=98 THEN 
6842       IF NOT HZ_MATCH_RULE_98.check_staged THEN
6843         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6844         FND_MSG_PUB.ADD;
6845         RAISE FND_API.G_EXC_ERROR;
6846       END IF;
6847       HZ_MATCH_RULE_98.get_search_criteria(
6848         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6849         x_contact_list, x_contact_point_list);
6850     -- Code for Match rule HZ_CONTACT_ADV_SEARCH_MATCH_RULE
6851     ELSIF p_rule_id=99 THEN 
6852       IF NOT HZ_MATCH_RULE_99.check_staged THEN
6853         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6854         FND_MSG_PUB.ADD;
6855         RAISE FND_API.G_EXC_ERROR;
6856       END IF;
6857       HZ_MATCH_RULE_99.get_search_criteria(
6858         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6859         x_contact_list, x_contact_point_list);
6860     -- Code for Match rule Web Services: Identical Organizations
6861     ELSIF p_rule_id=238 THEN 
6862       IF NOT HZ_MATCH_RULE_238.check_staged THEN
6863         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6864         FND_MSG_PUB.ADD;
6865         RAISE FND_API.G_EXC_ERROR;
6866       END IF;
6867       HZ_MATCH_RULE_238.get_search_criteria(
6868         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6869         x_contact_list, x_contact_point_list);
6870     -- Code for Match rule Web Services: Identical Persons
6871     ELSIF p_rule_id=240 THEN 
6872       IF NOT HZ_MATCH_RULE_240.check_staged THEN
6873         FND_MESSAGE.SET_NAME('AR', 'HZ_MATCH_RULE_TX_NOT_STAGED');
6874         FND_MSG_PUB.ADD;
6875         RAISE FND_API.G_EXC_ERROR;
6876       END IF;
6877       HZ_MATCH_RULE_240.get_search_criteria(
6878         p_party_id, p_party_site_ids, p_contact_ids, p_contact_pt_ids, x_party_search_rec,x_party_site_list,
6879         x_contact_list, x_contact_point_list);
6880     END IF;
6881     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
6882       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);
6883     END IF;
6884   --Standard call to get message count and if count is 1, get message info
6885   FND_MSG_PUB.Count_And_Get(
6886     p_encoded => FND_API.G_FALSE,
6887     p_count => x_msg_count,
6888     p_data  => x_msg_data);
6889   EXCEPTION
6890        WHEN FND_API.G_EXC_ERROR THEN
6891                x_return_status := FND_API.G_RET_STS_ERROR;
6892                FND_MSG_PUB.Count_And_Get(
6893                                p_encoded => FND_API.G_FALSE,
6894                                p_count => x_msg_count,
6895                                p_data  => x_msg_data);
6896        WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6897                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6898                FND_MSG_PUB.Count_And_Get(
6899                                p_encoded => FND_API.G_FALSE,
6900                                p_count => x_msg_count,
6901                                p_data  => x_msg_data);
6902 
6903        WHEN OTHERS THEN
6904                x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6905                FND_MESSAGE.SET_NAME('AR', 'HZ_DQM_API_ERROR');
6906                FND_MESSAGE.SET_TOKEN('PROC' ,'HZ_PARTY_SEARCH');
6907                FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
6908                FND_MSG_PUB.ADD;
6909 
6910                FND_MSG_PUB.Count_And_Get(
6911                                p_encoded => FND_API.G_FALSE,
6912                                p_count => x_msg_count,
6913                                p_data  => x_msg_data);
6914   END;
6915 END;