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.12010000.6 2010/06/16 06:07:24 sanjrao 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 -- Fix for bug 8714809 by selecting only unique record from extensible table to
3924 -- avoid duplicacy when multi row records are created.  Sanjana Rao, 05-aug-2009
3925 
3926 cursor c_get_sr_ext_attr(p_incident_id IN NUMBER) IS
3927 SELECT distinct attr_group_id
3928   FROM cs_incidents_ext
3929  WHERE incident_id = p_incident_id;
3930 
3931 
3932 cursor c_get_pr_ext_attr(p_incident_id IN NUMBER) IS
3933 SELECT distinct attr_group_id,party_id,contact_type,party_role_code
3934   FROM cs_sr_contacts_ext
3935  WHERE incident_id = p_incident_id;
3936 
3937 CURSOR c_get_attr(p_application_id IN NUMBER
3938                  ,p_attr_group_type IN VARCHAR2
3939                  ,p_attr_group_name IN VARCHAR2)IS
3940   SELECT  APPLICATION_ID,
3941           ATTR_GROUP_TYPE,
3942           ATTR_GROUP_NAME,
3943           attr_name,
3944           attr_display_name,
3945           database_column
3946     FROM  ego_attrs_v
3947    WHERE application_id  = p_application_id
3948      AND attr_group_type = p_attr_group_type
3949      AND attr_group_name = p_attr_group_name
3950      AND enabled_flag = 'Y'
3951      order by sequence;
3952 
3953 Cursor c_get_attr_group_disp_name(p_attr_group_id IN NUMBER) IS
3954     select ATTR_GROUP_DISP_NAME
3955       from ego_attr_groups_v
3956      where attr_group_id = p_attr_group_id;
3957 
3958 Cursor c_get_sr_pks(p_ext_id IN NUMBER)IS
3959   SELECT incident_id, context
3960     FROM cs_incidents_ext
3961    WHERE extension_id = p_ext_id;
3962 
3963 Cursor c_get_pr_pks(p_ext_id IN NUMBER)IS
3964   SELECT incident_id, party_id, contact_type, party_role_code, context
3965     FROM cs_sr_contacts_ext
3966    WHERE extension_id = p_ext_id;
3967 
3968 
3969 l_pk_col_name_value_pair        EGO_COL_NAME_VALUE_PAIR_ARRAY;
3970 l_attr_group_request_table      EGO_ATTR_GROUP_REQUEST_TABLE;
3971 l_attributes_row_table          EGO_USER_ATTR_ROW_TABLE;
3972 l_attributes_data_table         EGO_USER_ATTR_DATA_TABLE;
3973 l_user_privileges_on_object     EGO_VARCHAR_TBL_TYPE;
3974 l_return_status                 VARCHAR2(1);
3975 l_errorcode                     NUMBER;
3976 l_msg_count                     NUMBER;
3977 l_msg_data                      VARCHAR2(4000);
3978 l_msg                           VARCHAR2(4000);
3979 l_errm                          VARCHAR2(4000);
3980 l_attr                          VARCHAR2(1000);
3981 
3982 l_application_id NUMBER;
3983 l_attr_group_type VARCHAR2(30);
3984 l_attr_group_name VARCHAR2(80);
3985 l_first boolean;
3986 l_internal_name_str VARCHAR2(2000) := '';
3987 l_count NUMBER := 0;
3988 l_count_1 NUMBER := 0;
3989 
3990 
3991 l_api_version   constant number       := 1.0;
3992 l_api_name      constant varchar2(30) := 'Get_SR_Ext_Attrs';
3993 l_api_name_full constant varchar2(61) := g_pkg_name || '.' || l_api_name;
3994 l_log_module    constant varchar2(255) := 'cs.plsql.' || l_api_name_full || '.';
3995 
3996 l_incident_id NUMBER;
3997 l_party_id NUMBER;
3998 l_contact_type VARCHAR2(30);
3999 l_party_role_code VARCHAR2(30);
4000 l_context NUMBER;
4001 l_pr_context VARCHAR2(30);
4002 
4003 l_record_exists VARCHAR2(1) := 'N';
4004 --
4005 --This table will hold the extended attributes information
4006 --
4007 TYPE EXT_ATTRIBUTE_REC IS RECORD
4008 ( APPLICATION_ID    NUMBER
4009  ,ATTR_GROUP_TYPE   VARCHAR2(30)
4010  ,ATTR_GROUP_NAME   VARCHAR2(30)
4011  ,ATTR_DISPLAY_NAME VARCHAR2(80)
4012  ,ATTR_NAME         VARCHAR2(30)
4013  ,DATABASE_COLUMN   VARCHAR2(30));
4014 
4015 TYPE EXT_ATTRIBUTE_TBL IS TABLE OF EXT_ATTRIBUTE_REC INDEX BY BINARY_INTEGER;
4016 l_ext_attr_tbl EXT_ATTRIBUTE_TBL;
4017 
4018 
4019 BEGIN
4020 
4021 SAVEPOINT Get_SR_Ext_Attrs;
4022 
4023 --DBMS_OUTPUT.PUT_LINE('In Get_SR API');
4024 
4025 -- Standard call to check for call compatibility.
4026 IF NOT FND_API.Compatible_API_Call (l_api_version,
4027                                     p_api_version,
4028                                     l_api_name,
4029                                     G_PKG_NAME) THEN
4030   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4031 END IF;
4032 
4033 -- Initialize message list if p_init_msg_list is set to TRUE.
4034 IF FND_API.to_Boolean(p_init_msg_list) THEN
4035   FND_MSG_PUB.initialize;
4036 END IF;
4037 
4038 -- Initialize API return status to SUCCESS
4039 x_return_status := FND_API.G_RET_STS_SUCCESS;
4040 
4041 ---------------------- FND Logging -----------------------------------
4042   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
4043   THEN
4044     FND_LOG.String
4045     ( FND_LOG.level_procedure , L_LOG_MODULE || 'start'
4046     , 'Inside ' || L_API_NAME_FULL || ', called with parameters below:'
4047     );
4048     FND_LOG.String
4049     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4050     , 'p_api_version:' || p_api_version
4051     );
4052     FND_LOG.String
4053     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4054     , 'p_init_msg_list:' || p_init_msg_list
4055     );
4056     FND_LOG.String
4057     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4058     , 'p_commit:' || p_commit
4059     );
4060 
4061     FND_LOG.String
4062     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4063     , 'p_incident_id:' || p_commit
4064     );
4065 
4066     FND_LOG.String
4067     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4068     , 'p_incident_id:' || p_incident_id
4069     );
4070 
4071     FND_LOG.String
4072     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4073     , 'p_object_name:' || p_object_name
4074     );
4075 
4076   END IF;
4077 
4078 --DBMS_OUTPUT.PUT_LINE('Validating incident_id');
4079 --validate the incident_id passed
4080 IF p_incident_id IS NOT NULL THEN
4081   --p_incident_id is passed
4082   --Validate the pk_column_1 that is coming in
4083   OPEN c_check_incident_id;
4084   FETCH c_check_incident_id INTO l_incident_id;
4085   CLOSE c_check_incident_id;
4086 
4087   IF l_incident_id IS NULL THEN
4088     --raise error
4089     CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg(
4090                            p_token_an => l_api_name_full
4091                           ,p_token_v  => p_incident_id
4092                           ,p_token_p  => 'P_INCIDENT_ID');
4093     RAISE FND_API.G_EXC_ERROR;
4094   END IF;
4095 
4096   --DBMS_OUTPUT.PUT_LINE ('Pass pk1 validation');
4097 
4098 ELSE
4099   --raise error
4100   CS_ServiceRequest_UTIL.Add_Missing_Param_Msg(
4101                          p_token_an	=> l_api_name_full
4102                         ,p_token_mp	=> 'P_INCIDENT_ID');
4103   RAISE FND_API.G_EXC_ERROR;
4104 
4105 END IF;
4106 
4107 -- Added FND_LOG
4108 IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4109   FND_LOG.String
4110   ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4111   , 'Incident Passed is Valid :'
4112     || p_incident_id
4113   );
4114 END IF;
4115 
4116 IF  p_object_name = 'CS_SERVICE_REQUEST' THEN
4117 
4118 
4119   --DBMS_OUTPUT.PUT_LINE('object is CS_SR');
4120 
4121   FOR v_get_sr_ext_attr IN c_get_sr_ext_attr(p_incident_id) LOOP
4122 
4123     --set l_record_exists to 'y'
4124     l_record_exists := 'Y';
4125 
4126     -- Added FND_LOG
4127     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4128       FND_LOG.String
4129       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4130      , 'Service Request Extensible Attributes exist for Incident passed :'
4131        );
4132     END IF;
4133 
4134     --populate the primary key array
4135     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)));
4136 
4137     --DBMS_OUTPUT.PUT_LINE('populated pk array');
4138 
4139     --get the attribute group information
4140     IF v_get_sr_ext_attr.attr_group_id IS NOT NULL then
4141       --get the attribute group type name and appl id
4142       Get_Attr_Group_Metadata(
4143                p_attr_group_id   => v_get_sr_ext_attr.attr_group_id
4144               ,x_application_id  => l_application_id
4145               ,x_attr_group_type => l_attr_group_type
4146               ,x_attr_group_name => l_attr_group_name);
4147 
4148       -- Added FND_LOG
4149       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4150         FND_LOG.String
4151         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4152         , 'Attribute Group Metadata -> Application ID :'
4153          || l_application_id
4154          );
4155       END IF;
4156 
4157       -- Added FND_LOG
4158       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4159         FND_LOG.String
4160         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4161         , 'Attribute Group Metadata -> Attribute Group Type  :'
4162          || l_attr_group_type
4163          );
4164       END IF;
4165 
4166       -- Added FND_LOG
4167       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4168         FND_LOG.String
4169         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4170         , 'Attribute Group Metadata -> Attribute Group Name  :'
4171          || l_attr_group_name
4172          );
4173       END IF;
4174 
4175       --DBMS_OUTPUT.PUT_LINE('Got Attr Metadata');
4176 
4177 
4178       --get attribute metadata for the attribute group
4179       IF l_application_id IS NOT NULL AND
4180          l_attr_group_type IS NOT NULL AND
4181          l_attr_group_name IS NOT NULL THEN
4182 
4183 
4184         FOR v_get_attr in c_get_attr(l_application_id
4185                                     ,l_attr_group_type
4186                                     ,l_attr_group_name)
4187         LOOP
4188 
4189           l_count := l_count + 1;
4190           l_ext_attr_tbl(l_count).application_id := v_get_attr.application_id;
4191           l_ext_attr_tbl(l_count).attr_group_type := v_get_attr.attr_group_type;
4192           l_ext_attr_tbl(l_count).attr_group_name := v_get_attr.attr_group_name;
4193           l_ext_attr_tbl(l_count).attr_name := v_get_attr.attr_name;
4194           l_ext_attr_tbl(l_count).attr_display_name := v_get_attr.attr_display_name;
4195           l_ext_attr_tbl(l_count).database_column := v_get_attr.database_column;
4196 
4197 
4198         END LOOP;
4199 
4200         --DBMS_OUTPUT.PUT_LINE('populated att table');
4201         l_first  := true;
4202         l_internal_name_str := '';
4203 
4204         FOR i in l_ext_attr_tbl.first..l_ext_attr_tbl.last LOOP
4205 
4206           IF  l_ext_attr_tbl(i).attr_group_name = l_attr_group_name THEN
4207             IF l_first = true then
4208                 l_first := false;
4209             ELSE
4210                 l_internal_name_str  := l_internal_name_str || ',';
4211             END IF;
4212 
4213             l_internal_name_str := l_internal_name_str || l_ext_attr_tbl(i).attr_name;
4214           END IF;
4215 
4216         END LOOP;
4217 
4218         --DBMS_OUTPUT.PUT_LINE('constructed string');
4219         --DBMS_OUTPUT.PUT_LINE('constructed string: '||l_internal_name_str);
4220 
4221         -- Added FND_LOG
4222         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4223           FND_LOG.String
4224           ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4225           , 'Attribute String to Pass to PLM  :'
4226            || l_internal_name_str
4227           );
4228         END IF;
4229 
4230 
4231       ELSE
4232         -- Raise error
4233         --composite key missing
4234         FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXTATTR_COMP_KEY_REQ');
4235         FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4236         FND_MSG_PUB.ADD;
4237         RAISE FND_API.G_EXC_ERROR;
4238       END IF; -- composite key end if
4239 
4240 
4241       --populate the attribute group request table to pass to PLM
4242       IF (l_attr_group_request_table IS NULL) THEN
4243         l_attr_group_request_table := EGO_ATTR_GROUP_REQUEST_TABLE();
4244       END IF;
4245 
4246       --DBMS_OUTPUT.PUT_LINE('Initialized PLM Obj');
4247       --Extend the object to add value it it
4248       l_attr_group_request_table.EXTEND();
4249 --      l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_ATTR_GROUP_REQUEST_OBJ
4250   ---                                                                   (v_get_sr_ext_attr.attr_group_id, l_application_id,
4251      ---                                                                 l_attr_group_type,l_attr_group_name,'GENERIC_LEVEL', NULL, NULL, l_internal_name_str);
4252 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,
4253                                                                          l_attr_group_type,l_attr_group_name,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, l_internal_name_str);
4254       --DBMS_OUTPUT.PUT_LINE('Extended PLM Onj');
4255       --DBMS_OUTPUT.PUT_LINE('l_attr_group_request_table'||l_attr_group_request_table.COUNT);
4256 
4257     ELSE
4258       --attribute group is null
4259       --raise error
4260       FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXT_ATTR_GROUP_REQ');
4261       FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4262       FND_MSG_PUB.ADD;
4263       RAISE FND_API.G_EXC_ERROR;
4264     END IF; --v_get_sr_ext_attr.attr_group_id IS NOT NULL
4265 
4266   END LOOP;
4267 
4268   IF l_record_exists <> 'Y' THEN
4269     --no count for that incident was found in the table
4270     --do not call PLM
4271 
4272       -- Added FND_LOG
4273       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4274         FND_LOG.String
4275         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4276         , 'No Service Request Extensible Attributes data exists for this Incident'
4277         );
4278       END IF;
4279     RETURN;
4280   END IF;
4281 
4282   --DBMS_OUTPUT.PUT_LINE('Calling PLM API');
4283   --intialize the user_privs_on_object
4284   l_user_privileges_on_object := EGO_VARCHAR_TBL_TYPE();
4285   l_user_privileges_on_object.EXTEND();
4286   --Call PLM Get_User_Attrs_Data API
4287 
4288    -- Added FND_LOG
4289    IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4290      FND_LOG.String
4291      ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4292      , 'Calling PLM Get User Attrs Data API'
4293      );
4294    END IF;
4295 
4296 
4297 
4298   EGO_USER_ATTRS_DATA_PUB.Get_User_Attrs_Data(
4299                           p_api_version => 1.0
4300                          ,p_object_name => 'CS_SERVICE_REQUEST'
4301                          ,p_pk_column_name_value_pairs => l_pk_col_name_value_pair
4302                          ,p_attr_group_request_table   => l_attr_group_request_table
4303                          ,p_user_privileges_on_object  => l_user_privileges_on_object
4304                          ,p_entity_id                  => NULL
4305                          ,p_entity_index               => NULL
4306                          ,p_entity_code                => NULL
4307                          ,p_debug_level                => 3
4308                          ,p_init_error_handler         => NULL
4309                          ,p_init_fnd_msg_list          => p_init_msg_list
4310                          ,p_add_errors_to_fnd_stack    => NULL
4311                          ,p_commit                     => p_commit
4312                          ,x_attributes_row_table       => l_attributes_row_table
4313                          ,x_attributes_data_table      => l_attributes_data_table
4314                          ,x_return_status              => x_return_status
4315                          ,x_errorcode                  => l_errorcode
4316                          ,x_msg_count                  => x_msg_count
4317                          ,x_msg_data                   => x_msg_data  );
4318 
4319   --DBMS_OUTPUT.PUT_LINE( 'x_msg_data'||x_msg_data);
4320 
4321   -- Added FND_LOG
4322   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4323     FND_LOG.String
4324     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4325     , 'PLM get User Attrs Data return status  :'
4326      || x_return_status
4327     );
4328   END IF;
4329 
4330     -- Added FND_LOG
4331   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4332     FND_LOG.String
4333     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4334     , 'PLM get User Attrs Data msg data  :'
4335      || x_msg_data
4336     );
4337   END IF;
4338 
4339 
4340   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4341     FND_MESSAGE.Set_Name('CS', 'CS_API_GET_SR_EXT_ATTR_WARNING');
4342     FND_MSG_PUB.Add;
4343     RAISE FND_API.G_EXC_ERROR;
4344   END IF;
4345 
4346   --populate the out parameters with the value returned from PLM
4347   --initialize counter := 0
4348   l_count := 0;
4349   l_count_1 := 0;
4350 
4351   --DBMS_OUTPUT.PUT_LINE('l_attributes_row_table'||l_attributes_row_table.COUNT);
4352   --DBMS_OUTPUT.PUT_LINE('l_attributes_data_table'||l_attributes_data_table.COUNT);
4353 
4354   IF l_attributes_row_table.COUNT > 0 THEN
4355     FOR i IN l_attributes_row_table.FIRST .. l_attributes_row_table.LAST LOOP
4356 
4357       IF l_attributes_row_table.EXISTS(i) THEN
4358 
4359         l_count := l_count + 1;
4360 
4361         x_ext_attr_grp_tbl(l_count).row_identifier    := l_attributes_row_table(i).row_identifier;
4362 
4363 
4364         --get the pks for the extension id
4365         OPEN c_get_sr_pks(p_ext_id => x_ext_attr_grp_tbl(l_count).row_identifier);
4366         FETCH c_get_sr_pks into l_incident_id, l_context;
4367         CLOSE c_get_sr_pks;
4368 
4369         IF l_incident_id IS NULL THEN
4370           x_ext_attr_grp_tbl(l_count).pk_column_1       := null;
4371         ELSE
4372           x_ext_attr_grp_tbl(l_count).pk_column_1       := l_incident_id;
4373         END IF;
4374 
4375         x_ext_attr_grp_tbl(l_count).pk_column_2       := null;
4376         x_ext_attr_grp_tbl(l_count).pk_column_3       := null;
4377         x_ext_attr_grp_tbl(l_count).pk_column_4       := null;
4378         x_ext_attr_grp_tbl(l_count).pk_column_5       := null;
4379 
4380         IF l_context IS NULL THEN
4381           x_ext_attr_grp_tbl(l_count).context         := null;
4382         ELSE
4383           x_ext_attr_grp_tbl(l_count).context         := to_char(l_context);
4384         END IF;
4385 
4386         x_ext_attr_grp_tbl(l_count).object_name       := 'CS_SERVICE_REQUEST';
4387         x_ext_attr_grp_tbl(l_count).attr_group_id     := l_attributes_row_table(i).attr_group_id;
4388         x_ext_attr_grp_tbl(l_count).attr_group_app_id := l_attributes_row_table(i).attr_group_app_id;
4389         x_ext_attr_grp_tbl(l_count).attr_group_type   := l_attributes_row_table(i).attr_group_type;
4390         x_ext_attr_grp_tbl(l_count).attr_group_name   := l_attributes_row_table(i).attr_group_name;
4391         x_ext_attr_grp_tbl(l_count).mapping_req       := 'N';
4392         x_ext_attr_grp_tbl(l_count).operation         := 'GET';
4393 
4394 
4395         --get the dislay name for the attribute group
4396 
4397         OPEN c_get_attr_group_disp_name(x_ext_attr_grp_tbl(l_count).attr_group_id);
4398         FETCH c_get_attr_group_disp_name INTO x_ext_attr_grp_tbl(l_count).attr_group_disp_name;
4399         CLOSE c_get_attr_group_disp_name;
4400 
4401         --DBMS_OUTPUT.PUT_LINE('x_ext_attr_grp_tbl(l_count).row_identifier'||x_ext_attr_grp_tbl(l_count).row_identifier);
4402         --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);
4403 
4404         -- loop through the attributes table and then populate the attributes record for the attribute group
4405 
4406         --DBMS_OUTPUT.PUT_LINE('l_attributes_data_table.COUNT'||l_attributes_data_table.COUNT);
4407 
4408         FOR j IN l_attributes_data_table.FIRST .. l_attributes_data_table.LAST LOOP
4409 
4410           IF l_attributes_data_table.EXISTS(j) THEN
4411 
4412             IF l_attributes_row_table(i).row_identifier = l_attributes_data_table(j).row_identifier THEN
4413 
4414               l_count_1 := l_count_1 + 1;
4415 
4416               -- match found populate the out parameter for the attribute table
4417               x_ext_attr_tbl(l_count_1).row_identifier := l_attributes_data_table(j).row_identifier;
4418               x_ext_attr_tbl(l_count_1).attr_name := l_attributes_data_table(j).attr_name;
4419               x_ext_attr_tbl(l_count_1).attr_value_str := l_attributes_data_table(j).attr_value_str;
4420               x_ext_attr_tbl(l_count_1).attr_value_num := l_attributes_data_table(j).attr_value_num;
4421               x_ext_attr_tbl(l_count_1).attr_value_date := l_attributes_data_table(j).attr_value_date;
4422               x_ext_attr_tbl(l_count_1).attr_value_display := l_attributes_data_table(j).attr_disp_value;
4423               x_ext_attr_tbl(l_count_1).attr_unit_of_measure := l_attributes_data_table(j).attr_unit_of_measure;
4424 
4425               --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).row_identifier'||x_ext_attr_tbl(l_count_1).row_identifier);
4426               --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).attr_name'||x_ext_attr_tbl(l_count_1).attr_name);
4427 
4428               --get the database column_name and display name for the attribute
4429               FOR k IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST LOOP
4430 
4431                 IF l_ext_attr_tbl.EXISTS(k) THEN
4432 
4433                   IF l_attributes_row_table(i).attr_group_app_id  = l_ext_attr_tbl(k).application_id AND
4434                      l_attributes_row_table(i).attr_group_type = l_ext_attr_tbl(k).attr_group_type  AND
4435                      l_attributes_row_table(i).attr_group_name = l_ext_attr_tbl(k).attr_group_name AND
4436                      l_attributes_data_table(j).attr_name      = l_ext_attr_tbl(k).attr_name THEN
4437 
4438                     x_ext_attr_tbl(l_count_1).column_name := l_ext_attr_tbl(k).database_column;
4439                     x_ext_attr_tbl(l_count_1).attr_disp_name := l_ext_attr_tbl(k).attr_display_name;
4440 
4441                     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl(l_count_1).attr_disp_name'||x_ext_attr_tbl(l_count_1).attr_disp_name);
4442                     --DBMS_OUTPUT.PUT_LINE(' x_ext_attr_tbl(l_count_1).column_name'|| x_ext_attr_tbl(l_count_1).column_name);
4443                   END IF;
4444                 END IF;
4445               END LOOP;
4446             END IF;
4447           END IF;
4448         END LOOP;
4449       END IF;
4450     END LOOP;
4451 
4452     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_tbl.COUNT'||x_ext_attr_tbl.count);
4453     --DBMS_OUTPUT.PUT_LINE('x_ext_attr_grp_tbl.COUNT'||x_ext_attr_grp_tbl.COUNT);
4454 
4455 
4456   END IF ; -- l_attributes_row_table.COUNT IS NOT NULL
4457 
4458 
4459 ELSIF p_object_name = 'CS_PARTY_ROLE' THEN
4460 
4461   FOR v_get_pr_ext_attr IN c_get_pr_ext_attr(p_incident_id) LOOP
4462 
4463     --set l_record_exists to 'y'
4464     l_record_exists := 'Y';
4465 
4466     -- Added FND_LOG
4467     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4468       FND_LOG.String
4469       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4470      , 'Party Role Extensible Attributes exist for Incident passed :'
4471        );
4472     END IF;
4473 
4474     --populate the primary key array
4475     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)),
4476                                 EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ID', to_char(v_get_pr_ext_attr.party_id)),
4477                                 EGO_COL_NAME_VALUE_PAIR_OBJ('CONTACT_TYPE', v_get_pr_ext_attr.contact_type),
4478                                 EGO_COL_NAME_VALUE_PAIR_OBJ('PARTY_ROLE_CODE', v_get_pr_ext_attr.party_role_code));
4479 
4480     --get the attribute group information
4481     IF v_get_pr_ext_attr.attr_group_id IS NOT NULL then
4482       --get the attribute group type name and appl id
4483       Get_Attr_Group_Metadata(
4484                p_attr_group_id   => v_get_pr_ext_attr.attr_group_id
4485               ,x_application_id  => l_application_id
4486               ,x_attr_group_type => l_attr_group_type
4487               ,x_attr_group_name => l_attr_group_name);
4488 
4489       -- Added FND_LOG
4490       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4491         FND_LOG.String
4492         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4493         , 'Attribute Group Metadata -> Application ID :'
4494          || l_application_id
4495          );
4496       END IF;
4497 
4498       -- Added FND_LOG
4499       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4500         FND_LOG.String
4501         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4502         , 'Attribute Group Metadata -> Attribute Group Type  :'
4503          || l_attr_group_type
4504          );
4505       END IF;
4506 
4507       -- Added FND_LOG
4508       IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4509         FND_LOG.String
4510         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4511         , 'Attribute Group Metadata -> Attribute Group Name  :'
4512          || l_attr_group_name
4513          );
4514       END IF;
4515 
4516 
4517       --get attribute metadata for the attribute group
4518       IF l_application_id IS NOT NULL AND
4519          l_attr_group_type IS NOT NULL AND
4520          l_attr_group_name IS NOT NULL THEN
4521 
4522 
4523         FOR v_get_attr in c_get_attr(l_application_id
4524                                     ,l_attr_group_type
4525                                     ,l_attr_group_name) LOOP
4526 
4527           l_count := l_count + 1;
4528           l_ext_attr_tbl(l_count).application_id := v_get_attr.application_id;
4529           l_ext_attr_tbl(l_count).attr_group_type := v_get_attr.attr_group_type;
4530           l_ext_attr_tbl(l_count).attr_group_name := v_get_attr.attr_group_name;
4531           l_ext_attr_tbl(l_count).attr_name := v_get_attr.attr_name;
4532           l_ext_attr_tbl(l_count).attr_display_name := v_get_attr.attr_display_name;
4533           l_ext_attr_tbl(l_count).database_column := v_get_attr.database_column;
4534 
4535         END LOOP;
4536 
4537         l_first  := true;
4538         l_internal_name_str := '';
4539 
4540         FOR i in l_ext_attr_tbl.first..l_ext_attr_tbl.last LOOP
4541 
4542           IF l_first = true then
4543             l_first := false;
4544           ELSE
4545             l_internal_name_str  := l_internal_name_str || ',';
4546           END IF;
4547 
4548           l_internal_name_str := l_internal_name_str || l_ext_attr_tbl(i).attr_name;
4549 
4550         END LOOP;
4551 
4552         -- Added FND_LOG
4553         IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4554           FND_LOG.String
4555           ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4556           , 'Attribute String to Pass to PLM  :'
4557            || l_internal_name_str
4558           );
4559         END IF;
4560 
4561 
4562       ELSE
4563         -- Raise error
4564         --composite key missing
4565         -- MAYA need to add
4566         FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXTATTR_COMP_KEY_REQ');
4567         FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4568         FND_MSG_PUB.ADD;
4569         RAISE FND_API.G_EXC_ERROR;
4570       END IF; -- composite key end if
4571 
4572 
4573       --populate the attribute group request table to pass to PLM
4574       IF (l_attr_group_request_table IS NULL) THEN
4575         l_attr_group_request_table := EGO_ATTR_GROUP_REQUEST_TABLE();
4576       END IF;
4577 
4578 
4579       --Extend the object to add value it it
4580 --      l_attr_group_request_table.EXTEND();
4581   --    l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_ATTR_GROUP_REQUEST_OBJ
4582     --                                                                (v_get_pr_ext_attr.attr_group_id, l_application_id,
4583       --                                                               l_attr_group_type,l_attr_group_name,'PARTY_ROLE_LEVEL', NULL, NULL, l_internal_name_str);
4584       l_attr_group_request_table(l_attr_group_request_table.LAST) := EGO_USER_ATTRS_DATA_PUB.Build_Attr_Group_Request_Obj
4585                                                                       (v_get_pr_ext_attr.attr_group_id, l_application_id,
4586                                                                        l_attr_group_type,l_attr_group_name,'PARTY_ROLE_LEVEL', NULL, NULL,NULL,NULL,NULL, l_internal_name_str);
4587     ELSE
4588       --attribute group is null
4589       --raise error
4590       FND_MESSAGE.SET_NAME('CS', 'CS_API_SR_EXT_ATTR_GROUP_REQ');
4591       FND_MESSAGE.SET_TOKEN('API_NAME', l_api_name);
4592       FND_MSG_PUB.ADD;
4593       RAISE FND_API.G_EXC_ERROR;
4594 
4595     END IF; --v_get_pr_ext_attr.attr_group_id IS NOT NULL
4596 
4597   END LOOP;
4598 
4599   IF l_record_exists <> 'Y' THEN
4600     --no count for that incident was found in the table
4601     --do not call PLM
4602      -- Added FND_LOG
4603     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4604       FND_LOG.String
4605       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4606      , 'No Party Role Extensible Attributes exist for Incident passed :'
4607        );
4608     END IF;
4609     RETURN;
4610   END IF;
4611 
4612    -- Added FND_LOG
4613     IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4614       FND_LOG.String
4615       ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4616      , 'Calling PLM Get User Attrs Data API :'
4617        );
4618     END IF;
4619 
4620   --Call PLM Get_User_Attrs_Data API
4621   EGO_USER_ATTRS_DATA_PUB.Get_User_Attrs_Data(
4622                           p_api_version => 1.0
4623                          ,p_object_name => 'CS_PARTY_ROLE'
4624                          ,p_pk_column_name_value_pairs => l_pk_col_name_value_pair
4625                          ,p_attr_group_request_table   => l_attr_group_request_table
4626                          ,p_user_privileges_on_object  => NULL
4627                          ,p_entity_id                  => NULL
4628                          ,p_entity_index               => NULL
4629                          ,p_entity_code                => NULL
4630                          ,p_debug_level                => 3
4631                          ,p_init_error_handler         => NULL
4632                          ,p_init_fnd_msg_list          => p_init_msg_list
4633                          ,p_add_errors_to_fnd_stack    => NULL
4634                          ,p_commit                     => p_commit
4635                          ,x_attributes_row_table       => l_attributes_row_table
4636                          ,x_attributes_data_table      => l_attributes_data_table
4637                          ,x_return_status              => x_return_status
4638                          ,x_errorcode                  => l_errorcode
4639                          ,x_msg_count                  => x_msg_count
4640                          ,x_msg_data                   => x_msg_data);
4641 
4642   -- Added FND_LOG
4643   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4644     FND_LOG.String
4645     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4646     , 'PLM get User Attrs Data return status  :'
4647      || x_return_status
4648     );
4649   END IF;
4650 
4651     -- Added FND_LOG
4652   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
4653     FND_LOG.String
4654     ( FND_LOG.level_procedure , L_LOG_MODULE || ''
4655     , 'PLM get User Attrs Data msg data  :'
4656      || x_msg_data
4657     );
4658   END IF;
4659 
4660   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4661     FND_MESSAGE.Set_Name('CS', 'CS_API_GET_SR_EXT_ATTR_WARNING');
4662     FND_MSG_PUB.Add;
4663     RAISE FND_API.G_EXC_ERROR;
4664   END IF;
4665 
4666   --populate the out parameters with the value returned from PLM
4667   --initialize counter := 0
4668   l_count := 0;
4669   l_count_1 := 0;
4670 
4671    IF l_attributes_row_table.COUNT > 0 THEN
4672     FOR i IN l_attributes_row_table.FIRST .. l_attributes_row_table.LAST LOOP
4673 
4674       IF l_attributes_row_table.EXISTS(i) THEN
4675 
4676       l_count := l_count + 1;
4677       x_ext_attr_grp_tbl(l_count).row_identifier := l_attributes_row_table(i).row_identifier;
4678 
4679       --get the pks for the extension id
4680       OPEN c_get_pr_pks(p_ext_id =>x_ext_attr_grp_tbl(l_count).row_identifier);
4681       FETCH c_get_pr_pks into l_incident_id, l_party_id, l_contact_type, l_party_role_code, l_pr_context;
4682       CLOSE c_get_pr_pks;
4683 
4684       IF l_incident_id IS NULL THEN
4685         x_ext_attr_grp_tbl(l_count).pk_column_1       := null;
4686       ELSE
4687         x_ext_attr_grp_tbl(l_count).pk_column_1       := l_incident_id;
4688       END IF;
4689 
4690       IF l_party_id IS NULL THEN
4691         x_ext_attr_grp_tbl(l_count).pk_column_2       := null;
4692       ELSE
4693         x_ext_attr_grp_tbl(l_count).pk_column_2       := l_party_id;
4694       END IF;
4695 
4696       IF l_contact_type IS NULL THEN
4697         x_ext_attr_grp_tbl(l_count).pk_column_3       := null;
4698       ELSE
4699         x_ext_attr_grp_tbl(l_count).pk_column_3       := l_contact_type;
4700       END IF;
4701 
4702       IF l_party_role_code IS NULL THEN
4703         x_ext_attr_grp_tbl(l_count).pk_column_4       := null;
4704       ELSE
4705         x_ext_attr_grp_tbl(l_count).pk_column_4       := l_party_role_code;
4706       END IF;
4707 
4708       x_ext_attr_grp_tbl(l_count).pk_column_5       := null;
4709 
4710       IF l_pr_context IS NULL THEN
4711         x_ext_attr_grp_tbl(l_count).context         := null;
4712       ELSE
4713         x_ext_attr_grp_tbl(l_count).context         := l_pr_context;
4714       END IF;
4715 
4716       x_ext_attr_grp_tbl(l_count).attr_group_id     := l_attributes_row_table(i).attr_group_id;
4717       x_ext_attr_grp_tbl(l_count).attr_group_app_id := l_attributes_row_table(i).attr_group_app_id;
4718       x_ext_attr_grp_tbl(l_count).attr_group_type   := l_attributes_row_table(i).attr_group_type;
4719       x_ext_attr_grp_tbl(l_count).attr_group_name   := l_attributes_row_table(i).attr_group_name;
4720       x_ext_attr_grp_tbl(l_count).mapping_req       := 'N';
4721       x_ext_attr_grp_tbl(l_count).operation         := 'GET';
4722 
4723       --get the dislay name for the attribute group
4724       OPEN c_get_attr_group_disp_name(x_ext_attr_grp_tbl(l_count).attr_group_id);
4725       FETCH c_get_attr_group_disp_name INTO x_ext_attr_grp_tbl(l_count).attr_group_disp_name;
4726       CLOSE c_get_attr_group_disp_name;
4727 
4728       -- loop through the attributes table and then populate the attributes record for the attribute group
4729       FOR j IN l_attributes_data_table.FIRST .. l_attributes_data_table.LAST LOOP
4730 
4731         IF l_attributes_data_table.EXISTS(j) THEN
4732 
4733 
4734           IF l_attributes_row_table(i).row_identifier = l_attributes_data_table(j).row_identifier THEN
4735             l_count_1 := l_count_1 + 1;
4736             -- match found populate the out parameter for the attribute table
4737             x_ext_attr_tbl(l_count_1).row_identifier := l_attributes_data_table(j).row_identifier;
4738             x_ext_attr_tbl(l_count_1).attr_name := l_attributes_data_table(j).attr_name;
4739             x_ext_attr_tbl(l_count_1).attr_value_str := l_attributes_data_table(j).attr_value_str;
4740             x_ext_attr_tbl(l_count_1).attr_value_num := l_attributes_data_table(j).attr_value_num;
4741             x_ext_attr_tbl(l_count_1).attr_value_date := l_attributes_data_table(j).attr_value_date;
4742             x_ext_attr_tbl(l_count_1).attr_value_display := l_attributes_data_table(j).attr_disp_value;
4743             x_ext_attr_tbl(l_count_1).attr_unit_of_measure := l_attributes_data_table(j).attr_unit_of_measure;
4744 
4745 
4746 
4747           --get the database column_name and display name for the attribute
4748            FOR k IN l_ext_attr_tbl.FIRST .. l_ext_attr_tbl.LAST LOOP
4749 
4750              IF l_ext_attr_tbl.EXISTS(k) THEN
4751 
4752                IF l_attributes_row_table(i).attr_group_app_id  = l_ext_attr_tbl(k).application_id AND
4753                  l_attributes_row_table(i).attr_group_type = l_ext_attr_tbl(k).attr_group_type  AND
4754                  l_attributes_row_table(i).attr_group_name = l_ext_attr_tbl(k).attr_group_name AND
4755                  l_attributes_data_table(j).attr_name      = l_ext_attr_tbl(k).attr_name THEN
4756 
4757                  x_ext_attr_tbl(l_count_1).column_name := l_ext_attr_tbl(k).database_column;
4758                  x_ext_attr_tbl(l_count_1).attr_disp_name := l_ext_attr_tbl(k).attr_display_name;
4759 
4760                END IF;
4761               END IF;
4762              END LOOP;
4763             END IF;
4764           END IF;
4765         END LOOP;
4766       END IF;
4767     END LOOP;
4768   END IF ; -- l_attributes_row_table.COUNT IS NOT NULL
4769 
4770 END IF;
4771 
4772  ---------------------- FND Logging -----------------------------------
4773 IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level
4774 THEN
4775 
4776    -- --------------------------------------------------------------------------
4777    -- This procedure Logs the extensible attributes table.
4778    -- --------------------------------------------------------------------------
4779    Log_EXT_PVT_Parameters
4780    ( p_ext_attr_grp_tbl   => x_ext_attr_grp_tbl
4781     ,p_ext_attr_tbl       => x_ext_attr_tbl
4782     );
4783 
4784    Log_EGO_Ext_PVT_Parameters(
4785                 p_ext_attr_grp_tbl => l_attributes_row_table
4786                ,p_ext_attr_tbl     => l_attributes_data_table);
4787 
4788 END IF;
4789 
4790 EXCEPTION
4791   WHEN FND_API.G_EXC_ERROR THEN
4792     x_return_status := FND_API.G_RET_STS_ERROR;
4793     FND_MSG_PUB.Count_And_Get
4794       ( p_count => x_msg_count,
4795         p_data  => x_msg_data
4796       );
4797   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4798     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4799     FND_MSG_PUB.Count_And_Get
4800       ( p_count => x_msg_count,
4801         p_data  => x_msg_data
4802       );
4803 
4804   WHEN OTHERS THEN
4805     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4806     FND_MESSAGE.Set_Name('CS', 'CS_GET_SR_EXT_ATTR_FAIL');
4807     FND_MESSAGE.Set_Token('API_NAME', L_API_NAME_FULL);
4808     FND_MESSAGE.Set_Token('ERROR', SQLERRM);
4809     FND_MSG_PUB.ADD;
4810 
4811 END;
4812 
4813 PROCEDURE Create_Ext_Attr_Audit(
4814         p_sr_ea_new_audit_rec_table    IN   Ext_Attr_Audit_Tbl_Type
4815        ,p_sr_ea_old_audit_rec_table    IN   Ext_Attr_Audit_Tbl_Type
4816        ,p_object_name                  IN   VARCHAR2
4817        ,p_modified_by                  IN   NUMBER := FND_GLOBAL.USER_ID
4818        ,p_modified_on                  IN   DATE := SYSDATE
4819        ,x_return_status                OUT  NOCOPY VARCHAR2
4820        ,x_msg_count                    OUT  NOCOPY NUMBER
4821        ,x_msg_data                     OUT  NOCOPY VARCHAR2
4822 )  IS
4823 
4824 l_is_multi_row VARCHAR2(1);
4825 
4826 Cursor c_sr_get_ext_id(p_incident_id IN NUMBER,
4827                        p_context IN NUMBER,
4828                        p_attr_group_id IN NUMBER) IS
4829 select extension_id from cs_incidents_ext
4830 where incident_id = p_incident_id
4831   and context = p_context
4832   and attr_group_id  = p_attr_group_id;
4833 
4834 
4835 cursor c_get_sr_multi_row_ext_id (p_incident_id IN NUMBER
4836                                  ,p_context IN NUMBER
4837                                  ,p_attr_group_id IN NUMBER) IS
4838 
4839 SELECT extension_id
4840   FROM cs_incidents_ext
4841  WHERE incident_id = p_incident_id
4842    AND context = p_context
4843    AND attr_group_id = p_attr_group_id
4844    AND extension_id NOT IN (SELECT extension_id
4845                               FROM cs_incidents_ext_audit
4846                              WHERE incident_id = p_incident_id
4847                                AND context = p_context
4848                                AND attr_group_id = p_attr_group_id);
4849 
4850 Cursor c_pr_get_ext_id(p_incident_id IN NUMBER,
4851                        p_party_id IN NUMBER,
4852                        p_contact_type IN VARCHAR2,
4853                        p_party_role_code IN VARCHAR2,
4854                        p_context IN VARCHAR2,
4855                        p_attr_group_id IN NUMBER) IS
4856 select extension_id
4857  from  cs_sr_contacts_ext
4858 where incident_id = p_incident_id
4859   and party_id = p_party_id
4860   and contact_type = p_contact_type
4861   and party_role_code = p_party_role_code
4862   and context = p_context
4863   and attr_group_id  = p_attr_group_id;
4864 
4865 
4866 cursor c_get_pr_multi_row_ext_id (p_incident_id IN NUMBER,
4867                                   p_party_id IN NUMBER,
4868                                   p_contact_type IN VARCHAR2,
4869                                   p_party_role_code IN VARCHAR2,
4870                                   p_context IN VARCHAR2,
4871                                   p_attr_group_id IN NUMBER) IS
4872 
4873 select extension_id
4874  from  cs_sr_contacts_ext
4875 where incident_id = p_incident_id
4876   and party_id = p_party_id
4877   and contact_type = p_contact_type
4878   and party_role_code = p_party_role_code
4879   and context = p_context
4880   and attr_group_id  = p_attr_group_id
4881    AND extension_id NOT IN (SELECT extension_id
4882                               FROM cs_sr_contacts_ext_audit
4883                              where incident_id = p_incident_id
4884                                and party_id = p_party_id
4885                                and contact_type = p_contact_type
4886                                and party_role_code = p_party_role_code
4887                                and context = p_context
4888                                and attr_group_id  = p_attr_group_id);
4889 
4890 l_sr_ea_new_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4891 l_sr_ea_old_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4892 
4893 l_pr_ea_new_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4894 l_pr_ea_old_audit_rec_table Ext_Attr_Audit_Tbl_Type;
4895 
4896 
4897 
4898 BEGIN
4899 
4900   IF p_object_name = 'CS_SERVICE_REQUEST' THEN
4901 
4902     /*************New Audit Table Check***********/
4903 
4904     IF p_sr_ea_new_audit_rec_table.COUNT > 0 THEN
4905 
4906       -- pass the incoming record to
4907       l_sr_ea_new_audit_rec_table := p_sr_ea_new_audit_rec_table;
4908 
4909       --check if record had extension_id and
4910       --all the primary key identifiers before calling audit
4911       FOR i IN 1..l_sr_ea_new_audit_rec_table.COUNT LOOP
4912         IF l_sr_ea_new_audit_rec_table(i).extension_id IS NULL OR
4913            l_sr_ea_new_audit_rec_table(i).extension_id < 0 THEN
4914           IF l_sr_ea_new_audit_rec_table(i).pk_column_1 IS NOT NULL AND
4915              l_sr_ea_new_audit_rec_table(i).context IS NOT NULL AND
4916              l_sr_ea_new_audit_rec_table(i).attr_group_id IS NOT NULL THEN
4917 
4918              -- check if attribute group is multi row
4919              l_is_multi_row := IS_ATTR_GROUP_MULTI_ROW(
4920                                  p_attr_group_id   =>     l_sr_ea_new_audit_rec_table(i).attr_group_id
4921                                 ,x_msg_data        =>     x_msg_data
4922                                 ,x_msg_count       =>     x_msg_count
4923                                 ,x_return_status   =>     x_return_status);
4924 
4925              -- If l_is_multi_row = 'Y' then get
4926              IF l_is_multi_row = 'Y' THEN
4927 
4928                 -- only one row should be found as the UI will only send one record at a time
4929                 OPEN c_get_sr_multi_row_ext_id(l_sr_ea_new_audit_rec_table(i).pk_column_1
4930                                                                           ,l_sr_ea_new_audit_rec_table(i).context
4931                                                                           ,l_sr_ea_new_audit_rec_table(i).attr_group_id);
4932                 FETCH c_get_sr_multi_row_ext_id into l_sr_ea_new_audit_rec_table(i).extension_id;
4933                 IF c_get_sr_multi_row_ext_id%NOTFOUND THEN
4934                   RETURN;
4935                 END IF;
4936                 CLOSE c_get_sr_multi_row_ext_id;
4937 
4938              ELSE
4939 
4940                -- l_is_multi_row = 'N'
4941                -- populate the all the records in the new record
4942                 OPEN c_sr_get_ext_id(l_sr_ea_new_audit_rec_table(i).pk_column_1
4943                                     ,l_sr_ea_new_audit_rec_table(i).context
4944                                     ,l_sr_ea_new_audit_rec_table(i).attr_group_id) ;
4945                 FETCH c_sr_get_ext_id INTO l_sr_ea_new_audit_rec_table(i).extension_id ;
4946                 IF c_sr_get_ext_id%NOTFOUND THEN
4947                   RETURN;
4948                 END IF;
4949                 CLOSE c_sr_get_ext_id;
4950 
4951 
4952              END IF; --multi_row check
4953 
4954           ELSE
4955 
4956             --composite key not passed
4957             --raise error
4958             --MAYA
4959             null;
4960 
4961           END IF; -- If composite key is null;
4962         END IF; -- p_sr_ea_new_audit_rec_table(i).extension_id IS NULL
4963      END LOOP;
4964    END IF; -- p_sr_ea_new_audit_rec_table.COUNT > 0
4965 
4966    IF p_sr_ea_old_audit_rec_table.COUNT > 0 THEN
4967 
4968       -- pass the incoming record to
4969       l_sr_ea_old_audit_rec_table := p_sr_ea_old_audit_rec_table;
4970 
4971    ELSE
4972       INIT_AUDIT_REC(p_count => p_sr_ea_new_audit_rec_table.COUNT
4973                     ,p_audit_rec => l_sr_ea_old_audit_rec_table);
4974    END IF; -- p_sr_ea_old_audit_rec_table.COUNT > 0
4975 
4976    -- call the audit API
4977    insert_sr_row
4978            ( P_NEW_ext_attrs         => l_sr_ea_new_audit_rec_table
4979            , P_OLD_ext_attrs         => l_sr_ea_old_audit_rec_table
4980            , P_MODIFIED_BY           => p_modified_by
4981            , P_MODIFIED_ON           => p_modified_on
4982            , X_RETURN_STATUS         => X_RETURN_STATUS
4983            , X_MSG_COUNT             => X_MSG_COUNT
4984            , X_MSG_DATA              => X_MSG_DATA
4985             ) ;
4986 
4987   ELSIF p_object_name = 'CS_PARTY_ROLE' THEN
4988     IF p_sr_ea_new_audit_rec_table.COUNT > 0 THEN
4989       -- pass the incoming record to
4990       l_pr_ea_new_audit_rec_table := p_sr_ea_new_audit_rec_table;
4991 
4992       --DBMS_OUTPUT.PUT_LINE('In party role create audit');
4993 
4994       --check if record had extension_id and
4995       --all the primary key identifiers before calling audit
4996       FOR i IN 1..l_pr_ea_new_audit_rec_table.COUNT LOOP
4997          IF l_pr_ea_new_audit_rec_table(i).extension_id IS NULL OR
4998             l_pr_ea_new_audit_rec_table(i).extension_id < 0 THEN
4999           IF l_pr_ea_new_audit_rec_table(i).pk_column_1 IS NOT NULL AND
5000              l_pr_ea_new_audit_rec_table(i).pk_column_2 IS NOT NULL AND
5001              l_pr_ea_new_audit_rec_table(i).pk_column_3 IS NOT NULL AND
5002              l_pr_ea_new_audit_rec_table(i).pk_column_4 IS NOT NULL AND
5003              l_pr_ea_new_audit_rec_table(i).context IS NOT NULL AND
5004              l_pr_ea_new_audit_rec_table(i).attr_group_id IS NOT NULL THEN
5005 
5006              -- check if attribute group is multi row
5007              l_is_multi_row := IS_ATTR_GROUP_MULTI_ROW(
5008                                  p_attr_group_id   =>     l_pr_ea_new_audit_rec_table(i).attr_group_id
5009                                 ,x_msg_data        =>     x_msg_data
5010                                 ,x_msg_count       =>     x_msg_count
5011                                 ,x_return_status   =>     x_return_status);
5012 
5013              -- If l_is_multi_row = 'Y' then get
5014              IF l_is_multi_row = 'Y' THEN
5015 
5016                 -- only one row should be found as the UI will only send one record at a time
5017                 OPEN c_get_pr_multi_row_ext_id(to_number(l_pr_ea_new_audit_rec_table(i).pk_column_1)
5018                                               ,to_number(l_pr_ea_new_audit_rec_table(i).pk_column_2)
5019                                               ,l_pr_ea_new_audit_rec_table(i).pk_column_3
5020                                               ,l_pr_ea_new_audit_rec_table(i).pk_column_4
5021                                               ,l_pr_ea_new_audit_rec_table(i).context
5022                                               ,l_pr_ea_new_audit_rec_table(i).attr_group_id);
5023 
5024                 FETCH c_get_pr_multi_row_ext_id into l_pr_ea_new_audit_rec_table(i).extension_id;
5025                 CLOSE c_get_pr_multi_row_ext_id;
5026 
5027              ELSE
5028 
5029                -- l_is_multi_row = 'N'
5030                -- populate the all the records in the new record
5031                 OPEN c_pr_get_ext_id(to_number(l_pr_ea_new_audit_rec_table(i).pk_column_1)
5032                                     ,to_number(l_pr_ea_new_audit_rec_table(i).pk_column_2)
5033                                     ,l_pr_ea_new_audit_rec_table(i).pk_column_3
5034                                     ,l_pr_ea_new_audit_rec_table(i).pk_column_4
5035                                     ,l_pr_ea_new_audit_rec_table(i).context
5036                                     ,l_pr_ea_new_audit_rec_table(i).attr_group_id) ;
5037                 FETCH c_pr_get_ext_id INTO l_pr_ea_new_audit_rec_table(i).extension_id ;
5038                 CLOSE c_pr_get_ext_id;
5039 
5040 
5041              END IF; --multi_row check
5042 
5043           ELSE
5044 
5045             --composite key not passed
5046             --raise error
5047             --MAYA
5048             null;
5049 
5050           END IF; -- If composite key is null;
5051         END IF; -- p_pr_ea_new_audit_rec_table(i).extension_id IS NULL
5052 
5053       END LOOP;
5054     END IF; -- p_sr_ea_new_audit_rec_table.COUNT > 0
5055 
5056     --DBMS_OUTPUT.PUT_LINE('Done checking extension id');
5057 
5058     IF p_sr_ea_old_audit_rec_table.COUNT > 0 THEN
5059       -- pass the incoming record to
5060       --DBMS_OUTPUT.PUT_LINE('p_sr_ea_old_audit_rec_table.COUNT'||p_sr_ea_old_audit_rec_table.COUNT);
5061 
5062       l_pr_ea_old_audit_rec_table := p_sr_ea_old_audit_rec_table;
5063 
5064     ELSE
5065       -- call the INIT AUDIT REC
5066       INIT_AUDIT_REC(p_count => p_sr_ea_new_audit_rec_table.COUNT
5067                     ,p_audit_rec => l_pr_ea_old_audit_rec_table);
5068 
5069     END IF; -- p_sr_ea_old_audit_rec_table.COUNT > 0
5070 
5071     --DBMS_OUTPUT.PUT_LINE('Done checking old rec');
5072 
5073     --DBMS_OUTPUT.PUT_LINE('Calling Insert PR Row');
5074     --DBMS_OUTPUT.PUT_LINE('l_pr_ea_new_audit_rec_table.COUNT'||l_pr_ea_new_audit_rec_table.COUNT);
5075     --DBMS_OUTPUT.PUT_LINE('l_pr_ea_old_audit_rec_table.COUNT'||l_pr_ea_old_audit_rec_table.COUNT);
5076 
5077     -- call the audit API
5078     insert_pr_row
5079            ( P_NEW_ext_attrs         => l_pr_ea_new_audit_rec_table
5080            , P_OLD_ext_attrs         => l_pr_ea_old_audit_rec_table
5081            , P_MODIFIED_BY           => p_modified_by
5082            , P_MODIFIED_ON           => p_modified_on
5083            , X_RETURN_STATUS         => X_RETURN_STATUS
5084            , X_MSG_COUNT             => X_MSG_COUNT
5085            , X_MSG_DATA              => X_MSG_DATA
5086             );
5087 
5088   END IF; --object is 'CS_SERVICE_REQUEST' or 'CS_PARTY_ROLE' --MAY NOT BE NEEDED
5089 
5090 
5091 END;
5092 
5093 Procedure Merge_Ext_Attrs_Details
5094         (p_ext_attr_grp_tbl          IN           CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
5095         ,p_ext_attr_tbl              IN           CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE
5096         ,x_ext_grp_attr_tbl          OUT  NOCOPY  EXT_GRP_ATTR_TBL_TYPE
5097         ,x_return_status             OUT  NOCOPY  VARCHAR2
5098         ,x_msg_count                 OUT  NOCOPY  NUMBER
5099         ,x_msg_data                  OUT  NOCOPY  VARCHAR2) IS
5100 
5101 q NUMBER := 1;
5102 
5103 BEGIN
5104 
5105 -- Loop throught the group table to get the group details..
5106 
5107    FOR i IN 1..p_ext_attr_grp_tbl.COUNT
5108        LOOP
5109            -- Loop through the attr table to get all the attributes for the parent group
5110            -- using the row identifier.
5111            FOR j IN 1..p_ext_attr_tbl.COUNT
5112                LOOP
5113                   -- Assign the values to the merged table structure
5114 
5115                   IF p_ext_attr_grp_tbl(i).ROW_IDENTIFIER = p_ext_attr_tbl(j).ROW_IDENTIFIER THEN
5116                      x_ext_grp_attr_tbl(q).ROW_IDENTIFIER       := p_ext_attr_grp_tbl(i).ROW_IDENTIFIER;
5117                      x_ext_grp_attr_tbl(q).ATTR_GROUP_ID        := p_ext_attr_grp_tbl(i).ATTR_GROUP_ID;
5118                      x_ext_grp_attr_tbl(q).ATTR_GROUP_TYPE      := p_ext_attr_grp_tbl(i).ATTR_GROUP_TYPE;
5119                      x_ext_grp_attr_tbl(q).ATTR_GROUP_NAME      := p_ext_attr_grp_tbl(i).ATTR_GROUP_NAME;
5120                      x_ext_grp_attr_tbl(q).ATTR_GROUP_DISP_NAME := p_ext_attr_grp_tbl(i).ATTR_GROUP_DISP_NAME;
5121                      x_ext_grp_attr_tbl(q).COLUMN_NAME          := p_ext_attr_tbl(j).COLUMN_NAME;
5122                      x_ext_grp_attr_tbl(q).ATTR_NAME            := p_ext_attr_tbl(j).ATTR_NAME;
5123                      x_ext_grp_attr_tbl(q).ATTR_VALUE_STR       := p_ext_attr_tbl(j).ATTR_VALUE_STR;
5124                      x_ext_grp_attr_tbl(q).ATTR_VALUE_NUM       := p_ext_attr_tbl(j).ATTR_VALUE_NUM;
5125                      x_ext_grp_attr_tbl(q).ATTR_VALUE_DATE      := p_ext_attr_tbl(j).ATTR_VALUE_DATE;
5126                      x_ext_grp_attr_tbl(q).ATTR_VALUE_DISPLAY   := p_ext_attr_tbl(j).ATTR_VALUE_DISPLAY;
5127 
5128                      q := q + 1;
5129                   END IF ;
5130                END LOOP;
5131        END LOOP;
5132 EXCEPTION
5133      WHEN OTHERS THEN
5134           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5135           FND_MSG_PUB.Count_And_Get
5136                 (p_count => x_msg_count,
5137                  p_data  => x_msg_data);
5138 
5139 END Merge_Ext_Attrs_Details;
5140 
5141 
5142 
5143 --------------------------------------------------------------------------------
5144 -- Procedure Name : insert_sr_row
5145 -- Parameters     :
5146 -- IN             : p_new_ext_attrs  Table New ext attr values
5147 --                : p_old_ext_attrs  Table old Ext attr values
5148 --                : p_modified_by    Identity of user creationg/modifying
5149 --                                   Ext attrs
5150 --                : p_modified_on    Date of Ext Attr creation/update
5151 -- OUT            : x_return_status  Status of procedure return
5152 --                : x_msg_count      Number of error messages
5153 --                : x_msg_data       Error description
5154 --
5155 --
5156 -- Description    : Procedure to create audit of SR extensible attributes.
5157 --
5158 -- Modification History:
5159 -- Date     Name     Desc
5160 -- -------- -------- -----------------------------------------------------------
5161 -- 05/05/05 pkesani  Created
5162 -- 08/08/05 smisra   Modified insert statement and used pk values for
5163 --                   incident id
5164 --------------------------------------------------------------------------------
5165 PROCEDURE insert_sr_row
5166 ( P_NEW_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5167 , P_OLD_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5168 , P_MODIFIED_BY           IN NUMBER
5169 , P_MODIFIED_ON           IN DATE
5170 , X_RETURN_STATUS        OUT NOCOPY VARCHAR2
5171 , X_MSG_COUNT            OUT NOCOPY NUMBER
5172 , X_MSG_DATA             OUT NOCOPY VARCHAR2
5173 )  IS
5174 l_table_index            NUMBER;
5175 l_ext_audit_id           NUMBER;
5176 l_last_updated_by         NUMBER;
5177 l_last_update_date       DATE;
5178 l_last_update_login      NUMBER;
5179 l_modified_by            NUMBER;
5180 l_modified_on            DATE;
5181 l_msg_count              NUMBER;
5182 l_msg_data               VARCHAR2(2000);
5183 l_api_name      CONSTANT VARCHAR2(30) := 'insert_sr_row';
5184 l_api_name_full CONSTANT VARCHAR2(61) := 'CS_SR_EXTATTRIBUTES_PVT'||'.'||l_api_name;
5185 l_incident_id   number;
5186 BEGIN
5187   x_return_status     := FND_API.G_RET_STS_SUCCESS;
5188   l_last_updated_by   := FND_GLOBAL.USER_ID;
5189   l_last_update_date  := SYSDATE;
5190   l_last_update_login := FND_GLOBAL.LOGIN_ID;
5191 
5192   IF  P_MODIFIED_BY IS NULL THEN
5193     l_modified_by := FND_GLOBAL.USER_ID;
5194   ELSE
5195     l_modified_by := P_MODIFIED_BY;
5196   END IF;
5197 
5198   IF  P_MODIFIED_ON IS NULL THEN
5199     l_modified_on := SYSDATE;
5200   ELSE
5201     l_modified_on := P_MODIFIED_ON;
5202   END IF;
5203 
5204   --DBMS_OUTPUT.PUT_LINE('Before insert');
5205   IF P_NEW_ext_attrs.count = 0 OR P_OLD_ext_attrs.count = 0 THEN
5206     RETURN;
5207   ELSE
5208     FOR l_table_index in P_NEW_ext_attrs.FIRST..P_NEW_ext_attrs.LAST LOOP
5209 
5210 IF P_NEW_ext_attrs.exists(l_table_index) THEN
5211 
5212 -- Update the cs header table whenver an extensible attribute is created
5213 -- Fix by Sanjana Rao 08-jan-2010 for bug 9125600
5214 If nvl(l_incident_id,-1)<>to_number(P_new_ext_attrs(l_table_index).pk_column_1) then
5215    l_incident_id:=to_number(P_new_ext_attrs(l_table_index).pk_column_1);
5216 		update cs_incidents_all_b
5217 		set last_update_date=l_modified_on,
5218 		last_updated_by=l_modified_by,
5219 		last_update_login=l_last_update_login
5220 		where incident_id=l_incident_id;
5221 end if;
5222 
5223       SELECT CS_INCIDENTS_EXT_AUDIT_S.NEXTVAL INTO l_ext_audit_id FROM dual;
5224   --DBMS_OUTPUT.PUT_LINE('inside for loop:' || to_char(l_ext_audit_id));
5225 
5226 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr1 '||P_new_ext_attrs(l_table_index).C_ext_attr1);
5227 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr2 '||P_new_ext_attrs(l_table_index).C_ext_attr2);
5228 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr3 '||P_new_ext_attrs(l_table_index).C_ext_attr3);
5229 --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).C_ext_attr4 '||P_new_ext_attrs(l_table_index).C_ext_attr4);
5230 
5231       INSERT INTO CS_INCIDENTS_EXT_AUDIT
5232       ( AUDIT_EXTENSION_ID
5233       , EXTENSION_ID
5234       , INCIDENT_ID
5235       , CONTEXT
5236       , ATTR_GROUP_ID
5237       , CREATION_DATE
5238       , CREATED_BY
5239       , LAST_UPDATE_DATE
5240       , LAST_UPDATED_BY
5241       , LAST_UPDATE_LOGIN
5242       , C_EXT_ATTR1
5243       , C_EXT_ATTR2
5244       , C_EXT_ATTR3
5245       , C_EXT_ATTR4
5246       , C_EXT_ATTR5
5247       , C_EXT_ATTR6
5248       , C_EXT_ATTR7
5249       , C_EXT_ATTR8
5250       , C_EXT_ATTR9
5251       , C_EXT_ATTR10
5252       , C_EXT_ATTR11
5253       , C_EXT_ATTR12
5254       , C_EXT_ATTR13
5255       , C_EXT_ATTR14
5256       , C_EXT_ATTR15
5257       , C_EXT_ATTR16
5258       , C_EXT_ATTR17
5259       , C_EXT_ATTR18
5260       , C_EXT_ATTR19
5261       , C_EXT_ATTR20
5262       , C_EXT_ATTR21
5263       , C_EXT_ATTR22
5264       , C_EXT_ATTR23
5265       , C_EXT_ATTR24
5266       , C_EXT_ATTR25
5267       , C_EXT_ATTR26
5268       , C_EXT_ATTR27
5269       , C_EXT_ATTR28
5270       , C_EXT_ATTR29
5271       , C_EXT_ATTR30
5272       , C_EXT_ATTR31
5273       , C_EXT_ATTR32
5274       , C_EXT_ATTR33
5275       , C_EXT_ATTR34
5276       , C_EXT_ATTR35
5277       , C_EXT_ATTR36
5278       , C_EXT_ATTR37
5279       , C_EXT_ATTR38
5280       , C_EXT_ATTR39
5281       , C_EXT_ATTR40
5282       , C_EXT_ATTR41
5283       , C_EXT_ATTR42
5284       , C_EXT_ATTR43
5285       , C_EXT_ATTR44
5286       , C_EXT_ATTR45
5287       , C_EXT_ATTR46
5288       , C_EXT_ATTR47
5289       , C_EXT_ATTR48
5290       , C_EXT_ATTR49
5291       , C_EXT_ATTR50
5292       , OLD_C_EXT_ATTR1
5293       , OLD_C_EXT_ATTR2
5294       , OLD_C_EXT_ATTR3
5295       , OLD_C_EXT_ATTR4
5296       , OLD_C_EXT_ATTR5
5297       , OLD_C_EXT_ATTR6
5298       , OLD_C_EXT_ATTR7
5299       , OLD_C_EXT_ATTR8
5300       , OLD_C_EXT_ATTR9
5301       , OLD_C_EXT_ATTR10
5302       , OLD_C_EXT_ATTR11
5303       , OLD_C_EXT_ATTR12
5304       , OLD_C_EXT_ATTR13
5305       , OLD_C_EXT_ATTR14
5306       , OLD_C_EXT_ATTR15
5307       , OLD_C_EXT_ATTR16
5308       , OLD_C_EXT_ATTR17
5309       , OLD_C_EXT_ATTR18
5310       , OLD_C_EXT_ATTR19
5311       , OLD_C_EXT_ATTR20
5312       , OLD_C_EXT_ATTR21
5313       , OLD_C_EXT_ATTR22
5314       , OLD_C_EXT_ATTR23
5315       , OLD_C_EXT_ATTR24
5316       , OLD_C_EXT_ATTR25
5317       , OLD_C_EXT_ATTR26
5318       , OLD_C_EXT_ATTR27
5319       , OLD_C_EXT_ATTR28
5320       , OLD_C_EXT_ATTR29
5321       , OLD_C_EXT_ATTR30
5322       , OLD_C_EXT_ATTR31
5323       , OLD_C_EXT_ATTR32
5324       , OLD_C_EXT_ATTR33
5325       , OLD_C_EXT_ATTR34
5326       , OLD_C_EXT_ATTR35
5327       , OLD_C_EXT_ATTR36
5328       , OLD_C_EXT_ATTR37
5329       , OLD_C_EXT_ATTR38
5330       , OLD_C_EXT_ATTR39
5331       , OLD_C_EXT_ATTR40
5332       , OLD_C_EXT_ATTR41
5333       , OLD_C_EXT_ATTR42
5334       , OLD_C_EXT_ATTR43
5335       , OLD_C_EXT_ATTR44
5336       , OLD_C_EXT_ATTR45
5337       , OLD_C_EXT_ATTR46
5338       , OLD_C_EXT_ATTR47
5339       , OLD_C_EXT_ATTR48
5340       , OLD_C_EXT_ATTR49
5341       , OLD_C_EXT_ATTR50
5342       , N_EXT_ATTR1
5343       , N_EXT_ATTR2
5344       , N_EXT_ATTR3
5345       , N_EXT_ATTR4
5346       , N_EXT_ATTR5
5347       , N_EXT_ATTR6
5348       , N_EXT_ATTR7
5349       , N_EXT_ATTR8
5350       , N_EXT_ATTR9
5351       , N_EXT_ATTR10
5352       , N_EXT_ATTR11
5353       , N_EXT_ATTR12
5354       , N_EXT_ATTR13
5355       , N_EXT_ATTR14
5356       , N_EXT_ATTR15
5357       , N_EXT_ATTR16
5358       , N_EXT_ATTR17
5359       , N_EXT_ATTR18
5360       , N_EXT_ATTR19
5361       , N_EXT_ATTR20
5362       , N_EXT_ATTR21
5363       , N_EXT_ATTR22
5364       , N_EXT_ATTR23
5365       , N_EXT_ATTR24
5366       , N_EXT_ATTR25
5367       , OLD_N_EXT_ATTR1
5368       , OLD_N_EXT_ATTR2
5369       , OLD_N_EXT_ATTR3
5370       , OLD_N_EXT_ATTR4
5371       , OLD_N_EXT_ATTR5
5372       , OLD_N_EXT_ATTR6
5373       , OLD_N_EXT_ATTR7
5374       , OLD_N_EXT_ATTR8
5375       , OLD_N_EXT_ATTR9
5376       , OLD_N_EXT_ATTR10
5377       , OLD_N_EXT_ATTR11
5378       , OLD_N_EXT_ATTR12
5379       , OLD_N_EXT_ATTR13
5380       , OLD_N_EXT_ATTR14
5381       , OLD_N_EXT_ATTR15
5382       , OLD_N_EXT_ATTR16
5383       , OLD_N_EXT_ATTR17
5384       , OLD_N_EXT_ATTR18
5385       , OLD_N_EXT_ATTR19
5386       , OLD_N_EXT_ATTR20
5387       , OLD_N_EXT_ATTR21
5388       , OLD_N_EXT_ATTR22
5389       , OLD_N_EXT_ATTR23
5390       , OLD_N_EXT_ATTR24
5391       , OLD_N_EXT_ATTR25
5392       , D_EXT_ATTR1
5393       , D_EXT_ATTR2
5394       , D_EXT_ATTR3
5395       , D_EXT_ATTR4
5396       , D_EXT_ATTR5
5397       , D_EXT_ATTR6
5398       , D_EXT_ATTR7
5399       , D_EXT_ATTR8
5400       , D_EXT_ATTR9
5401       , D_EXT_ATTR10
5402       , D_EXT_ATTR11
5403       , D_EXT_ATTR12
5404       , D_EXT_ATTR13
5405       , D_EXT_ATTR14
5406       , D_EXT_ATTR15
5407       , D_EXT_ATTR16
5408       , D_EXT_ATTR17
5409       , D_EXT_ATTR18
5410       , D_EXT_ATTR19
5411       , D_EXT_ATTR20
5412       , D_EXT_ATTR21
5413       , D_EXT_ATTR22
5414       , D_EXT_ATTR23
5415       , D_EXT_ATTR24
5416       , D_EXT_ATTR25
5417       , OLD_D_EXT_ATTR1
5418       , OLD_D_EXT_ATTR2
5419       , OLD_D_EXT_ATTR3
5420       , OLD_D_EXT_ATTR4
5421       , OLD_D_EXT_ATTR5
5422       , OLD_D_EXT_ATTR6
5423       , OLD_D_EXT_ATTR7
5424       , OLD_D_EXT_ATTR8
5425       , OLD_D_EXT_ATTR9
5426       , OLD_D_EXT_ATTR10
5427       , OLD_D_EXT_ATTR11
5428       , OLD_D_EXT_ATTR12
5429       , OLD_D_EXT_ATTR13
5430       , OLD_D_EXT_ATTR14
5431       , OLD_D_EXT_ATTR15
5432       , OLD_D_EXT_ATTR16
5433       , OLD_D_EXT_ATTR17
5434       , OLD_D_EXT_ATTR18
5435       , OLD_D_EXT_ATTR19
5436       , OLD_D_EXT_ATTR20
5437       , OLD_D_EXT_ATTR21
5438       , OLD_D_EXT_ATTR22
5439       , OLD_D_EXT_ATTR23
5440       , OLD_D_EXT_ATTR24
5441       , OLD_D_EXT_ATTR25
5442       , UOM_EXT_ATTR1
5443       , UOM_EXT_ATTR2
5444       , UOM_EXT_ATTR3
5445       , UOM_EXT_ATTR4
5446       , UOM_EXT_ATTR5
5447       , UOM_EXT_ATTR6
5448       , UOM_EXT_ATTR7
5449       , UOM_EXT_ATTR8
5450       , UOM_EXT_ATTR9
5451       , UOM_EXT_ATTR10
5452       , UOM_EXT_ATTR11
5453       , UOM_EXT_ATTR12
5454       , UOM_EXT_ATTR13
5455       , UOM_EXT_ATTR14
5456       , UOM_EXT_ATTR15
5457       , UOM_EXT_ATTR16
5458       , UOM_EXT_ATTR17
5459       , UOM_EXT_ATTR18
5460       , UOM_EXT_ATTR19
5461       , UOM_EXT_ATTR20
5462       , UOM_EXT_ATTR21
5463       , UOM_EXT_ATTR22
5464       , UOM_EXT_ATTR23
5465       , UOM_EXT_ATTR24
5466       , UOM_EXT_ATTR25
5467       , OLD_UOM_EXT_ATTR1
5468       , OLD_UOM_EXT_ATTR2
5469       , OLD_UOM_EXT_ATTR3
5470       , OLD_UOM_EXT_ATTR4
5471       , OLD_UOM_EXT_ATTR5
5472       , OLD_UOM_EXT_ATTR6
5473       , OLD_UOM_EXT_ATTR7
5474       , OLD_UOM_EXT_ATTR8
5475       , OLD_UOM_EXT_ATTR9
5476       , OLD_UOM_EXT_ATTR10
5477       , OLD_UOM_EXT_ATTR11
5478       , OLD_UOM_EXT_ATTR12
5479       , OLD_UOM_EXT_ATTR13
5480       , OLD_UOM_EXT_ATTR14
5481       , OLD_UOM_EXT_ATTR15
5482       , OLD_UOM_EXT_ATTR16
5483       , OLD_UOM_EXT_ATTR17
5484       , OLD_UOM_EXT_ATTR18
5485       , OLD_UOM_EXT_ATTR19
5486       , OLD_UOM_EXT_ATTR20
5487       , OLD_UOM_EXT_ATTR21
5488       , OLD_UOM_EXT_ATTR22
5489       , OLD_UOM_EXT_ATTR23
5490       , OLD_UOM_EXT_ATTR24
5491       , OLD_UOM_EXT_ATTR25
5492       , EXT_ATTR_MODIFIED_ON
5493       , EXT_ATTR_MODIFIED_BY
5494       )
5495       VALUES
5496       ( l_ext_audit_id
5497       , p_new_ext_attrs(l_table_index).extension_ID
5498       , to_number(P_new_ext_attrs(l_table_index).pk_column_1)
5499       , P_new_ext_attrs(l_table_index).context
5500       , P_new_ext_attrs(l_table_index).attr_group_id
5501       , l_last_update_date
5502       , l_last_updated_by
5503       , l_last_update_date
5504       , l_last_updated_by
5505       , l_last_update_login
5506       , P_new_ext_attrs(l_table_index).C_ext_attr1
5507       , P_new_ext_attrs(l_table_index).C_ext_attr2
5508       , P_new_ext_attrs(l_table_index).C_ext_attr3
5509       , P_new_ext_attrs(l_table_index).C_ext_attr4
5510       , P_new_ext_attrs(l_table_index).C_ext_attr5
5511       , P_new_ext_attrs(l_table_index).C_ext_attr6
5512       , P_new_ext_attrs(l_table_index).C_ext_attr7
5513       , P_new_ext_attrs(l_table_index).C_ext_attr8
5514       , P_new_ext_attrs(l_table_index).C_ext_attr9
5515       , P_new_ext_attrs(l_table_index).C_ext_attr10
5516       , P_new_ext_attrs(l_table_index).C_ext_attr11
5517       , P_new_ext_attrs(l_table_index).C_ext_attr12
5518       , P_new_ext_attrs(l_table_index).C_ext_attr13
5519       , P_new_ext_attrs(l_table_index).C_ext_attr14
5520       , P_new_ext_attrs(l_table_index).C_ext_attr15
5521       , P_new_ext_attrs(l_table_index).C_ext_attr16
5522       , P_new_ext_attrs(l_table_index).C_ext_attr17
5523       , P_new_ext_attrs(l_table_index).C_ext_attr18
5524       , P_new_ext_attrs(l_table_index).C_ext_attr19
5525       , P_new_ext_attrs(l_table_index).C_ext_attr20
5526       , P_new_ext_attrs(l_table_index).C_ext_attr21
5527       , P_new_ext_attrs(l_table_index).C_ext_attr22
5528       , P_new_ext_attrs(l_table_index).C_ext_attr23
5529       , P_new_ext_attrs(l_table_index).C_ext_attr24
5530       , P_new_ext_attrs(l_table_index).C_ext_attr25
5531       , P_new_ext_attrs(l_table_index).C_ext_attr26
5532       , P_new_ext_attrs(l_table_index).C_ext_attr27
5533       , P_new_ext_attrs(l_table_index).C_ext_attr28
5534       , P_new_ext_attrs(l_table_index).C_ext_attr29
5535       , P_new_ext_attrs(l_table_index).C_ext_attr30
5536       , P_new_ext_attrs(l_table_index).C_ext_attr31
5537       , P_new_ext_attrs(l_table_index).C_ext_attr32
5538       , P_new_ext_attrs(l_table_index).C_ext_attr33
5539       , P_new_ext_attrs(l_table_index).C_ext_attr34
5540       , P_new_ext_attrs(l_table_index).C_ext_attr35
5541       , P_new_ext_attrs(l_table_index).C_ext_attr36
5542       , P_new_ext_attrs(l_table_index).C_ext_attr37
5543       , P_new_ext_attrs(l_table_index).C_ext_attr38
5544       , P_new_ext_attrs(l_table_index).C_ext_attr39
5545       , P_new_ext_attrs(l_table_index).C_ext_attr40
5546       , P_new_ext_attrs(l_table_index).C_ext_attr41
5547       , P_new_ext_attrs(l_table_index).C_ext_attr42
5548       , P_new_ext_attrs(l_table_index).C_ext_attr43
5549       , P_new_ext_attrs(l_table_index).C_ext_attr44
5550       , P_new_ext_attrs(l_table_index).C_ext_attr45
5551       , P_new_ext_attrs(l_table_index).C_ext_attr46
5552       , P_new_ext_attrs(l_table_index).C_ext_attr47
5553       , P_new_ext_attrs(l_table_index).C_ext_attr48
5554       , P_new_ext_attrs(l_table_index).C_ext_attr49
5555       , P_new_ext_attrs(l_table_index).C_ext_attr50
5556       , P_old_ext_attrs(l_table_index).C_ext_attr1
5557       , P_old_ext_attrs(l_table_index).C_ext_attr2
5558       , P_old_ext_attrs(l_table_index).C_ext_attr3
5559       , P_old_ext_attrs(l_table_index).C_ext_attr4
5560       , P_old_ext_attrs(l_table_index).C_ext_attr5
5561       , P_old_ext_attrs(l_table_index).C_ext_attr6
5562       , P_old_ext_attrs(l_table_index).C_ext_attr7
5563       , P_old_ext_attrs(l_table_index).C_ext_attr8
5564       , P_old_ext_attrs(l_table_index).C_ext_attr9
5565       , P_old_ext_attrs(l_table_index).C_ext_attr10
5566       , P_old_ext_attrs(l_table_index).C_ext_attr11
5567       , P_old_ext_attrs(l_table_index).C_ext_attr12
5568       , P_old_ext_attrs(l_table_index).C_ext_attr13
5569       , P_old_ext_attrs(l_table_index).C_ext_attr14
5570       , P_old_ext_attrs(l_table_index).C_ext_attr15
5571       , P_old_ext_attrs(l_table_index).C_ext_attr16
5572       , P_old_ext_attrs(l_table_index).C_ext_attr17
5573       , P_old_ext_attrs(l_table_index).C_ext_attr18
5574       , P_old_ext_attrs(l_table_index).C_ext_attr19
5575       , P_old_ext_attrs(l_table_index).C_ext_attr20
5576       , P_old_ext_attrs(l_table_index).C_ext_attr21
5577       , P_old_ext_attrs(l_table_index).C_ext_attr22
5578       , P_old_ext_attrs(l_table_index).C_ext_attr23
5579       , P_old_ext_attrs(l_table_index).C_ext_attr24
5580       , P_old_ext_attrs(l_table_index).C_ext_attr25
5581       , P_old_ext_attrs(l_table_index).C_ext_attr26
5582       , P_old_ext_attrs(l_table_index).C_ext_attr27
5583       , P_old_ext_attrs(l_table_index).C_ext_attr28
5584       , P_old_ext_attrs(l_table_index).C_ext_attr29
5585       , P_old_ext_attrs(l_table_index).C_ext_attr30
5586       , P_old_ext_attrs(l_table_index).C_ext_attr31
5587       , P_old_ext_attrs(l_table_index).C_ext_attr32
5588       , P_old_ext_attrs(l_table_index).C_ext_attr33
5589       , P_old_ext_attrs(l_table_index).C_ext_attr34
5590       , P_old_ext_attrs(l_table_index).C_ext_attr35
5591       , P_old_ext_attrs(l_table_index).C_ext_attr36
5592       , P_old_ext_attrs(l_table_index).C_ext_attr37
5593       , P_old_ext_attrs(l_table_index).C_ext_attr38
5594       , P_old_ext_attrs(l_table_index).C_ext_attr39
5595       , P_old_ext_attrs(l_table_index).C_ext_attr40
5596       , P_old_ext_attrs(l_table_index).C_ext_attr41
5597       , P_old_ext_attrs(l_table_index).C_ext_attr42
5598       , P_old_ext_attrs(l_table_index).C_ext_attr43
5599       , P_old_ext_attrs(l_table_index).C_ext_attr44
5600       , P_old_ext_attrs(l_table_index).C_ext_attr45
5601       , P_old_ext_attrs(l_table_index).C_ext_attr46
5602       , P_old_ext_attrs(l_table_index).C_ext_attr47
5603       , P_old_ext_attrs(l_table_index).C_ext_attr48
5604       , P_old_ext_attrs(l_table_index).C_ext_attr49
5605       , P_old_ext_attrs(l_table_index).C_ext_attr50
5606       , P_new_ext_attrs(l_table_index).N_ext_attr1
5607       , P_new_ext_attrs(l_table_index).N_ext_attr2
5608       , P_new_ext_attrs(l_table_index).N_ext_attr3
5609       , P_new_ext_attrs(l_table_index).N_ext_attr4
5610       , P_new_ext_attrs(l_table_index).N_ext_attr5
5611       , P_new_ext_attrs(l_table_index).N_ext_attr6
5612       , P_new_ext_attrs(l_table_index).N_ext_attr7
5613       , P_new_ext_attrs(l_table_index).N_ext_attr8
5614       , P_new_ext_attrs(l_table_index).N_ext_attr9
5615       , P_new_ext_attrs(l_table_index).N_ext_attr10
5616       , P_new_ext_attrs(l_table_index).N_ext_attr11
5617       , P_new_ext_attrs(l_table_index).N_ext_attr12
5618       , P_new_ext_attrs(l_table_index).N_ext_attr13
5619       , P_new_ext_attrs(l_table_index).N_ext_attr14
5620       , P_new_ext_attrs(l_table_index).N_ext_attr15
5621       , P_new_ext_attrs(l_table_index).N_ext_attr16
5622       , P_new_ext_attrs(l_table_index).N_ext_attr17
5623       , P_new_ext_attrs(l_table_index).N_ext_attr18
5624       , P_new_ext_attrs(l_table_index).N_ext_attr19
5625       , P_new_ext_attrs(l_table_index).N_ext_attr20
5626       , P_new_ext_attrs(l_table_index).N_ext_attr21
5627       , P_new_ext_attrs(l_table_index).N_ext_attr22
5628       , P_new_ext_attrs(l_table_index).N_ext_attr23
5629       , P_new_ext_attrs(l_table_index).N_ext_attr24
5630       , P_new_ext_attrs(l_table_index).N_ext_attr25
5631       , P_old_ext_attrs(l_table_index).N_ext_attr1
5632       , P_old_ext_attrs(l_table_index).N_ext_attr2
5633       , P_old_ext_attrs(l_table_index).N_ext_attr3
5634       , P_old_ext_attrs(l_table_index).N_ext_attr4
5635       , P_old_ext_attrs(l_table_index).N_ext_attr5
5636       , P_old_ext_attrs(l_table_index).N_ext_attr6
5637       , P_old_ext_attrs(l_table_index).N_ext_attr7
5638       , P_old_ext_attrs(l_table_index).N_ext_attr8
5639       , P_old_ext_attrs(l_table_index).N_ext_attr9
5640       , P_old_ext_attrs(l_table_index).N_ext_attr10
5641       , P_old_ext_attrs(l_table_index).N_ext_attr11
5642       , P_old_ext_attrs(l_table_index).N_ext_attr12
5643       , P_old_ext_attrs(l_table_index).N_ext_attr13
5644       , P_old_ext_attrs(l_table_index).N_ext_attr14
5645       , P_old_ext_attrs(l_table_index).N_ext_attr15
5646       , P_old_ext_attrs(l_table_index).N_ext_attr16
5647       , P_old_ext_attrs(l_table_index).N_ext_attr17
5648       , P_old_ext_attrs(l_table_index).N_ext_attr18
5649       , P_old_ext_attrs(l_table_index).N_ext_attr19
5650       , P_old_ext_attrs(l_table_index).N_ext_attr20
5651       , P_old_ext_attrs(l_table_index).N_ext_attr21
5652       , P_old_ext_attrs(l_table_index).N_ext_attr22
5653       , P_old_ext_attrs(l_table_index).N_ext_attr23
5654       , P_old_ext_attrs(l_table_index).N_ext_attr24
5655       , P_old_ext_attrs(l_table_index).N_ext_attr25
5656       , P_new_ext_attrs(l_table_index).D_EXT_ATTR1
5657       , P_new_ext_attrs(l_table_index).D_EXT_ATTR2
5658       , P_new_ext_attrs(l_table_index).D_EXT_ATTR3
5659       , P_new_ext_attrs(l_table_index).D_EXT_ATTR4
5660       , P_new_ext_attrs(l_table_index).D_EXT_ATTR5
5661       , P_new_ext_attrs(l_table_index).D_EXT_ATTR6
5662       , P_new_ext_attrs(l_table_index).D_EXT_ATTR7
5663       , P_new_ext_attrs(l_table_index).D_EXT_ATTR8
5664       , P_new_ext_attrs(l_table_index).D_EXT_ATTR9
5665       , P_new_ext_attrs(l_table_index).D_EXT_ATTR10
5666       , P_new_ext_attrs(l_table_index).D_EXT_ATTR11
5667       , P_new_ext_attrs(l_table_index).D_EXT_ATTR12
5668       , P_new_ext_attrs(l_table_index).D_EXT_ATTR13
5669       , P_new_ext_attrs(l_table_index).D_EXT_ATTR14
5670       , P_new_ext_attrs(l_table_index).D_EXT_ATTR15
5671       , P_new_ext_attrs(l_table_index).D_EXT_ATTR16
5672       , P_new_ext_attrs(l_table_index).D_EXT_ATTR17
5673       , P_new_ext_attrs(l_table_index).D_EXT_ATTR18
5674       , P_new_ext_attrs(l_table_index).D_EXT_ATTR19
5675       , P_new_ext_attrs(l_table_index).D_EXT_ATTR20
5676       , P_new_ext_attrs(l_table_index).D_EXT_ATTR21
5677       , P_new_ext_attrs(l_table_index).D_EXT_ATTR22
5678       , P_new_ext_attrs(l_table_index).D_EXT_ATTR23
5679       , P_new_ext_attrs(l_table_index).D_EXT_ATTR24
5680       , P_new_ext_attrs(l_table_index).D_EXT_ATTR25
5681       , P_old_ext_attrs(l_table_index).D_ext_attr1
5682       , P_old_ext_attrs(l_table_index).D_ext_attr2
5683       , P_old_ext_attrs(l_table_index).D_ext_attr3
5684       , P_old_ext_attrs(l_table_index).D_ext_attr4
5685       , P_old_ext_attrs(l_table_index).D_ext_attr5
5686       , P_old_ext_attrs(l_table_index).D_ext_attr6
5687       , P_old_ext_attrs(l_table_index).D_ext_attr7
5688       , P_old_ext_attrs(l_table_index).D_ext_attr8
5689       , P_old_ext_attrs(l_table_index).D_ext_attr9
5690       , P_old_ext_attrs(l_table_index).D_ext_attr10
5691       , P_old_ext_attrs(l_table_index).D_ext_attr11
5692       , P_old_ext_attrs(l_table_index).D_ext_attr12
5693       , P_old_ext_attrs(l_table_index).D_ext_attr13
5694       , P_old_ext_attrs(l_table_index).D_ext_attr14
5695       , P_old_ext_attrs(l_table_index).D_ext_attr15
5696       , P_old_ext_attrs(l_table_index).D_ext_attr16
5697       , P_old_ext_attrs(l_table_index).D_ext_attr17
5698       , P_old_ext_attrs(l_table_index).D_ext_attr18
5699       , P_old_ext_attrs(l_table_index).D_ext_attr19
5700       , P_old_ext_attrs(l_table_index).D_ext_attr20
5701       , P_old_ext_attrs(l_table_index).D_ext_attr21
5702       , P_old_ext_attrs(l_table_index).D_ext_attr22
5703       , P_old_ext_attrs(l_table_index).D_ext_attr23
5704       , P_old_ext_attrs(l_table_index).D_ext_attr24
5705       , P_old_ext_attrs(l_table_index).D_ext_attr25
5706       , P_new_ext_attrs(l_table_index).UOM_ext_attr1
5707       , P_new_ext_attrs(l_table_index).UOM_ext_attr2
5708       , P_new_ext_attrs(l_table_index).UOM_ext_attr3
5709       , P_new_ext_attrs(l_table_index).UOM_ext_attr4
5710       , P_new_ext_attrs(l_table_index).UOM_ext_attr5
5711       , P_new_ext_attrs(l_table_index).UOM_ext_attr6
5712       , P_new_ext_attrs(l_table_index).UOM_ext_attr7
5713       , P_new_ext_attrs(l_table_index).UOM_ext_attr8
5714       , P_new_ext_attrs(l_table_index).UOM_ext_attr9
5715       , P_new_ext_attrs(l_table_index).UOM_ext_attr10
5716       , P_new_ext_attrs(l_table_index).UOM_ext_attr11
5717       , P_new_ext_attrs(l_table_index).UOM_ext_attr12
5718       , P_new_ext_attrs(l_table_index).UOM_ext_attr13
5719       , P_new_ext_attrs(l_table_index).UOM_ext_attr14
5720       , P_new_ext_attrs(l_table_index).UOM_ext_attr15
5721       , P_new_ext_attrs(l_table_index).UOM_ext_attr16
5722       , P_new_ext_attrs(l_table_index).UOM_ext_attr17
5723       , P_new_ext_attrs(l_table_index).UOM_ext_attr18
5724       , P_new_ext_attrs(l_table_index).UOM_ext_attr19
5725       , P_new_ext_attrs(l_table_index).UOM_ext_attr20
5726       , P_new_ext_attrs(l_table_index).UOM_ext_attr21
5727       , P_new_ext_attrs(l_table_index).UOM_ext_attr22
5728       , P_new_ext_attrs(l_table_index).UOM_ext_attr23
5729       , P_new_ext_attrs(l_table_index).UOM_ext_attr24
5730       , P_new_ext_attrs(l_table_index).UOM_ext_attr25
5731       , P_old_ext_attrs(l_table_index).UOM_ext_attr1
5732       , P_old_ext_attrs(l_table_index).UOM_ext_attr2
5733       , P_old_ext_attrs(l_table_index).UOM_ext_attr3
5734       , P_old_ext_attrs(l_table_index).UOM_ext_attr4
5735       , P_old_ext_attrs(l_table_index).UOM_ext_attr5
5736       , P_old_ext_attrs(l_table_index).UOM_ext_attr6
5737       , P_old_ext_attrs(l_table_index).UOM_ext_attr7
5738       , P_old_ext_attrs(l_table_index).UOM_ext_attr8
5739       , P_old_ext_attrs(l_table_index).UOM_ext_attr9
5740       , P_old_ext_attrs(l_table_index).UOM_ext_attr10
5741       , P_old_ext_attrs(l_table_index).UOM_ext_attr11
5742       , P_old_ext_attrs(l_table_index).UOM_ext_attr12
5743       , P_old_ext_attrs(l_table_index).UOM_ext_attr13
5744       , P_old_ext_attrs(l_table_index).UOM_ext_attr14
5745       , P_old_ext_attrs(l_table_index).UOM_ext_attr15
5746       , P_old_ext_attrs(l_table_index).UOM_ext_attr16
5747       , P_old_ext_attrs(l_table_index).UOM_ext_attr17
5748       , P_old_ext_attrs(l_table_index).UOM_ext_attr18
5749       , P_old_ext_attrs(l_table_index).UOM_ext_attr19
5750       , P_old_ext_attrs(l_table_index).UOM_ext_attr20
5751       , P_old_ext_attrs(l_table_index).UOM_ext_attr21
5752       , P_old_ext_attrs(l_table_index).UOM_ext_attr22
5753       , P_old_ext_attrs(l_table_index).UOM_ext_attr23
5754       , P_old_ext_attrs(l_table_index).UOM_ext_attr24
5755       , P_old_ext_attrs(l_table_index).UOM_ext_attr25
5756       , l_modified_on
5757       , l_modified_by
5758       );
5759 
5760   --DBMS_OUTPUT.PUT_LINE('inside for loop after insert ');
5761 END IF;
5762     END LOOP;
5763 
5764   END IF ;    -- no records in the table.
5765 
5766 
5767 EXCEPTION
5768   WHEN OTHERS THEN
5769     --DBMS_OUTPUT.PUT_LINE('when other ..');
5770     --DBMS_OUTPUT.PUT_LINE(substr(SQLERRM,1,200));
5771     FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
5772     FND_MESSAGE.set_token('P_TEXT','cs_sr_ext_attr_data_pvt.insert_sr_row'||'-'||substr(SQLERRM,1,200));
5773     FND_MSG_PUB.ADD;
5774     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5775 
5776 END insert_sr_row;
5777 
5778 
5779 --------------------------------------------------------------------------------
5780 -- Procedure Name : insert_pr_row
5781 -- Parameters     :
5782 -- IN             : p_new_ext_attrs  Table New ext attr values
5783 --                : p_old_ext_attrs  Table old Ext attr values
5784 --                : p_modified_by    Identity of user creationg/modifying
5785 --                                   Ext attrs
5786 --                : p_modified_on    Date of Ext Attr creation/update
5787 -- OUT            : x_return_status  Status of procedure return
5788 --                : x_msg_count      Number of error messages
5789 --                : x_msg_data       Error description
5790 --
5791 -- Description    : Procedure to create audit of party role extensible attributes.
5792 --
5793 -- Modification History:
5794 -- Date     Name     Desc
5795 -- -------- -------- -----------------------------------------------------------
5796 -- 05/05/05 pkesani  Created
5797 -- 08/08/05 smisra   Modified insert statement and used pk values for
5798 --                   incident id, party id, party type and party role
5799 --------------------------------------------------------------------------------
5800 PROCEDURE insert_pr_row
5801 ( P_NEW_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5802 , P_OLD_ext_attrs         IN Ext_Attr_Audit_Tbl_Type
5803 , P_MODIFIED_BY           IN NUMBER
5804 , P_MODIFIED_ON           IN DATE
5805 , X_RETURN_STATUS        OUT NOCOPY VARCHAR2
5806 , X_MSG_COUNT            OUT NOCOPY NUMBER
5807 , X_MSG_DATA             OUT NOCOPY VARCHAR2
5808 )  IS
5809 l_table_index            NUMBER;
5810 l_ext_audit_id           NUMBER;
5811 l_last_updated_by        NUMBER;
5812 l_last_update_date       DATE;
5813 l_last_update_login      NUMBER;
5814 l_modified_by            NUMBER;
5815 l_modified_on            DATE;
5816 l_msg_count              NUMBER;
5817 l_msg_data               VARCHAR2(2000);
5818 l_api_name      CONSTANT VARCHAR2(30) := 'insert_pr_row';
5819 l_api_name_full CONSTANT VARCHAR2(61) := 'CS_SR_EXTATTRIBUTES_PVT'||'.'||l_api_name;
5820 l_incident_id  number;
5821 BEGIN
5822   x_return_status := FND_API.G_RET_STS_SUCCESS;
5823 
5824 
5825   l_last_updated_by := FND_GLOBAL.USER_ID;
5826   l_last_update_login := FND_GLOBAL.LOGIN_ID;
5827   l_last_update_date := SYSDATE;
5828 
5829   IF  P_MODIFIED_BY IS NULL THEN
5830     l_modified_by := FND_GLOBAL.USER_ID;
5831   ELSE
5832     l_modified_by := P_MODIFIED_BY;
5833   END IF;
5834 
5835   IF  P_MODIFIED_ON IS NULL THEN
5836     l_modified_on := SYSDATE;
5837   ELSE
5838     l_modified_on := P_MODIFIED_ON;
5839   END IF;
5840 
5841   IF P_NEW_ext_attrs.count = 0 OR P_OLD_ext_attrs.count = 0 THEN
5842     RETURN;
5843   ELSE
5844     FOR l_table_index in P_NEW_ext_attrs.FIRST..P_NEW_ext_attrs.LAST LOOP
5845 
5846 -- Update the cs header table whenver an extensible attribute is created
5847 -- Fix by Sanjana Rao , 08-jan-2010 for bug 9125600
5848 If nvl(l_incident_id,-1)<>to_number(P_new_ext_attrs(l_table_index).pk_column_1) then
5849    l_incident_id:=to_number(P_new_ext_attrs(l_table_index).pk_column_1);
5850 		update cs_incidents_all_b
5851 		set last_update_date=l_modified_on,
5852 		last_updated_by=l_modified_by,
5853 		last_update_login=l_last_update_login
5854 		where incident_id=l_incident_id;
5855 end if;
5856 
5857       SELECT CS_SR_CONTACTS_EXT_AUDIT_S.NEXTVAL INTO l_ext_audit_id FROM dual;
5858   --DBMS_OUTPUT.PUT_LINE('inside for loop:' || to_char(l_ext_audit_id));
5859 
5860   --DBMS_OUTPUT.PUT_LINE('P_new_ext_attrs(l_table_index).extension_ID'||P_new_ext_attrs(l_table_index).extension_ID);
5861 
5862       INSERT INTO CS_SR_CONTACTS_EXT_AUDIT
5863       ( AUDIT_EXTENSION_ID
5864       , EXTENSION_ID
5865       , INCIDENT_ID
5866       , CONTEXT
5867       , ATTR_GROUP_ID
5868       , CREATION_DATE
5869       , CREATED_BY
5870       , LAST_UPDATE_DATE
5871       , LAST_UPDATED_BY
5872       , LAST_UPDATE_LOGIN
5873       , C_EXT_ATTR1
5874       , C_EXT_ATTR2
5875       , C_EXT_ATTR3
5876       , C_EXT_ATTR4
5877       , C_EXT_ATTR5
5878       , C_EXT_ATTR6
5879       , C_EXT_ATTR7
5880       , C_EXT_ATTR8
5881       , C_EXT_ATTR9
5882       , C_EXT_ATTR10
5883       , C_EXT_ATTR11
5884       , C_EXT_ATTR12
5885       , C_EXT_ATTR13
5886       , C_EXT_ATTR14
5887       , C_EXT_ATTR15
5888       , C_EXT_ATTR16
5889       , C_EXT_ATTR17
5890       , C_EXT_ATTR18
5891       , C_EXT_ATTR19
5892       , C_EXT_ATTR20
5893       , C_EXT_ATTR21
5894       , C_EXT_ATTR22
5895       , C_EXT_ATTR23
5896       , C_EXT_ATTR24
5897       , C_EXT_ATTR25
5898       , C_EXT_ATTR26
5899       , C_EXT_ATTR27
5900       , C_EXT_ATTR28
5901       , C_EXT_ATTR29
5902       , C_EXT_ATTR30
5903       , C_EXT_ATTR31
5904       , C_EXT_ATTR32
5905       , C_EXT_ATTR33
5906       , C_EXT_ATTR34
5907       , C_EXT_ATTR35
5908       , C_EXT_ATTR36
5909       , C_EXT_ATTR37
5910       , C_EXT_ATTR38
5911       , C_EXT_ATTR39
5912       , C_EXT_ATTR40
5913       , C_EXT_ATTR41
5914       , C_EXT_ATTR42
5915       , C_EXT_ATTR43
5916       , C_EXT_ATTR44
5917       , C_EXT_ATTR45
5918       , C_EXT_ATTR46
5919       , C_EXT_ATTR47
5920       , C_EXT_ATTR48
5921       , C_EXT_ATTR49
5922       , C_EXT_ATTR50
5923       , OLD_C_EXT_ATTR1
5924       , OLD_C_EXT_ATTR2
5925       , OLD_C_EXT_ATTR3
5926       , OLD_C_EXT_ATTR4
5927       , OLD_C_EXT_ATTR5
5928       , OLD_C_EXT_ATTR6
5929       , OLD_C_EXT_ATTR7
5930       , OLD_C_EXT_ATTR8
5931       , OLD_C_EXT_ATTR9
5932       , OLD_C_EXT_ATTR10
5933       , OLD_C_EXT_ATTR11
5934       , OLD_C_EXT_ATTR12
5935       , OLD_C_EXT_ATTR13
5936       , OLD_C_EXT_ATTR14
5937       , OLD_C_EXT_ATTR15
5938       , OLD_C_EXT_ATTR16
5939       , OLD_C_EXT_ATTR17
5940       , OLD_C_EXT_ATTR18
5941       , OLD_C_EXT_ATTR19
5942       , OLD_C_EXT_ATTR20
5943       , OLD_C_EXT_ATTR21
5944       , OLD_C_EXT_ATTR22
5945       , OLD_C_EXT_ATTR23
5946       , OLD_C_EXT_ATTR24
5947       , OLD_C_EXT_ATTR25
5948       , OLD_C_EXT_ATTR26
5949       , OLD_C_EXT_ATTR27
5950       , OLD_C_EXT_ATTR28
5951       , OLD_C_EXT_ATTR29
5952       , OLD_C_EXT_ATTR30
5953       , OLD_C_EXT_ATTR31
5954       , OLD_C_EXT_ATTR32
5955       , OLD_C_EXT_ATTR33
5956       , OLD_C_EXT_ATTR34
5957       , OLD_C_EXT_ATTR35
5958       , OLD_C_EXT_ATTR36
5959       , OLD_C_EXT_ATTR37
5960       , OLD_C_EXT_ATTR38
5961       , OLD_C_EXT_ATTR39
5962       , OLD_C_EXT_ATTR40
5963       , OLD_C_EXT_ATTR41
5964       , OLD_C_EXT_ATTR42
5965       , OLD_C_EXT_ATTR43
5966       , OLD_C_EXT_ATTR44
5967       , OLD_C_EXT_ATTR45
5968       , OLD_C_EXT_ATTR46
5969       , OLD_C_EXT_ATTR47
5970       , OLD_C_EXT_ATTR48
5971       , OLD_C_EXT_ATTR49
5972       , OLD_C_EXT_ATTR50
5973       , N_EXT_ATTR1
5974       , N_EXT_ATTR2
5975       , N_EXT_ATTR3
5976       , N_EXT_ATTR4
5977       , N_EXT_ATTR5
5978       , N_EXT_ATTR6
5979       , N_EXT_ATTR7
5980       , N_EXT_ATTR8
5981       , N_EXT_ATTR9
5982       , N_EXT_ATTR10
5983       , N_EXT_ATTR11
5984       , N_EXT_ATTR12
5985       , N_EXT_ATTR13
5986       , N_EXT_ATTR14
5987       , N_EXT_ATTR15
5988       , N_EXT_ATTR16
5989       , N_EXT_ATTR17
5990       , N_EXT_ATTR18
5991       , N_EXT_ATTR19
5992       , N_EXT_ATTR20
5993       , N_EXT_ATTR21
5994       , N_EXT_ATTR22
5995       , N_EXT_ATTR23
5996       , N_EXT_ATTR24
5997       , N_EXT_ATTR25
5998       , OLD_N_EXT_ATTR1
5999       , OLD_N_EXT_ATTR2
6000       , OLD_N_EXT_ATTR3
6001       , OLD_N_EXT_ATTR4
6002       , OLD_N_EXT_ATTR5
6003       , OLD_N_EXT_ATTR6
6004       , OLD_N_EXT_ATTR7
6005       , OLD_N_EXT_ATTR8
6006       , OLD_N_EXT_ATTR9
6007       , OLD_N_EXT_ATTR10
6008       , OLD_N_EXT_ATTR11
6009       , OLD_N_EXT_ATTR12
6010       , OLD_N_EXT_ATTR13
6011       , OLD_N_EXT_ATTR14
6012       , OLD_N_EXT_ATTR15
6013       , OLD_N_EXT_ATTR16
6014       , OLD_N_EXT_ATTR17
6015       , OLD_N_EXT_ATTR18
6016       , OLD_N_EXT_ATTR19
6017       , OLD_N_EXT_ATTR20
6018       , OLD_N_EXT_ATTR21
6019       , OLD_N_EXT_ATTR22
6020       , OLD_N_EXT_ATTR23
6021       , OLD_N_EXT_ATTR24
6022       , OLD_N_EXT_ATTR25
6023       , D_EXT_ATTR1
6024       , D_EXT_ATTR2
6025       , D_EXT_ATTR3
6026       , D_EXT_ATTR4
6027       , D_EXT_ATTR5
6028       , D_EXT_ATTR6
6029       , D_EXT_ATTR7
6030       , D_EXT_ATTR8
6031       , D_EXT_ATTR9
6032       , D_EXT_ATTR10
6033       , D_EXT_ATTR11
6034       , D_EXT_ATTR12
6035       , D_EXT_ATTR13
6036       , D_EXT_ATTR14
6037       , D_EXT_ATTR15
6038       , D_EXT_ATTR16
6039       , D_EXT_ATTR17
6040       , D_EXT_ATTR18
6041       , D_EXT_ATTR19
6042       , D_EXT_ATTR20
6043       , D_EXT_ATTR21
6044       , D_EXT_ATTR22
6045       , D_EXT_ATTR23
6046       , D_EXT_ATTR24
6047       , D_EXT_ATTR25
6048       , OLD_D_EXT_ATTR1
6049       , OLD_D_EXT_ATTR2
6050       , OLD_D_EXT_ATTR3
6051       , OLD_D_EXT_ATTR4
6052       , OLD_D_EXT_ATTR5
6053       , OLD_D_EXT_ATTR6
6054       , OLD_D_EXT_ATTR7
6055       , OLD_D_EXT_ATTR8
6056       , OLD_D_EXT_ATTR9
6057       , OLD_D_EXT_ATTR10
6058       , OLD_D_EXT_ATTR11
6059       , OLD_D_EXT_ATTR12
6060       , OLD_D_EXT_ATTR13
6061       , OLD_D_EXT_ATTR14
6062       , OLD_D_EXT_ATTR15
6063       , OLD_D_EXT_ATTR16
6064       , OLD_D_EXT_ATTR17
6065       , OLD_D_EXT_ATTR18
6066       , OLD_D_EXT_ATTR19
6067       , OLD_D_EXT_ATTR20
6068       , OLD_D_EXT_ATTR21
6069       , OLD_D_EXT_ATTR22
6070       , OLD_D_EXT_ATTR23
6071       , OLD_D_EXT_ATTR24
6072       , OLD_D_EXT_ATTR25
6073       , UOM_EXT_ATTR1
6074       , UOM_EXT_ATTR2
6075       , UOM_EXT_ATTR3
6076       , UOM_EXT_ATTR4
6077       , UOM_EXT_ATTR5
6078       , UOM_EXT_ATTR6
6079       , UOM_EXT_ATTR7
6080       , UOM_EXT_ATTR8
6081       , UOM_EXT_ATTR9
6082       , UOM_EXT_ATTR10
6083       , UOM_EXT_ATTR11
6084       , UOM_EXT_ATTR12
6085       , UOM_EXT_ATTR13
6086       , UOM_EXT_ATTR14
6087       , UOM_EXT_ATTR15
6088       , UOM_EXT_ATTR16
6089       , UOM_EXT_ATTR17
6090       , UOM_EXT_ATTR18
6091       , UOM_EXT_ATTR19
6092       , UOM_EXT_ATTR20
6093       , UOM_EXT_ATTR21
6094       , UOM_EXT_ATTR22
6095       , UOM_EXT_ATTR23
6096       , UOM_EXT_ATTR24
6097       , UOM_EXT_ATTR25
6098       , OLD_UOM_EXT_ATTR1
6099       , OLD_UOM_EXT_ATTR2
6100       , OLD_UOM_EXT_ATTR3
6101       , OLD_UOM_EXT_ATTR4
6102       , OLD_UOM_EXT_ATTR5
6103       , OLD_UOM_EXT_ATTR6
6104       , OLD_UOM_EXT_ATTR7
6105       , OLD_UOM_EXT_ATTR8
6106       , OLD_UOM_EXT_ATTR9
6107       , OLD_UOM_EXT_ATTR10
6108       , OLD_UOM_EXT_ATTR11
6109       , OLD_UOM_EXT_ATTR12
6110       , OLD_UOM_EXT_ATTR13
6111       , OLD_UOM_EXT_ATTR14
6112       , OLD_UOM_EXT_ATTR15
6113       , OLD_UOM_EXT_ATTR16
6114       , OLD_UOM_EXT_ATTR17
6115       , OLD_UOM_EXT_ATTR18
6116       , OLD_UOM_EXT_ATTR19
6117       , OLD_UOM_EXT_ATTR20
6118       , OLD_UOM_EXT_ATTR21
6119       , OLD_UOM_EXT_ATTR22
6120       , OLD_UOM_EXT_ATTR23
6121       , OLD_UOM_EXT_ATTR24
6122       , OLD_UOM_EXT_ATTR25
6123       , PARTY_ID
6124       , OLD_PARTY_ID
6125       , CONTACT_TYPE
6126       , PARTY_ROLE_CODE
6127       , EXT_ATTR_MODIFIED_ON
6128       , EXT_ATTR_MODIFIED_BY
6129       )
6130       VALUES
6131       ( l_ext_audit_id
6132       , P_new_ext_attrs(l_table_index).extension_ID
6133       , TO_NUMBER(p_new_ext_attrs(l_table_index).pk_column_1)
6134       , P_new_ext_attrs(l_table_index).context
6135       , P_new_ext_attrs(l_table_index).attr_group_id
6136       , l_last_update_date
6137       , l_last_updated_by
6138       , l_last_update_date
6139       , l_last_updated_by
6140       , l_last_update_login
6141       , P_new_ext_attrs(l_table_index).C_ext_attr1
6142       , P_new_ext_attrs(l_table_index).C_ext_attr2
6143       , P_new_ext_attrs(l_table_index).C_ext_attr3
6144       , P_new_ext_attrs(l_table_index).C_ext_attr4
6145       , P_new_ext_attrs(l_table_index).C_ext_attr5
6146       , P_new_ext_attrs(l_table_index).C_ext_attr6
6147       , P_new_ext_attrs(l_table_index).C_ext_attr7
6148       , P_new_ext_attrs(l_table_index).C_ext_attr8
6149       , P_new_ext_attrs(l_table_index).C_ext_attr9
6150       , P_new_ext_attrs(l_table_index).C_ext_attr10
6151       , P_new_ext_attrs(l_table_index).C_ext_attr11
6152       , P_new_ext_attrs(l_table_index).C_ext_attr12
6153       , P_new_ext_attrs(l_table_index).C_ext_attr13
6154       , P_new_ext_attrs(l_table_index).C_ext_attr14
6155       , P_new_ext_attrs(l_table_index).C_ext_attr15
6156       , P_new_ext_attrs(l_table_index).C_ext_attr16
6157       , P_new_ext_attrs(l_table_index).C_ext_attr17
6158       , P_new_ext_attrs(l_table_index).C_ext_attr18
6159       , P_new_ext_attrs(l_table_index).C_ext_attr19
6160       , P_new_ext_attrs(l_table_index).C_ext_attr20
6161       , P_new_ext_attrs(l_table_index).C_ext_attr21
6162       , P_new_ext_attrs(l_table_index).C_ext_attr22
6163       , P_new_ext_attrs(l_table_index).C_ext_attr23
6164       , P_new_ext_attrs(l_table_index).C_ext_attr24
6165       , P_new_ext_attrs(l_table_index).C_ext_attr25
6166       , P_new_ext_attrs(l_table_index).C_ext_attr26
6167       , P_new_ext_attrs(l_table_index).C_ext_attr27
6168       , P_new_ext_attrs(l_table_index).C_ext_attr28
6169       , P_new_ext_attrs(l_table_index).C_ext_attr29
6170       , P_new_ext_attrs(l_table_index).C_ext_attr30
6171       , P_new_ext_attrs(l_table_index).C_ext_attr31
6172       , P_new_ext_attrs(l_table_index).C_ext_attr32
6173       , P_new_ext_attrs(l_table_index).C_ext_attr33
6174       , P_new_ext_attrs(l_table_index).C_ext_attr34
6175       , P_new_ext_attrs(l_table_index).C_ext_attr35
6176       , P_new_ext_attrs(l_table_index).C_ext_attr36
6177       , P_new_ext_attrs(l_table_index).C_ext_attr37
6178       , P_new_ext_attrs(l_table_index).C_ext_attr38
6179       , P_new_ext_attrs(l_table_index).C_ext_attr39
6180       , P_new_ext_attrs(l_table_index).C_ext_attr40
6181       , P_new_ext_attrs(l_table_index).C_ext_attr41
6182       , P_new_ext_attrs(l_table_index).C_ext_attr42
6183       , P_new_ext_attrs(l_table_index).C_ext_attr43
6184       , P_new_ext_attrs(l_table_index).C_ext_attr44
6185       , P_new_ext_attrs(l_table_index).C_ext_attr45
6186       , P_new_ext_attrs(l_table_index).C_ext_attr46
6187       , P_new_ext_attrs(l_table_index).C_ext_attr47
6188       , P_new_ext_attrs(l_table_index).C_ext_attr48
6189       , P_new_ext_attrs(l_table_index).C_ext_attr49
6190       , P_new_ext_attrs(l_table_index).C_ext_attr50
6191       , P_old_ext_attrs(l_table_index).C_ext_attr1
6192       , P_old_ext_attrs(l_table_index).C_ext_attr2
6193       , P_old_ext_attrs(l_table_index).C_ext_attr3
6194       , P_old_ext_attrs(l_table_index).C_ext_attr4
6195       , P_old_ext_attrs(l_table_index).C_ext_attr5
6196       , P_old_ext_attrs(l_table_index).C_ext_attr6
6197       , P_old_ext_attrs(l_table_index).C_ext_attr7
6198       , P_old_ext_attrs(l_table_index).C_ext_attr8
6199       , P_old_ext_attrs(l_table_index).C_ext_attr9
6200       , P_old_ext_attrs(l_table_index).C_ext_attr10
6201       , P_old_ext_attrs(l_table_index).C_ext_attr11
6202       , P_old_ext_attrs(l_table_index).C_ext_attr12
6203       , P_old_ext_attrs(l_table_index).C_ext_attr13
6204       , P_old_ext_attrs(l_table_index).C_ext_attr14
6205       , P_old_ext_attrs(l_table_index).C_ext_attr15
6206       , P_old_ext_attrs(l_table_index).C_ext_attr16
6207       , P_old_ext_attrs(l_table_index).C_ext_attr17
6208       , P_old_ext_attrs(l_table_index).C_ext_attr18
6209       , P_old_ext_attrs(l_table_index).C_ext_attr19
6210       , P_old_ext_attrs(l_table_index).C_ext_attr20
6211       , P_old_ext_attrs(l_table_index).C_ext_attr21
6212       , P_old_ext_attrs(l_table_index).C_ext_attr22
6213       , P_old_ext_attrs(l_table_index).C_ext_attr23
6214       , P_old_ext_attrs(l_table_index).C_ext_attr24
6215       , P_old_ext_attrs(l_table_index).C_ext_attr25
6216       , P_old_ext_attrs(l_table_index).C_ext_attr26
6217       , P_old_ext_attrs(l_table_index).C_ext_attr27
6218       , P_old_ext_attrs(l_table_index).C_ext_attr28
6219       , P_old_ext_attrs(l_table_index).C_ext_attr29
6220       , P_old_ext_attrs(l_table_index).C_ext_attr30
6221       , P_old_ext_attrs(l_table_index).C_ext_attr31
6222       , P_old_ext_attrs(l_table_index).C_ext_attr32
6223       , P_old_ext_attrs(l_table_index).C_ext_attr33
6224       , P_old_ext_attrs(l_table_index).C_ext_attr34
6225       , P_old_ext_attrs(l_table_index).C_ext_attr35
6226       , P_old_ext_attrs(l_table_index).C_ext_attr36
6227       , P_old_ext_attrs(l_table_index).C_ext_attr37
6228       , P_old_ext_attrs(l_table_index).C_ext_attr38
6229       , P_old_ext_attrs(l_table_index).C_ext_attr39
6230       , P_old_ext_attrs(l_table_index).C_ext_attr40
6231       , P_old_ext_attrs(l_table_index).C_ext_attr41
6232       , P_old_ext_attrs(l_table_index).C_ext_attr42
6233       , P_old_ext_attrs(l_table_index).C_ext_attr43
6234       , P_old_ext_attrs(l_table_index).C_ext_attr44
6235       , P_old_ext_attrs(l_table_index).C_ext_attr45
6236       , P_old_ext_attrs(l_table_index).C_ext_attr46
6237       , P_old_ext_attrs(l_table_index).C_ext_attr47
6238       , P_old_ext_attrs(l_table_index).C_ext_attr48
6239       , P_old_ext_attrs(l_table_index).C_ext_attr49
6240       , P_old_ext_attrs(l_table_index).C_ext_attr50
6241       , P_new_ext_attrs(l_table_index).N_ext_attr1
6242       , P_new_ext_attrs(l_table_index).N_ext_attr2
6243       , P_new_ext_attrs(l_table_index).N_ext_attr3
6244       , P_new_ext_attrs(l_table_index).N_ext_attr4
6245       , P_new_ext_attrs(l_table_index).N_ext_attr5
6246       , P_new_ext_attrs(l_table_index).N_ext_attr6
6247       , P_new_ext_attrs(l_table_index).N_ext_attr7
6248       , P_new_ext_attrs(l_table_index).N_ext_attr8
6249       , P_new_ext_attrs(l_table_index).N_ext_attr9
6250       , P_new_ext_attrs(l_table_index).N_ext_attr10
6251       , P_new_ext_attrs(l_table_index).N_ext_attr11
6252       , P_new_ext_attrs(l_table_index).N_ext_attr12
6253       , P_new_ext_attrs(l_table_index).N_ext_attr13
6254       , P_new_ext_attrs(l_table_index).N_ext_attr14
6255       , P_new_ext_attrs(l_table_index).N_ext_attr15
6256       , P_new_ext_attrs(l_table_index).N_ext_attr16
6257       , P_new_ext_attrs(l_table_index).N_ext_attr17
6258       , P_new_ext_attrs(l_table_index).N_ext_attr18
6259       , P_new_ext_attrs(l_table_index).N_ext_attr19
6260       , P_new_ext_attrs(l_table_index).N_ext_attr20
6261       , P_new_ext_attrs(l_table_index).N_ext_attr21
6262       , P_new_ext_attrs(l_table_index).N_ext_attr22
6263       , P_new_ext_attrs(l_table_index).N_ext_attr23
6264       , P_new_ext_attrs(l_table_index).N_ext_attr24
6265       , P_new_ext_attrs(l_table_index).N_ext_attr25
6266       , P_old_ext_attrs(l_table_index).N_ext_attr1
6267       , P_old_ext_attrs(l_table_index).N_ext_attr2
6268       , P_old_ext_attrs(l_table_index).N_ext_attr3
6269       , P_old_ext_attrs(l_table_index).N_ext_attr4
6270       , P_old_ext_attrs(l_table_index).N_ext_attr5
6271       , P_old_ext_attrs(l_table_index).N_ext_attr6
6272       , P_old_ext_attrs(l_table_index).N_ext_attr7
6273       , P_old_ext_attrs(l_table_index).N_ext_attr8
6274       , P_old_ext_attrs(l_table_index).N_ext_attr9
6275       , P_old_ext_attrs(l_table_index).N_ext_attr10
6276       , P_old_ext_attrs(l_table_index).N_ext_attr11
6277       , P_old_ext_attrs(l_table_index).N_ext_attr12
6278       , P_old_ext_attrs(l_table_index).N_ext_attr13
6279       , P_old_ext_attrs(l_table_index).N_ext_attr14
6280       , P_old_ext_attrs(l_table_index).N_ext_attr15
6281       , P_old_ext_attrs(l_table_index).N_ext_attr16
6282       , P_old_ext_attrs(l_table_index).N_ext_attr17
6283       , P_old_ext_attrs(l_table_index).N_ext_attr18
6284       , P_old_ext_attrs(l_table_index).N_ext_attr19
6285       , P_old_ext_attrs(l_table_index).N_ext_attr20
6286       , P_old_ext_attrs(l_table_index).N_ext_attr21
6287       , P_old_ext_attrs(l_table_index).N_ext_attr22
6288       , P_old_ext_attrs(l_table_index).N_ext_attr23
6289       , P_old_ext_attrs(l_table_index).N_ext_attr24
6290       , P_old_ext_attrs(l_table_index).N_ext_attr25
6291       , P_new_ext_attrs(l_table_index).D_EXT_ATTR1
6292       , P_new_ext_attrs(l_table_index).D_EXT_ATTR2
6293       , P_new_ext_attrs(l_table_index).D_EXT_ATTR3
6294       , P_new_ext_attrs(l_table_index).D_EXT_ATTR4
6295       , P_new_ext_attrs(l_table_index).D_EXT_ATTR5
6296       , P_new_ext_attrs(l_table_index).D_EXT_ATTR6
6297       , P_new_ext_attrs(l_table_index).D_EXT_ATTR7
6298       , P_new_ext_attrs(l_table_index).D_EXT_ATTR8
6299       , P_new_ext_attrs(l_table_index).D_EXT_ATTR9
6300       , P_new_ext_attrs(l_table_index).D_EXT_ATTR10
6301       , P_new_ext_attrs(l_table_index).D_EXT_ATTR11
6302       , P_new_ext_attrs(l_table_index).D_EXT_ATTR12
6303       , P_new_ext_attrs(l_table_index).D_EXT_ATTR13
6304       , P_new_ext_attrs(l_table_index).D_EXT_ATTR14
6305       , P_new_ext_attrs(l_table_index).D_EXT_ATTR15
6306       , P_new_ext_attrs(l_table_index).D_EXT_ATTR16
6307       , P_new_ext_attrs(l_table_index).D_EXT_ATTR17
6308       , P_new_ext_attrs(l_table_index).D_EXT_ATTR18
6309       , P_new_ext_attrs(l_table_index).D_EXT_ATTR19
6310       , P_new_ext_attrs(l_table_index).D_EXT_ATTR20
6311       , P_new_ext_attrs(l_table_index).D_EXT_ATTR21
6312       , P_new_ext_attrs(l_table_index).D_EXT_ATTR22
6313       , P_new_ext_attrs(l_table_index).D_EXT_ATTR23
6314       , P_new_ext_attrs(l_table_index).D_EXT_ATTR24
6315       , P_new_ext_attrs(l_table_index).D_EXT_ATTR25
6316       , P_old_ext_attrs(l_table_index).D_ext_attr1
6317       , P_old_ext_attrs(l_table_index).D_ext_attr2
6318       , P_old_ext_attrs(l_table_index).D_ext_attr3
6319       , P_old_ext_attrs(l_table_index).D_ext_attr4
6320       , P_old_ext_attrs(l_table_index).D_ext_attr5
6321       , P_old_ext_attrs(l_table_index).D_ext_attr6
6322       , P_old_ext_attrs(l_table_index).D_ext_attr7
6323       , P_old_ext_attrs(l_table_index).D_ext_attr8
6324       , P_old_ext_attrs(l_table_index).D_ext_attr9
6325       , P_old_ext_attrs(l_table_index).D_ext_attr10
6326       , P_old_ext_attrs(l_table_index).D_ext_attr11
6327       , P_old_ext_attrs(l_table_index).D_ext_attr12
6328       , P_old_ext_attrs(l_table_index).D_ext_attr13
6329       , P_old_ext_attrs(l_table_index).D_ext_attr14
6330       , P_old_ext_attrs(l_table_index).D_ext_attr15
6331       , P_old_ext_attrs(l_table_index).D_ext_attr16
6332       , P_old_ext_attrs(l_table_index).D_ext_attr17
6333       , P_old_ext_attrs(l_table_index).D_ext_attr18
6334       , P_old_ext_attrs(l_table_index).D_ext_attr19
6335       , P_old_ext_attrs(l_table_index).D_ext_attr20
6336       , P_old_ext_attrs(l_table_index).D_ext_attr21
6337       , P_old_ext_attrs(l_table_index).D_ext_attr22
6338       , P_old_ext_attrs(l_table_index).D_ext_attr23
6339       , P_old_ext_attrs(l_table_index).D_ext_attr24
6340       , P_old_ext_attrs(l_table_index).D_ext_attr25
6341       , P_new_ext_attrs(l_table_index).UOM_ext_attr1
6342       , P_new_ext_attrs(l_table_index).UOM_ext_attr2
6343       , P_new_ext_attrs(l_table_index).UOM_ext_attr3
6344       , P_new_ext_attrs(l_table_index).UOM_ext_attr4
6345       , P_new_ext_attrs(l_table_index).UOM_ext_attr5
6346       , P_new_ext_attrs(l_table_index).UOM_ext_attr6
6347       , P_new_ext_attrs(l_table_index).UOM_ext_attr7
6348       , P_new_ext_attrs(l_table_index).UOM_ext_attr8
6349       , P_new_ext_attrs(l_table_index).UOM_ext_attr9
6350       , P_new_ext_attrs(l_table_index).UOM_ext_attr10
6351       , P_new_ext_attrs(l_table_index).UOM_ext_attr11
6352       , P_new_ext_attrs(l_table_index).UOM_ext_attr12
6353       , P_new_ext_attrs(l_table_index).UOM_ext_attr13
6354       , P_new_ext_attrs(l_table_index).UOM_ext_attr14
6355       , P_new_ext_attrs(l_table_index).UOM_ext_attr15
6356       , P_new_ext_attrs(l_table_index).UOM_ext_attr16
6357       , P_new_ext_attrs(l_table_index).UOM_ext_attr17
6358       , P_new_ext_attrs(l_table_index).UOM_ext_attr18
6359       , P_new_ext_attrs(l_table_index).UOM_ext_attr19
6360       , P_new_ext_attrs(l_table_index).UOM_ext_attr20
6361       , P_new_ext_attrs(l_table_index).UOM_ext_attr21
6362       , P_new_ext_attrs(l_table_index).UOM_ext_attr22
6363       , P_new_ext_attrs(l_table_index).UOM_ext_attr23
6364       , P_new_ext_attrs(l_table_index).UOM_ext_attr24
6365       , P_new_ext_attrs(l_table_index).UOM_ext_attr25
6366       , P_old_ext_attrs(l_table_index).UOM_ext_attr1
6367       , P_old_ext_attrs(l_table_index).UOM_ext_attr2
6368       , P_old_ext_attrs(l_table_index).UOM_ext_attr3
6369       , P_old_ext_attrs(l_table_index).UOM_ext_attr4
6370       , P_old_ext_attrs(l_table_index).UOM_ext_attr5
6371       , P_old_ext_attrs(l_table_index).UOM_ext_attr6
6372       , P_old_ext_attrs(l_table_index).UOM_ext_attr7
6373       , P_old_ext_attrs(l_table_index).UOM_ext_attr8
6374       , P_old_ext_attrs(l_table_index).UOM_ext_attr9
6375       , P_old_ext_attrs(l_table_index).UOM_ext_attr10
6376       , P_old_ext_attrs(l_table_index).UOM_ext_attr11
6377       , P_old_ext_attrs(l_table_index).UOM_ext_attr12
6378       , P_old_ext_attrs(l_table_index).UOM_ext_attr13
6379       , P_old_ext_attrs(l_table_index).UOM_ext_attr14
6380       , P_old_ext_attrs(l_table_index).UOM_ext_attr15
6381       , P_old_ext_attrs(l_table_index).UOM_ext_attr16
6382       , P_old_ext_attrs(l_table_index).UOM_ext_attr17
6383       , P_old_ext_attrs(l_table_index).UOM_ext_attr18
6384       , P_old_ext_attrs(l_table_index).UOM_ext_attr19
6385       , P_old_ext_attrs(l_table_index).UOM_ext_attr20
6386       , P_old_ext_attrs(l_table_index).UOM_ext_attr21
6387       , P_old_ext_attrs(l_table_index).UOM_ext_attr22
6388       , P_old_ext_attrs(l_table_index).UOM_ext_attr23
6389       , P_old_ext_attrs(l_table_index).UOM_ext_attr24
6390       , P_old_ext_attrs(l_table_index).UOM_ext_attr25
6391       , TO_NUMBER(P_new_ext_attrs(l_table_index).pk_column_2)
6392       , TO_NUMBER(P_old_ext_attrs(l_table_index).pk_column_2)
6393       , P_new_ext_attrs(l_table_index).pk_column_3
6394       , P_new_ext_attrs(l_table_index).pk_column_4
6395       , l_modified_on
6396       , l_modified_by
6397       );
6398 
6399     END LOOP;
6400 
6401   END IF ;    -- no records in the table.
6402 
6403 
6404 EXCEPTION
6405   WHEN OTHERS THEN
6406     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6407     FND_MESSAGE.set_name ('CS', 'CS_API_SR_UNKNOWN_ERROR');
6408     FND_MESSAGE.set_token('P_TEXT','cs_sr_ext_attr_data_pvt.insert_sr_row'||'-'||substr(SQLERRM,1,200));
6409     FND_MSG_PUB.ADD;
6410     FND_MSG_PUB.Count_And_Get
6411     ( p_count => x_msg_count
6412     , p_data  => x_msg_data
6413     );
6414 
6415 END insert_pr_row;
6416 
6417 PROCEDURE GET_MULTI_ROW_UNIQUE_KEY(p_attr_group_name IN VARCHAR2
6418                                   ,p_attr_group_type IN VARCHAR2
6419                                   ,p_application_id IN NUMBER
6420                                   ,x_attr_name OUT NOCOPY VARCHAR2
6421                                   ,x_database_column OUT NOCOPY VARCHAR2) IS
6422 
6423 Cursor c_get_unique_key (p_attr_group_name IN NUMBER,
6424                          p_attr_group_type IN NUMBER,
6425                          p_application_id IN NUMBER) IS
6426 select attr_name, database_column
6427   from ego_attrs_v
6428 where attr_group_name = p_attr_group_name
6429   and attr_group_type = p_attr_group_type
6430   and application_id =  p_application_id
6431   and unique_key_flag = 'Y';
6432 
6433 BEGIN
6434 
6435 OPEN c_get_unique_key (p_attr_group_name
6436                       ,p_attr_group_type
6437                       ,p_application_id);
6438 FETCH c_get_unique_key INTO x_attr_name, x_database_column;
6439 CLOSE c_get_unique_key;
6440 
6441 EXCEPTION
6442 
6443 WHEN OTHERS THEN
6444   --MAYA NEED TO CODE
6445   null;
6446 
6447 END GET_MULTI_ROW_UNIQUE_KEY;
6448 
6449 PROCEDURE INIT_AUDIT_REC(p_count IN NUMBER,
6450         p_audit_rec IN OUT NOCOPY Ext_Attr_Audit_Tbl_Type) IS
6451 
6452 
6453 BEGIN
6454 
6455 FOR i IN 1 .. p_count LOOP
6456 
6457   p_audit_rec(i) := NULL;
6458 
6459 END LOOP;
6460 
6461 END INIT_AUDIT_REC;
6462 
6463 
6464 -- -----------------------------------------------------------------------------
6465 -- Procedure Name : Log_EGO_EXT_Parameters
6466 -- Parameters     :
6467 -- IN             :
6468 -- OUT            :
6469 --
6470 -- Description    : Procedure to LOG the in parameters of PVT SR Ext Attrs procedures
6471 --
6472 --
6473 -- Modification History:
6474 -- Date     Name     Desc
6475 -- -------- -------- -----------------------------------------------------------
6476 -- 11/08/05 mviswana   Created
6477 -- -----------------------------------------------------------------------------
6478 PROCEDURE Log_EGO_Ext_PVT_Parameters(
6479                 p_ext_attr_grp_tbl        IN     EGO_USER_ATTR_ROW_TABLE
6480                ,p_ext_attr_tbl            IN     EGO_USER_ATTR_DATA_TABLE)
6481 
6482 IS
6483 
6484   l_api_name	       CONSTANT	VARCHAR2(30)	:= 'Get_SR_Ext_Attrs';
6485   l_api_name_full      CONSTANT	VARCHAR2(61)	:= G_PKG_NAME||'.'||l_api_name;
6486   l_log_module         CONSTANT VARCHAR2(255)   := 'cs.plsql.' || l_api_name_full || '.';
6487   l_attr_grp_index     BINARY_INTEGER;
6488   l_attr_index         BINARY_INTEGER;
6489 
6490 BEGIN
6491 
6492   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
6493     -- For Attribute Group
6494     l_attr_grp_index := p_ext_attr_grp_tbl.FIRST;
6495     WHILE l_attr_grp_index IS NOT NULL LOOP
6496 
6497 	FND_LOG.String
6498         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6499          , 'row_identifier             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).row_identifier
6500         );
6501 
6502 	FND_LOG.String
6503         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6504          , 'attr_group_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_ID
6505         );
6506 
6507 	FND_LOG.String
6508         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6509          , 'attr_group_app_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_APP_ID
6510         );
6511 
6512 	FND_LOG.String
6513         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6514          , 'attr_group_type             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_TYPE
6515         );
6516 
6517 	FND_LOG.String
6518         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6519          , 'attr_group_name              	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).ATTR_GROUP_NAME
6520         );
6521 
6522 	FND_LOG.String
6523         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6524          , 'data_level_1	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_1
6525         );
6526 
6527 	FND_LOG.String
6528         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6529          , 'data_level_2	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_2
6530         );
6531 
6532 	FND_LOG.String
6533         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6534          , 'data_level_3	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).DATA_LEVEL_3
6535         );
6536 
6537 	FND_LOG.String
6538         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6539          , 'transaction_type	             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).TRANSACTION_TYPE
6540         );
6541 
6542     END LOOP;
6543 
6544     l_attr_index := p_ext_attr_tbl.FIRST;
6545     WHILE l_attr_index IS NOT NULL LOOP
6546 
6547       FND_LOG.String
6548          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6549          , 'row_identifier             	:' || p_ext_attr_tbl(l_attr_index).row_identifier
6550         );
6551 
6552       FND_LOG.String
6553          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6554          , 'attr_name             	:' || p_ext_attr_tbl(l_attr_index).ATTR_NAME
6555         );
6556 
6557       FND_LOG.String
6558          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6559          , 'attr_value_str             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_STR
6560         );
6561 
6562       FND_LOG.String
6563          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6564          , 'attr_value_num             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_NUM
6565         );
6566 
6567       FND_LOG.String
6568          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6569          , 'attr_value_date             	:' || p_ext_attr_tbl(l_attr_index).ATTR_VALUE_DATE
6570         );
6571 
6572       FND_LOG.String
6573          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6574          , 'attr_value_display             	:' || p_ext_attr_tbl(l_attr_index).ATTR_DISP_VALUE
6575         );
6576 
6577       FND_LOG.String
6578          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6579          , 'attr_uom		            	:' || p_ext_attr_tbl(l_attr_index).ATTR_UNIT_OF_MEASURE
6580         );
6581 
6582       FND_LOG.String
6583          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6584          , 'attr_row_id		            	:' || p_ext_attr_tbl(l_attr_index).USER_ROW_IDENTIFIER
6585         );
6586 
6587     END LOOP;
6588 
6589   END IF;
6590 END;
6591 
6592 
6593 -- -----------------------------------------------------------------------------
6594 -- Procedure Name : Log_EXT_PVT_Parameters
6595 -- Parameters     :
6596 -- IN             :
6597 -- OUT            :
6598 --
6599 -- Description    : Procedure to LOG the in parameters of PVT SR Ext Attrs procedures
6600 --
6601 --
6602 -- Modification History:
6603 -- Date     Name     Desc
6604 -- -------- -------- -----------------------------------------------------------
6605 -- 11/08/05 mviswana   Created
6606 -- -----------------------------------------------------------------------------
6607 PROCEDURE Log_EXT_PVT_Parameters (
6608           p_ext_attr_grp_tbl   IN CS_ServiceRequest_PUB.EXT_ATTR_GRP_TBL_TYPE
6609          ,p_ext_attr_tbl       IN CS_ServiceRequest_PUB.EXT_ATTR_TBL_TYPE )
6610 IS
6611 
6612   l_api_name	       CONSTANT	VARCHAR2(30)	:= 'Process_SR_Ext_Attrs';
6613   l_api_name_full      CONSTANT	VARCHAR2(61)	:= G_PKG_NAME||'.'||l_api_name;
6614   l_log_module         CONSTANT VARCHAR2(255)   := 'cs.plsql.' || l_api_name_full || '.';
6615   l_attr_grp_index     BINARY_INTEGER;
6616   l_attr_index         BINARY_INTEGER;
6617 
6618 BEGIN
6619 
6620   IF FND_LOG.level_procedure >= FND_LOG.g_current_runtime_level THEN
6621 
6622     -- For Attribute Group
6623     l_attr_grp_index := p_ext_attr_grp_tbl.FIRST;
6624     WHILE l_attr_grp_index IS NOT NULL LOOP
6625 
6626       FND_LOG.String
6627         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6628          , 'row_identifier             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).row_identifier
6629         );
6630 
6631       FND_LOG.String
6632         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6633          , 'pk_column_1             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_1
6634         );
6635 
6636       FND_LOG.String
6637         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6638          , 'pk_column_2             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_2
6639         );
6640 
6641       FND_LOG.String
6642         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6643          , 'pk_column_3             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_3
6644         );
6645 
6646       FND_LOG.String
6647         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6648          , 'pk_column_4             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_4
6649         );
6650 
6651       FND_LOG.String
6652         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6653          , 'pk_column_5             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).pk_column_5
6654         );
6655 
6656       FND_LOG.String
6657         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6658          , 'context             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).context
6659         );
6660 
6661       FND_LOG.String
6662         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6663          , 'object_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).object_name
6664         );
6665 
6666       FND_LOG.String
6667         ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6668          , 'attr_group_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_id
6669         );
6670 
6671       FND_LOG.String
6672          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6673          , 'attr_group_app_id             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_app_id
6674         );
6675 
6676       FND_LOG.String
6677          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6678          , 'attr_group_type             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_type
6679         );
6680 
6681       FND_LOG.String
6682          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6683          , 'attr_group_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_name
6684         );
6685 
6686       FND_LOG.String
6687          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6688          , 'attr_group_disp_name             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).attr_group_disp_name
6689         );
6690 
6691       FND_LOG.String
6692          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6693          , 'mapping_req             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).mapping_req
6694         );
6695 
6696       FND_LOG.String
6697          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6698          , 'operation             	:' ||  p_ext_attr_grp_tbl(l_attr_grp_index).operation
6699         );
6700       l_attr_grp_index := p_ext_attr_grp_tbl.NEXT(l_attr_grp_index);
6701     END LOOP;
6702 
6703     -- For Attribute
6704     l_attr_index := p_ext_attr_tbl.FIRST;
6705     WHILE l_attr_index IS NOT NULL LOOP
6706 
6707       FND_LOG.String
6708          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6709          , 'row_identifier             	:' || p_ext_attr_tbl(l_attr_index).row_identifier
6710         );
6711 
6712       FND_LOG.String
6713          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6714          , 'column_name             	:' || p_ext_attr_tbl(l_attr_index).column_name
6715         );
6716 
6717       FND_LOG.String
6718          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6719          , 'attr_name             	:' || p_ext_attr_tbl(l_attr_index).attr_name
6720         );
6721 
6722       FND_LOG.String
6723          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6724          , 'attr_disp_name             	:' || p_ext_attr_tbl(l_attr_index).attr_disp_name
6725         );
6726 
6727 
6728       FND_LOG.String
6729          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6730          , 'attr_value_str             	:' || p_ext_attr_tbl(l_attr_index).attr_value_str
6731         );
6732 
6733       FND_LOG.String
6734          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6735          , 'attr_value_num             	:' || p_ext_attr_tbl(l_attr_index).attr_value_num
6736         );
6737 
6738 
6739       FND_LOG.String
6740          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6741          , 'attr_value_date             	:' || p_ext_attr_tbl(l_attr_index).attr_value_date
6742         );
6743 
6744 
6745       FND_LOG.String
6746          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6747          , 'attr_value_display             	:' || p_ext_attr_tbl(l_attr_index).attr_value_display
6748         );
6749 
6750 
6751       FND_LOG.String
6752          ( FND_LOG.level_procedure , L_LOG_MODULE || ''
6753          , 'attr_unit_of_measure             	:' || p_ext_attr_tbl(l_attr_index).attr_unit_of_measure
6754         );
6755 
6756       l_attr_index := p_ext_attr_tbl.NEXT(l_attr_index);
6757 
6758     END LOOP;
6759   END IF;
6760 
6761 
6762 END;
6763 -- -----------------------------------------------------------------------------
6764 -- Procedure Name : delete_old_context
6765 -- Parameter      :
6766 -- IN             : p_pk_column_1        primary key column # 1
6767 --                : p_context            Extensible attribute context. This is
6768 --                                       value of context being overwritten
6769 -- OUT            : x_return_status      Indicates success or error condition
6770 --                                       encountered by the procedure
6771 --                : x_msg_data           Error message
6772 --                : x_msg_count          Number of error messages
6773 --                : x_errorcode          Error code returned by PLM API
6774 --                : x_failed_row_id_list List of row identifers that failed
6775 --                  PLM processing
6776 -- Description    : This procedure takes incident id and Extensible attribute
6777 --                  context and deletes extensible attribute record
6778 --
6779 -- Modification History
6780 -- Date     Name     Description
6781 -- -------- -------- -----------------------------------------------------------
6782 -- 09/29/05 smisra   Created
6783 -- -------- -------- -----------------------------------------------------------
6784 PROCEDURE delete_old_context
6785 ( p_pk_column_1         IN         NUMBER
6786 , p_context             IN         NUMBER
6787 , x_failed_row_id_list  OUT NOCOPY VARCHAR2
6788 , x_return_status       OUT NOCOPY VARCHAR2
6789 , x_errorcode           OUT NOCOPY NUMBER
6790 , x_msg_count           OUT NOCOPY NUMBER
6791 , x_msg_data            OUT NOCOPY VARCHAR2
6792 ) IS
6793 --
6794 l_pk_name_value_pair          EGO_COL_NAME_VALUE_PAIR_ARRAY;
6795 l_class_code_name_value_pairs EGO_COL_NAME_VALUE_PAIR_ARRAY;
6796 l_user_privileges_on_object   EGO_VARCHAR_TBL_TYPE;
6797 l_user_attr_data_table        EGO_USER_ATTR_DATA_TABLE;
6798 l_user_attr_row_table         EGO_USER_ATTR_ROW_TABLE;
6799 l_count                       NUMBER;
6800 --
6801 CURSOR c_get_old_context_value
6802 ( p_incident_id IN NUMBER
6803 , p_context     IN NUMBER
6804 ) IS
6805 SELECT
6806  attr_group_id
6807 FROM   cs_incidents_ext
6808 WHERE incident_id = p_incident_id
6809   AND context     = p_context
6810 ;
6811 --
6812 BEGIN
6813   l_count := 0;
6814 
6815   --DBMS_OUTPUT.PUT_LINE('Delete Old Context');
6816 
6817   --get all the values in the database for the old context
6818   FOR v_get_old_context_value IN c_get_old_context_value
6819                                  ( p_pk_column_1
6820                                  , p_context
6821                                  )
6822   LOOP
6823     --DBMS_OUTPUT.PUT_LINE('v_get_old_context_value.attr_group_id'||v_get_old_context_value.attr_group_id);
6824 
6825     l_count := l_count + 1;
6826     --set the primary key identifiers to pass to PLM
6827     --populating the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing primary key to PLM
6828     l_pk_name_value_pair := EGO_COL_NAME_VALUE_PAIR_ARRAY
6829                             ( EGO_COL_NAME_VALUE_PAIR_OBJ
6830                               ( 'INCIDENT_ID'
6831                               , p_pk_column_1
6832                               )
6833                             );
6834 
6835     --set the context to pass to PLM only SR_TYPE_ID
6836     --populate the EGO_COL_NAME_VALUE_PAIR_ARRAY Array for passing the context.
6837     l_class_code_name_value_pairs := EGO_COL_NAME_VALUE_PAIR_ARRAY
6838                                      ( EGO_COL_NAME_VALUE_PAIR_OBJ
6839                                        ( 'CONTEXT'
6840                                        , p_context
6841                                        )
6842                                      );
6843 
6844           --Instanciate a new EGO_USER_ATTR_ROW_OBJ (only once)
6845     IF l_user_attr_row_table IS NULL
6846     THEN
6847       l_user_attr_row_table := EGO_USER_ATTR_ROW_TABLE();
6848     END IF;
6849 
6850     --Extend the object to add value it it
6851     l_user_attr_row_table.EXTEND();
6852 /*
6853     l_user_attr_row_table(l_user_attr_row_table.LAST) := EGO_USER_ATTR_ROW_OBJ
6854                                                          ( l_count
6855                                                          , v_get_old_context_value.attr_group_id
6856                                                          , NULL
6857                                                          , NULL
6858                                                          , NULL
6859                                                          , 'GENERIC_LEVEL'
6860                                                          , NULL
6861                                                          , NULL
6862                                                          , EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE
6863                                                          );
6864   */
6865 
6866 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,
6867                                                 NULL,NULL,NULL,'GENERIC_LEVEL', NULL, NULL,NULL,NULL,NULL, EGO_USER_ATTRS_DATA_PVT.G_DELETE_MODE);
6868   END LOOP;
6869   -- Instantiate the attribute table once
6870   l_user_attr_data_table := EGO_USER_ATTR_DATA_TABLE();
6871 
6872   --DBMS_OUTPUT.PUT_LINE('Calling to delete data, user attr row table count:'|| l_user_attr_row_table.count);
6873 
6874   --Call PLM for deleting the old data
6875   EGO_USER_ATTRS_DATA_PUB.Process_User_Attrs_Data
6876   ( p_api_version                   =>  1
6877   , p_object_name                   =>  'CS_SERVICE_REQUEST'
6878   , p_attributes_row_table          =>  l_user_attr_row_table
6879   , p_attributes_data_table         =>  l_user_attr_data_table
6880   , p_pk_column_name_value_pairs    =>  l_pk_name_value_pair
6881   , p_class_code_name_value_pairs   =>  l_class_code_name_value_pairs
6882   , p_user_privileges_on_object     =>  l_user_privileges_on_object
6883   , p_entity_id                     =>  NULL
6884   , p_entity_index                  =>  NULL
6885   , p_entity_code                   =>  NULL
6886   , p_debug_level                   =>  3
6887   , p_init_error_handler            =>  FND_API.G_TRUE
6888   , p_write_to_concurrent_log       =>  FND_API.G_TRUE
6889   , p_init_fnd_msg_list             =>  FND_API.G_FALSE
6890   , p_log_errors                    =>  FND_API.G_TRUE
6891   , p_add_errors_to_fnd_stack       =>  FND_API.G_TRUE
6892   , p_commit                        =>  FND_API.G_FALSE
6893   , x_failed_row_id_list            =>  x_failed_row_id_list
6894   , x_return_status                 =>  x_return_status
6895   , x_errorcode                     =>  x_errorcode
6896   , x_msg_count                     =>  x_msg_count
6897   , x_msg_data                      =>  x_msg_data
6898   );
6899 
6900 --
6901 EXCEPTION
6902   WHEN OTHERS THEN
6903       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6904 END;
6905 
6906 
6907 
6908 
6909 -------------------------------------------------------------------------------
6910 -- Procedure Name : Populate_Ext_Attr_Audit_Tbl
6911 -- Parameters     :
6912 -- IN             : P_EXTENSION_ID
6913 -- OUT            : X_EXT_ATTRS_TBL
6914 --
6915 -- Description : Procedure to populate ext. attr. audit table structure for a given extension_id.
6916 --
6917 -- Modification History:
6918 -- Date     Name     Desc
6919 -------- -------- --------------------------------------------------------------
6920 -- 11/21/2005   spusegao Created
6921 --------------------------------------------------------------------------------
6922 PROCEDURE Populate_Ext_Attr_Audit_Tbl
6923 ( P_EXTENSION_ID    IN        NUMBER
6924 , X_EXT_ATTRS_TBL  OUT NOCOPY Ext_Attr_Audit_Tbl_Type
6925 , X_RETURN_STATUS  OUT NOCOPY VARCHAR2
6926 , X_MSG_COUNT      OUT NOCOPY NUMBER
6927 , X_MSG_DATA       OUT NOCOPY VARCHAR2) IS
6928 
6929 -- Cursor to get the ext.attrs. details for the passed extension_id.
6930 
6931    CURSOR c_get_ext_attrs IS
6932    SELECT *
6933      FROM cs_sr_contacts_EXT
6934     WHERE extension_Id = p_extension_id;
6935 
6936    i   NUMBER := 0 ;
6937 
6938 BEGIN
6939     X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
6940 
6941     -- Get all the ext attrs records for passed extension_id
6942 
6943        FOR c_get_ext_attrs_rec IN c_get_ext_attrs
6944            LOOP
6945             i := 1 ;
6946 
6947             X_EXT_ATTRS_TBL(i).EXTENSION_ID             := c_get_ext_attrs_rec.EXTENSION_ID   ;
6948             X_EXT_ATTRS_TBL(i).PK_COLUMN_1              := c_get_ext_attrs_rec.INCIDENT_ID    ;
6949             X_EXT_ATTRS_TBL(i).PK_COLUMN_2              := c_get_ext_attrs_rec.PARTY_ID       ;
6950             X_EXT_ATTRS_TBL(i).PK_COLUMN_3              := c_get_ext_attrs_rec.CONTACT_TYPE   ;
6951             X_EXT_ATTRS_TBL(i).PK_COLUMN_4              := c_get_ext_attrs_rec.PARTY_ROLE_CODE;
6952             X_EXT_ATTRS_TBL(i).CONTEXT                  := c_get_ext_attrs_rec.CONTEXT        ;
6953             X_EXT_ATTRS_TBL(i).ATTR_GROUP_ID            := c_get_ext_attrs_rec.ATTR_GROUP_ID  ;
6954             X_EXT_ATTRS_TBL(i).C_EXT_ATTR1              := c_get_ext_attrs_rec.C_EXT_ATTR1   ;
6955             X_EXT_ATTRS_TBL(i).C_EXT_ATTR2              := c_get_ext_attrs_rec.C_EXT_ATTR2   ;
6956             X_EXT_ATTRS_TBL(i).C_EXT_ATTR3              := c_get_ext_attrs_rec.C_EXT_ATTR3   ;
6957             X_EXT_ATTRS_TBL(i).C_EXT_ATTR4              := c_get_ext_attrs_rec.C_EXT_ATTR4   ;
6958             X_EXT_ATTRS_TBL(i).C_EXT_ATTR5              := c_get_ext_attrs_rec.C_EXT_ATTR5   ;
6959             X_EXT_ATTRS_TBL(i).C_EXT_ATTR6              := c_get_ext_attrs_rec.C_EXT_ATTR6   ;
6960             X_EXT_ATTRS_TBL(i).C_EXT_ATTR7              := c_get_ext_attrs_rec.C_EXT_ATTR7   ;
6961             X_EXT_ATTRS_TBL(i).C_EXT_ATTR8              := c_get_ext_attrs_rec.C_EXT_ATTR8   ;
6962             X_EXT_ATTRS_TBL(i).C_EXT_ATTR9              := c_get_ext_attrs_rec.C_EXT_ATTR9   ;
6963             X_EXT_ATTRS_TBL(i).C_EXT_ATTR10             := c_get_ext_attrs_rec.C_EXT_ATTR10  ;
6964             X_EXT_ATTRS_TBL(i).C_EXT_ATTR11             := c_get_ext_attrs_rec.C_EXT_ATTR11   ;
6965             X_EXT_ATTRS_TBL(i).C_EXT_ATTR12             := c_get_ext_attrs_rec.C_EXT_ATTR12   ;
6966             X_EXT_ATTRS_TBL(i).C_EXT_ATTR13             := c_get_ext_attrs_rec.C_EXT_ATTR13   ;
6967             X_EXT_ATTRS_TBL(i).C_EXT_ATTR14             := c_get_ext_attrs_rec.C_EXT_ATTR14   ;
6968             X_EXT_ATTRS_TBL(i).C_EXT_ATTR15             := c_get_ext_attrs_rec.C_EXT_ATTR15   ;
6969             X_EXT_ATTRS_TBL(i).C_EXT_ATTR16             := c_get_ext_attrs_rec.C_EXT_ATTR16   ;
6970             X_EXT_ATTRS_TBL(i).C_EXT_ATTR17             := c_get_ext_attrs_rec.C_EXT_ATTR17   ;
6971             X_EXT_ATTRS_TBL(i).C_EXT_ATTR18             := c_get_ext_attrs_rec.C_EXT_ATTR18   ;
6972             X_EXT_ATTRS_TBL(i).C_EXT_ATTR19             := c_get_ext_attrs_rec.C_EXT_ATTR19   ;
6973             X_EXT_ATTRS_TBL(i).C_EXT_ATTR20             := c_get_ext_attrs_rec.C_EXT_ATTR20   ;
6974             X_EXT_ATTRS_TBL(i).C_EXT_ATTR21             := c_get_ext_attrs_rec.C_EXT_ATTR21   ;
6975             X_EXT_ATTRS_TBL(i).C_EXT_ATTR22             := c_get_ext_attrs_rec.C_EXT_ATTR22   ;
6976             X_EXT_ATTRS_TBL(i).C_EXT_ATTR23             := c_get_ext_attrs_rec.C_EXT_ATTR23   ;
6977             X_EXT_ATTRS_TBL(i).C_EXT_ATTR24             := c_get_ext_attrs_rec.C_EXT_ATTR24   ;
6978             X_EXT_ATTRS_TBL(i).C_EXT_ATTR25             := c_get_ext_attrs_rec.C_EXT_ATTR25   ;
6979             X_EXT_ATTRS_TBL(i).C_EXT_ATTR26             := c_get_ext_attrs_rec.C_EXT_ATTR26   ;
6980             X_EXT_ATTRS_TBL(i).C_EXT_ATTR27             := c_get_ext_attrs_rec.C_EXT_ATTR27   ;
6981             X_EXT_ATTRS_TBL(i).C_EXT_ATTR28             := c_get_ext_attrs_rec.C_EXT_ATTR28   ;
6982             X_EXT_ATTRS_TBL(i).C_EXT_ATTR29             := c_get_ext_attrs_rec.C_EXT_ATTR29   ;
6983             X_EXT_ATTRS_TBL(i).C_EXT_ATTR30             := c_get_ext_attrs_rec.C_EXT_ATTR30   ;
6984             X_EXT_ATTRS_TBL(i).C_EXT_ATTR31             := c_get_ext_attrs_rec.C_EXT_ATTR31   ;
6985             X_EXT_ATTRS_TBL(i).C_EXT_ATTR32             := c_get_ext_attrs_rec.C_EXT_ATTR32   ;
6986             X_EXT_ATTRS_TBL(i).C_EXT_ATTR33             := c_get_ext_attrs_rec.C_EXT_ATTR33   ;
6987             X_EXT_ATTRS_TBL(i).C_EXT_ATTR34             := c_get_ext_attrs_rec.C_EXT_ATTR34   ;
6988             X_EXT_ATTRS_TBL(i).C_EXT_ATTR35             := c_get_ext_attrs_rec.C_EXT_ATTR35   ;
6989             X_EXT_ATTRS_TBL(i).C_EXT_ATTR36             := c_get_ext_attrs_rec.C_EXT_ATTR36   ;
6990             X_EXT_ATTRS_TBL(i).C_EXT_ATTR37             := c_get_ext_attrs_rec.C_EXT_ATTR37   ;
6991             X_EXT_ATTRS_TBL(i).C_EXT_ATTR38             := c_get_ext_attrs_rec.C_EXT_ATTR38   ;
6992             X_EXT_ATTRS_TBL(i).C_EXT_ATTR39             := c_get_ext_attrs_rec.C_EXT_ATTR39   ;
6993             X_EXT_ATTRS_TBL(i).C_EXT_ATTR40             := c_get_ext_attrs_rec.C_EXT_ATTR40   ;
6994             X_EXT_ATTRS_TBL(i).C_EXT_ATTR41             := c_get_ext_attrs_rec.C_EXT_ATTR41   ;
6995             X_EXT_ATTRS_TBL(i).C_EXT_ATTR42             := c_get_ext_attrs_rec.C_EXT_ATTR42   ;
6996             X_EXT_ATTRS_TBL(i).C_EXT_ATTR43             := c_get_ext_attrs_rec.C_EXT_ATTR43   ;
6997             X_EXT_ATTRS_TBL(i).C_EXT_ATTR44             := c_get_ext_attrs_rec.C_EXT_ATTR44   ;
6998             X_EXT_ATTRS_TBL(i).C_EXT_ATTR45             := c_get_ext_attrs_rec.C_EXT_ATTR45   ;
6999             X_EXT_ATTRS_TBL(i).C_EXT_ATTR46             := c_get_ext_attrs_rec.C_EXT_ATTR46   ;
7000             X_EXT_ATTRS_TBL(i).C_EXT_ATTR47             := c_get_ext_attrs_rec.C_EXT_ATTR47   ;
7001             X_EXT_ATTRS_TBL(i).C_EXT_ATTR48             := c_get_ext_attrs_rec.C_EXT_ATTR48   ;
7002             X_EXT_ATTRS_TBL(i).C_EXT_ATTR49             := c_get_ext_attrs_rec.C_EXT_ATTR49   ;
7003             X_EXT_ATTRS_TBL(i).C_EXT_ATTR50             := c_get_ext_attrs_rec.C_EXT_ATTR50   ;
7004             X_EXT_ATTRS_TBL(i).N_EXT_ATTR1              := c_get_ext_attrs_rec.N_EXT_ATTR1    ;
7005             X_EXT_ATTRS_TBL(i).N_EXT_ATTR2              := c_get_ext_attrs_rec.N_EXT_ATTR2    ;
7006             X_EXT_ATTRS_TBL(i).N_EXT_ATTR3              := c_get_ext_attrs_rec.N_EXT_ATTR3    ;
7007             X_EXT_ATTRS_TBL(i).N_EXT_ATTR4              := c_get_ext_attrs_rec.N_EXT_ATTR4    ;
7008             X_EXT_ATTRS_TBL(i).N_EXT_ATTR5              := c_get_ext_attrs_rec.N_EXT_ATTR5    ;
7009             X_EXT_ATTRS_TBL(i).N_EXT_ATTR6              := c_get_ext_attrs_rec.N_EXT_ATTR6    ;
7010             X_EXT_ATTRS_TBL(i).N_EXT_ATTR7              := c_get_ext_attrs_rec.N_EXT_ATTR7    ;
7011             X_EXT_ATTRS_TBL(i).N_EXT_ATTR8              := c_get_ext_attrs_rec.N_EXT_ATTR8    ;
7012             X_EXT_ATTRS_TBL(i).N_EXT_ATTR9              := c_get_ext_attrs_rec.N_EXT_ATTR9    ;
7013             X_EXT_ATTRS_TBL(i).N_EXT_ATTR10             := c_get_ext_attrs_rec.N_EXT_ATTR10   ;
7014             X_EXT_ATTRS_TBL(i).N_EXT_ATTR11             := c_get_ext_attrs_rec.N_EXT_ATTR11   ;
7015             X_EXT_ATTRS_TBL(i).N_EXT_ATTR12             := c_get_ext_attrs_rec.N_EXT_ATTR12   ;
7016             X_EXT_ATTRS_TBL(i).N_EXT_ATTR13             := c_get_ext_attrs_rec.N_EXT_ATTR13   ;
7017             X_EXT_ATTRS_TBL(i).N_EXT_ATTR14             := c_get_ext_attrs_rec.N_EXT_ATTR14   ;
7018             X_EXT_ATTRS_TBL(i).N_EXT_ATTR15             := c_get_ext_attrs_rec.N_EXT_ATTR15   ;
7019             X_EXT_ATTRS_TBL(i).N_EXT_ATTR16             := c_get_ext_attrs_rec.N_EXT_ATTR16   ;
7020             X_EXT_ATTRS_TBL(i).N_EXT_ATTR17             := c_get_ext_attrs_rec.N_EXT_ATTR17   ;
7021             X_EXT_ATTRS_TBL(i).N_EXT_ATTR18             := c_get_ext_attrs_rec.N_EXT_ATTR18   ;
7022             X_EXT_ATTRS_TBL(i).N_EXT_ATTR19             := c_get_ext_attrs_rec.N_EXT_ATTR19   ;
7023             X_EXT_ATTRS_TBL(i).N_EXT_ATTR20             := c_get_ext_attrs_rec.N_EXT_ATTR20   ;
7024             X_EXT_ATTRS_TBL(i).N_EXT_ATTR21             := c_get_ext_attrs_rec.N_EXT_ATTR21   ;
7025             X_EXT_ATTRS_TBL(i).N_EXT_ATTR22             := c_get_ext_attrs_rec.N_EXT_ATTR22   ;
7026             X_EXT_ATTRS_TBL(i).N_EXT_ATTR23             := c_get_ext_attrs_rec.N_EXT_ATTR23   ;
7027             X_EXT_ATTRS_TBL(i).N_EXT_ATTR24             := c_get_ext_attrs_rec.N_EXT_ATTR24   ;
7028             X_EXT_ATTRS_TBL(i).N_EXT_ATTR25             := c_get_ext_attrs_rec.N_EXT_ATTR25   ;
7029             X_EXT_ATTRS_TBL(i).D_EXT_ATTR1              := c_get_ext_attrs_rec.D_EXT_ATTR1    ;
7030             X_EXT_ATTRS_TBL(i).D_EXT_ATTR2              := c_get_ext_attrs_rec.D_EXT_ATTR2    ;
7031             X_EXT_ATTRS_TBL(i).D_EXT_ATTR3              := c_get_ext_attrs_rec.D_EXT_ATTR3    ;
7032             X_EXT_ATTRS_TBL(i).D_EXT_ATTR4              := c_get_ext_attrs_rec.D_EXT_ATTR4    ;
7033             X_EXT_ATTRS_TBL(i).D_EXT_ATTR5              := c_get_ext_attrs_rec.D_EXT_ATTR5    ;
7034             X_EXT_ATTRS_TBL(i).D_EXT_ATTR6              := c_get_ext_attrs_rec.D_EXT_ATTR6    ;
7035             X_EXT_ATTRS_TBL(i).D_EXT_ATTR7              := c_get_ext_attrs_rec.D_EXT_ATTR7    ;
7036             X_EXT_ATTRS_TBL(i).D_EXT_ATTR8              := c_get_ext_attrs_rec.D_EXT_ATTR8    ;
7037             X_EXT_ATTRS_TBL(i).D_EXT_ATTR9              := c_get_ext_attrs_rec.D_EXT_ATTR9    ;
7038             X_EXT_ATTRS_TBL(i).D_EXT_ATTR10             := c_get_ext_attrs_rec.D_EXT_ATTR10   ;
7039             X_EXT_ATTRS_TBL(i).D_EXT_ATTR11             := c_get_ext_attrs_rec.D_EXT_ATTR11   ;
7040             X_EXT_ATTRS_TBL(i).D_EXT_ATTR12             := c_get_ext_attrs_rec.D_EXT_ATTR12   ;
7041             X_EXT_ATTRS_TBL(i).D_EXT_ATTR13             := c_get_ext_attrs_rec.D_EXT_ATTR13   ;
7042             X_EXT_ATTRS_TBL(i).D_EXT_ATTR14             := c_get_ext_attrs_rec.D_EXT_ATTR14   ;
7043             X_EXT_ATTRS_TBL(i).D_EXT_ATTR15             := c_get_ext_attrs_rec.D_EXT_ATTR15   ;
7044             X_EXT_ATTRS_TBL(i).D_EXT_ATTR16             := c_get_ext_attrs_rec.D_EXT_ATTR16   ;
7045             X_EXT_ATTRS_TBL(i).D_EXT_ATTR17             := c_get_ext_attrs_rec.D_EXT_ATTR17   ;
7046             X_EXT_ATTRS_TBL(i).D_EXT_ATTR18             := c_get_ext_attrs_rec.D_EXT_ATTR18   ;
7047             X_EXT_ATTRS_TBL(i).D_EXT_ATTR19             := c_get_ext_attrs_rec.D_EXT_ATTR19   ;
7048             X_EXT_ATTRS_TBL(i).D_EXT_ATTR20             := c_get_ext_attrs_rec.D_EXT_ATTR20   ;
7049             X_EXT_ATTRS_TBL(i).D_EXT_ATTR21             := c_get_ext_attrs_rec.D_EXT_ATTR21   ;
7050             X_EXT_ATTRS_TBL(i).D_EXT_ATTR22             := c_get_ext_attrs_rec.D_EXT_ATTR22   ;
7051             X_EXT_ATTRS_TBL(i).D_EXT_ATTR23             := c_get_ext_attrs_rec.D_EXT_ATTR23   ;
7052             X_EXT_ATTRS_TBL(i).D_EXT_ATTR24             := c_get_ext_attrs_rec.D_EXT_ATTR24   ;
7053             X_EXT_ATTRS_TBL(i).D_EXT_ATTR25             := c_get_ext_attrs_rec.D_EXT_ATTR25   ;
7054             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR1            := c_get_ext_attrs_rec.UOM_EXT_ATTR1  ;
7055             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR2            := c_get_ext_attrs_rec.UOM_EXT_ATTR2  ;
7056             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR3            := c_get_ext_attrs_rec.UOM_EXT_ATTR3  ;
7057             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR4            := c_get_ext_attrs_rec.UOM_EXT_ATTR4  ;
7058             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR5            := c_get_ext_attrs_rec.UOM_EXT_ATTR5  ;
7059             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR6            := c_get_ext_attrs_rec.UOM_EXT_ATTR6  ;
7060             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR7            := c_get_ext_attrs_rec.UOM_EXT_ATTR7  ;
7061             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR8            := c_get_ext_attrs_rec.UOM_EXT_ATTR8  ;
7062             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR9            := c_get_ext_attrs_rec.UOM_EXT_ATTR9  ;
7063             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR10           := c_get_ext_attrs_rec.UOM_EXT_ATTR10 ;
7064             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR11           := c_get_ext_attrs_rec.UOM_EXT_ATTR11 ;
7065             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR12           := c_get_ext_attrs_rec.UOM_EXT_ATTR12 ;
7066             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR13           := c_get_ext_attrs_rec.UOM_EXT_ATTR13 ;
7067             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR14           := c_get_ext_attrs_rec.UOM_EXT_ATTR14 ;
7068             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR15           := c_get_ext_attrs_rec.UOM_EXT_ATTR15 ;
7069             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR16           := c_get_ext_attrs_rec.UOM_EXT_ATTR16 ;
7070             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR17           := c_get_ext_attrs_rec.UOM_EXT_ATTR17 ;
7071             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR18           := c_get_ext_attrs_rec.UOM_EXT_ATTR18 ;
7072             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR19           := c_get_ext_attrs_rec.UOM_EXT_ATTR19 ;
7073             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR20           := c_get_ext_attrs_rec.UOM_EXT_ATTR20 ;
7074             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR21           := c_get_ext_attrs_rec.UOM_EXT_ATTR21 ;
7075             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR22           := c_get_ext_attrs_rec.UOM_EXT_ATTR22 ;
7076             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR23           := c_get_ext_attrs_rec.UOM_EXT_ATTR23 ;
7077             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR24           := c_get_ext_attrs_rec.UOM_EXT_ATTR24 ;
7078             X_EXT_ATTRS_TBL(i).UOM_EXT_ATTR25           := c_get_ext_attrs_rec.UOM_EXT_ATTR25 ;
7079 
7080             i := i + 1 ;
7081 
7082            END LOOP;
7083 
7084 EXCEPTION
7085      WHEN no_data_found THEN
7086           CS_ServiceRequest_UTIL.Add_Invalid_Argument_Msg
7087               (p_token_an     => 'Populate_Ext_Attr_Audit_Tbl',
7088 	       p_token_v      => TO_CHAR(P_EXTENSION_ID),
7089 	       p_token_p      => 'P_EXTENSION_ID' ,
7090                p_table_name   => 'CS_SR_CONTACTX_EXT',
7091                p_column_name  => 'EXTENSION_ID');
7092 
7093           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7094 
7095      WHEN OTHERS THEN
7096           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7097 
7098 END Populate_Ext_Attr_Audit_Tbl;
7099 
7100 END CS_SR_EXTATTRIBUTES_PVT;