DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_SR_EXTATTRIBUTES_PVT

Source


1 PACKAGE BODY CS_SR_EXTATTRIBUTES_PVT AS
2 /* $Header: csvextb.pls 120.39 2007/12/20 12:48:39 nveerara ship $ */
3 
4 -- =============================================================================
5 --                         Package variables and cursors
6 -- =============================================================================
7 
8    G_FILE_NAME                    CONSTANT  VARCHAR2(12)  := 'CSVEXTB.pls';
9    G_PKG_NAME                     CONSTANT  VARCHAR2(30)  := 'CS_SR_EXTATTRIBUTES_PVT';
10    G_APP_NAME                     CONSTANT  VARCHAR2(3)   := 'CS';
11    G_PKG_NAME_TOKEN               CONSTANT  VARCHAR2(8)   := 'PKG_NAME';
12    G_API_NAME_TOKEN               CONSTANT  VARCHAR2(8)   := 'API_NAME';
13    G_PROC_NAME_TOKEN              CONSTANT  VARCHAR2(9)   := 'PROC_NAME';
14    G_SQL_ERR_MSG_TOKEN            CONSTANT  VARCHAR2(11)  := 'SQL_ERR_MSG';
15 
16 
17    G_USER_ID                      NUMBER  :=  FND_GLOBAL.User_Id;
18    G_LOGIN_ID                     NUMBER  :=  FND_GLOBAL.Conc_Login_Id;
19 
20 
21    G_TRUE                         CONSTANT  VARCHAR2(1) := 'T'; -- FND_API.G_TRUE;
22    G_FALSE                        CONSTANT  VARCHAR2(1) := 'F'; -- FND_API.G_FALSE;
23 
24 --===========================================================
25 -- Declaration of Private Procedures and functions
26 --===========================================================
27 PROCEDURE delete_old_context
28 ( p_pk_column_1         IN         NUMBER
29 , p_context             IN         NUMBER
30 , x_failed_row_id_list  OUT NOCOPY VARCHAR2
31 , x_return_status       OUT NOCOPY VARCHAR2
32 , x_errorcode           OUT NOCOPY NUMBER
33 , x_msg_count           OUT NOCOPY NUMBER
34 , x_msg_data            OUT NOCOPY VARCHAR2
35 );
36 
37 PROCEDURE Get_Attr_Group_Metadata (
38         p_attr_group_id                 IN          NUMBER
39        ,x_application_id                OUT NOCOPY  NUMBER
40        ,x_attr_group_type               OUT NOCOPY  VARCHAR2
41        ,x_attr_group_name               OUT NOCOPY  VARCHAR2
42 );
43 
44 
45 PROCEDURE Get_Attr_Metadata (
46         p_row_identifier                IN          NUMBER
47        ,p_application_id                IN          NUMBER
48        ,p_attr_group_type               IN          VARCHAR2
49        ,p_attr_group_name               IN          VARCHAR2
50        ,p_ext_attr_tbl                  IN  OUT NOCOPY     CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
51 );
52 
53 FUNCTION IS_ROW_VALID(
54                  p_incident_id          IN           NUMBER
55                 ,p_context              IN           NUMBER
56                 ,p_attr_group_id        IN           NUMBER
57                 ,x_msg_data             OUT NOCOPY VARCHAR2
58                 ,x_msg_count            OUT NOCOPY NUMBER
59                 ,x_return_status        OUT NOCOPY VARCHAR2)
60 RETURN VARCHAR2;
61 
62 FUNCTION IS_ATTR_GROUP_MULTI_ROW(
63                                  p_attr_group_id IN NUMBER
64                                 ,x_msg_data             OUT NOCOPY VARCHAR2
65                                 ,x_msg_count            OUT NOCOPY NUMBER
66                                 ,x_return_status        OUT NOCOPY VARCHAR2)
67 RETURN VARCHAR2;
68 
69 PROCEDURE GET_MULTI_ROW_UNIQUE_KEY(p_attr_group_name IN VARCHAR2
70                                   ,p_attr_group_type IN VARCHAR2
71                                   ,p_application_id IN NUMBER
72                                   ,x_attr_name OUT NOCOPY VARCHAR2
73                                   ,x_database_column OUT NOCOPY VARCHAR2);
74 
75 
76 PROCEDURE populate_sr_ext_attr_audit_rec(
77           p_incident_id        IN NUMBER
78          ,p_context            IN NUMBER
79          ,p_attr_group_id      IN  NUMBER
80          ,p_row_id             IN NUMBER
81          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
82          ,p_sr_audit_rec_table IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type
83          ,x_rec_found          OUT NOCOPY VARCHAR2
84          );
85 
86 PROCEDURE populate_pr_ext_attr_audit_rec(
87           p_incident_id        IN NUMBER
88          ,p_party_id           IN NUMBER
89          ,p_contact_type       IN VARCHAR2
90          ,p_party_role_code    IN VARCHAR2
91          ,p_context            IN VARCHAR2
92          ,p_attr_group_id      IN NUMBER
93          ,p_row_id             IN NUMBER
94          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
95          ,p_sr_audit_rec_table IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type
96          ,x_rec_found      OUT NOCOPY VARCHAR2
97          );
98 
99 
100 PROCEDURE check_sr_context_change(
101           p_incident_id     IN NUMBER
102          ,p_context         IN NUMBER
103          ,x_context_changed OUT NOCOPY VARCHAR2
104          ,x_db_incident_id  OUT NOCOPY NUMBER
105          ,x_db_context      OUT NOCOPY NUMBER
106 
107 );
108 
109 PROCEDURE INIT_AUDIT_REC(p_count NUMBER,
110                          p_audit_rec IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type);
111 
112 PROCEDURE Log_EXT_PVT_Parameters (
113           p_ext_attr_grp_tbl   IN CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
114          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE );
115 
116 -- -----------------------------------------------------------------------------
117 -- Procedure Name : Log_EGO_EXT_Parameters
118 -- Parameters     :
119 -- IN             :
120 -- OUT            :
121 --
122 -- Description    : Procedure to LOG the in parameters of PVT SR Ext Attrs procedures
123 --
124 --
125 -- Modification History:
126 -- Date     Name     Desc
127 -- -------- -------- -----------------------------------------------------------
128 -- 11/08/05 mviswana   Created
129 -- -----------------------------------------------------------------------------
130 PROCEDURE Log_EGO_Ext_PVT_Parameters(
131                 p_ext_attr_grp_tbl        IN     EGO_USER_ATTR_ROW_TABLE
132                ,p_ext_attr_tbl            IN     EGO_USER_ATTR_DATA_TABLE) ;
133 
134 
135 -- =============================================================================
136 -- Private Functions
137 -- ============================================================================
138 FUNCTION IS_ROW_VALID(p_incident_id   IN         NUMBER
139                      ,p_context       IN         NUMBER
140                      ,p_attr_group_id IN         NUMBER
141                      ,x_msg_data      OUT NOCOPY VARCHAR2
142                      ,x_msg_count     OUT NOCOPY NUMBER
143                      ,x_return_status OUT NOCOPY VARCHAR2)
144 RETURN VARCHAR2
145 IS
146 
147 --Cursor to check if extension row really exists
148 
149 Cursor c_check_ext_row IS
150 
151   SELECT count(*)
152     FROM cs_incidents_ext
153    WHERE incident_id = p_incident_id
154      AND context = p_context
155      AND attr_group_id = p_attr_group_id;
156 
157 l_exists_flag VARCHAR2(1) := 'N';
158 l_count       NUMBER      := 0;
159 
160 
161 BEGIN
162 
163 x_return_status := FND_API.G_RET_STS_SUCCESS;
164 
165  OPEN c_check_ext_row;
166  FETCH c_check_ext_row into l_count;
167  CLOSE c_check_ext_row;
168 
169  IF l_count > 0 THEN
170    l_exists_flag := 'Y';
171  ELSE
172    l_exists_flag := 'N';
173  END IF;
174 
175  RETURN l_exists_flag;
176 
177 EXCEPTION
178 
179       WHEN OTHERS THEN
180 
181 
182         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
183         RETURN l_exists_flag;
184 
185 END IS_ROW_VALID;
186 
187 
188 
189 -- =============================================================================
190 -- Private Functions
191 -- ============================================================================
192 FUNCTION IS_ATTR_GROUP_MULTI_ROW(
193                                  p_attr_group_id IN NUMBER
194                                 ,x_msg_data             OUT NOCOPY VARCHAR2
195                                 ,x_msg_count            OUT NOCOPY NUMBER
196                                 ,x_return_status        OUT NOCOPY VARCHAR2)
197 RETURN VARCHAR2
198 IS
199 
200 --Cursor to check if attr group is multi row enabled
201 Cursor c_is_multi_row IS
202 select multi_row_code
203   from ego_attr_groups_v
204  where attr_group_id = p_attr_group_id;
205 
206 l_multi_row_code VARCHAR2(1) := 'N';
207 
208 
209 BEGIN
210 
211 x_return_status := FND_API.G_RET_STS_SUCCESS;
212 
213    OPEN c_is_multi_row;
214    FETCH c_is_multi_row INTO l_multi_row_code;
215    CLOSE c_is_multi_row;
216 
217 
218  RETURN l_multi_row_code;
219 
220 EXCEPTION
221 
222       WHEN OTHERS THEN
223         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
224         RETURN l_multi_row_code;
225 
226 END IS_ATTR_GROUP_MULTI_ROW;
227 
228 -- =============================================================================
229 --                 Private Procedures
230 -- =============================================================================
231 
232 
233 -- -----------------------------------------------------------------------------
234 --  API Name:       Process_SR_Ext_Attrs
235 --
236 --  Description:
237 --    Process passed-in User-Defined Attrs data for
238 --    the Service Request whose Primary Keys are passed in
239 -- Modification History
240 -- Date     Name     Description
241 ---------- -------- ------------------------------------------------------------
242 -- 09/23/05 smisra  Passed g_false for p_coomit
243 --                  used x_return_status instead of l_return_status after
244 --                  EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data call because
245 --                  this procedure returns the status into x_return_status
246 --                  variable
247 --                  Added commit at the end of the procedure.
248 -- 09/23/05 smisra  called delete_old_context when context is changed before
249 --                  inserting data for new context.
250 --                  Put existing code to delete old context under comment. That
251 --                  code can be review later by owner of the file.
252 -- 05/19/06 klou    Fix bug 5230846 - when an invalid object name is passsed,
253 --                  we should return an error.
254 --                  Fix bug 4230846 - errors in DELETE operation.
255 -- -----------------------------------------------------------------------------
256 
257 PROCEDURE Process_SR_Ext_Attrs(
258         p_api_version      	        IN   NUMBER
259        ,p_init_msg_list    	        IN   VARCHAR2 	:= FND_API.G_FALSE
260        ,p_commit           	        IN   VARCHAR2 	:= FND_API.G_FALSE
261        ,p_incident_id                   IN   NUMBER
262        ,p_ext_attr_grp_tbl              IN   CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
263        ,p_ext_attr_tbl                  IN   CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
264        ,p_modified_by                   IN   NUMBER := FND_GLOBAL.USER_ID
265        ,p_modified_on                   IN   DATE := SYSDATE
266        ,x_failed_row_id_list            OUT  NOCOPY VARCHAR2
267        ,x_return_status                 OUT  NOCOPY VARCHAR2
268        ,x_errorcode                     OUT  NOCOPY NUMBER
269        ,x_msg_count                     OUT  NOCOPY NUMBER
270        ,x_msg_data                      OUT  NOCOPY VARCHAR2
271 )IS
272 
273 l_user_attr_data_table        EGO_USER_ATTR_DATA_TABLE;
274 l_user_attr_row_table         EGO_USER_ATTR_ROW_TABLE;
275 l_pk_name_value_pair          EGO_COL_NAME_VALUE_PAIR_ARRAY;
276 l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
277 l_user_privileges_on_object   EGO_VARCHAR_TBL_TYPE;
278 l_failed_row_id_list          VARCHAR2(4000);
279 l_return_status               VARCHAR2(1);
280 l_errorcode                   NUMBER;
281 l_msg_count                   NUMBER;
282 l_msg_data                    VARCHAR2(4000);
283 l_ext_attr_tbl                CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE;
284 l_application_id              NUMBER;
285 l_attr_group_type             VARCHAR2(30);
286 l_attr_group_name             VARCHAR2(30);
287 l_old_context                 VARCHAR2(1000);
288 l_pk_index                    NUMBER := 1;
289 l_incident_id                 VARCHAR2(30);
290 
291 l_count                       NUMBER;
292 l_valid_check                 VARCHAR2(1);
293 
294 l_old_Ext_Attr_Audit_table    Ext_Attr_Audit_Tbl_Type;
295 l_new_Ext_Attr_Audit_table    Ext_Attr_Audit_Tbl_Type;
296 l_new_audit_count             NUMBER;
297 l_old_audit_count             NUMBER;
298 l_rec_found                   VARCHAR2(1);
299 l_cont_chg_on_update          VARCHAR2(1);
300 l_db_incident_id              NUMBER;
301 l_db_sr_context               NUMBER;
302 l_db_attr_group               NUMBER;
303 
304 l_pk_col_1                    NUMBER;
305 l_pk_col_2                    NUMBER;
306 l_pk_col_3                    VARCHAR2(30);
307 l_pk_col_4                    VARCHAR2(30);
308 l_context                     NUMBER;
309 l_attr_group_id               NUMBER;
310 l_composite_key               VARCHAR2(2000);
311 
312 l_api_version   constant number       := 1.0;
313 l_api_name      constant varchar2(30) := 'Process_SR_Ext_Attrs';
314 l_api_name_full constant varchar2(61) := g_pkg_name || '.' || l_api_name;
315 l_log_module    constant varchar2(255) := 'cs.plsql.' || l_api_name_full || '.';
316 
317 
318 CURSOR c_check_sr_pk_col_1(p_pk_col_1 IN NUMBER)IS
319 SELECT incident_id
320       ,incident_type_id
321  FROM  cs_incidents_all_b
322 WHERE  incident_id = p_pk_col_1;
323 
324 CURSOR c_check_pr_pk_cols( p_pk_col_1 IN NUMBER
325                           ,p_pk_col_2 IN NUMBER
326                           ,p_pk_col_3 IN VARCHAR2
327                           ,p_pk_col_4 IN VARCHAR2) IS
328 SELECT incident_id
329       ,party_id
330       ,contact_type
331       ,party_role_code
332   FROM cs_hz_sr_contact_points
333  WHERE incident_id = p_pk_col_1
334    AND party_id = p_pk_col_2
335    AND contact_type = p_pk_col_3
336    AND party_role_code = p_pk_col_4;
337 
338 
339 Cursor c_get_attr_grp_id (p_attr_group_app_id IN NUMBER
340                          ,p_attr_group_type IN VARCHAR2
341                          ,p_attr_group_name IN VARCHAR2)IS
342 
343 SELECT attr_group_id
344   FROM ego_attr_groups_v
345  WHERE application_id = p_attr_group_app_id
346    AND attr_group_type = p_attr_group_type
347    AND attr_group_name = p_attr_group_name;
348 
349 
350 Cursor c_get_old_context_value(p_incident_id IN NUMBER
351                             ,p_context IN NUMBER) IS
352 
353 select incident_id, context, attr_group_id
354   from cs_incidents_ext
355 where incident_id = p_incident_id
356   and context = p_context;
357 
358 
359 BEGIN
360 
361 --Standard start of API savepoint
362 SAVEPOINT CS_EXTENSIBILITY_PVT;
363 
364 -- Standard call to check for call compatibility.
365 IF NOT FND_API.Compatible_API_Call (l_api_version,
366                                     p_api_version,
367                                     l_api_name,
368                                     G_PKG_NAME) THEN
369   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
370 END IF;
371 
372 -- Initialize message list if p_init_msg_list is set to TRUE.
373 IF FND_API.to_Boolean(p_init_msg_list) THEN
374   FND_MSG_PUB.initialize;
375 END IF;
376 
377 -- Initialize API return status to SUCCESS
378 x_return_status := FND_API.G_RET_STS_SUCCESS;
379 
380 --DBMS_OUTPUT.PUT_LINE('In Process_User_Ext_Attrs');
381 --DBMS_OUTPUT.PUT_LINE('p_ext_attr_grp_tbl.COUNT'||p_ext_attr_grp_tbl.COUNT);
382 
383 ---------------------- FND Logging -----------------------------------
384   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
385   THEN
386     FND_LOG.String
387     ( FND_LOG.level_procedure , L_LOG_MODULE || 'start'
388     , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
389     );
390     FND_LOG.String
391     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
392     , 'p_api_version:' || p_api_version
393     );
394     FND_LOG.String
395     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
396     , 'p_init_msg_list:' || p_init_msg_list
397     );
398     FND_LOG.String
399     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
400     , 'p_commit:' || p_commit
401     );
402 
403 
404  -- --------------------------------------------------------------------------
405  -- This procedure Logs the extensible attributes table.
406  -- --------------------------------------------------------------------------
407     Log_EXT_PVT_Parameters
408     ( p_ext_attr_grp_tbl   => p_ext_attr_grp_tbl
409      ,p_ext_attr_tbl       => p_ext_attr_tbl
410     );
411 
412  END IF;
413 
414 
415 --Assign the record count in the attribute group table to l_count
416 l_count := p_ext_attr_grp_tbl.COUNT;
417 
418 
419 IF p_ext_attr_grp_tbl.COUNT > 0 THEN
420 
421     --DBMS_OUTPUT.PUT_LINE('first Row: '||p_ext_attr_grp_tbl.first);
422     --DBMS_OUTPUT.PUT_LINE('Last  Row: '||p_ext_attr_grp_tbl.last);
423 
424 FOR i IN p_ext_attr_grp_tbl.FIRST..p_ext_attr_grp_tbl.LAST LOOP
425 
426   IF p_ext_attr_grp_tbl(i).object_name = 'CS_SERVICE_REQUEST' THEN
427 
428     --DBMS_OUTPUT.PUT_LINE('object_name is CS_SERVICE_REQUEST');
429     --DBMS_OUTPUT.PUT_LINE('l_context'||p_ext_attr_grp_tbl(i).context);
430     --DBMS_OUTPUT.PUT_LINE('l_old_context'||l_old_context);
431     --DBMS_OUTPUT.PUT_LINE('Loop index: '||i);
432     --DBMS_OUTPUT.PUT_LINE('Row: '||p_ext_attr_grp_tbl(i).row_identifier);
433 
434     IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
435        l_old_context IS NOT NULL THEN
436 
437        -- Added FND_LOG
438        IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
439 	  FND_LOG.String
440 	  ( FND_LOG.level_procedure , L_LOG_MODULE || ''
441 	  , 'Transaction has two contexts.  First Context :'
442 	  || l_old_context
443 	  );
444        END IF;
445 
446       --DBMS_OUTPUT.PUT_LINE('In here');
447 
448       IF l_cont_chg_on_update = 'Y'
449       THEN
450 
451         -- Added FND_LOG
452         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
453 	  FND_LOG.String
454 	  ( FND_LOG.level_procedure , L_LOG_MODULE || ''
455 	  , 'The context for the Service Request has Changed :'
456 	  || l_cont_chg_on_update
457 	  );
458 	END IF;
459 
460         delete_old_context
461         ( p_pk_column_1         => l_db_incident_id
462         , p_context             => l_db_sr_context
463         , x_failed_row_id_list  => x_failed_row_id_list
464         , x_return_status       => x_return_status
465         , x_errorcode           => x_errorcode
466         , x_msg_count           => x_msg_count
467         , x_msg_data            => x_msg_data
468         );
469         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
470           FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
471           FND_MSG_PUB.Add;
472           RAISE FND_API.G_EXC_ERROR;
473         END IF;
474 
475         -- Added FND_LOG
476         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
477 	  THEN
478 	    FND_LOG.String
479 	    ( FND_LOG.level_procedure , L_LOG_MODULE || ''
480 	    , 'Information for old context deleted'
481 	    );
482 	END IF;
483 
484       END IF; -- l_cont_chg_on_update = 'Y'
485 
486         -- Added FND_LOG
487         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
488 	  THEN
489 	    FND_LOG.String
490 	    ( FND_LOG.level_procedure , L_LOG_MODULE || ''
491 	    , 'Calling PLM API to process first context'
492 	    );
493 	END IF;
494       --context has changed
495       --call PLM and insert the data so far
496       EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data(
497                               p_api_version                   => 1
498                              ,p_object_name                   => 'CS_SERVICE_REQUEST'
499                              ,p_attributes_row_table          => l_user_attr_row_table
500                              ,p_attributes_data_table         => l_user_attr_data_table
501                              ,p_pk_column_name_value_pairs    => l_pk_name_value_pair
502                              ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
503                              ,p_user_privileges_on_object     => l_user_privileges_on_object
504                              ,p_entity_id                     => NULL
505                              ,p_entity_index                  => NULL
506                              ,p_entity_code                   => NULL
507                              ,p_debug_level                   => 0
508                              ,p_init_error_handler            => FND_API.G_TRUE
509                              ,p_write_to_concurrent_log       => FND_API.G_TRUE
510                              ,p_init_fnd_msg_list             => FND_API.G_FALSE
511                              ,p_log_errors                    => FND_API.G_TRUE
512                              ,p_add_errors_to_fnd_stack       => FND_API.G_TRUE
513                              ,p_commit                        => FND_API.G_FALSE
514                              ,x_failed_row_id_list            => x_failed_row_id_list
515                              ,x_return_status                 => x_return_status
516                              ,x_errorcode                     => x_errorcode
517                              ,x_msg_count                     => x_msg_count
518                              ,x_msg_data                      => x_msg_data );
519 
520 
521 
522       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
523         FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
524         FND_MSG_PUB.Add;
525         RAISE FND_API.G_EXC_ERROR;
526       END IF;
527 
528       --Added FND_LOG
529       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
530         FND_LOG.String
531 	( FND_LOG.level_procedure , L_LOG_MODULE || ''
532 	, 'After processing first context: PLM status :' ||
533            x_return_status
534 	);
535       END IF;
536 
537       -- populate the new audit record with what is structure
538       -- MAYA need to add
539       For i IN 1..l_new_Ext_Attr_Audit_table.COUNT LOOP
540         populate_sr_ext_attr_audit_rec(
541                  p_incident_id        => l_new_Ext_Attr_Audit_table(i).pk_column_1
542                 ,p_context            => l_new_Ext_Attr_Audit_table(i).context
543                 ,p_attr_group_id      => l_new_Ext_Attr_Audit_table(i).attr_group_id
544                 ,p_row_id             => l_new_Ext_Attr_Audit_table(i).row_identifier
545                 ,p_ext_attr_tbl       => p_ext_attr_tbl
546                 ,p_sr_audit_rec_table => l_new_Ext_Attr_Audit_table
547                 ,x_rec_found          => l_rec_found);
548 
549         IF l_rec_found = 'N' THEN
550           --raise error
551           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_SR_EXT_ATTR_WARN');
552           FND_MSG_PUB.Add;
553           RAISE FND_API.G_EXC_ERROR;
554         END IF;
555       END LOOP;
556 
557       --Added FND_LOG
558       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
559         FND_LOG.String
560 	( FND_LOG.level_procedure , L_LOG_MODULE || ''
561 	, 'Calling Audit API to audit the first context :'
562          );
563       END IF;
564 
565       --call the create audit procedure
566       Create_Ext_Attr_Audit(
567              P_SR_EA_new_Audit_rec_table    => l_new_Ext_Attr_Audit_table
568             ,P_SR_EA_old_Audit_rec_table    => l_old_Ext_Attr_Audit_table
569             ,p_object_name                  => 'CS_SERVICE_REQUEST'
570             ,p_modified_by                  => p_modified_by
571             ,p_modified_on                  => p_modified_on
572             ,x_return_status                => x_return_status
573             ,x_msg_count                    => x_msg_count
574             ,x_msg_data                     => x_msg_data);
575 
576       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
577         --raise error
578         FND_MESSAGE.Set_Name('CS', 'CS_API_POP_SR_EXT_ATTR_WARN');
579         FND_MSG_PUB.Add;
580         RAISE FND_API.G_EXC_ERROR;
581       END IF;
582 
583       --Added FND_LOG
584       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
585         FND_LOG.String
586 	( FND_LOG.level_procedure , L_LOG_MODULE || ''
587 	, 'After auditing first context: Audit status :' ||
588            x_return_status
589 	);
590       END IF;
591 
592       --Clear the old audit record structure for the new context
593       l_old_Ext_Attr_Audit_table.DELETE;
594 
595       --Clear the new audit structure for the new context
596       l_new_Ext_Attr_Audit_table.DELETE;
597 
598     END IF; -- of populating data for old context
599 
600 
601     -- initialize the new audit rec count
602     l_new_audit_count := l_new_Ext_Attr_Audit_table.COUNT + 1;
603 
604     --Need to make sure that all the primary key identifiers and the unqie composite key identifiers are passed
605     --For 'CS_SERVICE_REQUEST' this is pk_col_1, context, attr_group_id.
606 
607 
608     /**********************
609       Pk_column_1 validation
610     ***********************/
611 
612     --Check If pk_column_1 is passed
613     IF p_ext_attr_grp_tbl(i).pk_column_1 IS NULL THEN
614       --raise error
615       CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
616                              p_token_an	=> l_api_name_full
617                             ,p_token_mp	=> 'PK_COLUMN_1');
618       RAISE FND_API.G_EXC_ERROR;
619 
620     ELSE
621       --pk_col_1 passed
622       --Validate the pk_column_1 that is coming in
623       OPEN c_check_sr_pk_col_1(to_number(p_ext_attr_grp_tbl(i).pk_column_1));
624       FETCH c_check_sr_pk_col_1 INTO l_pk_col_1, l_context;
625       CLOSE c_check_sr_pk_col_1;
626 
627       IF l_pk_col_1 IS NULL THEN
628          CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
629                                p_token_an => l_api_name_full
630                               ,p_token_v  => p_ext_attr_grp_tbl(i).pk_column_1
631                               ,p_token_p  => 'PK_COLUMN_1');
632          RAISE FND_API.G_EXC_ERROR;
633       END IF;
634 
635       IF l_context IS NULL THEN
636          CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
637                                p_token_an => l_api_name_full
638                               ,p_token_v  => p_ext_attr_grp_tbl(i).context
639                               ,p_token_p  => 'CONTEXT');
640          RAISE FND_API.G_EXC_ERROR;
641 
642       END IF;
643 
644       --DBMS_OUTPUT.PUT_LINE ('Pass pk1 validation');
645 
646       -- If no error then
647       --Need to pass the incident_id to the ego object.
648       --populating the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing primary key to PLM
649       l_pk_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('INCIDENT_ID', p_ext_attr_grp_tbl(i).pk_column_1));
650 
651       --populate the new audit record simultanoeosly while populating the EGO record structure.
652       l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_1 := p_ext_attr_grp_tbl(i).pk_column_1;
653 
654       --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table.pk_column_1'||l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_1);
655 
656       --Added FND_LOG
657       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
658         FND_LOG.String
659 	( FND_LOG.level_procedure , L_LOG_MODULE || ''
660 	, 'Primary Key Validation for Service Request Extensible Attributes successful :'
661          );
662       END IF;
663 
664     END IF; --end of p_ext_attr_grp_tbl(i).pk_column_1 is null
665 
666 
667     /**********************
668       Context validation
669     ***********************/
670 
671     --Check if context is passed
672 
673     --DBMS_OUTPUT.PUT_LINE('p_ext_attr_grp_tbl(i).context'||p_ext_attr_grp_tbl(i).context);
674     IF p_ext_attr_grp_tbl(i).context IS NULL THEN
675       --raise error
676       CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
677                                p_token_an	=> l_api_name_full
678                               ,p_token_mp	=> 'CONTEXT');
679       RAISE FND_API.G_EXC_ERROR;
680 
681     ELSE
682       --context is passed
683       --Check the context for the validated incident.
684       --DBMS_OUTPUT.PUT_LINE('context passed');
685       --DBMS_OUTPUT.PUT_LINE('l_context'||l_context);
686       IF p_ext_attr_grp_tbl(i).context <> l_context AND
687         p_ext_attr_grp_tbl(i).context <> '-1'  THEN
688         --raise error
689         CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
690                                p_token_an => l_api_name_full
691                               ,p_token_v  => p_ext_attr_grp_tbl(i).context
692                               ,p_token_p  => 'CONTEXT');
693         RAISE FND_API.G_EXC_ERROR;
694 
695       ELSE
696         --DBMS_OUTPUT.PUT_LINE('In else of context validation');
697         --context matches
698         --populate the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing the context.
699         l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('CONTEXT', p_ext_attr_grp_tbl(i).context));
700 
701         --populate the new audit record for context.
702         l_new_Ext_Attr_Audit_table(l_new_audit_count).context := p_ext_attr_grp_tbl(i).context;
703 
704         --DBMS_OUTPUT.PUT_LINE('Context matches'||l_new_Ext_Attr_Audit_table(l_new_audit_count).context);
705 
706         --Added FND_LOG
707         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
708           FND_LOG.String
709 	  ( FND_LOG.level_procedure , L_LOG_MODULE || ''
710 	  , 'Context Validation for Service Request Extensible Attributes successful :'
711           );
712         END IF;
713 
714       END IF;
715     END IF; -- end of p_ext_attr_grp_tbl(i).context is null
716 
717     /*************************
718       Attribute Group validation
719     **************************/
720     --Instanciate a new EGO_USER_ATTR_ROW_OBJ or clear out the existing one for the old context
721     --
722 
723     IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
724        l_old_context IS NOT NULL THEN
725       IF (l_user_attr_row_table IS NULL) THEN
726         l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
727         --DBMS_OUTPUT.PUT_LINE('instanciated');
728       ELSE
729         l_user_attr_row_table.DELETE();
730         --DBMS_OUTPUT.PUT_LINE('deleted');
731       END IF;
732     ELSE
733       IF (l_user_attr_row_table IS NULL) THEN
734         l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
735       END IF;
736     END IF;
737 
738     --Extend the object and start adding values
739     --DBMS_OUTPUT.PUT_LINE('attr group'||p_ext_attr_grp_tbl(i).attr_group_id);
740 
741     l_user_attr_row_table.EXTEND();
742 
743     IF p_ext_attr_grp_tbl(i).operation = 'CREATE' THEN
744       IF p_ext_attr_grp_tbl(i).attr_group_id IS NOT NULL THEN
745 
746         --DBMS_OUTPUT.PUT_LINE('ATtr group if not null');
747         --assign to l_attr_group_id
748         l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
749 
750 --        l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
751   --                                                           NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
752 
753         l_user_attr_row_table(l_user_attr_row_table.LAST) :=
754         EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object( p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
755                                                             NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
756 
757         --DBMS_OUTPUT.PUT_LINE('added to riw table count is'||l_user_attr_row_table.COUNT);
758 
759 
760       ELSIF p_ext_attr_grp_tbl(i).attr_group_app_id IS NOT NULL AND
761             p_ext_attr_grp_tbl(i).attr_group_type IS NOT NULL AND
762             p_ext_attr_grp_tbl(i).attr_group_name IS NOT NULL THEN
763 
764    --     l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,NULL,
765      --                                                        p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
766        --                                                     'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
767 
768         l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,NULL,
769                                                              p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
770                                                             'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
771 
772         IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
773           -- then need to derive that for passing to populate_sr_ext_attr_audit_rec to get the old audit record
774           OPEN c_get_attr_grp_id (p_ext_attr_grp_tbl(i).attr_group_app_id
775                                  ,p_ext_attr_grp_tbl(i).attr_group_type
776                                  ,p_ext_attr_grp_tbl(i).attr_group_name);
777           FETCH c_get_attr_grp_id INTO l_attr_group_id;
778           CLOSE c_get_attr_grp_id;
779         ELSE
780           l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
781         END IF;
782       ELSE
783         --Attr Group Information is null
784         -- Raise Error
785         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
786                                p_token_an	=> l_api_name_full
787                               ,p_token_mp	=> 'ATTR_GROUP_ID');
788         RAISE FND_API.G_EXC_ERROR;
789 
790       END IF;
791 
792       -- populate the new audit record for attr_group_id.
793       l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
794 
795       --populate the row_identifier
796       l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
797 
798       --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
799 
800       --make sure that you create a corrosponding record in the old audit record structure
801       -- initialize the new audit rec count
802       l_old_audit_count := l_old_Ext_Attr_Audit_table.COUNT + 1;
803       l_old_Ext_Attr_Audit_table(l_old_audit_count) := null;
804 
805     ELSIF p_ext_attr_grp_tbl(i).operation = 'UPDATE' THEN
806       IF p_ext_attr_grp_tbl(i).attr_group_id IS NOT NULL THEN
807 
808         --DBMS_OUTPUT.PUT_LINE('operation is update and attr_group_id is not null');
809 
810         l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
811 
812         --Added FND_LOG
813         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
814           FND_LOG.String
815 	  ( FND_LOG.level_procedure , L_LOG_MODULE || ''
816 	  , 'Operation is UPDATE - populate the audit structure :'
817           );
818         END IF;
819 
820         --populate the audit record structure for the current record in the database
821         populate_sr_ext_attr_audit_rec(
822           p_incident_id        => p_incident_id
823          ,p_context            => p_ext_attr_grp_tbl(i).context
824          ,p_attr_group_id      => p_ext_attr_grp_tbl(i).attr_group_id
825          ,p_row_id             => p_ext_attr_grp_tbl(i).row_identifier
826          ,p_ext_attr_tbl       => p_ext_attr_tbl
827          ,p_sr_audit_rec_table => l_old_Ext_Attr_Audit_table
828          ,x_rec_found          => l_rec_found
829          );
830 
831         --Added FND_LOG
832         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
833           FND_LOG.String
834 	  ( FND_LOG.level_procedure , L_LOG_MODULE || ''
835 	  , 'Status of record found for audit :' ||
836           l_rec_found
837           );
838         END IF;
839         --DBMS_OUTPUT.PUT_LINE('l_old_Ext_Attr_Audit_table.COUNT'||l_old_Ext_Attr_Audit_table.COUNT);
840 
841 
842         IF l_rec_found = 'N' THEN
843            -- call check_sr_context_change to check if context has changed during the update
844            -- operation
845 
846            --Added FND_LOG
847           IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
848             FND_LOG.String
849 	    ( FND_LOG.level_procedure , L_LOG_MODULE || ''
850 	    , 'Record not found for audit checking if context is changed for Service Request :'
851             );
852           END IF;
853            check_sr_context_change(
854                    p_incident_id     => p_ext_attr_grp_tbl(i).pk_column_1
855                   ,p_context         => p_ext_attr_grp_tbl(i).context
856                   ,x_context_changed => l_cont_chg_on_update
857                   ,x_db_incident_id  => l_db_incident_id
858                   ,x_db_context      => l_db_sr_context);
859 
860            --Added FND_LOG
861            IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
862              FND_LOG.String
863 	     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
864 	     , 'Status of contect change check :' ||
865               l_cont_chg_on_update
866              );
867            END IF;
868 
869 
870            --Added FND_LOG
871            IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
872              FND_LOG.String
873 	     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
874 	     , 'Database Service Request identifier :' ||
875               l_db_incident_id
876              );
877            END IF;
878 
879            --Added FND_LOG
880            IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
881              FND_LOG.String
882 	     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
883 	     , 'Database context :' ||
884               l_db_sr_context
885              );
886            END IF;
887 
888             --DBMS_OUTPUT.PUT_LINE('l_cont_chg_on_update'||l_cont_chg_on_update);
889             --DBMS_OUTPUT.PUT_LINE('l_db_incident_id'||l_db_incident_id);
890             --DBMS_OUTPUT.PUT_LINE('l_db_sr_context'||l_db_sr_context);
891             --DBMS_OUTPUT.PUT_LINE('l_db_attr_group'||l_db_attr_group);
892 
893         END IF; -- end of l_rec_found
894 
895 
896         IF l_cont_chg_on_update = 'Y' THEN
897           --treat this record as a 'CREATE'
898 
899           --Added FND_LOG
900           IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level  THEN
901             FND_LOG.String
902 	    ( FND_LOG.level_procedure , L_LOG_MODULE || ''
903 	    , 'Context has changed on Service  :'
904             );
905           END IF;
906 
907 --          l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
908   --                                                             NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
909 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
910                                                       NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
911           -- populate the new audit record for attr_group_id.
912           l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
913 
914           --populate the row_identifier
915           l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
916 
917           --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
918 
919           --make sure that you create a corrosponding record in the old audit record structure
920           -- initialize the old audit rec count
921           l_old_audit_count := l_old_Ext_Attr_Audit_table.COUNT + 1;
922           l_old_Ext_Attr_Audit_table(l_old_audit_count) := null;
923 
924         ELSE
925           --treat this record as a 'UPDATE'
926          -- l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
927            --                                                    NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
928 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
929                                                       NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
930 
931           -- populate the new audit record for attr_group_id.
932           l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
933 
934           --populate the row_identifier
935           l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
936 
937           --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
938          END IF;
939 
940 
941       ELSIF p_ext_attr_grp_tbl(i).attr_group_app_id IS NOT NULL AND
942             p_ext_attr_grp_tbl(i).attr_group_type IS NOT NULL AND
943             p_ext_attr_grp_tbl(i).attr_group_name IS NOT NULL THEN
944 
945         -- then need to derive that for passing to populate_sr_ext_attr_audit_rec to get the old audit record
946         IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
947           OPEN c_get_attr_grp_id (p_ext_attr_grp_tbl(i).attr_group_app_id
948                                  ,p_ext_attr_grp_tbl(i).attr_group_type
949                                  ,p_ext_attr_grp_tbl(i).attr_group_name);
950           FETCH c_get_attr_grp_id INTO l_attr_group_id;
951           CLOSE c_get_attr_grp_id;
952         ELSE
953           l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
954         END IF;
955 
956         --populate the audit record structure for the current record in the database
957         populate_sr_ext_attr_audit_rec(
958           p_incident_id        => p_incident_id
959          ,p_context            => p_ext_attr_grp_tbl(i).context
960          ,p_attr_group_id      => l_attr_group_id
961          ,p_row_id             => p_ext_attr_grp_tbl(i).row_identifier
962          ,p_ext_attr_tbl       => p_ext_attr_tbl
963          ,p_sr_audit_rec_table => l_old_Ext_Attr_Audit_table
964          ,x_rec_found          => l_rec_found
965          );
966 
967         --DBMS_OUTPUT.PUT_LINE('l_old_Ext_Attr_Audit_table.COUNT'||l_old_Ext_Attr_Audit_table.COUNT);
968 
969 
970         IF l_rec_found = 'N' THEN
971            -- call check_sr_context_change to check if context has changed during the update
972            -- operation
973            check_sr_context_change(
974                    p_incident_id     => p_ext_attr_grp_tbl(i).pk_column_1
975                   ,p_context         => p_ext_attr_grp_tbl(i).context
976                   ,x_context_changed => l_cont_chg_on_update
977                   ,x_db_incident_id  => l_db_incident_id
978                   ,x_db_context      => l_db_sr_context);
979 
980             --DBMS_OUTPUT.PUT_LINE('l_cont_chg_on_update'||l_cont_chg_on_update);
981             --DBMS_OUTPUT.PUT_LINE('l_db_incident_id'||l_db_incident_id);
982             --DBMS_OUTPUT.PUT_LINE('l_db_sr_context'||l_db_sr_context);
983             --DBMS_OUTPUT.PUT_LINE('l_db_attr_group'||l_db_attr_group);
984 
985         END IF; -- end of l_rec_found
986 
987          IF l_cont_chg_on_update = 'Y' THEN
988           --treat this record as a 'CREATE'
989 
990   --        l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,NULL,
991     --                                                           p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
992       --                                                         'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
993 
994         l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,NULL,
995                                                              p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
996                                                             'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
997           -- populate the new audit record for attr_group_id.
998           l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
999 
1000           --populate the row_identifier
1001           l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
1002 
1003           --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
1004 
1005           --make sure that you create a corrosponding record in the old audit record structure
1006           -- initialize the old audit rec count
1007           l_old_audit_count := l_old_Ext_Attr_Audit_table.COUNT + 1;
1008           l_old_Ext_Attr_Audit_table(l_old_audit_count) := null;
1009 
1010         ELSE
1011           --treat this record as a 'UPDATE'
1012        --   l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1013          --                                                      p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1014            --                                                    'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1015 
1016         l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1017                                                              p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1018                                                             'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1019 
1020 
1021           -- populate the new audit record for attr_group_id.
1022           l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
1023 
1024           --populate the row_identifier
1025           l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
1026 
1027           --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
1028          END IF;
1029 
1030       ELSE
1031         --Attr Group Information is null
1032         -- Raise Error
1033         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1034                                p_token_an	=> l_api_name_full
1035                               ,p_token_mp	=> 'ATTR_GROUP_ID');
1036         RAISE FND_API.G_EXC_ERROR;
1037 
1038       END IF;
1039 
1040     ELSIF p_ext_attr_grp_tbl(i).operation = 'DELETE' THEN
1041 
1042       -- 5230517
1043       IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
1044         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1045                                p_token_an	=> l_api_name_full
1046                               ,p_token_mp	=> 'ATTR_GROUP_ID');
1047         RAISE FND_API.G_EXC_ERROR;
1048 
1049       END IF;
1050       -- 5230517_eof
1051 
1052       --check to see if the row being deleted really exists
1053       l_valid_check := IS_ROW_VALID(p_incident_id   => p_ext_attr_grp_tbl(i).pk_column_1
1054                                    ,p_context       => p_ext_attr_grp_tbl(i).context
1055                                    ,p_attr_group_id => p_ext_attr_grp_tbl(i).attr_group_id
1056                                    ,x_msg_data      => l_msg_data
1057                                    ,x_msg_count     => l_msg_count
1058                                    ,x_return_status => l_return_status);
1059 
1060       IF l_return_status = G_RET_STS_UNEXP_ERROR THEN
1061         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1062       ELSIF l_return_status = G_RET_STS_ERROR THEN
1063         RAISE FND_API.G_EXC_ERROR;
1064       END IF;
1065 
1066       IF l_valid_check = 'Y' THEN
1067       --  l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1068         --                                                     NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1069 
1070 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1071                                                                NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1072      -- 5230517: do not think UI needs this. Should let PLM throw exceptions.
1073     /*
1074       ELSE
1075         --This has been added for the UI
1076         x_return_status := FND_API.G_RET_STS_SUCCESS;
1077         RETURN;
1078       */
1079       END IF;
1080     END IF;
1081 
1082     --DBMS_OUTPUT.PUT_LINE('Successfully added to table');
1083 
1084     /**************************
1085        Attribute Validation
1086     **************************/
1087 
1088 
1089     IF p_ext_attr_tbl.COUNT > 0 THEN
1090 
1091       --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl.COUNT'||p_ext_attr_tbl.COUNT);
1092 
1093       --pass the entire attribute data to a local table which can be used for manipulation
1094       l_ext_attr_tbl := p_ext_attr_tbl;
1095 
1096       IF p_ext_attr_grp_tbl(i).mapping_req = 'Y' THEN
1097         --need to get the metadata definition dor attributes defined for attribute group
1098         --Call Procedure Get_Attr_Group_Metadata
1099 
1100         --DBMS_OUTPUT.PUT_LINE('Calling Attr Grp Metadata');
1101         Get_Attr_Group_Metadata(
1102                  p_attr_group_id   => p_ext_attr_grp_tbl(i).attr_group_id
1103                 ,x_application_id  => l_application_id
1104                 ,x_attr_group_type => l_attr_group_type
1105                 ,x_attr_group_name => l_attr_group_name);
1106 
1107         IF l_application_id IS NOT NULL AND
1108            l_attr_group_type IS NOT NULL AND
1109            l_attr_group_name IS NOT NULL THEN
1110 
1111 
1112           --get the Attribute Metadata defined for this Attribute Group.
1113 	  Get_Attr_Metadata(
1114                    p_row_identifier  => p_ext_attr_grp_tbl(i).row_identifier
1115                   ,p_application_id  => l_application_id
1116                   ,p_attr_group_type => l_attr_group_type
1117                   ,p_attr_group_name => l_attr_group_name
1118                   ,p_ext_attr_tbl    => l_ext_attr_tbl);
1119 
1120         END IF; -- end if of l_application_id IS NULL ..
1121       END IF; -- end if of IF p_ext_attr_grp_tbl(i).mapping_req = 'Y'
1122 
1123       --Get the attributes relevant to the attribute group and prepare to pass it to PLM
1124       -- Instanciate a new EGO_USER_ATTR_DATA_TABLE or clear out the existing one --
1125       IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
1126         l_old_context IS NOT NULL THEN
1127         IF (l_user_attr_data_table IS NULL) THEN
1128           l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1129         ELSE
1130           l_user_attr_data_table.DELETE();
1131         END IF;
1132       ELSE
1133         IF (l_user_attr_data_table IS NULL) THEN
1134           l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1135         END IF;
1136       END IF;
1137 
1138       FOR j IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST  LOOP
1139         IF p_ext_attr_grp_tbl(i).row_identifier = l_ext_attr_tbl(j).row_identifier THEN
1140           l_user_attr_data_table.EXTEND();
1141           l_user_attr_data_table(l_user_attr_data_table.LAST) := EGO_USER_ATTR_DATA_OBJ(l_ext_attr_tbl(j).row_identifier, l_ext_attr_tbl(j).attr_name,
1142                                                                  l_ext_attr_tbl(j).attr_value_str,l_ext_attr_tbl(j).attr_value_num,
1143                                                                  l_ext_attr_tbl(j).attr_value_date,l_ext_attr_tbl(j).attr_value_display, NULL, NULL);
1144         END IF;
1145       END LOOP;
1146 
1147       --DBMS_OUTPUT.PUT_LINE('l_user_attr_data_table.COUNT'||l_user_attr_data_table.COUNT);
1148 
1149     ELSE
1150       l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1151     END IF;  -- count > 1
1152 
1153     --set the old context
1154     l_old_context := p_ext_attr_grp_tbl(i).context;
1155 
1156     --DBMS_OUTPUT.PUT_LINE('l_old_context'||l_old_context);
1157 
1158 
1159     /*************************************
1160       Call PLM API If last record
1161     **************************************/
1162 
1163     IF i = l_count THEN
1164       --DBMS_OUTPUT.PUT_LINE('on last record');
1165       IF l_cont_chg_on_update = 'Y'
1166       THEN
1167         delete_old_context
1168         ( p_pk_column_1         => l_db_incident_id
1169         , p_context             => l_db_sr_context
1170         , x_failed_row_id_list  => x_failed_row_id_list
1171         , x_return_status       => x_return_status
1172         , x_errorcode           => x_errorcode
1173         , x_msg_count           => x_msg_count
1174         , x_msg_data            => x_msg_data
1175         );
1176         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1177           FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
1178           FND_MSG_PUB.Add;
1179           RAISE FND_API.G_EXC_ERROR;
1180         END IF;
1181       END IF; -- l_cont_chg_on_update = 'Y'
1182       --on last record
1183       --DBMS_OUTPUT.PUT_LINE('count of l_user_attr_row_table'||l_user_attr_row_table.COUNT);
1184       --DBMS_OUTPUT.PUT_LINE('count of l_user_attr_data_table'||l_user_attr_data_table.COUNT);
1185       --DBMS_OUTPUT.PUT_LINE('count of l_pk_name_value_pair'||l_pk_name_value_pair.COUNT);
1186       --DBMS_OUTPUT.PUT_LINE('count of l_class_code_name_value_pairs'||l_class_code_name_value_pairs.COUNT);
1187 
1188       EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data(
1189                               p_api_version                   => 1
1190                              ,p_object_name                   => 'CS_SERVICE_REQUEST'
1191                              ,p_attributes_row_table          => l_user_attr_row_table
1192                              ,p_attributes_data_table         => l_user_attr_data_table
1193                              ,p_pk_column_name_value_pairs    => l_pk_name_value_pair
1194                              ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
1195                              ,p_user_privileges_on_object     => l_user_privileges_on_object
1196                              ,p_entity_id                     => NULL
1197                              ,p_entity_index                  => NULL
1198                              ,p_entity_code                   => NULL
1199                              ,p_debug_level                   => 0
1200                              ,p_init_error_handler            => FND_API.G_TRUE
1201                              ,p_write_to_concurrent_log       => FND_API.G_TRUE
1202                              ,p_init_fnd_msg_list             => FND_API.G_FALSE
1203                              ,p_log_errors                    => FND_API.G_TRUE
1204                              ,p_add_errors_to_fnd_stack       => FND_API.G_TRUE
1205                              ,p_commit                        => FND_API.G_FALSE
1206                              ,x_failed_row_id_list            => x_failed_row_id_list
1207                              ,x_return_status                 => x_return_status
1208                              ,x_errorcode                     => x_errorcode
1209                              ,x_msg_count                     => x_msg_count
1210                              ,x_msg_data                      => x_msg_data );
1211 
1212       --DBMS_OUTPUT.PUT_LINE('x_return_status'||x_return_status);
1213       --DBMS_OUTPUT.PUT_LINE('x_failed_row_id_list'||x_failed_row_id_list);
1214       --DBMS_OUTPUT.PUT_LINE('x_msg_data'||x_msg_data);
1215 
1216        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1217         FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
1218         FND_MSG_PUB.Add;
1219         RAISE FND_API.G_EXC_ERROR;
1220       END IF;
1221 
1222       --DBMS_OUTPUT.PUT_LINE('Calling populate_sr_ext_attr_audit_rec');  --executed
1223 
1224 
1225       -- populate the new audit record with what is structure
1226       -- MAYA need to add
1227       -- DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table'||l_new_Ext_Attr_Audit_table.COUNT); --executed
1228 
1229      -- Fix bug 5230517
1230      -- Audit only in CREATE and UPDATE operations
1231      IF p_ext_attr_grp_tbl(i).operation <> 'DELETE' THEN
1232        For i IN 1..l_new_Ext_Attr_Audit_table.COUNT LOOP
1233 
1234         --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table(i).pk_column_1'||l_new_Ext_Attr_Audit_table(i).pk_column_1); --executed
1235         --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table(i).context'||l_new_Ext_Attr_Audit_table(i).context);         --executed
1236         --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table(i).attr_group_id'||l_new_Ext_Attr_Audit_table(i).attr_group_id); --executed
1237         --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table(i).row_identifier'||l_new_Ext_Attr_Audit_table(i).row_identifier); --executed
1238         --DBMS_OUTPUT.PUT_LINE('calling populate_sr_ext_attr_audit_rec'); --executed
1239 
1240         populate_sr_ext_attr_audit_rec(
1241                    p_incident_id        => l_new_Ext_Attr_Audit_table(i).pk_column_1
1242                   ,p_context            => l_new_Ext_Attr_Audit_table(i).context
1243                   ,p_attr_group_id      => l_new_Ext_Attr_Audit_table(i).attr_group_id
1244                   ,p_row_id             => l_new_Ext_Attr_Audit_table(i).row_identifier
1245                   ,p_ext_attr_tbl       => p_ext_attr_tbl
1246                   ,p_sr_audit_rec_table => l_new_Ext_Attr_Audit_table
1247                   ,x_rec_found          => l_rec_found);
1248 
1249         --DBMS_OUTPUT.PUT_LINE('l_rec_found'||l_rec_found);
1250 
1251 
1252         IF l_rec_found = 'N' THEN
1253           --raise error
1254           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_SR_EXT_ATTR_WARN');
1255           FND_MSG_PUB.Add;
1256           RAISE FND_API.G_EXC_ERROR;
1257         END IF;
1258       END LOOP;
1259 
1260       --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table'||l_new_Ext_Attr_Audit_table.COUNT);
1261 
1262       --call the create audit procedure
1263       Create_Ext_Attr_Audit(
1264                    P_SR_EA_new_Audit_rec_table    => l_new_Ext_Attr_Audit_table
1265                   ,P_SR_EA_old_Audit_rec_table    => l_old_Ext_Attr_Audit_table
1266                   ,p_object_name                  => 'CS_SERVICE_REQUEST'
1267                   ,p_modified_by                  => p_modified_by
1268                   ,p_modified_on                  => p_modified_on
1269                   ,x_return_status                => x_return_status
1270                   ,x_msg_count                    => x_msg_count
1271                   ,x_msg_data                     => x_msg_data);
1272 
1273     END IF; -- end bug 5230517 fix.
1274 
1275       IF l_cont_chg_on_update = 'Y' THEN
1276       /*************************************************************
1277         --Need to clear the EGO structures
1278         l_pk_name_value_pair.DELETE();
1279         l_class_code_name_value_pairs.DELETE();
1280         l_user_attr_row_table.DELETE();
1281         l_count := 0;
1282 
1283         --DBMS_OUTPUT.PUT_LINE('In context change logic');
1284 
1285         --get all the values in the database for the old context
1286         FOR v_get_old_context_value IN c_get_old_context_value(l_db_incident_id,
1287                                                                l_db_sr_context) LOOP
1288           --DBMS_OUTPUT.PUT_LINE('v_get_old_context_value.incident_id'||v_get_old_context_value.incident_id);
1289           --DBMS_OUTPUT.PUT_LINE('v_get_old_context_value.context'||v_get_old_context_value.context);
1290           --DBMS_OUTPUT.PUT_LINE('v_get_old_context_value.attr_group_id'||v_get_old_context_value.attr_group_id);
1291 
1292           l_count := l_count + 1;
1293           --set the primary key identifiers to pass to PLM
1294           --populating the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing primary key to PLM
1295           l_pk_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY
1296                                  (EGO_COL_NAME_VALUE_PAIR_OBJ('INCIDENT_ID', v_get_old_context_value.incident_id));
1297 
1298           --set the context to pass to PLM only SR_TYPE_ID
1299           --populate the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing the context.
1300           l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
1301                                           (EGO_COL_NAME_VALUE_PAIR_OBJ('CONTEXT', v_get_old_context_value.context));
1302 
1303           --Instanciate a new EGO_USER_ATTR_ROW_OBJ (only once)
1304           IF (l_user_attr_row_table IS NULL) THEN
1305             l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
1306           END IF;
1307 
1308           --Extend the object to add value it it
1309           l_user_attr_row_table.EXTEND();
1310 --          l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(l_count,v_get_old_context_value.attr_group_id,
1311   --                                                               NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1312 
1313 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(l_count,v_get_old_context_value.attr_group_id,
1314                                                               NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1315 
1316         END LOOP;
1317         -- Instantiate the attribute table once
1318         l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1319 
1320         --DBMS_OUTPUT.PUT_LINE('Calling to delete data, user attr row table count:'|| l_user_attr_row_table.count);
1321 
1322         --Call PLM for deleting the old data
1323         EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data(
1324                                 p_api_version                   =>  1
1325                                ,p_object_name                   =>  'CS_SERVICE_REQUEST'
1326                                ,p_attributes_row_table          =>  l_user_attr_row_table
1327                                ,p_attributes_data_table         =>  l_user_attr_data_table
1328                                ,p_pk_column_name_value_pairs    =>  l_pk_name_value_pair
1329                                ,p_class_code_name_value_pairs   =>  l_class_code_name_value_pairs
1330                                ,p_user_privileges_on_object     =>  l_user_privileges_on_object
1331                                ,p_entity_id                     =>  NULL
1332                                ,p_entity_index                  =>  NULL
1333                                ,p_entity_code                   =>  NULL
1334                                ,p_debug_level                   =>  0
1335                                ,p_init_error_handler            =>  FND_API.G_TRUE
1336                                ,p_write_to_concurrent_log       =>  FND_API.G_TRUE
1337                                ,p_init_fnd_msg_list             =>  FND_API.G_FALSE
1338                                ,p_log_errors                    =>  FND_API.G_TRUE
1339                                ,p_add_errors_to_fnd_stack       =>  FND_API.G_TRUE
1340                                ,p_commit                        =>  FND_API.G_FALSE
1341                                ,x_failed_row_id_list            =>  x_failed_row_id_list
1342                                ,x_return_status                 =>  x_return_status
1343                                ,x_errorcode                     =>  x_errorcode
1344                                ,x_msg_count                     =>  x_msg_count
1345                                ,x_msg_data                      =>  x_msg_data );
1346 
1347       *****************************************************/
1348       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1349         FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
1350         FND_MSG_PUB.Add;
1351         RAISE FND_API.G_EXC_ERROR;
1352       END IF;
1353 
1354 
1355         --Clear the old audit record structure for the new context
1356         l_old_Ext_Attr_Audit_table.DELETE;
1357 
1358         --Clear the new audit structure for the new context
1359         l_new_Ext_Attr_Audit_table.DELETE;
1360       END IF;
1361     END IF;
1362 /***********************PARTY ROLE IMPLEMENTATION ******************************/
1363 
1364   ELSIF p_ext_attr_grp_tbl(i).object_name = 'CS_PARTY_ROLE' THEN
1365     IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
1366       l_old_context IS NOT NULL THEN
1367 
1368       --DBMS_OUTPUT.PUT_LINE('In here');
1369       --DBMS_OUTPUT.PUT_LINE('context changed');
1370       --context has changed
1371       --call PLM and insert the data so far
1372 
1373       EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data(
1374                               p_api_version                   => 1
1375                              ,p_object_name                   => 'CS_PARTY_ROLE'
1376                              ,p_attributes_row_table          => l_user_attr_row_table
1377                              ,p_attributes_data_table         => l_user_attr_data_table
1378                              ,p_pk_column_name_value_pairs    => l_pk_name_value_pair
1379                              ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
1380                              ,p_user_privileges_on_object     => l_user_privileges_on_object
1381                              ,p_entity_id                     =>  NULL
1382                              ,p_entity_index                  =>  NULL
1383                              ,p_entity_code                   =>  NULL
1384                              ,p_debug_level                   =>  0
1385                              ,p_init_error_handler            =>  FND_API.G_TRUE
1386                              ,p_write_to_concurrent_log       =>  FND_API.G_TRUE
1387                              ,p_init_fnd_msg_list             =>  FND_API.G_FALSE
1388                              ,p_log_errors                    =>  FND_API.G_TRUE
1389                              ,p_add_errors_to_fnd_stack       =>  FND_API.G_TRUE
1390                              ,p_commit                        =>  FND_API.G_FALSE
1391                              ,x_failed_row_id_list            => x_failed_row_id_list
1392                              ,x_return_status                 => x_return_status
1393                              ,x_errorcode                     => x_errorcode
1394                              ,x_msg_count                     => x_msg_count
1395                              ,x_msg_data                      => x_msg_data );
1396 
1397       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1398         FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
1399         FND_MSG_PUB.Add;
1400         RAISE FND_API.G_EXC_ERROR;
1401       END IF;
1402 
1403       --reset the old_context to null;
1404       --NOT SURE IF THIS IS NEEDED
1405 
1406       -- populate the new audit record with what is structure
1407       -- MAYA need to add
1408       --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table.COUNT'||l_new_Ext_Attr_Audit_table.COUNT);
1409 
1410       For i IN 1..l_new_Ext_Attr_Audit_table.COUNT LOOP
1411         populate_pr_ext_attr_audit_rec(
1412                  p_incident_id        => to_number(l_new_Ext_Attr_Audit_table(i).pk_column_1)
1413                 ,p_party_id           => to_number(l_new_Ext_Attr_Audit_table(i).pk_column_2)
1414                 ,p_contact_type       => l_new_Ext_Attr_Audit_table(i).pk_column_3
1415                 ,p_party_role_code    => l_new_Ext_Attr_Audit_table(i).pk_column_4
1416                 ,p_context            => l_new_Ext_Attr_Audit_table(i).context
1417                 ,p_attr_group_id      => l_new_Ext_Attr_Audit_table(i).attr_group_id
1418                 ,p_row_id             => l_new_Ext_Attr_Audit_table(i).row_identifier
1419                 ,p_ext_attr_tbl       => p_ext_attr_tbl
1420                 ,p_sr_audit_rec_table => l_new_Ext_Attr_Audit_table
1421                 ,x_rec_found          => l_rec_found);
1422 
1423         IF l_rec_found = 'N' THEN
1424           --raise error
1425           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_PR_EXT_ATTR_WARN');
1426           FND_MSG_PUB.Add;
1427           RAISE FND_API.G_EXC_ERROR;
1428         END IF;
1429       END LOOP;
1430 
1431       --call the create audit procedure
1432       Create_Ext_Attr_Audit(
1433                  P_SR_EA_new_Audit_rec_table    => l_new_Ext_Attr_Audit_table
1434                 ,P_SR_EA_old_Audit_rec_table    => l_old_Ext_Attr_Audit_table
1435                 ,p_object_name                  => 'CS_PARTY_ROLE'
1436                 ,p_modified_by                  => p_modified_by
1437                 ,p_modified_on                  => p_modified_on
1438                 ,x_return_status                => x_return_status
1439                 ,x_msg_count                    => x_msg_count
1440                 ,x_msg_data                     => x_msg_data);
1441 
1442 
1443 
1444       --Clear the old audit record structure for the new context
1445       l_old_Ext_Attr_Audit_table.DELETE;
1446 
1447       --Clear the new audit structure for the new context
1448       l_new_Ext_Attr_Audit_table.DELETE;
1449 
1450     END IF; -- of populating data for old context
1451 
1452     --DBMS_OUTPUT.PUT_LINE('In PR Implementation');
1453 
1454     -- initialize the new audit rec count
1455     l_new_audit_count := l_new_Ext_Attr_Audit_table.COUNT + 1;
1456 
1457     /*********************************************************
1458         pk_column_1 pk_column2, pk_column3, pk_column4 validation
1459     **********************************************************/
1460 
1461     --DBMS_OUTPUT.PUT_LINE('IN PK VALIDATION');
1462     --Check If composite primary key identifiers are passed
1463     IF p_ext_attr_grp_tbl(i).pk_column_1 IS NULL OR
1464       p_ext_attr_grp_tbl(i).pk_column_2 IS NULL OR
1465       p_ext_attr_grp_tbl(i).pk_column_3 IS NULL OR
1466       p_ext_attr_grp_tbl(i).pk_column_4 IS NULL THEN
1467       --raise error
1468       CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1469                              p_token_an	=> l_api_name_full
1470                             ,p_token_mp	=> 'PARTY_ROLE_COMPOSITE_KEY');
1471       RAISE FND_API.G_EXC_ERROR;
1472     ELSE
1473       --DBMS_OUTPUT.PUT_LINE('validating the primary key');
1474       --composite key passed
1475       --Validate the composite key that is coming in
1476       OPEN c_check_pr_pk_cols( to_number(p_ext_attr_grp_tbl(i).pk_column_1)
1477                               ,to_number(p_ext_attr_grp_tbl(i).pk_column_2)
1478                               ,p_ext_attr_grp_tbl(i).pk_column_3
1479                               ,p_ext_attr_grp_tbl(i).pk_column_4);
1480       FETCH c_check_pr_pk_cols  INTO l_pk_col_1, l_pk_col_2, l_pk_col_3, l_pk_col_4;
1481       CLOSE c_check_pr_pk_cols;
1482 
1483       --DBMS_OUTPUT.PUT_LINE('validating the primary key successful');
1484 
1485       IF l_pk_col_1 IS NULL OR
1486          l_pk_col_2 IS NULL OR
1487          l_pk_col_3 IS NULL OR
1488          l_pk_col_4 IS NULL THEN
1489          --raise error
1490          l_composite_key := p_ext_attr_grp_tbl(i).pk_column_1||' , '||p_ext_attr_grp_tbl(i).pk_column_2||
1491                             ' , '||p_ext_attr_grp_tbl(i).pk_column_3||' , '||p_ext_attr_grp_tbl(i).pk_column_4;
1492 
1493          CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
1494                                p_token_an => l_api_name_full
1495                               ,p_token_v  => l_composite_key
1496                               ,p_token_p  => 'COMPOSITE_KEY');
1497          RAISE FND_API.G_EXC_ERROR;
1498 
1499       END IF;
1500 
1501       -- If no error then
1502       --Need to set the composite primary key for the party role implementation.
1503       --populating the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing primary key to PLM
1504 
1505       l_pk_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('INCIDENT_ID', p_ext_attr_grp_tbl(i).pk_column_1),
1506                               EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ID', p_ext_attr_grp_tbl(i).pk_column_2),
1507                               EGO_COL_NAME_VALUE_PAIR_OBJ('CONTACT_TYPE', p_ext_attr_grp_tbl(i).pk_column_3),
1508                               EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ROLE_CODE', p_ext_attr_grp_tbl(i).pk_column_4));
1509 
1510       --DBMS_OUTPUT.PUT_LINE('populated the EGO_COL_NAME_VALUE_PAIR_ARRAY');
1511       --populate the new audit record simultanoeosly while populating the EGO record structure.
1512       l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_1 := p_ext_attr_grp_tbl(i).pk_column_1;
1513       l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_2 := p_ext_attr_grp_tbl(i).pk_column_2;
1514       l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_3 := p_ext_attr_grp_tbl(i).pk_column_3;
1515       l_new_Ext_Attr_Audit_table(l_new_audit_count).pk_column_4 := p_ext_attr_grp_tbl(i).pk_column_4;
1516 
1517 
1518       --DBMS_OUTPUT.PUT_LINE('populated the l_new_Ext_Attr_Audit_table');
1519     END IF; --end of pk cols validation
1520 
1521     /**********************
1522        Context validation
1523     ***********************/
1524 
1525     --DBMS_OUTPUT.PUT_LINE('validating context');
1526     --Check if context is passed
1527     IF p_ext_attr_grp_tbl(i).context IS NULL THEN
1528       --raise error
1529       CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1530                              p_token_an	=> l_api_name_full
1531                             ,p_token_mp	=> 'PARTY CONTEXT');
1532       RAISE FND_API.G_EXC_ERROR;
1533     ELSE
1534       --DBMS_OUTPUT.PUT_LINE('context passed');
1535       --context is passed
1536       --Check the context for the validated incident.
1537       IF p_ext_attr_grp_tbl(i).context <> p_ext_attr_grp_tbl(i).pk_column_4 THEN
1538         --raise error
1539         CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
1540                                p_token_an => l_api_name_full
1541                               ,p_token_v  => p_ext_attr_grp_tbl(i).context
1542                               ,p_token_p  => 'PARTY CONTEXT');
1543         RAISE FND_API.G_EXC_ERROR;
1544       ELSE
1545 
1546         --DBMS_OUTPUT.PUT_LINE('context matches');
1547         --context matches
1548         --populate the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing the context.
1549         l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('CONTEXT', p_ext_attr_grp_tbl(i).context));
1550 
1551         --DBMS_OUTPUT.PUT_LINE('populated EGO_COL_NAME_VALUE_PAIR_ARRAY');
1552 
1553         --populate the new audit record for context.
1554         l_new_Ext_Attr_Audit_table(l_new_audit_count).context := p_ext_attr_grp_tbl(i).context;
1555 
1556         --DBMS_OUTPUT.PUT_LINE('populated l_new_Ext_Attr_Audit_table');
1557 
1558       END IF;
1559     END IF; -- end of p_ext_attr_grp_tbl(i).context is null
1560 
1561     /*************************
1562         Attribute Group validation
1563     **************************/
1564     IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
1565       l_old_context IS NOT NULL THEN
1566       IF (l_user_attr_row_table IS NULL) THEN
1567         l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
1568         --DBMS_OUTPUT.PUT_LINE('instanciated');
1569       ELSE
1570         l_user_attr_row_table.DELETE();
1571         --DBMS_OUTPUT.PUT_LINE('deleted');
1572       END IF;
1573     ELSE
1574       IF (l_user_attr_row_table IS NULL) THEN
1575         l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
1576       END IF;
1577     END IF;
1578 
1579     --Extend the object and start adding values
1580     l_user_attr_row_table.EXTEND();
1581 
1582     IF p_ext_attr_grp_tbl(i).operation = 'CREATE' THEN
1583       IF p_ext_attr_grp_tbl(i).attr_group_id IS NOT NULL THEN
1584 
1585         l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
1586 --        l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1587   --                                                           NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
1588 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1589                                                              NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
1590         --DBMS_OUTPUT.PUT_LINE('populated EGO_USER_ATTR_ROW_OBJ');
1591 
1592         l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
1593 
1594       ELSIF p_ext_attr_grp_tbl(i).attr_group_app_id IS NOT NULL AND
1595             p_ext_attr_grp_tbl(i).attr_group_type IS NOT NULL AND
1596             p_ext_attr_grp_tbl(i).attr_group_name IS NOT NULL THEN
1597 
1598 ---        l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1599    ---                                                          p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1600       ---                                                      'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
1601 
1602 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1603                                                              p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1604                                                             'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_CREATE_MODE);
1605         IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
1606           -- then need to derive that for passing to populate_sr_ext_attr_audit_rec to get the old audit record
1607           OPEN c_get_attr_grp_id (p_ext_attr_grp_tbl(i).attr_group_app_id
1608                                  ,p_ext_attr_grp_tbl(i).attr_group_type
1609                                  ,p_ext_attr_grp_tbl(i).attr_group_name);
1610           FETCH c_get_attr_grp_id INTO l_attr_group_id;
1611           CLOSE c_get_attr_grp_id;
1612         ELSE
1613           l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
1614         END IF;
1615       ELSE
1616         -- Raise Error
1617         --Attr Group Information is null
1618         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1619                                p_token_an	=> l_api_name_full
1620                               ,p_token_mp	=> 'ATTR_GROUP_ID');
1621         RAISE FND_API.G_EXC_ERROR;
1622       END IF;
1623 
1624       -- populate the new audit record for attr_group_id.
1625       l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
1626 
1627       --populate the row_identifier
1628       l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
1629 
1630       --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
1631 
1632       --make sure that you create a corrosponding record in the old audit record structure
1633       -- initialize the new audit rec count
1634 
1635       l_old_audit_count := l_old_Ext_Attr_Audit_table.COUNT + 1;
1636       l_old_Ext_Attr_Audit_table(l_old_audit_count) := null;
1637 
1638     ELSIF p_ext_attr_grp_tbl(i).operation = 'UPDATE' THEN
1639 
1640       --DBMS_OUTPUT.PUT_LINE('Operation is UPDATE');
1641 
1642       IF p_ext_attr_grp_tbl(i).attr_group_id IS NOT NULL THEN
1643 
1644         --DBMS_OUTPUT.PUT_LINE('Calling populate pr ext attr audit');
1645 
1646         l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
1647 
1648         --populate the audit record structure for the current record in the database
1649         populate_pr_ext_attr_audit_rec(
1650                   p_incident_id        => to_number(p_ext_attr_grp_tbl(i).pk_column_1)
1651                  ,p_party_id           => to_number(p_ext_attr_grp_tbl(i).pk_column_2)
1652                  ,p_contact_type       => p_ext_attr_grp_tbl(i).pk_column_3
1653                  ,p_party_role_code    => p_ext_attr_grp_tbl(i).pk_column_4
1654                  ,p_context            => p_ext_attr_grp_tbl(i).context
1655                  ,p_attr_group_id      => p_ext_attr_grp_tbl(i).attr_group_id
1656                  ,p_row_id             => p_ext_attr_grp_tbl(i).row_identifier
1657                  ,p_ext_attr_tbl       => p_ext_attr_tbl
1658                  ,p_sr_audit_rec_table => l_old_Ext_Attr_Audit_table
1659                  ,x_rec_found          => l_rec_found
1660              );
1661 
1662 
1663         --DBMS_OUTPUT.PUT_LINE(' l_rec_found'||l_rec_found);
1664 
1665         IF l_rec_found = 'N' THEN
1666           -- call check_sr_context_change to check if context has changed during the update
1667           -- operation
1668           -- Raise error
1669           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_PR_EXT_ATTR_WARN');
1670           FND_MSG_PUB.Add;
1671           RAISE FND_API.G_EXC_ERROR;
1672 
1673         ELSE
1674           --treat this record as a 'UPDATE'
1675 --          l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1676   --                                                             NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1677 
1678 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1679                                                              NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1680         END IF;
1681 
1682 
1683         --DBMS_OUTPUT.PUT_LINE('audit attr value is'||l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id);
1684 
1685       ELSIF p_ext_attr_grp_tbl(i).attr_group_app_id IS NOT NULL AND
1686             p_ext_attr_grp_tbl(i).attr_group_type IS NOT NULL AND
1687             p_ext_attr_grp_tbl(i).attr_group_name IS NOT NULL THEN
1688 
1689 
1690         -- then need to derive that for passing to populate_sr_ext_attr_audit_rec to get the old audit record
1691         IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
1692           OPEN c_get_attr_grp_id (p_ext_attr_grp_tbl(i).attr_group_app_id
1693                                  ,p_ext_attr_grp_tbl(i).attr_group_type
1694                                  ,p_ext_attr_grp_tbl(i).attr_group_name);
1695           FETCH c_get_attr_grp_id INTO l_attr_group_id;
1696           CLOSE c_get_attr_grp_id;
1697         ELSE
1698           l_attr_group_id := p_ext_attr_grp_tbl(i).attr_group_id;
1699         END IF;
1700 
1701 
1702         --populate the audit record structure for the current record in the database
1703         populate_pr_ext_attr_audit_rec(
1704                   p_incident_id        => to_number(p_ext_attr_grp_tbl(i).pk_column_1)
1705                  ,p_party_id           => to_number(p_ext_attr_grp_tbl(i).pk_column_2)
1706                  ,p_contact_type       => p_ext_attr_grp_tbl(i).pk_column_3
1707                  ,p_party_role_code    => p_ext_attr_grp_tbl(i).pk_column_4
1708                  ,p_context            => p_ext_attr_grp_tbl(i).context
1709                  ,p_attr_group_id      => p_ext_attr_grp_tbl(i).attr_group_id
1710                  ,p_row_id             => p_ext_attr_grp_tbl(i).row_identifier
1711                  ,p_ext_attr_tbl       => p_ext_attr_tbl
1712                  ,p_sr_audit_rec_table => l_old_Ext_Attr_Audit_table
1713                  ,x_rec_found          => l_rec_found
1714              );
1715 
1716         IF l_rec_found = 'N' THEN
1717                 -- call check_sr_context_change to check if context has changed during the update
1718                 -- operation
1719                 -- Raise error
1720           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_PR_EXT_ATTR_WARN');
1721           FND_MSG_PUB.Add;
1722           RAISE FND_API.G_EXC_ERROR;
1723 
1724         ELSE
1725           --treat this record as a 'UPDATE'
1726 --          l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1727   --                                                             p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1728     --                                                          'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1729 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,NULL,
1730                                                                p_ext_attr_grp_tbl(i).attr_group_app_id,p_ext_attr_grp_tbl(i).attr_group_type,p_ext_attr_grp_tbl(i).attr_group_name,
1731                                                      'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_UPDATE_MODE);
1732         END IF;
1733 
1734       ELSE
1735         -- Raise Error
1736         -- MAYA NEED TO ADD
1737         --Attr Group Information is null
1738         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1739                                p_token_an	=> l_api_name_full
1740                               ,p_token_mp	=> 'ATTR_GROUP_ID');
1741         RAISE FND_API.G_EXC_ERROR;
1742       END IF;
1743 
1744        -- populate the new audit record for attr_group_id.
1745         l_new_Ext_Attr_Audit_table(l_new_audit_count).attr_group_id := l_attr_group_id;
1746 
1747         --populate the row_identifier
1748         l_new_Ext_Attr_Audit_table(l_new_audit_count).row_identifier := p_ext_attr_grp_tbl(i).row_identifier;
1749 
1750     ELSIF p_ext_attr_grp_tbl(i).operation = 'DELETE' THEN
1751 
1752       -- 5230517
1753       IF p_ext_attr_grp_tbl(i).attr_group_id IS NULL THEN
1754         CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
1755                                p_token_an	=> l_api_name_full
1756                               ,p_token_mp	=> 'ATTR_GROUP_ID');
1757         RAISE FND_API.G_EXC_ERROR;
1758 
1759       END IF;
1760       -- 5230517_eof
1761 
1762       --check to see if the row being deleted really exists
1763       l_valid_check := IS_ROW_VALID(p_incident_id   => p_ext_attr_grp_tbl(i).pk_column_1
1764                                    ,p_context       => p_ext_attr_grp_tbl(i).context
1765                                    ,p_attr_group_id => p_ext_attr_grp_tbl(i).attr_group_id
1766                                    ,x_msg_data      => l_msg_data
1767                                    ,x_msg_count     => l_msg_count
1768                                    ,x_return_status => l_return_status);
1769 
1770       IF l_return_status = G_RET_STS_UNEXP_ERROR THEN
1771         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1772       ELSIF l_return_status = G_RET_STS_ERROR THEN
1773         RAISE FND_API.G_EXC_ERROR;
1774       END IF;
1775 
1776       IF l_valid_check = 'Y' THEN
1777 --        l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1778   --                                                             NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1779 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(p_ext_attr_grp_tbl(i).row_identifier,p_ext_attr_grp_tbl(i).attr_group_id,
1780                                                        NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
1781 
1782     -- 5230517 => should not eat the exception. Do nothing and let PLM throw exception.
1783     /*
1784       ELSE
1785         x_return_status := FND_API.G_RET_STS_SUCCESS;
1786         RETURN;
1787      */
1788 
1789       END IF;
1790     END IF;
1791 
1792     --DBMS_OUTPUT.PUT_LINE('Attr validation');
1793 
1794     --pass the entire attribute data to a local table which can be used for manipulation
1795     l_ext_attr_tbl := p_ext_attr_tbl;
1796 
1797     IF p_ext_attr_grp_tbl(i).mapping_req = 'Y' THEN
1798       --need to get the metadata definition dor attributes defined for attribute group
1799       --Call Procedure Get_Attr_Group_Metadata
1800 
1801       --DBMS_OUTPUT.PUT_LINE('Calling Attr Grp Metadata');
1802       Get_Attr_Group_Metadata(
1803                      p_attr_group_id   => p_ext_attr_grp_tbl(i).attr_group_id
1804                     ,x_application_id  => l_application_id
1805                     ,x_attr_group_type => l_attr_group_type
1806                     ,x_attr_group_name => l_attr_group_name);
1807 
1808       IF l_application_id IS NOT NULL AND
1809          l_attr_group_type IS NOT NULL AND
1810          l_attr_group_name IS NOT NULL THEN
1811 
1812         --get the Attribute Metadata defined for this Attribute Group.
1813 	Get_Attr_Metadata(
1814                  p_row_identifier  => p_ext_attr_grp_tbl(i).row_identifier
1815                 ,p_application_id  => l_application_id
1816                 ,p_attr_group_type => l_attr_group_type
1817                 ,p_attr_group_name => l_attr_group_name
1818                 ,p_ext_attr_tbl    => l_ext_attr_tbl
1819                 );
1820 
1821       END IF; -- end if of l_application_id IS NULL ..
1822 
1823     END IF; -- end if of IF p_ext_attr_grp_tbl(i).mapping_req = 'Y'
1824 
1825 
1826     --Get the attributes relevant to the attribute group and prepare to pass it to PLM
1827     -- Instanciate a new EGO_USER_ATTR_DATA_TABLE or clear out the existing one --
1828     IF p_ext_attr_grp_tbl(i).context <> l_old_context  AND
1829       l_old_context IS NOT NULL THEN
1830       IF (l_user_attr_data_table IS NULL) THEN
1831         l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1832       ELSE
1833         l_user_attr_data_table.DELETE();
1834       END IF;
1835     ELSE
1836       IF (l_user_attr_data_table IS NULL) THEN
1837         l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
1838       END IF;
1839     END IF;
1840 
1841     --DBMS_OUTPUT.PUT_LINE('Instanciated AAttr object');
1842 
1843     FOR j IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST
1844     LOOP
1845       IF p_ext_attr_grp_tbl(i).row_identifier = l_ext_attr_tbl(j).row_identifier THEN
1846         l_user_attr_data_table.EXTEND();
1847         l_user_attr_data_table(l_user_attr_data_table.LAST) := EGO_USER_ATTR_DATA_OBJ(l_ext_attr_tbl(j).row_identifier, l_ext_attr_tbl(j).attr_name,
1848                                                                l_ext_attr_tbl(j).attr_value_str,l_ext_attr_tbl(j).attr_value_num,
1849                                                                l_ext_attr_tbl(j).attr_value_date,
1850                                                                l_ext_attr_tbl(j).ATTR_VALUE_DISPLAY, NULL, NULL);
1851 
1852         --DBMS_OUTPUT.PUT_LINE('populated EGO_USER_ATTR_DATA_OBJ');
1853       END IF;
1854 
1855     END LOOP;
1856 
1857     --set the old context
1858     l_old_context := p_ext_attr_grp_tbl(i).context;
1859 
1860     --DBMS_OUTPUT.PUT_LINE('Old context'||l_old_context);
1861 
1862     IF i = l_count THEN
1863       --DBMS_OUTPUT.PUT_LINE('i in l_count');
1864       --on last record
1865       EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data(
1866                               p_api_version                   => 1
1867                              ,p_object_name                   => 'CS_PARTY_ROLE'
1868                              ,p_attributes_row_table          => l_user_attr_row_table
1869                              ,p_attributes_data_table         => l_user_attr_data_table
1870                              ,p_pk_column_name_value_pairs    => l_pk_name_value_pair
1871                              ,p_class_code_name_value_pairs   => l_class_code_name_value_pairs
1872                              ,p_user_privileges_on_object     => l_user_privileges_on_object
1873                              ,p_entity_id                     =>  NULL
1874                              ,p_entity_index                  =>  NULL
1875                              ,p_entity_code                   =>  NULL
1876                              ,p_debug_level                   =>  0
1877                              ,p_init_error_handler            =>  FND_API.G_TRUE
1878                              ,p_write_to_concurrent_log       =>  FND_API.G_TRUE
1879                              ,p_init_fnd_msg_list             =>  FND_API.G_FALSE
1880                              ,p_log_errors                    =>  FND_API.G_TRUE
1881                              ,p_add_errors_to_fnd_stack       =>  FND_API.G_TRUE
1882                              ,p_commit                        =>  FND_API.G_FALSE
1883                              ,x_failed_row_id_list            => x_failed_row_id_list
1884                              ,x_return_status                 => x_return_status
1885                              ,x_errorcode                     => x_errorcode
1886                              ,x_msg_count                     => x_msg_count
1887                              ,x_msg_data                      => x_msg_data );
1888 
1889       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1890         FND_MESSAGE.Set_Name('CS', 'CS_API_PROC_SR_EXT_ATTR_WARN');
1891         FND_MSG_PUB.Add;
1892         RAISE FND_API.G_EXC_ERROR;
1893       END IF;
1894 
1895 
1896     -- Fix bug 5230517
1897      -- Audit only in CREATE and UPDATE operations
1898      IF p_ext_attr_grp_tbl(i).operation <> 'DELETE' THEN
1899       For i IN 1..l_new_Ext_Attr_Audit_table.COUNT LOOP
1900         populate_pr_ext_attr_audit_rec(
1901                          p_incident_id        => to_number(l_new_Ext_Attr_Audit_table(i).pk_column_1)
1902                         ,p_party_id           => to_number(l_new_Ext_Attr_Audit_table(i).pk_column_2)
1903                         ,p_contact_type       => l_new_Ext_Attr_Audit_table(i).pk_column_3
1904                         ,p_party_role_code    => l_new_Ext_Attr_Audit_table(i).pk_column_4
1905                         ,p_context            => l_new_Ext_Attr_Audit_table(i).context
1906                         ,p_attr_group_id      => l_new_Ext_Attr_Audit_table(i).attr_group_id
1907                         ,p_row_id             => l_new_Ext_Attr_Audit_table(i).row_identifier
1908                         ,p_ext_attr_tbl       => p_ext_attr_tbl
1909                         ,p_sr_audit_rec_table => l_new_Ext_Attr_Audit_table
1910                         ,x_rec_found          => l_rec_found);
1911 
1912         IF l_rec_found = 'N' THEN
1913           --raise error
1914           FND_MESSAGE.Set_Name('CS', 'CS_API_POP_PR_EXT_ATTR_WARN');
1915           FND_MSG_PUB.Add;
1916           RAISE FND_API.G_EXC_ERROR;
1917         END IF;
1918       END LOOP;
1919 
1920       --DBMS_OUTPUT.PUT_LINE('populated PR');
1921       --DBMS_OUTPUT.PUT_LINE('l_new_Ext_Attr_Audit_table'||l_new_Ext_Attr_Audit_table.COUNT);
1922 
1923       --call the create audit procedure
1924       Create_Ext_Attr_Audit(
1925                      P_SR_EA_new_Audit_rec_table    => l_new_Ext_Attr_Audit_table
1926                     ,P_SR_EA_old_Audit_rec_table    => l_old_Ext_Attr_Audit_table
1927                     ,p_object_name                  => 'CS_PARTY_ROLE'
1928                     ,p_modified_by                  => p_modified_by
1929                     ,p_modified_on                  => p_modified_on
1930                     ,x_return_status                => x_return_status
1931                     ,x_msg_count                    => x_msg_count
1932                     ,x_msg_data                     => x_msg_data);
1933 
1934             --DBMS_OUTPUT.PUT_LINE('after calling Create_Ext_Attr_Audit');
1935      END IF; -- bug fix 5230517_eof
1936     END IF;  -- l_count_if_eof
1937 
1938     --5230846
1939    ELSE -- if not CS_SERVICE_REQUEST and CS_PARTY_ROLE
1940         CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
1941                                p_token_an => l_api_name_full
1942                               ,p_token_v  => p_ext_attr_grp_tbl(i).object_name
1943                               ,p_token_p  => 'OBJECT_NAME');
1944         RAISE FND_API.G_EXC_ERROR;
1945    END IF; -- object name check eof
1946  END LOOP;
1947 
1948 ELSE
1949 
1950   --DBMS_OUTPUT.PUT_LINE('returning');
1951   RETURN;
1952 
1953 END IF;
1954 IF FND_API.To_Boolean(p_commit)
1955  THEN
1956   COMMIT WORK;
1957 END IF;
1958 
1959 EXCEPTION
1960 
1961   WHEN FND_API.G_EXC_ERROR THEN
1962     ROLLBACK TO CS_EXTENSIBILITY_PVT;
1963     x_return_status := FND_API.G_RET_STS_ERROR;
1964     FND_MSG_PUB.Count_And_Get
1965       ( p_count => x_msg_count,
1966         p_data  => x_msg_data
1967       );
1968   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1969     ROLLBACK TO CS_EXTENSIBILITY_PVT;
1970     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1971     FND_MSG_PUB.Count_And_Get
1972       ( p_count => x_msg_count,
1973         p_data  => x_msg_data
1974       );
1975   WHEN OTHERS THEN
1976     ROLLBACK TO CS_EXTENSIBILITY_PVT;
1977     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1978     IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1979       FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
1980     END IF;
1981     FND_MSG_PUB.Count_And_Get
1982       ( p_count => x_msg_count,
1983         p_data  => x_msg_data
1984       );
1985 
1986 END Process_SR_Ext_Attrs;
1987 
1988 
1989 PROCEDURE Get_Attr_Group_Metadata (
1990         p_attr_group_id                 IN          NUMBER
1991        ,x_application_id                OUT NOCOPY  NUMBER
1992        ,x_attr_group_type               OUT NOCOPY  VARCHAR2
1993        ,x_attr_group_name               OUT NOCOPY  VARCHAR2
1994 )IS
1995 Cursor c_get_attr_group_cur(p_attr_group_id IN NUMBER) IS
1996 select application_id,
1997        attr_group_type,
1998        attr_group_name
1999   from ego_attr_groups_v
2000  where attr_group_id = p_attr_group_id;
2001 
2002 BEGIN
2003 
2004 OPEN  c_get_attr_group_cur(p_attr_group_id);
2005 FETCH c_get_attr_group_cur INTO x_application_id, x_attr_group_type,x_attr_group_name ;
2006 CLOSE c_get_attr_group_cur;
2007 
2008 EXCEPTION
2009 
2010       WHEN OTHERS THEN
2011         null;
2012         --FND_MESSAGE.SET_NAME(G_APP_NAME);
2013         --FND_MESSAGE.SET_TOKEN(token => G_PROC_NAME_TOKEN, value => l_prog_name);
2014         --FND_MESSAGE.SET_TOKEN(token => G_SQLCODE_TOKEN, value => SQLCODE);
2015         --FND_MESSAGE.SET_TOKEN(token => G_SQLERRM_TOKEN, value => SQLERRM);
2016         --FND_MSG_PUB.add;
2017 
2018 END Get_Attr_Group_Metadata;
2019 
2020 PROCEDURE Get_Attr_Metadata (
2021         p_row_identifier                IN          NUMBER
2022        ,p_application_id                IN          NUMBER
2023        ,p_attr_group_type               IN          VARCHAR2
2024        ,p_attr_group_name               IN          VARCHAR2
2025        ,p_ext_attr_tbl                  IN  OUT     NOCOPY  CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE) IS
2026 
2027 CURSOR c_get_attr_cur IS
2028 SELECT  database_column, attr_name
2029   FROM  ego_attrs_v
2030  WHERE  application_id  = p_application_id
2031    AND  attr_group_type = p_attr_group_type
2032    AND  attr_group_name = p_attr_group_name;
2033 
2034 TYPE attr_rec_type IS RECORD (database_column VARCHAR2(30), attr_name VARCHAR2(30));
2035 TYPE attr_tbl_type IS TABLE OF attr_rec_type INDEX BY BINARY_INTEGER;
2036 l_attr_tbl attr_tbl_type;
2037 
2038 i           BINARY_INTEGER := 0;
2039 
2040 BEGIN
2041 
2042 IF p_ext_attr_tbl.COUNT = 0 THEN
2043   --DBMS_OUTPUT.PUT_LINE('NO ROWS FOUND IN EXT ATTR TABLE');
2044   -- RAISE ERROR;
2045   null;
2046 END IF;
2047 
2048 FOR l_attr_rec IN c_get_attr_cur LOOP
2049   l_attr_tbl(i).database_column := l_attr_rec.database_column;
2050   l_attr_tbl(i).attr_name       := l_attr_rec.attr_name;
2051   i := i + 1;
2052 END LOOP;
2053 
2054 FOR i IN p_ext_attr_tbl.FIRST .. p_ext_attr_tbl.LAST LOOP
2055 
2056   IF p_ext_attr_tbl.EXISTS(i) THEN
2057 
2058     IF p_ext_attr_tbl(i).row_identifier = p_row_identifier THEN
2059 
2060       IF p_ext_attr_tbl(i).column_name IS NULL THEN
2061         --DBMS_OUTPUT.PUT_LINE('COLUMN_NAME value not specified in P_EXT_ATTR_TBL row '||i);
2062         --raise error
2063         null;
2064       ELSE
2065 
2066         FOR j IN l_attr_tbl.FIRST .. l_attr_tbl.LAST LOOP
2067 
2068           IF l_attr_tbl(j).database_column = p_ext_attr_tbl(i).column_name THEN
2069 
2070             p_ext_attr_tbl(i).attr_name  := l_attr_tbl(j).attr_name;
2071             EXIT;
2072           END IF;
2073         END LOOP;
2074       END IF;
2075     END IF;
2076   END IF;
2077   END LOOP;
2078 END Get_Attr_Metadata;
2079 
2080 
2081 PROCEDURE populate_pr_ext_attr_audit_rec(
2082           p_incident_id        IN NUMBER
2083          ,p_party_id           IN NUMBER
2084          ,p_contact_type       IN VARCHAR2
2085          ,p_party_role_code    IN VARCHAR2
2086          ,p_context            IN VARCHAR2
2087          ,p_attr_group_id      IN NUMBER
2088          ,p_row_id             IN NUMBER
2089          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
2090          ,p_sr_audit_rec_table IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type
2091          ,x_rec_found      OUT NOCOPY VARCHAR2
2092          ) IS
2093 
2094 
2095 Cursor c_get_ext_attr_db_rec IS
2096 select * from cs_sr_contacts_ext
2097 where incident_id = p_incident_id
2098   and party_id = p_party_id
2099   and contact_type = p_contact_type
2100   and party_role_code = p_party_role_code
2101   and context = p_context
2102   and attr_group_id  = p_attr_group_id;
2103 
2104 Cursor c_is_multi_row IS
2105 select multi_row_code
2106   from ego_attr_groups_v
2107  where attr_group_id = p_attr_group_id;
2108 
2109 Cursor c_get_unique_key (p_application_id IN NUMBER,
2110                          p_attr_group_name IN VARCHAR2,
2111                          p_attr_group_type IN VARCHAR2
2112                          ) IS
2113 select attr_name, database_column
2114   from ego_attrs_v
2115 where attr_group_name = p_attr_group_name
2116   and attr_group_type = p_attr_group_type
2117   and application_id =  p_application_id
2118   and unique_key_flag = 'Y';
2119 
2120 
2121 i NUMBER := 0;
2122 l_old_Ext_Attr_Audit_Tbl  Ext_Attr_Audit_Tbl_Type;
2123 l_multi_row_code VARCHAR2(1);
2124 l_attribute_name VARCHAR2(30);
2125 l_database_column_name VARCHAR2(30);
2126 l_application_id NUMBER;
2127 l_attr_group_type VARCHAR2(30);
2128 l_attr_group_name VARCHAR2(80);
2129 l_unique_value_str VARCHAR2(4000);
2130 L_unique_value_num NUMBER;
2131 l_unique_value_date DATE;
2132 l_unique_value_uom VARCHAR2(3);
2133 
2134 l_sql VARCHAR2(4000);
2135 g_newline varchar2(8) := fnd_global.newline;
2136 l_cs_sr_contacts_ext_rec cs_sr_contacts_ext%ROWTYPE;
2137 
2138 
2139 v_get_ext_attr_db_rec c_get_ext_attr_db_rec%ROWTYPE;
2140 
2141 l_count NUMBER := 0;
2142 
2143 l_create_new_record VARCHAR2(1) := 'N';
2144 l_audit_table_empty VARCHAR2(1) := 'N';
2145 
2146 p_col_1 NUMBER        := p_incident_id;
2147 p_col_2 NUMBER        := p_party_id;
2148 p_col_3 VARCHAR2(50)  := p_contact_type;
2149 p_col_4 VARCHAR2(50)  := p_party_role_code;
2150 p_col_5 VARCHAR2(30)  := p_context;
2151 p_col_6 NUMBER        := p_attr_group_id;
2152 p_col_7 VARCHAR2(150);
2153 p_use_col7_flag VARCHAR2(1) := 'N';
2154 
2155 
2156 BEGIN
2157 
2158 --get the correct count of the records in the audit table
2159 --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT);
2160 
2161 l_count := p_sr_audit_rec_table.COUNT;
2162 
2163 IF p_attr_group_id IS NOT NULL AND
2164   p_incident_id IS NOT NULL AND
2165   p_party_id IS NOT NULL AND
2166   p_contact_type IS NOT NULL AND
2167   p_party_role_code IS NOT NULL AND
2168   p_context IS NOT NULL THEN
2169 
2170   --DBMS_OUTPUT.PUT_LINE('All parameters passed');
2171 
2172   --check if attribute group is multi_row_enabled
2173   OPEN c_is_multi_row;
2174   FETCH c_is_multi_row INTO l_multi_row_code;
2175   CLOSE c_is_multi_row;
2176 
2177   --DBMS_OUTPUT.PUT_LINE('Multi-Row flag is :'||l_multi_row_code); --executed
2178 
2179   IF l_multi_row_code = 'Y' then
2180 
2181     --DBMS_OUTPUT.PUT_LINE('In Multi-Row of PR');
2182 
2183     -- first get the attribute_group_name, attribute_group_type and application_id
2184     -- for this attribute_group_id
2185     Get_Attr_Group_Metadata (
2186               p_attr_group_id                => p_attr_group_id
2187              ,x_application_id               => l_application_id
2188              ,x_attr_group_type              => l_attr_group_type
2189              ,x_attr_group_name              => l_attr_group_name
2190               );
2191 
2192     --DBMS_OUTPUT.PUT_LINE('l_application_id'||l_application_id);
2193     --DBMS_OUTPUT.PUT_LINE('l_attr_group_type'||l_attr_group_type);
2194     --DBMS_OUTPUT.PUT_LINE('l_attr_group_name'||l_attr_group_name);
2195 
2196     IF l_application_id IS NOT NULL AND
2197       l_attr_group_type IS NOT NULL AND
2198       l_attr_group_name IS NOT NULL THEN
2199 
2200       --DBMS_OUTPUT.PUT_LINE('Trikey is not null');
2201       --DBMS_OUTPUT.PUT_LINE('calling unique key logic');
2202 
2203       --get the unique attribute maintained for this multi-row attribute group
2204       OPEN c_get_unique_key (l_application_id
2205                             ,l_attr_group_name
2206                             ,l_attr_group_type);
2207       FETCH c_get_unique_key into l_attribute_name, l_database_column_name;
2208       CLOSE c_get_unique_key;
2209 
2210       --DBMS_OUTPUT.PUT_LINE('l_attribute_name'||l_attribute_name);
2211       --DBMS_OUTPUT.PUT_LINE('l_database_column_name'||l_database_column_name);
2212 
2213       IF l_attribute_name IS NOT NULL THEN
2214 
2215         --DBMS_OUTPUT.PUT_LINE('l_attribute_name is not null');
2216 
2217         --traverse through the p_ext_attr_tbl and
2218         --get the value for the unique attribute group
2219         --this code assumes that the unique attribute is non-updateable
2220         --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl.COUNT'||p_ext_attr_tbl.COUNT);
2221 
2222         FOR i IN 1..p_ext_attr_tbl.COUNT LOOP
2223 
2224           --DBMS_OUTPUT.PUT_LINE('row_identifier'||p_row_id);
2225           --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl(i).row_identifier'||p_ext_attr_tbl(i).row_identifier);
2226 
2227           --DBMS_OUTPUT.PUT_LINE('l_attribute_name'||l_attribute_name);
2228           --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl(i).attr_name'||p_ext_attr_tbl(i).attr_name);
2229 
2230           --DBMS_OUTPUT.PUT_LINE('column_name'||l_database_column_name);
2231           --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl(i).column_name'||p_ext_attr_tbl(i).column_name);
2232 
2233 
2234           IF p_ext_attr_tbl(i).row_identifier = p_row_id AND
2235              p_ext_attr_tbl(i).attr_name = l_attribute_name OR
2236              p_ext_attr_tbl(i).column_name = l_database_column_name THEN
2237              --match found
2238              --get the unique value.  However the unique value may be a string
2239              --date, character, or uom so we have to check all possible combinations.
2240             --DBMS_OUTPUT.PUT_LINE('attr_value_str' || p_ext_attr_tbl(i).attr_value_str);
2241             --DBMS_OUTPUT.PUT_LINE('attr_value_num' || p_ext_attr_tbl(i).attr_value_num);
2242             --DBMS_OUTPUT.PUT_LINE('finding the unique attr');
2243 
2244             l_sql := 'SELECT * FROM CS_SR_CONTACTS_EXT WHERE INCIDENT_ID = :p_col_1';
2245             l_sql := l_sql||g_newline ||'AND PARTY_ID = :p_col_2';
2246             l_sql := l_sql||g_newline||'AND CONTACT_TYPE = :p_col_3';
2247             l_sql := l_sql||g_newline||'AND PARTY_ROLE_CODE = :p_col4';
2248             l_sql := l_sql||g_newline||'AND CONTEXT = :p_col_5';
2249             l_sql := l_sql||g_newline||' AND ATTR_GROUP_ID = :p_col_6';
2250 
2251             --DBMS_OUTPUT.PUT_LINE('l_sql'||l_sql);
2252 
2253             p_use_col7_flag :='N';
2254 
2255             IF p_ext_attr_tbl(i).attr_value_str IS NOT NULL Then
2256               --unique value is a string
2257               l_unique_value_str := p_ext_attr_tbl(i).attr_value_str;
2258               --dynamically build a cusrsor and get value from the database;
2259               --assisgn the value to the record structure
2260 
2261                l_sql := l_sql||g_newline;
2262 			l_sql := l_sql||g_newline ||' AND '||l_database_column_name||' = :p_col7';
2263 			p_col_7 := l_unique_value_str;
2264 			p_use_col7_flag := 'Y';
2265 
2266 --             l_sql := l_sql||' and '||l_database_column_name||' = '||l_unique_value_str;
2267 
2268             ELSIF p_ext_attr_tbl(i).attr_value_num IS NOT NULL Then
2269               l_unique_value_num := p_ext_attr_tbl(i).attr_value_num;
2270               --dynamically build a cusrsor and get value from the database;
2271               --assisgn the value to the record structure
2272 
2273               --DBMS_OUTPUT.PUT_LINE('attr_value_num is not null');
2274               --DBMS_OUTPUT.PUT_LINE('l_database_column_name'||l_database_column_name);
2275               --DBMS_OUTPUT.PUT_LINE('l_unique_value_num'||l_unique_value_num);
2276 
2277               l_sql := l_sql||g_newline;
2278 		    l_sql := l_sql||' AND '||l_database_column_name||' = '||' = :p_col7';
2279               p_col_7 := l_unique_value_num;
2280               p_use_col7_flag := 'Y';
2281 
2282 --              l_sql := l_sql||' and '||l_database_column_name||' = '||l_unique_value_num;
2283 
2284             ELSIF p_ext_attr_tbl(i).attr_value_date IS NOT NULL Then
2285               l_unique_value_date := p_ext_attr_tbl(i).attr_value_date;
2286 
2287 		     l_sql := l_sql||g_newline;
2288                l_sql := l_sql||' AND '||l_database_column_name||' = '||' = :p_col7';
2289                p_col_7 := l_unique_value_date;
2290                p_use_col7_flag := 'Y';
2291 
2292 --              l_sql := l_sql||' and '||l_database_column_name||' = '||l_unique_value_date;
2293             ELSE
2294               IF p_ext_attr_tbl(i).attr_unit_of_measure IS NOT NULL then
2295                 l_unique_value_uom := p_ext_attr_tbl(i).attr_unit_of_measure;
2296 
2297                 l_sql := l_sql||g_newline;
2298 		 	 l_sql := l_sql||' AND '||l_database_column_name||' = '||' = :p_col7';
2299 		 	 p_col_7 := l_unique_value_uom;
2300 			 p_use_col7_flag := 'Y';
2301 
2302 --                l_sql := l_sql||' and '||l_database_column_name||' = '||l_unique_value_uom;
2303               END IF;
2304             END IF;
2305             EXIT;
2306           END IF; -- end if of row_identifier, l_attribute_name, l_database_name not null
2307         END LOOP;-- end of loop
2308 
2309         BEGIN
2310 
2311 	     IF p_use_col7_flag ='Y' THEN
2312 		   EXECUTE IMMEDIATE l_sql INTO l_cs_sr_contacts_ext_rec
2313 		           USING p_col_1, p_col_2, p_col_3, p_col_4, p_col_5, p_col_6,p_col_7;
2314 		ELSE
2315              EXECUTE IMMEDIATE l_sql INTO l_cs_sr_contacts_ext_rec
2316 		           USING p_col_1, p_col_2, p_col_3, p_col_4, p_col_5, p_col_6;
2317 		END IF;
2318 
2319         EXCEPTION
2320           WHEN NO_DATA_FOUND THEN
2321             x_rec_found := 'N';
2322         END;
2323 
2324         --Check l_cs_sr_contacts_ext_rec if record exists
2325         --DBMS_OUTPUT.PUT_LINE('populated the sql');
2326         --DBMS_OUTPUT.PUT_LINE('Extension_Id '||l_cs_sr_contacts_ext_rec.extension_id);
2327 
2328         IF l_cs_sr_contacts_ext_rec.extension_id IS NOT NULL THEN
2329           -- Record exists
2330           x_rec_found := 'Y';
2331           -- pass the value from the cursor variable to the audit table
2332           -- pass the value from the cursor variable to the l_old_Ext_Attr_Audit_Rec table
2333           --DBMS_OUTPUT.PUT_LINE('Record Exists');
2334 
2335           -- loop through the audit table passed in and see if you can find the record
2336           -- this is for a 'CREATE' situation
2337 
2338           --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT);
2339 
2340           IF p_sr_audit_rec_table.COUNT > 0 THEN
2341 
2342             --DBMS_OUTPUT.PUT_LINE('In loooop');
2343             FOR i IN 1.. p_sr_audit_rec_table.COUNT LOOP
2344               IF p_sr_audit_rec_table(i).pk_column_1 = p_incident_id AND
2345                  p_sr_audit_rec_table(i).pk_column_2 = p_party_id AND
2346                  p_sr_audit_rec_table(i).pk_column_3 = p_contact_type AND
2347                  p_sr_audit_rec_table(i).pk_column_4 = p_party_role_code AND
2348                  p_sr_audit_rec_table(i).context = p_context AND
2349                  p_sr_audit_rec_table(i).attr_group_id = p_attr_group_id AND
2350                  p_sr_audit_rec_table(i).row_identifier = p_row_id THEN
2351 
2352                 IF p_sr_audit_rec_table(i).extension_id IS NULL THEN
2353                   l_create_new_record := 'N';
2354                   --DBMS_OUTPUT.PUT_LINE('l_create_new_record'||l_create_new_record);
2355                   --DBMS_OUTPUT.PUT_LINE('Match found for audit record');
2356 
2357                   p_sr_audit_rec_table(i).extension_id      := l_cs_sr_contacts_ext_rec.extension_id;
2358                   p_sr_audit_rec_table(i).pk_column_1       := p_incident_id;
2359                   p_sr_audit_rec_table(i).pk_column_2       := p_party_id;
2360                   p_sr_audit_rec_table(i).pk_column_3       := p_contact_type;
2361                   p_sr_audit_rec_table(i).pk_column_4       := p_party_role_code;
2362                   p_sr_audit_rec_table(i).pk_column_5       := null;
2363                   p_sr_audit_rec_table(i).CONTEXT           := p_context;
2364                   p_sr_audit_rec_table(i).ATTR_GROUP_ID     := p_attr_group_id;
2365                   p_sr_audit_rec_table(i).C_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR1;
2366                   p_sr_audit_rec_table(i).C_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR2;
2367                   p_sr_audit_rec_table(i).C_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR3;
2368                   p_sr_audit_rec_table(i).C_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR4;
2369                   p_sr_audit_rec_table(i).C_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR5;
2370                   p_sr_audit_rec_table(i).C_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR6;
2371                   p_sr_audit_rec_table(i).C_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR7;
2372                   p_sr_audit_rec_table(i).C_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR8;
2373                   p_sr_audit_rec_table(i).C_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR9;
2374                   p_sr_audit_rec_table(i).C_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR10;
2375                   p_sr_audit_rec_table(i).C_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR11;
2376                   p_sr_audit_rec_table(i).C_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR12;
2377                   p_sr_audit_rec_table(i).C_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR13;
2378                   p_sr_audit_rec_table(i).C_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR14;
2379                   p_sr_audit_rec_table(i).C_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR15;
2380                   p_sr_audit_rec_table(i).C_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR16;
2381                   p_sr_audit_rec_table(i).C_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR17;
2382                   p_sr_audit_rec_table(i).C_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR18;
2383                   p_sr_audit_rec_table(i).C_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR19;                           p_sr_audit_rec_table(i).C_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR20;
2384                   p_sr_audit_rec_table(i).C_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR21;
2385                   p_sr_audit_rec_table(i).C_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR22;
2386                   p_sr_audit_rec_table(i).C_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR23;
2387                   p_sr_audit_rec_table(i).C_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR24;
2388                   p_sr_audit_rec_table(i).C_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR25;
2389                   p_sr_audit_rec_table(i).C_EXT_ATTR26      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR26;
2390                   p_sr_audit_rec_table(i).C_EXT_ATTR27      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR27;
2391                   p_sr_audit_rec_table(i).C_EXT_ATTR28      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR28;
2392                   p_sr_audit_rec_table(i).C_EXT_ATTR29      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR29;
2393                   p_sr_audit_rec_table(i).C_EXT_ATTR30      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR30;
2394                   p_sr_audit_rec_table(i).C_EXT_ATTR31      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR31;
2395                   p_sr_audit_rec_table(i).C_EXT_ATTR32      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR32;
2396                   p_sr_audit_rec_table(i).C_EXT_ATTR33      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR33;
2397                   p_sr_audit_rec_table(i).C_EXT_ATTR34      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR34;
2398                   p_sr_audit_rec_table(i).C_EXT_ATTR35      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR35;
2399                   p_sr_audit_rec_table(i).C_EXT_ATTR36      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR36;
2400                   p_sr_audit_rec_table(i).C_EXT_ATTR37      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR37;
2401                   p_sr_audit_rec_table(i).C_EXT_ATTR38      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR38;
2402                   p_sr_audit_rec_table(i).C_EXT_ATTR39      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR38;
2403                   p_sr_audit_rec_table(i).C_EXT_ATTR40      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR40;
2404                   p_sr_audit_rec_table(i).C_EXT_ATTR41      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR41;
2405                   p_sr_audit_rec_table(i).C_EXT_ATTR42      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR42;
2406                   p_sr_audit_rec_table(i).C_EXT_ATTR43      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR43;
2407                   p_sr_audit_rec_table(i).C_EXT_ATTR44      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR44;
2408                   p_sr_audit_rec_table(i).C_EXT_ATTR45      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR45;
2409                   p_sr_audit_rec_table(i).C_EXT_ATTR46      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR46;
2410                   p_sr_audit_rec_table(i).C_EXT_ATTR47      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR47;
2411                   p_sr_audit_rec_table(i).C_EXT_ATTR48      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR48;
2412                   p_sr_audit_rec_table(i).C_EXT_ATTR49      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR49;
2413                   p_sr_audit_rec_table(i).C_EXT_ATTR50      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR50;
2414                   p_sr_audit_rec_table(i).N_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR1;
2415                   p_sr_audit_rec_table(i).N_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR2;
2416                   p_sr_audit_rec_table(i).N_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR3;
2417                   p_sr_audit_rec_table(i).N_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR4;
2418                   p_sr_audit_rec_table(i).N_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR5;
2419                   p_sr_audit_rec_table(i).N_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR6;
2420                   p_sr_audit_rec_table(i).N_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR7;
2421                   p_sr_audit_rec_table(i).N_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR8;
2422                   p_sr_audit_rec_table(i).N_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR9;
2423                   p_sr_audit_rec_table(i).N_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR10;
2424                   p_sr_audit_rec_table(i).N_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR11;
2425                   p_sr_audit_rec_table(i).N_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR12;
2426                   p_sr_audit_rec_table(i).N_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR13;
2427                   p_sr_audit_rec_table(i).N_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR14;
2428                   p_sr_audit_rec_table(i).N_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR15;
2429                            p_sr_audit_rec_table(i).N_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR16;
2430                            p_sr_audit_rec_table(i).N_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR17;
2431                            p_sr_audit_rec_table(i).N_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR18;
2432                            p_sr_audit_rec_table(i).N_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR19;
2433                            p_sr_audit_rec_table(i).N_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR20;
2434                            p_sr_audit_rec_table(i).N_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR21;
2435                            p_sr_audit_rec_table(i).N_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR22;
2436                            p_sr_audit_rec_table(i).N_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR23;
2437                            p_sr_audit_rec_table(i).N_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR24;
2438                            p_sr_audit_rec_table(i).N_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR25;
2439                            p_sr_audit_rec_table(i).D_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR1;
2440                            p_sr_audit_rec_table(i).D_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR2;
2441                            p_sr_audit_rec_table(i).D_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR3;
2442                            p_sr_audit_rec_table(i).D_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR4;
2443                            p_sr_audit_rec_table(i).D_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR5;
2444                            p_sr_audit_rec_table(i).D_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR6;
2445                            p_sr_audit_rec_table(i).D_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR7;
2446                            p_sr_audit_rec_table(i).D_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR8;
2447                            p_sr_audit_rec_table(i).D_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR9;
2448                            p_sr_audit_rec_table(i).D_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR10;
2449                            p_sr_audit_rec_table(i).D_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR11;
2450                            p_sr_audit_rec_table(i).D_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR12;
2451                            p_sr_audit_rec_table(i).D_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR13;
2452                            p_sr_audit_rec_table(i).D_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR14;
2453                            p_sr_audit_rec_table(i).D_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR15;
2454                            p_sr_audit_rec_table(i).D_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR16;
2455                            p_sr_audit_rec_table(i).D_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR17;
2456                            p_sr_audit_rec_table(i).D_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR18;
2457                            p_sr_audit_rec_table(i).D_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR19;
2458                            p_sr_audit_rec_table(i).D_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR20;
2459                            p_sr_audit_rec_table(i).D_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR21;
2460                            p_sr_audit_rec_table(i).D_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR22;
2461                            p_sr_audit_rec_table(i).D_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR23;
2462                            p_sr_audit_rec_table(i).D_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR24;
2463                            p_sr_audit_rec_table(i).D_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR25;
2464                            p_sr_audit_rec_table(i).UOM_EXT_ATTR1     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR1;
2465                            p_sr_audit_rec_table(i).UOM_EXT_ATTR2     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR2;
2466                            p_sr_audit_rec_table(i).UOM_EXT_ATTR3     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR3;
2467                            p_sr_audit_rec_table(i).UOM_EXT_ATTR4     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR4;
2468                            p_sr_audit_rec_table(i).UOM_EXT_ATTR5     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR5;
2469                            p_sr_audit_rec_table(i).UOM_EXT_ATTR6     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR6;
2470                            p_sr_audit_rec_table(i).UOM_EXT_ATTR7     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR7;
2471                            p_sr_audit_rec_table(i).UOM_EXT_ATTR8     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR8;
2472                            p_sr_audit_rec_table(i).UOM_EXT_ATTR9     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR9;
2473                            p_sr_audit_rec_table(i).UOM_EXT_ATTR10    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR10;
2474                            p_sr_audit_rec_table(i).UOM_EXT_ATTR11    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR11;
2475                            p_sr_audit_rec_table(i).UOM_EXT_ATTR12    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR12;
2476                            p_sr_audit_rec_table(i).UOM_EXT_ATTR13    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR13;
2477                            p_sr_audit_rec_table(i).UOM_EXT_ATTR14    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR14;
2478                            p_sr_audit_rec_table(i).UOM_EXT_ATTR15    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR15;
2479                            p_sr_audit_rec_table(i).UOM_EXT_ATTR16    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR16;
2480                            p_sr_audit_rec_table(i).UOM_EXT_ATTR17    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR17;
2481                            p_sr_audit_rec_table(i).UOM_EXT_ATTR18    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR18;
2482                            p_sr_audit_rec_table(i).UOM_EXT_ATTR19    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR19;
2483                            p_sr_audit_rec_table(i).UOM_EXT_ATTR20    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR20;
2484                            p_sr_audit_rec_table(i).UOM_EXT_ATTR21    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR21;
2485                            p_sr_audit_rec_table(i).UOM_EXT_ATTR22    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR22;
2486                            p_sr_audit_rec_table(i).UOM_EXT_ATTR23    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR23;
2487                            p_sr_audit_rec_table(i).UOM_EXT_ATTR24    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR24;
2488                            p_sr_audit_rec_table(i).UOM_EXT_ATTR25    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR25;
2489 
2490                            -- need to exit;
2491                            EXIT;
2492 
2493                           END IF;
2494 
2495                 ELSE
2496                    l_create_new_record := 'Y';
2497                 END IF;
2498               END LOOP;
2499 
2500               --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
2501             ELSE
2502               l_audit_table_empty := 'Y';
2503             END IF;
2504 
2505 
2506 
2507 
2508 
2509             --DBMS_OUTPUT.PUT_LINE('l_create_new_rec'||l_create_new_record);
2510             --DBMS_OUTPUT.PUT_LINE('l_audit_table_empty'||l_audit_table_empty);
2511 
2512               IF l_create_new_record = 'Y'  OR
2513                  l_audit_table_empty = 'Y' THEN
2514 
2515 
2516                   l_count := l_count + 1;
2517                     p_sr_audit_rec_table (l_count).extension_id      := l_cs_sr_contacts_ext_rec.extension_id;
2518                     p_sr_audit_rec_table (l_count).pk_column_1       := l_cs_sr_contacts_ext_rec.incident_id;
2519                     p_sr_audit_rec_table (l_count).pk_column_2       := l_cs_sr_contacts_ext_rec.party_id;
2520                     p_sr_audit_rec_table (l_count).pk_column_3       := l_cs_sr_contacts_ext_rec.contact_type;
2521                     p_sr_audit_rec_table (l_count).pk_column_4       := l_cs_sr_contacts_ext_rec.party_role_code;
2522                     p_sr_audit_rec_table (l_count).CONTEXT           := l_cs_sr_contacts_ext_rec.context;
2523                     p_sr_audit_rec_table (l_count).ATTR_GROUP_ID     := l_cs_sr_contacts_ext_rec.attr_group_id;
2524                     p_sr_audit_rec_table (l_count).C_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR1;
2525                     p_sr_audit_rec_table (l_count).C_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR2;
2526                     p_sr_audit_rec_table (l_count).C_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR3;
2527                     p_sr_audit_rec_table (l_count).C_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR4;
2528                     p_sr_audit_rec_table (l_count).C_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR5;
2529                     p_sr_audit_rec_table (l_count).C_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR6;
2530                     p_sr_audit_rec_table (l_count).C_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR7;
2531                     p_sr_audit_rec_table (l_count).C_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR8;
2532                     p_sr_audit_rec_table (l_count).C_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.C_EXT_ATTR9;
2533                     p_sr_audit_rec_table (l_count).C_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR10;
2534                     p_sr_audit_rec_table (l_count).C_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR11;
2535                     p_sr_audit_rec_table (l_count).C_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR12;
2536                     p_sr_audit_rec_table (l_count).C_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR13;
2537                     p_sr_audit_rec_table (l_count).C_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR14;
2538                     p_sr_audit_rec_table (l_count).C_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR15;
2539                     p_sr_audit_rec_table (l_count).C_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR16;
2540                     p_sr_audit_rec_table (l_count).C_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR17;
2541                     p_sr_audit_rec_table (l_count).C_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR18;
2542                     p_sr_audit_rec_table (l_count).C_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR19;
2543                     p_sr_audit_rec_table (l_count).C_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR20;
2544                     p_sr_audit_rec_table (l_count).C_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR21;
2545                     p_sr_audit_rec_table (l_count).C_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR22;
2546                     p_sr_audit_rec_table (l_count).C_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR23;
2547                     p_sr_audit_rec_table (l_count).C_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR24;
2548                     p_sr_audit_rec_table (l_count).C_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR25;
2549                     p_sr_audit_rec_table (l_count).C_EXT_ATTR26      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR26;
2550                     p_sr_audit_rec_table (l_count).C_EXT_ATTR27      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR27;
2551                     p_sr_audit_rec_table (l_count).C_EXT_ATTR28      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR28;
2552                     p_sr_audit_rec_table (l_count).C_EXT_ATTR29      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR29;
2553                     p_sr_audit_rec_table (l_count).C_EXT_ATTR30      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR30;
2554                     p_sr_audit_rec_table (l_count).C_EXT_ATTR31      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR31;
2555                     p_sr_audit_rec_table (l_count).C_EXT_ATTR32      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR32;
2556                     p_sr_audit_rec_table (l_count).C_EXT_ATTR33      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR33;
2557                     p_sr_audit_rec_table (l_count).C_EXT_ATTR34      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR34;
2558                     p_sr_audit_rec_table (l_count).C_EXT_ATTR35      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR35;
2559                     p_sr_audit_rec_table (l_count).C_EXT_ATTR36      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR36;
2560                     p_sr_audit_rec_table (l_count).C_EXT_ATTR37      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR37;
2561                     p_sr_audit_rec_table (l_count).C_EXT_ATTR38      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR38;
2562                     p_sr_audit_rec_table (l_count).C_EXT_ATTR39      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR38;
2563                     p_sr_audit_rec_table (l_count).C_EXT_ATTR40      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR40;
2564                     p_sr_audit_rec_table (l_count).C_EXT_ATTR41      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR41;
2565                     p_sr_audit_rec_table (l_count).C_EXT_ATTR42      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR42;
2566                     p_sr_audit_rec_table (l_count).C_EXT_ATTR43      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR43;
2567                     p_sr_audit_rec_table (l_count).C_EXT_ATTR44      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR44;
2568                     p_sr_audit_rec_table (l_count).C_EXT_ATTR45      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR45;
2569                     p_sr_audit_rec_table (l_count).C_EXT_ATTR46      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR46;
2570                     p_sr_audit_rec_table (l_count).C_EXT_ATTR47      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR47;
2571                     p_sr_audit_rec_table (l_count).C_EXT_ATTR48      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR48;
2572                     p_sr_audit_rec_table (l_count).C_EXT_ATTR49      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR49;
2573                     p_sr_audit_rec_table (l_count).C_EXT_ATTR50      := l_cs_sr_contacts_ext_rec.C_EXT_ATTR50;
2574                     p_sr_audit_rec_table (l_count).N_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR1;
2575                     p_sr_audit_rec_table (l_count).N_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR2;
2576                     p_sr_audit_rec_table (l_count).N_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR3;
2577                     p_sr_audit_rec_table (l_count).N_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR4;
2578                     p_sr_audit_rec_table (l_count).N_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR5;
2579                     p_sr_audit_rec_table (l_count).N_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR6;
2580                     p_sr_audit_rec_table (l_count).N_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR7;
2581                     p_sr_audit_rec_table (l_count).N_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR8;
2582                     p_sr_audit_rec_table (l_count).N_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.N_EXT_ATTR9;
2583                     p_sr_audit_rec_table (l_count).N_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR10;
2584                     p_sr_audit_rec_table (l_count).N_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR11;
2585                     p_sr_audit_rec_table (l_count).N_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR12;
2586                     p_sr_audit_rec_table (l_count).N_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR13;
2587                     p_sr_audit_rec_table (l_count).N_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR14;
2588                     p_sr_audit_rec_table (l_count).N_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR15;
2589                     p_sr_audit_rec_table (l_count).N_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR16;
2590                     p_sr_audit_rec_table (l_count).N_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR17;
2591                     p_sr_audit_rec_table (l_count).N_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR18;
2592                     p_sr_audit_rec_table (l_count).N_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR19;
2593                     p_sr_audit_rec_table (l_count).N_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR20;
2594                     p_sr_audit_rec_table (l_count).N_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR21;
2595                     p_sr_audit_rec_table (l_count).N_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR22;
2596                     p_sr_audit_rec_table (l_count).N_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR23;
2597                     p_sr_audit_rec_table (l_count).N_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR24;
2598                     p_sr_audit_rec_table (l_count).N_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.N_EXT_ATTR25;
2599                     p_sr_audit_rec_table (l_count).D_EXT_ATTR1       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR1;
2600                     p_sr_audit_rec_table (l_count).D_EXT_ATTR2       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR2;
2601                     p_sr_audit_rec_table (l_count).D_EXT_ATTR3       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR3;
2602                     p_sr_audit_rec_table (l_count).D_EXT_ATTR4       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR4;
2603                     p_sr_audit_rec_table (l_count).D_EXT_ATTR5       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR5;
2604                     p_sr_audit_rec_table (l_count).D_EXT_ATTR6       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR6;
2605                     p_sr_audit_rec_table (l_count).D_EXT_ATTR7       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR7;
2606                     p_sr_audit_rec_table (l_count).D_EXT_ATTR8       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR8;
2607                     p_sr_audit_rec_table (l_count).D_EXT_ATTR9       := l_cs_sr_contacts_ext_rec.D_EXT_ATTR9;
2608                     p_sr_audit_rec_table (l_count).D_EXT_ATTR10      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR10;
2609                     p_sr_audit_rec_table (l_count).D_EXT_ATTR11      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR11;
2610                     p_sr_audit_rec_table (l_count).D_EXT_ATTR12      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR12;
2611                     p_sr_audit_rec_table (l_count).D_EXT_ATTR13      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR13;
2612                     p_sr_audit_rec_table (l_count).D_EXT_ATTR14      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR14;
2613                     p_sr_audit_rec_table (l_count).D_EXT_ATTR15      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR15;
2614                     p_sr_audit_rec_table (l_count).D_EXT_ATTR16      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR16;
2615                     p_sr_audit_rec_table (l_count).D_EXT_ATTR17      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR17;
2616                     p_sr_audit_rec_table (l_count).D_EXT_ATTR18      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR18;
2617                     p_sr_audit_rec_table (l_count).D_EXT_ATTR19      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR19;
2618                     p_sr_audit_rec_table (l_count).D_EXT_ATTR20      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR20;
2619                     p_sr_audit_rec_table (l_count).D_EXT_ATTR21      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR21;
2620                     p_sr_audit_rec_table (l_count).D_EXT_ATTR22      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR22;
2621                     p_sr_audit_rec_table (l_count).D_EXT_ATTR23      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR23;
2622                     p_sr_audit_rec_table (l_count).D_EXT_ATTR24      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR24;
2623                     p_sr_audit_rec_table (l_count).D_EXT_ATTR25      := l_cs_sr_contacts_ext_rec.D_EXT_ATTR25;
2624                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR1     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR1;
2625                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR2     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR2;
2626                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR3     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR3;
2627                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR4     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR4;
2628                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR5     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR5;
2629                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR6     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR6;
2630                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR7     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR7;
2631                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR8     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR8;
2632                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR9     := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR9;
2633                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR10    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR10;
2634                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR11    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR11;
2635                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR12    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR12;
2636                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR13    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR13;
2637                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR14    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR14;
2638                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR15    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR15;
2639                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR16    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR16;
2640                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR17    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR17;
2641                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR18    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR18;
2642                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR19    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR19;
2643                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR20    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR20;
2644                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR21    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR21;
2645                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR22    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR22;
2646                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR23    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR23;
2647                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR24    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR24;
2648                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR25    := l_cs_sr_contacts_ext_rec.UOM_EXT_ATTR25;
2649 
2650                   END IF;
2651                 ELSE
2652                     -- Record does not exists
2653                     x_rec_found := 'N';
2654                     RETURN;
2655                     --DBMS_OUTPUT.PUT_LINE('Record does not exist');
2656                 END IF;
2657 
2658             END IF; -- end of if attribute name is not null
2659           END IF; -- end of if app id, attr_group_type, attr_group_name is not null
2660 
2661 
2662       ELSE
2663         -- l_multi_row_code = 'N'
2664         -- get the current record in the database for the unique key combination
2665 
2666           --DBMS_OUTPUT.PUT_LINE('not multi-row');
2667 
2668           OPEN c_get_ext_attr_db_rec;
2669           FETCH c_get_ext_attr_db_rec INTO v_get_ext_attr_db_rec;
2670           IF c_get_ext_attr_db_rec%NOTFOUND THEN
2671             -- Record does not exists
2672             x_rec_found := 'N';
2673 
2674           ELSE
2675             -- Record exists
2676             x_rec_found := 'Y';
2677 
2678             -- loop through the audit table passed in and see if you can find the record
2679             -- this is for a 'CREATE' situation
2680 
2681             --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT);
2682 
2683             IF p_sr_audit_rec_table.COUNT > 0 THEN
2684 
2685               --DBMS_OUTPUT.PUT_LINE('In loooop');
2686 
2687               FOR i IN 1.. p_sr_audit_rec_table.COUNT LOOP
2688                 IF p_sr_audit_rec_table(i).pk_column_1 = p_incident_id AND
2689                    p_sr_audit_rec_table(i).pk_column_2 = p_party_id AND
2690                    p_sr_audit_rec_table(i).pk_column_3 = p_contact_type AND
2691                    p_sr_audit_rec_table(i).pk_column_4 = p_party_role_code AND
2692                    p_sr_audit_rec_table(i).context = p_context AND
2693                    p_sr_audit_rec_table(i).attr_group_id = p_attr_group_id AND
2694                    p_sr_audit_rec_table(i).row_identifier = p_row_id THEN
2695 
2696                    l_create_new_record := 'N';
2697 
2698                    --DBMS_OUTPUT.PUT_LINE('Match found for audit record');
2699                    --DBMS_OUTPUT.PUT_LINE('l_create_new_record'||l_create_new_record);
2700 
2701                    p_sr_audit_rec_table(i).extension_id      := v_get_ext_attr_db_rec.extension_id;
2702                    p_sr_audit_rec_table(i).pk_column_1       := p_incident_id;
2703                    p_sr_audit_rec_table(i).pk_column_2       := p_party_id;
2704                    p_sr_audit_rec_table(i).pk_column_3       := p_contact_type;
2705                    p_sr_audit_rec_table(i).pk_column_4       := p_party_role_code;
2706                    p_sr_audit_rec_table(i).pk_column_5       := null;
2707                    p_sr_audit_rec_table(i).CONTEXT           := p_context;
2708                    p_sr_audit_rec_table(i).ATTR_GROUP_ID     := p_attr_group_id;
2709                    p_sr_audit_rec_table(i).C_EXT_ATTR1       := v_get_ext_attr_db_rec.C_EXT_ATTR1;
2710                    p_sr_audit_rec_table(i).C_EXT_ATTR2       := v_get_ext_attr_db_rec.C_EXT_ATTR2;
2711                    p_sr_audit_rec_table(i).C_EXT_ATTR3       := v_get_ext_attr_db_rec.C_EXT_ATTR3;
2712                    p_sr_audit_rec_table(i).C_EXT_ATTR4       := v_get_ext_attr_db_rec.C_EXT_ATTR4;
2713                    p_sr_audit_rec_table(i).C_EXT_ATTR5       := v_get_ext_attr_db_rec.C_EXT_ATTR5;
2714                    p_sr_audit_rec_table(i).C_EXT_ATTR6       := v_get_ext_attr_db_rec.C_EXT_ATTR6;
2715                    p_sr_audit_rec_table(i).C_EXT_ATTR7       := v_get_ext_attr_db_rec.C_EXT_ATTR7;
2716                    p_sr_audit_rec_table(i).C_EXT_ATTR8       := v_get_ext_attr_db_rec.C_EXT_ATTR8;
2717                    p_sr_audit_rec_table(i).C_EXT_ATTR9       := v_get_ext_attr_db_rec.C_EXT_ATTR9;
2718                    p_sr_audit_rec_table(i).C_EXT_ATTR10      := v_get_ext_attr_db_rec.C_EXT_ATTR10;
2719                    p_sr_audit_rec_table(i).C_EXT_ATTR11      := v_get_ext_attr_db_rec.C_EXT_ATTR11;
2720                    p_sr_audit_rec_table(i).C_EXT_ATTR12      := v_get_ext_attr_db_rec.C_EXT_ATTR12;
2721                    p_sr_audit_rec_table(i).C_EXT_ATTR13      := v_get_ext_attr_db_rec.C_EXT_ATTR13;
2722                    p_sr_audit_rec_table(i).C_EXT_ATTR14      := v_get_ext_attr_db_rec.C_EXT_ATTR14;
2723                    p_sr_audit_rec_table(i).C_EXT_ATTR15      := v_get_ext_attr_db_rec.C_EXT_ATTR15;
2724                    p_sr_audit_rec_table(i).C_EXT_ATTR16      := v_get_ext_attr_db_rec.C_EXT_ATTR16;
2725                    p_sr_audit_rec_table(i).C_EXT_ATTR17      := v_get_ext_attr_db_rec.C_EXT_ATTR17;
2726                    p_sr_audit_rec_table(i).C_EXT_ATTR18      := v_get_ext_attr_db_rec.C_EXT_ATTR18;
2727                    p_sr_audit_rec_table(i).C_EXT_ATTR19      := v_get_ext_attr_db_rec.C_EXT_ATTR19;
2728                    p_sr_audit_rec_table(i).C_EXT_ATTR20      := v_get_ext_attr_db_rec.C_EXT_ATTR20;
2729                    p_sr_audit_rec_table(i).C_EXT_ATTR21      := v_get_ext_attr_db_rec.C_EXT_ATTR21;
2730                    p_sr_audit_rec_table(i).C_EXT_ATTR22      := v_get_ext_attr_db_rec.C_EXT_ATTR22;
2731                    p_sr_audit_rec_table(i).C_EXT_ATTR23      := v_get_ext_attr_db_rec.C_EXT_ATTR23;
2732                    p_sr_audit_rec_table(i).C_EXT_ATTR24      := v_get_ext_attr_db_rec.C_EXT_ATTR24;
2733                    p_sr_audit_rec_table(i).C_EXT_ATTR25      := v_get_ext_attr_db_rec.C_EXT_ATTR25;
2734                    p_sr_audit_rec_table(i).C_EXT_ATTR26      := v_get_ext_attr_db_rec.C_EXT_ATTR26;
2735                    p_sr_audit_rec_table(i).C_EXT_ATTR27      := v_get_ext_attr_db_rec.C_EXT_ATTR27;
2736                    p_sr_audit_rec_table(i).C_EXT_ATTR28      := v_get_ext_attr_db_rec.C_EXT_ATTR28;
2737                    p_sr_audit_rec_table(i).C_EXT_ATTR29      := v_get_ext_attr_db_rec.C_EXT_ATTR29;
2738                    p_sr_audit_rec_table(i).C_EXT_ATTR30      := v_get_ext_attr_db_rec.C_EXT_ATTR30;
2739                    p_sr_audit_rec_table(i).C_EXT_ATTR31      := v_get_ext_attr_db_rec.C_EXT_ATTR31;
2740                    p_sr_audit_rec_table(i).C_EXT_ATTR32      := v_get_ext_attr_db_rec.C_EXT_ATTR32;
2741                    p_sr_audit_rec_table(i).C_EXT_ATTR33      := v_get_ext_attr_db_rec.C_EXT_ATTR33;
2742                    p_sr_audit_rec_table(i).C_EXT_ATTR34      := v_get_ext_attr_db_rec.C_EXT_ATTR34;
2743                    p_sr_audit_rec_table(i).C_EXT_ATTR35      := v_get_ext_attr_db_rec.C_EXT_ATTR35;
2744                    p_sr_audit_rec_table(i).C_EXT_ATTR36      := v_get_ext_attr_db_rec.C_EXT_ATTR36;
2745                    p_sr_audit_rec_table(i).C_EXT_ATTR37      := v_get_ext_attr_db_rec.C_EXT_ATTR37;
2746                    p_sr_audit_rec_table(i).C_EXT_ATTR38      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
2747                    p_sr_audit_rec_table(i).C_EXT_ATTR39      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
2748                    p_sr_audit_rec_table(i).C_EXT_ATTR40      := v_get_ext_attr_db_rec.C_EXT_ATTR40;
2749                    p_sr_audit_rec_table(i).C_EXT_ATTR41      := v_get_ext_attr_db_rec.C_EXT_ATTR41;
2750                    p_sr_audit_rec_table(i).C_EXT_ATTR42      := v_get_ext_attr_db_rec.C_EXT_ATTR42;
2751                    p_sr_audit_rec_table(i).C_EXT_ATTR43      := v_get_ext_attr_db_rec.C_EXT_ATTR43;
2752                    p_sr_audit_rec_table(i).C_EXT_ATTR44      := v_get_ext_attr_db_rec.C_EXT_ATTR44;
2753                    p_sr_audit_rec_table(i).C_EXT_ATTR45      := v_get_ext_attr_db_rec.C_EXT_ATTR45;
2754                    p_sr_audit_rec_table(i).C_EXT_ATTR46      := v_get_ext_attr_db_rec.C_EXT_ATTR46;
2755                    p_sr_audit_rec_table(i).C_EXT_ATTR47      := v_get_ext_attr_db_rec.C_EXT_ATTR47;
2756                    p_sr_audit_rec_table(i).C_EXT_ATTR48      := v_get_ext_attr_db_rec.C_EXT_ATTR48;
2757                    p_sr_audit_rec_table(i).C_EXT_ATTR49      := v_get_ext_attr_db_rec.C_EXT_ATTR49;
2758                    p_sr_audit_rec_table(i).C_EXT_ATTR50      := v_get_ext_attr_db_rec.C_EXT_ATTR50;
2759                    p_sr_audit_rec_table(i).N_EXT_ATTR1       := v_get_ext_attr_db_rec.N_EXT_ATTR1;
2760                    p_sr_audit_rec_table(i).N_EXT_ATTR2       := v_get_ext_attr_db_rec.N_EXT_ATTR2;
2761                    p_sr_audit_rec_table(i).N_EXT_ATTR3       := v_get_ext_attr_db_rec.N_EXT_ATTR3;
2762                    p_sr_audit_rec_table(i).N_EXT_ATTR4       := v_get_ext_attr_db_rec.N_EXT_ATTR4;
2763                    p_sr_audit_rec_table(i).N_EXT_ATTR5       := v_get_ext_attr_db_rec.N_EXT_ATTR5;
2764                    p_sr_audit_rec_table(i).N_EXT_ATTR6       := v_get_ext_attr_db_rec.N_EXT_ATTR6;
2765                    p_sr_audit_rec_table(i).N_EXT_ATTR7       := v_get_ext_attr_db_rec.N_EXT_ATTR7;
2766                    p_sr_audit_rec_table(i).N_EXT_ATTR8       := v_get_ext_attr_db_rec.N_EXT_ATTR8;
2767                    p_sr_audit_rec_table(i).N_EXT_ATTR9       := v_get_ext_attr_db_rec.N_EXT_ATTR9;
2768                    p_sr_audit_rec_table(i).N_EXT_ATTR10      := v_get_ext_attr_db_rec.N_EXT_ATTR10;
2769                    p_sr_audit_rec_table(i).N_EXT_ATTR11      := v_get_ext_attr_db_rec.N_EXT_ATTR11;
2770                    p_sr_audit_rec_table(i).N_EXT_ATTR12      := v_get_ext_attr_db_rec.N_EXT_ATTR12;
2771                    p_sr_audit_rec_table(i).N_EXT_ATTR13      := v_get_ext_attr_db_rec.N_EXT_ATTR13;
2772                    p_sr_audit_rec_table(i).N_EXT_ATTR14      := v_get_ext_attr_db_rec.N_EXT_ATTR14;
2773                    p_sr_audit_rec_table(i).N_EXT_ATTR15      := v_get_ext_attr_db_rec.N_EXT_ATTR15;
2774                    p_sr_audit_rec_table(i).N_EXT_ATTR16      := v_get_ext_attr_db_rec.N_EXT_ATTR16;
2775                    p_sr_audit_rec_table(i).N_EXT_ATTR17      := v_get_ext_attr_db_rec.N_EXT_ATTR17;
2776                    p_sr_audit_rec_table(i).N_EXT_ATTR18      := v_get_ext_attr_db_rec.N_EXT_ATTR18;
2777                    p_sr_audit_rec_table(i).N_EXT_ATTR19      := v_get_ext_attr_db_rec.N_EXT_ATTR19;
2778                    p_sr_audit_rec_table(i).N_EXT_ATTR20      := v_get_ext_attr_db_rec.N_EXT_ATTR20;
2779                    p_sr_audit_rec_table(i).N_EXT_ATTR21      := v_get_ext_attr_db_rec.N_EXT_ATTR21;
2780                    p_sr_audit_rec_table(i).N_EXT_ATTR22      := v_get_ext_attr_db_rec.N_EXT_ATTR22;
2781                    p_sr_audit_rec_table(i).N_EXT_ATTR23      := v_get_ext_attr_db_rec.N_EXT_ATTR23;
2782                    p_sr_audit_rec_table(i).N_EXT_ATTR24      := v_get_ext_attr_db_rec.N_EXT_ATTR24;
2783                    p_sr_audit_rec_table(i).N_EXT_ATTR25      := v_get_ext_attr_db_rec.N_EXT_ATTR25;
2784                    p_sr_audit_rec_table(i).D_EXT_ATTR1       := v_get_ext_attr_db_rec.D_EXT_ATTR1;
2785                    p_sr_audit_rec_table(i).D_EXT_ATTR2       := v_get_ext_attr_db_rec.D_EXT_ATTR2;
2786                    p_sr_audit_rec_table(i).D_EXT_ATTR3       := v_get_ext_attr_db_rec.D_EXT_ATTR3;
2787                    p_sr_audit_rec_table(i).D_EXT_ATTR4       := v_get_ext_attr_db_rec.D_EXT_ATTR4;
2788                    p_sr_audit_rec_table(i).D_EXT_ATTR5       := v_get_ext_attr_db_rec.D_EXT_ATTR5;
2789                    p_sr_audit_rec_table(i).D_EXT_ATTR6       := v_get_ext_attr_db_rec.D_EXT_ATTR6;
2790                    p_sr_audit_rec_table(i).D_EXT_ATTR7       := v_get_ext_attr_db_rec.D_EXT_ATTR7;
2791                    p_sr_audit_rec_table(i).D_EXT_ATTR8       := v_get_ext_attr_db_rec.D_EXT_ATTR8;
2792                    p_sr_audit_rec_table(i).D_EXT_ATTR9       := v_get_ext_attr_db_rec.D_EXT_ATTR9;
2793                    p_sr_audit_rec_table(i).D_EXT_ATTR10      := v_get_ext_attr_db_rec.D_EXT_ATTR10;
2794                    p_sr_audit_rec_table(i).D_EXT_ATTR11      := v_get_ext_attr_db_rec.D_EXT_ATTR11;
2795                    p_sr_audit_rec_table(i).D_EXT_ATTR12      := v_get_ext_attr_db_rec.D_EXT_ATTR12;
2796                    p_sr_audit_rec_table(i).D_EXT_ATTR13      := v_get_ext_attr_db_rec.D_EXT_ATTR13;
2797                    p_sr_audit_rec_table(i).D_EXT_ATTR14      := v_get_ext_attr_db_rec.D_EXT_ATTR14;
2798                    p_sr_audit_rec_table(i).D_EXT_ATTR15      := v_get_ext_attr_db_rec.D_EXT_ATTR15;
2799                    p_sr_audit_rec_table(i).D_EXT_ATTR16      := v_get_ext_attr_db_rec.D_EXT_ATTR16;
2800                    p_sr_audit_rec_table(i).D_EXT_ATTR17      := v_get_ext_attr_db_rec.D_EXT_ATTR17;
2801                    p_sr_audit_rec_table(i).D_EXT_ATTR18      := v_get_ext_attr_db_rec.D_EXT_ATTR18;
2802                    p_sr_audit_rec_table(i).D_EXT_ATTR19      := v_get_ext_attr_db_rec.D_EXT_ATTR19;
2803                    p_sr_audit_rec_table(i).D_EXT_ATTR20      := v_get_ext_attr_db_rec.D_EXT_ATTR20;
2804                    p_sr_audit_rec_table(i).D_EXT_ATTR21      := v_get_ext_attr_db_rec.D_EXT_ATTR21;
2805                    p_sr_audit_rec_table(i).D_EXT_ATTR22      := v_get_ext_attr_db_rec.D_EXT_ATTR22;
2806                    p_sr_audit_rec_table(i).D_EXT_ATTR23      := v_get_ext_attr_db_rec.D_EXT_ATTR23;
2807                    p_sr_audit_rec_table(i).D_EXT_ATTR24      := v_get_ext_attr_db_rec.D_EXT_ATTR24;
2808                    p_sr_audit_rec_table(i).D_EXT_ATTR25      := v_get_ext_attr_db_rec.D_EXT_ATTR25;
2809                    p_sr_audit_rec_table(i).UOM_EXT_ATTR1     := v_get_ext_attr_db_rec.UOM_EXT_ATTR1;
2810                    p_sr_audit_rec_table(i).UOM_EXT_ATTR2     := v_get_ext_attr_db_rec.UOM_EXT_ATTR2;
2811                    p_sr_audit_rec_table(i).UOM_EXT_ATTR3     := v_get_ext_attr_db_rec.UOM_EXT_ATTR3;
2812                    p_sr_audit_rec_table(i).UOM_EXT_ATTR4     := v_get_ext_attr_db_rec.UOM_EXT_ATTR4;
2813                    p_sr_audit_rec_table(i).UOM_EXT_ATTR5     := v_get_ext_attr_db_rec.UOM_EXT_ATTR5;
2814                    p_sr_audit_rec_table(i).UOM_EXT_ATTR6     := v_get_ext_attr_db_rec.UOM_EXT_ATTR6;
2815                    p_sr_audit_rec_table(i).UOM_EXT_ATTR7     := v_get_ext_attr_db_rec.UOM_EXT_ATTR7;
2816                    p_sr_audit_rec_table(i).UOM_EXT_ATTR8     := v_get_ext_attr_db_rec.UOM_EXT_ATTR8;
2817                    p_sr_audit_rec_table(i).UOM_EXT_ATTR9     := v_get_ext_attr_db_rec.UOM_EXT_ATTR9;
2818                    p_sr_audit_rec_table(i).UOM_EXT_ATTR10    := v_get_ext_attr_db_rec.UOM_EXT_ATTR10;
2819                    p_sr_audit_rec_table(i).UOM_EXT_ATTR11    := v_get_ext_attr_db_rec.UOM_EXT_ATTR11;
2820                    p_sr_audit_rec_table(i).UOM_EXT_ATTR12    := v_get_ext_attr_db_rec.UOM_EXT_ATTR12;
2821                    p_sr_audit_rec_table(i).UOM_EXT_ATTR13    := v_get_ext_attr_db_rec.UOM_EXT_ATTR13;
2822                    p_sr_audit_rec_table(i).UOM_EXT_ATTR14    := v_get_ext_attr_db_rec.UOM_EXT_ATTR14;
2823                    p_sr_audit_rec_table(i).UOM_EXT_ATTR15    := v_get_ext_attr_db_rec.UOM_EXT_ATTR15;
2824                    p_sr_audit_rec_table(i).UOM_EXT_ATTR16    := v_get_ext_attr_db_rec.UOM_EXT_ATTR16;
2825                    p_sr_audit_rec_table(i).UOM_EXT_ATTR17    := v_get_ext_attr_db_rec.UOM_EXT_ATTR17;
2826                    p_sr_audit_rec_table(i).UOM_EXT_ATTR18    := v_get_ext_attr_db_rec.UOM_EXT_ATTR18;
2827                    p_sr_audit_rec_table(i).UOM_EXT_ATTR19    := v_get_ext_attr_db_rec.UOM_EXT_ATTR19;
2828                    p_sr_audit_rec_table(i).UOM_EXT_ATTR20    := v_get_ext_attr_db_rec.UOM_EXT_ATTR20;
2829                    p_sr_audit_rec_table(i).UOM_EXT_ATTR21    := v_get_ext_attr_db_rec.UOM_EXT_ATTR21;
2830                    p_sr_audit_rec_table(i).UOM_EXT_ATTR22    := v_get_ext_attr_db_rec.UOM_EXT_ATTR22;
2831                    p_sr_audit_rec_table(i).UOM_EXT_ATTR23    := v_get_ext_attr_db_rec.UOM_EXT_ATTR23;
2832                    p_sr_audit_rec_table(i).UOM_EXT_ATTR24    := v_get_ext_attr_db_rec.UOM_EXT_ATTR24;
2833                    p_sr_audit_rec_table(i).UOM_EXT_ATTR25    := v_get_ext_attr_db_rec.UOM_EXT_ATTR25;
2834 
2835                 ELSE
2836                    l_create_new_record := 'Y';
2837                 END IF;
2838               END LOOP;
2839 
2840               --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
2841             ELSE
2842               l_audit_table_empty := 'Y';
2843             END IF;
2844 
2845             --DBMS_OUTPUT.PUT_LINE('l_create_new_rec'||l_create_new_record);
2846             --DBMS_OUTPUT.PUT_LINE('l_audit_table_empty'||l_audit_table_empty);
2847 
2848             IF l_create_new_record = 'Y'  OR
2849                l_audit_table_empty = 'Y' THEN
2850 
2851             l_count := l_count + 1;
2852 
2853             --DBMS_OUTPUT.PUT_LINE('extension_id'||v_get_ext_attr_db_rec.extension_id);
2854             --DBMS_OUTPUT.PUT_LINE('pk_column_1'||v_get_ext_attr_db_rec.incident_id);
2855             --DBMS_OUTPUT.PUT_LINE('CONTEXT'||v_get_ext_attr_db_rec.context);
2856             --DBMS_OUTPUT.PUT_LINE('ATTR_GROUP_ID'||v_get_ext_attr_db_rec.attr_group_id);
2857             --DBMS_OUTPUT.PUT_LINE('C_EXT_ATTR1'||v_get_ext_attr_db_rec.C_EXT_ATTR1);
2858 
2859             p_sr_audit_rec_table(l_count).extension_id      := v_get_ext_attr_db_rec.extension_id;
2860             p_sr_audit_rec_table(l_count).pk_column_1       := v_get_ext_attr_db_rec.incident_id;
2861             p_sr_audit_rec_table(l_count).pk_column_2       := v_get_ext_attr_db_rec.party_id;
2862             p_sr_audit_rec_table(l_count).pk_column_3       := v_get_ext_attr_db_rec.contact_type;
2863             p_sr_audit_rec_table(l_count).pk_column_4       := v_get_ext_attr_db_rec.party_role_code;
2864             p_sr_audit_rec_table(l_count).pk_column_5       := null;
2865             p_sr_audit_rec_table(l_count).CONTEXT           := v_get_ext_attr_db_rec.context;
2866             p_sr_audit_rec_table(l_count).ATTR_GROUP_ID     := v_get_ext_attr_db_rec.attr_group_id;
2867             p_sr_audit_rec_table(l_count).C_EXT_ATTR1       := v_get_ext_attr_db_rec.C_EXT_ATTR1;
2868             p_sr_audit_rec_table(l_count).C_EXT_ATTR2       := v_get_ext_attr_db_rec.C_EXT_ATTR2;
2869             p_sr_audit_rec_table(l_count).C_EXT_ATTR3       := v_get_ext_attr_db_rec.C_EXT_ATTR3;
2870             p_sr_audit_rec_table(l_count).C_EXT_ATTR4       := v_get_ext_attr_db_rec.C_EXT_ATTR4;
2871             p_sr_audit_rec_table(l_count).C_EXT_ATTR5       := v_get_ext_attr_db_rec.C_EXT_ATTR5;
2872             p_sr_audit_rec_table(l_count).C_EXT_ATTR6       := v_get_ext_attr_db_rec.C_EXT_ATTR6;
2873             p_sr_audit_rec_table(l_count).C_EXT_ATTR7       := v_get_ext_attr_db_rec.C_EXT_ATTR7;
2874             p_sr_audit_rec_table(l_count).C_EXT_ATTR8       := v_get_ext_attr_db_rec.C_EXT_ATTR8;
2875             p_sr_audit_rec_table(l_count).C_EXT_ATTR9       := v_get_ext_attr_db_rec.C_EXT_ATTR9;
2876             p_sr_audit_rec_table(l_count).C_EXT_ATTR10      := v_get_ext_attr_db_rec.C_EXT_ATTR10;
2877             p_sr_audit_rec_table(l_count).C_EXT_ATTR11      := v_get_ext_attr_db_rec.C_EXT_ATTR11;
2878             p_sr_audit_rec_table(l_count).C_EXT_ATTR12      := v_get_ext_attr_db_rec.C_EXT_ATTR12;
2879             p_sr_audit_rec_table(l_count).C_EXT_ATTR13      := v_get_ext_attr_db_rec.C_EXT_ATTR13;
2880             p_sr_audit_rec_table(l_count).C_EXT_ATTR14      := v_get_ext_attr_db_rec.C_EXT_ATTR14;
2881             p_sr_audit_rec_table(l_count).C_EXT_ATTR15      := v_get_ext_attr_db_rec.C_EXT_ATTR15;
2882             p_sr_audit_rec_table(l_count).C_EXT_ATTR16      := v_get_ext_attr_db_rec.C_EXT_ATTR16;
2883             p_sr_audit_rec_table(l_count).C_EXT_ATTR17      := v_get_ext_attr_db_rec.C_EXT_ATTR17;
2884             p_sr_audit_rec_table(l_count).C_EXT_ATTR18      := v_get_ext_attr_db_rec.C_EXT_ATTR18;
2885             p_sr_audit_rec_table(l_count).C_EXT_ATTR19      := v_get_ext_attr_db_rec.C_EXT_ATTR19;
2886             p_sr_audit_rec_table(l_count).C_EXT_ATTR20      := v_get_ext_attr_db_rec.C_EXT_ATTR20;
2887             p_sr_audit_rec_table(l_count).C_EXT_ATTR21      := v_get_ext_attr_db_rec.C_EXT_ATTR21;
2888             p_sr_audit_rec_table(l_count).C_EXT_ATTR22      := v_get_ext_attr_db_rec.C_EXT_ATTR22;
2889             p_sr_audit_rec_table(l_count).C_EXT_ATTR23      := v_get_ext_attr_db_rec.C_EXT_ATTR23;
2890             p_sr_audit_rec_table(l_count).C_EXT_ATTR24      := v_get_ext_attr_db_rec.C_EXT_ATTR24;
2891             p_sr_audit_rec_table(l_count).C_EXT_ATTR25      := v_get_ext_attr_db_rec.C_EXT_ATTR25;
2892             p_sr_audit_rec_table(l_count).C_EXT_ATTR26      := v_get_ext_attr_db_rec.C_EXT_ATTR26;
2893             p_sr_audit_rec_table(l_count).C_EXT_ATTR27      := v_get_ext_attr_db_rec.C_EXT_ATTR27;
2894             p_sr_audit_rec_table(l_count).C_EXT_ATTR28      := v_get_ext_attr_db_rec.C_EXT_ATTR28;
2895             p_sr_audit_rec_table(l_count).C_EXT_ATTR29      := v_get_ext_attr_db_rec.C_EXT_ATTR29;
2896             p_sr_audit_rec_table(l_count).C_EXT_ATTR30      := v_get_ext_attr_db_rec.C_EXT_ATTR30;
2897             p_sr_audit_rec_table(l_count).C_EXT_ATTR31      := v_get_ext_attr_db_rec.C_EXT_ATTR31;
2898             p_sr_audit_rec_table(l_count).C_EXT_ATTR32      := v_get_ext_attr_db_rec.C_EXT_ATTR32;
2899             p_sr_audit_rec_table(l_count).C_EXT_ATTR33      := v_get_ext_attr_db_rec.C_EXT_ATTR33;
2900             p_sr_audit_rec_table(l_count).C_EXT_ATTR34      := v_get_ext_attr_db_rec.C_EXT_ATTR34;
2901             p_sr_audit_rec_table(l_count).C_EXT_ATTR35      := v_get_ext_attr_db_rec.C_EXT_ATTR35;
2902             p_sr_audit_rec_table(l_count).C_EXT_ATTR36      := v_get_ext_attr_db_rec.C_EXT_ATTR36;
2903             p_sr_audit_rec_table(l_count).C_EXT_ATTR37      := v_get_ext_attr_db_rec.C_EXT_ATTR37;
2904             p_sr_audit_rec_table(l_count).C_EXT_ATTR38      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
2905             p_sr_audit_rec_table(l_count).C_EXT_ATTR39      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
2906             p_sr_audit_rec_table(l_count).C_EXT_ATTR40      := v_get_ext_attr_db_rec.C_EXT_ATTR40;
2907             p_sr_audit_rec_table(l_count).C_EXT_ATTR41      := v_get_ext_attr_db_rec.C_EXT_ATTR41;
2908             p_sr_audit_rec_table(l_count).C_EXT_ATTR42      := v_get_ext_attr_db_rec.C_EXT_ATTR42;
2909             p_sr_audit_rec_table(l_count).C_EXT_ATTR43      := v_get_ext_attr_db_rec.C_EXT_ATTR43;
2910             p_sr_audit_rec_table(l_count).C_EXT_ATTR44      := v_get_ext_attr_db_rec.C_EXT_ATTR44;
2911             p_sr_audit_rec_table(l_count).C_EXT_ATTR45      := v_get_ext_attr_db_rec.C_EXT_ATTR45;
2912             p_sr_audit_rec_table(l_count).C_EXT_ATTR46      := v_get_ext_attr_db_rec.C_EXT_ATTR46;
2913             p_sr_audit_rec_table(l_count).C_EXT_ATTR47      := v_get_ext_attr_db_rec.C_EXT_ATTR47;
2914             p_sr_audit_rec_table(l_count).C_EXT_ATTR48      := v_get_ext_attr_db_rec.C_EXT_ATTR48;
2915             p_sr_audit_rec_table(l_count).C_EXT_ATTR49      := v_get_ext_attr_db_rec.C_EXT_ATTR49;
2916             p_sr_audit_rec_table(l_count).C_EXT_ATTR50      := v_get_ext_attr_db_rec.C_EXT_ATTR50;
2917             p_sr_audit_rec_table(l_count).N_EXT_ATTR1       := v_get_ext_attr_db_rec.N_EXT_ATTR1;
2918             p_sr_audit_rec_table(l_count).N_EXT_ATTR2       := v_get_ext_attr_db_rec.N_EXT_ATTR2;
2919             p_sr_audit_rec_table(l_count).N_EXT_ATTR3       := v_get_ext_attr_db_rec.N_EXT_ATTR3;
2920             p_sr_audit_rec_table(l_count).N_EXT_ATTR4       := v_get_ext_attr_db_rec.N_EXT_ATTR4;
2921             p_sr_audit_rec_table(l_count).N_EXT_ATTR5       := v_get_ext_attr_db_rec.N_EXT_ATTR5;
2922             p_sr_audit_rec_table(l_count).N_EXT_ATTR6       := v_get_ext_attr_db_rec.N_EXT_ATTR6;
2923             p_sr_audit_rec_table(l_count).N_EXT_ATTR7       := v_get_ext_attr_db_rec.N_EXT_ATTR7;
2924             p_sr_audit_rec_table(l_count).N_EXT_ATTR8       := v_get_ext_attr_db_rec.N_EXT_ATTR8;
2925             p_sr_audit_rec_table(l_count).N_EXT_ATTR9       := v_get_ext_attr_db_rec.N_EXT_ATTR9;
2926             p_sr_audit_rec_table(l_count).N_EXT_ATTR10      := v_get_ext_attr_db_rec.N_EXT_ATTR10;
2927             p_sr_audit_rec_table(l_count).N_EXT_ATTR11      := v_get_ext_attr_db_rec.N_EXT_ATTR11;
2928             p_sr_audit_rec_table(l_count).N_EXT_ATTR12      := v_get_ext_attr_db_rec.N_EXT_ATTR12;
2929             p_sr_audit_rec_table(l_count).N_EXT_ATTR13      := v_get_ext_attr_db_rec.N_EXT_ATTR13;
2930             p_sr_audit_rec_table(l_count).N_EXT_ATTR14      := v_get_ext_attr_db_rec.N_EXT_ATTR14;
2931             p_sr_audit_rec_table(l_count).N_EXT_ATTR15      := v_get_ext_attr_db_rec.N_EXT_ATTR15;
2932             p_sr_audit_rec_table(l_count).N_EXT_ATTR16      := v_get_ext_attr_db_rec.N_EXT_ATTR16;
2933             p_sr_audit_rec_table(l_count).N_EXT_ATTR17      := v_get_ext_attr_db_rec.N_EXT_ATTR17;
2934             p_sr_audit_rec_table(l_count).N_EXT_ATTR18      := v_get_ext_attr_db_rec.N_EXT_ATTR18;
2935             p_sr_audit_rec_table(l_count).N_EXT_ATTR19      := v_get_ext_attr_db_rec.N_EXT_ATTR19;
2936             p_sr_audit_rec_table(l_count).N_EXT_ATTR20      := v_get_ext_attr_db_rec.N_EXT_ATTR20;
2937             p_sr_audit_rec_table(l_count).N_EXT_ATTR21      := v_get_ext_attr_db_rec.N_EXT_ATTR21;
2938             p_sr_audit_rec_table(l_count).N_EXT_ATTR22      := v_get_ext_attr_db_rec.N_EXT_ATTR22;
2939             p_sr_audit_rec_table(l_count).N_EXT_ATTR23      := v_get_ext_attr_db_rec.N_EXT_ATTR23;
2940             p_sr_audit_rec_table(l_count).N_EXT_ATTR24      := v_get_ext_attr_db_rec.N_EXT_ATTR24;
2941             p_sr_audit_rec_table(l_count).N_EXT_ATTR25      := v_get_ext_attr_db_rec.N_EXT_ATTR25;
2942             p_sr_audit_rec_table(l_count).D_EXT_ATTR1       := v_get_ext_attr_db_rec.D_EXT_ATTR1;
2943             p_sr_audit_rec_table(l_count).D_EXT_ATTR2       := v_get_ext_attr_db_rec.D_EXT_ATTR2;
2944             p_sr_audit_rec_table(l_count).D_EXT_ATTR3       := v_get_ext_attr_db_rec.D_EXT_ATTR3;
2945             p_sr_audit_rec_table(l_count).D_EXT_ATTR4       := v_get_ext_attr_db_rec.D_EXT_ATTR4;
2946             p_sr_audit_rec_table(l_count).D_EXT_ATTR5       := v_get_ext_attr_db_rec.D_EXT_ATTR5;
2947             p_sr_audit_rec_table(l_count).D_EXT_ATTR6       := v_get_ext_attr_db_rec.D_EXT_ATTR6;
2948             p_sr_audit_rec_table(l_count).D_EXT_ATTR7       := v_get_ext_attr_db_rec.D_EXT_ATTR7;
2949             p_sr_audit_rec_table(l_count).D_EXT_ATTR8       := v_get_ext_attr_db_rec.D_EXT_ATTR8;
2950             p_sr_audit_rec_table(l_count).D_EXT_ATTR9       := v_get_ext_attr_db_rec.D_EXT_ATTR9;
2951             p_sr_audit_rec_table(l_count).D_EXT_ATTR10      := v_get_ext_attr_db_rec.D_EXT_ATTR10;
2952             p_sr_audit_rec_table(l_count).D_EXT_ATTR11      := v_get_ext_attr_db_rec.D_EXT_ATTR11;
2953             p_sr_audit_rec_table(l_count).D_EXT_ATTR12      := v_get_ext_attr_db_rec.D_EXT_ATTR12;
2954             p_sr_audit_rec_table(l_count).D_EXT_ATTR13      := v_get_ext_attr_db_rec.D_EXT_ATTR13;
2955             p_sr_audit_rec_table(l_count).D_EXT_ATTR14      := v_get_ext_attr_db_rec.D_EXT_ATTR14;
2956             p_sr_audit_rec_table(l_count).D_EXT_ATTR15      := v_get_ext_attr_db_rec.D_EXT_ATTR15;
2957             p_sr_audit_rec_table(l_count).D_EXT_ATTR16      := v_get_ext_attr_db_rec.D_EXT_ATTR16;
2958             p_sr_audit_rec_table(l_count).D_EXT_ATTR17      := v_get_ext_attr_db_rec.D_EXT_ATTR17;
2959             p_sr_audit_rec_table(l_count).D_EXT_ATTR18      := v_get_ext_attr_db_rec.D_EXT_ATTR18;
2960             p_sr_audit_rec_table(l_count).D_EXT_ATTR19      := v_get_ext_attr_db_rec.D_EXT_ATTR19;
2961             p_sr_audit_rec_table(l_count).D_EXT_ATTR20      := v_get_ext_attr_db_rec.D_EXT_ATTR20;
2962             p_sr_audit_rec_table(l_count).D_EXT_ATTR21      := v_get_ext_attr_db_rec.D_EXT_ATTR21;
2963             p_sr_audit_rec_table(l_count).D_EXT_ATTR22      := v_get_ext_attr_db_rec.D_EXT_ATTR22;
2964             p_sr_audit_rec_table(l_count).D_EXT_ATTR23      := v_get_ext_attr_db_rec.D_EXT_ATTR23;
2965             p_sr_audit_rec_table(l_count).D_EXT_ATTR24      := v_get_ext_attr_db_rec.D_EXT_ATTR24;
2966             p_sr_audit_rec_table(l_count).D_EXT_ATTR25      := v_get_ext_attr_db_rec.D_EXT_ATTR25;
2967             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR1     := v_get_ext_attr_db_rec.UOM_EXT_ATTR1;
2968             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR2     := v_get_ext_attr_db_rec.UOM_EXT_ATTR2;
2969             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR3     := v_get_ext_attr_db_rec.UOM_EXT_ATTR3;
2970             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR4     := v_get_ext_attr_db_rec.UOM_EXT_ATTR4;
2971             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR5     := v_get_ext_attr_db_rec.UOM_EXT_ATTR5;
2972             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR6     := v_get_ext_attr_db_rec.UOM_EXT_ATTR6;
2973             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR7     := v_get_ext_attr_db_rec.UOM_EXT_ATTR7;
2974             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR8     := v_get_ext_attr_db_rec.UOM_EXT_ATTR8;
2975             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR9     := v_get_ext_attr_db_rec.UOM_EXT_ATTR9;
2976             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR10    := v_get_ext_attr_db_rec.UOM_EXT_ATTR10;
2977             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR11    := v_get_ext_attr_db_rec.UOM_EXT_ATTR11;
2978             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR12    := v_get_ext_attr_db_rec.UOM_EXT_ATTR12;
2979             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR13    := v_get_ext_attr_db_rec.UOM_EXT_ATTR13;
2980             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR14    := v_get_ext_attr_db_rec.UOM_EXT_ATTR14;
2981             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR15    := v_get_ext_attr_db_rec.UOM_EXT_ATTR15;
2982             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR16    := v_get_ext_attr_db_rec.UOM_EXT_ATTR16;
2983             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR17    := v_get_ext_attr_db_rec.UOM_EXT_ATTR17;
2984             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR18    := v_get_ext_attr_db_rec.UOM_EXT_ATTR18;
2985             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR19    := v_get_ext_attr_db_rec.UOM_EXT_ATTR19;
2986             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR20    := v_get_ext_attr_db_rec.UOM_EXT_ATTR20;
2987             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR21    := v_get_ext_attr_db_rec.UOM_EXT_ATTR21;
2988             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR22    := v_get_ext_attr_db_rec.UOM_EXT_ATTR22;
2989             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR23    := v_get_ext_attr_db_rec.UOM_EXT_ATTR23;
2990             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR24    := v_get_ext_attr_db_rec.UOM_EXT_ATTR24;
2991             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR25    := v_get_ext_attr_db_rec.UOM_EXT_ATTR25;
2992            END IF;
2993 
2994           END IF;
2995           CLOSE c_get_ext_attr_db_rec;
2996           --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
2997 
2998      END IF;
2999  END IF;
3000 END populate_pr_ext_attr_audit_rec;
3001 
3002 PROCEDURE populate_sr_ext_attr_audit_rec(
3003           p_incident_id        IN NUMBER
3004          ,p_context            IN NUMBER
3005          ,p_attr_group_id      IN  NUMBER
3006          ,p_row_id             IN NUMBER
3007          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
3008          ,p_sr_audit_rec_table IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type
3009          ,x_rec_found      OUT NOCOPY VARCHAR2
3010          ) IS
3011 
3012 
3013 Cursor c_get_ext_attr_db_rec IS
3014 select * from cs_incidents_ext
3015 where incident_id = p_incident_id
3016   and context = p_context
3017   and attr_group_id  = p_attr_group_id;
3018 
3019 Cursor c_is_multi_row IS
3020 select multi_row_code
3021   from ego_attr_groups_v
3022  where attr_group_id = p_attr_group_id;
3023 
3024 Cursor c_get_unique_key (p_application_id IN NUMBER,
3025                          p_attr_group_name IN VARCHAR2,
3026                          p_attr_group_type IN VARCHAR2
3027                          ) IS
3028 select attr_name, database_column
3029   from ego_attrs_v
3030 where attr_group_name = p_attr_group_name
3031   and attr_group_type = p_attr_group_type
3032   and application_id =  p_application_id
3033   and unique_key_flag = 'Y';
3034 
3035 
3036 
3037 i NUMBER := 0;
3038 l_old_Ext_Attr_Audit_Tbl  Ext_Attr_Audit_Tbl_Type;
3039 l_multi_row_code VARCHAR2(1);
3040 l_attribute_name VARCHAR2(30);
3041 l_database_column_name VARCHAR2(30);
3042 l_application_id NUMBER;
3043 l_attr_group_type VARCHAR2(30);
3044 l_attr_group_name VARCHAR2(80);
3045 l_unique_value_str VARCHAR2(4000);
3046 L_unique_value_num NUMBER;
3047 l_unique_value_date DATE;
3048 l_unique_value_uom VARCHAR2(3);
3049 
3050 l_sql VARCHAR2(2000) := 'SELECT * FROM CS_INCIDENTS_EXT WHERE INCIDENT_ID = :P_INCIDENT_ID AND CONTEXT = :P_CONTEXT AND ATTR_GROUP_ID = :P_ATTR_GROUP_ID';
3051 l_cs_incidents_ext_rec cs_incidents_ext%ROWTYPE;
3052 
3053 v_get_ext_attr_db_rec c_get_ext_attr_db_rec%ROWTYPE;
3054 
3055 l_count NUMBER := 0;
3056 
3057 l_create_new_record VARCHAR2(1) := 'N';
3058 l_audit_table_empty VARCHAR2(1) := 'N';
3059 BEGIN
3060 
3061    --get the correct count of the records in the audit table
3062    --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT); --executed
3063 
3064    l_count := p_sr_audit_rec_table.COUNT;
3065 
3066    IF p_attr_group_id IS NOT NULL AND
3067       p_incident_id IS NOT NULL AND
3068       p_context IS NOT NULL THEN
3069 
3070       -- check if attribute group is multi_row_enabled
3071       OPEN c_is_multi_row;
3072       FETCH c_is_multi_row INTO l_multi_row_code;
3073       CLOSE c_is_multi_row;
3074 
3075       --DBMS_OUTPUT.PUT_LINE('Multi-Row flag is :'||l_multi_row_code); --executed
3076 
3077 
3078       IF l_multi_row_code = 'Y' then
3079 
3080          --DBMS_OUTPUT.PUT_LINE('In multi row logic');
3081          --DBMS_OUTPUT.PUT_LINE('Calling Get_Attr_Group_Metadata ');
3082 
3083          -- first get the attribute_group_name, attribute_group_type and application_id
3084          -- for this attribute_group_id
3085          Get_Attr_Group_Metadata (
3086                    p_attr_group_id                => p_attr_group_id
3087                   ,x_application_id               => l_application_id
3088                   ,x_attr_group_type              => l_attr_group_type
3089                   ,x_attr_group_name              => l_attr_group_name
3090          );
3091 
3092          --DBMS_OUTPUT.PUT_LINE('l_application_id'||l_application_id);
3093          --DBMS_OUTPUT.PUT_LINE('l_attr_group_type'||l_attr_group_type);
3094          --DBMS_OUTPUT.PUT_LINE('l_attr_group_name'||l_attr_group_name);
3095 
3096          IF l_application_id IS NOT NULL AND
3097             l_attr_group_type IS NOT NULL AND
3098             l_attr_group_name IS NOT NULL THEN
3099 
3100             --DBMS_OUTPUT.PUT_LINE('Getting unique key');
3101 
3102             --get the unique attribute maintained for this multi-row attribute group
3103             OPEN c_get_unique_key (l_application_id
3104                                   ,l_attr_group_name
3105                                   ,l_attr_group_type);
3106             FETCH c_get_unique_key into l_attribute_name, l_database_column_name;
3107             CLOSE c_get_unique_key;
3108 
3109             IF l_attribute_name IS NOT NULL THEN
3110 
3111                --DBMS_OUTPUT.PUT_LINE('l_attribute_name'||l_attribute_name);
3112                --DBMS_OUTPUT.PUT_LINE('l_database_column_name'||l_database_column_name);
3113 
3114                --traverse through the p_ext_attr_tbl and
3115                --get the value for the unique attribute group
3116                --this code assumes that the unique attribute is non-updateable
3117                FOR i IN 1..p_ext_attr_tbl.COUNT LOOP
3118 
3119                  IF  p_ext_attr_tbl(i).row_identifier = p_row_id AND
3120                      p_ext_attr_tbl(i).attr_name = l_attribute_name OR
3121                      p_ext_attr_tbl(i).column_name = l_database_column_name THEN
3122 
3123                      --match found
3124                      --get the unique value.  However the unique value may be a string
3125                      --date, character, or uom so we have to check all possible combinations.
3126 
3127                      --DBMS_OUTPUT.PUT_LINE('match found');
3128 
3129                      IF p_ext_attr_tbl(i).attr_value_str IS NOT NULL Then
3130                        --unique value is a string
3131                        l_unique_value_str := p_ext_attr_tbl(i).attr_value_str;
3132                        --dynamically build a cusrsor and get value from the database;
3133                        --assisgn the value to the record structure
3134 
3135                        l_sql := l_sql||'and '||l_database_column_name||' = '||l_unique_value_str;
3136 
3137                      ELSIF p_ext_attr_tbl(i).attr_value_num IS NOT NULL Then
3138                         l_unique_value_num := p_ext_attr_tbl(i).attr_value_num;
3139                        --dynamically build a cusrsor and get value from the database;
3140                        --assisgn the value to the record structure
3141 
3142                        --DBMS_OUTPUT.PUT_LINE('p_ext_attr_tbl(i).attr_value_num'||p_ext_attr_tbl(i).attr_value_num);
3143 
3144                        l_sql := l_sql||' and '||l_database_column_name||' = '||l_unique_value_num;
3145 
3146                        --DBMS_OUTPUT.PUT_LINE('l_sql'||l_sql);
3147 
3148                      ELSIF p_ext_attr_tbl(i).attr_value_date IS NOT NULL Then
3149                         l_unique_value_date := p_ext_attr_tbl(i).attr_value_date;
3150 
3151                         l_sql := l_sql||'and '||l_database_column_name||' = '||l_unique_value_date;
3152                      ELSE
3153                         IF p_ext_attr_tbl(i).attr_unit_of_measure IS NOT NULL then
3154                           l_unique_value_uom := p_ext_attr_tbl(i).attr_unit_of_measure;
3155 
3156                           l_sql := l_sql||'and '||l_database_column_name||' = '||l_unique_value_uom;
3157                         END IF;
3158                      END IF;
3159 
3160                     --DBMS_OUTPUT.PUT_LINE('executing sql');
3161 
3162                     EXIT;
3163                   END IF; -- end if of row_identifier, l_attribute_name, l_database_name not null
3164                 END LOOP;-- end of loop
3165 
3166                 BEGIN
3167 
3168                   EXECUTE IMMEDIATE l_sql INTO l_cs_incidents_ext_rec using p_incident_id, p_context, p_attr_group_id;
3169                   --DBMS_OUTPUT.PUT_LINE('executed sql');
3170                 EXCEPTION
3171                   WHEN NO_DATA_FOUND THEN
3172                     x_rec_found := 'N';
3173                 END;
3174 
3175               --Check l_cs_incidents_ext_rec if record exists
3176 
3177               IF l_cs_incidents_ext_rec.extension_id IS NOT NULL THEN
3178 
3179                     -- Record exists
3180                     x_rec_found := 'Y';
3181                     -- pass the value from the cursor variable to the l_old_Ext_Attr_Audit_Rec table
3182                     --DBMS_OUTPUT.PUT_LINE('Record Exists');
3183 
3184                     -- loop through the audit table passed in and see if you can find the record
3185                     -- this is for a 'CREATE' situation
3186 
3187                     --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT);
3188 
3189                     IF p_sr_audit_rec_table.COUNT > 0 THEN
3190 
3191                       --DBMS_OUTPUT.PUT_LINE('In loooop');
3192                       FOR i IN 1.. p_sr_audit_rec_table.COUNT LOOP
3193                         IF p_sr_audit_rec_table(i).pk_column_1 = p_incident_id AND
3194                            p_sr_audit_rec_table(i).context = p_context AND
3195                            p_sr_audit_rec_table(i).attr_group_id = p_attr_group_id AND
3196                            p_sr_audit_rec_table(i).row_identifier = p_row_id THEN
3197 
3198                            IF p_sr_audit_rec_table(i).extension_id IS NULL THEN
3199 
3200                            l_create_new_record := 'N';
3201 
3202                            --DBMS_OUTPUT.PUT_LINE('l_create_new_record'||l_create_new_record);
3203                            --DBMS_OUTPUT.PUT_LINE('Match found for audit record');
3204 
3205                            p_sr_audit_rec_table(i).extension_id      := l_cs_incidents_ext_rec.extension_id;
3206                            p_sr_audit_rec_table(i).pk_column_1       := p_incident_id;
3207                            p_sr_audit_rec_table(i).pk_column_2       := null;
3208                            p_sr_audit_rec_table(i).pk_column_3       := null;
3209                            p_sr_audit_rec_table(i).pk_column_4       := null;
3210                            p_sr_audit_rec_table(i).pk_column_5       := null;
3211                            p_sr_audit_rec_table(i).CONTEXT           := p_context;
3212                            p_sr_audit_rec_table(i).ATTR_GROUP_ID     := p_attr_group_id;
3213                            p_sr_audit_rec_table(i).C_EXT_ATTR1       := l_cs_incidents_ext_rec.C_EXT_ATTR1;
3214                            p_sr_audit_rec_table(i).C_EXT_ATTR2       := l_cs_incidents_ext_rec.C_EXT_ATTR2;
3215                            p_sr_audit_rec_table(i).C_EXT_ATTR3       := l_cs_incidents_ext_rec.C_EXT_ATTR3;
3216                            p_sr_audit_rec_table(i).C_EXT_ATTR4       := l_cs_incidents_ext_rec.C_EXT_ATTR4;
3217                            p_sr_audit_rec_table(i).C_EXT_ATTR5       := l_cs_incidents_ext_rec.C_EXT_ATTR5;
3218                            p_sr_audit_rec_table(i).C_EXT_ATTR6       := l_cs_incidents_ext_rec.C_EXT_ATTR6;
3219                            p_sr_audit_rec_table(i).C_EXT_ATTR7       := l_cs_incidents_ext_rec.C_EXT_ATTR7;
3220                            p_sr_audit_rec_table(i).C_EXT_ATTR8       := l_cs_incidents_ext_rec.C_EXT_ATTR8;
3221                            p_sr_audit_rec_table(i).C_EXT_ATTR9       := l_cs_incidents_ext_rec.C_EXT_ATTR9;
3222                            p_sr_audit_rec_table(i).C_EXT_ATTR10      := l_cs_incidents_ext_rec.C_EXT_ATTR10;
3223                            p_sr_audit_rec_table(i).C_EXT_ATTR11      := l_cs_incidents_ext_rec.C_EXT_ATTR11;
3224                            p_sr_audit_rec_table(i).C_EXT_ATTR12      := l_cs_incidents_ext_rec.C_EXT_ATTR12;
3225                            p_sr_audit_rec_table(i).C_EXT_ATTR13      := l_cs_incidents_ext_rec.C_EXT_ATTR13;
3226                            p_sr_audit_rec_table(i).C_EXT_ATTR14      := l_cs_incidents_ext_rec.C_EXT_ATTR14;
3227                            p_sr_audit_rec_table(i).C_EXT_ATTR15      := l_cs_incidents_ext_rec.C_EXT_ATTR15;
3228                            p_sr_audit_rec_table(i).C_EXT_ATTR16      := l_cs_incidents_ext_rec.C_EXT_ATTR16;
3229                            p_sr_audit_rec_table(i).C_EXT_ATTR17      := l_cs_incidents_ext_rec.C_EXT_ATTR17;
3230                            p_sr_audit_rec_table(i).C_EXT_ATTR18      := l_cs_incidents_ext_rec.C_EXT_ATTR18;
3231                            p_sr_audit_rec_table(i).C_EXT_ATTR19      := l_cs_incidents_ext_rec.C_EXT_ATTR19;
3232                            p_sr_audit_rec_table(i).C_EXT_ATTR20      := l_cs_incidents_ext_rec.C_EXT_ATTR20;
3233                            p_sr_audit_rec_table(i).C_EXT_ATTR21      := l_cs_incidents_ext_rec.C_EXT_ATTR21;
3234                            p_sr_audit_rec_table(i).C_EXT_ATTR22      := l_cs_incidents_ext_rec.C_EXT_ATTR22;
3235                            p_sr_audit_rec_table(i).C_EXT_ATTR23      := l_cs_incidents_ext_rec.C_EXT_ATTR23;
3236                            p_sr_audit_rec_table(i).C_EXT_ATTR24      := l_cs_incidents_ext_rec.C_EXT_ATTR24;
3237                            p_sr_audit_rec_table(i).C_EXT_ATTR25      := l_cs_incidents_ext_rec.C_EXT_ATTR25;
3238                            p_sr_audit_rec_table(i).C_EXT_ATTR26      := l_cs_incidents_ext_rec.C_EXT_ATTR26;
3239                            p_sr_audit_rec_table(i).C_EXT_ATTR27      := l_cs_incidents_ext_rec.C_EXT_ATTR27;
3240                            p_sr_audit_rec_table(i).C_EXT_ATTR28      := l_cs_incidents_ext_rec.C_EXT_ATTR28;
3241                            p_sr_audit_rec_table(i).C_EXT_ATTR29      := l_cs_incidents_ext_rec.C_EXT_ATTR29;
3242                            p_sr_audit_rec_table(i).C_EXT_ATTR30      := l_cs_incidents_ext_rec.C_EXT_ATTR30;
3243                            p_sr_audit_rec_table(i).C_EXT_ATTR31      := l_cs_incidents_ext_rec.C_EXT_ATTR31;
3244                            p_sr_audit_rec_table(i).C_EXT_ATTR32      := l_cs_incidents_ext_rec.C_EXT_ATTR32;
3245                            p_sr_audit_rec_table(i).C_EXT_ATTR33      := l_cs_incidents_ext_rec.C_EXT_ATTR33;
3246                            p_sr_audit_rec_table(i).C_EXT_ATTR34      := l_cs_incidents_ext_rec.C_EXT_ATTR34;
3247                            p_sr_audit_rec_table(i).C_EXT_ATTR35      := l_cs_incidents_ext_rec.C_EXT_ATTR35;
3248                            p_sr_audit_rec_table(i).C_EXT_ATTR36      := l_cs_incidents_ext_rec.C_EXT_ATTR36;
3249                            p_sr_audit_rec_table(i).C_EXT_ATTR37      := l_cs_incidents_ext_rec.C_EXT_ATTR37;
3250                            p_sr_audit_rec_table(i).C_EXT_ATTR38      := l_cs_incidents_ext_rec.C_EXT_ATTR38;
3251                            p_sr_audit_rec_table(i).C_EXT_ATTR39      := l_cs_incidents_ext_rec.C_EXT_ATTR38;
3252                            p_sr_audit_rec_table(i).C_EXT_ATTR40      := l_cs_incidents_ext_rec.C_EXT_ATTR40;
3253                            p_sr_audit_rec_table(i).C_EXT_ATTR41      := l_cs_incidents_ext_rec.C_EXT_ATTR41;
3254                            p_sr_audit_rec_table(i).C_EXT_ATTR42      := l_cs_incidents_ext_rec.C_EXT_ATTR42;
3255                            p_sr_audit_rec_table(i).C_EXT_ATTR43      := l_cs_incidents_ext_rec.C_EXT_ATTR43;
3256                            p_sr_audit_rec_table(i).C_EXT_ATTR44      := l_cs_incidents_ext_rec.C_EXT_ATTR44;
3257                            p_sr_audit_rec_table(i).C_EXT_ATTR45      := l_cs_incidents_ext_rec.C_EXT_ATTR45;
3258                            p_sr_audit_rec_table(i).C_EXT_ATTR46      := l_cs_incidents_ext_rec.C_EXT_ATTR46;
3259                            p_sr_audit_rec_table(i).C_EXT_ATTR47      := l_cs_incidents_ext_rec.C_EXT_ATTR47;
3260                            p_sr_audit_rec_table(i).C_EXT_ATTR48      := l_cs_incidents_ext_rec.C_EXT_ATTR48;
3261                            p_sr_audit_rec_table(i).C_EXT_ATTR49      := l_cs_incidents_ext_rec.C_EXT_ATTR49;
3262                            p_sr_audit_rec_table(i).C_EXT_ATTR50      := l_cs_incidents_ext_rec.C_EXT_ATTR50;
3263                            p_sr_audit_rec_table(i).N_EXT_ATTR1       := l_cs_incidents_ext_rec.N_EXT_ATTR1;
3264                            p_sr_audit_rec_table(i).N_EXT_ATTR2       := l_cs_incidents_ext_rec.N_EXT_ATTR2;
3265                            p_sr_audit_rec_table(i).N_EXT_ATTR3       := l_cs_incidents_ext_rec.N_EXT_ATTR3;
3266                            p_sr_audit_rec_table(i).N_EXT_ATTR4       := l_cs_incidents_ext_rec.N_EXT_ATTR4;
3267                            p_sr_audit_rec_table(i).N_EXT_ATTR5       := l_cs_incidents_ext_rec.N_EXT_ATTR5;
3268                            p_sr_audit_rec_table(i).N_EXT_ATTR6       := l_cs_incidents_ext_rec.N_EXT_ATTR6;
3269                            p_sr_audit_rec_table(i).N_EXT_ATTR7       := l_cs_incidents_ext_rec.N_EXT_ATTR7;
3270                            p_sr_audit_rec_table(i).N_EXT_ATTR8       := l_cs_incidents_ext_rec.N_EXT_ATTR8;
3271                            p_sr_audit_rec_table(i).N_EXT_ATTR9       := l_cs_incidents_ext_rec.N_EXT_ATTR9;
3272                            p_sr_audit_rec_table(i).N_EXT_ATTR10      := l_cs_incidents_ext_rec.N_EXT_ATTR10;
3273                            p_sr_audit_rec_table(i).N_EXT_ATTR11      := l_cs_incidents_ext_rec.N_EXT_ATTR11;
3274                            p_sr_audit_rec_table(i).N_EXT_ATTR12      := l_cs_incidents_ext_rec.N_EXT_ATTR12;
3275                            p_sr_audit_rec_table(i).N_EXT_ATTR13      := l_cs_incidents_ext_rec.N_EXT_ATTR13;
3276                            p_sr_audit_rec_table(i).N_EXT_ATTR14      := l_cs_incidents_ext_rec.N_EXT_ATTR14;
3277                            p_sr_audit_rec_table(i).N_EXT_ATTR15      := l_cs_incidents_ext_rec.N_EXT_ATTR15;
3278                            p_sr_audit_rec_table(i).N_EXT_ATTR16      := l_cs_incidents_ext_rec.N_EXT_ATTR16;
3279                            p_sr_audit_rec_table(i).N_EXT_ATTR17      := l_cs_incidents_ext_rec.N_EXT_ATTR17;
3280                            p_sr_audit_rec_table(i).N_EXT_ATTR18      := l_cs_incidents_ext_rec.N_EXT_ATTR18;
3281                            p_sr_audit_rec_table(i).N_EXT_ATTR19      := l_cs_incidents_ext_rec.N_EXT_ATTR19;
3282                            p_sr_audit_rec_table(i).N_EXT_ATTR20      := l_cs_incidents_ext_rec.N_EXT_ATTR20;
3283                            p_sr_audit_rec_table(i).N_EXT_ATTR21      := l_cs_incidents_ext_rec.N_EXT_ATTR21;
3284                            p_sr_audit_rec_table(i).N_EXT_ATTR22      := l_cs_incidents_ext_rec.N_EXT_ATTR22;
3285                            p_sr_audit_rec_table(i).N_EXT_ATTR23      := l_cs_incidents_ext_rec.N_EXT_ATTR23;
3286                            p_sr_audit_rec_table(i).N_EXT_ATTR24      := l_cs_incidents_ext_rec.N_EXT_ATTR24;
3287                            p_sr_audit_rec_table(i).N_EXT_ATTR25      := l_cs_incidents_ext_rec.N_EXT_ATTR25;
3288                            p_sr_audit_rec_table(i).D_EXT_ATTR1       := l_cs_incidents_ext_rec.D_EXT_ATTR1;
3289                            p_sr_audit_rec_table(i).D_EXT_ATTR2       := l_cs_incidents_ext_rec.D_EXT_ATTR2;
3290                            p_sr_audit_rec_table(i).D_EXT_ATTR3       := l_cs_incidents_ext_rec.D_EXT_ATTR3;
3291                            p_sr_audit_rec_table(i).D_EXT_ATTR4       := l_cs_incidents_ext_rec.D_EXT_ATTR4;
3292                            p_sr_audit_rec_table(i).D_EXT_ATTR5       := l_cs_incidents_ext_rec.D_EXT_ATTR5;
3293                            p_sr_audit_rec_table(i).D_EXT_ATTR6       := l_cs_incidents_ext_rec.D_EXT_ATTR6;
3294                            p_sr_audit_rec_table(i).D_EXT_ATTR7       := l_cs_incidents_ext_rec.D_EXT_ATTR7;
3295                            p_sr_audit_rec_table(i).D_EXT_ATTR8       := l_cs_incidents_ext_rec.D_EXT_ATTR8;
3296                            p_sr_audit_rec_table(i).D_EXT_ATTR9       := l_cs_incidents_ext_rec.D_EXT_ATTR9;
3297                            p_sr_audit_rec_table(i).D_EXT_ATTR10      := l_cs_incidents_ext_rec.D_EXT_ATTR10;
3298                            p_sr_audit_rec_table(i).D_EXT_ATTR11      := l_cs_incidents_ext_rec.D_EXT_ATTR11;
3299                            p_sr_audit_rec_table(i).D_EXT_ATTR12      := l_cs_incidents_ext_rec.D_EXT_ATTR12;
3300                            p_sr_audit_rec_table(i).D_EXT_ATTR13      := l_cs_incidents_ext_rec.D_EXT_ATTR13;
3301                            p_sr_audit_rec_table(i).D_EXT_ATTR14      := l_cs_incidents_ext_rec.D_EXT_ATTR14;
3302                            p_sr_audit_rec_table(i).D_EXT_ATTR15      := l_cs_incidents_ext_rec.D_EXT_ATTR15;
3303                            p_sr_audit_rec_table(i).D_EXT_ATTR16      := l_cs_incidents_ext_rec.D_EXT_ATTR16;
3304                            p_sr_audit_rec_table(i).D_EXT_ATTR17      := l_cs_incidents_ext_rec.D_EXT_ATTR17;
3305                            p_sr_audit_rec_table(i).D_EXT_ATTR18      := l_cs_incidents_ext_rec.D_EXT_ATTR18;
3306                            p_sr_audit_rec_table(i).D_EXT_ATTR19      := l_cs_incidents_ext_rec.D_EXT_ATTR19;
3307                            p_sr_audit_rec_table(i).D_EXT_ATTR20      := l_cs_incidents_ext_rec.D_EXT_ATTR20;
3308                            p_sr_audit_rec_table(i).D_EXT_ATTR21      := l_cs_incidents_ext_rec.D_EXT_ATTR21;
3309                            p_sr_audit_rec_table(i).D_EXT_ATTR22      := l_cs_incidents_ext_rec.D_EXT_ATTR22;
3310                            p_sr_audit_rec_table(i).D_EXT_ATTR23      := l_cs_incidents_ext_rec.D_EXT_ATTR23;
3311                            p_sr_audit_rec_table(i).D_EXT_ATTR24      := l_cs_incidents_ext_rec.D_EXT_ATTR24;
3312                            p_sr_audit_rec_table(i).D_EXT_ATTR25      := l_cs_incidents_ext_rec.D_EXT_ATTR25;
3313                            p_sr_audit_rec_table(i).UOM_EXT_ATTR1     := l_cs_incidents_ext_rec.UOM_EXT_ATTR1;
3314                            p_sr_audit_rec_table(i).UOM_EXT_ATTR2     := l_cs_incidents_ext_rec.UOM_EXT_ATTR2;
3315                            p_sr_audit_rec_table(i).UOM_EXT_ATTR3     := l_cs_incidents_ext_rec.UOM_EXT_ATTR3;
3316                            p_sr_audit_rec_table(i).UOM_EXT_ATTR4     := l_cs_incidents_ext_rec.UOM_EXT_ATTR4;
3317                            p_sr_audit_rec_table(i).UOM_EXT_ATTR5     := l_cs_incidents_ext_rec.UOM_EXT_ATTR5;
3318                            p_sr_audit_rec_table(i).UOM_EXT_ATTR6     := l_cs_incidents_ext_rec.UOM_EXT_ATTR6;
3319                            p_sr_audit_rec_table(i).UOM_EXT_ATTR7     := l_cs_incidents_ext_rec.UOM_EXT_ATTR7;
3320                            p_sr_audit_rec_table(i).UOM_EXT_ATTR8     := l_cs_incidents_ext_rec.UOM_EXT_ATTR8;
3321                            p_sr_audit_rec_table(i).UOM_EXT_ATTR9     := l_cs_incidents_ext_rec.UOM_EXT_ATTR9;
3322                            p_sr_audit_rec_table(i).UOM_EXT_ATTR10    := l_cs_incidents_ext_rec.UOM_EXT_ATTR10;
3323                            p_sr_audit_rec_table(i).UOM_EXT_ATTR11    := l_cs_incidents_ext_rec.UOM_EXT_ATTR11;
3324                            p_sr_audit_rec_table(i).UOM_EXT_ATTR12    := l_cs_incidents_ext_rec.UOM_EXT_ATTR12;
3325                            p_sr_audit_rec_table(i).UOM_EXT_ATTR13    := l_cs_incidents_ext_rec.UOM_EXT_ATTR13;
3326                            p_sr_audit_rec_table(i).UOM_EXT_ATTR14    := l_cs_incidents_ext_rec.UOM_EXT_ATTR14;
3327                            p_sr_audit_rec_table(i).UOM_EXT_ATTR15    := l_cs_incidents_ext_rec.UOM_EXT_ATTR15;
3328                            p_sr_audit_rec_table(i).UOM_EXT_ATTR16    := l_cs_incidents_ext_rec.UOM_EXT_ATTR16;
3329                            p_sr_audit_rec_table(i).UOM_EXT_ATTR17    := l_cs_incidents_ext_rec.UOM_EXT_ATTR17;
3330                            p_sr_audit_rec_table(i).UOM_EXT_ATTR18    := l_cs_incidents_ext_rec.UOM_EXT_ATTR18;
3331                            p_sr_audit_rec_table(i).UOM_EXT_ATTR19    := l_cs_incidents_ext_rec.UOM_EXT_ATTR19;
3332                            p_sr_audit_rec_table(i).UOM_EXT_ATTR20    := l_cs_incidents_ext_rec.UOM_EXT_ATTR20;
3333                            p_sr_audit_rec_table(i).UOM_EXT_ATTR21    := l_cs_incidents_ext_rec.UOM_EXT_ATTR21;
3334                            p_sr_audit_rec_table(i).UOM_EXT_ATTR22    := l_cs_incidents_ext_rec.UOM_EXT_ATTR22;
3335                            p_sr_audit_rec_table(i).UOM_EXT_ATTR23    := l_cs_incidents_ext_rec.UOM_EXT_ATTR23;
3336                            p_sr_audit_rec_table(i).UOM_EXT_ATTR24    := l_cs_incidents_ext_rec.UOM_EXT_ATTR24;
3337                            p_sr_audit_rec_table(i).UOM_EXT_ATTR25    := l_cs_incidents_ext_rec.UOM_EXT_ATTR25;
3338 
3339                            -- need to exit;
3340                            EXIT;
3341 
3342                           END IF;
3343 
3344                 ELSE
3345                    l_create_new_record := 'Y';
3346                 END IF;
3347               END LOOP;
3348 
3349               --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
3350             ELSE
3351               l_audit_table_empty := 'Y';
3352             END IF;
3353 
3354             --DBMS_OUTPUT.PUT_LINE('l_create_new_rec'||l_create_new_record);
3355             --DBMS_OUTPUT.PUT_LINE('l_audit_table_empty'||l_audit_table_empty);
3356 
3357 
3358 
3359                IF l_create_new_record = 'Y'  OR
3360                   l_audit_table_empty = 'Y' THEN
3361 
3362                     l_count := l_count + 1;
3363                     p_sr_audit_rec_table (l_count).extension_id     := l_cs_incidents_ext_rec.extension_id;
3364                     p_sr_audit_rec_table (l_count).pk_column_1      := l_cs_incidents_ext_rec.incident_id;
3365                     p_sr_audit_rec_table (l_count).pk_column_2      := null;
3366                     p_sr_audit_rec_table (l_count).pk_column_3      := null;
3367                     p_sr_audit_rec_table (l_count).pk_column_4      := null;
3368                     p_sr_audit_rec_table (l_count).CONTEXT          := l_cs_incidents_ext_rec.context;
3369                     p_sr_audit_rec_table (l_count).ATTR_GROUP_ID    := l_cs_incidents_ext_rec.attr_group_id;
3370                     p_sr_audit_rec_table (l_count).C_EXT_ATTR1      := l_cs_incidents_ext_rec.C_EXT_ATTR1;
3371                     p_sr_audit_rec_table (l_count).C_EXT_ATTR2      := l_cs_incidents_ext_rec.C_EXT_ATTR2;
3372                     p_sr_audit_rec_table (l_count).C_EXT_ATTR3      := l_cs_incidents_ext_rec.C_EXT_ATTR3;
3373                     p_sr_audit_rec_table (l_count).C_EXT_ATTR4      := l_cs_incidents_ext_rec.C_EXT_ATTR4;
3374                     p_sr_audit_rec_table (l_count).C_EXT_ATTR5      := l_cs_incidents_ext_rec.C_EXT_ATTR5;
3375                     p_sr_audit_rec_table (l_count).C_EXT_ATTR6      := l_cs_incidents_ext_rec.C_EXT_ATTR6;
3376                     p_sr_audit_rec_table (l_count).C_EXT_ATTR7      := l_cs_incidents_ext_rec.C_EXT_ATTR7;
3377                     p_sr_audit_rec_table (l_count).C_EXT_ATTR8      := l_cs_incidents_ext_rec.C_EXT_ATTR8;
3378                     p_sr_audit_rec_table (l_count).C_EXT_ATTR9      := l_cs_incidents_ext_rec.C_EXT_ATTR9;
3379                     p_sr_audit_rec_table (l_count).C_EXT_ATTR10      := l_cs_incidents_ext_rec.C_EXT_ATTR10;
3380                     p_sr_audit_rec_table (l_count).C_EXT_ATTR11      := l_cs_incidents_ext_rec.C_EXT_ATTR11;
3381                     p_sr_audit_rec_table (l_count).C_EXT_ATTR12      := l_cs_incidents_ext_rec.C_EXT_ATTR12;
3382                     p_sr_audit_rec_table (l_count).C_EXT_ATTR13      := l_cs_incidents_ext_rec.C_EXT_ATTR13;
3383                     p_sr_audit_rec_table (l_count).C_EXT_ATTR14      := l_cs_incidents_ext_rec.C_EXT_ATTR14;
3384                     p_sr_audit_rec_table (l_count).C_EXT_ATTR15      := l_cs_incidents_ext_rec.C_EXT_ATTR15;
3385                     p_sr_audit_rec_table (l_count).C_EXT_ATTR16      := l_cs_incidents_ext_rec.C_EXT_ATTR16;
3386                     p_sr_audit_rec_table (l_count).C_EXT_ATTR17      := l_cs_incidents_ext_rec.C_EXT_ATTR17;
3387                     p_sr_audit_rec_table (l_count).C_EXT_ATTR18      := l_cs_incidents_ext_rec.C_EXT_ATTR18;
3388                     p_sr_audit_rec_table (l_count).C_EXT_ATTR19      := l_cs_incidents_ext_rec.C_EXT_ATTR19;
3389                     p_sr_audit_rec_table (l_count).C_EXT_ATTR20      := l_cs_incidents_ext_rec.C_EXT_ATTR20;
3390                     p_sr_audit_rec_table (l_count).C_EXT_ATTR21      := l_cs_incidents_ext_rec.C_EXT_ATTR21;
3391                     p_sr_audit_rec_table (l_count).C_EXT_ATTR22      := l_cs_incidents_ext_rec.C_EXT_ATTR22;
3392                     p_sr_audit_rec_table (l_count).C_EXT_ATTR23      := l_cs_incidents_ext_rec.C_EXT_ATTR23;
3393                     p_sr_audit_rec_table (l_count).C_EXT_ATTR24      := l_cs_incidents_ext_rec.C_EXT_ATTR24;
3394                     p_sr_audit_rec_table (l_count).C_EXT_ATTR25      := l_cs_incidents_ext_rec.C_EXT_ATTR25;
3395                     p_sr_audit_rec_table (l_count).C_EXT_ATTR26      := l_cs_incidents_ext_rec.C_EXT_ATTR26;
3396                     p_sr_audit_rec_table (l_count).C_EXT_ATTR27      := l_cs_incidents_ext_rec.C_EXT_ATTR27;
3397                     p_sr_audit_rec_table (l_count).C_EXT_ATTR28      := l_cs_incidents_ext_rec.C_EXT_ATTR28;
3398                     p_sr_audit_rec_table (l_count).C_EXT_ATTR29      := l_cs_incidents_ext_rec.C_EXT_ATTR29;
3399                     p_sr_audit_rec_table (l_count).C_EXT_ATTR30      := l_cs_incidents_ext_rec.C_EXT_ATTR30;
3400                     p_sr_audit_rec_table (l_count).C_EXT_ATTR31      := l_cs_incidents_ext_rec.C_EXT_ATTR31;
3401                     p_sr_audit_rec_table (l_count).C_EXT_ATTR32      := l_cs_incidents_ext_rec.C_EXT_ATTR32;
3402                     p_sr_audit_rec_table (l_count).C_EXT_ATTR33      := l_cs_incidents_ext_rec.C_EXT_ATTR33;
3403                     p_sr_audit_rec_table (l_count).C_EXT_ATTR34      := l_cs_incidents_ext_rec.C_EXT_ATTR34;
3404                     p_sr_audit_rec_table (l_count).C_EXT_ATTR35      := l_cs_incidents_ext_rec.C_EXT_ATTR35;
3405                     p_sr_audit_rec_table (l_count).C_EXT_ATTR36      := l_cs_incidents_ext_rec.C_EXT_ATTR36;
3406                     p_sr_audit_rec_table (l_count).C_EXT_ATTR37      := l_cs_incidents_ext_rec.C_EXT_ATTR37;
3407                     p_sr_audit_rec_table (l_count).C_EXT_ATTR38      := l_cs_incidents_ext_rec.C_EXT_ATTR38;
3408                     p_sr_audit_rec_table (l_count).C_EXT_ATTR39      := l_cs_incidents_ext_rec.C_EXT_ATTR38;
3409                     p_sr_audit_rec_table (l_count).C_EXT_ATTR40      := l_cs_incidents_ext_rec.C_EXT_ATTR40;
3410                     p_sr_audit_rec_table (l_count).C_EXT_ATTR41      := l_cs_incidents_ext_rec.C_EXT_ATTR41;
3411                     p_sr_audit_rec_table (l_count).C_EXT_ATTR42      := l_cs_incidents_ext_rec.C_EXT_ATTR42;
3412                     p_sr_audit_rec_table (l_count).C_EXT_ATTR43      := l_cs_incidents_ext_rec.C_EXT_ATTR43;
3413                     p_sr_audit_rec_table (l_count).C_EXT_ATTR44      := l_cs_incidents_ext_rec.C_EXT_ATTR44;
3414                     p_sr_audit_rec_table (l_count).C_EXT_ATTR45      := l_cs_incidents_ext_rec.C_EXT_ATTR45;
3415                     p_sr_audit_rec_table (l_count).C_EXT_ATTR46      := l_cs_incidents_ext_rec.C_EXT_ATTR46;
3416                     p_sr_audit_rec_table (l_count).C_EXT_ATTR47      := l_cs_incidents_ext_rec.C_EXT_ATTR47;
3417                     p_sr_audit_rec_table (l_count).C_EXT_ATTR48      := l_cs_incidents_ext_rec.C_EXT_ATTR48;
3418                     p_sr_audit_rec_table (l_count).C_EXT_ATTR49      := l_cs_incidents_ext_rec.C_EXT_ATTR49;
3419                     p_sr_audit_rec_table (l_count).C_EXT_ATTR50      := l_cs_incidents_ext_rec.C_EXT_ATTR50;
3420                     p_sr_audit_rec_table (l_count).N_EXT_ATTR1       := l_cs_incidents_ext_rec.N_EXT_ATTR1;
3421                     p_sr_audit_rec_table (l_count).N_EXT_ATTR2       := l_cs_incidents_ext_rec.N_EXT_ATTR2;
3422                     p_sr_audit_rec_table (l_count).N_EXT_ATTR3       := l_cs_incidents_ext_rec.N_EXT_ATTR3;
3423                     p_sr_audit_rec_table (l_count).N_EXT_ATTR4       := l_cs_incidents_ext_rec.N_EXT_ATTR4;
3424                     p_sr_audit_rec_table (l_count).N_EXT_ATTR5       := l_cs_incidents_ext_rec.N_EXT_ATTR5;
3425                     p_sr_audit_rec_table (l_count).N_EXT_ATTR6       := l_cs_incidents_ext_rec.N_EXT_ATTR6;
3426                     p_sr_audit_rec_table (l_count).N_EXT_ATTR7       := l_cs_incidents_ext_rec.N_EXT_ATTR7;
3427                     p_sr_audit_rec_table (l_count).N_EXT_ATTR8       := l_cs_incidents_ext_rec.N_EXT_ATTR8;
3428                     p_sr_audit_rec_table (l_count).N_EXT_ATTR9       := l_cs_incidents_ext_rec.N_EXT_ATTR9;
3429                     p_sr_audit_rec_table (l_count).N_EXT_ATTR10      := l_cs_incidents_ext_rec.N_EXT_ATTR10;
3430                     p_sr_audit_rec_table (l_count).N_EXT_ATTR11      := l_cs_incidents_ext_rec.N_EXT_ATTR11;
3431                     p_sr_audit_rec_table (l_count).N_EXT_ATTR12      := l_cs_incidents_ext_rec.N_EXT_ATTR12;
3432                     p_sr_audit_rec_table (l_count).N_EXT_ATTR13      := l_cs_incidents_ext_rec.N_EXT_ATTR13;
3433                     p_sr_audit_rec_table (l_count).N_EXT_ATTR14      := l_cs_incidents_ext_rec.N_EXT_ATTR14;
3434                     p_sr_audit_rec_table (l_count).N_EXT_ATTR15      := l_cs_incidents_ext_rec.N_EXT_ATTR15;
3435                     p_sr_audit_rec_table (l_count).N_EXT_ATTR16      := l_cs_incidents_ext_rec.N_EXT_ATTR16;
3436                     p_sr_audit_rec_table (l_count).N_EXT_ATTR17      := l_cs_incidents_ext_rec.N_EXT_ATTR17;
3437                     p_sr_audit_rec_table (l_count).N_EXT_ATTR18      := l_cs_incidents_ext_rec.N_EXT_ATTR18;
3438                     p_sr_audit_rec_table (l_count).N_EXT_ATTR19      := l_cs_incidents_ext_rec.N_EXT_ATTR19;
3439                     p_sr_audit_rec_table (l_count).N_EXT_ATTR20      := l_cs_incidents_ext_rec.N_EXT_ATTR20;
3440                     p_sr_audit_rec_table (l_count).N_EXT_ATTR21      := l_cs_incidents_ext_rec.N_EXT_ATTR21;
3441                     p_sr_audit_rec_table (l_count).N_EXT_ATTR22      := l_cs_incidents_ext_rec.N_EXT_ATTR22;
3442                     p_sr_audit_rec_table (l_count).N_EXT_ATTR23      := l_cs_incidents_ext_rec.N_EXT_ATTR23;
3443                     p_sr_audit_rec_table (l_count).N_EXT_ATTR24      := l_cs_incidents_ext_rec.N_EXT_ATTR24;
3444                     p_sr_audit_rec_table (l_count).N_EXT_ATTR25      := l_cs_incidents_ext_rec.N_EXT_ATTR25;
3445                     p_sr_audit_rec_table (l_count).D_EXT_ATTR1       := l_cs_incidents_ext_rec.D_EXT_ATTR1;
3446                     p_sr_audit_rec_table (l_count).D_EXT_ATTR2       := l_cs_incidents_ext_rec.D_EXT_ATTR2;
3447                     p_sr_audit_rec_table (l_count).D_EXT_ATTR3       := l_cs_incidents_ext_rec.D_EXT_ATTR3;
3448                     p_sr_audit_rec_table (l_count).D_EXT_ATTR4       := l_cs_incidents_ext_rec.D_EXT_ATTR4;
3449                     p_sr_audit_rec_table (l_count).D_EXT_ATTR5       := l_cs_incidents_ext_rec.D_EXT_ATTR5;
3450                     p_sr_audit_rec_table (l_count).D_EXT_ATTR6       := l_cs_incidents_ext_rec.D_EXT_ATTR6;
3451                     p_sr_audit_rec_table (l_count).D_EXT_ATTR7       := l_cs_incidents_ext_rec.D_EXT_ATTR7;
3452                     p_sr_audit_rec_table (l_count).D_EXT_ATTR8       := l_cs_incidents_ext_rec.D_EXT_ATTR8;
3453                     p_sr_audit_rec_table (l_count).D_EXT_ATTR9       := l_cs_incidents_ext_rec.D_EXT_ATTR9;
3454                     p_sr_audit_rec_table (l_count).D_EXT_ATTR10      := l_cs_incidents_ext_rec.D_EXT_ATTR10;
3455                     p_sr_audit_rec_table (l_count).D_EXT_ATTR11      := l_cs_incidents_ext_rec.D_EXT_ATTR11;
3456                     p_sr_audit_rec_table (l_count).D_EXT_ATTR12      := l_cs_incidents_ext_rec.D_EXT_ATTR12;
3457                     p_sr_audit_rec_table (l_count).D_EXT_ATTR13      := l_cs_incidents_ext_rec.D_EXT_ATTR13;
3458                     p_sr_audit_rec_table (l_count).D_EXT_ATTR14      := l_cs_incidents_ext_rec.D_EXT_ATTR14;
3459                     p_sr_audit_rec_table (l_count).D_EXT_ATTR15      := l_cs_incidents_ext_rec.D_EXT_ATTR15;
3460                     p_sr_audit_rec_table (l_count).D_EXT_ATTR16      := l_cs_incidents_ext_rec.D_EXT_ATTR16;
3461                     p_sr_audit_rec_table (l_count).D_EXT_ATTR17      := l_cs_incidents_ext_rec.D_EXT_ATTR17;
3462                     p_sr_audit_rec_table (l_count).D_EXT_ATTR18      := l_cs_incidents_ext_rec.D_EXT_ATTR18;
3463                     p_sr_audit_rec_table (l_count).D_EXT_ATTR19      := l_cs_incidents_ext_rec.D_EXT_ATTR19;
3464                     p_sr_audit_rec_table (l_count).D_EXT_ATTR20      := l_cs_incidents_ext_rec.D_EXT_ATTR20;
3465                     p_sr_audit_rec_table (l_count).D_EXT_ATTR21      := l_cs_incidents_ext_rec.D_EXT_ATTR21;
3466                     p_sr_audit_rec_table (l_count).D_EXT_ATTR22      := l_cs_incidents_ext_rec.D_EXT_ATTR22;
3467                     p_sr_audit_rec_table (l_count).D_EXT_ATTR23      := l_cs_incidents_ext_rec.D_EXT_ATTR23;
3468                     p_sr_audit_rec_table (l_count).D_EXT_ATTR24      := l_cs_incidents_ext_rec.D_EXT_ATTR24;
3469                     p_sr_audit_rec_table (l_count).D_EXT_ATTR25      := l_cs_incidents_ext_rec.D_EXT_ATTR25;
3470                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR1     := l_cs_incidents_ext_rec.UOM_EXT_ATTR1;
3471                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR2     := l_cs_incidents_ext_rec.UOM_EXT_ATTR2;
3472                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR3     := l_cs_incidents_ext_rec.UOM_EXT_ATTR3;
3473                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR4     := l_cs_incidents_ext_rec.UOM_EXT_ATTR4;
3474                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR5     := l_cs_incidents_ext_rec.UOM_EXT_ATTR5;
3475                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR6     := l_cs_incidents_ext_rec.UOM_EXT_ATTR6;
3476                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR7     := l_cs_incidents_ext_rec.UOM_EXT_ATTR7;
3477                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR8     := l_cs_incidents_ext_rec.UOM_EXT_ATTR8;
3478                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR9     := l_cs_incidents_ext_rec.UOM_EXT_ATTR9;
3479                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR10    := l_cs_incidents_ext_rec.UOM_EXT_ATTR10;
3480                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR11    := l_cs_incidents_ext_rec.UOM_EXT_ATTR11;
3481                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR12    := l_cs_incidents_ext_rec.UOM_EXT_ATTR12;
3482                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR13    := l_cs_incidents_ext_rec.UOM_EXT_ATTR13;
3483                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR14    := l_cs_incidents_ext_rec.UOM_EXT_ATTR14;
3484                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR15    := l_cs_incidents_ext_rec.UOM_EXT_ATTR15;
3485                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR16    := l_cs_incidents_ext_rec.UOM_EXT_ATTR16;
3486                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR17    := l_cs_incidents_ext_rec.UOM_EXT_ATTR17;
3487                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR18    := l_cs_incidents_ext_rec.UOM_EXT_ATTR18;
3488                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR19    := l_cs_incidents_ext_rec.UOM_EXT_ATTR19;
3489                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR20    := l_cs_incidents_ext_rec.UOM_EXT_ATTR20;
3490                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR21    := l_cs_incidents_ext_rec.UOM_EXT_ATTR21;
3491                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR22    := l_cs_incidents_ext_rec.UOM_EXT_ATTR22;
3492                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR23    := l_cs_incidents_ext_rec.UOM_EXT_ATTR23;
3493                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR24    := l_cs_incidents_ext_rec.UOM_EXT_ATTR24;
3494                     p_sr_audit_rec_table (l_count).UOM_EXT_ATTR25    := l_cs_incidents_ext_rec.UOM_EXT_ATTR25;
3495 
3496                    END IF;
3497                 ELSE
3498                     -- Record does not exists
3499                     x_rec_found := 'N';
3500                     RETURN;
3501                 END IF;
3502 
3503             END IF; -- end of if attribute name is not null
3504           END IF; -- end of if app id, attr_group_type, attr_group_name is not null
3505 
3506 
3507       ELSE
3508         -- l_multi_row_code = 'N'
3509         -- get the current record in the database for the unique key combination
3510 
3511           --DBMS_OUTPUT.PUT_LINE('not multi-row');
3512 
3513           OPEN c_get_ext_attr_db_rec;
3514           FETCH c_get_ext_attr_db_rec INTO v_get_ext_attr_db_rec;
3515           IF c_get_ext_attr_db_rec%NOTFOUND THEN
3516             -- Record does not exists
3517             x_rec_found := 'N';
3518 
3519           ELSE
3520             -- Record exists
3521             x_rec_found := 'Y';
3522 
3523             -- loop through the audit table passed in and see if you can find the record
3524             -- this is for a 'CREATE' situation
3525 
3526             --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.COUNT);
3527 
3528             IF p_sr_audit_rec_table.COUNT > 0 THEN
3529 
3530               --DBMS_OUTPUT.PUT_LINE('In loooop');
3531               FOR i IN 1.. p_sr_audit_rec_table.COUNT LOOP
3532                 IF p_sr_audit_rec_table(i).pk_column_1 = p_incident_id AND
3533                    p_sr_audit_rec_table(i).context = p_context AND
3534                    p_sr_audit_rec_table(i).attr_group_id = p_attr_group_id AND
3535                    p_sr_audit_rec_table(i).row_identifier = p_row_id THEN
3536 
3537                    l_create_new_record := 'N';
3538 
3539                    --DBMS_OUTPUT.PUT_LINE('Match found for audit record');
3540 
3541                    p_sr_audit_rec_table(i).extension_id      := v_get_ext_attr_db_rec.extension_id;
3542                    p_sr_audit_rec_table(i).pk_column_1       := p_incident_id;
3543                    p_sr_audit_rec_table(i).pk_column_2       := null;
3544                    p_sr_audit_rec_table(i).pk_column_3       := null;
3545                    p_sr_audit_rec_table(i).pk_column_4       := null;
3546                    p_sr_audit_rec_table(i).pk_column_5       := null;
3547                    p_sr_audit_rec_table(i).CONTEXT           := p_context;
3548                    p_sr_audit_rec_table(i).ATTR_GROUP_ID     := p_attr_group_id;
3549                    p_sr_audit_rec_table(i).C_EXT_ATTR1       := v_get_ext_attr_db_rec.C_EXT_ATTR1;
3550                    p_sr_audit_rec_table(i).C_EXT_ATTR2       := v_get_ext_attr_db_rec.C_EXT_ATTR2;
3551                    --DBMS_OUTPUT.PUT_LINE('v_get_ext_attr_db_rec.C_EXT_ATTR2'||v_get_ext_attr_db_rec.C_EXT_ATTR2);
3552 
3553                    p_sr_audit_rec_table(i).C_EXT_ATTR3       := v_get_ext_attr_db_rec.C_EXT_ATTR3;
3554                    p_sr_audit_rec_table(i).C_EXT_ATTR4       := v_get_ext_attr_db_rec.C_EXT_ATTR4;
3555                    p_sr_audit_rec_table(i).C_EXT_ATTR5       := v_get_ext_attr_db_rec.C_EXT_ATTR5;
3556                    p_sr_audit_rec_table(i).C_EXT_ATTR6       := v_get_ext_attr_db_rec.C_EXT_ATTR6;
3557                    p_sr_audit_rec_table(i).C_EXT_ATTR7       := v_get_ext_attr_db_rec.C_EXT_ATTR7;
3558                    p_sr_audit_rec_table(i).C_EXT_ATTR8       := v_get_ext_attr_db_rec.C_EXT_ATTR8;
3559                    p_sr_audit_rec_table(i).C_EXT_ATTR9       := v_get_ext_attr_db_rec.C_EXT_ATTR9;
3560                    p_sr_audit_rec_table(i).C_EXT_ATTR10      := v_get_ext_attr_db_rec.C_EXT_ATTR10;
3561                    p_sr_audit_rec_table(i).C_EXT_ATTR11      := v_get_ext_attr_db_rec.C_EXT_ATTR11;
3562                    p_sr_audit_rec_table(i).C_EXT_ATTR12      := v_get_ext_attr_db_rec.C_EXT_ATTR12;
3563                    p_sr_audit_rec_table(i).C_EXT_ATTR13      := v_get_ext_attr_db_rec.C_EXT_ATTR13;
3564                    p_sr_audit_rec_table(i).C_EXT_ATTR14      := v_get_ext_attr_db_rec.C_EXT_ATTR14;
3565                    p_sr_audit_rec_table(i).C_EXT_ATTR15      := v_get_ext_attr_db_rec.C_EXT_ATTR15;
3566                    p_sr_audit_rec_table(i).C_EXT_ATTR16      := v_get_ext_attr_db_rec.C_EXT_ATTR16;
3567                    p_sr_audit_rec_table(i).C_EXT_ATTR17      := v_get_ext_attr_db_rec.C_EXT_ATTR17;
3568                    p_sr_audit_rec_table(i).C_EXT_ATTR18      := v_get_ext_attr_db_rec.C_EXT_ATTR18;
3569                    p_sr_audit_rec_table(i).C_EXT_ATTR19      := v_get_ext_attr_db_rec.C_EXT_ATTR19;
3570                    p_sr_audit_rec_table(i).C_EXT_ATTR20      := v_get_ext_attr_db_rec.C_EXT_ATTR20;
3571                    p_sr_audit_rec_table(i).C_EXT_ATTR21      := v_get_ext_attr_db_rec.C_EXT_ATTR21;
3572                    p_sr_audit_rec_table(i).C_EXT_ATTR22      := v_get_ext_attr_db_rec.C_EXT_ATTR22;
3573                    p_sr_audit_rec_table(i).C_EXT_ATTR23      := v_get_ext_attr_db_rec.C_EXT_ATTR23;
3574                    p_sr_audit_rec_table(i).C_EXT_ATTR24      := v_get_ext_attr_db_rec.C_EXT_ATTR24;
3575                    p_sr_audit_rec_table(i).C_EXT_ATTR25      := v_get_ext_attr_db_rec.C_EXT_ATTR25;
3576                    p_sr_audit_rec_table(i).C_EXT_ATTR26      := v_get_ext_attr_db_rec.C_EXT_ATTR26;
3577                    p_sr_audit_rec_table(i).C_EXT_ATTR27      := v_get_ext_attr_db_rec.C_EXT_ATTR27;
3578                    p_sr_audit_rec_table(i).C_EXT_ATTR28      := v_get_ext_attr_db_rec.C_EXT_ATTR28;
3579                    p_sr_audit_rec_table(i).C_EXT_ATTR29      := v_get_ext_attr_db_rec.C_EXT_ATTR29;
3580                    p_sr_audit_rec_table(i).C_EXT_ATTR30      := v_get_ext_attr_db_rec.C_EXT_ATTR30;
3581                    p_sr_audit_rec_table(i).C_EXT_ATTR31      := v_get_ext_attr_db_rec.C_EXT_ATTR31;
3582                    p_sr_audit_rec_table(i).C_EXT_ATTR32      := v_get_ext_attr_db_rec.C_EXT_ATTR32;
3583                    p_sr_audit_rec_table(i).C_EXT_ATTR33      := v_get_ext_attr_db_rec.C_EXT_ATTR33;
3584                    p_sr_audit_rec_table(i).C_EXT_ATTR34      := v_get_ext_attr_db_rec.C_EXT_ATTR34;
3585                    p_sr_audit_rec_table(i).C_EXT_ATTR35      := v_get_ext_attr_db_rec.C_EXT_ATTR35;
3586                    p_sr_audit_rec_table(i).C_EXT_ATTR36      := v_get_ext_attr_db_rec.C_EXT_ATTR36;
3587                    p_sr_audit_rec_table(i).C_EXT_ATTR37      := v_get_ext_attr_db_rec.C_EXT_ATTR37;
3588                    p_sr_audit_rec_table(i).C_EXT_ATTR38      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
3589                    p_sr_audit_rec_table(i).C_EXT_ATTR39      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
3590                    p_sr_audit_rec_table(i).C_EXT_ATTR40      := v_get_ext_attr_db_rec.C_EXT_ATTR40;
3591                    p_sr_audit_rec_table(i).C_EXT_ATTR41      := v_get_ext_attr_db_rec.C_EXT_ATTR41;
3592                    p_sr_audit_rec_table(i).C_EXT_ATTR42      := v_get_ext_attr_db_rec.C_EXT_ATTR42;
3593                    p_sr_audit_rec_table(i).C_EXT_ATTR43      := v_get_ext_attr_db_rec.C_EXT_ATTR43;
3594                    p_sr_audit_rec_table(i).C_EXT_ATTR44      := v_get_ext_attr_db_rec.C_EXT_ATTR44;
3595                    p_sr_audit_rec_table(i).C_EXT_ATTR45      := v_get_ext_attr_db_rec.C_EXT_ATTR45;
3596                    p_sr_audit_rec_table(i).C_EXT_ATTR46      := v_get_ext_attr_db_rec.C_EXT_ATTR46;
3597                    p_sr_audit_rec_table(i).C_EXT_ATTR47      := v_get_ext_attr_db_rec.C_EXT_ATTR47;
3598                    p_sr_audit_rec_table(i).C_EXT_ATTR48      := v_get_ext_attr_db_rec.C_EXT_ATTR48;
3599                    p_sr_audit_rec_table(i).C_EXT_ATTR49      := v_get_ext_attr_db_rec.C_EXT_ATTR49;
3600                    p_sr_audit_rec_table(i).C_EXT_ATTR50      := v_get_ext_attr_db_rec.C_EXT_ATTR50;
3601                    p_sr_audit_rec_table(i).N_EXT_ATTR1       := v_get_ext_attr_db_rec.N_EXT_ATTR1;
3602                    p_sr_audit_rec_table(i).N_EXT_ATTR2       := v_get_ext_attr_db_rec.N_EXT_ATTR2;
3603                    p_sr_audit_rec_table(i).N_EXT_ATTR3       := v_get_ext_attr_db_rec.N_EXT_ATTR3;
3604                    p_sr_audit_rec_table(i).N_EXT_ATTR4       := v_get_ext_attr_db_rec.N_EXT_ATTR4;
3605                    p_sr_audit_rec_table(i).N_EXT_ATTR5       := v_get_ext_attr_db_rec.N_EXT_ATTR5;
3606                    p_sr_audit_rec_table(i).N_EXT_ATTR6       := v_get_ext_attr_db_rec.N_EXT_ATTR6;
3607                    p_sr_audit_rec_table(i).N_EXT_ATTR7       := v_get_ext_attr_db_rec.N_EXT_ATTR7;
3608                    p_sr_audit_rec_table(i).N_EXT_ATTR8       := v_get_ext_attr_db_rec.N_EXT_ATTR8;
3609                    p_sr_audit_rec_table(i).N_EXT_ATTR9       := v_get_ext_attr_db_rec.N_EXT_ATTR9;
3610                    p_sr_audit_rec_table(i).N_EXT_ATTR10      := v_get_ext_attr_db_rec.N_EXT_ATTR10;
3611                    p_sr_audit_rec_table(i).N_EXT_ATTR11      := v_get_ext_attr_db_rec.N_EXT_ATTR11;
3612                    p_sr_audit_rec_table(i).N_EXT_ATTR12      := v_get_ext_attr_db_rec.N_EXT_ATTR12;
3613                    p_sr_audit_rec_table(i).N_EXT_ATTR13      := v_get_ext_attr_db_rec.N_EXT_ATTR13;
3614                    p_sr_audit_rec_table(i).N_EXT_ATTR14      := v_get_ext_attr_db_rec.N_EXT_ATTR14;
3615                    p_sr_audit_rec_table(i).N_EXT_ATTR15      := v_get_ext_attr_db_rec.N_EXT_ATTR15;
3616                    p_sr_audit_rec_table(i).N_EXT_ATTR16      := v_get_ext_attr_db_rec.N_EXT_ATTR16;
3617                    p_sr_audit_rec_table(i).N_EXT_ATTR17      := v_get_ext_attr_db_rec.N_EXT_ATTR17;
3618                    p_sr_audit_rec_table(i).N_EXT_ATTR18      := v_get_ext_attr_db_rec.N_EXT_ATTR18;
3619                    p_sr_audit_rec_table(i).N_EXT_ATTR19      := v_get_ext_attr_db_rec.N_EXT_ATTR19;
3620                    p_sr_audit_rec_table(i).N_EXT_ATTR20      := v_get_ext_attr_db_rec.N_EXT_ATTR20;
3621                    p_sr_audit_rec_table(i).N_EXT_ATTR21      := v_get_ext_attr_db_rec.N_EXT_ATTR21;
3622                    p_sr_audit_rec_table(i).N_EXT_ATTR22      := v_get_ext_attr_db_rec.N_EXT_ATTR22;
3623                    p_sr_audit_rec_table(i).N_EXT_ATTR23      := v_get_ext_attr_db_rec.N_EXT_ATTR23;
3624                    p_sr_audit_rec_table(i).N_EXT_ATTR24      := v_get_ext_attr_db_rec.N_EXT_ATTR24;
3625                    p_sr_audit_rec_table(i).N_EXT_ATTR25      := v_get_ext_attr_db_rec.N_EXT_ATTR25;
3626                    p_sr_audit_rec_table(i).D_EXT_ATTR1       := v_get_ext_attr_db_rec.D_EXT_ATTR1;
3627                    p_sr_audit_rec_table(i).D_EXT_ATTR2       := v_get_ext_attr_db_rec.D_EXT_ATTR2;
3628                    p_sr_audit_rec_table(i).D_EXT_ATTR3       := v_get_ext_attr_db_rec.D_EXT_ATTR3;
3629                    p_sr_audit_rec_table(i).D_EXT_ATTR4       := v_get_ext_attr_db_rec.D_EXT_ATTR4;
3630                    p_sr_audit_rec_table(i).D_EXT_ATTR5       := v_get_ext_attr_db_rec.D_EXT_ATTR5;
3631                    p_sr_audit_rec_table(i).D_EXT_ATTR6       := v_get_ext_attr_db_rec.D_EXT_ATTR6;
3632                    p_sr_audit_rec_table(i).D_EXT_ATTR7       := v_get_ext_attr_db_rec.D_EXT_ATTR7;
3633                    p_sr_audit_rec_table(i).D_EXT_ATTR8       := v_get_ext_attr_db_rec.D_EXT_ATTR8;
3634                    p_sr_audit_rec_table(i).D_EXT_ATTR9       := v_get_ext_attr_db_rec.D_EXT_ATTR9;
3635                    p_sr_audit_rec_table(i).D_EXT_ATTR10      := v_get_ext_attr_db_rec.D_EXT_ATTR10;
3636                    p_sr_audit_rec_table(i).D_EXT_ATTR11      := v_get_ext_attr_db_rec.D_EXT_ATTR11;
3637                    p_sr_audit_rec_table(i).D_EXT_ATTR12      := v_get_ext_attr_db_rec.D_EXT_ATTR12;
3638                    p_sr_audit_rec_table(i).D_EXT_ATTR13      := v_get_ext_attr_db_rec.D_EXT_ATTR13;
3639                    p_sr_audit_rec_table(i).D_EXT_ATTR14      := v_get_ext_attr_db_rec.D_EXT_ATTR14;
3640                    p_sr_audit_rec_table(i).D_EXT_ATTR15      := v_get_ext_attr_db_rec.D_EXT_ATTR15;
3641                    p_sr_audit_rec_table(i).D_EXT_ATTR16      := v_get_ext_attr_db_rec.D_EXT_ATTR16;
3642                    p_sr_audit_rec_table(i).D_EXT_ATTR17      := v_get_ext_attr_db_rec.D_EXT_ATTR17;
3643                    p_sr_audit_rec_table(i).D_EXT_ATTR18      := v_get_ext_attr_db_rec.D_EXT_ATTR18;
3644                    p_sr_audit_rec_table(i).D_EXT_ATTR19      := v_get_ext_attr_db_rec.D_EXT_ATTR19;
3645                    p_sr_audit_rec_table(i).D_EXT_ATTR20      := v_get_ext_attr_db_rec.D_EXT_ATTR20;
3646                    p_sr_audit_rec_table(i).D_EXT_ATTR21      := v_get_ext_attr_db_rec.D_EXT_ATTR21;
3647                    p_sr_audit_rec_table(i).D_EXT_ATTR22      := v_get_ext_attr_db_rec.D_EXT_ATTR22;
3648                    p_sr_audit_rec_table(i).D_EXT_ATTR23      := v_get_ext_attr_db_rec.D_EXT_ATTR23;
3649                    p_sr_audit_rec_table(i).D_EXT_ATTR24      := v_get_ext_attr_db_rec.D_EXT_ATTR24;
3650                    p_sr_audit_rec_table(i).D_EXT_ATTR25      := v_get_ext_attr_db_rec.D_EXT_ATTR25;
3651                    p_sr_audit_rec_table(i).UOM_EXT_ATTR1     := v_get_ext_attr_db_rec.UOM_EXT_ATTR1;
3652                    p_sr_audit_rec_table(i).UOM_EXT_ATTR2     := v_get_ext_attr_db_rec.UOM_EXT_ATTR2;
3653                    p_sr_audit_rec_table(i).UOM_EXT_ATTR3     := v_get_ext_attr_db_rec.UOM_EXT_ATTR3;
3654                    p_sr_audit_rec_table(i).UOM_EXT_ATTR4     := v_get_ext_attr_db_rec.UOM_EXT_ATTR4;
3655                    p_sr_audit_rec_table(i).UOM_EXT_ATTR5     := v_get_ext_attr_db_rec.UOM_EXT_ATTR5;
3656                    p_sr_audit_rec_table(i).UOM_EXT_ATTR6     := v_get_ext_attr_db_rec.UOM_EXT_ATTR6;
3657                    p_sr_audit_rec_table(i).UOM_EXT_ATTR7     := v_get_ext_attr_db_rec.UOM_EXT_ATTR7;
3658                    p_sr_audit_rec_table(i).UOM_EXT_ATTR8     := v_get_ext_attr_db_rec.UOM_EXT_ATTR8;
3659                    p_sr_audit_rec_table(i).UOM_EXT_ATTR9     := v_get_ext_attr_db_rec.UOM_EXT_ATTR9;
3660                    p_sr_audit_rec_table(i).UOM_EXT_ATTR10    := v_get_ext_attr_db_rec.UOM_EXT_ATTR10;
3661                    p_sr_audit_rec_table(i).UOM_EXT_ATTR11    := v_get_ext_attr_db_rec.UOM_EXT_ATTR11;
3662                    p_sr_audit_rec_table(i).UOM_EXT_ATTR12    := v_get_ext_attr_db_rec.UOM_EXT_ATTR12;
3663                    p_sr_audit_rec_table(i).UOM_EXT_ATTR13    := v_get_ext_attr_db_rec.UOM_EXT_ATTR13;
3664                    p_sr_audit_rec_table(i).UOM_EXT_ATTR14    := v_get_ext_attr_db_rec.UOM_EXT_ATTR14;
3665                    p_sr_audit_rec_table(i).UOM_EXT_ATTR15    := v_get_ext_attr_db_rec.UOM_EXT_ATTR15;
3666                    p_sr_audit_rec_table(i).UOM_EXT_ATTR16    := v_get_ext_attr_db_rec.UOM_EXT_ATTR16;
3667                    p_sr_audit_rec_table(i).UOM_EXT_ATTR17    := v_get_ext_attr_db_rec.UOM_EXT_ATTR17;
3668                    p_sr_audit_rec_table(i).UOM_EXT_ATTR18    := v_get_ext_attr_db_rec.UOM_EXT_ATTR18;
3669                    p_sr_audit_rec_table(i).UOM_EXT_ATTR19    := v_get_ext_attr_db_rec.UOM_EXT_ATTR19;
3670                    p_sr_audit_rec_table(i).UOM_EXT_ATTR20    := v_get_ext_attr_db_rec.UOM_EXT_ATTR20;
3671                    p_sr_audit_rec_table(i).UOM_EXT_ATTR21    := v_get_ext_attr_db_rec.UOM_EXT_ATTR21;
3672                    p_sr_audit_rec_table(i).UOM_EXT_ATTR22    := v_get_ext_attr_db_rec.UOM_EXT_ATTR22;
3673                    p_sr_audit_rec_table(i).UOM_EXT_ATTR23    := v_get_ext_attr_db_rec.UOM_EXT_ATTR23;
3674                    p_sr_audit_rec_table(i).UOM_EXT_ATTR24    := v_get_ext_attr_db_rec.UOM_EXT_ATTR24;
3675                    p_sr_audit_rec_table(i).UOM_EXT_ATTR25    := v_get_ext_attr_db_rec.UOM_EXT_ATTR25;
3676 
3677                 ELSE
3678                    l_create_new_record := 'Y';
3679                 END IF;
3680               END LOOP;
3681 
3682               --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
3683             ELSE
3684               l_audit_table_empty := 'Y';
3685             END IF;
3686 
3687             --DBMS_OUTPUT.PUT_LINE('l_create_new_rec'||l_create_new_record);
3688             --DBMS_OUTPUT.PUT_LINE('l_audit_table_empty'||l_audit_table_empty);
3689 
3690             IF l_create_new_record = 'Y'  OR
3691                l_audit_table_empty = 'Y' THEN
3692 
3693             l_count := l_count + 1;
3694 
3695             --DBMS_OUTPUT.PUT_LINE('extension_id'||v_get_ext_attr_db_rec.extension_id);
3696             --DBMS_OUTPUT.PUT_LINE('pk_column_1'||v_get_ext_attr_db_rec.incident_id);
3697             --DBMS_OUTPUT.PUT_LINE('CONTEXT'||v_get_ext_attr_db_rec.context);
3698             --DBMS_OUTPUT.PUT_LINE('ATTR_GROUP_ID'||v_get_ext_attr_db_rec.attr_group_id);
3699             --DBMS_OUTPUT.PUT_LINE('C_EXT_ATTR1'||v_get_ext_attr_db_rec.C_EXT_ATTR1);
3700 
3701             p_sr_audit_rec_table(l_count).extension_id      := v_get_ext_attr_db_rec.extension_id;
3702             p_sr_audit_rec_table(l_count).pk_column_1       := v_get_ext_attr_db_rec.incident_id;
3703             p_sr_audit_rec_table(l_count).pk_column_2       := null;
3704             p_sr_audit_rec_table(l_count).pk_column_3       := null;
3705             p_sr_audit_rec_table(l_count).pk_column_4       := null;
3706             p_sr_audit_rec_table(l_count).pk_column_5       := null;
3707             p_sr_audit_rec_table(l_count).CONTEXT           := v_get_ext_attr_db_rec.context;
3708             p_sr_audit_rec_table(l_count).ATTR_GROUP_ID     := v_get_ext_attr_db_rec.attr_group_id;
3709             p_sr_audit_rec_table(l_count).C_EXT_ATTR1       := v_get_ext_attr_db_rec.C_EXT_ATTR1;
3710             p_sr_audit_rec_table(l_count).C_EXT_ATTR2       := v_get_ext_attr_db_rec.C_EXT_ATTR2;
3711             p_sr_audit_rec_table(l_count).C_EXT_ATTR3       := v_get_ext_attr_db_rec.C_EXT_ATTR3;
3712             p_sr_audit_rec_table(l_count).C_EXT_ATTR4       := v_get_ext_attr_db_rec.C_EXT_ATTR4;
3713             p_sr_audit_rec_table(l_count).C_EXT_ATTR5       := v_get_ext_attr_db_rec.C_EXT_ATTR5;
3714             p_sr_audit_rec_table(l_count).C_EXT_ATTR6       := v_get_ext_attr_db_rec.C_EXT_ATTR6;
3715             p_sr_audit_rec_table(l_count).C_EXT_ATTR7       := v_get_ext_attr_db_rec.C_EXT_ATTR7;
3716             p_sr_audit_rec_table(l_count).C_EXT_ATTR8       := v_get_ext_attr_db_rec.C_EXT_ATTR8;
3717             p_sr_audit_rec_table(l_count).C_EXT_ATTR9       := v_get_ext_attr_db_rec.C_EXT_ATTR9;
3718             p_sr_audit_rec_table(l_count).C_EXT_ATTR10      := v_get_ext_attr_db_rec.C_EXT_ATTR10;
3719             p_sr_audit_rec_table(l_count).C_EXT_ATTR11      := v_get_ext_attr_db_rec.C_EXT_ATTR11;
3720             p_sr_audit_rec_table(l_count).C_EXT_ATTR12      := v_get_ext_attr_db_rec.C_EXT_ATTR12;
3721             p_sr_audit_rec_table(l_count).C_EXT_ATTR13      := v_get_ext_attr_db_rec.C_EXT_ATTR13;
3722             p_sr_audit_rec_table(l_count).C_EXT_ATTR14      := v_get_ext_attr_db_rec.C_EXT_ATTR14;
3723             p_sr_audit_rec_table(l_count).C_EXT_ATTR15      := v_get_ext_attr_db_rec.C_EXT_ATTR15;
3724             p_sr_audit_rec_table(l_count).C_EXT_ATTR16      := v_get_ext_attr_db_rec.C_EXT_ATTR16;
3725             p_sr_audit_rec_table(l_count).C_EXT_ATTR17      := v_get_ext_attr_db_rec.C_EXT_ATTR17;
3726             p_sr_audit_rec_table(l_count).C_EXT_ATTR18      := v_get_ext_attr_db_rec.C_EXT_ATTR18;
3727             p_sr_audit_rec_table(l_count).C_EXT_ATTR19      := v_get_ext_attr_db_rec.C_EXT_ATTR19;
3728             p_sr_audit_rec_table(l_count).C_EXT_ATTR20      := v_get_ext_attr_db_rec.C_EXT_ATTR20;
3729             p_sr_audit_rec_table(l_count).C_EXT_ATTR21      := v_get_ext_attr_db_rec.C_EXT_ATTR21;
3730             p_sr_audit_rec_table(l_count).C_EXT_ATTR22      := v_get_ext_attr_db_rec.C_EXT_ATTR22;
3731             p_sr_audit_rec_table(l_count).C_EXT_ATTR23      := v_get_ext_attr_db_rec.C_EXT_ATTR23;
3732             p_sr_audit_rec_table(l_count).C_EXT_ATTR24      := v_get_ext_attr_db_rec.C_EXT_ATTR24;
3733             p_sr_audit_rec_table(l_count).C_EXT_ATTR25      := v_get_ext_attr_db_rec.C_EXT_ATTR25;
3734             p_sr_audit_rec_table(l_count).C_EXT_ATTR26      := v_get_ext_attr_db_rec.C_EXT_ATTR26;
3735             p_sr_audit_rec_table(l_count).C_EXT_ATTR27      := v_get_ext_attr_db_rec.C_EXT_ATTR27;
3736             p_sr_audit_rec_table(l_count).C_EXT_ATTR28      := v_get_ext_attr_db_rec.C_EXT_ATTR28;
3737             p_sr_audit_rec_table(l_count).C_EXT_ATTR29      := v_get_ext_attr_db_rec.C_EXT_ATTR29;
3738             p_sr_audit_rec_table(l_count).C_EXT_ATTR30      := v_get_ext_attr_db_rec.C_EXT_ATTR30;
3739             p_sr_audit_rec_table(l_count).C_EXT_ATTR31      := v_get_ext_attr_db_rec.C_EXT_ATTR31;
3740             p_sr_audit_rec_table(l_count).C_EXT_ATTR32      := v_get_ext_attr_db_rec.C_EXT_ATTR32;
3741             p_sr_audit_rec_table(l_count).C_EXT_ATTR33      := v_get_ext_attr_db_rec.C_EXT_ATTR33;
3742             p_sr_audit_rec_table(l_count).C_EXT_ATTR34      := v_get_ext_attr_db_rec.C_EXT_ATTR34;
3743             p_sr_audit_rec_table(l_count).C_EXT_ATTR35      := v_get_ext_attr_db_rec.C_EXT_ATTR35;
3744             p_sr_audit_rec_table(l_count).C_EXT_ATTR36      := v_get_ext_attr_db_rec.C_EXT_ATTR36;
3745             p_sr_audit_rec_table(l_count).C_EXT_ATTR37      := v_get_ext_attr_db_rec.C_EXT_ATTR37;
3746             p_sr_audit_rec_table(l_count).C_EXT_ATTR38      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
3747             p_sr_audit_rec_table(l_count).C_EXT_ATTR39      := v_get_ext_attr_db_rec.C_EXT_ATTR38;
3748             p_sr_audit_rec_table(l_count).C_EXT_ATTR40      := v_get_ext_attr_db_rec.C_EXT_ATTR40;
3749             p_sr_audit_rec_table(l_count).C_EXT_ATTR41      := v_get_ext_attr_db_rec.C_EXT_ATTR41;
3750             p_sr_audit_rec_table(l_count).C_EXT_ATTR42      := v_get_ext_attr_db_rec.C_EXT_ATTR42;
3751             p_sr_audit_rec_table(l_count).C_EXT_ATTR43      := v_get_ext_attr_db_rec.C_EXT_ATTR43;
3752             p_sr_audit_rec_table(l_count).C_EXT_ATTR44      := v_get_ext_attr_db_rec.C_EXT_ATTR44;
3753             p_sr_audit_rec_table(l_count).C_EXT_ATTR45      := v_get_ext_attr_db_rec.C_EXT_ATTR45;
3754             p_sr_audit_rec_table(l_count).C_EXT_ATTR46      := v_get_ext_attr_db_rec.C_EXT_ATTR46;
3755             p_sr_audit_rec_table(l_count).C_EXT_ATTR47      := v_get_ext_attr_db_rec.C_EXT_ATTR47;
3756             p_sr_audit_rec_table(l_count).C_EXT_ATTR48      := v_get_ext_attr_db_rec.C_EXT_ATTR48;
3757             p_sr_audit_rec_table(l_count).C_EXT_ATTR49      := v_get_ext_attr_db_rec.C_EXT_ATTR49;
3758             p_sr_audit_rec_table(l_count).C_EXT_ATTR50      := v_get_ext_attr_db_rec.C_EXT_ATTR50;
3759             p_sr_audit_rec_table(l_count).N_EXT_ATTR1       := v_get_ext_attr_db_rec.N_EXT_ATTR1;
3760             p_sr_audit_rec_table(l_count).N_EXT_ATTR2       := v_get_ext_attr_db_rec.N_EXT_ATTR2;
3761             p_sr_audit_rec_table(l_count).N_EXT_ATTR3       := v_get_ext_attr_db_rec.N_EXT_ATTR3;
3762             p_sr_audit_rec_table(l_count).N_EXT_ATTR4       := v_get_ext_attr_db_rec.N_EXT_ATTR4;
3763             p_sr_audit_rec_table(l_count).N_EXT_ATTR5       := v_get_ext_attr_db_rec.N_EXT_ATTR5;
3764             p_sr_audit_rec_table(l_count).N_EXT_ATTR6       := v_get_ext_attr_db_rec.N_EXT_ATTR6;
3765             p_sr_audit_rec_table(l_count).N_EXT_ATTR7       := v_get_ext_attr_db_rec.N_EXT_ATTR7;
3766             p_sr_audit_rec_table(l_count).N_EXT_ATTR8       := v_get_ext_attr_db_rec.N_EXT_ATTR8;
3767             p_sr_audit_rec_table(l_count).N_EXT_ATTR9       := v_get_ext_attr_db_rec.N_EXT_ATTR9;
3768             p_sr_audit_rec_table(l_count).N_EXT_ATTR10      := v_get_ext_attr_db_rec.N_EXT_ATTR10;
3769             p_sr_audit_rec_table(l_count).N_EXT_ATTR11      := v_get_ext_attr_db_rec.N_EXT_ATTR11;
3770             p_sr_audit_rec_table(l_count).N_EXT_ATTR12      := v_get_ext_attr_db_rec.N_EXT_ATTR12;
3771             p_sr_audit_rec_table(l_count).N_EXT_ATTR13      := v_get_ext_attr_db_rec.N_EXT_ATTR13;
3772             p_sr_audit_rec_table(l_count).N_EXT_ATTR14      := v_get_ext_attr_db_rec.N_EXT_ATTR14;
3773             p_sr_audit_rec_table(l_count).N_EXT_ATTR15      := v_get_ext_attr_db_rec.N_EXT_ATTR15;
3774             p_sr_audit_rec_table(l_count).N_EXT_ATTR16      := v_get_ext_attr_db_rec.N_EXT_ATTR16;
3775             p_sr_audit_rec_table(l_count).N_EXT_ATTR17      := v_get_ext_attr_db_rec.N_EXT_ATTR17;
3776             p_sr_audit_rec_table(l_count).N_EXT_ATTR18      := v_get_ext_attr_db_rec.N_EXT_ATTR18;
3777             p_sr_audit_rec_table(l_count).N_EXT_ATTR19      := v_get_ext_attr_db_rec.N_EXT_ATTR19;
3778             p_sr_audit_rec_table(l_count).N_EXT_ATTR20      := v_get_ext_attr_db_rec.N_EXT_ATTR20;
3779             p_sr_audit_rec_table(l_count).N_EXT_ATTR21      := v_get_ext_attr_db_rec.N_EXT_ATTR21;
3780             p_sr_audit_rec_table(l_count).N_EXT_ATTR22      := v_get_ext_attr_db_rec.N_EXT_ATTR22;
3781             p_sr_audit_rec_table(l_count).N_EXT_ATTR23      := v_get_ext_attr_db_rec.N_EXT_ATTR23;
3782             p_sr_audit_rec_table(l_count).N_EXT_ATTR24      := v_get_ext_attr_db_rec.N_EXT_ATTR24;
3783             p_sr_audit_rec_table(l_count).N_EXT_ATTR25      := v_get_ext_attr_db_rec.N_EXT_ATTR25;
3784             p_sr_audit_rec_table(l_count).D_EXT_ATTR1       := v_get_ext_attr_db_rec.D_EXT_ATTR1;
3785             p_sr_audit_rec_table(l_count).D_EXT_ATTR2       := v_get_ext_attr_db_rec.D_EXT_ATTR2;
3786             p_sr_audit_rec_table(l_count).D_EXT_ATTR3       := v_get_ext_attr_db_rec.D_EXT_ATTR3;
3787             p_sr_audit_rec_table(l_count).D_EXT_ATTR4       := v_get_ext_attr_db_rec.D_EXT_ATTR4;
3788             p_sr_audit_rec_table(l_count).D_EXT_ATTR5       := v_get_ext_attr_db_rec.D_EXT_ATTR5;
3789             p_sr_audit_rec_table(l_count).D_EXT_ATTR6       := v_get_ext_attr_db_rec.D_EXT_ATTR6;
3790             p_sr_audit_rec_table(l_count).D_EXT_ATTR7       := v_get_ext_attr_db_rec.D_EXT_ATTR7;
3791             p_sr_audit_rec_table(l_count).D_EXT_ATTR8       := v_get_ext_attr_db_rec.D_EXT_ATTR8;
3792             p_sr_audit_rec_table(l_count).D_EXT_ATTR9       := v_get_ext_attr_db_rec.D_EXT_ATTR9;
3793             p_sr_audit_rec_table(l_count).D_EXT_ATTR10      := v_get_ext_attr_db_rec.D_EXT_ATTR10;
3794             p_sr_audit_rec_table(l_count).D_EXT_ATTR11      := v_get_ext_attr_db_rec.D_EXT_ATTR11;
3795             p_sr_audit_rec_table(l_count).D_EXT_ATTR12      := v_get_ext_attr_db_rec.D_EXT_ATTR12;
3796             p_sr_audit_rec_table(l_count).D_EXT_ATTR13      := v_get_ext_attr_db_rec.D_EXT_ATTR13;
3797             p_sr_audit_rec_table(l_count).D_EXT_ATTR14      := v_get_ext_attr_db_rec.D_EXT_ATTR14;
3798             p_sr_audit_rec_table(l_count).D_EXT_ATTR15      := v_get_ext_attr_db_rec.D_EXT_ATTR15;
3799             p_sr_audit_rec_table(l_count).D_EXT_ATTR16      := v_get_ext_attr_db_rec.D_EXT_ATTR16;
3800             p_sr_audit_rec_table(l_count).D_EXT_ATTR17      := v_get_ext_attr_db_rec.D_EXT_ATTR17;
3801             p_sr_audit_rec_table(l_count).D_EXT_ATTR18      := v_get_ext_attr_db_rec.D_EXT_ATTR18;
3802             p_sr_audit_rec_table(l_count).D_EXT_ATTR19      := v_get_ext_attr_db_rec.D_EXT_ATTR19;
3803             p_sr_audit_rec_table(l_count).D_EXT_ATTR20      := v_get_ext_attr_db_rec.D_EXT_ATTR20;
3804             p_sr_audit_rec_table(l_count).D_EXT_ATTR21      := v_get_ext_attr_db_rec.D_EXT_ATTR21;
3805             p_sr_audit_rec_table(l_count).D_EXT_ATTR22      := v_get_ext_attr_db_rec.D_EXT_ATTR22;
3806             p_sr_audit_rec_table(l_count).D_EXT_ATTR23      := v_get_ext_attr_db_rec.D_EXT_ATTR23;
3807             p_sr_audit_rec_table(l_count).D_EXT_ATTR24      := v_get_ext_attr_db_rec.D_EXT_ATTR24;
3808             p_sr_audit_rec_table(l_count).D_EXT_ATTR25      := v_get_ext_attr_db_rec.D_EXT_ATTR25;
3809             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR1     := v_get_ext_attr_db_rec.UOM_EXT_ATTR1;
3810             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR2     := v_get_ext_attr_db_rec.UOM_EXT_ATTR2;
3811             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR3     := v_get_ext_attr_db_rec.UOM_EXT_ATTR3;
3812             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR4     := v_get_ext_attr_db_rec.UOM_EXT_ATTR4;
3813             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR5     := v_get_ext_attr_db_rec.UOM_EXT_ATTR5;
3814             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR6     := v_get_ext_attr_db_rec.UOM_EXT_ATTR6;
3815             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR7     := v_get_ext_attr_db_rec.UOM_EXT_ATTR7;
3816             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR8     := v_get_ext_attr_db_rec.UOM_EXT_ATTR8;
3817             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR9     := v_get_ext_attr_db_rec.UOM_EXT_ATTR9;
3818             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR10    := v_get_ext_attr_db_rec.UOM_EXT_ATTR10;
3819             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR11    := v_get_ext_attr_db_rec.UOM_EXT_ATTR11;
3820             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR12    := v_get_ext_attr_db_rec.UOM_EXT_ATTR12;
3821             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR13    := v_get_ext_attr_db_rec.UOM_EXT_ATTR13;
3822             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR14    := v_get_ext_attr_db_rec.UOM_EXT_ATTR14;
3823             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR15    := v_get_ext_attr_db_rec.UOM_EXT_ATTR15;
3824             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR16    := v_get_ext_attr_db_rec.UOM_EXT_ATTR16;
3825             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR17    := v_get_ext_attr_db_rec.UOM_EXT_ATTR17;
3826             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR18    := v_get_ext_attr_db_rec.UOM_EXT_ATTR18;
3827             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR19    := v_get_ext_attr_db_rec.UOM_EXT_ATTR19;
3828             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR20    := v_get_ext_attr_db_rec.UOM_EXT_ATTR20;
3829             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR21    := v_get_ext_attr_db_rec.UOM_EXT_ATTR21;
3830             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR22    := v_get_ext_attr_db_rec.UOM_EXT_ATTR22;
3831             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR23    := v_get_ext_attr_db_rec.UOM_EXT_ATTR23;
3832             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR24    := v_get_ext_attr_db_rec.UOM_EXT_ATTR24;
3833             p_sr_audit_rec_table(l_count).UOM_EXT_ATTR25    := v_get_ext_attr_db_rec.UOM_EXT_ATTR25;
3834            END IF;
3835 
3836           END IF;
3837           CLOSE c_get_ext_attr_db_rec;
3838           --DBMS_OUTPUT.PUT_LINE('p_sr_audit_rec_table.COUNT'||p_sr_audit_rec_table.count);
3839 
3840      END IF;
3841  END IF;
3842 
3843 EXCEPTION
3844 
3845   WHEN OTHERS THEN
3846   null;
3847 END;
3848 
3849 
3850 PROCEDURE check_sr_context_change(
3851           p_incident_id     IN NUMBER
3852          ,p_context         IN NUMBER
3853          ,x_context_changed OUT NOCOPY VARCHAR2
3854          ,x_db_incident_id  OUT NOCOPY NUMBER
3855          ,x_db_context      OUT NOCOPY NUMBER
3856 
3857 ) IS
3858 
3859 Cursor c_check_context IS
3860 select context, incident_id from cs_incidents_ext
3861 where incident_id = p_incident_id and
3862 context NOT IN (select lookup_code
3863                 from cs_lookups
3864                where lookup_type = 'CS_SR_EXT_ALL_REQ_TYPES'
3865                 )
3866 and rownum = 1;
3867 
3868 BEGIN
3869 
3870   --DBMS_OUTPUT.PUT_LINE('In check_sr_context_change');
3871 
3872   IF p_incident_id IS NOT NULL THEN
3873      -- get all the lines in the extension table for the SR
3874      -- make sure that you are not checking the global context
3875      -- make sure that the SR type has not changed
3876      -- If SR type has changed then mark the old SR as delete
3877      --
3878      FOR v_check_context in c_check_context LOOP
3879        IF v_check_context.context <> p_context THEN
3880          --set the x_context_changed flag to 'Y'
3881          x_context_changed := 'Y';
3882 
3883          --set all out parameters
3884          x_db_incident_id := v_check_context.incident_id;
3885          x_db_context     := v_check_context.context;
3886 
3887          EXIT;
3888        ELSE
3889           --context matched
3890          x_context_changed := 'N';
3891 
3892          --set all out parameters
3893          x_db_incident_id := v_check_context.incident_id;
3894          x_db_context     := v_check_context.context;
3895 
3896         END IF;
3897      END LOOP;
3898 
3899      --DBMS_OUTPUT.PUT_LINE('x_context_changed'||x_context_changed);
3900    END IF;
3901 
3902 END;
3903 
3904 
3905 PROCEDURE Get_SR_Ext_Attrs
3906 (p_api_version   	     IN           NUMBER
3907 ,p_init_msg_list             IN           VARCHAR2   := FND_API.G_FALSE
3908 ,p_commit                    IN           VARCHAR2   := FND_API.G_FALSE
3909 ,p_incident_id               IN           NUMBER
3910 ,p_object_name               IN           VARCHAR2
3911 ,x_ext_attr_grp_tbl          OUT  NOCOPY  CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
3912 ,x_ext_attr_tbl              OUT  NOCOPY  CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
3913 ,x_return_status             OUT  NOCOPY  VARCHAR2
3914 ,x_msg_count                 OUT  NOCOPY  NUMBER
3915 ,x_msg_data                  OUT  NOCOPY  VARCHAR2) IS
3916 
3917 
3918 CURSOR c_check_incident_id IS
3919 SELECT incident_id
3920   FROM  cs_incidents_all_b
3921  WHERE  incident_id = p_incident_id;
3922 
3923 
3924 cursor c_get_sr_ext_attr(p_incident_id IN NUMBER) IS
3925 SELECT *
3926   FROM cs_incidents_ext
3927  WHERE incident_id = p_incident_id;
3928 
3929 
3930 cursor c_get_pr_ext_attr(p_incident_id IN NUMBER) IS
3931 SELECT *
3932   FROM cs_sr_contacts_ext
3933  WHERE incident_id = p_incident_id;
3934 
3935 CURSOR c_get_attr(p_application_id IN NUMBER
3936                  ,p_attr_group_type IN VARCHAR2
3937                  ,p_attr_group_name IN VARCHAR2)IS
3938   SELECT  APPLICATION_ID,
3939           ATTR_GROUP_TYPE,
3940           ATTR_GROUP_NAME,
3941           attr_name,
3942           attr_display_name,
3943           database_column
3944     FROM  ego_attrs_v
3945    WHERE application_id  = p_application_id
3946      AND attr_group_type = p_attr_group_type
3947      AND attr_group_name = p_attr_group_name
3948      AND enabled_flag = 'Y'
3949      order by sequence;
3950 
3951 Cursor c_get_attr_group_disp_name(p_attr_group_id IN NUMBER) IS
3952     select ATTR_GROUP_DISP_NAME
3953       from ego_attr_groups_v
3954      where attr_group_id = p_attr_group_id;
3955 
3956 Cursor c_get_sr_pks(p_ext_id IN NUMBER)IS
3957   SELECT incident_id, context
3958     FROM cs_incidents_ext
3959    WHERE extension_id = p_ext_id;
3960 
3961 Cursor c_get_pr_pks(p_ext_id IN NUMBER)IS
3962   SELECT incident_id, party_id, contact_type, party_role_code, context
3963     FROM cs_sr_contacts_ext
3964    WHERE extension_id = p_ext_id;
3965 
3966 
3967 l_pk_col_name_value_pair        EGO_COL_NAME_VALUE_PAIR_ARRAY;
3968 l_attr_group_request_table      EGO_ATTR_GROUP_REQUEST_TABLE;
3969 l_attributes_row_table          EGO_USER_ATTR_ROW_TABLE;
3970 l_attributes_data_table         EGO_USER_ATTR_DATA_TABLE;
3971 l_user_privileges_on_object     EGO_VARCHAR_TBL_TYPE;
3972 l_return_status                 VARCHAR2(1);
3973 l_errorcode                     NUMBER;
3974 l_msg_count                     NUMBER;
3975 l_msg_data                      VARCHAR2(4000);
3976 l_msg                           VARCHAR2(4000);
3977 l_errm                          VARCHAR2(4000);
3978 l_attr                          VARCHAR2(1000);
3979 
3980 l_application_id NUMBER;
3981 l_attr_group_type VARCHAR2(30);
3982 l_attr_group_name VARCHAR2(80);
3983 l_first boolean;
3984 l_internal_name_str VARCHAR2(2000) := '';
3985 l_count NUMBER := 0;
3986 l_count_1 NUMBER := 0;
3987 
3988 
3989 l_api_version   constant number       := 1.0;
3990 l_api_name      constant varchar2(30) := 'Get_SR_Ext_Attrs';
3991 l_api_name_full constant varchar2(61) := g_pkg_name || '.' || l_api_name;
3992 l_log_module    constant varchar2(255) := 'cs.plsql.' || l_api_name_full || '.';
3993 
3994 l_incident_id NUMBER;
3995 l_party_id NUMBER;
3996 l_contact_type VARCHAR2(30);
3997 l_party_role_code VARCHAR2(30);
3998 l_context NUMBER;
3999 l_pr_context VARCHAR2(30);
4000 
4001 l_record_exists VARCHAR2(1) := 'N';
4002 --
4003 --This table will hold the extended attributes information
4004 --
4005 TYPE EXT_ATTRIBUTE_REC IS RECORD
4006 ( APPLICATION_ID    NUMBER
4007  ,ATTR_GROUP_TYPE   VARCHAR2(30)
4008  ,ATTR_GROUP_NAME   VARCHAR2(30)
4009  ,ATTR_DISPLAY_NAME VARCHAR2(80)
4010  ,ATTR_NAME         VARCHAR2(30)
4011  ,DATABASE_COLUMN   VARCHAR2(30));
4012 
4013 TYPE EXT_ATTRIBUTE_TBL IS TABLE OF EXT_ATTRIBUTE_REC INDEX BY BINARY_INTEGER;
4014 l_ext_attr_tbl EXT_ATTRIBUTE_TBL;
4015 
4016 
4017 BEGIN
4018 
4019 SAVEPOINT Get_SR_Ext_Attrs;
4020 
4021 --DBMS_OUTPUT.PUT_LINE('In Get_SR API');
4022 
4023 -- Standard call to check for call compatibility.
4024 IF NOT FND_API.Compatible_API_Call (l_api_version,
4025                                     p_api_version,
4026                                     l_api_name,
4027                                     G_PKG_NAME) THEN
4028   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4029 END IF;
4030 
4031 -- Initialize message list if p_init_msg_list is set to TRUE.
4032 IF FND_API.to_Boolean(p_init_msg_list) THEN
4033   FND_MSG_PUB.initialize;
4034 END IF;
4035 
4036 -- Initialize API return status to SUCCESS
4037 x_return_status := FND_API.G_RET_STS_SUCCESS;
4038 
4039 ---------------------- FND Logging -----------------------------------
4040   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
4041   THEN
4042     FND_LOG.String
4043     ( FND_LOG.level_procedure , L_LOG_MODULE || 'start'
4044     , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
4045     );
4046     FND_LOG.String
4047     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4048     , 'p_api_version:' || p_api_version
4049     );
4050     FND_LOG.String
4051     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4052     , 'p_init_msg_list:' || p_init_msg_list
4053     );
4054     FND_LOG.String
4055     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4056     , 'p_commit:' || p_commit
4057     );
4058 
4059     FND_LOG.String
4060     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4061     , 'p_incident_id:' || p_commit
4062     );
4063 
4064     FND_LOG.String
4065     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4066     , 'p_incident_id:' || p_incident_id
4067     );
4068 
4069     FND_LOG.String
4070     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4071     , 'p_object_name:' || p_object_name
4072     );
4073 
4074   END IF;
4075 
4076 --DBMS_OUTPUT.PUT_LINE('Validating incident_id');
4077 --validate the incident_id passed
4078 IF p_incident_id IS NOT NULL THEN
4079   --p_incident_id is passed
4080   --Validate the pk_column_1 that is coming in
4081   OPEN c_check_incident_id;
4082   FETCH c_check_incident_id INTO l_incident_id;
4083   CLOSE c_check_incident_id;
4084 
4085   IF l_incident_id IS NULL THEN
4086     --raise error
4087     CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
4088                            p_token_an => l_api_name_full
4089                           ,p_token_v  => p_incident_id
4090                           ,p_token_p  => 'P_INCIDENT_ID');
4091     RAISE FND_API.G_EXC_ERROR;
4092   END IF;
4093 
4094   --DBMS_OUTPUT.PUT_LINE ('Pass pk1 validation');
4095 
4096 ELSE
4097   --raise error
4098   CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
4099                          p_token_an	=> l_api_name_full
4100                         ,p_token_mp	=> 'P_INCIDENT_ID');
4101   RAISE FND_API.G_EXC_ERROR;
4102 
4103 END IF;
4104 
4105 -- Added FND_LOG
4106 IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4107   FND_LOG.String
4108   ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4109   , 'Incident Passed is Valid :'
4110     || p_incident_id
4111   );
4112 END IF;
4113 
4114 IF  p_object_name = 'CS_SERVICE_REQUEST' THEN
4115 
4116 
4117   --DBMS_OUTPUT.PUT_LINE('object is CS_SR');
4118 
4119   FOR v_get_sr_ext_attr IN c_get_sr_ext_attr(p_incident_id) LOOP
4120 
4121     --set l_record_exists to 'y'
4122     l_record_exists := 'Y';
4123 
4124     -- Added FND_LOG
4125     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4126       FND_LOG.String
4127       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4128      , 'Service Request Extensible Attributes exist for Incident passed :'
4129        );
4130     END IF;
4131 
4132     --populate the primary key array
4133     l_pk_col_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('INCIDENT_ID', to_char(p_incident_id)));
4134 
4135     --DBMS_OUTPUT.PUT_LINE('populated pk array');
4136 
4137     --get the attribute group information
4138     IF v_get_sr_ext_attr.attr_group_id IS NOT NULL then
4139       --get the attribute group type name and appl id
4140       Get_Attr_Group_Metadata(
4141                p_attr_group_id   => v_get_sr_ext_attr.attr_group_id
4142               ,x_application_id  => l_application_id
4143               ,x_attr_group_type => l_attr_group_type
4144               ,x_attr_group_name => l_attr_group_name);
4145 
4146       -- Added FND_LOG
4147       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4148         FND_LOG.String
4149         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4150         , 'Attribute Group Metadata -> Application ID :'
4151          || l_application_id
4152          );
4153       END IF;
4154 
4155       -- Added FND_LOG
4156       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4157         FND_LOG.String
4158         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4159         , 'Attribute Group Metadata -> Attribute Group Type  :'
4160          || l_attr_group_type
4161          );
4162       END IF;
4163 
4164       -- Added FND_LOG
4165       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4166         FND_LOG.String
4167         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4168         , 'Attribute Group Metadata -> Attribute Group Name  :'
4169          || l_attr_group_name
4170          );
4171       END IF;
4172 
4173       --DBMS_OUTPUT.PUT_LINE('Got Attr Metadata');
4174 
4175 
4176       --get attribute metadata for the attribute group
4177       IF l_application_id IS NOT NULL AND
4178          l_attr_group_type IS NOT NULL AND
4179          l_attr_group_name IS NOT NULL THEN
4180 
4181 
4182         FOR v_get_attr in c_get_attr(l_application_id
4183                                     ,l_attr_group_type
4184                                     ,l_attr_group_name)
4185         LOOP
4186 
4187           l_count := l_count + 1;
4188           l_ext_attr_tbl(l_count).application_id := v_get_attr.application_id;
4189           l_ext_attr_tbl(l_count).attr_group_type := v_get_attr.attr_group_type;
4190           l_ext_attr_tbl(l_count).attr_group_name := v_get_attr.attr_group_name;
4191           l_ext_attr_tbl(l_count).attr_name := v_get_attr.attr_name;
4192           l_ext_attr_tbl(l_count).attr_display_name := v_get_attr.attr_display_name;
4193           l_ext_attr_tbl(l_count).database_column := v_get_attr.database_column;
4194 
4195 
4196         END LOOP;
4197 
4198         --DBMS_OUTPUT.PUT_LINE('populated att table');
4199         l_first  := true;
4200         l_internal_name_str := '';
4201 
4202         FOR i in l_ext_attr_tbl.first..l_ext_attr_tbl.last LOOP
4203 
4204           IF  l_ext_attr_tbl(i).attr_group_name = l_attr_group_name THEN
4205             IF l_first = true then
4206                 l_first := false;
4207             ELSE
4208                 l_internal_name_str  := l_internal_name_str || ',';
4209             END IF;
4210 
4211             l_internal_name_str := l_internal_name_str || l_ext_attr_tbl(i).attr_name;
4212           END IF;
4213 
4214         END LOOP;
4215 
4216         --DBMS_OUTPUT.PUT_LINE('constructed string');
4217         --DBMS_OUTPUT.PUT_LINE('constructed string: '||l_internal_name_str);
4218 
4219         -- Added FND_LOG
4220         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4221           FND_LOG.String
4222           ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4223           , 'Attribute String to Pass to PLM  :'
4224            || l_internal_name_str
4225           );
4226         END IF;
4227 
4228 
4229       ELSE
4230         -- Raise error
4231         --composite key missing
4232         FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXTATTR_COMP_KEY_REQ');
4233         FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4234         FND_MSG_PUB.ADD;
4235         RAISE FND_API.G_EXC_ERROR;
4236       END IF; -- composite key end if
4237 
4238 
4239       --populate the attribute group request table to pass to PLM
4240       IF (l_attr_group_request_table IS NULL) THEN
4241         l_attr_group_request_table := EGO_ATTR_GROUP_REQUEST_TABLE();
4242       END IF;
4243 
4244       --DBMS_OUTPUT.PUT_LINE('Initialized PLM Obj');
4245       --Extend the object to add value it it
4246       l_attr_group_request_table.EXTEND();
4247 --      l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_ATTR_GROUP_REQUEST_OBJ
4248   ---                                                                   (v_get_sr_ext_attr.attr_group_id, l_application_id,
4249      ---                                                                 l_attr_group_type,l_attr_group_name,'GENERIC_LEVEL', NULL, NULL, l_internal_name_str);
4250 l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Request_Obj(v_get_sr_ext_attr.attr_group_id, l_application_id,
4251                                                                          l_attr_group_type,l_attr_group_name,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, l_internal_name_str);
4252       --DBMS_OUTPUT.PUT_LINE('Extended PLM Onj');
4253       --DBMS_OUTPUT.PUT_LINE('l_attr_group_request_table'||l_attr_group_request_table.COUNT);
4254 
4255     ELSE
4256       --attribute group is null
4257       --raise error
4258       FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXT_ATTR_GROUP_REQ');
4259       FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4260       FND_MSG_PUB.ADD;
4261       RAISE FND_API.G_EXC_ERROR;
4262     END IF; --v_get_sr_ext_attr.attr_group_id IS NOT NULL
4263 
4264   END LOOP;
4265 
4266   IF l_record_exists <> 'Y' THEN
4267     --no count for that incident was found in the table
4268     --do not call PLM
4269 
4270       -- Added FND_LOG
4271       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4272         FND_LOG.String
4273         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4274         , 'No Service Request Extensible Attributes data exists for this Incident'
4275         );
4276       END IF;
4277     RETURN;
4278   END IF;
4279 
4280   --DBMS_OUTPUT.PUT_LINE('Calling PLM API');
4281   --intialize the user_privs_on_object
4282   l_user_privileges_on_object := EGO_VARCHAR_TBL_TYPE();
4283   l_user_privileges_on_object.EXTEND();
4284   --Call PLM Get_User_Attrs_Data API
4285 
4286    -- Added FND_LOG
4287    IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4288      FND_LOG.String
4289      ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4290      , 'Calling PLM Get User Attrs Data API'
4291      );
4292    END IF;
4293 
4294 
4295 
4296   EGO_USER_ATTRS_DATA_PUB.Get_User_Attrs_Data(
4297                           p_api_version => 1.0
4298                          ,p_object_name => 'CS_SERVICE_REQUEST'
4299                          ,p_pk_column_name_value_pairs => l_pk_col_name_value_pair
4300                          ,p_attr_group_request_table   => l_attr_group_request_table
4301                          ,p_user_privileges_on_object  => l_user_privileges_on_object
4302                          ,p_entity_id                  => NULL
4303                          ,p_entity_index               => NULL
4304                          ,p_entity_code                => NULL
4305                          ,p_debug_level                => 3
4306                          ,p_init_error_handler         => NULL
4307                          ,p_init_fnd_msg_list          => p_init_msg_list
4308                          ,p_add_errors_to_fnd_stack    => NULL
4309                          ,p_commit                     => p_commit
4310                          ,x_attributes_row_table       => l_attributes_row_table
4311                          ,x_attributes_data_table      => l_attributes_data_table
4312                          ,x_return_status              => x_return_status
4313                          ,x_errorcode                  => l_errorcode
4314                          ,x_msg_count                  => x_msg_count
4315                          ,x_msg_data                   => x_msg_data  );
4316 
4317   --DBMS_OUTPUT.PUT_LINE( 'x_msg_data'||x_msg_data);
4318 
4319   -- Added FND_LOG
4320   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4321     FND_LOG.String
4322     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4323     , 'PLM get User Attrs Data return status  :'
4324      || x_return_status
4325     );
4326   END IF;
4327 
4328     -- Added FND_LOG
4329   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4330     FND_LOG.String
4331     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4332     , 'PLM get User Attrs Data msg data  :'
4333      || x_msg_data
4334     );
4335   END IF;
4336 
4337 
4338   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4339     FND_MESSAGE.Set_Name('CS', 'CS_API_GET_SR_EXT_ATTR_WARNING');
4340     FND_MSG_PUB.Add;
4341     RAISE FND_API.G_EXC_ERROR;
4342   END IF;
4343 
4344   --populate the out parameters with the value returned from PLM
4345   --initialize counter := 0
4346   l_count := 0;
4347   l_count_1 := 0;
4348 
4349   --DBMS_OUTPUT.PUT_LINE('l_attributes_row_table'||l_attributes_row_table.COUNT);
4350   --DBMS_OUTPUT.PUT_LINE('l_attributes_data_table'||l_attributes_data_table.COUNT);
4351 
4352   IF l_attributes_row_table.COUNT > 0 THEN
4353     FOR i IN l_attributes_row_table.FIRST .. l_attributes_row_table.LAST LOOP
4354 
4355       IF l_attributes_row_table.EXISTS(i) THEN
4356 
4357         l_count := l_count + 1;
4358 
4359         x_ext_attr_grp_tbl(l_count).row_identifier    := l_attributes_row_table(i).row_identifier;
4360 
4361 
4362         --get the pks for the extension id
4363         OPEN c_get_sr_pks(p_ext_id => x_ext_attr_grp_tbl(l_count).row_identifier);
4364         FETCH c_get_sr_pks into l_incident_id, l_context;
4365         CLOSE c_get_sr_pks;
4366 
4367         IF l_incident_id IS NULL THEN
4368           x_ext_attr_grp_tbl(l_count).pk_column_1       := null;
4369         ELSE
4370           x_ext_attr_grp_tbl(l_count).pk_column_1       := l_incident_id;
4371         END IF;
4372 
4373         x_ext_attr_grp_tbl(l_count).pk_column_2       := null;
4374         x_ext_attr_grp_tbl(l_count).pk_column_3       := null;
4375         x_ext_attr_grp_tbl(l_count).pk_column_4       := null;
4376         x_ext_attr_grp_tbl(l_count).pk_column_5       := null;
4377 
4378         IF l_context IS NULL THEN
4379           x_ext_attr_grp_tbl(l_count).context         := null;
4380         ELSE
4381           x_ext_attr_grp_tbl(l_count).context         := to_char(l_context);
4382         END IF;
4383 
4384         x_ext_attr_grp_tbl(l_count).object_name       := 'CS_SERVICE_REQUEST';
4385         x_ext_attr_grp_tbl(l_count).attr_group_id     := l_attributes_row_table(i).attr_group_id;
4386         x_ext_attr_grp_tbl(l_count).attr_group_app_id := l_attributes_row_table(i).attr_group_app_id;
4387         x_ext_attr_grp_tbl(l_count).attr_group_type   := l_attributes_row_table(i).attr_group_type;
4388         x_ext_attr_grp_tbl(l_count).attr_group_name   := l_attributes_row_table(i).attr_group_name;
4389         x_ext_attr_grp_tbl(l_count).mapping_req       := 'N';
4390         x_ext_attr_grp_tbl(l_count).operation         := 'GET';
4391 
4392 
4393         --get the dislay name for the attribute group
4394 
4395         OPEN c_get_attr_group_disp_name(x_ext_attr_grp_tbl(l_count).attr_group_id);
4396         FETCH c_get_attr_group_disp_name INTO x_ext_attr_grp_tbl(l_count).attr_group_disp_name;
4397         CLOSE c_get_attr_group_disp_name;
4398 
4399         --DBMS_OUTPUT.PUT_LINE('x_ext_attr_grp_tbl(l_count).row_identifier'||x_ext_attr_grp_tbl(l_count).row_identifier);
4400         --DBMS_OUTPUT.PUT_LINE('x_ext_attr_grp_tbl(l_count).attr_group_disp_name'||x_ext_attr_grp_tbl(l_count).attr_group_disp_name);
4401 
4402         -- loop through the attributes table and then populate the attributes record for the attribute group
4403 
4404         --DBMS_OUTPUT.PUT_LINE('l_attributes_data_table.COUNT'||l_attributes_data_table.COUNT);
4405 
4406         FOR j IN l_attributes_data_table.FIRST .. l_attributes_data_table.LAST LOOP
4407 
4408           IF l_attributes_data_table.EXISTS(j) THEN
4409 
4410             IF l_attributes_row_table(i).row_identifier = l_attributes_data_table(j).row_identifier THEN
4411 
4412               l_count_1 := l_count_1 + 1;
4413 
4414               -- match found populate the out parameter for the attribute table
4415               x_ext_attr_tbl(l_count_1).row_identifier := l_attributes_data_table(j).row_identifier;
4416               x_ext_attr_tbl(l_count_1).attr_name := l_attributes_data_table(j).attr_name;
4417               x_ext_attr_tbl(l_count_1).attr_value_str := l_attributes_data_table(j).attr_value_str;
4418               x_ext_attr_tbl(l_count_1).attr_value_num := l_attributes_data_table(j).attr_value_num;
4419               x_ext_attr_tbl(l_count_1).attr_value_date := l_attributes_data_table(j).attr_value_date;
4420               x_ext_attr_tbl(l_count_1).attr_value_display := l_attributes_data_table(j).attr_disp_value;
4421               x_ext_attr_tbl(l_count_1).attr_unit_of_measure := l_attributes_data_table(j).attr_unit_of_measure;
4422 
4423               --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).row_identifier'||x_ext_attr_tbl(l_count_1).row_identifier);
4424               --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).attr_name'||x_ext_attr_tbl(l_count_1).attr_name);
4425 
4426               --get the database column_name and display name for the attribute
4427               FOR k IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST LOOP
4428 
4429                 IF l_ext_attr_tbl.EXISTS(k) THEN
4430 
4431                   IF l_attributes_row_table(i).attr_group_app_id  = l_ext_attr_tbl(k).application_id AND
4432                      l_attributes_row_table(i).attr_group_type = l_ext_attr_tbl(k).attr_group_type  AND
4433                      l_attributes_row_table(i).attr_group_name = l_ext_attr_tbl(k).attr_group_name AND
4434                      l_attributes_data_table(j).attr_name      = l_ext_attr_tbl(k).attr_name THEN
4435 
4436                     x_ext_attr_tbl(l_count_1).column_name := l_ext_attr_tbl(k).database_column;
4437                     x_ext_attr_tbl(l_count_1).attr_disp_name := l_ext_attr_tbl(k).attr_display_name;
4438 
4439                     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).attr_disp_name'||x_ext_attr_tbl(l_count_1).attr_disp_name);
4440                     --DBMS_OUTPUT.PUT_LINE(' x_ext_attr_tbl(l_count_1).column_name'|| x_ext_attr_tbl(l_count_1).column_name);
4441                   END IF;
4442                 END IF;
4443               END LOOP;
4444             END IF;
4445           END IF;
4446         END LOOP;
4447       END IF;
4448     END LOOP;
4449 
4450     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl.COUNT'||x_ext_attr_tbl.count);
4451     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_grp_tbl.COUNT'||x_ext_attr_grp_tbl.COUNT);
4452 
4453 
4454   END IF ; -- l_attributes_row_table.COUNT IS NOT NULL
4455 
4456 
4457 ELSIF p_object_name = 'CS_PARTY_ROLE' THEN
4458 
4459   FOR v_get_pr_ext_attr IN c_get_pr_ext_attr(p_incident_id) LOOP
4460 
4461     --set l_record_exists to 'y'
4462     l_record_exists := 'Y';
4463 
4464     -- Added FND_LOG
4465     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4466       FND_LOG.String
4467       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4468      , 'Party Role Extensible Attributes exist for Incident passed :'
4469        );
4470     END IF;
4471 
4472     --populate the primary key array
4473     l_pk_col_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY(EGO_COL_NAME_VALUE_PAIR_OBJ('INCIDENT_ID', to_char(p_incident_id)),
4474                                 EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ID', to_char(v_get_pr_ext_attr.party_id)),
4475                                 EGO_COL_NAME_VALUE_PAIR_OBJ('CONTACT_TYPE', v_get_pr_ext_attr.contact_type),
4476                                 EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ROLE_CODE', v_get_pr_ext_attr.party_role_code));
4477 
4478     --get the attribute group information
4479     IF v_get_pr_ext_attr.attr_group_id IS NOT NULL then
4480       --get the attribute group type name and appl id
4481       Get_Attr_Group_Metadata(
4482                p_attr_group_id   => v_get_pr_ext_attr.attr_group_id
4483               ,x_application_id  => l_application_id
4484               ,x_attr_group_type => l_attr_group_type
4485               ,x_attr_group_name => l_attr_group_name);
4486 
4487       -- Added FND_LOG
4488       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4489         FND_LOG.String
4490         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4491         , 'Attribute Group Metadata -> Application ID :'
4492          || l_application_id
4493          );
4494       END IF;
4495 
4496       -- Added FND_LOG
4497       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4498         FND_LOG.String
4499         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4500         , 'Attribute Group Metadata -> Attribute Group Type  :'
4501          || l_attr_group_type
4502          );
4503       END IF;
4504 
4505       -- Added FND_LOG
4506       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4507         FND_LOG.String
4508         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4509         , 'Attribute Group Metadata -> Attribute Group Name  :'
4510          || l_attr_group_name
4511          );
4512       END IF;
4513 
4514 
4515       --get attribute metadata for the attribute group
4516       IF l_application_id IS NOT NULL AND
4517          l_attr_group_type IS NOT NULL AND
4518          l_attr_group_name IS NOT NULL THEN
4519 
4520 
4521         FOR v_get_attr in c_get_attr(l_application_id
4522                                     ,l_attr_group_type
4523                                     ,l_attr_group_name) LOOP
4524 
4525           l_count := l_count + 1;
4526           l_ext_attr_tbl(l_count).application_id := v_get_attr.application_id;
4527           l_ext_attr_tbl(l_count).attr_group_type := v_get_attr.attr_group_type;
4528           l_ext_attr_tbl(l_count).attr_group_name := v_get_attr.attr_group_name;
4529           l_ext_attr_tbl(l_count).attr_name := v_get_attr.attr_name;
4530           l_ext_attr_tbl(l_count).attr_display_name := v_get_attr.attr_display_name;
4531           l_ext_attr_tbl(l_count).database_column := v_get_attr.database_column;
4532 
4533         END LOOP;
4534 
4535         l_first  := true;
4536         l_internal_name_str := '';
4537 
4538         FOR i in l_ext_attr_tbl.first..l_ext_attr_tbl.last LOOP
4539 
4540           IF l_first = true then
4541             l_first := false;
4542           ELSE
4543             l_internal_name_str  := l_internal_name_str || ',';
4544           END IF;
4545 
4546           l_internal_name_str := l_internal_name_str || l_ext_attr_tbl(i).attr_name;
4547 
4548         END LOOP;
4549 
4550         -- Added FND_LOG
4551         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4552           FND_LOG.String
4553           ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4554           , 'Attribute String to Pass to PLM  :'
4555            || l_internal_name_str
4556           );
4557         END IF;
4558 
4559 
4560       ELSE
4561         -- Raise error
4562         --composite key missing
4563         -- MAYA need to add
4564         FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXTATTR_COMP_KEY_REQ');
4565         FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4566         FND_MSG_PUB.ADD;
4567         RAISE FND_API.G_EXC_ERROR;
4568       END IF; -- composite key end if
4569 
4570 
4571       --populate the attribute group request table to pass to PLM
4572       IF (l_attr_group_request_table IS NULL) THEN
4573         l_attr_group_request_table := EGO_ATTR_GROUP_REQUEST_TABLE();
4574       END IF;
4575 
4576 
4577       --Extend the object to add value it it
4578 --      l_attr_group_request_table.EXTEND();
4579   --    l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_ATTR_GROUP_REQUEST_OBJ
4580     --                                                                (v_get_pr_ext_attr.attr_group_id, l_application_id,
4581       --                                                               l_attr_group_type,l_attr_group_name,'PARTY_ROLE_LEVEL', NULL, NULL, l_internal_name_str);
4582       l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Request_Obj
4583                                                                       (v_get_pr_ext_attr.attr_group_id, l_application_id,
4584                                                                        l_attr_group_type,l_attr_group_name,'PARTY_ROLE_LEVEL', NULL, NULL,NULL,NULL,NULL, l_internal_name_str);
4585     ELSE
4586       --attribute group is null
4587       --raise error
4588       FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXT_ATTR_GROUP_REQ');
4589       FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4590       FND_MSG_PUB.ADD;
4591       RAISE FND_API.G_EXC_ERROR;
4592 
4593     END IF; --v_get_pr_ext_attr.attr_group_id IS NOT NULL
4594 
4595   END LOOP;
4596 
4597   IF l_record_exists <> 'Y' THEN
4598     --no count for that incident was found in the table
4599     --do not call PLM
4600      -- Added FND_LOG
4601     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4602       FND_LOG.String
4603       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4604      , 'No Party Role Extensible Attributes exist for Incident passed :'
4605        );
4606     END IF;
4607     RETURN;
4608   END IF;
4609 
4610    -- Added FND_LOG
4611     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4612       FND_LOG.String
4613       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4614      , 'Calling PLM Get User Attrs Data API :'
4615        );
4616     END IF;
4617 
4618   --Call PLM Get_User_Attrs_Data API
4619   EGO_USER_ATTRS_DATA_PUB.Get_User_Attrs_Data(
4620                           p_api_version => 1.0
4621                          ,p_object_name => 'CS_PARTY_ROLE'
4622                          ,p_pk_column_name_value_pairs => l_pk_col_name_value_pair
4623                          ,p_attr_group_request_table   => l_attr_group_request_table
4624                          ,p_user_privileges_on_object  => NULL
4625                          ,p_entity_id                  => NULL
4626                          ,p_entity_index               => NULL
4627                          ,p_entity_code                => NULL
4628                          ,p_debug_level                => 3
4629                          ,p_init_error_handler         => NULL
4630                          ,p_init_fnd_msg_list          => p_init_msg_list
4631                          ,p_add_errors_to_fnd_stack    => NULL
4632                          ,p_commit                     => p_commit
4633                          ,x_attributes_row_table       => l_attributes_row_table
4634                          ,x_attributes_data_table      => l_attributes_data_table
4635                          ,x_return_status              => x_return_status
4636                          ,x_errorcode                  => l_errorcode
4637                          ,x_msg_count                  => x_msg_count
4638                          ,x_msg_data                   => x_msg_data);
4639 
4640   -- Added FND_LOG
4641   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4642     FND_LOG.String
4643     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4644     , 'PLM get User Attrs Data return status  :'
4645      || x_return_status
4646     );
4647   END IF;
4648 
4649     -- Added FND_LOG
4650   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4651     FND_LOG.String
4652     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4653     , 'PLM get User Attrs Data msg data  :'
4654      || x_msg_data
4655     );
4656   END IF;
4657 
4658   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4659     FND_MESSAGE.Set_Name('CS', 'CS_API_GET_SR_EXT_ATTR_WARNING');
4660     FND_MSG_PUB.Add;
4661     RAISE FND_API.G_EXC_ERROR;
4662   END IF;
4663 
4664   --populate the out parameters with the value returned from PLM
4665   --initialize counter := 0
4666   l_count := 0;
4667   l_count_1 := 0;
4668 
4669    IF l_attributes_row_table.COUNT > 0 THEN
4670     FOR i IN l_attributes_row_table.FIRST .. l_attributes_row_table.LAST LOOP
4671 
4672       IF l_attributes_row_table.EXISTS(i) THEN
4673 
4674       l_count := l_count + 1;
4675       x_ext_attr_grp_tbl(l_count).row_identifier := l_attributes_row_table(i).row_identifier;
4676 
4677       --get the pks for the extension id
4678       OPEN c_get_pr_pks(p_ext_id =>x_ext_attr_grp_tbl(l_count).row_identifier);
4679       FETCH c_get_pr_pks into l_incident_id, l_party_id, l_contact_type, l_party_role_code, l_pr_context;
4680       CLOSE c_get_pr_pks;
4681 
4682       IF l_incident_id IS NULL THEN
4683         x_ext_attr_grp_tbl(l_count).pk_column_1       := null;
4684       ELSE
4685         x_ext_attr_grp_tbl(l_count).pk_column_1       := l_incident_id;
4686       END IF;
4687 
4688       IF l_party_id IS NULL THEN
4689         x_ext_attr_grp_tbl(l_count).pk_column_2       := null;
4690       ELSE
4691         x_ext_attr_grp_tbl(l_count).pk_column_2       := l_party_id;
4692       END IF;
4693 
4694       IF l_contact_type IS NULL THEN
4695         x_ext_attr_grp_tbl(l_count).pk_column_3       := null;
4696       ELSE
4697         x_ext_attr_grp_tbl(l_count).pk_column_3       := l_contact_type;
4698       END IF;
4699 
4700       IF l_party_role_code IS NULL THEN
4701         x_ext_attr_grp_tbl(l_count).pk_column_4       := null;
4702       ELSE
4703         x_ext_attr_grp_tbl(l_count).pk_column_4       := l_party_role_code;
4704       END IF;
4705 
4706       x_ext_attr_grp_tbl(l_count).pk_column_5       := null;
4707 
4708       IF l_pr_context IS NULL THEN
4709         x_ext_attr_grp_tbl(l_count).context         := null;
4710       ELSE
4711         x_ext_attr_grp_tbl(l_count).context         := l_pr_context;
4712       END IF;
4713 
4714       x_ext_attr_grp_tbl(l_count).attr_group_id     := l_attributes_row_table(i).attr_group_id;
4715       x_ext_attr_grp_tbl(l_count).attr_group_app_id := l_attributes_row_table(i).attr_group_app_id;
4716       x_ext_attr_grp_tbl(l_count).attr_group_type   := l_attributes_row_table(i).attr_group_type;
4717       x_ext_attr_grp_tbl(l_count).attr_group_name   := l_attributes_row_table(i).attr_group_name;
4718       x_ext_attr_grp_tbl(l_count).mapping_req       := 'N';
4719       x_ext_attr_grp_tbl(l_count).operation         := 'GET';
4720 
4721       --get the dislay name for the attribute group
4722       OPEN c_get_attr_group_disp_name(x_ext_attr_grp_tbl(l_count).attr_group_id);
4723       FETCH c_get_attr_group_disp_name INTO x_ext_attr_grp_tbl(l_count).attr_group_disp_name;
4724       CLOSE c_get_attr_group_disp_name;
4725 
4726       -- loop through the attributes table and then populate the attributes record for the attribute group
4727       FOR j IN l_attributes_data_table.FIRST .. l_attributes_data_table.LAST LOOP
4728 
4729         IF l_attributes_data_table.EXISTS(j) THEN
4730 
4731 
4732           IF l_attributes_row_table(i).row_identifier = l_attributes_data_table(j).row_identifier THEN
4733             l_count_1 := l_count_1 + 1;
4734             -- match found populate the out parameter for the attribute table
4735             x_ext_attr_tbl(l_count_1).row_identifier := l_attributes_data_table(j).row_identifier;
4736             x_ext_attr_tbl(l_count_1).attr_name := l_attributes_data_table(j).attr_name;
4737             x_ext_attr_tbl(l_count_1).attr_value_str := l_attributes_data_table(j).attr_value_str;
4738             x_ext_attr_tbl(l_count_1).attr_value_num := l_attributes_data_table(j).attr_value_num;
4739             x_ext_attr_tbl(l_count_1).attr_value_date := l_attributes_data_table(j).attr_value_date;
4740             x_ext_attr_tbl(l_count_1).attr_value_display := l_attributes_data_table(j).attr_disp_value;
4741             x_ext_attr_tbl(l_count_1).attr_unit_of_measure := l_attributes_data_table(j).attr_unit_of_measure;
4742 
4743 
4744 
4745           --get the database column_name and display name for the attribute
4746            FOR k IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST LOOP
4747 
4748              IF l_ext_attr_tbl.EXISTS(k) THEN
4749 
4750                IF l_attributes_row_table(i).attr_group_app_id  = l_ext_attr_tbl(k).application_id AND
4751                  l_attributes_row_table(i).attr_group_type = l_ext_attr_tbl(k).attr_group_type  AND
4752                  l_attributes_row_table(i).attr_group_name = l_ext_attr_tbl(k).attr_group_name AND
4753                  l_attributes_data_table(j).attr_name      = l_ext_attr_tbl(k).attr_name THEN
4754 
4755                  x_ext_attr_tbl(l_count_1).column_name := l_ext_attr_tbl(k).database_column;
4756                  x_ext_attr_tbl(l_count_1).attr_disp_name := l_ext_attr_tbl(k).attr_display_name;
4757 
4758                END IF;
4759               END IF;
4760              END LOOP;
4761             END IF;
4762           END IF;
4763         END LOOP;
4764       END IF;
4765     END LOOP;
4766   END IF ; -- l_attributes_row_table.COUNT IS NOT NULL
4767 
4768 END IF;
4769 
4770  ---------------------- FND Logging -----------------------------------
4771 IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
4772 THEN
4773 
4774    -- --------------------------------------------------------------------------
4775    -- This procedure Logs the extensible attributes table.
4776    -- --------------------------------------------------------------------------
4777    Log_EXT_PVT_Parameters
4778    ( p_ext_attr_grp_tbl   => x_ext_attr_grp_tbl
4779     ,p_ext_attr_tbl       => x_ext_attr_tbl
4780     );
4781 
4782    Log_EGO_Ext_PVT_Parameters(
4783                 p_ext_attr_grp_tbl => l_attributes_row_table
4784                ,p_ext_attr_tbl     => l_attributes_data_table);
4785 
4786 END IF;
4787 
4788 EXCEPTION
4789   WHEN FND_API.G_EXC_ERROR THEN
4790     x_return_status := FND_API.G_RET_STS_ERROR;
4791     FND_MSG_PUB.Count_And_Get
4792       ( p_count => x_msg_count,
4793         p_data  => x_msg_data
4794       );
4795   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4796     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4797     FND_MSG_PUB.Count_And_Get
4798       ( p_count => x_msg_count,
4799         p_data  => x_msg_data
4800       );
4801 
4802   WHEN OTHERS THEN
4803     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4804     FND_MESSAGE.Set_Name('CS', 'CS_GET_SR_EXT_ATTR_FAIL');
4805     FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
4806     FND_MESSAGE.Set_Token('ERROR', SQLERRM);
4807     FND_MSG_PUB.ADD;
4808 
4809 END;
4810 
4811 PROCEDURE Create_Ext_Attr_Audit(
4812         p_sr_ea_new_audit_rec_table    IN   Ext_Attr_Audit_Tbl_Type
4813        ,p_sr_ea_old_audit_rec_table    IN   Ext_Attr_Audit_Tbl_Type
4814        ,p_object_name                  IN   VARCHAR2
4815        ,p_modified_by                  IN   NUMBER := FND_GLOBAL.USER_ID
4816        ,p_modified_on                  IN   DATE := SYSDATE
4817        ,x_return_status                OUT  NOCOPY VARCHAR2
4818        ,x_msg_count                    OUT  NOCOPY NUMBER
4819        ,x_msg_data                     OUT  NOCOPY VARCHAR2
4820 )  IS
4821 
4822 l_is_multi_row VARCHAR2(1);
4823 
4824 Cursor c_sr_get_ext_id(p_incident_id IN NUMBER,
4825                        p_context IN NUMBER,
4826                        p_attr_group_id IN NUMBER) IS
4827 select extension_id from cs_incidents_ext
4828 where incident_id = p_incident_id
4829   and context = p_context
4830   and attr_group_id  = p_attr_group_id;
4831 
4832 
4833 cursor c_get_sr_multi_row_ext_id (p_incident_id IN NUMBER
4834                                  ,p_context IN NUMBER
4835                                  ,p_attr_group_id IN NUMBER) IS
4836 
4837 SELECT extension_id
4838   FROM cs_incidents_ext
4839  WHERE incident_id = p_incident_id
4840    AND context = p_context
4841    AND attr_group_id = p_attr_group_id
4842    AND extension_id NOT IN (SELECT extension_id
4843                               FROM cs_incidents_ext_audit
4844                              WHERE incident_id = p_incident_id
4845                                AND context = p_context
4846                                AND attr_group_id = p_attr_group_id);
4847 
4848 Cursor c_pr_get_ext_id(p_incident_id IN NUMBER,
4849                        p_party_id IN NUMBER,
4850                        p_contact_type IN VARCHAR2,
4851                        p_party_role_code IN VARCHAR2,
4852                        p_context IN VARCHAR2,
4853                        p_attr_group_id IN NUMBER) IS
4854 select extension_id
4855  from  cs_sr_contacts_ext
4856 where incident_id = p_incident_id
4857   and party_id = p_party_id
4858   and contact_type = p_contact_type
4859   and party_role_code = p_party_role_code
4860   and context = p_context
4861   and attr_group_id  = p_attr_group_id;
4862 
4863 
4864 cursor c_get_pr_multi_row_ext_id (p_incident_id IN NUMBER,
4865                                   p_party_id IN NUMBER,
4866                                   p_contact_type IN VARCHAR2,
4867                                   p_party_role_code IN VARCHAR2,
4868                                   p_context IN VARCHAR2,
4869                                   p_attr_group_id IN NUMBER) IS
4870 
4871 select extension_id
4872  from  cs_sr_contacts_ext
4873 where incident_id = p_incident_id
4874   and party_id = p_party_id
4875   and contact_type = p_contact_type
4876   and party_role_code = p_party_role_code
4877   and context = p_context
4878   and attr_group_id  = p_attr_group_id
4879    AND extension_id NOT IN (SELECT extension_id
4880                               FROM cs_sr_contacts_ext_audit
4881                              where incident_id = p_incident_id
4882                                and party_id = p_party_id
4883                                and contact_type = p_contact_type
4884                                and party_role_code = p_party_role_code
4885                                and context = p_context
4886                                and attr_group_id  = p_attr_group_id);
4887 
4888 l_sr_ea_new_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4889 l_sr_ea_old_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4890 
4891 l_pr_ea_new_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4892 l_pr_ea_old_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4893 
4894 
4895 
4896 BEGIN
4897 
4898   IF p_object_name = 'CS_SERVICE_REQUEST' THEN
4899 
4900     /*************New Audit Table Check***********/
4901 
4902     IF p_sr_ea_new_audit_rec_table.COUNT > 0 THEN
4903 
4904       -- pass the incoming record to
4905       l_sr_ea_new_audit_rec_table := p_sr_ea_new_audit_rec_table;
4906 
4907       --check if record had extension_id and
4908       --all the primary key identifiers before calling audit
4909       FOR i IN 1..l_sr_ea_new_audit_rec_table.COUNT LOOP
4910         IF l_sr_ea_new_audit_rec_table(i).extension_id IS NULL OR
4911            l_sr_ea_new_audit_rec_table(i).extension_id < 0 THEN
4912           IF l_sr_ea_new_audit_rec_table(i).pk_column_1 IS NOT NULL AND
4913              l_sr_ea_new_audit_rec_table(i).context IS NOT NULL AND
4914              l_sr_ea_new_audit_rec_table(i).attr_group_id IS NOT NULL THEN
4915 
4916              -- check if attribute group is multi row
4917              l_is_multi_row := IS_ATTR_GROUP_MULTI_ROW(
4918                                  p_attr_group_id   =>     l_sr_ea_new_audit_rec_table(i).attr_group_id
4919                                 ,x_msg_data        =>     x_msg_data
4920                                 ,x_msg_count       =>     x_msg_count
4921                                 ,x_return_status   =>     x_return_status);
4922 
4923              -- If l_is_multi_row = 'Y' then get
4924              IF l_is_multi_row = 'Y' THEN
4925 
4926                 -- only one row should be found as the UI will only send one record at a time
4927                 OPEN c_get_sr_multi_row_ext_id(l_sr_ea_new_audit_rec_table(i).pk_column_1
4928                                                                           ,l_sr_ea_new_audit_rec_table(i).context
4929                                                                           ,l_sr_ea_new_audit_rec_table(i).attr_group_id);
4930                 FETCH c_get_sr_multi_row_ext_id into l_sr_ea_new_audit_rec_table(i).extension_id;
4931                 IF c_get_sr_multi_row_ext_id%NOTFOUND THEN
4932                   RETURN;
4933                 END IF;
4934                 CLOSE c_get_sr_multi_row_ext_id;
4935 
4936              ELSE
4937 
4938                -- l_is_multi_row = 'N'
4939                -- populate the all the records in the new record
4940                 OPEN c_sr_get_ext_id(l_sr_ea_new_audit_rec_table(i).pk_column_1
4941                                     ,l_sr_ea_new_audit_rec_table(i).context
4942                                     ,l_sr_ea_new_audit_rec_table(i).attr_group_id) ;
4943                 FETCH c_sr_get_ext_id INTO l_sr_ea_new_audit_rec_table(i).extension_id ;
4944                 IF c_sr_get_ext_id%NOTFOUND THEN
4945                   RETURN;
4946                 END IF;
4947                 CLOSE c_sr_get_ext_id;
4948 
4949 
4950              END IF; --multi_row check
4951 
4952           ELSE
4953 
4954             --composite key not passed
4955             --raise error
4956             --MAYA
4957             null;
4958 
4959           END IF; -- If composite key is null;
4960         END IF; -- p_sr_ea_new_audit_rec_table(i).extension_id IS NULL
4961      END LOOP;
4962    END IF; -- p_sr_ea_new_audit_rec_table.COUNT > 0
4963 
4964    IF p_sr_ea_old_audit_rec_table.COUNT > 0 THEN
4965 
4966       -- pass the incoming record to
4967       l_sr_ea_old_audit_rec_table := p_sr_ea_old_audit_rec_table;
4968 
4969    ELSE
4970       INIT_AUDIT_REC(p_count => p_sr_ea_new_audit_rec_table.COUNT
4971                     ,p_audit_rec => l_sr_ea_old_audit_rec_table);
4972    END IF; -- p_sr_ea_old_audit_rec_table.COUNT > 0
4973 
4974    -- call the audit API
4975    insert_sr_row
4976            ( P_NEW_ext_attrs         => l_sr_ea_new_audit_rec_table
4977            , P_OLD_ext_attrs         => l_sr_ea_old_audit_rec_table
4978            , P_MODIFIED_BY           => p_modified_by
4979            , P_MODIFIED_ON           => p_modified_on
4980            , X_RETURN_STATUS         => X_RETURN_STATUS
4981            , X_MSG_COUNT             => X_MSG_COUNT
4982            , X_MSG_DATA              => X_MSG_DATA
4983             ) ;
4984 
4985   ELSIF p_object_name = 'CS_PARTY_ROLE' THEN
4986     IF p_sr_ea_new_audit_rec_table.COUNT > 0 THEN
4987       -- pass the incoming record to
4988       l_pr_ea_new_audit_rec_table := p_sr_ea_new_audit_rec_table;
4989 
4990       --DBMS_OUTPUT.PUT_LINE('In party role create audit');
4991 
4992       --check if record had extension_id and
4993       --all the primary key identifiers before calling audit
4994       FOR i IN 1..l_pr_ea_new_audit_rec_table.COUNT LOOP
4995          IF l_pr_ea_new_audit_rec_table(i).extension_id IS NULL OR
4996             l_pr_ea_new_audit_rec_table(i).extension_id < 0 THEN
4997           IF l_pr_ea_new_audit_rec_table(i).pk_column_1 IS NOT NULL AND
4998              l_pr_ea_new_audit_rec_table(i).pk_column_2 IS NOT NULL AND
4999              l_pr_ea_new_audit_rec_table(i).pk_column_3 IS NOT NULL AND
5000              l_pr_ea_new_audit_rec_table(i).pk_column_4 IS NOT NULL AND
5001              l_pr_ea_new_audit_rec_table(i).context IS NOT NULL AND
5002              l_pr_ea_new_audit_rec_table(i).attr_group_id IS NOT NULL THEN
5003 
5004              -- check if attribute group is multi row
5005              l_is_multi_row := IS_ATTR_GROUP_MULTI_ROW(
5006                                  p_attr_group_id   =>     l_pr_ea_new_audit_rec_table(i).attr_group_id
5007                                 ,x_msg_data        =>     x_msg_data
5008                                 ,x_msg_count       =>     x_msg_count
5009                                 ,x_return_status   =>     x_return_status);
5010 
5011              -- If l_is_multi_row = 'Y' then get
5012              IF l_is_multi_row = 'Y' THEN
5013 
5014                 -- only one row should be found as the UI will only send one record at a time
5015                 OPEN c_get_pr_multi_row_ext_id(to_number(l_pr_ea_new_audit_rec_table(i).pk_column_1)
5016                                               ,to_number(l_pr_ea_new_audit_rec_table(i).pk_column_2)
5017                                               ,l_pr_ea_new_audit_rec_table(i).pk_column_3
5018                                               ,l_pr_ea_new_audit_rec_table(i).pk_column_4
5019                                               ,l_pr_ea_new_audit_rec_table(i).context
5020                                               ,l_pr_ea_new_audit_rec_table(i).attr_group_id);
5021 
5022                 FETCH c_get_pr_multi_row_ext_id into l_pr_ea_new_audit_rec_table(i).extension_id;
5023                 CLOSE c_get_pr_multi_row_ext_id;
5024 
5025              ELSE
5026 
5027                -- l_is_multi_row = 'N'
5028                -- populate the all the records in the new record
5029                 OPEN c_pr_get_ext_id(to_number(l_pr_ea_new_audit_rec_table(i).pk_column_1)
5030                                     ,to_number(l_pr_ea_new_audit_rec_table(i).pk_column_2)
5031                                     ,l_pr_ea_new_audit_rec_table(i).pk_column_3
5032                                     ,l_pr_ea_new_audit_rec_table(i).pk_column_4
5033                                     ,l_pr_ea_new_audit_rec_table(i).context
5034                                     ,l_pr_ea_new_audit_rec_table(i).attr_group_id) ;
5035                 FETCH c_pr_get_ext_id INTO l_pr_ea_new_audit_rec_table(i).extension_id ;
5036                 CLOSE c_pr_get_ext_id;
5037 
5038 
5039              END IF; --multi_row check
5040 
5041           ELSE
5042 
5043             --composite key not passed
5044             --raise error
5045             --MAYA
5046             null;
5047 
5048           END IF; -- If composite key is null;
5049         END IF; -- p_pr_ea_new_audit_rec_table(i).extension_id IS NULL
5050 
5051       END LOOP;
5052     END IF; -- p_sr_ea_new_audit_rec_table.COUNT > 0
5053 
5054     --DBMS_OUTPUT.PUT_LINE('Done checking extension id');
5055 
5056     IF p_sr_ea_old_audit_rec_table.COUNT > 0 THEN
5057       -- pass the incoming record to
5058       --DBMS_OUTPUT.PUT_LINE('p_sr_ea_old_audit_rec_table.COUNT'||p_sr_ea_old_audit_rec_table.COUNT);
5059 
5060       l_pr_ea_old_audit_rec_table := p_sr_ea_old_audit_rec_table;
5061 
5062     ELSE
5063       -- call the INIT AUDIT REC
5064       INIT_AUDIT_REC(p_count => p_sr_ea_new_audit_rec_table.COUNT
5065                     ,p_audit_rec => l_pr_ea_old_audit_rec_table);
5066 
5067     END IF; -- p_sr_ea_old_audit_rec_table.COUNT > 0
5068 
5069     --DBMS_OUTPUT.PUT_LINE('Done checking old rec');
5070 
5071     --DBMS_OUTPUT.PUT_LINE('Calling Insert PR Row');
5072     --DBMS_OUTPUT.PUT_LINE('l_pr_ea_new_audit_rec_table.COUNT'||l_pr_ea_new_audit_rec_table.COUNT);
5073     --DBMS_OUTPUT.PUT_LINE('l_pr_ea_old_audit_rec_table.COUNT'||l_pr_ea_old_audit_rec_table.COUNT);
5074 
5075     -- call the audit API
5076     insert_pr_row
5077            ( P_NEW_ext_attrs         => l_pr_ea_new_audit_rec_table
5078            , P_OLD_ext_attrs         => l_pr_ea_old_audit_rec_table
5079            , P_MODIFIED_BY           => p_modified_by
5080            , P_MODIFIED_ON           => p_modified_on
5081            , X_RETURN_STATUS         => X_RETURN_STATUS
5082            , X_MSG_COUNT             => X_MSG_COUNT
5083            , X_MSG_DATA              => X_MSG_DATA
5084             );
5085 
5086   END IF; --object is 'CS_SERVICE_REQUEST' or 'CS_PARTY_ROLE' --MAY NOT BE NEEDED
5087 
5088 
5089 END;
5090 
5091 Procedure Merge_Ext_Attrs_Details
5092         (p_ext_attr_grp_tbl          IN           CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
5093         ,p_ext_attr_tbl              IN           CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
5094         ,x_ext_grp_attr_tbl          OUT  NOCOPY  EXT_GRP_ATTR_TBL_TYPE
5095         ,x_return_status             OUT  NOCOPY  VARCHAR2
5096         ,x_msg_count                 OUT  NOCOPY  NUMBER
5097         ,x_msg_data                  OUT  NOCOPY  VARCHAR2) IS
5098 
5099 q NUMBER := 1;
5100 
5101 BEGIN
5102 
5103 -- Loop throught the group table to get the group details..
5104 
5105    FOR i IN 1..p_ext_attr_grp_tbl.COUNT
5106        LOOP
5107            -- Loop through the attr table to get all the attributes for the parent group
5108            -- using the row identifier.
5109            FOR j IN 1..p_ext_attr_tbl.COUNT
5110                LOOP
5111                   -- Assign the values to the merged table structure
5112 
5113                   IF p_ext_attr_grp_tbl(i).ROW_IDENTIFIER = p_ext_attr_tbl(j).ROW_IDENTIFIER THEN
5114                      x_ext_grp_attr_tbl(q).ROW_IDENTIFIER       := p_ext_attr_grp_tbl(i).ROW_IDENTIFIER;
5115                      x_ext_grp_attr_tbl(q).ATTR_GROUP_ID        := p_ext_attr_grp_tbl(i).ATTR_GROUP_ID;
5116                      x_ext_grp_attr_tbl(q).ATTR_GROUP_TYPE      := p_ext_attr_grp_tbl(i).ATTR_GROUP_TYPE;
5117                      x_ext_grp_attr_tbl(q).ATTR_GROUP_NAME      := p_ext_attr_grp_tbl(i).ATTR_GROUP_NAME;
5118                      x_ext_grp_attr_tbl(q).ATTR_GROUP_DISP_NAME := p_ext_attr_grp_tbl(i).ATTR_GROUP_DISP_NAME;
5119                      x_ext_grp_attr_tbl(q).COLUMN_NAME          := p_ext_attr_tbl(j).COLUMN_NAME;
5120                      x_ext_grp_attr_tbl(q).ATTR_NAME            := p_ext_attr_tbl(j).ATTR_NAME;
5121                      x_ext_grp_attr_tbl(q).ATTR_VALUE_STR       := p_ext_attr_tbl(j).ATTR_VALUE_STR;
5122                      x_ext_grp_attr_tbl(q).ATTR_VALUE_NUM       := p_ext_attr_tbl(j).ATTR_VALUE_NUM;
5123                      x_ext_grp_attr_tbl(q).ATTR_VALUE_DATE      := p_ext_attr_tbl(j).ATTR_VALUE_DATE;
5124                      x_ext_grp_attr_tbl(q).ATTR_VALUE_DISPLAY   := p_ext_attr_tbl(j).ATTR_VALUE_DISPLAY;
5125 
5126                      q := q + 1;
5127                   END IF ;
5128                END LOOP;
5129        END LOOP;
5130 EXCEPTION
5131      WHEN OTHERS THEN
5132           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5133           FND_MSG_PUB.Count_And_Get
5134                 (p_count => x_msg_count,
5135                  p_data  => x_msg_data);
5136 
5137 END Merge_Ext_Attrs_Details;
5138 
5139 
5140 
5141 --------------------------------------------------------------------------------
5142 -- Procedure Name : insert_sr_row
5143 -- Parameters     :
5144 -- IN             : p_new_ext_attrs  Table New ext attr values
5145 --                : p_old_ext_attrs  Table old Ext attr values
5146 --                : p_modified_by    Identity of user creationg/modifying
5147 --                                   Ext attrs
5148 --                : p_modified_on    Date of Ext Attr creation/update
5149 -- OUT            : x_return_status  Status of procedure return
5150 --                : x_msg_count      Number of error messages
5151 --                : x_msg_data       Error description
5152 --
5153 --
5154 -- Description    : Procedure to create audit of SR extensible attributes.
5155 --
5156 -- Modification History:
5157 -- Date     Name     Desc
5158 -- -------- -------- -----------------------------------------------------------
5159 -- 05/05/05 pkesani  Created
5160 -- 08/08/05 smisra   Modified insert statement and used pk values for
5161 --                   incident id
5162 --------------------------------------------------------------------------------
5163 PROCEDURE insert_sr_row
5164 ( P_NEW_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5165 , P_OLD_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5166 , P_MODIFIED_BY           IN NUMBER
5167 , P_MODIFIED_ON           IN DATE
5168 , X_RETURN_STATUS        OUT NOCOPY VARCHAR2
5169 , X_MSG_COUNT            OUT NOCOPY NUMBER
5170 , X_MSG_DATA             OUT NOCOPY VARCHAR2
5171 )  IS
5172 l_table_index            NUMBER;
5173 l_ext_audit_id           NUMBER;
5174 l_last_updated_by         NUMBER;
5175 l_last_update_date       DATE;
5176 l_last_update_login      NUMBER;
5177 l_modified_by            NUMBER;
5178 l_modified_on            DATE;
5179 l_msg_count              NUMBER;
5180 l_msg_data               VARCHAR2(2000);
5181 l_api_name      CONSTANT VARCHAR2(30) := 'insert_sr_row';
5182 l_api_name_full CONSTANT VARCHAR2(61) := 'CS_SR_EXTATTRIBUTES_PVT'||'.'||l_api_name;
5183 BEGIN
5184   x_return_status     := FND_API.G_RET_STS_SUCCESS;
5185   l_last_updated_by   := FND_GLOBAL.USER_ID;
5186   l_last_update_date  := SYSDATE;
5187   l_last_update_login := FND_GLOBAL.LOGIN_ID;
5188 
5189   IF  P_MODIFIED_BY IS NULL THEN
5190     l_modified_by := FND_GLOBAL.USER_ID;
5191   ELSE
5192     l_modified_by := P_MODIFIED_BY;
5193   END IF;
5194 
5195   IF  P_MODIFIED_ON IS NULL THEN
5196     l_modified_on := SYSDATE;
5197   ELSE
5198     l_modified_on := P_MODIFIED_ON;
5199   END IF;
5200 
5201   --DBMS_OUTPUT.PUT_LINE('Before insert');
5202   IF P_NEW_ext_attrs.count = 0 OR P_OLD_ext_attrs.count = 0 THEN
5203     RETURN;
5204   ELSE
5205     FOR l_table_index in P_NEW_ext_attrs.FIRST..P_NEW_ext_attrs.LAST LOOP
5206 
5207 IF P_NEW_ext_attrs.exists(l_table_index) THEN
5208 
5209       SELECT CS_INCIDENTS_EXT_AUDIT_S.NEXTVAL INTO l_ext_audit_id FROM dual;
5210   --DBMS_OUTPUT.PUT_LINE('inside for loop:' || to_char(l_ext_audit_id));
5211 
5212 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr1 '||P_new_ext_attrs(l_table_index).C_ext_attr1);
5213 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr2 '||P_new_ext_attrs(l_table_index).C_ext_attr2);
5214 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr3 '||P_new_ext_attrs(l_table_index).C_ext_attr3);
5215 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr4 '||P_new_ext_attrs(l_table_index).C_ext_attr4);
5216 
5217       INSERT INTO CS_INCIDENTS_EXT_AUDIT
5218       ( AUDIT_EXTENSION_ID
5219       , EXTENSION_ID
5220       , INCIDENT_ID
5221       , CONTEXT
5222       , ATTR_GROUP_ID
5223       , CREATION_DATE
5224       , CREATED_BY
5225       , LAST_UPDATE_DATE
5226       , LAST_UPDATED_BY
5227       , LAST_UPDATE_LOGIN
5228       , C_EXT_ATTR1
5229       , C_EXT_ATTR2
5230       , C_EXT_ATTR3
5231       , C_EXT_ATTR4
5232       , C_EXT_ATTR5
5233       , C_EXT_ATTR6
5234       , C_EXT_ATTR7
5235       , C_EXT_ATTR8
5236       , C_EXT_ATTR9
5237       , C_EXT_ATTR10
5238       , C_EXT_ATTR11
5239       , C_EXT_ATTR12
5240       , C_EXT_ATTR13
5241       , C_EXT_ATTR14
5242       , C_EXT_ATTR15
5243       , C_EXT_ATTR16
5244       , C_EXT_ATTR17
5245       , C_EXT_ATTR18
5246       , C_EXT_ATTR19
5247       , C_EXT_ATTR20
5248       , C_EXT_ATTR21
5249       , C_EXT_ATTR22
5250       , C_EXT_ATTR23
5251       , C_EXT_ATTR24
5252       , C_EXT_ATTR25
5253       , C_EXT_ATTR26
5254       , C_EXT_ATTR27
5255       , C_EXT_ATTR28
5256       , C_EXT_ATTR29
5257       , C_EXT_ATTR30
5258       , C_EXT_ATTR31
5259       , C_EXT_ATTR32
5260       , C_EXT_ATTR33
5261       , C_EXT_ATTR34
5262       , C_EXT_ATTR35
5263       , C_EXT_ATTR36
5264       , C_EXT_ATTR37
5265       , C_EXT_ATTR38
5266       , C_EXT_ATTR39
5267       , C_EXT_ATTR40
5268       , C_EXT_ATTR41
5269       , C_EXT_ATTR42
5270       , C_EXT_ATTR43
5271       , C_EXT_ATTR44
5272       , C_EXT_ATTR45
5273       , C_EXT_ATTR46
5274       , C_EXT_ATTR47
5275       , C_EXT_ATTR48
5276       , C_EXT_ATTR49
5277       , C_EXT_ATTR50
5278       , OLD_C_EXT_ATTR1
5279       , OLD_C_EXT_ATTR2
5280       , OLD_C_EXT_ATTR3
5281       , OLD_C_EXT_ATTR4
5282       , OLD_C_EXT_ATTR5
5283       , OLD_C_EXT_ATTR6
5284       , OLD_C_EXT_ATTR7
5285       , OLD_C_EXT_ATTR8
5286       , OLD_C_EXT_ATTR9
5287       , OLD_C_EXT_ATTR10
5288       , OLD_C_EXT_ATTR11
5289       , OLD_C_EXT_ATTR12
5290       , OLD_C_EXT_ATTR13
5291       , OLD_C_EXT_ATTR14
5292       , OLD_C_EXT_ATTR15
5293       , OLD_C_EXT_ATTR16
5294       , OLD_C_EXT_ATTR17
5295       , OLD_C_EXT_ATTR18
5296       , OLD_C_EXT_ATTR19
5297       , OLD_C_EXT_ATTR20
5298       , OLD_C_EXT_ATTR21
5299       , OLD_C_EXT_ATTR22
5300       , OLD_C_EXT_ATTR23
5301       , OLD_C_EXT_ATTR24
5302       , OLD_C_EXT_ATTR25
5303       , OLD_C_EXT_ATTR26
5304       , OLD_C_EXT_ATTR27
5305       , OLD_C_EXT_ATTR28
5306       , OLD_C_EXT_ATTR29
5307       , OLD_C_EXT_ATTR30
5308       , OLD_C_EXT_ATTR31
5309       , OLD_C_EXT_ATTR32
5310       , OLD_C_EXT_ATTR33
5311       , OLD_C_EXT_ATTR34
5312       , OLD_C_EXT_ATTR35
5313       , OLD_C_EXT_ATTR36
5314       , OLD_C_EXT_ATTR37
5315       , OLD_C_EXT_ATTR38
5316       , OLD_C_EXT_ATTR39
5317       , OLD_C_EXT_ATTR40
5318       , OLD_C_EXT_ATTR41
5319       , OLD_C_EXT_ATTR42
5320       , OLD_C_EXT_ATTR43
5321       , OLD_C_EXT_ATTR44
5322       , OLD_C_EXT_ATTR45
5323       , OLD_C_EXT_ATTR46
5324       , OLD_C_EXT_ATTR47
5325       , OLD_C_EXT_ATTR48
5326       , OLD_C_EXT_ATTR49
5327       , OLD_C_EXT_ATTR50
5328       , N_EXT_ATTR1
5329       , N_EXT_ATTR2
5330       , N_EXT_ATTR3
5331       , N_EXT_ATTR4
5332       , N_EXT_ATTR5
5333       , N_EXT_ATTR6
5334       , N_EXT_ATTR7
5335       , N_EXT_ATTR8
5336       , N_EXT_ATTR9
5337       , N_EXT_ATTR10
5338       , N_EXT_ATTR11
5339       , N_EXT_ATTR12
5340       , N_EXT_ATTR13
5341       , N_EXT_ATTR14
5342       , N_EXT_ATTR15
5343       , N_EXT_ATTR16
5344       , N_EXT_ATTR17
5345       , N_EXT_ATTR18
5346       , N_EXT_ATTR19
5347       , N_EXT_ATTR20
5348       , N_EXT_ATTR21
5349       , N_EXT_ATTR22
5350       , N_EXT_ATTR23
5351       , N_EXT_ATTR24
5352       , N_EXT_ATTR25
5353       , OLD_N_EXT_ATTR1
5354       , OLD_N_EXT_ATTR2
5355       , OLD_N_EXT_ATTR3
5356       , OLD_N_EXT_ATTR4
5357       , OLD_N_EXT_ATTR5
5358       , OLD_N_EXT_ATTR6
5359       , OLD_N_EXT_ATTR7
5360       , OLD_N_EXT_ATTR8
5361       , OLD_N_EXT_ATTR9
5362       , OLD_N_EXT_ATTR10
5363       , OLD_N_EXT_ATTR11
5364       , OLD_N_EXT_ATTR12
5365       , OLD_N_EXT_ATTR13
5366       , OLD_N_EXT_ATTR14
5367       , OLD_N_EXT_ATTR15
5368       , OLD_N_EXT_ATTR16
5369       , OLD_N_EXT_ATTR17
5370       , OLD_N_EXT_ATTR18
5371       , OLD_N_EXT_ATTR19
5372       , OLD_N_EXT_ATTR20
5373       , OLD_N_EXT_ATTR21
5374       , OLD_N_EXT_ATTR22
5375       , OLD_N_EXT_ATTR23
5376       , OLD_N_EXT_ATTR24
5377       , OLD_N_EXT_ATTR25
5378       , D_EXT_ATTR1
5379       , D_EXT_ATTR2
5380       , D_EXT_ATTR3
5381       , D_EXT_ATTR4
5382       , D_EXT_ATTR5
5383       , D_EXT_ATTR6
5384       , D_EXT_ATTR7
5385       , D_EXT_ATTR8
5386       , D_EXT_ATTR9
5387       , D_EXT_ATTR10
5388       , D_EXT_ATTR11
5389       , D_EXT_ATTR12
5390       , D_EXT_ATTR13
5391       , D_EXT_ATTR14
5392       , D_EXT_ATTR15
5393       , D_EXT_ATTR16
5394       , D_EXT_ATTR17
5395       , D_EXT_ATTR18
5396       , D_EXT_ATTR19
5397       , D_EXT_ATTR20
5398       , D_EXT_ATTR21
5399       , D_EXT_ATTR22
5400       , D_EXT_ATTR23
5401       , D_EXT_ATTR24
5402       , D_EXT_ATTR25
5403       , OLD_D_EXT_ATTR1
5404       , OLD_D_EXT_ATTR2
5405       , OLD_D_EXT_ATTR3
5406       , OLD_D_EXT_ATTR4
5407       , OLD_D_EXT_ATTR5
5408       , OLD_D_EXT_ATTR6
5409       , OLD_D_EXT_ATTR7
5410       , OLD_D_EXT_ATTR8
5411       , OLD_D_EXT_ATTR9
5412       , OLD_D_EXT_ATTR10
5413       , OLD_D_EXT_ATTR11
5414       , OLD_D_EXT_ATTR12
5415       , OLD_D_EXT_ATTR13
5416       , OLD_D_EXT_ATTR14
5417       , OLD_D_EXT_ATTR15
5418       , OLD_D_EXT_ATTR16
5419       , OLD_D_EXT_ATTR17
5420       , OLD_D_EXT_ATTR18
5421       , OLD_D_EXT_ATTR19
5422       , OLD_D_EXT_ATTR20
5423       , OLD_D_EXT_ATTR21
5424       , OLD_D_EXT_ATTR22
5425       , OLD_D_EXT_ATTR23
5426       , OLD_D_EXT_ATTR24
5427       , OLD_D_EXT_ATTR25
5428       , UOM_EXT_ATTR1
5429       , UOM_EXT_ATTR2
5430       , UOM_EXT_ATTR3
5431       , UOM_EXT_ATTR4
5432       , UOM_EXT_ATTR5
5433       , UOM_EXT_ATTR6
5434       , UOM_EXT_ATTR7
5435       , UOM_EXT_ATTR8
5436       , UOM_EXT_ATTR9
5437       , UOM_EXT_ATTR10
5438       , UOM_EXT_ATTR11
5439       , UOM_EXT_ATTR12
5440       , UOM_EXT_ATTR13
5441       , UOM_EXT_ATTR14
5442       , UOM_EXT_ATTR15
5443       , UOM_EXT_ATTR16
5444       , UOM_EXT_ATTR17
5445       , UOM_EXT_ATTR18
5446       , UOM_EXT_ATTR19
5447       , UOM_EXT_ATTR20
5448       , UOM_EXT_ATTR21
5449       , UOM_EXT_ATTR22
5450       , UOM_EXT_ATTR23
5451       , UOM_EXT_ATTR24
5452       , UOM_EXT_ATTR25
5453       , OLD_UOM_EXT_ATTR1
5454       , OLD_UOM_EXT_ATTR2
5455       , OLD_UOM_EXT_ATTR3
5456       , OLD_UOM_EXT_ATTR4
5457       , OLD_UOM_EXT_ATTR5
5458       , OLD_UOM_EXT_ATTR6
5459       , OLD_UOM_EXT_ATTR7
5460       , OLD_UOM_EXT_ATTR8
5461       , OLD_UOM_EXT_ATTR9
5462       , OLD_UOM_EXT_ATTR10
5463       , OLD_UOM_EXT_ATTR11
5464       , OLD_UOM_EXT_ATTR12
5465       , OLD_UOM_EXT_ATTR13
5466       , OLD_UOM_EXT_ATTR14
5467       , OLD_UOM_EXT_ATTR15
5468       , OLD_UOM_EXT_ATTR16
5469       , OLD_UOM_EXT_ATTR17
5470       , OLD_UOM_EXT_ATTR18
5471       , OLD_UOM_EXT_ATTR19
5472       , OLD_UOM_EXT_ATTR20
5473       , OLD_UOM_EXT_ATTR21
5474       , OLD_UOM_EXT_ATTR22
5475       , OLD_UOM_EXT_ATTR23
5476       , OLD_UOM_EXT_ATTR24
5477       , OLD_UOM_EXT_ATTR25
5478       , EXT_ATTR_MODIFIED_ON
5479       , EXT_ATTR_MODIFIED_BY
5480       )
5481       VALUES
5482       ( l_ext_audit_id
5483       , p_new_ext_attrs(l_table_index).extension_ID
5484       , to_number(P_new_ext_attrs(l_table_index).pk_column_1)
5485       , P_new_ext_attrs(l_table_index).context
5486       , P_new_ext_attrs(l_table_index).attr_group_id
5487       , l_last_update_date
5488       , l_last_updated_by
5489       , l_last_update_date
5490       , l_last_updated_by
5491       , l_last_update_login
5492       , P_new_ext_attrs(l_table_index).C_ext_attr1
5493       , P_new_ext_attrs(l_table_index).C_ext_attr2
5494       , P_new_ext_attrs(l_table_index).C_ext_attr3
5495       , P_new_ext_attrs(l_table_index).C_ext_attr4
5496       , P_new_ext_attrs(l_table_index).C_ext_attr5
5497       , P_new_ext_attrs(l_table_index).C_ext_attr6
5498       , P_new_ext_attrs(l_table_index).C_ext_attr7
5499       , P_new_ext_attrs(l_table_index).C_ext_attr8
5500       , P_new_ext_attrs(l_table_index).C_ext_attr9
5501       , P_new_ext_attrs(l_table_index).C_ext_attr10
5502       , P_new_ext_attrs(l_table_index).C_ext_attr11
5503       , P_new_ext_attrs(l_table_index).C_ext_attr12
5504       , P_new_ext_attrs(l_table_index).C_ext_attr13
5505       , P_new_ext_attrs(l_table_index).C_ext_attr14
5506       , P_new_ext_attrs(l_table_index).C_ext_attr15
5507       , P_new_ext_attrs(l_table_index).C_ext_attr16
5508       , P_new_ext_attrs(l_table_index).C_ext_attr17
5509       , P_new_ext_attrs(l_table_index).C_ext_attr18
5510       , P_new_ext_attrs(l_table_index).C_ext_attr19
5511       , P_new_ext_attrs(l_table_index).C_ext_attr20
5512       , P_new_ext_attrs(l_table_index).C_ext_attr21
5513       , P_new_ext_attrs(l_table_index).C_ext_attr22
5514       , P_new_ext_attrs(l_table_index).C_ext_attr23
5515       , P_new_ext_attrs(l_table_index).C_ext_attr24
5516       , P_new_ext_attrs(l_table_index).C_ext_attr25
5517       , P_new_ext_attrs(l_table_index).C_ext_attr26
5518       , P_new_ext_attrs(l_table_index).C_ext_attr27
5519       , P_new_ext_attrs(l_table_index).C_ext_attr28
5520       , P_new_ext_attrs(l_table_index).C_ext_attr29
5521       , P_new_ext_attrs(l_table_index).C_ext_attr30
5522       , P_new_ext_attrs(l_table_index).C_ext_attr31
5523       , P_new_ext_attrs(l_table_index).C_ext_attr32
5524       , P_new_ext_attrs(l_table_index).C_ext_attr33
5525       , P_new_ext_attrs(l_table_index).C_ext_attr34
5526       , P_new_ext_attrs(l_table_index).C_ext_attr35
5527       , P_new_ext_attrs(l_table_index).C_ext_attr36
5528       , P_new_ext_attrs(l_table_index).C_ext_attr37
5529       , P_new_ext_attrs(l_table_index).C_ext_attr38
5530       , P_new_ext_attrs(l_table_index).C_ext_attr39
5531       , P_new_ext_attrs(l_table_index).C_ext_attr40
5532       , P_new_ext_attrs(l_table_index).C_ext_attr41
5533       , P_new_ext_attrs(l_table_index).C_ext_attr42
5534       , P_new_ext_attrs(l_table_index).C_ext_attr43
5535       , P_new_ext_attrs(l_table_index).C_ext_attr44
5536       , P_new_ext_attrs(l_table_index).C_ext_attr45
5537       , P_new_ext_attrs(l_table_index).C_ext_attr46
5538       , P_new_ext_attrs(l_table_index).C_ext_attr47
5539       , P_new_ext_attrs(l_table_index).C_ext_attr48
5540       , P_new_ext_attrs(l_table_index).C_ext_attr49
5541       , P_new_ext_attrs(l_table_index).C_ext_attr50
5542       , P_old_ext_attrs(l_table_index).C_ext_attr1
5543       , P_old_ext_attrs(l_table_index).C_ext_attr2
5544       , P_old_ext_attrs(l_table_index).C_ext_attr3
5545       , P_old_ext_attrs(l_table_index).C_ext_attr4
5546       , P_old_ext_attrs(l_table_index).C_ext_attr5
5547       , P_old_ext_attrs(l_table_index).C_ext_attr6
5548       , P_old_ext_attrs(l_table_index).C_ext_attr7
5549       , P_old_ext_attrs(l_table_index).C_ext_attr8
5550       , P_old_ext_attrs(l_table_index).C_ext_attr9
5551       , P_old_ext_attrs(l_table_index).C_ext_attr10
5552       , P_old_ext_attrs(l_table_index).C_ext_attr11
5553       , P_old_ext_attrs(l_table_index).C_ext_attr12
5554       , P_old_ext_attrs(l_table_index).C_ext_attr13
5555       , P_old_ext_attrs(l_table_index).C_ext_attr14
5556       , P_old_ext_attrs(l_table_index).C_ext_attr15
5557       , P_old_ext_attrs(l_table_index).C_ext_attr16
5558       , P_old_ext_attrs(l_table_index).C_ext_attr17
5559       , P_old_ext_attrs(l_table_index).C_ext_attr18
5560       , P_old_ext_attrs(l_table_index).C_ext_attr19
5561       , P_old_ext_attrs(l_table_index).C_ext_attr20
5562       , P_old_ext_attrs(l_table_index).C_ext_attr21
5563       , P_old_ext_attrs(l_table_index).C_ext_attr22
5564       , P_old_ext_attrs(l_table_index).C_ext_attr23
5565       , P_old_ext_attrs(l_table_index).C_ext_attr24
5566       , P_old_ext_attrs(l_table_index).C_ext_attr25
5567       , P_old_ext_attrs(l_table_index).C_ext_attr26
5568       , P_old_ext_attrs(l_table_index).C_ext_attr27
5569       , P_old_ext_attrs(l_table_index).C_ext_attr28
5570       , P_old_ext_attrs(l_table_index).C_ext_attr29
5571       , P_old_ext_attrs(l_table_index).C_ext_attr30
5572       , P_old_ext_attrs(l_table_index).C_ext_attr31
5573       , P_old_ext_attrs(l_table_index).C_ext_attr32
5574       , P_old_ext_attrs(l_table_index).C_ext_attr33
5575       , P_old_ext_attrs(l_table_index).C_ext_attr34
5576       , P_old_ext_attrs(l_table_index).C_ext_attr35
5577       , P_old_ext_attrs(l_table_index).C_ext_attr36
5578       , P_old_ext_attrs(l_table_index).C_ext_attr37
5579       , P_old_ext_attrs(l_table_index).C_ext_attr38
5580       , P_old_ext_attrs(l_table_index).C_ext_attr39
5581       , P_old_ext_attrs(l_table_index).C_ext_attr40
5582       , P_old_ext_attrs(l_table_index).C_ext_attr41
5583       , P_old_ext_attrs(l_table_index).C_ext_attr42
5584       , P_old_ext_attrs(l_table_index).C_ext_attr43
5585       , P_old_ext_attrs(l_table_index).C_ext_attr44
5586       , P_old_ext_attrs(l_table_index).C_ext_attr45
5587       , P_old_ext_attrs(l_table_index).C_ext_attr46
5588       , P_old_ext_attrs(l_table_index).C_ext_attr47
5589       , P_old_ext_attrs(l_table_index).C_ext_attr48
5590       , P_old_ext_attrs(l_table_index).C_ext_attr49
5591       , P_old_ext_attrs(l_table_index).C_ext_attr50
5592       , P_new_ext_attrs(l_table_index).N_ext_attr1
5593       , P_new_ext_attrs(l_table_index).N_ext_attr2
5594       , P_new_ext_attrs(l_table_index).N_ext_attr3
5595       , P_new_ext_attrs(l_table_index).N_ext_attr4
5596       , P_new_ext_attrs(l_table_index).N_ext_attr5
5597       , P_new_ext_attrs(l_table_index).N_ext_attr6
5598       , P_new_ext_attrs(l_table_index).N_ext_attr7
5599       , P_new_ext_attrs(l_table_index).N_ext_attr8
5600       , P_new_ext_attrs(l_table_index).N_ext_attr9
5601       , P_new_ext_attrs(l_table_index).N_ext_attr10
5602       , P_new_ext_attrs(l_table_index).N_ext_attr11
5603       , P_new_ext_attrs(l_table_index).N_ext_attr12
5604       , P_new_ext_attrs(l_table_index).N_ext_attr13
5605       , P_new_ext_attrs(l_table_index).N_ext_attr14
5606       , P_new_ext_attrs(l_table_index).N_ext_attr15
5607       , P_new_ext_attrs(l_table_index).N_ext_attr16
5608       , P_new_ext_attrs(l_table_index).N_ext_attr17
5609       , P_new_ext_attrs(l_table_index).N_ext_attr18
5610       , P_new_ext_attrs(l_table_index).N_ext_attr19
5611       , P_new_ext_attrs(l_table_index).N_ext_attr20
5612       , P_new_ext_attrs(l_table_index).N_ext_attr21
5613       , P_new_ext_attrs(l_table_index).N_ext_attr22
5614       , P_new_ext_attrs(l_table_index).N_ext_attr23
5615       , P_new_ext_attrs(l_table_index).N_ext_attr24
5616       , P_new_ext_attrs(l_table_index).N_ext_attr25
5617       , P_old_ext_attrs(l_table_index).N_ext_attr1
5618       , P_old_ext_attrs(l_table_index).N_ext_attr2
5619       , P_old_ext_attrs(l_table_index).N_ext_attr3
5620       , P_old_ext_attrs(l_table_index).N_ext_attr4
5621       , P_old_ext_attrs(l_table_index).N_ext_attr5
5622       , P_old_ext_attrs(l_table_index).N_ext_attr6
5623       , P_old_ext_attrs(l_table_index).N_ext_attr7
5624       , P_old_ext_attrs(l_table_index).N_ext_attr8
5625       , P_old_ext_attrs(l_table_index).N_ext_attr9
5626       , P_old_ext_attrs(l_table_index).N_ext_attr10
5627       , P_old_ext_attrs(l_table_index).N_ext_attr11
5628       , P_old_ext_attrs(l_table_index).N_ext_attr12
5629       , P_old_ext_attrs(l_table_index).N_ext_attr13
5630       , P_old_ext_attrs(l_table_index).N_ext_attr14
5631       , P_old_ext_attrs(l_table_index).N_ext_attr15
5632       , P_old_ext_attrs(l_table_index).N_ext_attr16
5633       , P_old_ext_attrs(l_table_index).N_ext_attr17
5634       , P_old_ext_attrs(l_table_index).N_ext_attr18
5635       , P_old_ext_attrs(l_table_index).N_ext_attr19
5636       , P_old_ext_attrs(l_table_index).N_ext_attr20
5637       , P_old_ext_attrs(l_table_index).N_ext_attr21
5638       , P_old_ext_attrs(l_table_index).N_ext_attr22
5639       , P_old_ext_attrs(l_table_index).N_ext_attr23
5640       , P_old_ext_attrs(l_table_index).N_ext_attr24
5641       , P_old_ext_attrs(l_table_index).N_ext_attr25
5642       , P_new_ext_attrs(l_table_index).D_EXT_ATTR1
5643       , P_new_ext_attrs(l_table_index).D_EXT_ATTR2
5644       , P_new_ext_attrs(l_table_index).D_EXT_ATTR3
5645       , P_new_ext_attrs(l_table_index).D_EXT_ATTR4
5646       , P_new_ext_attrs(l_table_index).D_EXT_ATTR5
5647       , P_new_ext_attrs(l_table_index).D_EXT_ATTR6
5648       , P_new_ext_attrs(l_table_index).D_EXT_ATTR7
5649       , P_new_ext_attrs(l_table_index).D_EXT_ATTR8
5650       , P_new_ext_attrs(l_table_index).D_EXT_ATTR9
5651       , P_new_ext_attrs(l_table_index).D_EXT_ATTR10
5652       , P_new_ext_attrs(l_table_index).D_EXT_ATTR11
5653       , P_new_ext_attrs(l_table_index).D_EXT_ATTR12
5654       , P_new_ext_attrs(l_table_index).D_EXT_ATTR13
5655       , P_new_ext_attrs(l_table_index).D_EXT_ATTR14
5656       , P_new_ext_attrs(l_table_index).D_EXT_ATTR15
5657       , P_new_ext_attrs(l_table_index).D_EXT_ATTR16
5658       , P_new_ext_attrs(l_table_index).D_EXT_ATTR17
5659       , P_new_ext_attrs(l_table_index).D_EXT_ATTR18
5660       , P_new_ext_attrs(l_table_index).D_EXT_ATTR19
5661       , P_new_ext_attrs(l_table_index).D_EXT_ATTR20
5662       , P_new_ext_attrs(l_table_index).D_EXT_ATTR21
5663       , P_new_ext_attrs(l_table_index).D_EXT_ATTR22
5664       , P_new_ext_attrs(l_table_index).D_EXT_ATTR23
5665       , P_new_ext_attrs(l_table_index).D_EXT_ATTR24
5666       , P_new_ext_attrs(l_table_index).D_EXT_ATTR25
5667       , P_old_ext_attrs(l_table_index).D_ext_attr1
5668       , P_old_ext_attrs(l_table_index).D_ext_attr2
5669       , P_old_ext_attrs(l_table_index).D_ext_attr3
5670       , P_old_ext_attrs(l_table_index).D_ext_attr4
5671       , P_old_ext_attrs(l_table_index).D_ext_attr5
5672       , P_old_ext_attrs(l_table_index).D_ext_attr6
5673       , P_old_ext_attrs(l_table_index).D_ext_attr7
5674       , P_old_ext_attrs(l_table_index).D_ext_attr8
5675       , P_old_ext_attrs(l_table_index).D_ext_attr9
5676       , P_old_ext_attrs(l_table_index).D_ext_attr10
5677       , P_old_ext_attrs(l_table_index).D_ext_attr11
5678       , P_old_ext_attrs(l_table_index).D_ext_attr12
5679       , P_old_ext_attrs(l_table_index).D_ext_attr13
5680       , P_old_ext_attrs(l_table_index).D_ext_attr14
5681       , P_old_ext_attrs(l_table_index).D_ext_attr15
5682       , P_old_ext_attrs(l_table_index).D_ext_attr16
5683       , P_old_ext_attrs(l_table_index).D_ext_attr17
5684       , P_old_ext_attrs(l_table_index).D_ext_attr18
5685       , P_old_ext_attrs(l_table_index).D_ext_attr19
5686       , P_old_ext_attrs(l_table_index).D_ext_attr20
5687       , P_old_ext_attrs(l_table_index).D_ext_attr21
5688       , P_old_ext_attrs(l_table_index).D_ext_attr22
5689       , P_old_ext_attrs(l_table_index).D_ext_attr23
5690       , P_old_ext_attrs(l_table_index).D_ext_attr24
5691       , P_old_ext_attrs(l_table_index).D_ext_attr25
5692       , P_new_ext_attrs(l_table_index).UOM_ext_attr1
5693       , P_new_ext_attrs(l_table_index).UOM_ext_attr2
5694       , P_new_ext_attrs(l_table_index).UOM_ext_attr3
5695       , P_new_ext_attrs(l_table_index).UOM_ext_attr4
5696       , P_new_ext_attrs(l_table_index).UOM_ext_attr5
5697       , P_new_ext_attrs(l_table_index).UOM_ext_attr6
5698       , P_new_ext_attrs(l_table_index).UOM_ext_attr7
5699       , P_new_ext_attrs(l_table_index).UOM_ext_attr8
5700       , P_new_ext_attrs(l_table_index).UOM_ext_attr9
5701       , P_new_ext_attrs(l_table_index).UOM_ext_attr10
5702       , P_new_ext_attrs(l_table_index).UOM_ext_attr11
5703       , P_new_ext_attrs(l_table_index).UOM_ext_attr12
5704       , P_new_ext_attrs(l_table_index).UOM_ext_attr13
5705       , P_new_ext_attrs(l_table_index).UOM_ext_attr14
5706       , P_new_ext_attrs(l_table_index).UOM_ext_attr15
5707       , P_new_ext_attrs(l_table_index).UOM_ext_attr16
5708       , P_new_ext_attrs(l_table_index).UOM_ext_attr17
5709       , P_new_ext_attrs(l_table_index).UOM_ext_attr18
5710       , P_new_ext_attrs(l_table_index).UOM_ext_attr19
5711       , P_new_ext_attrs(l_table_index).UOM_ext_attr20
5712       , P_new_ext_attrs(l_table_index).UOM_ext_attr21
5713       , P_new_ext_attrs(l_table_index).UOM_ext_attr22
5714       , P_new_ext_attrs(l_table_index).UOM_ext_attr23
5715       , P_new_ext_attrs(l_table_index).UOM_ext_attr24
5716       , P_new_ext_attrs(l_table_index).UOM_ext_attr25
5717       , P_old_ext_attrs(l_table_index).UOM_ext_attr1
5718       , P_old_ext_attrs(l_table_index).UOM_ext_attr2
5719       , P_old_ext_attrs(l_table_index).UOM_ext_attr3
5720       , P_old_ext_attrs(l_table_index).UOM_ext_attr4
5721       , P_old_ext_attrs(l_table_index).UOM_ext_attr5
5722       , P_old_ext_attrs(l_table_index).UOM_ext_attr6
5723       , P_old_ext_attrs(l_table_index).UOM_ext_attr7
5724       , P_old_ext_attrs(l_table_index).UOM_ext_attr8
5725       , P_old_ext_attrs(l_table_index).UOM_ext_attr9
5726       , P_old_ext_attrs(l_table_index).UOM_ext_attr10
5727       , P_old_ext_attrs(l_table_index).UOM_ext_attr11
5728       , P_old_ext_attrs(l_table_index).UOM_ext_attr12
5729       , P_old_ext_attrs(l_table_index).UOM_ext_attr13
5730       , P_old_ext_attrs(l_table_index).UOM_ext_attr14
5731       , P_old_ext_attrs(l_table_index).UOM_ext_attr15
5732       , P_old_ext_attrs(l_table_index).UOM_ext_attr16
5733       , P_old_ext_attrs(l_table_index).UOM_ext_attr17
5734       , P_old_ext_attrs(l_table_index).UOM_ext_attr18
5735       , P_old_ext_attrs(l_table_index).UOM_ext_attr19
5736       , P_old_ext_attrs(l_table_index).UOM_ext_attr20
5737       , P_old_ext_attrs(l_table_index).UOM_ext_attr21
5738       , P_old_ext_attrs(l_table_index).UOM_ext_attr22
5739       , P_old_ext_attrs(l_table_index).UOM_ext_attr23
5740       , P_old_ext_attrs(l_table_index).UOM_ext_attr24
5741       , P_old_ext_attrs(l_table_index).UOM_ext_attr25
5742       , l_modified_on
5743       , l_modified_by
5744       );
5745 
5746   --DBMS_OUTPUT.PUT_LINE('inside for loop after insert ');
5747 END IF;
5748     END LOOP;
5749 
5750   END IF ;    -- no records in the table.
5751 
5752 
5753 EXCEPTION
5754   WHEN OTHERS THEN
5755     --DBMS_OUTPUT.PUT_LINE('when other ..');
5756     --DBMS_OUTPUT.PUT_LINE(substr(SQLERRM,1,200));
5757     FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5758     FND_MESSAGE.set_token('P_TEXT','cs_sr_ext_attr_data_pvt.insert_sr_row'||'-'||substr(SQLERRM,1,200));
5759     FND_MSG_PUB.ADD;
5760     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5761 
5762 END insert_sr_row;
5763 
5764 
5765 --------------------------------------------------------------------------------
5766 -- Procedure Name : insert_pr_row
5767 -- Parameters     :
5768 -- IN             : p_new_ext_attrs  Table New ext attr values
5769 --                : p_old_ext_attrs  Table old Ext attr values
5770 --                : p_modified_by    Identity of user creationg/modifying
5771 --                                   Ext attrs
5772 --                : p_modified_on    Date of Ext Attr creation/update
5773 -- OUT            : x_return_status  Status of procedure return
5774 --                : x_msg_count      Number of error messages
5775 --                : x_msg_data       Error description
5776 --
5777 -- Description    : Procedure to create audit of party role extensible attributes.
5778 --
5779 -- Modification History:
5780 -- Date     Name     Desc
5781 -- -------- -------- -----------------------------------------------------------
5782 -- 05/05/05 pkesani  Created
5783 -- 08/08/05 smisra   Modified insert statement and used pk values for
5784 --                   incident id, party id, party type and party role
5785 --------------------------------------------------------------------------------
5786 PROCEDURE insert_pr_row
5787 ( P_NEW_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5788 , P_OLD_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5789 , P_MODIFIED_BY           IN NUMBER
5790 , P_MODIFIED_ON           IN DATE
5791 , X_RETURN_STATUS        OUT NOCOPY VARCHAR2
5792 , X_MSG_COUNT            OUT NOCOPY NUMBER
5793 , X_MSG_DATA             OUT NOCOPY VARCHAR2
5794 )  IS
5795 l_table_index            NUMBER;
5796 l_ext_audit_id           NUMBER;
5797 l_last_updated_by        NUMBER;
5798 l_last_update_date       DATE;
5799 l_last_update_login      NUMBER;
5800 l_modified_by            NUMBER;
5801 l_modified_on            DATE;
5802 l_msg_count              NUMBER;
5803 l_msg_data               VARCHAR2(2000);
5804 l_api_name      CONSTANT VARCHAR2(30) := 'insert_pr_row';
5805 l_api_name_full CONSTANT VARCHAR2(61) := 'CS_SR_EXTATTRIBUTES_PVT'||'.'||l_api_name;
5806 BEGIN
5807   x_return_status := FND_API.G_RET_STS_SUCCESS;
5808 
5809 
5810   l_last_updated_by := FND_GLOBAL.USER_ID;
5811   l_last_update_login := FND_GLOBAL.LOGIN_ID;
5812   l_last_update_date := SYSDATE;
5813 
5814   IF  P_MODIFIED_BY IS NULL THEN
5815     l_modified_by := FND_GLOBAL.USER_ID;
5816   ELSE
5817     l_modified_by := P_MODIFIED_BY;
5818   END IF;
5819 
5820   IF  P_MODIFIED_ON IS NULL THEN
5821     l_modified_on := SYSDATE;
5822   ELSE
5823     l_modified_on := P_MODIFIED_ON;
5824   END IF;
5825 
5826   IF P_NEW_ext_attrs.count = 0 OR P_OLD_ext_attrs.count = 0 THEN
5827     RETURN;
5828   ELSE
5829     FOR l_table_index in P_NEW_ext_attrs.FIRST..P_NEW_ext_attrs.LAST LOOP
5830       SELECT CS_SR_CONTACTS_EXT_AUDIT_S.NEXTVAL INTO l_ext_audit_id FROM dual;
5831   --DBMS_OUTPUT.PUT_LINE('inside for loop:' || to_char(l_ext_audit_id));
5832 
5833   --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).extension_ID'||P_new_ext_attrs(l_table_index).extension_ID);
5834 
5835       INSERT INTO CS_SR_CONTACTS_EXT_AUDIT
5836       ( AUDIT_EXTENSION_ID
5837       , EXTENSION_ID
5838       , INCIDENT_ID
5839       , CONTEXT
5840       , ATTR_GROUP_ID
5841       , CREATION_DATE
5842       , CREATED_BY
5843       , LAST_UPDATE_DATE
5844       , LAST_UPDATED_BY
5845       , LAST_UPDATE_LOGIN
5846       , C_EXT_ATTR1
5847       , C_EXT_ATTR2
5848       , C_EXT_ATTR3
5849       , C_EXT_ATTR4
5850       , C_EXT_ATTR5
5851       , C_EXT_ATTR6
5852       , C_EXT_ATTR7
5853       , C_EXT_ATTR8
5854       , C_EXT_ATTR9
5855       , C_EXT_ATTR10
5856       , C_EXT_ATTR11
5857       , C_EXT_ATTR12
5858       , C_EXT_ATTR13
5859       , C_EXT_ATTR14
5860       , C_EXT_ATTR15
5861       , C_EXT_ATTR16
5862       , C_EXT_ATTR17
5863       , C_EXT_ATTR18
5864       , C_EXT_ATTR19
5865       , C_EXT_ATTR20
5866       , C_EXT_ATTR21
5867       , C_EXT_ATTR22
5868       , C_EXT_ATTR23
5869       , C_EXT_ATTR24
5870       , C_EXT_ATTR25
5871       , C_EXT_ATTR26
5872       , C_EXT_ATTR27
5873       , C_EXT_ATTR28
5874       , C_EXT_ATTR29
5875       , C_EXT_ATTR30
5876       , C_EXT_ATTR31
5877       , C_EXT_ATTR32
5878       , C_EXT_ATTR33
5879       , C_EXT_ATTR34
5880       , C_EXT_ATTR35
5881       , C_EXT_ATTR36
5882       , C_EXT_ATTR37
5883       , C_EXT_ATTR38
5884       , C_EXT_ATTR39
5885       , C_EXT_ATTR40
5886       , C_EXT_ATTR41
5887       , C_EXT_ATTR42
5888       , C_EXT_ATTR43
5889       , C_EXT_ATTR44
5890       , C_EXT_ATTR45
5891       , C_EXT_ATTR46
5892       , C_EXT_ATTR47
5893       , C_EXT_ATTR48
5894       , C_EXT_ATTR49
5895       , C_EXT_ATTR50
5896       , OLD_C_EXT_ATTR1
5897       , OLD_C_EXT_ATTR2
5898       , OLD_C_EXT_ATTR3
5899       , OLD_C_EXT_ATTR4
5900       , OLD_C_EXT_ATTR5
5901       , OLD_C_EXT_ATTR6
5902       , OLD_C_EXT_ATTR7
5903       , OLD_C_EXT_ATTR8
5904       , OLD_C_EXT_ATTR9
5905       , OLD_C_EXT_ATTR10
5906       , OLD_C_EXT_ATTR11
5907       , OLD_C_EXT_ATTR12
5908       , OLD_C_EXT_ATTR13
5909       , OLD_C_EXT_ATTR14
5910       , OLD_C_EXT_ATTR15
5911       , OLD_C_EXT_ATTR16
5912       , OLD_C_EXT_ATTR17
5913       , OLD_C_EXT_ATTR18
5914       , OLD_C_EXT_ATTR19
5915       , OLD_C_EXT_ATTR20
5916       , OLD_C_EXT_ATTR21
5917       , OLD_C_EXT_ATTR22
5918       , OLD_C_EXT_ATTR23
5919       , OLD_C_EXT_ATTR24
5920       , OLD_C_EXT_ATTR25
5921       , OLD_C_EXT_ATTR26
5922       , OLD_C_EXT_ATTR27
5923       , OLD_C_EXT_ATTR28
5924       , OLD_C_EXT_ATTR29
5925       , OLD_C_EXT_ATTR30
5926       , OLD_C_EXT_ATTR31
5927       , OLD_C_EXT_ATTR32
5928       , OLD_C_EXT_ATTR33
5929       , OLD_C_EXT_ATTR34
5930       , OLD_C_EXT_ATTR35
5931       , OLD_C_EXT_ATTR36
5932       , OLD_C_EXT_ATTR37
5933       , OLD_C_EXT_ATTR38
5934       , OLD_C_EXT_ATTR39
5935       , OLD_C_EXT_ATTR40
5936       , OLD_C_EXT_ATTR41
5937       , OLD_C_EXT_ATTR42
5938       , OLD_C_EXT_ATTR43
5939       , OLD_C_EXT_ATTR44
5940       , OLD_C_EXT_ATTR45
5941       , OLD_C_EXT_ATTR46
5942       , OLD_C_EXT_ATTR47
5943       , OLD_C_EXT_ATTR48
5944       , OLD_C_EXT_ATTR49
5945       , OLD_C_EXT_ATTR50
5946       , N_EXT_ATTR1
5947       , N_EXT_ATTR2
5948       , N_EXT_ATTR3
5949       , N_EXT_ATTR4
5950       , N_EXT_ATTR5
5951       , N_EXT_ATTR6
5952       , N_EXT_ATTR7
5953       , N_EXT_ATTR8
5954       , N_EXT_ATTR9
5955       , N_EXT_ATTR10
5956       , N_EXT_ATTR11
5957       , N_EXT_ATTR12
5958       , N_EXT_ATTR13
5959       , N_EXT_ATTR14
5960       , N_EXT_ATTR15
5961       , N_EXT_ATTR16
5962       , N_EXT_ATTR17
5963       , N_EXT_ATTR18
5964       , N_EXT_ATTR19
5965       , N_EXT_ATTR20
5966       , N_EXT_ATTR21
5967       , N_EXT_ATTR22
5968       , N_EXT_ATTR23
5969       , N_EXT_ATTR24
5970       , N_EXT_ATTR25
5971       , OLD_N_EXT_ATTR1
5972       , OLD_N_EXT_ATTR2
5973       , OLD_N_EXT_ATTR3
5974       , OLD_N_EXT_ATTR4
5975       , OLD_N_EXT_ATTR5
5976       , OLD_N_EXT_ATTR6
5977       , OLD_N_EXT_ATTR7
5978       , OLD_N_EXT_ATTR8
5979       , OLD_N_EXT_ATTR9
5980       , OLD_N_EXT_ATTR10
5981       , OLD_N_EXT_ATTR11
5982       , OLD_N_EXT_ATTR12
5983       , OLD_N_EXT_ATTR13
5984       , OLD_N_EXT_ATTR14
5985       , OLD_N_EXT_ATTR15
5986       , OLD_N_EXT_ATTR16
5987       , OLD_N_EXT_ATTR17
5988       , OLD_N_EXT_ATTR18
5989       , OLD_N_EXT_ATTR19
5990       , OLD_N_EXT_ATTR20
5991       , OLD_N_EXT_ATTR21
5992       , OLD_N_EXT_ATTR22
5993       , OLD_N_EXT_ATTR23
5994       , OLD_N_EXT_ATTR24
5995       , OLD_N_EXT_ATTR25
5996       , D_EXT_ATTR1
5997       , D_EXT_ATTR2
5998       , D_EXT_ATTR3
5999       , D_EXT_ATTR4
6000       , D_EXT_ATTR5
6001       , D_EXT_ATTR6
6002       , D_EXT_ATTR7
6003       , D_EXT_ATTR8
6004       , D_EXT_ATTR9
6005       , D_EXT_ATTR10
6006       , D_EXT_ATTR11
6007       , D_EXT_ATTR12
6008       , D_EXT_ATTR13
6009       , D_EXT_ATTR14
6010       , D_EXT_ATTR15
6011       , D_EXT_ATTR16
6012       , D_EXT_ATTR17
6013       , D_EXT_ATTR18
6014       , D_EXT_ATTR19
6015       , D_EXT_ATTR20
6016       , D_EXT_ATTR21
6017       , D_EXT_ATTR22
6018       , D_EXT_ATTR23
6019       , D_EXT_ATTR24
6020       , D_EXT_ATTR25
6021       , OLD_D_EXT_ATTR1
6022       , OLD_D_EXT_ATTR2
6023       , OLD_D_EXT_ATTR3
6024       , OLD_D_EXT_ATTR4
6025       , OLD_D_EXT_ATTR5
6026       , OLD_D_EXT_ATTR6
6027       , OLD_D_EXT_ATTR7
6028       , OLD_D_EXT_ATTR8
6029       , OLD_D_EXT_ATTR9
6030       , OLD_D_EXT_ATTR10
6031       , OLD_D_EXT_ATTR11
6032       , OLD_D_EXT_ATTR12
6033       , OLD_D_EXT_ATTR13
6034       , OLD_D_EXT_ATTR14
6035       , OLD_D_EXT_ATTR15
6036       , OLD_D_EXT_ATTR16
6037       , OLD_D_EXT_ATTR17
6038       , OLD_D_EXT_ATTR18
6039       , OLD_D_EXT_ATTR19
6040       , OLD_D_EXT_ATTR20
6041       , OLD_D_EXT_ATTR21
6042       , OLD_D_EXT_ATTR22
6043       , OLD_D_EXT_ATTR23
6044       , OLD_D_EXT_ATTR24
6045       , OLD_D_EXT_ATTR25
6046       , UOM_EXT_ATTR1
6047       , UOM_EXT_ATTR2
6048       , UOM_EXT_ATTR3
6049       , UOM_EXT_ATTR4
6050       , UOM_EXT_ATTR5
6051       , UOM_EXT_ATTR6
6052       , UOM_EXT_ATTR7
6053       , UOM_EXT_ATTR8
6054       , UOM_EXT_ATTR9
6055       , UOM_EXT_ATTR10
6056       , UOM_EXT_ATTR11
6057       , UOM_EXT_ATTR12
6058       , UOM_EXT_ATTR13
6059       , UOM_EXT_ATTR14
6060       , UOM_EXT_ATTR15
6061       , UOM_EXT_ATTR16
6062       , UOM_EXT_ATTR17
6063       , UOM_EXT_ATTR18
6064       , UOM_EXT_ATTR19
6065       , UOM_EXT_ATTR20
6066       , UOM_EXT_ATTR21
6067       , UOM_EXT_ATTR22
6068       , UOM_EXT_ATTR23
6069       , UOM_EXT_ATTR24
6070       , UOM_EXT_ATTR25
6071       , OLD_UOM_EXT_ATTR1
6072       , OLD_UOM_EXT_ATTR2
6073       , OLD_UOM_EXT_ATTR3
6074       , OLD_UOM_EXT_ATTR4
6075       , OLD_UOM_EXT_ATTR5
6076       , OLD_UOM_EXT_ATTR6
6077       , OLD_UOM_EXT_ATTR7
6078       , OLD_UOM_EXT_ATTR8
6079       , OLD_UOM_EXT_ATTR9
6080       , OLD_UOM_EXT_ATTR10
6081       , OLD_UOM_EXT_ATTR11
6082       , OLD_UOM_EXT_ATTR12
6083       , OLD_UOM_EXT_ATTR13
6084       , OLD_UOM_EXT_ATTR14
6085       , OLD_UOM_EXT_ATTR15
6086       , OLD_UOM_EXT_ATTR16
6087       , OLD_UOM_EXT_ATTR17
6088       , OLD_UOM_EXT_ATTR18
6089       , OLD_UOM_EXT_ATTR19
6090       , OLD_UOM_EXT_ATTR20
6091       , OLD_UOM_EXT_ATTR21
6092       , OLD_UOM_EXT_ATTR22
6093       , OLD_UOM_EXT_ATTR23
6094       , OLD_UOM_EXT_ATTR24
6095       , OLD_UOM_EXT_ATTR25
6096       , PARTY_ID
6097       , OLD_PARTY_ID
6098       , CONTACT_TYPE
6099       , PARTY_ROLE_CODE
6100       , EXT_ATTR_MODIFIED_ON
6101       , EXT_ATTR_MODIFIED_BY
6102       )
6103       VALUES
6104       ( l_ext_audit_id
6105       , P_new_ext_attrs(l_table_index).extension_ID
6106       , TO_NUMBER(p_new_ext_attrs(l_table_index).pk_column_1)
6107       , P_new_ext_attrs(l_table_index).context
6108       , P_new_ext_attrs(l_table_index).attr_group_id
6109       , l_last_update_date
6110       , l_last_updated_by
6111       , l_last_update_date
6112       , l_last_updated_by
6113       , l_last_update_login
6114       , P_new_ext_attrs(l_table_index).C_ext_attr1
6115       , P_new_ext_attrs(l_table_index).C_ext_attr2
6116       , P_new_ext_attrs(l_table_index).C_ext_attr3
6117       , P_new_ext_attrs(l_table_index).C_ext_attr4
6118       , P_new_ext_attrs(l_table_index).C_ext_attr5
6119       , P_new_ext_attrs(l_table_index).C_ext_attr6
6120       , P_new_ext_attrs(l_table_index).C_ext_attr7
6121       , P_new_ext_attrs(l_table_index).C_ext_attr8
6122       , P_new_ext_attrs(l_table_index).C_ext_attr9
6123       , P_new_ext_attrs(l_table_index).C_ext_attr10
6124       , P_new_ext_attrs(l_table_index).C_ext_attr11
6125       , P_new_ext_attrs(l_table_index).C_ext_attr12
6126       , P_new_ext_attrs(l_table_index).C_ext_attr13
6127       , P_new_ext_attrs(l_table_index).C_ext_attr14
6128       , P_new_ext_attrs(l_table_index).C_ext_attr15
6129       , P_new_ext_attrs(l_table_index).C_ext_attr16
6130       , P_new_ext_attrs(l_table_index).C_ext_attr17
6131       , P_new_ext_attrs(l_table_index).C_ext_attr18
6132       , P_new_ext_attrs(l_table_index).C_ext_attr19
6133       , P_new_ext_attrs(l_table_index).C_ext_attr20
6134       , P_new_ext_attrs(l_table_index).C_ext_attr21
6135       , P_new_ext_attrs(l_table_index).C_ext_attr22
6136       , P_new_ext_attrs(l_table_index).C_ext_attr23
6137       , P_new_ext_attrs(l_table_index).C_ext_attr24
6138       , P_new_ext_attrs(l_table_index).C_ext_attr25
6139       , P_new_ext_attrs(l_table_index).C_ext_attr26
6140       , P_new_ext_attrs(l_table_index).C_ext_attr27
6141       , P_new_ext_attrs(l_table_index).C_ext_attr28
6142       , P_new_ext_attrs(l_table_index).C_ext_attr29
6143       , P_new_ext_attrs(l_table_index).C_ext_attr30
6144       , P_new_ext_attrs(l_table_index).C_ext_attr31
6145       , P_new_ext_attrs(l_table_index).C_ext_attr32
6146       , P_new_ext_attrs(l_table_index).C_ext_attr33
6147       , P_new_ext_attrs(l_table_index).C_ext_attr34
6148       , P_new_ext_attrs(l_table_index).C_ext_attr35
6149       , P_new_ext_attrs(l_table_index).C_ext_attr36
6150       , P_new_ext_attrs(l_table_index).C_ext_attr37
6151       , P_new_ext_attrs(l_table_index).C_ext_attr38
6152       , P_new_ext_attrs(l_table_index).C_ext_attr39
6153       , P_new_ext_attrs(l_table_index).C_ext_attr40
6154       , P_new_ext_attrs(l_table_index).C_ext_attr41
6155       , P_new_ext_attrs(l_table_index).C_ext_attr42
6156       , P_new_ext_attrs(l_table_index).C_ext_attr43
6157       , P_new_ext_attrs(l_table_index).C_ext_attr44
6158       , P_new_ext_attrs(l_table_index).C_ext_attr45
6159       , P_new_ext_attrs(l_table_index).C_ext_attr46
6160       , P_new_ext_attrs(l_table_index).C_ext_attr47
6161       , P_new_ext_attrs(l_table_index).C_ext_attr48
6162       , P_new_ext_attrs(l_table_index).C_ext_attr49
6163       , P_new_ext_attrs(l_table_index).C_ext_attr50
6164       , P_old_ext_attrs(l_table_index).C_ext_attr1
6165       , P_old_ext_attrs(l_table_index).C_ext_attr2
6166       , P_old_ext_attrs(l_table_index).C_ext_attr3
6167       , P_old_ext_attrs(l_table_index).C_ext_attr4
6168       , P_old_ext_attrs(l_table_index).C_ext_attr5
6169       , P_old_ext_attrs(l_table_index).C_ext_attr6
6170       , P_old_ext_attrs(l_table_index).C_ext_attr7
6171       , P_old_ext_attrs(l_table_index).C_ext_attr8
6172       , P_old_ext_attrs(l_table_index).C_ext_attr9
6173       , P_old_ext_attrs(l_table_index).C_ext_attr10
6174       , P_old_ext_attrs(l_table_index).C_ext_attr11
6175       , P_old_ext_attrs(l_table_index).C_ext_attr12
6176       , P_old_ext_attrs(l_table_index).C_ext_attr13
6177       , P_old_ext_attrs(l_table_index).C_ext_attr14
6178       , P_old_ext_attrs(l_table_index).C_ext_attr15
6179       , P_old_ext_attrs(l_table_index).C_ext_attr16
6180       , P_old_ext_attrs(l_table_index).C_ext_attr17
6181       , P_old_ext_attrs(l_table_index).C_ext_attr18
6182       , P_old_ext_attrs(l_table_index).C_ext_attr19
6183       , P_old_ext_attrs(l_table_index).C_ext_attr20
6184       , P_old_ext_attrs(l_table_index).C_ext_attr21
6185       , P_old_ext_attrs(l_table_index).C_ext_attr22
6186       , P_old_ext_attrs(l_table_index).C_ext_attr23
6187       , P_old_ext_attrs(l_table_index).C_ext_attr24
6188       , P_old_ext_attrs(l_table_index).C_ext_attr25
6189       , P_old_ext_attrs(l_table_index).C_ext_attr26
6190       , P_old_ext_attrs(l_table_index).C_ext_attr27
6191       , P_old_ext_attrs(l_table_index).C_ext_attr28
6192       , P_old_ext_attrs(l_table_index).C_ext_attr29
6193       , P_old_ext_attrs(l_table_index).C_ext_attr30
6194       , P_old_ext_attrs(l_table_index).C_ext_attr31
6195       , P_old_ext_attrs(l_table_index).C_ext_attr32
6196       , P_old_ext_attrs(l_table_index).C_ext_attr33
6197       , P_old_ext_attrs(l_table_index).C_ext_attr34
6198       , P_old_ext_attrs(l_table_index).C_ext_attr35
6199       , P_old_ext_attrs(l_table_index).C_ext_attr36
6200       , P_old_ext_attrs(l_table_index).C_ext_attr37
6201       , P_old_ext_attrs(l_table_index).C_ext_attr38
6202       , P_old_ext_attrs(l_table_index).C_ext_attr39
6203       , P_old_ext_attrs(l_table_index).C_ext_attr40
6204       , P_old_ext_attrs(l_table_index).C_ext_attr41
6205       , P_old_ext_attrs(l_table_index).C_ext_attr42
6206       , P_old_ext_attrs(l_table_index).C_ext_attr43
6207       , P_old_ext_attrs(l_table_index).C_ext_attr44
6208       , P_old_ext_attrs(l_table_index).C_ext_attr45
6209       , P_old_ext_attrs(l_table_index).C_ext_attr46
6210       , P_old_ext_attrs(l_table_index).C_ext_attr47
6211       , P_old_ext_attrs(l_table_index).C_ext_attr48
6212       , P_old_ext_attrs(l_table_index).C_ext_attr49
6213       , P_old_ext_attrs(l_table_index).C_ext_attr50
6214       , P_new_ext_attrs(l_table_index).N_ext_attr1
6215       , P_new_ext_attrs(l_table_index).N_ext_attr2
6216       , P_new_ext_attrs(l_table_index).N_ext_attr3
6217       , P_new_ext_attrs(l_table_index).N_ext_attr4
6218       , P_new_ext_attrs(l_table_index).N_ext_attr5
6219       , P_new_ext_attrs(l_table_index).N_ext_attr6
6220       , P_new_ext_attrs(l_table_index).N_ext_attr7
6221       , P_new_ext_attrs(l_table_index).N_ext_attr8
6222       , P_new_ext_attrs(l_table_index).N_ext_attr9
6223       , P_new_ext_attrs(l_table_index).N_ext_attr10
6224       , P_new_ext_attrs(l_table_index).N_ext_attr11
6225       , P_new_ext_attrs(l_table_index).N_ext_attr12
6226       , P_new_ext_attrs(l_table_index).N_ext_attr13
6227       , P_new_ext_attrs(l_table_index).N_ext_attr14
6228       , P_new_ext_attrs(l_table_index).N_ext_attr15
6229       , P_new_ext_attrs(l_table_index).N_ext_attr16
6230       , P_new_ext_attrs(l_table_index).N_ext_attr17
6231       , P_new_ext_attrs(l_table_index).N_ext_attr18
6232       , P_new_ext_attrs(l_table_index).N_ext_attr19
6233       , P_new_ext_attrs(l_table_index).N_ext_attr20
6234       , P_new_ext_attrs(l_table_index).N_ext_attr21
6235       , P_new_ext_attrs(l_table_index).N_ext_attr22
6236       , P_new_ext_attrs(l_table_index).N_ext_attr23
6237       , P_new_ext_attrs(l_table_index).N_ext_attr24
6238       , P_new_ext_attrs(l_table_index).N_ext_attr25
6239       , P_old_ext_attrs(l_table_index).N_ext_attr1
6240       , P_old_ext_attrs(l_table_index).N_ext_attr2
6241       , P_old_ext_attrs(l_table_index).N_ext_attr3
6242       , P_old_ext_attrs(l_table_index).N_ext_attr4
6243       , P_old_ext_attrs(l_table_index).N_ext_attr5
6244       , P_old_ext_attrs(l_table_index).N_ext_attr6
6245       , P_old_ext_attrs(l_table_index).N_ext_attr7
6246       , P_old_ext_attrs(l_table_index).N_ext_attr8
6247       , P_old_ext_attrs(l_table_index).N_ext_attr9
6248       , P_old_ext_attrs(l_table_index).N_ext_attr10
6249       , P_old_ext_attrs(l_table_index).N_ext_attr11
6250       , P_old_ext_attrs(l_table_index).N_ext_attr12
6251       , P_old_ext_attrs(l_table_index).N_ext_attr13
6252       , P_old_ext_attrs(l_table_index).N_ext_attr14
6253       , P_old_ext_attrs(l_table_index).N_ext_attr15
6254       , P_old_ext_attrs(l_table_index).N_ext_attr16
6255       , P_old_ext_attrs(l_table_index).N_ext_attr17
6256       , P_old_ext_attrs(l_table_index).N_ext_attr18
6257       , P_old_ext_attrs(l_table_index).N_ext_attr19
6258       , P_old_ext_attrs(l_table_index).N_ext_attr20
6259       , P_old_ext_attrs(l_table_index).N_ext_attr21
6260       , P_old_ext_attrs(l_table_index).N_ext_attr22
6261       , P_old_ext_attrs(l_table_index).N_ext_attr23
6262       , P_old_ext_attrs(l_table_index).N_ext_attr24
6263       , P_old_ext_attrs(l_table_index).N_ext_attr25
6264       , P_new_ext_attrs(l_table_index).D_EXT_ATTR1
6265       , P_new_ext_attrs(l_table_index).D_EXT_ATTR2
6266       , P_new_ext_attrs(l_table_index).D_EXT_ATTR3
6267       , P_new_ext_attrs(l_table_index).D_EXT_ATTR4
6268       , P_new_ext_attrs(l_table_index).D_EXT_ATTR5
6269       , P_new_ext_attrs(l_table_index).D_EXT_ATTR6
6270       , P_new_ext_attrs(l_table_index).D_EXT_ATTR7
6271       , P_new_ext_attrs(l_table_index).D_EXT_ATTR8
6272       , P_new_ext_attrs(l_table_index).D_EXT_ATTR9
6273       , P_new_ext_attrs(l_table_index).D_EXT_ATTR10
6274       , P_new_ext_attrs(l_table_index).D_EXT_ATTR11
6275       , P_new_ext_attrs(l_table_index).D_EXT_ATTR12
6276       , P_new_ext_attrs(l_table_index).D_EXT_ATTR13
6277       , P_new_ext_attrs(l_table_index).D_EXT_ATTR14
6278       , P_new_ext_attrs(l_table_index).D_EXT_ATTR15
6279       , P_new_ext_attrs(l_table_index).D_EXT_ATTR16
6280       , P_new_ext_attrs(l_table_index).D_EXT_ATTR17
6281       , P_new_ext_attrs(l_table_index).D_EXT_ATTR18
6282       , P_new_ext_attrs(l_table_index).D_EXT_ATTR19
6283       , P_new_ext_attrs(l_table_index).D_EXT_ATTR20
6284       , P_new_ext_attrs(l_table_index).D_EXT_ATTR21
6285       , P_new_ext_attrs(l_table_index).D_EXT_ATTR22
6286       , P_new_ext_attrs(l_table_index).D_EXT_ATTR23
6287       , P_new_ext_attrs(l_table_index).D_EXT_ATTR24
6288       , P_new_ext_attrs(l_table_index).D_EXT_ATTR25
6289       , P_old_ext_attrs(l_table_index).D_ext_attr1
6290       , P_old_ext_attrs(l_table_index).D_ext_attr2
6291       , P_old_ext_attrs(l_table_index).D_ext_attr3
6292       , P_old_ext_attrs(l_table_index).D_ext_attr4
6293       , P_old_ext_attrs(l_table_index).D_ext_attr5
6294       , P_old_ext_attrs(l_table_index).D_ext_attr6
6295       , P_old_ext_attrs(l_table_index).D_ext_attr7
6296       , P_old_ext_attrs(l_table_index).D_ext_attr8
6297       , P_old_ext_attrs(l_table_index).D_ext_attr9
6298       , P_old_ext_attrs(l_table_index).D_ext_attr10
6299       , P_old_ext_attrs(l_table_index).D_ext_attr11
6300       , P_old_ext_attrs(l_table_index).D_ext_attr12
6301       , P_old_ext_attrs(l_table_index).D_ext_attr13
6302       , P_old_ext_attrs(l_table_index).D_ext_attr14
6303       , P_old_ext_attrs(l_table_index).D_ext_attr15
6304       , P_old_ext_attrs(l_table_index).D_ext_attr16
6305       , P_old_ext_attrs(l_table_index).D_ext_attr17
6306       , P_old_ext_attrs(l_table_index).D_ext_attr18
6307       , P_old_ext_attrs(l_table_index).D_ext_attr19
6308       , P_old_ext_attrs(l_table_index).D_ext_attr20
6309       , P_old_ext_attrs(l_table_index).D_ext_attr21
6310       , P_old_ext_attrs(l_table_index).D_ext_attr22
6311       , P_old_ext_attrs(l_table_index).D_ext_attr23
6312       , P_old_ext_attrs(l_table_index).D_ext_attr24
6313       , P_old_ext_attrs(l_table_index).D_ext_attr25
6314       , P_new_ext_attrs(l_table_index).UOM_ext_attr1
6315       , P_new_ext_attrs(l_table_index).UOM_ext_attr2
6316       , P_new_ext_attrs(l_table_index).UOM_ext_attr3
6317       , P_new_ext_attrs(l_table_index).UOM_ext_attr4
6318       , P_new_ext_attrs(l_table_index).UOM_ext_attr5
6319       , P_new_ext_attrs(l_table_index).UOM_ext_attr6
6320       , P_new_ext_attrs(l_table_index).UOM_ext_attr7
6321       , P_new_ext_attrs(l_table_index).UOM_ext_attr8
6322       , P_new_ext_attrs(l_table_index).UOM_ext_attr9
6323       , P_new_ext_attrs(l_table_index).UOM_ext_attr10
6324       , P_new_ext_attrs(l_table_index).UOM_ext_attr11
6325       , P_new_ext_attrs(l_table_index).UOM_ext_attr12
6326       , P_new_ext_attrs(l_table_index).UOM_ext_attr13
6327       , P_new_ext_attrs(l_table_index).UOM_ext_attr14
6328       , P_new_ext_attrs(l_table_index).UOM_ext_attr15
6329       , P_new_ext_attrs(l_table_index).UOM_ext_attr16
6330       , P_new_ext_attrs(l_table_index).UOM_ext_attr17
6331       , P_new_ext_attrs(l_table_index).UOM_ext_attr18
6332       , P_new_ext_attrs(l_table_index).UOM_ext_attr19
6333       , P_new_ext_attrs(l_table_index).UOM_ext_attr20
6334       , P_new_ext_attrs(l_table_index).UOM_ext_attr21
6335       , P_new_ext_attrs(l_table_index).UOM_ext_attr22
6336       , P_new_ext_attrs(l_table_index).UOM_ext_attr23
6337       , P_new_ext_attrs(l_table_index).UOM_ext_attr24
6338       , P_new_ext_attrs(l_table_index).UOM_ext_attr25
6339       , P_old_ext_attrs(l_table_index).UOM_ext_attr1
6340       , P_old_ext_attrs(l_table_index).UOM_ext_attr2
6341       , P_old_ext_attrs(l_table_index).UOM_ext_attr3
6342       , P_old_ext_attrs(l_table_index).UOM_ext_attr4
6343       , P_old_ext_attrs(l_table_index).UOM_ext_attr5
6344       , P_old_ext_attrs(l_table_index).UOM_ext_attr6
6345       , P_old_ext_attrs(l_table_index).UOM_ext_attr7
6346       , P_old_ext_attrs(l_table_index).UOM_ext_attr8
6347       , P_old_ext_attrs(l_table_index).UOM_ext_attr9
6348       , P_old_ext_attrs(l_table_index).UOM_ext_attr10
6349       , P_old_ext_attrs(l_table_index).UOM_ext_attr11
6350       , P_old_ext_attrs(l_table_index).UOM_ext_attr12
6351       , P_old_ext_attrs(l_table_index).UOM_ext_attr13
6352       , P_old_ext_attrs(l_table_index).UOM_ext_attr14
6353       , P_old_ext_attrs(l_table_index).UOM_ext_attr15
6354       , P_old_ext_attrs(l_table_index).UOM_ext_attr16
6355       , P_old_ext_attrs(l_table_index).UOM_ext_attr17
6356       , P_old_ext_attrs(l_table_index).UOM_ext_attr18
6357       , P_old_ext_attrs(l_table_index).UOM_ext_attr19
6358       , P_old_ext_attrs(l_table_index).UOM_ext_attr20
6359       , P_old_ext_attrs(l_table_index).UOM_ext_attr21
6360       , P_old_ext_attrs(l_table_index).UOM_ext_attr22
6361       , P_old_ext_attrs(l_table_index).UOM_ext_attr23
6362       , P_old_ext_attrs(l_table_index).UOM_ext_attr24
6363       , P_old_ext_attrs(l_table_index).UOM_ext_attr25
6364       , TO_NUMBER(P_new_ext_attrs(l_table_index).pk_column_2)
6365       , TO_NUMBER(P_old_ext_attrs(l_table_index).pk_column_2)
6366       , P_new_ext_attrs(l_table_index).pk_column_3
6367       , P_new_ext_attrs(l_table_index).pk_column_4
6368       , l_modified_on
6369       , l_modified_by
6370       );
6371 
6372     END LOOP;
6373 
6374   END IF ;    -- no records in the table.
6375 
6376 
6377 EXCEPTION
6378   WHEN OTHERS THEN
6379     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6380     FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6381     FND_MESSAGE.set_token('P_TEXT','cs_sr_ext_attr_data_pvt.insert_sr_row'||'-'||substr(SQLERRM,1,200));
6382     FND_MSG_PUB.ADD;
6383     FND_MSG_PUB.Count_And_Get
6384     ( p_count => x_msg_count
6385     , p_data  => x_msg_data
6386     );
6387 
6388 END insert_pr_row;
6389 
6390 PROCEDURE GET_MULTI_ROW_UNIQUE_KEY(p_attr_group_name IN VARCHAR2
6391                                   ,p_attr_group_type IN VARCHAR2
6392                                   ,p_application_id IN NUMBER
6393                                   ,x_attr_name OUT NOCOPY VARCHAR2
6394                                   ,x_database_column OUT NOCOPY VARCHAR2) IS
6395 
6396 Cursor c_get_unique_key (p_attr_group_name IN NUMBER,
6397                          p_attr_group_type IN NUMBER,
6398                          p_application_id IN NUMBER) IS
6399 select attr_name, database_column
6400   from ego_attrs_v
6401 where attr_group_name = p_attr_group_name
6402   and attr_group_type = p_attr_group_type
6403   and application_id =  p_application_id
6404   and unique_key_flag = 'Y';
6405 
6406 BEGIN
6407 
6408 OPEN c_get_unique_key (p_attr_group_name
6409                       ,p_attr_group_type
6410                       ,p_application_id);
6411 FETCH c_get_unique_key INTO x_attr_name, x_database_column;
6412 CLOSE c_get_unique_key;
6413 
6414 EXCEPTION
6415 
6416 WHEN OTHERS THEN
6417   --MAYA NEED TO CODE
6418   null;
6419 
6420 END GET_MULTI_ROW_UNIQUE_KEY;
6421 
6422 PROCEDURE INIT_AUDIT_REC(p_count IN NUMBER,
6423         p_audit_rec IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type) IS
6424 
6425 
6426 BEGIN
6427 
6428 FOR i IN 1 .. p_count LOOP
6429 
6430   p_audit_rec(i) := NULL;
6431 
6432 END LOOP;
6433 
6434 END INIT_AUDIT_REC;
6435 
6436 
6437 -- -----------------------------------------------------------------------------
6438 -- Procedure Name : Log_EGO_EXT_Parameters
6439 -- Parameters     :
6440 -- IN             :
6441 -- OUT            :
6442 --
6443 -- Description    : Procedure to LOG the in parameters of PVT SR Ext Attrs procedures
6444 --
6445 --
6446 -- Modification History:
6447 -- Date     Name     Desc
6448 -- -------- -------- -----------------------------------------------------------
6449 -- 11/08/05 mviswana   Created
6450 -- -----------------------------------------------------------------------------
6451 PROCEDURE Log_EGO_Ext_PVT_Parameters(
6452                 p_ext_attr_grp_tbl        IN     EGO_USER_ATTR_ROW_TABLE
6453                ,p_ext_attr_tbl            IN     EGO_USER_ATTR_DATA_TABLE)
6454 
6455 IS
6456 
6457   l_api_name	       CONSTANT	VARCHAR2(30)	:= 'Get_SR_Ext_Attrs';
6458   l_api_name_full      CONSTANT	VARCHAR2(61)	:= G_PKG_NAME||'.'||l_api_name;
6459   l_log_module         CONSTANT VARCHAR2(255)   := 'cs.plsql.' || l_api_name_full || '.';
6460   l_attr_grp_index     BINARY_INTEGER;
6461   l_attr_index         BINARY_INTEGER;
6462 
6463 BEGIN
6464 
6465   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
6466     -- For Attribute Group
6467     l_attr_grp_index := p_ext_attr_grp_tbl.FIRST;
6468     WHILE l_attr_grp_index IS NOT NULL LOOP
6469 
6470 	FND_LOG.String
6471         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6472          , 'row_identifier             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).row_identifier
6473         );
6474 
6475 	FND_LOG.String
6476         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6477          , 'attr_group_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_ID
6478         );
6479 
6480 	FND_LOG.String
6481         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6482          , 'attr_group_app_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_APP_ID
6483         );
6484 
6485 	FND_LOG.String
6486         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6487          , 'attr_group_type             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_TYPE
6488         );
6489 
6490 	FND_LOG.String
6491         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6492          , 'attr_group_name              	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_NAME
6493         );
6494 
6495 	FND_LOG.String
6496         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6497          , 'data_level_1	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_1
6498         );
6499 
6500 	FND_LOG.String
6501         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6502          , 'data_level_2	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_2
6503         );
6504 
6505 	FND_LOG.String
6506         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6507          , 'data_level_3	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_3
6508         );
6509 
6510 	FND_LOG.String
6511         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6512          , 'transaction_type	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).TRANSACTION_TYPE
6513         );
6514 
6515     END LOOP;
6516 
6517     l_attr_index := p_ext_attr_tbl.FIRST;
6518     WHILE l_attr_index IS NOT NULL LOOP
6519 
6520       FND_LOG.String
6521          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6522          , 'row_identifier             	:' || p_ext_attr_tbl(l_attr_index).row_identifier
6523         );
6524 
6525       FND_LOG.String
6526          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6527          , 'attr_name             	:' || p_ext_attr_tbl(l_attr_index).ATTR_NAME
6528         );
6529 
6530       FND_LOG.String
6531          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6532          , 'attr_value_str             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_STR
6533         );
6534 
6535       FND_LOG.String
6536          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6537          , 'attr_value_num             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_NUM
6538         );
6539 
6540       FND_LOG.String
6541          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6542          , 'attr_value_date             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_DATE
6543         );
6544 
6545       FND_LOG.String
6546          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6547          , 'attr_value_display             	:' || p_ext_attr_tbl(l_attr_index).ATTR_DISP_VALUE
6548         );
6549 
6550       FND_LOG.String
6551          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6552          , 'attr_uom		            	:' || p_ext_attr_tbl(l_attr_index).ATTR_UNIT_OF_MEASURE
6553         );
6554 
6555       FND_LOG.String
6556          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6557          , 'attr_row_id		            	:' || p_ext_attr_tbl(l_attr_index).USER_ROW_IDENTIFIER
6558         );
6559 
6560     END LOOP;
6561 
6562   END IF;
6563 END;
6564 
6565 
6566 -- -----------------------------------------------------------------------------
6567 -- Procedure Name : Log_EXT_PVT_Parameters
6568 -- Parameters     :
6569 -- IN             :
6570 -- OUT            :
6571 --
6572 -- Description    : Procedure to LOG the in parameters of PVT SR Ext Attrs procedures
6573 --
6574 --
6575 -- Modification History:
6576 -- Date     Name     Desc
6577 -- -------- -------- -----------------------------------------------------------
6578 -- 11/08/05 mviswana   Created
6579 -- -----------------------------------------------------------------------------
6580 PROCEDURE Log_EXT_PVT_Parameters (
6581           p_ext_attr_grp_tbl   IN CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
6582          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE )
6583 IS
6584 
6585   l_api_name	       CONSTANT	VARCHAR2(30)	:= 'Process_SR_Ext_Attrs';
6586   l_api_name_full      CONSTANT	VARCHAR2(61)	:= G_PKG_NAME||'.'||l_api_name;
6587   l_log_module         CONSTANT VARCHAR2(255)   := 'cs.plsql.' || l_api_name_full || '.';
6588   l_attr_grp_index     BINARY_INTEGER;
6589   l_attr_index         BINARY_INTEGER;
6590 
6591 BEGIN
6592 
6593   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
6594 
6595     -- For Attribute Group
6596     l_attr_grp_index := p_ext_attr_grp_tbl.FIRST;
6597     WHILE l_attr_grp_index IS NOT NULL LOOP
6598 
6599       FND_LOG.String
6600         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6601          , 'row_identifier             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).row_identifier
6602         );
6603 
6604       FND_LOG.String
6605         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6606          , 'pk_column_1             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_1
6607         );
6608 
6609       FND_LOG.String
6610         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6611          , 'pk_column_2             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_2
6612         );
6613 
6614       FND_LOG.String
6615         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6616          , 'pk_column_3             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_3
6617         );
6618 
6619       FND_LOG.String
6620         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6621          , 'pk_column_4             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_4
6622         );
6623 
6624       FND_LOG.String
6625         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6626          , 'pk_column_5             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_5
6627         );
6628 
6629       FND_LOG.String
6630         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6631          , 'context             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).context
6632         );
6633 
6634       FND_LOG.String
6635         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6636          , 'object_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).object_name
6637         );
6638 
6639       FND_LOG.String
6640         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6641          , 'attr_group_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_id
6642         );
6643 
6644       FND_LOG.String
6645          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6646          , 'attr_group_app_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_app_id
6647         );
6648 
6649       FND_LOG.String
6650          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6651          , 'attr_group_type             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_type
6652         );
6653 
6654       FND_LOG.String
6655          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6656          , 'attr_group_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_name
6657         );
6658 
6659       FND_LOG.String
6660          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6661          , 'attr_group_disp_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_disp_name
6662         );
6663 
6664       FND_LOG.String
6665          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6666          , 'mapping_req             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).mapping_req
6667         );
6668 
6669       FND_LOG.String
6670          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6671          , 'operation             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).operation
6672         );
6673       l_attr_grp_index := p_ext_attr_grp_tbl.NEXT(l_attr_grp_index);
6674     END LOOP;
6675 
6676     -- For Attribute
6677     l_attr_index := p_ext_attr_tbl.FIRST;
6678     WHILE l_attr_index IS NOT NULL LOOP
6679 
6680       FND_LOG.String
6681          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6682          , 'row_identifier             	:' || p_ext_attr_tbl(l_attr_index).row_identifier
6683         );
6684 
6685       FND_LOG.String
6686          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6687          , 'column_name             	:' || p_ext_attr_tbl(l_attr_index).column_name
6688         );
6689 
6690       FND_LOG.String
6691          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6692          , 'attr_name             	:' || p_ext_attr_tbl(l_attr_index).attr_name
6693         );
6694 
6695       FND_LOG.String
6696          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6697          , 'attr_disp_name             	:' || p_ext_attr_tbl(l_attr_index).attr_disp_name
6698         );
6699 
6700 
6701       FND_LOG.String
6702          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6703          , 'attr_value_str             	:' || p_ext_attr_tbl(l_attr_index).attr_value_str
6704         );
6705 
6706       FND_LOG.String
6707          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6708          , 'attr_value_num             	:' || p_ext_attr_tbl(l_attr_index).attr_value_num
6709         );
6710 
6711 
6712       FND_LOG.String
6713          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6714          , 'attr_value_date             	:' || p_ext_attr_tbl(l_attr_index).attr_value_date
6715         );
6716 
6717 
6718       FND_LOG.String
6719          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6720          , 'attr_value_display             	:' || p_ext_attr_tbl(l_attr_index).attr_value_display
6721         );
6722 
6723 
6724       FND_LOG.String
6725          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6726          , 'attr_unit_of_measure             	:' || p_ext_attr_tbl(l_attr_index).attr_unit_of_measure
6727         );
6728 
6729       l_attr_index := p_ext_attr_tbl.NEXT(l_attr_index);
6730 
6731     END LOOP;
6732   END IF;
6733 
6734 
6735 END;
6736 -- -----------------------------------------------------------------------------
6737 -- Procedure Name : delete_old_context
6738 -- Parameter      :
6739 -- IN             : p_pk_column_1        primary key column # 1
6740 --                : p_context            Extensible attribute context. This is
6741 --                                       value of context being overwritten
6742 -- OUT            : x_return_status      Indicates success or error condition
6743 --                                       encountered by the procedure
6744 --                : x_msg_data           Error message
6745 --                : x_msg_count          Number of error messages
6746 --                : x_errorcode          Error code returned by PLM API
6747 --                : x_failed_row_id_list List of row identifers that failed
6748 --                  PLM processing
6749 -- Description    : This procedure takes incident id and Extensible attribute
6750 --                  context and deletes extensible attribute record
6751 --
6752 -- Modification History
6753 -- Date     Name     Description
6754 -- -------- -------- -----------------------------------------------------------
6755 -- 09/29/05 smisra   Created
6756 -- -------- -------- -----------------------------------------------------------
6757 PROCEDURE delete_old_context
6758 ( p_pk_column_1         IN         NUMBER
6759 , p_context             IN         NUMBER
6760 , x_failed_row_id_list  OUT NOCOPY VARCHAR2
6761 , x_return_status       OUT NOCOPY VARCHAR2
6762 , x_errorcode           OUT NOCOPY NUMBER
6763 , x_msg_count           OUT NOCOPY NUMBER
6764 , x_msg_data            OUT NOCOPY VARCHAR2
6765 ) IS
6766 --
6767 l_pk_name_value_pair          EGO_COL_NAME_VALUE_PAIR_ARRAY;
6768 l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
6769 l_user_privileges_on_object   EGO_VARCHAR_TBL_TYPE;
6770 l_user_attr_data_table        EGO_USER_ATTR_DATA_TABLE;
6771 l_user_attr_row_table         EGO_USER_ATTR_ROW_TABLE;
6772 l_count                       NUMBER;
6773 --
6774 CURSOR c_get_old_context_value
6775 ( p_incident_id IN NUMBER
6776 , p_context     IN NUMBER
6777 ) IS
6778 SELECT
6779  attr_group_id
6780 FROM   cs_incidents_ext
6781 WHERE incident_id = p_incident_id
6782   AND context     = p_context
6783 ;
6784 --
6785 BEGIN
6786   l_count := 0;
6787 
6788   --DBMS_OUTPUT.PUT_LINE('Delete Old Context');
6789 
6790   --get all the values in the database for the old context
6791   FOR v_get_old_context_value IN c_get_old_context_value
6792                                  ( p_pk_column_1
6793                                  , p_context
6794                                  )
6795   LOOP
6796     --DBMS_OUTPUT.PUT_LINE('v_get_old_context_value.attr_group_id'||v_get_old_context_value.attr_group_id);
6797 
6798     l_count := l_count + 1;
6799     --set the primary key identifiers to pass to PLM
6800     --populating the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing primary key to PLM
6801     l_pk_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY
6802                             ( EGO_COL_NAME_VALUE_PAIR_OBJ
6803                               ( 'INCIDENT_ID'
6804                               , p_pk_column_1
6805                               )
6806                             );
6807 
6808     --set the context to pass to PLM only SR_TYPE_ID
6809     --populate the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing the context.
6810     l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
6811                                      ( EGO_COL_NAME_VALUE_PAIR_OBJ
6812                                        ( 'CONTEXT'
6813                                        , p_context
6814                                        )
6815                                      );
6816 
6817           --Instanciate a new EGO_USER_ATTR_ROW_OBJ (only once)
6818     IF l_user_attr_row_table IS NULL
6819     THEN
6820       l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
6821     END IF;
6822 
6823     --Extend the object to add value it it
6824     l_user_attr_row_table.EXTEND();
6825 /*
6826     l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ
6827                                                          ( l_count
6828                                                          , v_get_old_context_value.attr_group_id
6829                                                          , NULL
6830                                                          , NULL
6831                                                          , NULL
6832                                                          , 'GENERIC_LEVEL'
6833                                                          , NULL
6834                                                          , NULL
6835                                                          , EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE
6836                                                          );
6837   */
6838 
6839 l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Row_Object(l_count, v_get_old_context_value.attr_group_id,
6840                                                 NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
6841   END LOOP;
6842   -- Instantiate the attribute table once
6843   l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
6844 
6845   --DBMS_OUTPUT.PUT_LINE('Calling to delete data, user attr row table count:'|| l_user_attr_row_table.count);
6846 
6847   --Call PLM for deleting the old data
6848   EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data
6849   ( p_api_version                   =>  1
6850   , p_object_name                   =>  'CS_SERVICE_REQUEST'
6851   , p_attributes_row_table          =>  l_user_attr_row_table
6852   , p_attributes_data_table         =>  l_user_attr_data_table
6853   , p_pk_column_name_value_pairs    =>  l_pk_name_value_pair
6854   , p_class_code_name_value_pairs   =>  l_class_code_name_value_pairs
6855   , p_user_privileges_on_object     =>  l_user_privileges_on_object
6856   , p_entity_id                     =>  NULL
6857   , p_entity_index                  =>  NULL
6858   , p_entity_code                   =>  NULL
6859   , p_debug_level                   =>  3
6860   , p_init_error_handler            =>  FND_API.G_TRUE
6861   , p_write_to_concurrent_log       =>  FND_API.G_TRUE
6862   , p_init_fnd_msg_list             =>  FND_API.G_FALSE
6863   , p_log_errors                    =>  FND_API.G_TRUE
6864   , p_add_errors_to_fnd_stack       =>  FND_API.G_TRUE
6865   , p_commit                        =>  FND_API.G_FALSE
6866   , x_failed_row_id_list            =>  x_failed_row_id_list
6867   , x_return_status                 =>  x_return_status
6868   , x_errorcode                     =>  x_errorcode
6869   , x_msg_count                     =>  x_msg_count
6870   , x_msg_data                      =>  x_msg_data
6871   );
6872 
6873 --
6874 EXCEPTION
6875   WHEN OTHERS THEN
6876       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6877 END;
6878 
6879 
6880 
6881 
6882 -------------------------------------------------------------------------------
6883 -- Procedure Name : Populate_Ext_Attr_Audit_Tbl
6884 -- Parameters     :
6885 -- IN             : P_EXTENSION_ID
6886 -- OUT            : X_EXT_ATTRS_TBL
6887 --
6888 -- Description : Procedure to populate ext. attr. audit table structure for a given extension_id.
6889 --
6890 -- Modification History:
6891 -- Date     Name     Desc
6892 -------- -------- --------------------------------------------------------------
6893 -- 11/21/2005   spusegao Created
6894 --------------------------------------------------------------------------------
6895 PROCEDURE Populate_Ext_Attr_Audit_Tbl
6896 ( P_EXTENSION_ID    IN        NUMBER
6897 , X_EXT_ATTRS_TBL  OUT NOCOPY Ext_Attr_Audit_Tbl_Type
6898 , X_RETURN_STATUS  OUT NOCOPY VARCHAR2
6899 , X_MSG_COUNT      OUT NOCOPY NUMBER
6900 , X_MSG_DATA       OUT NOCOPY VARCHAR2) IS
6901 
6902 -- Cursor to get the ext.attrs. details for the passed extension_id.
6903 
6904    CURSOR c_get_ext_attrs IS
6905    SELECT *
6906      FROM cs_sr_contacts_EXT
6907     WHERE extension_Id = p_extension_id;
6908 
6909    i   NUMBER := 0 ;
6910 
6911 BEGIN
6912     X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
6913 
6914     -- Get all the ext attrs records for passed extension_id
6915 
6916        FOR c_get_ext_attrs_rec IN c_get_ext_attrs
6917            LOOP
6918             i := 1 ;
6919 
6920             X_EXT_ATTRS_TBL(i).EXTENSION_ID             := c_get_ext_attrs_rec.EXTENSION_ID   ;
6921             X_EXT_ATTRS_TBL(i).PK_COLUMN_1              := c_get_ext_attrs_rec.INCIDENT_ID    ;
6922             X_EXT_ATTRS_TBL(i).PK_COLUMN_2              := c_get_ext_attrs_rec.PARTY_ID       ;
6923             X_EXT_ATTRS_TBL(i).PK_COLUMN_3              := c_get_ext_attrs_rec.CONTACT_TYPE   ;
6924             X_EXT_ATTRS_TBL(i).PK_COLUMN_4              := c_get_ext_attrs_rec.PARTY_ROLE_CODE;
6925             X_EXT_ATTRS_TBL(i).CONTEXT                  := c_get_ext_attrs_rec.CONTEXT        ;
6926             X_EXT_ATTRS_TBL(i).ATTR_GROUP_ID            := c_get_ext_attrs_rec.ATTR_GROUP_ID  ;
6927             X_EXT_ATTRS_TBL(i).C_EXT_ATTR1              := c_get_ext_attrs_rec.C_EXT_ATTR1   ;
6928             X_EXT_ATTRS_TBL(i).C_EXT_ATTR2              := c_get_ext_attrs_rec.C_EXT_ATTR2   ;
6929             X_EXT_ATTRS_TBL(i).C_EXT_ATTR3              := c_get_ext_attrs_rec.C_EXT_ATTR3   ;
6930             X_EXT_ATTRS_TBL(i).C_EXT_ATTR4              := c_get_ext_attrs_rec.C_EXT_ATTR4   ;
6931             X_EXT_ATTRS_TBL(i).C_EXT_ATTR5              := c_get_ext_attrs_rec.C_EXT_ATTR5   ;
6932             X_EXT_ATTRS_TBL(i).C_EXT_ATTR6              := c_get_ext_attrs_rec.C_EXT_ATTR6   ;
6933             X_EXT_ATTRS_TBL(i).C_EXT_ATTR7              := c_get_ext_attrs_rec.C_EXT_ATTR7   ;
6934             X_EXT_ATTRS_TBL(i).C_EXT_ATTR8              := c_get_ext_attrs_rec.C_EXT_ATTR8   ;
6935             X_EXT_ATTRS_TBL(i).C_EXT_ATTR9              := c_get_ext_attrs_rec.C_EXT_ATTR9   ;
6936             X_EXT_ATTRS_TBL(i).C_EXT_ATTR10             := c_get_ext_attrs_rec.C_EXT_ATTR10  ;
6937             X_EXT_ATTRS_TBL(i).C_EXT_ATTR11             := c_get_ext_attrs_rec.C_EXT_ATTR11   ;
6938             X_EXT_ATTRS_TBL(i).C_EXT_ATTR12             := c_get_ext_attrs_rec.C_EXT_ATTR12   ;
6939             X_EXT_ATTRS_TBL(i).C_EXT_ATTR13             := c_get_ext_attrs_rec.C_EXT_ATTR13   ;
6940             X_EXT_ATTRS_TBL(i).C_EXT_ATTR14             := c_get_ext_attrs_rec.C_EXT_ATTR14   ;
6941             X_EXT_ATTRS_TBL(i).C_EXT_ATTR15             := c_get_ext_attrs_rec.C_EXT_ATTR15   ;
6942             X_EXT_ATTRS_TBL(i).C_EXT_ATTR16             := c_get_ext_attrs_rec.C_EXT_ATTR16   ;
6943             X_EXT_ATTRS_TBL(i).C_EXT_ATTR17             := c_get_ext_attrs_rec.C_EXT_ATTR17   ;
6944             X_EXT_ATTRS_TBL(i).C_EXT_ATTR18             := c_get_ext_attrs_rec.C_EXT_ATTR18   ;
6945             X_EXT_ATTRS_TBL(i).C_EXT_ATTR19             := c_get_ext_attrs_rec.C_EXT_ATTR19   ;
6946             X_EXT_ATTRS_TBL(i).C_EXT_ATTR20             := c_get_ext_attrs_rec.C_EXT_ATTR20   ;
6947             X_EXT_ATTRS_TBL(i).C_EXT_ATTR21             := c_get_ext_attrs_rec.C_EXT_ATTR21   ;
6948             X_EXT_ATTRS_TBL(i).C_EXT_ATTR22             := c_get_ext_attrs_rec.C_EXT_ATTR22   ;
6949             X_EXT_ATTRS_TBL(i).C_EXT_ATTR23             := c_get_ext_attrs_rec.C_EXT_ATTR23   ;
6950             X_EXT_ATTRS_TBL(i).C_EXT_ATTR24             := c_get_ext_attrs_rec.C_EXT_ATTR24   ;
6951             X_EXT_ATTRS_TBL(i).C_EXT_ATTR25             := c_get_ext_attrs_rec.C_EXT_ATTR25   ;
6952             X_EXT_ATTRS_TBL(i).C_EXT_ATTR26             := c_get_ext_attrs_rec.C_EXT_ATTR26   ;
6953             X_EXT_ATTRS_TBL(i).C_EXT_ATTR27             := c_get_ext_attrs_rec.C_EXT_ATTR27   ;
6954             X_EXT_ATTRS_TBL(i).C_EXT_ATTR28             := c_get_ext_attrs_rec.C_EXT_ATTR28   ;
6955             X_EXT_ATTRS_TBL(i).C_EXT_ATTR29             := c_get_ext_attrs_rec.C_EXT_ATTR29   ;
6956             X_EXT_ATTRS_TBL(i).C_EXT_ATTR30             := c_get_ext_attrs_rec.C_EXT_ATTR30   ;
6957             X_EXT_ATTRS_TBL(i).C_EXT_ATTR31             := c_get_ext_attrs_rec.C_EXT_ATTR31   ;
6958             X_EXT_ATTRS_TBL(i).C_EXT_ATTR32             := c_get_ext_attrs_rec.C_EXT_ATTR32   ;
6959             X_EXT_ATTRS_TBL(i).C_EXT_ATTR33             := c_get_ext_attrs_rec.C_EXT_ATTR33   ;
6960             X_EXT_ATTRS_TBL(i).C_EXT_ATTR34             := c_get_ext_attrs_rec.C_EXT_ATTR34   ;
6961             X_EXT_ATTRS_TBL(i).C_EXT_ATTR35             := c_get_ext_attrs_rec.C_EXT_ATTR35   ;
6962             X_EXT_ATTRS_TBL(i).C_EXT_ATTR36             := c_get_ext_attrs_rec.C_EXT_ATTR36   ;
6963             X_EXT_ATTRS_TBL(i).C_EXT_ATTR37             := c_get_ext_attrs_rec.C_EXT_ATTR37   ;
6964             X_EXT_ATTRS_TBL(i).C_EXT_ATTR38             := c_get_ext_attrs_rec.C_EXT_ATTR38   ;
6965             X_EXT_ATTRS_TBL(i).C_EXT_ATTR39             := c_get_ext_attrs_rec.C_EXT_ATTR39   ;
6966             X_EXT_ATTRS_TBL(i).C_EXT_ATTR40             := c_get_ext_attrs_rec.C_EXT_ATTR40   ;
6967             X_EXT_ATTRS_TBL(i).C_EXT_ATTR41             := c_get_ext_attrs_rec.C_EXT_ATTR41   ;
6968             X_EXT_ATTRS_TBL(i).C_EXT_ATTR42             := c_get_ext_attrs_rec.C_EXT_ATTR42   ;
6969             X_EXT_ATTRS_TBL(i).C_EXT_ATTR43             := c_get_ext_attrs_rec.C_EXT_ATTR43   ;
6970             X_EXT_ATTRS_TBL(i).C_EXT_ATTR44             := c_get_ext_attrs_rec.C_EXT_ATTR44   ;
6971             X_EXT_ATTRS_TBL(i).C_EXT_ATTR45             := c_get_ext_attrs_rec.C_EXT_ATTR45   ;
6972             X_EXT_ATTRS_TBL(i).C_EXT_ATTR46             := c_get_ext_attrs_rec.C_EXT_ATTR46   ;
6973             X_EXT_ATTRS_TBL(i).C_EXT_ATTR47             := c_get_ext_attrs_rec.C_EXT_ATTR47   ;
6974             X_EXT_ATTRS_TBL(i).C_EXT_ATTR48             := c_get_ext_attrs_rec.C_EXT_ATTR48   ;
6975             X_EXT_ATTRS_TBL(i).C_EXT_ATTR49             := c_get_ext_attrs_rec.C_EXT_ATTR49   ;
6976             X_EXT_ATTRS_TBL(i).C_EXT_ATTR50             := c_get_ext_attrs_rec.C_EXT_ATTR50   ;
6977             X_EXT_ATTRS_TBL(i).N_EXT_ATTR1              := c_get_ext_attrs_rec.N_EXT_ATTR1    ;
6978             X_EXT_ATTRS_TBL(i).N_EXT_ATTR2              := c_get_ext_attrs_rec.N_EXT_ATTR2    ;
6979             X_EXT_ATTRS_TBL(i).N_EXT_ATTR3              := c_get_ext_attrs_rec.N_EXT_ATTR3    ;
6980             X_EXT_ATTRS_TBL(i).N_EXT_ATTR4              := c_get_ext_attrs_rec.N_EXT_ATTR4    ;
6981             X_EXT_ATTRS_TBL(i).N_EXT_ATTR5              := c_get_ext_attrs_rec.N_EXT_ATTR5    ;
6982             X_EXT_ATTRS_TBL(i).N_EXT_ATTR6              := c_get_ext_attrs_rec.N_EXT_ATTR6    ;
6983             X_EXT_ATTRS_TBL(i).N_EXT_ATTR7              := c_get_ext_attrs_rec.N_EXT_ATTR7    ;
6984             X_EXT_ATTRS_TBL(i).N_EXT_ATTR8              := c_get_ext_attrs_rec.N_EXT_ATTR8    ;
6985             X_EXT_ATTRS_TBL(i).N_EXT_ATTR9              := c_get_ext_attrs_rec.N_EXT_ATTR9    ;
6986             X_EXT_ATTRS_TBL(i).N_EXT_ATTR10             := c_get_ext_attrs_rec.N_EXT_ATTR10   ;
6987             X_EXT_ATTRS_TBL(i).N_EXT_ATTR11             := c_get_ext_attrs_rec.N_EXT_ATTR11   ;
6988             X_EXT_ATTRS_TBL(i).N_EXT_ATTR12             := c_get_ext_attrs_rec.N_EXT_ATTR12   ;
6989             X_EXT_ATTRS_TBL(i).N_EXT_ATTR13             := c_get_ext_attrs_rec.N_EXT_ATTR13   ;
6990             X_EXT_ATTRS_TBL(i).N_EXT_ATTR14             := c_get_ext_attrs_rec.N_EXT_ATTR14   ;
6991             X_EXT_ATTRS_TBL(i).N_EXT_ATTR15             := c_get_ext_attrs_rec.N_EXT_ATTR15   ;
6992             X_EXT_ATTRS_TBL(i).N_EXT_ATTR16             := c_get_ext_attrs_rec.N_EXT_ATTR16   ;
6993             X_EXT_ATTRS_TBL(i).N_EXT_ATTR17             := c_get_ext_attrs_rec.N_EXT_ATTR17   ;
6994             X_EXT_ATTRS_TBL(i).N_EXT_ATTR18             := c_get_ext_attrs_rec.N_EXT_ATTR18   ;
6995             X_EXT_ATTRS_TBL(i).N_EXT_ATTR19             := c_get_ext_attrs_rec.N_EXT_ATTR19   ;
6996             X_EXT_ATTRS_TBL(i).N_EXT_ATTR20             := c_get_ext_attrs_rec.N_EXT_ATTR20   ;
6997             X_EXT_ATTRS_TBL(i).N_EXT_ATTR21             := c_get_ext_attrs_rec.N_EXT_ATTR21   ;
6998             X_EXT_ATTRS_TBL(i).N_EXT_ATTR22             := c_get_ext_attrs_rec.N_EXT_ATTR22   ;
6999             X_EXT_ATTRS_TBL(i).N_EXT_ATTR23             := c_get_ext_attrs_rec.N_EXT_ATTR23   ;
7000             X_EXT_ATTRS_TBL(i).N_EXT_ATTR24             := c_get_ext_attrs_rec.N_EXT_ATTR24   ;
7001             X_EXT_ATTRS_TBL(i).N_EXT_ATTR25             := c_get_ext_attrs_rec.N_EXT_ATTR25   ;
7002             X_EXT_ATTRS_TBL(i).D_EXT_ATTR1              := c_get_ext_attrs_rec.D_EXT_ATTR1    ;
7003             X_EXT_ATTRS_TBL(i).D_EXT_ATTR2              := c_get_ext_attrs_rec.D_EXT_ATTR2    ;
7004             X_EXT_ATTRS_TBL(i).D_EXT_ATTR3              := c_get_ext_attrs_rec.D_EXT_ATTR3    ;
7005             X_EXT_ATTRS_TBL(i).D_EXT_ATTR4              := c_get_ext_attrs_rec.D_EXT_ATTR4    ;
7006             X_EXT_ATTRS_TBL(i).D_EXT_ATTR5              := c_get_ext_attrs_rec.D_EXT_ATTR5    ;
7007             X_EXT_ATTRS_TBL(i).D_EXT_ATTR6              := c_get_ext_attrs_rec.D_EXT_ATTR6    ;
7008             X_EXT_ATTRS_TBL(i).D_EXT_ATTR7              := c_get_ext_attrs_rec.D_EXT_ATTR7    ;
7009             X_EXT_ATTRS_TBL(i).D_EXT_ATTR8              := c_get_ext_attrs_rec.D_EXT_ATTR8    ;
7010             X_EXT_ATTRS_TBL(i).D_EXT_ATTR9              := c_get_ext_attrs_rec.D_EXT_ATTR9    ;
7011             X_EXT_ATTRS_TBL(i).D_EXT_ATTR10             := c_get_ext_attrs_rec.D_EXT_ATTR10   ;
7012             X_EXT_ATTRS_TBL(i).D_EXT_ATTR11             := c_get_ext_attrs_rec.D_EXT_ATTR11   ;
7013             X_EXT_ATTRS_TBL(i).D_EXT_ATTR12             := c_get_ext_attrs_rec.D_EXT_ATTR12   ;
7014             X_EXT_ATTRS_TBL(i).D_EXT_ATTR13             := c_get_ext_attrs_rec.D_EXT_ATTR13   ;
7015             X_EXT_ATTRS_TBL(i).D_EXT_ATTR14             := c_get_ext_attrs_rec.D_EXT_ATTR14   ;
7016             X_EXT_ATTRS_TBL(i).D_EXT_ATTR15             := c_get_ext_attrs_rec.D_EXT_ATTR15   ;
7017             X_EXT_ATTRS_TBL(i).D_EXT_ATTR16             := c_get_ext_attrs_rec.D_EXT_ATTR16   ;
7018             X_EXT_ATTRS_TBL(i).D_EXT_ATTR17             := c_get_ext_attrs_rec.D_EXT_ATTR17   ;
7019             X_EXT_ATTRS_TBL(i).D_EXT_ATTR18             := c_get_ext_attrs_rec.D_EXT_ATTR18   ;
7020             X_EXT_ATTRS_TBL(i).D_EXT_ATTR19             := c_get_ext_attrs_rec.D_EXT_ATTR19   ;
7021             X_EXT_ATTRS_TBL(i).D_EXT_ATTR20             := c_get_ext_attrs_rec.D_EXT_ATTR20   ;
7022             X_EXT_ATTRS_TBL(i).D_EXT_ATTR21             := c_get_ext_attrs_rec.D_EXT_ATTR21   ;
7023             X_EXT_ATTRS_TBL(i).D_EXT_ATTR22             := c_get_ext_attrs_rec.D_EXT_ATTR22   ;
7024             X_EXT_ATTRS_TBL(i).D_EXT_ATTR23             := c_get_ext_attrs_rec.D_EXT_ATTR23   ;
7025             X_EXT_ATTRS_TBL(i).D_EXT_ATTR24             := c_get_ext_attrs_rec.D_EXT_ATTR24   ;
7026             X_EXT_ATTRS_TBL(i).D_EXT_ATTR25             := c_get_ext_attrs_rec.D_EXT_ATTR25   ;
7027             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR1            := c_get_ext_attrs_rec.UOM_EXT_ATTR1  ;
7028             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR2            := c_get_ext_attrs_rec.UOM_EXT_ATTR2  ;
7029             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR3            := c_get_ext_attrs_rec.UOM_EXT_ATTR3  ;
7030             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR4            := c_get_ext_attrs_rec.UOM_EXT_ATTR4  ;
7031             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR5            := c_get_ext_attrs_rec.UOM_EXT_ATTR5  ;
7032             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR6            := c_get_ext_attrs_rec.UOM_EXT_ATTR6  ;
7033             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR7            := c_get_ext_attrs_rec.UOM_EXT_ATTR7  ;
7034             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR8            := c_get_ext_attrs_rec.UOM_EXT_ATTR8  ;
7035             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR9            := c_get_ext_attrs_rec.UOM_EXT_ATTR9  ;
7036             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR10           := c_get_ext_attrs_rec.UOM_EXT_ATTR10 ;
7037             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR11           := c_get_ext_attrs_rec.UOM_EXT_ATTR11 ;
7038             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR12           := c_get_ext_attrs_rec.UOM_EXT_ATTR12 ;
7039             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR13           := c_get_ext_attrs_rec.UOM_EXT_ATTR13 ;
7040             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR14           := c_get_ext_attrs_rec.UOM_EXT_ATTR14 ;
7041             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR15           := c_get_ext_attrs_rec.UOM_EXT_ATTR15 ;
7042             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR16           := c_get_ext_attrs_rec.UOM_EXT_ATTR16 ;
7043             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR17           := c_get_ext_attrs_rec.UOM_EXT_ATTR17 ;
7044             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR18           := c_get_ext_attrs_rec.UOM_EXT_ATTR18 ;
7045             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR19           := c_get_ext_attrs_rec.UOM_EXT_ATTR19 ;
7046             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR20           := c_get_ext_attrs_rec.UOM_EXT_ATTR20 ;
7047             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR21           := c_get_ext_attrs_rec.UOM_EXT_ATTR21 ;
7048             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR22           := c_get_ext_attrs_rec.UOM_EXT_ATTR22 ;
7049             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR23           := c_get_ext_attrs_rec.UOM_EXT_ATTR23 ;
7050             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR24           := c_get_ext_attrs_rec.UOM_EXT_ATTR24 ;
7051             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR25           := c_get_ext_attrs_rec.UOM_EXT_ATTR25 ;
7052 
7053             i := i + 1 ;
7054 
7055            END LOOP;
7056 
7057 EXCEPTION
7058      WHEN no_data_found THEN
7059           CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg
7060               (p_token_an     => 'Populate_Ext_Attr_Audit_Tbl',
7061 	       p_token_v      => TO_CHAR(P_EXTENSION_ID),
7062 	       p_token_p      => 'P_EXTENSION_ID' ,
7063                p_table_name   => 'CS_SR_CONTACTX_EXT',
7064                p_column_name  => 'EXTENSION_ID');
7065 
7066           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7067 
7068      WHEN OTHERS THEN
7069           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7070 
7071 END Populate_Ext_Attr_Audit_Tbl;
7072 
7073 END CS_SR_EXTATTRIBUTES_PVT;