DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_PB_MGR

Source


1 PACKAGE BODY cz_pb_mgr AS
2 /*  $Header: czpbmgrb.pls 120.256.12020000.3 2012/11/28 15:59:52 smanna ship $  */
3 
4    TYPE varchar_type_32000_tbl IS TABLE OF VARCHAR2(32000) INDEX BY VARCHAR2(15);
5 
6    --Bug #5186307 - deferred.
7    --TYPE t_item_origsysref_tbl IS TABLE OF cz_item_masters.orig_sys_ref%TYPE INDEX BY VARCHAR2(4000);
8    --TYPE t_itemtype_origsysref_tbl IS TABLE OF cz_item_types.orig_sys_ref%TYPE INDEX BY VARCHAR2(4000);
9 
10    v_application_id_tbl             cz_pb_mgr.t_ref;
11    v_language_id_tbl                cz_pb_mgr.t_lang_code;
12    v_usage_id_tbl                   cz_pb_mgr.t_ref;
13    v_remote_names_not_exported      varchar_type_32000_tbl;
14    v_remote_names_exported          varchar_type_32000_tbl;
15 
16    g_ui_style_dhtml                 CONSTANT VARCHAR2(1) := '0';
17    g_ui_style_applet                CONSTANT VARCHAR2(1) := '3';
18    g_ui_style_jrad                  CONSTANT VARCHAR2(1) := '7';
19    g_ui_style_custom                CONSTANT VARCHAR2(1) := '8';
20    v_default_eff_usg_mask           CONSTANT VARCHAR2(16) := '0000000000000000';
21 
22    PS_NODE_TYPE_REFERENCE         CONSTANT PLS_INTEGER  := 263;
23    PS_NODE_TYPE_BOM_MODEL         CONSTANT PLS_INTEGER  := 436;
24    PS_NODE_TYPE_BOM_OPTIONCLASS   CONSTANT PLS_INTEGER  := 437;
25    PS_NODE_TYPE_BOM_STANDARD      CONSTANT PLS_INTEGER  := 438;
26    SRC_APPL_ID_BOM                CONSTANT PLS_INTEGER  := 702;
27 
28    ENGINE_TYPE_FCE                  CONSTANT VARCHAR2(1) := 'F';
29 
30    ENTITY_TYPE_UCT         CONSTANT VARCHAR2(3) := 'UCT';
31    ENTITY_TYPE_UMT         CONSTANT VARCHAR2(3) := 'UMT';
32    ENTITY_TYPE_SIGNATURE   CONSTANT VARCHAR2(3) := 'SIG';
33    ENTITY_TYPE_RULE        CONSTANT VARCHAR2(3) := 'RUL';
34    ENTITY_TYPE_PROPERTY    CONSTANT VARCHAR2(3) := 'PRP';
35 
36    -- special fields in id resolution
37    -- cz_des_chart_cells.primary_opt_id, secondary_opt_id, secondary_feature_id
38    -- cz_des_chart_feature.feature_id, cz_rules.rule_folder_id,
39    -- cz_ps_nodes.reference_id, cz_ui_nodes.ui_node_ref_id
40    FLD_PSN_REFERENCE_ID    CONSTANT VARCHAR2(9) := 'PSNREFID';
41    FLD_RULE_COMPONENT_ID   CONSTANT VARCHAR2(9) := 'RULCOMID';
42    FLD_UI_NODE_REF_ID      CONSTANT VARCHAR2(9) := 'UINREFID';
43    FLD_IGNORE_NOW          CONSTANT VARCHAR2(9) := 'IGNOREID';
44 
45    NONSEED_UCT_MIN_ID      CONSTANT INTEGER := 2000;
46    NONSEED_UMT_MIN_ID      CONSTANT INTEGER := 1000;
47    NONSEED_SIGN_MIN_ID     CONSTANT INTEGER := 10000;
48    NONSEED_RULE_MIN_ID     CONSTANT INTEGER := 1000;
49    NONSEED_PROP_MIN_ID     CONSTANT INTEGER := 1000;
50 
51    RULE_TYPE_DISPLAY_CONDITION  CONSTANT INTEGER := 33;
52    RULE_TYPE_ENABLED_CONDITION  CONSTANT INTEGER := 34;
53    RULE_TYPE_CONFIG_EXTENSION   CONSTANT INTEGER := 300;
54    RULE_TYPE_POPULATOR          CONSTANT INTEGER := 502;
55    RULE_TYPE_CAPTION            CONSTANT INTEGER := 700;
56 
57    g_engine_type                    cz_devl_projects.config_engine_type%TYPE;
58 
59    --Bug #5186307 - deferred.
60    --v_item_synched_osr             t_item_origsysref_tbl;
61    --v_itemtype_synched_osr         t_itemtype_origsysref_tbl;
62 
63    v_prop_vals_def_num_value_ref    cz_pb_mgr.t_ref;
64 
65    --Bug 1170415..Introducing two global variables for template and action rollback
66    g_skip_templ_rollback BOOLEAN := FALSE;
67    g_skip_templaction_rollback BOOLEAN := FALSE;
68 
69 
70 -- These two procedures are created for debugging purpose. They will be called only
71 -- when Publication Logging is turned ON.
72 
73    PROCEDURE mm_dump_array (array_to_dump IN cz_pb_mgr.t_ref,
74                             array_name IN VARCHAR2)
75    IS
76         x NUMBER := 0;
77    BEGIN
78       IF (array_to_dump.COUNT > 0) THEN
79         FOR j IN array_to_dump.first .. array_to_dump.last LOOP
80            INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
81              (Sysdate, 'MM_DUMP_ARRAY', 'Array ' || array_name || ', index ' || j || ': ' || array_to_dump(j));
82         END LOOP;
83       END IF;
84    END mm_dump_array;
85 
86    PROCEDURE mm_dump_osr_array (array_to_dump IN cz_pb_mgr.orig_sys_ref_type,
87                                 array_name IN VARCHAR2)
88    IS
89         x NUMBER := 0;
90    BEGIN
91       IF (array_to_dump.COUNT > 0) THEN
92         FOR j IN array_to_dump.first .. array_to_dump.last LOOP
93            INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
94              (Sysdate, 'MM_DUMP_OSR_ARRAY', 'Array ' || array_name || ', index ' || j || ': ' || array_to_dump(j));
95         END LOOP;
96       END IF;
97    END mm_dump_osr_array;
98 
99 ------------------------------------------------------------------------------------------------
100 
101 
102 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
103 -------procedure that resolves remote reference nodes - forward declaration
104    PROCEDURE resolve_ref_ids_not_found(
105       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
106      ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
107      ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
108      ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
109      ,p_column_name IN VARCHAR2
110      ,x_status IN OUT NOCOPY VARCHAR2
111    );
112 
113    PROCEDURE rollback_data(p_db_link IN VARCHAR2);
114    PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE);
115 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
116 -----------delete session variables
117    PROCEDURE delete_session_parameters
118    AS
119    BEGIN
120       cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.delete;
121       cz_pb_mgr.g_ui_actns_ui_act_id_old_ref.delete;
122       cz_pb_mgr.v_models_to_be_exported.DELETE;
123       cz_pb_mgr.v_models_not_to_be_exported.DELETE;
124       cz_pb_mgr.v_models_to_be_exported_new.DELETE;
125       v_remote_names_not_exported.DELETE;
126       v_remote_names_exported.DELETE;
127       cz_pb_mgr.v_templates_tobe_exported.DELETE;
128       cz_pb_mgr.v_templates_not_exported.DELETE;
129       cz_pb_mgr.v_global_templs_ref.DELETE;
130       cz_pb_mgr.v_server_id := 0;
131       cz_pb_mgr.v_ui_def_id := 0;
132       cz_pb_mgr.v_export_id := 0;
133       cz_pb_mgr.v_publication_id := 0;
134       cz_pb_mgr.v_root_model_id := 0;
135       cz_pb_mgr.target_root_model_id := 0;
136       cz_pb_mgr.v_root_ui_def_id := 0;
137       cz_pb_mgr.v_status_code := NULL;
138       cz_pb_mgr.loguser := NULL;
139       cz_pb_mgr.v_err_message := NULL;
140       cz_pb_mgr.sequence_no := 0;
141       cz_pb_mgr.v_oraclesequenceincr := 0;
142       cz_pb_mgr.v_db_link := NULL;
143       cz_pb_mgr.v_insert_string := NULL;
144      --Bug3437555: Initalizing the value to 10 in order to protect the seeded
145      ---devl_project_id = 0 for unknown reason.
146       cz_pb_mgr.v_new_devl_id := 10;
147       cz_pb_mgr.v_msg_tbl.DELETE;
148       cz_pb_mgr.v_pb_run_id := 0;
149       cz_pb_mgr.v_new_object_id := 0;
150       cz_pb_mgr.v_server_local_name := NULL;
151       cz_pb_mgr.copy_rules := 'YES';
152       cz_pb_mgr.copy_uis := 'YES';
153       cz_pb_mgr.copy_root_only := 'YES';
154       v_application_id_tbl.DELETE;
155       v_usage_id_tbl.DELETE;
156       v_language_id_tbl.DELETE;
157       cz_pb_mgr.g_item_type_id := 0;
158       cz_pb_mgr.g_item_id := 0;
159       g_object_type := ' ';
160       g_cz_ui_pages_ui_def_ref.DELETE;
161       g_cz_ui_pages_jrad_doc_ref.DELETE;
162       g_cz_ui_pages_capt_id_ref.DELETE;
163       cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
164       cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
165       g_cz_ui_pages_ui_def_tbl.DELETE;
166       g_cz_ui_pages_jrad_doc_tbl.DELETE;
167       g_cz_ui_pages_capt_id_tbl.DELETE;
168       g_page_sets_ui_old_ref.DELETE;
169       g_page_sets_ui_ref.DELETE;
170       g_page_sets_pg_tbl.DELETE;
171       cz_pb_mgr.v_ui_images_ui_ref.DELETE;
172       cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
173       cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
174       cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
175       g_page_refs_ui_def_old_ref.DELETE;
176       g_page_refs_ui_def_new_ref.DELETE;
177       g_page_refs_cond_id_ref.DELETE;
178       g_page_refs_capt_id_ref.DELETE;
179       g_page_refs_tgt_ui_ref.DELETE;
180       g_page_refs_tgt_expl_tbl.DELETE;
181       g_ui_refs_old_ui_def_ref.DELETE;
182       g_ui_refs_new_ui_def_ref.DELETE;
183       g_ui_refs_ref_ui_def_ref.DELETE;
184       g_ui_refs_expl_id_ref.DELETE;
185       g_ui_ps_maps_old_ui_def_ref.DELETE;
186       g_ui_ps_maps_new_ui_def_ref.DELETE;
187       g_ui_ps_maps_ctrl_tmp_ref.DELETE;
188       cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
189       cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
190       g_ui_templates_old_temp_id_ref.DELETE;
191       g_ui_templates_new_temp_id_ref.DELETE;
192       g_ui_templates_idx_temp_ref.DELETE;
193       g_ui_templates_ui_def_old_ref.DELETE;
194       g_ui_templates_ui_def_new_ref.DELETE;
195       g_ui_templates_jrad_new_ref.DELETE;
196       g_ui_templates_jrad_old_ref.DELETE;
197       g_tmpl_jrad_old_tbl.DELETE;
198       g_tmpl_jrad_new_tbl.DELETE;
199       g_cnt_typ_tmpls_old_uidef_ref.DELETE;
200       g_cnt_typ_tmpls_new_uidef_ref.DELETE;
201       g_cnt_typ_tmpls_tmpid_ref.DELETE;
202       g_cnt_typ_tmpls_tgtuidef_ref.DELETE;
203       g_cnt_typ_tmpls_cont_ref.DELETE;
204       g_ui_actns_ui_act_id_ref.DELETE;
205       g_ui_actns_ui_uidef_ref.DELETE;
206       g_ui_actns_ui_tgtui_ref.DELETE;
207       g_pages_ui_def_old_ref.DELETE;
208       cz_pb_mgr.v_sig_new_ref.DELETE;
209       cz_pb_mgr.v_sig_old_ref.DELETE;
210       cz_pb_mgr.v_sig_idx_ref.DELETE;
211       cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
212       cz_pb_mgr.v_arg_sig_tbl.DELETE;
213       cz_pb_mgr.v_data_sig_tbl.DELETE;
214       cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
215       cz_pb_mgr.v_cz_ui_nodes_idx_ref.DELETE;
216       cz_pb_mgr.l_cnt_typ_tmpls_cont_ref.DELETE;
217       cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.DELETE;
218       cz_pb_mgr.l_ui_images_ui_ref.DELETE;
219       cz_pb_mgr.l_ui_images_enty_tbl.DELETE;
220       cz_pb_mgr.l_ui_images_usg_tbl.DELETE;
221       cz_pb_mgr.h_devl_prj_by_intl_text.DELETE;
222       cz_pb_mgr.v_propval_node_id := NULL;
223       cz_pb_mgr.v_propval_prop_id := NULL;
224       cz_pb_mgr.v_propval_data_value := NULL;
225 
226       cz_pb_mgr.g_ps_reverse_connector_tbl.DELETE;
227       cz_pb_mgr.g_ui_actions_id_idx_ref.DELETE;
228       cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
229       cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
230       cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
231       cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
232       cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
233       cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
234       cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
235       cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
236       cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
237       cz_pb_mgr.g_fcefile_old_id_tbl.DELETE;
238       cz_pb_mgr.g_fcefile_new_id_tbl.DELETE;
239       cz_pb_mgr.g_fcefile_compid_tbl.DELETE;
240       g_migration_group_id := NULL;
241 
242       --Bug #5186307 - deferred.
243       --v_item_synched_osr.DELETE;
244       --v_itemtype_synched_osr.DELETE;
245 
246       --The sequence incrementor cannot be 0, therefore we need to re-read it.
247 
248       get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
249    EXCEPTION
250       WHEN OTHERS
251       THEN
252          NULL;
253    END delete_session_parameters;
254 
255 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
256 -----procedure that clears pl/sql tables for a table
257 -----@p_table_name : name of the table
258 -----@p_table_type : type of array
259 -----@x_status     : publication status parameter
260    PROCEDURE clear_tables(p_table_name IN VARCHAR2, p_table_type IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
261    AS
262    BEGIN
263       IF (p_table_name = 'cz_ps_nodes')
264       THEN
265          IF (p_table_type = 'tbl')
266          THEN
267             cz_pb_mgr.v_cz_ps_nodes_new_tbl.DELETE;
268             cz_pb_mgr.v_cz_ps_nodes_old_tbl.DELETE;
269             cz_pb_mgr.v_cz_ps_nodes_idx_tbl.DELETE;
270             cz_pb_mgr.v_ps_parent_id_tbl.DELETE;
271             cz_pb_mgr.v_ps_refid_old_tbl.DELETE;
272             cz_pb_mgr.v_devl_project_tbl.DELETE;
273             cz_pb_mgr.v_ps_eff_set_id_tbl.DELETE;
274             cz_pb_mgr.v_ps_intl_old_tbl.DELETE;
275             cz_pb_mgr.v_ps_viol_old_tbl.DELETE;
276             cz_pb_mgr.v_ps_orig_sys_tbl.DELETE;
277             cz_pb_mgr.v_ps_comp_seq_path_tbl.DELETE;
278             cz_pb_mgr.v_ps_comp_seq_id_tbl.DELETE;
279             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
280             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
281             cz_pb_mgr.v_ps_capt_rule_tbl.DELETE;
282             cz_pb_mgr.v_cz_ps_nodes_comp_tbl.DELETE;
283             cz_pb_mgr.v_ps_item_id_tbl.DELETE;
284             cz_pb_mgr.v_ps_type_old_tbl.DELETE;
285             cz_pb_mgr.v_ps_src_appl_id_old_tbl.DELETE;
286             cz_pb_mgr.v_psnode_propval_tbl.DELETE; -- Bug11685105
287             cz_pb_mgr.g_ps_uits_add_tbl.DELETE;
288 		cz_pb_mgr.g_usg_name_processed.DELETE;
289          ELSIF(p_table_type = 'ref')
290          THEN
291             cz_pb_mgr.v_cz_ps_nodes_new_ref.DELETE;
292             cz_pb_mgr.v_cz_ps_nodes_old_ref.DELETE;
293             cz_pb_mgr.v_ps_parent_id_ref.DELETE;
294             cz_pb_mgr.v_ps_ref_id_ref.DELETE;
295             cz_pb_mgr.v_ps_eff_set_id_ref.DELETE;
296             cz_pb_mgr.v_ps_intl_old_ref.DELETE;
297             cz_pb_mgr.v_ps_viol_old_ref.DELETE;
298             cz_pb_mgr.v_ps_orig_sys_ref.DELETE;
299             cz_pb_mgr.v_ps_comp_seq_path_ref.DELETE;
300             cz_pb_mgr.v_ps_comp_seq_id_ref.DELETE;
301             cz_pb_mgr.v_ps_capt_rule_ref.DELETE;
302             cz_pb_mgr.v_cz_ps_nodes_comp_ref.DELETE;
303             cz_pb_mgr.v_ps_item_id_ref.DELETE;
304             cz_pb_mgr.v_ps_type_old_ref.DELETE;
305             cz_pb_mgr.v_ps_src_appl_id_old_ref.DELETE;
306          END IF;
307       ELSIF(p_table_name = 'cz_model_ref_expls')
308       THEN
309          IF (p_table_type = 'tbl')
310          THEN
311             cz_pb_mgr.v_component_id_old_tbl.DELETE;
312             cz_pb_mgr.v_parent_expl_id_tbl.DELETE;
313             cz_pb_mgr.v_child_expl_id_tbl.DELETE;
314             cz_pb_mgr.v_referring_node_id_tbl.DELETE;
315          ELSIF(p_table_type = 'ref')
316          THEN
317             cz_pb_mgr.v_cz_model_ref_expls_idx_ref.DELETE;
318             cz_pb_mgr.v_cz_model_ref_expls_old_ref.DELETE;
319             cz_pb_mgr.v_cz_model_ref_expls_new_ref.DELETE;
320             cz_pb_mgr.v_component_id_old_ref.DELETE;
321             cz_pb_mgr.v_parent_expl_id_ref.DELETE;
322             cz_pb_mgr.v_child_expl_id_ref.DELETE;
323             cz_pb_mgr.v_referring_node_id_ref.DELETE;
324             cz_pb_mgr.v_ref_model_id_ref.DELETE;
325          END IF;
326       ELSIF(p_table_name = 'cz_func_comp_specs')
327       THEN
328          IF (p_table_type = 'tbl')
329          THEN
330             cz_pb_mgr.v_cz_func_comp_old_tbl.DELETE;
331             cz_pb_mgr.v_cz_func_comp_new_tbl.DELETE;
332          ELSIF(p_table_type = 'ref')
333          THEN
334             cz_pb_mgr.v_cz_func_comp_new_ref.DELETE;
335             cz_pb_mgr.v_cz_func_comp_old_ref.DELETE;
336             cz_pb_mgr.v_cz_func_comp_idx_ref.DELETE;
337             cz_pb_mgr.v_cz_func_devl_old_ref.DELETE;
338             cz_pb_mgr.v_cz_func_cid_old_ref.DELETE;
339             cz_pb_mgr.v_cz_func_expl_old_ref.DELETE;
340             cz_pb_mgr.v_cz_func_fld_old_ref.DELETE;
341             cz_pb_mgr.v_cz_func_obj_ref.DELETE;
342          END IF;
343       ELSIF(p_table_name = 'cz_ui_defs')
344       THEN
345          IF (p_table_type = 'tbl')
346          THEN
347             cz_pb_mgr.v_ui_devl_id_tbl.DELETE;
348             cz_pb_mgr.v_ui_comp_id_tbl.DELETE;
349          ELSIF(p_table_type = 'ref')
350          THEN
351             cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
352             cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
353             cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
354             cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
355             cz_pb_mgr.v_ui_devl_id_ref.DELETE;
356             cz_pb_mgr.v_ui_comp_id_ref.DELETE;
357             cz_pb_mgr.v_ui_defs_mcpt_rule_ref.DELETE;
358             cz_pb_mgr.v_ui_defs_pcpt_rule_ref.DELETE;
359             cz_pb_mgr.v_master_template_id_ref.DELETE;
360          END IF;
361       ELSIF(p_table_name = 'cz_ui_nodes')
362       THEN
363          IF (p_table_type = 'ref')
364          THEN
365             cz_pb_mgr.v_cz_ui_nodes_new_ref.DELETE;
366             cz_pb_mgr.v_cz_ui_nodes_old_ref.DELETE;
367             cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref.DELETE;
368             cz_pb_mgr.v_cz_ui_nodes_parent_id_ref.DELETE;
369             cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref.DELETE;
370             cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref.DELETE;
371             cz_pb_mgr.v_cz_ui_nodes_component_id_ref.DELETE;
372             cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref.DELETE;
373             cz_pb_mgr.v_cz_ui_nodes_expl_id_ref.DELETE;
374             cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref.DELETE;
375             cz_pb_mgr.v_cz_ui_nodes_capt_id_ref.DELETE;
376             cz_pb_mgr.v_cz_ui_nodes_tool_id_ref.DELETE;
377             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
378             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
379          END IF;
380       ELSIF(p_table_name = 'cz_ps_prop_vals')
381       THEN
382          IF (p_table_type = 'tbl')
383          THEN
384             cz_pb_mgr.v_prop_vals_node_tbl.DELETE;
385             cz_pb_mgr.v_prop_vals_prop_tbl.DELETE;
386             cz_pb_mgr.v_prop_vals_data_tbl.DELETE;
387             cz_pb_mgr.v_prop_vals_num_tbl.DELETE;
388             cz_pb_mgr.v_prop_vals_origsys_tbl.DELETE;
389             cz_pb_mgr.v_prop_vals_datanum_tbl.DELETE;
390          ELSIF(p_table_type = 'ref')
391          THEN
392             cz_pb_mgr.v_prop_vals_node_ref.DELETE;
393             cz_pb_mgr.v_prop_vals_prop_ref.DELETE;
394             cz_pb_mgr.v_prop_vals_data_ref.DELETE;
395             cz_pb_mgr.v_prop_vals_num_ref.DELETE;
396             cz_pb_mgr.v_prop_vals_origsys_ref.DELETE;
397             cz_pb_mgr.v_prop_vals_datanum_ref.DELETE;
398             cz_pb_mgr.v_prop_vals_data_typ_ref.DELETE;
399             cz_pb_mgr.v_prop_vals_data_num_ref.DELETE;
400             cz_pb_mgr.v_prop_vals_intl_text_ref.DELETE;
401             v_prop_vals_def_num_value_ref.DELETE;
402          END IF;
403       ELSIF(p_table_name = 'cz_item_masters')
404       THEN
405          IF (p_table_type = 'tbl')
406          THEN
407             cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
408             cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
409             cz_pb_mgr.v_item_masters_tbl.DELETE;
410             cz_pb_mgr.v_item_types_tbl.DELETE;
411             cz_pb_mgr.v_item_prop_id_tbl.DELETE;
412             cz_pb_mgr.v_item_prop_type_tbl.DELETE;
413             cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
414             cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
415             cz_pb_mgr.v_it_prop_value_tbl.DELETE;
416          ELSIF(p_table_type = 'ref')
417          THEN
418             cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
419             cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
420             cz_pb_mgr.v_item_masters_ref.DELETE;
421             cz_pb_mgr.v_item_types_ref.DELETE;
422             cz_pb_mgr.v_item_prop_id_ref.DELETE;
423             cz_pb_mgr.v_item_prop_type_ref.DELETE;
424             cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
425             cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
426             cz_pb_mgr.v_it_prop_value_ref.DELETE;
427             cz_pb_mgr.v_remote_prop_ref.DELETE;
428             cz_pb_mgr.v_property_record_ref.DELETE;
429             cz_pb_mgr.v_type_property_record_ref.DELETE;
430             cz_pb_mgr.v_type_record_ref.DELETE;
431          END IF;
432       ELSIF(p_table_name = 'cz_rule_folders')
433       THEN
434          IF (p_table_type = 'ref')
435          THEN
436             cz_pb_mgr.v_cz_folders_id_old_ref.DELETE;
437             cz_pb_mgr.v_cz_folders_id_new_ref.DELETE;
438             cz_pb_mgr.v_cz_folders_id_idx_ref.DELETE;
439             cz_pb_mgr.v_cz_folders_pf_id_ref.DELETE;
440             cz_pb_mgr.v_cz_folders_pj_id_ref.DELETE;
441             cz_pb_mgr.v_cz_folders_eff_ref.DELETE;
442             cz_pb_mgr.v_cz_folders_orig_ref.DELETE;
443             cz_pb_mgr.v_cz_folders_obj_ref.DELETE;
444          ELSIF(p_table_type = 'tbl')
445          THEN
446             cz_pb_mgr.v_cz_folders_id_old_tbl.DELETE;
447             cz_pb_mgr.v_cz_folders_id_new_tbl.DELETE;
448          END IF;
449       ELSIF(p_table_name = 'cz_expression_nodes')
450       THEN
451          IF (p_table_type = 'tbl')
452          THEN
453             cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.DELETE;
454             cz_pb_mgr.v_cz_enodes_enode_id_old_tbl.DELETE;
455             cz_pb_mgr.v_cz_enodes_expr_id_tbl.DELETE;
456             cz_pb_mgr.v_cz_enodes_psnode_id_tbl.DELETE;
457             cz_pb_mgr.v_cz_enodes_gcol_id_tbl.DELETE;
458             cz_pb_mgr.v_cz_enodes_pexpr_id_tbl.DELETE;
459             cz_pb_mgr.v_cz_enodes_mrefl_id_tbl.DELETE;
460             cz_pb_mgr.v_cz_enodes_rule_id_tbl.DELETE;
461             cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl.DELETE;
462             cz_pb_mgr.v_cz_enodes_par_sig_id_tbl.DELETE;
463             cz_pb_mgr.v_cz_enodes_prop_id_tbl.delete;
464          ELSIF(p_table_type = 'ref')
465          THEN
466             cz_pb_mgr.v_cz_enodes_enode_id_old_ref.DELETE;
467             cz_pb_mgr.v_cz_enodes_enode_id_idx_ref.DELETE;
468             cz_pb_mgr.v_cz_enodes_enode_id_new_ref.DELETE;
469             cz_pb_mgr.v_cz_enodes_psnode_id_ref.DELETE;
470             cz_pb_mgr.v_cz_enodes_gcol_id_ref.DELETE;
471             cz_pb_mgr.v_cz_enodes_pexpr_id_ref.DELETE;
472             cz_pb_mgr.v_cz_enodes_mrefl_id_ref.DELETE;
473             cz_pb_mgr.v_cz_enodes_rule_id_ref.DELETE;
474             cz_pb_mgr.v_cz_enodes_arg_sig_id_ref.DELETE;
475             cz_pb_mgr.v_cz_enodes_par_sig_id_ref.DELETE;
476             cz_pb_mgr.v_cz_expr_sig_ref.DELETE;
477             cz_pb_mgr.v_cz_enodes_prop_id_ref.delete;
478          END IF;
479       ELSIF(p_table_name = 'cz_rules') THEN
480          IF (p_table_type = 'ref') THEN
481             cz_pb_mgr.v_cz_rules_rule_id_old_ref.DELETE;
482             cz_pb_mgr.v_cz_rules_rule_id_new_ref.DELETE;
483             cz_pb_mgr.v_cz_rules_persistent_id_ref.DELETE;
484             cz_pb_mgr.v_cz_rules_rule_id_idx_ref.DELETE;
485             cz_pb_mgr.v_cz_rules_rf_id_ref.DELETE;
486             cz_pb_mgr.v_cz_rules_proj_id_ref.DELETE;
487             cz_pb_mgr.v_cz_rules_comp_id_ref.DELETE;
488             cz_pb_mgr.v_cz_rules_ant_id_ref.DELETE;
489             cz_pb_mgr.v_cz_rules_con_id_ref.DELETE;
490             cz_pb_mgr.v_cz_rules_rea_id_ref.DELETE;
491             cz_pb_mgr.v_cz_rules_eff_id_ref.DELETE;
492             cz_pb_mgr.v_cz_rules_unmsg_id_ref.DELETE;
493             cz_pb_mgr.v_cz_rules_expl_ref.DELETE;
494             cz_pb_mgr.v_cz_rules_sig_ref.DELETE;
495             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
496             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
497             cz_pb_mgr.v_cz_rules_obj_ref.DELETE;
498             cz_pb_mgr.v_cz_rules_sig_idx_ref.DELETE;
499             cz_pb_mgr.v_cz_rules_ui_ref.DELETE;
500          END IF;
501       ELSIF(p_table_name = 'cz_des_chart_features')
502       THEN
503          IF (p_table_type = 'ref')
504          THEN
505             cz_pb_mgr.v_cz_des_feature_id_old_ref.DELETE;
506             cz_pb_mgr.v_cz_des_feature_id_new_ref.DELETE;
507             cz_pb_mgr.v_cz_des_feature_rid_new_ref.DELETE;
508             cz_pb_mgr.v_cz_des_feature_rule_id_ref.DELETE;
509             cz_pb_mgr.v_cz_des_feature_mrefl_id_ref.DELETE;
510             cz_pb_mgr.v_cz_des_feature_ft_typ_ref.DELETE;
511          END IF;
512       ELSIF(p_table_name = 'cz_des_chart_cells')
513       THEN
514          IF (p_table_type = 'ref')
515          THEN
516             cz_pb_mgr.v_cz_des_cells_rule_id_new_ref.DELETE;
517             cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.DELETE;
518             cz_pb_mgr.v_cz_des_cells_sf_id_ref.DELETE;
519             cz_pb_mgr.v_cz_des_cells_sopt_id_ref.DELETE;
520             cz_pb_mgr.v_cz_des_cells_popt_id_ref.DELETE;
521             cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.DELETE;
522          END IF;
523       ELSIF(p_table_name = 'cz_lce_headers')
524       THEN
525          cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
526          cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
527          cz_pb_mgr.v_cz_intl_text_idx_ref.DELETE;
528          cz_pb_mgr.v_cz_intl_unmsg_idx_ref.DELETE;
529          cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
530          cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
531          cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
532          cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
533       ELSIF(p_table_name = 'cz_lce_load_specs')
534       THEN
535          cz_pb_mgr.v_specs_net_type_ref.DELETE;
536          cz_pb_mgr.v_specs_attach_expl_id_ref.DELETE;
537          cz_pb_mgr.v_specs_lce_header_id_ref.DELETE;
538          cz_pb_mgr.v_specs_required_expl_id_ref.DELETE;
539          cz_pb_mgr.v_specs_attach_comp_id_ref.DELETE;
540          cz_pb_mgr.v_specs_model_id_ref.DELETE;
541          cz_pb_mgr.v_specs_alias_name_ref.DELETE;
542       END IF;
543    EXCEPTION
544       WHEN OTHERS
545       THEN
546          x_status := PUBLICATION_ERROR;
547          RAISE;
548    END;
549 
550 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
551 ------error and log messages are trapped
552    PROCEDURE error_msg_populate(p_msg VARCHAR2, p_caller VARCHAR2, p_code NUMBER)
553    AS
554       record_count PLS_INTEGER := 0;
555    BEGIN
556       record_count := cz_pb_mgr.v_msg_tbl.COUNT + 1;
557       cz_pb_mgr.v_msg_tbl(record_count).msg_text := LTRIM(RTRIM(SUBSTR(p_msg, 1, 2000)));
558       cz_pb_mgr.v_msg_tbl(record_count).called_proc := p_caller;
559       cz_pb_mgr.v_msg_tbl(record_count).sql_code := pbdebug;
560    EXCEPTION
561       WHEN OTHERS
562       THEN
563          cz_pb_mgr.v_err_message := 'Error in populating messages: ' || SQLERRM;
564          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
565    END error_msg_populate;
566 
567 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
568    PROCEDURE log_report(p_pkg_name VARCHAR2, p_routine VARCHAR2, p_ndebug NUMBER, p_msg VARCHAR2, p_log_level NUMBER)
569    IS
570       PRAGMA AUTONOMOUS_TRANSACTION;
571       l_module_name VARCHAR2(2000);
572    BEGIN
573       IF (p_log_level >= fnd_log.g_current_runtime_level)
574       THEN
575          l_module_name := 'cz.plsql.' || p_pkg_name || '.' || p_routine || '.' || p_ndebug;
576          fnd_log.STRING(p_log_level, l_module_name, p_msg);
577          COMMIT;
578       END IF;
579    EXCEPTION
580       WHEN OTHERS
581       THEN
582          ROLLBACK;
583    END log_report;
584 
585 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
586 --------------------procedure to log errors during the publication process
587    PROCEDURE log_pb_errors(p_message IN VARCHAR2, p_urgency IN VARCHAR2, p_caller IN VARCHAR2, p_statuscode IN PLS_INTEGER)
588    AS
589       v_message VARCHAR2(2000) := NULL;
590    BEGIN
591       IF (p_message IS NOT NULL)
592       THEN
593          v_message := LTRIM(RTRIM(SUBSTR(p_message, 1, 2000)));
594       ELSE
595          v_message := 'Check SQLCODE in statuscode field. ';
596       END IF;
597 
598       IF fnd_global.conc_request_id > 0
599       THEN
600          fnd_file.put_line(fnd_file.LOG, v_message);
601       END IF;
602 
603       INSERT INTO cz_db_logs
604                   (logtime, loguser, urgency, caller, statuscode, MESSAGE, message_id, run_id
605                   )
606            VALUES (SYSDATE, cz_pb_mgr.loguser, p_urgency, p_caller, p_statuscode, v_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id
607                   );
608 
609       COMMIT;
610    EXCEPTION
611       WHEN OTHERS
612       THEN
613          cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
614          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
615    END log_pb_errors;
616 
617 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
618 ------procedure that logs timing message
619    PROCEDURE log_timing_message(p_msg IN VARCHAR2)
620    IS
621    BEGIN
622       log_pb_errors(p_msg, 2, 'cz_pb_mgr_TIMING', 55);
623    END;
624 
625 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
626    PROCEDURE log_pb_trace
627    AS
628       l_msg VARCHAR2(2000);
629    BEGIN
630       -----------log trace
631       IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
632       THEN
633          cz_pb_mgr.v_err_message := 'Parent model in publication (migration) request : ' || TO_CHAR(cz_pb_mgr.v_root_model_id);
634          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
635          cz_pb_mgr.v_err_message :=
636                             'Source publication : ' || cz_pb_mgr.v_cz_model_pub_old_id || '  target publication: ' || cz_pb_mgr.v_cz_model_pub_new_id;
637          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
638       END IF;
639 
640       IF (cz_pb_mgr.v_msg_tbl.COUNT > 0)
641       THEN
642          FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
643          LOOP
644             IF fnd_global.conc_request_id > 0
645             THEN
646                fnd_file.put_line(fnd_file.LOG, cz_pb_mgr.v_msg_tbl(i).msg_text);
647             END IF;
648 
649             BEGIN
650                INSERT INTO cz_db_logs
651                            (logtime, caller, statuscode, MESSAGE
652                            ,message_id, creation_date, run_id
653                            )
654                     VALUES (SYSDATE, cz_pb_mgr.v_msg_tbl(i).called_proc, cz_pb_mgr.v_msg_tbl(i).sql_code, cz_pb_mgr.v_msg_tbl(i).msg_text
655                            ,cz_pb_mgr.v_publication_id, SYSDATE, cz_pb_mgr.v_pb_run_id
656                            );
657             EXCEPTION
658                WHEN OTHERS
659                THEN
660                   RAISE;
661             END;
662 
663             log_report('cz_pb_mgr'
664                       ,cz_pb_mgr.v_msg_tbl(i).called_proc
665                       ,cz_pb_mgr.v_msg_tbl(i).sql_code
666                       ,cz_pb_mgr.v_msg_tbl(i).msg_text
667                       ,fnd_log.level_error
668                       );
669          END LOOP;
670 
671          COMMIT;
672       END IF;
673 
674       IF ((cz_pb_mgr.v_msg_tbl.COUNT > 0) AND(cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_status_code = PUBLICATION_ERROR))
675       THEN
676          fnd_msg_pub.initialize;
677 
678          FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
679          LOOP
680             IF ((cz_pb_mgr.v_msg_tbl(i).msg_text IS NOT NULL) AND(cz_pb_mgr.v_msg_tbl(i).msg_text NOT LIKE '%publication%'))
681             THEN
682                fnd_message.set_name('CZ', 'CZ_MODEL_COPY_ERR');
683                fnd_message.set_token('ERRORMSG', cz_pb_mgr.v_msg_tbl(i).msg_text);
684                fnd_msg_pub.ADD;
685             END IF;
686          END LOOP;
687       END IF;
688 
689       cz_pb_mgr.v_msg_tbl.DELETE;
690    EXCEPTION
691       WHEN OTHERS
692       THEN
693          cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
694          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
695          cz_pb_mgr.v_msg_tbl.DELETE;
696    END log_pb_trace;
697 
698 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
699 --------------sequence no generator function
700    FUNCTION sequence_generate(seq_const PLS_INTEGER, seq_name VARCHAR2, p_oraclesequenceincr NUMBER)
701       RETURN NUMBER
702    AS
703       seq_cv ref_cursor;
704       l_sequence_gen NUMBER;
705 
706       cz_pb_no_incrementor  EXCEPTION;
707    BEGIN
708 
709       IF(p_oraclesequenceincr = 0)THEN
710           cz_pb_mgr.v_err_message := 'The sequence incrementor cannot be 0.';
711           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', 70001);
712           RAISE cz_pb_no_incrementor;
713       END IF;
714 
715       IF (cz_pb_mgr.v_sequence_count.EXISTS(seq_const))
716       THEN
717          l_sequence_gen := cz_pb_mgr.v_sequence_count(seq_const) + 1;
718       ELSE
719          l_sequence_gen := 0;                                                                 -- Will fall into this statement only for a New session
720       END IF;
721 
722       -- We will grab a new sequence from the sequencer only in case of
723       -- 1. New session OR
724       -- 2. If the running sequence count has reached the last sequence in the block
725       IF (l_sequence_gen = 0 OR(l_sequence_gen = cz_pb_mgr.v_next_sequence_gen(seq_const)))
726       THEN
727          BEGIN
728             OPEN seq_cv FOR 'SELECT ' || seq_name || ' FROM  dual';
729 
730             LOOP
731                FETCH seq_cv
732                 INTO l_sequence_gen;
733 
734                EXIT WHEN seq_cv%NOTFOUND;
735             END LOOP;
736 
737             CLOSE seq_cv;
738          EXCEPTION
739             WHEN OTHERS
740             THEN
741                cz_pb_mgr.v_err_message := 'Error in getting the next sequence value : ' || SQLERRM;
742                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
743                RAISE;
744          END;
745 
746          cz_pb_mgr.v_next_sequence_gen(seq_const) := l_sequence_gen + p_oraclesequenceincr;
747       END IF;
748 
749       cz_pb_mgr.v_sequence_count(seq_const) := l_sequence_gen;
750       RETURN l_sequence_gen;
751    EXCEPTION
752      WHEN OTHERS THEN
753        cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
754        RAISE;
755    END sequence_generate;
756 
757 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
758 ----update orig_sys_ref of cz_localized_texts to NULL
759    PROCEDURE update_localized_texts
760    AS
761    BEGIN
762       IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
763       THEN
764          EXECUTE IMMEDIATE    'BEGIN'
765                            || ' '
766                            || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
767                            || ' '
768                            || 'LOOP'
769                            || ' '
770                            || 'UPDATE cz_localized_texts'
771                            || cz_pb_mgr.v_db_link
772                            || '  t'
773                            || ' '
774                            || 'SET   t.orig_sys_ref = NULL'
775                            || ' '
776                            || 'WHERE  t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
777                            || ' '
778                            || 'AND   t.orig_sys_ref IS NOT NULL;'
779                            || ' '
780                            || 'END LOOP;'
781                            || ' '
782                            || 'EXCEPTION'
783                            || ' '
784                            || 'WHEN OTHERS THEN'
785                            || ' '
786                            || 'ROLLBACK;'
787                            || ' '
788                            || 'END;';
789 
790          COMMIT;
791       END IF;
792    EXCEPTION
793       WHEN OTHERS
794       THEN
795          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
796          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
797          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
798          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
799          RAISE;
800    END;
801 
802 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
803 ----update orig_sys_ref of cz_localized_texts to target values during model migration.
804    PROCEDURE update_mm_localized_texts
805    AS
806    BEGIN
807       IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
808       THEN
809          EXECUTE IMMEDIATE    'DECLARE'
810                            || ' '
811                            || 'orig_sys_ref_tgt VARCHAR2(100);'
812                            || ' '
813                            || 'base_lang VARCHAR2(10);'
814                            || ' '
815                            || 'BEGIN'
816                            || ' '
817                            || ' SELECT language_code into base_lang FROM fnd_languages WHERE installed_flag = ''B'';'
818                            || ' '
819                            || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
820                            || ' '
821                            || 'LOOP'
822                            || ' '
823                            || 'orig_sys_ref_tgt := NULL;'
824                            || ' '
825                            || 'BEGIN'
826                            || ' '
827                            || 'SELECT DECODE(cz_pb_mgr.bomsynch_flag,''Y'', cz_bom_synch.locText_origSysRef(t.orig_sys_ref),t.orig_sys_ref)'
828                            || ' '
829                            || 'INTO orig_sys_ref_tgt'
830                            || ' '
831                            || 'FROM cz_localized_texts'
832                            || cz_pb_mgr.v_db_link
833                            || '  t'
834                            || ' '
835                            || 'WHERE  t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i) AND t.orig_sys_ref IS NOT NULL AND t.language = base_lang;'
836                            || ' '
837                            || 'UPDATE cz_localized_texts'
838                            || cz_pb_mgr.v_db_link
839                            || '  t'
840                            || ' '
841                            || 'SET   t.orig_sys_ref = orig_sys_ref_tgt'
842                            || ' '
843                            || 'WHERE  t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
844                            || ' '
845                            || 'AND   t.orig_sys_ref IS NOT NULL;'
846                            || ' '
847                            || 'EXCEPTION'
848                            || ' '
849                            || 'WHEN NO_DATA_FOUND THEN'
850                            || ' '
851                            || 'NULL;'
852                            || ' '
853                            || 'END;'
854                            || ' '
855                            || 'END LOOP;'
856                            || ' '
857                            || 'EXCEPTION'
858                            || ' '
859                            || 'WHEN OTHERS THEN'
860                            || ' '
861                            || 'ROLLBACK;'
862                            || ' '
863                            || 'END;';
864          COMMIT;
865       END IF;
866    EXCEPTION
867       WHEN OTHERS
868       THEN
869          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
870          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
871          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
872          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
873          RAISE;
874    END;
875 
876 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
877 -- id_type: null means all input ids not seeded nor from special fields, so have
878 -- to be resolved; not null implies an id in the array may or may not be resolved,
879 -- depending on the id value and its type (e.g., seeded, special type/value).
880 -- ignore id mapping failure here for a. 'seeded' ids b. ui rules' rule_folder_id
881 -- because it is useless (and because it may have a non-zero value) c. explicit
882 -- compatability rule's primary opt id (not real fks) d. reference id and component_id
883 -- because there are updates on them after new record insertion e. expression nodes'
884 -- ps_node_id because node could be deleted f. ui node's ui_node_ref_id because they
885 -- are specially handled after insertion (or obsolete anyway)
886 PROCEDURE resolve_ids(array_to_resolve     IN OUT NOCOPY cz_pb_mgr.t_ref,
887                       resolved_array       IN OUT NOCOPY cz_pb_mgr.t_ref,
888                       array_of_new_keys    IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
889                       resolving_id         IN VARCHAR2,
890                       id_type              IN VARCHAR2 DEFAULT NULL
891                      )
892 IS
893   l_use_old_id  BOOLEAN;
894 BEGIN
895   IF cz_pb_mgr.v_status_code=PUBLICATION_ERROR OR array_to_resolve.COUNT=0 THEN RETURN; END IF;
896 
897   FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
898   LOOP
899     BEGIN
900       IF array_to_resolve(j) IS NOT NULL THEN
901         resolved_array(j) := array_of_new_keys(array_to_resolve(j));
902       END IF;
903     EXCEPTION
904       WHEN NO_DATA_FOUND THEN
905         IF array_to_resolve(j) = 0 THEN
906           IF cz_pb_mgr.v_session_parameter = pub_model THEN
907             resolved_array(j) := 1;
908           ELSE
909             resolved_array(j) := 0;
910           END IF;
911         ELSE
912           IF id_type IS NULL THEN
913             l_use_old_id := FALSE;
914           ELSE
915             l_use_old_id := (id_type=FLD_IGNORE_NOW                                       OR
916               id_type=ENTITY_TYPE_UCT        AND array_to_resolve(j)<NONSEED_UCT_MIN_ID   OR
917               id_type=ENTITY_TYPE_UMT        AND array_to_resolve(j)<NONSEED_UMT_MIN_ID   OR
918 	      id_type=ENTITY_TYPE_SIGNATURE  AND array_to_resolve(j)<NONSEED_SIGN_MIN_ID  OR
919 	      id_type=ENTITY_TYPE_RULE       AND array_to_resolve(j)<NONSEED_RULE_MIN_ID  OR
920 	      id_type=ENTITY_TYPE_PROPERTY   AND array_to_resolve(j)<NONSEED_PROP_MIN_ID  OR
921 	      id_type=FLD_PSN_REFERENCE_ID   AND
922 	         (cz_pb_mgr.v_models_not_to_be_exported.FIRST IS NOT NULL OR
923 	          cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES') OR
924 	      id_type=FLD_RULE_COMPONENT_ID AND cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES');
925           END IF;
926           IF l_use_old_id THEN
927             resolved_array(j) := array_to_resolve(j);
928           ELSE
929             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
930             cz_pb_mgr.v_err_message := 'Unable to resolve '||id_type||' id ('||resolving_id||'): '||to_char(array_to_resolve(j));
931             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
932             RAISE;
933           END IF;
934         END IF;
935     END;
936   END LOOP;
937 EXCEPTION
938   WHEN OTHERS THEN
939     cz_pb_mgr.v_err_message  := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
940     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
941     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
942     cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
943     RAISE;
944 END resolve_ids;
945 
946 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
947 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
948                       array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
949                       resolving_id IN VARCHAR2,
950                       id_type  IN VARCHAR2 DEFAULT NULL)
951 IS
952 BEGIN
953   resolve_ids(array_to_resolve,array_to_resolve,array_of_new_keys,resolving_id,id_type);
954 END resolve_ids;
955 
956 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
957 -------procedure that resolves ids via single index keys and one additional array
958 PROCEDURE resolve_tmpl_ui_defs(array_to_resolve               IN OUT NOCOPY cz_pb_mgr.t_ref,
959                                resolved_array                 IN OUT NOCOPY cz_pb_mgr.t_ref,
960                                ui_templ_id_tbl                IN OUT NOCOPY cz_pb_mgr.t_ref,
961                                array_of_new_keys              IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
962                                      resolving_id                     IN VARCHAR2
963                             )
964 IS
965 
966   l_seeded_flag VARCHAR2(1);
967 
968 BEGIN
969 
970   IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
971     IF (array_to_resolve.COUNT > 0) THEN
972       FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
973         LOOP
974           BEGIN
975             IF (array_to_resolve(j) IS NOT NULL) THEN
976               resolved_array(j) := array_of_new_keys(array_to_resolve(j));
977             END IF;
978           EXCEPTION
979             WHEN NO_DATA_FOUND THEN
980               IF (array_to_resolve(j) = 0 AND(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)) THEN
981 
982                IF NOT(ui_templ_id_tbl(j)=0 OR ui_templ_id_tbl(j) IS NULL) THEN
983 
984                  SELECT seeded_flag INTO l_seeded_flag FROM CZ_UI_TEMPLATES
985                   WHERE template_id=ui_templ_id_tbl(j) AND ui_def_id=0;
986 
987                  IF l_seeded_flag='1' THEN
988                      resolved_array(j) := 0;
989                  ELSE
990                    resolved_array(j) := 1;
991                  END IF;
992 
993                END IF;
994 
995             ELSE
996                resolved_array(j) := array_to_resolve(j);
997             END IF;
998         END;
999       END LOOP;
1000     END IF;
1001   END IF;
1002 
1003 EXCEPTION
1004   WHEN OTHERS THEN
1005     cz_pb_mgr.v_err_message  := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
1006     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
1007     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1008     cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
1009 END resolve_tmpl_ui_defs;
1010 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1011    PROCEDURE resolve_tmpl_ui_defs(
1012       p_array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
1013      ,p_templ_array IN OUT NOCOPY cz_pb_mgr.t_ref
1014      ,p_table_name IN VARCHAR2
1015    )
1016    IS
1017    BEGIN
1018       IF (p_array_to_resolve.COUNT > 0)
1019       THEN
1020          FOR i IN p_array_to_resolve.FIRST .. p_array_to_resolve.LAST
1021          LOOP
1022             BEGIN
1023                IF ((p_array_to_resolve(i) IS NOT NULL) AND(p_templ_array(i) IS NOT NULL))
1024                THEN
1025                   IF ((p_array_to_resolve(i) = 0))
1026                   THEN
1027                      IF (   (NOT cz_pb_mgr.g_ui_templates_idx_temp_ref.EXISTS(p_templ_array(i)))
1028                          OR (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1029                         )
1030                      THEN
1031                         p_array_to_resolve(i) := 0;
1032                      ELSE
1033                         p_array_to_resolve(i) := 1;
1034                      END IF;
1035                   END IF;
1036                ELSE
1037                   BEGIN
1038                      p_array_to_resolve(i) := cz_pb_mgr.v_cz_ui_defs_idx_ref(p_array_to_resolve(i));
1039                   EXCEPTION
1040                      WHEN OTHERS
1041                      THEN
1042                         NULL;
1043                   END;
1044                END IF;
1045             EXCEPTION
1046                WHEN NO_DATA_FOUND
1047                THEN
1048                   p_array_to_resolve(i) := 0;
1049             END;
1050          END LOOP;
1051       END IF;
1052    EXCEPTION
1053       WHEN OTHERS
1054       THEN
1055          cz_pb_mgr.v_err_message := 'Error in resolving template ui def id of: ' || p_table_name || ' : ' || SQLERRM;
1056          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'RESOLVETEMPLUIDEFS', SQLCODE);
1057          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1058          RAISE;
1059    END resolve_tmpl_ui_defs;
1060 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1061    PROCEDURE resolve_intl_texts(
1062       array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
1063      ,array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
1064      ,resolving_id IN VARCHAR2
1065    )
1066    IS
1067    BEGIN
1068       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
1069       THEN
1070          IF (array_to_resolve.COUNT > 0)
1071          THEN
1072             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
1073             LOOP
1074                BEGIN
1075                   IF (array_to_resolve(j) IS NOT NULL)
1076                   THEN
1077                      array_to_resolve(j) := array_of_new_keys(array_to_resolve(j));
1078                   END IF;
1079                EXCEPTION
1080                   WHEN NO_DATA_FOUND
1081                   THEN
1082                      IF (array_to_resolve(j) > 1000)
1083                      THEN
1084                         cz_pb_mgr.v_err_message :=
1085                                                  'Resolution error for: ' || resolving_id || ' : ' || TO_CHAR(array_to_resolve(j)) || ' : '
1086                                                  || SQLERRM;
1087                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
1088                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1089                         RAISE;
1090                      END IF;
1091                END;
1092             END LOOP;
1093          END IF;
1094       END IF;
1095    EXCEPTION
1096       WHEN OTHERS
1097       THEN
1098          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
1099          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
1100          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1101          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1102    END resolve_intl_texts;
1103 
1104 ------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
1105    PROCEDURE insert_into_item_tables(
1106       table_name IN VARCHAR2
1107      ,primary_key IN VARCHAR2
1108      ,db_link IN VARCHAR2
1109      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1110      ,plsql_table_name IN VARCHAR2
1111      ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
1112    )
1113    AS
1114       v_cursor NUMBER;
1115       v_numrows NUMBER;
1116       v_insertstring VARCHAR2(10000);
1117       current_column VARCHAR2(128);
1118       v_db_link VARCHAR2(128);
1119       v_last NUMBER;
1120       l_len NUMBER;
1121 
1122       CURSOR col_name_cur(par_table_name VARCHAR2)
1123       IS
1124 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
1125 --the logical column for a logical object than a physical columns
1126          SELECT col.column_name
1127            FROM  user_synonyms syn, all_tab_columns col
1128           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
1129             AND col.owner = syn.table_owner
1130             AND col.table_name = syn.table_name;
1131 
1132 
1133       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE  INDEX BY BINARY_INTEGER;
1134 
1135       col_list col_name_table;
1136       i BINARY_INTEGER := 1;
1137       match_found BOOLEAN;
1138    BEGIN
1139       IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
1140       THEN
1141          v_db_link := db_link;
1142          cz_pb_mgr.v_insert_table_name := table_name;
1143 
1144          BEGIN
1145             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || '  LOOP ';
1146             v_insertstring := v_insertstring || ' BEGIN  insert into ' || table_name || v_db_link || ' (';
1147 
1148             OPEN col_name_cur(table_name);
1149 
1150             LOOP
1151                FETCH col_name_cur
1152                 INTO current_column;
1153 
1154                EXIT WHEN col_name_cur%NOTFOUND;
1155                col_list(i) := LTRIM(RTRIM(current_column));
1156                i := i + 1;
1157                v_insertstring := v_insertstring || current_column || ',';
1158             END LOOP;
1159 
1160             CLOSE col_name_cur;
1161 
1162             v_insertstring := RTRIM(v_insertstring, ',');
1163             v_insertstring := v_insertstring || ')';
1164             v_insertstring := v_insertstring || '  select  ';
1165 
1166             IF (col_list.COUNT > 0)
1167             THEN
1168                FOR j IN col_list.FIRST .. col_list.LAST
1169                LOOP
1170                   match_found := FALSE;
1171 
1172                   IF (plsql_table_list.COUNT > 0)
1173                   THEN
1174                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1175                      LOOP
1176                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1177                         THEN
1178                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1179                            match_found := TRUE;
1180                            EXIT;
1181                         END IF;
1182                      END LOOP;
1183                   END IF;
1184 
1185                   IF (NOT match_found)
1186                   THEN
1187                      v_insertstring := v_insertstring || col_list(j) || ',';
1188                   END IF;
1189                END LOOP;
1190             END IF;
1191 
1192             v_insertstring := RTRIM(v_insertstring, ',');
1193             v_insertstring :=
1194                       v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
1195             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1196             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;   ';
1197             v_insertstring := v_insertstring || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN  ';
1198             v_insertstring := v_insertstring || '  IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_MASTERS'') THEN ';
1199             v_insertstring := v_insertstring || '  UPDATE cz_item_masters' || cz_pb_mgr.v_db_link || ' t  ';
1200             v_insertstring := v_insertstring || '  SET ( ITEM_TYPE_ID,DESC_TEXT,ORIG_SYS_REF,REF_PART_NBR,QUOTEABLE_FLAG,LEAD_TIME ';
1201             v_insertstring := v_insertstring || ' ,ITEM_STATUS,PRIMARY_UOM_CODE,DELETED_FLAG,DECIMAL_QTY_FLAG) ';
1202             v_insertstring := v_insertstring || '  = ( SELECT   ITEM_TYPE_ID,DESC_TEXT,orig_sys_ref,REF_PART_NBR, ';
1203             v_insertstring := v_insertstring || '  QUOTEABLE_FLAG ,LEAD_TIME,ITEM_STATUS,PRIMARY_UOM_CODE, DELETED_FLAG,DECIMAL_QTY_FLAG  ';
1204             v_insertstring := v_insertstring || '  FROM   cz_item_masters WHERE   cz_item_masters.item_id = ' || plsql_table_name || '(m) ';
1205             v_insertstring := v_insertstring || '   AND   deleted_flag = ''0'') WHERE t.item_id = ' || plsql_table_name || '(m); ';
1206             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPES'') THEN  ';
1207             v_insertstring := v_insertstring || '  UPDATE cz_item_types' || cz_pb_mgr.v_db_link || ' t  ';
1208             v_insertstring := v_insertstring || '  SET (DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
1209             v_insertstring := v_insertstring || '  ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF) ';
1210             v_insertstring := v_insertstring || '   = (SELECT DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
1211             v_insertstring := v_insertstring || '	,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF ';
1212             v_insertstring := v_insertstring || '   FROM   cz_item_types WHERE   cz_item_types.item_type_id = ' || plsql_table_name || '(m) ';
1213             v_insertstring := v_insertstring || '   AND   deleted_flag = ''0'') WHERE t.item_type_id = ' || plsql_table_name || '(m); ';
1214             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_PROPERTIES'') THEN  ';
1215             v_insertstring := v_insertstring || '  UPDATE cz_properties' || cz_pb_mgr.v_db_link || ' t ';
1216             v_insertstring := v_insertstring || '   SET ( PROPERTY_UNIT,DESC_TEXT,NAME,DATA_TYPE,DEF_VALUE,USER_NUM01 ';
1217             v_insertstring := v_insertstring || '  ,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04 ';
1218             v_insertstring := v_insertstring || '  ,DELETED_FLAG,EFF_FROM,EFF_TO,ORIG_SYS_REF) = (SELECT PROPERTY_UNIT,DESC_TEXT,';
1219             v_insertstring := v_insertstring || '  NAME,DATA_TYPE,DEF_VALUE,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,';
1220             v_insertstring := v_insertstring || '  USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,EFF_FROM,';
1221             v_insertstring := v_insertstring || '  EFF_TO,ORIG_SYS_REF   FROM   cz_properties  ';
1222             v_insertstring := v_insertstring || '  WHERE   cz_properties.property_id = ' || plsql_table_name || '(m) ';
1223             v_insertstring := v_insertstring || '  AND   deleted_flag = ''0'') WHERE t.property_id = ' || plsql_table_name || '(m); ';
1224             v_insertstring := v_insertstring || '  END IF; END; END LOOP; COMMIT; END; ';
1225 
1226             EXECUTE IMMEDIATE v_insertstring;
1227 
1228             COMMIT;
1229          EXCEPTION
1230             WHEN OTHERS
1231             THEN
1232                ROLLBACK;
1233                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1234                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1235                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1236                cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1237                RAISE;
1238          END;
1239       END IF;
1240    EXCEPTION
1241       WHEN OTHERS
1242       THEN
1243          RAISE;
1244    END insert_into_item_tables;
1245 
1246 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1247 ----generates new publication id for the target publication
1248    PROCEDURE get_new_publication_id(
1249       p_old_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1250      ,x_old_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1251      ,x_new_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1252      ,x_old_rem_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1253      ,x_status IN OUT NOCOPY VARCHAR2
1254    )
1255    AS
1256    BEGIN
1257       IF (x_status <> PUBLICATION_ERROR)
1258       THEN
1259          IF (cz_pb_mgr.v_server_id <> 0)
1260          THEN
1261             SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
1262                                               , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
1263                                               ,cz_pb_mgr.v_oraclesequenceincr
1264                                               )
1265                   ,publication_id, remote_publication_id
1266               INTO x_new_pub_id
1267                   ,x_old_pb_id, x_old_rem_pb_id
1268               FROM cz_model_publications
1269              WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1270          ELSE
1271             SELECT cz_model_publications_s.NEXTVAL, publication_id, remote_publication_id
1272               INTO x_new_pub_id, x_old_pb_id, x_old_rem_pb_id
1273               FROM cz_model_publications
1274              WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1275          END IF;
1276       END IF;
1277    EXCEPTION
1278       WHEN OTHERS
1279       THEN
1280          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
1281          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUB', SQLCODE);
1282          x_status := PUBLICATION_ERROR;
1283          RAISE;
1284    END get_new_publication_id;
1285 
1286 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1287    PROCEDURE insert_item_tables(
1288       table_name IN VARCHAR2
1289      ,primary_key1 IN VARCHAR2
1290      ,primary_key2 IN VARCHAR2
1291      ,db_link IN VARCHAR2
1292      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1293      ,plsql_table_name1 IN VARCHAR2
1294      ,plsql_table_name2 IN VARCHAR2
1295      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1296      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1297    )
1298    AS
1299       v_cursor NUMBER;
1300       v_numrows NUMBER;
1301       v_insertstring VARCHAR2(10000);
1302       current_column VARCHAR2(128);
1303       v_db_link VARCHAR2(128);
1304       v_last NUMBER;
1305 
1306       CURSOR col_name_cur(par_table_name VARCHAR2)
1307       IS
1308 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
1309 --the logical column for a logical object than a physical columns
1310          SELECT col.column_name
1311            FROM  user_synonyms syn, all_tab_columns col
1312           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
1313             AND col.owner = syn.table_owner
1314             AND col.table_name = syn.table_name;
1315 
1316 
1317       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE  INDEX BY BINARY_INTEGER;
1318 
1319       col_list col_name_table;
1320       i BINARY_INTEGER := 1;
1321       match_found BOOLEAN;
1322    BEGIN
1323       IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1324       THEN
1325          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1326          cz_pb_mgr.v_insert_table_name := table_name;
1327 
1328          BEGIN
1329             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP ';
1330             v_insertstring := v_insertstring || 'BEGIN  insert into ' || table_name || v_db_link || ' (';
1331 
1332             OPEN col_name_cur(table_name);
1333 
1334             LOOP
1335                FETCH col_name_cur
1336                 INTO current_column;
1337 
1338                EXIT WHEN col_name_cur%NOTFOUND;
1339                col_list(i) := LTRIM(RTRIM(current_column));
1340                i := i + 1;
1341                v_insertstring := v_insertstring || current_column || ',';
1342             END LOOP;
1343 
1344             CLOSE col_name_cur;
1345 
1346             v_insertstring := RTRIM(v_insertstring, ',');
1347             v_insertstring := v_insertstring || ')';
1348             v_insertstring := v_insertstring || '  select  ';
1349 
1350             IF (col_list.COUNT > 0)
1351             THEN
1352                FOR j IN col_list.FIRST .. col_list.LAST
1353                LOOP
1354                   match_found := FALSE;
1355 
1356                   IF (plsql_table_list.COUNT > 0)
1357                   THEN
1358                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1359                      LOOP
1360                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1361                         THEN
1362                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1363                            match_found := TRUE;
1364                            EXIT;
1365                         END IF;
1366                      END LOOP;
1367                   END IF;
1368 
1369                   IF (NOT match_found)
1370                   THEN
1371                      v_insertstring := v_insertstring || col_list(j) || ',';
1372                   END IF;
1373                END LOOP;
1374             END IF;
1375 
1376             v_insertstring := RTRIM(v_insertstring, ',');
1377             v_insertstring :=
1378                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1379             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1380             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1381             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
1382             v_insertstring := v_insertstring || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN  ';
1383             v_insertstring := v_insertstring || '  IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPE_PROPERTIES'') THEN ';
1384             v_insertstring := v_insertstring || '  UPDATE cz_item_type_properties' || cz_pb_mgr.v_db_link || ' SET  DELETED_FLAG = ''0'' ';
1385             v_insertstring := v_insertstring || '  WHERE PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1386             v_insertstring := v_insertstring || '  AND  ITEM_TYPE_ID  = ' || plsql_table_name2 || '(m);  ';
1387             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_PROPERTY_VALUES'') THEN ';
1388             v_insertstring := v_insertstring || '  UPDATE cz_item_property_values' || cz_pb_mgr.v_db_link || ' t SET   ( PROPERTY_VALUE )= (SELECT PROPERTY_VALUE ';
1389             v_insertstring := v_insertstring || '  FROM  cz_item_property_values WHERE  PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1390             v_insertstring := v_insertstring || '  AND ITEM_ID = ' || plsql_table_name2 || '(m) ) WHERE  t.PROPERTY_ID =  ' || plsql_table_name1 || '(m) ';
1391             v_insertstring := v_insertstring || '  AND t.ITEM_ID  = ' || plsql_table_name2 || '(m); ';
1392             v_insertstring := v_insertstring || '  END IF; END; END LOOP; COMMIT; END; ';
1393 
1394             EXECUTE IMMEDIATE v_insertstring;
1395 
1396             COMMIT;
1397          EXCEPTION
1398             WHEN OTHERS
1399             THEN
1400                ROLLBACK;
1401                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1402                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1403                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1404                cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1405                RAISE;
1406          END;
1407       END IF;
1408 
1409       COMMIT;
1410    END insert_item_tables;
1411 
1412 /* Procedure to insert dev num val for translateable properties of CZ_PROPERTIES into localized texts*/
1413 
1414 PROCEDURE mm_ins_def_num_val_in_intl AS
1415  l_sql_str varchar2(4000);
1416  lang_count number;
1417  BEGIN
1418 
1419   select count(1) into lang_count from fnd_languages where installed_flag in('I','B');
1420 
1421       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.COUNT > 0))
1422       THEN
1423 
1424       --The mm_intl_text_model_id_ref table contains model_id of intl texts.
1425       -- mm_intl_text_model_id_ref already resolved in mm_sync_properties (put step) using h_devl_prj_by_intl_text map
1426 
1427       l_sql_str:='BEGIN'
1428                    || ' '
1429                    || 'cz_pb_mgr.v_expr_count := 0;'
1430                    || ' '
1431                    || 'FOR I IN cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.FIRST .. cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.LAST'
1432                    || ' '
1433                    || 'LOOP'
1434                    || ' INSERT INTO cz_localized_texts'
1435                    || cz_pb_mgr.v_db_link
1436                    || '('
1437                    || ' '
1438                    || 'intl_text_id,localized_str,ui_def_id,ORIG_SYS_REF,model_id,source_lang,language)'
1439                    || ' '
1440                    || 'select cz_pb_mgr.mm_v_tbl_prop_vals_trans_new(i),localized_str,ui_def_id,ORIG_SYS_REF,cz_pb_mgr.mm_intl_text_model_id_ref(i),source_lang,language'
1441                    || ' '
1442                    || ' from cz_localized_texts where intl_text_id=cz_pb_mgr.mm_v_tbl_prop_vals_trans_old(i);'
1443                    || ' '
1444                    || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
1445                    || ' '
1446                    || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
1447                    || ' '
1448                    || 'END IF;'
1449                    || ' '
1450                    || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count +'||lang_count||';'
1451                    || ' '
1452                    || 'END LOOP;'
1453                    || ' '
1454                    || 'END;';
1455 
1456          EXECUTE IMMEDIATE    l_sql_str;
1457       END IF;
1458 
1459       COMMIT;
1460    EXCEPTION
1461       WHEN OTHERS
1462       THEN
1463          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'CZ_LOCALIZED_TEXTS', 'SQLERRM', SQLERRM);
1464          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_localized_texts', SQLCODE);
1465          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1466          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1467          RAISE;
1468  END;
1469 
1470 
1471 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1472    PROCEDURE insert_item_schema
1473    IS
1474       plsql_table_list cz_pb_mgr.col_plsql_table_list;
1475       rec_count NUMBER;
1476       tmp_array_count NUMBER;
1477    BEGIN
1478 --All reading has been moved to load_data->read_item_schema.
1479 
1480       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1481       THEN
1482          mm_v_tbl_sync_prop_vals_num.DELETE;
1483          mm_v_tbl_prop_vals_trans_old.DELETE;
1484          mm_v_tbl_prop_vals_trans_new.DELETE;
1485          mm_v_ht_sync_all_prop_val_num.DELETE;
1486          mm_v_ht_sync_all_prop.DELETE;
1487          mm_v_tbl_sync_prop_type.DELETE;
1488          mm_v_tbl_sync_prop_folder.DELETE;
1489          mm_v_tbl_sync_prop.DELETE;
1490          mm_v_ht_sync_item_type.DELETE;
1491          mm_v_ht_sync_item_type_items.DELETE;
1492          mm_v_ht_sync_items.DELETE;
1493          mm_v_ht_sync_item_prop.DELETE;
1494          mm_v_ht_sync_item_type_prop.DELETE;
1495          mm_v_ht_sync_itmtype_for_prop.DELETE;
1496          mm_v_ht_sync_it_propval_itm.DELETE;
1497          mm_v_ht_sync_ps_propval.DELETE;
1498          mm_v_ht_sync_it_propval.DELETE;
1499          mm_v_ht_eff_set_tbl_t.DELETE;
1500          mm_v_ht_eff_set_tbl_s.DELETE;
1501          mm_v_ht_sync_exist_items.DELETE;
1502          mm_v_ht_sync_exist_item_types.DELETE; --Bug9180063
1503          mm_insert_array1.DELETE;
1504          mm_insert_array2.DELETE;
1505          mm_source_array1.DELETE;
1506          mm_source_array2.DELETE;
1507          mm_objtype_array.DELETE;
1508          mm_tgtfldr_array.DELETE;
1509 
1510          mm_intl_text_model_id_ref.DELETE;
1511 
1512          mm_sync_properties;
1513          mm_sync_itemschema;
1514          mm_migrate_into_ps_prop_vals;
1515       END IF;
1516 
1517       -- ITEM TYPES
1518       plsql_table_list.DELETE;
1519       rec_count := 1;
1520       plsql_table_list(rec_count).col_name := 'item_type_id';
1521 
1522       -- sure if we need to maintain a table for orig_sys_ref, if needed, we need to maintain a sync table
1523       -- for model migration and then resolve them before updating
1524       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1525       THEN
1526          cz_pb_mgr.mm_insert_array1.DELETE;
1527          cz_pb_mgr.mm_insert_array2.DELETE;
1528          cz_pb_mgr.mm_insert_array3.DELETE;
1529          cz_pb_mgr.mm_source_array1.DELETE;
1530          cz_pb_mgr.mm_source_array2.DELETE;
1531          cz_pb_mgr.mm_source_array3.DELETE;
1532          --get only those that need to be migrated
1533          mm_resolve_ids(cz_pb_mgr.v_item_types_new_ref
1534                        ,cz_pb_mgr.mm_v_ht_sync_item_type
1535                        ,'ITEM TYPES'
1536                        ,cz_pb_mgr.mm_insert_array1
1537                        ,cz_pb_mgr.mm_source_array1
1538                        );
1539 --Bug9619157 . Only the item types not exists in target, needs to be moved to target instance and will
1540 -- have to resolve orig_sys_ref, not ALL the item types for the migrated model.
1541 -- So, we changed to mm_source_array1 from v_item_types_new_ref
1542 
1543          mm_resolve_orig_refs(cz_pb_mgr.mm_source_array1
1544                              ,cz_pb_mgr.mm_v_ht_item_types_orig_ref
1545                              ,'ITEM TYPES - ORIG SYS REF'
1546                              ,cz_pb_mgr.mm_insert_array3
1547                              ,cz_pb_mgr.mm_source_array3
1548                              );
1549 
1550       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1551 
1552          tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1553 
1554          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1555            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item type source array: ' || tmp_array_count);
1556 
1557          tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1558 
1559          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1560            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item type id): ' || tmp_array_count);
1561 
1562          tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1563 
1564          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1565            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (orig_sys_ref item type ): ' || tmp_array_count);
1566 
1567          mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM TYPE SOURCE');
1568          mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM TYPE INSERT');
1569          mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM TYPE ORIG_SYS_REF INSERT');
1570 
1571       END IF;
1572 
1573          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1574          rec_count := rec_count + 1;
1575          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1576          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1577          insert_into_item_tables('cz_item_types'
1578                                 ,'item_type_id'
1579                                 ,cz_pb_mgr.v_db_link
1580                                 ,plsql_table_list
1581                                 ,'cz_pb_mgr.mm_source_array1'
1582                                 ,cz_pb_mgr.mm_source_array1
1583                                 );
1584  --todo Bug9180063 Update the Non BOM item types, that have orig_sys_ref = 'NULL'
1585         BEGIN
1586            IF (cz_pb_mgr.mm_insert_array1.COUNT > 0)
1587            THEN
1588              EXECUTE IMMEDIATE    'BEGIN'
1589                        || ' '
1590                        || 'FOR I IN cz_pb_mgr.mm_insert_array1.FIRST..cz_pb_mgr.mm_insert_array1.LAST'
1591                        || ' '
1592                        || 'LOOP'
1593                        || ' '
1594                        || 'UPDATE cz_item_types'
1595                        || cz_pb_mgr.v_db_link
1596                        || '  t'
1597                        || ' '
1598                        || 'SET   t.orig_sys_ref = NULL'
1599                        || ' '
1600                        || 'WHERE  t.item_type_id = cz_pb_mgr.mm_insert_array1(i)'
1601                        || ' '
1602                        || 'AND   t.orig_sys_ref = ''NULL'';'
1603                        || ' '
1604                        || 'END LOOP;'
1605                        || ' '
1606                        || 'END;';
1607              COMMIT;
1608            END IF;
1609         END;
1610       ELSE
1611          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_new_ref';
1612          rec_count := rec_count + 1;
1613          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1614          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_orig_ref';
1615          insert_into_item_tables('cz_item_types'
1616                                 ,'item_type_id'
1617                                 ,cz_pb_mgr.v_db_link
1618                                 ,plsql_table_list
1619                                 ,'cz_pb_mgr.v_item_types_new_ref'
1620                                 ,cz_pb_mgr.v_item_types_new_ref
1621                                 );
1622       END IF;
1623 
1624       --ITEMS
1625       plsql_table_list.DELETE;
1626       rec_count := 1;
1627 
1628       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1629       THEN
1630          cz_pb_mgr.mm_insert_array1.DELETE;
1631          cz_pb_mgr.mm_insert_array2.DELETE;
1632          cz_pb_mgr.mm_insert_array3.DELETE;
1633          cz_pb_mgr.mm_source_array1.DELETE;
1634          cz_pb_mgr.mm_source_array2.DELETE;
1635          cz_pb_mgr.mm_source_array3.DELETE;
1636 
1637          mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1638                        ,cz_pb_mgr.mm_v_ht_sync_items
1639                        ,'ITEMS - ITEM ARRAY'
1640                        ,cz_pb_mgr.mm_insert_array1
1641                        ,cz_pb_mgr.mm_source_array1
1642                        );
1643 
1644 --Bug9619157 : Changed the array for the same reason as stated for item types.
1645 -- Source array (mm_source_array1) can be shorter than v_item_masters_tbl because ht_sync_items only contains NEW items
1646 -- means items to create on target
1647 
1648          mm_resolve_ids(cz_pb_mgr.mm_source_array1
1649                        ,cz_pb_mgr.mm_v_ht_sync_item_type_items
1650                        ,'ITEMS - ITEM TYPE ARRAY'
1651                        ,cz_pb_mgr.mm_insert_array2
1652                        ,cz_pb_mgr.mm_source_array2
1653                        );
1654 
1655 --Bug9619157 : Changed the array for the same reason as stated for item types.
1656          mm_resolve_orig_refs(cz_pb_mgr.mm_source_array1
1657                              ,cz_pb_mgr.mm_v_ht_items_orig_ref
1658                              ,'ITEMS - ORIG SYS REF'
1659                              ,cz_pb_mgr.mm_insert_array3
1660                              ,cz_pb_mgr.mm_source_array3
1661                              );
1662          plsql_table_list(rec_count).col_name := 'item_id';
1663          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1664          rec_count := rec_count + 1;
1665          plsql_table_list(rec_count).col_name := 'item_type_id';
1666          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1667          rec_count := rec_count + 1;
1668          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1669          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1670 
1671 
1672       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1673 
1674          tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1675 
1676          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1677            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of source array: ' || tmp_array_count);
1678 
1679          tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1680 
1681          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1682            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item_id): ' || tmp_array_count);
1683 
1684          tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1685 
1686          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1687            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2 (item_type): ' || tmp_array_count);
1688 
1689          tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1690 
1691          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1692            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (orig_sys_ref): ' || tmp_array_count);
1693 
1694          mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM SOURCE');
1695          mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM INSERT');
1696          mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM TYPE INSERT');
1697          mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM ORIG_SYS_REF INSERT');
1698 
1699       END IF;
1700 
1701          insert_into_item_tables('cz_item_masters'
1702                                 ,'item_id'
1703                                 ,cz_pb_mgr.v_db_link
1704                                 ,plsql_table_list
1705                                 ,'cz_pb_mgr.mm_source_array1'
1706                                 ,cz_pb_mgr.mm_source_array1
1707                                 );
1708       ELSE
1709          plsql_table_list(rec_count).col_name := 'item_id';
1710          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_masters_tbl';
1711          rec_count := rec_count + 1;
1712          plsql_table_list(rec_count).col_name := 'item_type_id';
1713          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_tbl';
1714          rec_count := rec_count + 1;
1715          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1716          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_items_orig_ref';
1717          insert_into_item_tables('cz_item_masters'
1718                                 ,'item_id'
1719                                 ,cz_pb_mgr.v_db_link
1720                                 ,plsql_table_list
1721                                 ,'cz_pb_mgr.v_item_masters_tbl'
1722                                 ,cz_pb_mgr.v_item_masters_tbl
1723                                 );
1724       END IF;
1725 
1726       --PROPERTIES (with RP_ENTRIES if model migration)
1727       plsql_table_list.DELETE;
1728       rec_count := 1;
1729 
1730       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1731       THEN
1732          cz_pb_mgr.mm_insert_array1.DELETE;
1733          cz_pb_mgr.mm_insert_array2.DELETE;
1734          cz_pb_mgr.mm_objtype_array.DELETE;
1735          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1736          cz_pb_mgr.mm_source_array1.DELETE;
1737          cz_pb_mgr.mm_source_array2.DELETE;
1738 
1739 --insert into localized texts:ids which belong to  translateable props
1740          mm_ins_def_num_val_in_intl;
1741 
1742          mm_resolve_ids_w_rp_entries(cz_pb_mgr.v_remote_prop_ref
1743                                     ,cz_pb_mgr.mm_v_tbl_sync_prop
1744                                     ,'PRP'
1745                                     ,g_migration_tgt_folder_id
1746                                     ,'PROPERTIES - PROPERTIES AND RP ENTRIES'
1747                                     ,mm_insert_array1
1748                                     ,mm_objtype_array
1749                                     ,mm_tgtfldr_array
1750                                     ,mm_source_array1
1751                                     );
1752 
1753          --The array cz_pb_mgr.mm_v_tbl_sync_prop_vals_num is a hash table, containing numeric default values,
1754          --hashed by target property_id, so we cannot use it directly in the following block. We need to construct a
1755          --new array that will be in synch with mm_insert_array1. Also, it should be global to be used inside the
1756          --insert_into_item_tables procedure.
1757 
1758          FOR i IN 1..cz_pb_mgr.mm_insert_array1.COUNT LOOP
1759 
1760             cz_pb_mgr.mm_insert_array2(i) := cz_pb_mgr.mm_v_tbl_sync_prop_vals_num(cz_pb_mgr.mm_insert_array1(i));
1761          END LOOP;
1762 
1763          plsql_table_list(rec_count).col_name := 'property_id';
1764          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1765          rec_count:=rec_count+1;
1766 
1767          plsql_table_list(rec_count).col_name := 'def_num_value';
1768          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1769 
1770          insert_into_item_tables('cz_properties'
1771                                 ,'property_id'
1772                                 ,cz_pb_mgr.v_db_link
1773                                 ,plsql_table_list
1774                                 ,'cz_pb_mgr.mm_source_array1'
1775                                 ,cz_pb_mgr.mm_source_array1
1776                                 );
1777 
1778          --insert rp entries as well
1779          plsql_table_list.DELETE;
1780          rec_count := 1;
1781          plsql_table_list(rec_count).col_name := 'object_id';
1782          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1783          rec_count := rec_count + 1;
1784          plsql_table_list(rec_count).col_name := 'object_type';
1785          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_objtype_array';
1786          rec_count := rec_count + 1;
1787          plsql_table_list(rec_count).col_name := 'enclosing_folder';
1788          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_tgtfldr_array';
1789          insert_into_rp_entries('cz_rp_entries'
1790                                ,'object_id'
1791                                ,'object_type'
1792                                ,cz_pb_mgr.v_db_link
1793                                ,plsql_table_list
1794                                ,'cz_pb_mgr.mm_source_array1'
1795                                ,'cz_pb_mgr.mm_objtype_array'
1796                                ,cz_pb_mgr.mm_source_array1
1797                                ,cz_pb_mgr.mm_objtype_array
1798                                );
1799       ELSE
1800          plsql_table_list(rec_count).col_name := 'property_id';
1801          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_remote_prop_ref';
1802          insert_into_item_tables('cz_properties'
1803                                 ,'property_id'
1804                                 ,cz_pb_mgr.v_db_link
1805                                 ,plsql_table_list
1806                                 ,'cz_pb_mgr.v_remote_prop_ref'
1807                                 ,cz_pb_mgr.v_remote_prop_ref
1808                                 );
1809       END IF;
1810 
1811       --ITEM TYPE PROPERTIES
1812       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1813       THEN
1814          cz_pb_mgr.mm_insert_array1.DELETE;
1815          cz_pb_mgr.mm_insert_array2.DELETE;
1816          cz_pb_mgr.mm_insert_array3.DELETE;
1817          cz_pb_mgr.mm_objtype_array.DELETE;
1818          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1819          cz_pb_mgr.mm_source_array1.DELETE;
1820          cz_pb_mgr.mm_source_array2.DELETE;
1821          cz_pb_mgr.mm_source_array3.DELETE;
1822          mm_resolve_ids(cz_pb_mgr.v_item_prop_id_tbl
1823                        ,cz_pb_mgr.mm_v_ht_sync_item_type_prop
1824                        ,'ITEM TYPE PROPERTIES - PROP'
1825                        ,cz_pb_mgr.mm_insert_array1
1826                        ,cz_pb_mgr.mm_source_array1
1827                        );
1828          mm_resolve_ids(cz_pb_mgr.v_item_prop_type_tbl
1829                        ,cz_pb_mgr.mm_v_ht_sync_itmtype_for_prop
1830                        ,'ITEM TYPE PROPERTIES - ITEM TYPE'
1831                        ,cz_pb_mgr.mm_insert_array2
1832                        ,cz_pb_mgr.mm_source_array2
1833                        );
1834          mm_resolve_orig_refs(cz_pb_mgr.v_src_type_prop_orig_tbl
1835                              ,cz_pb_mgr.mm_v_ht_item_typ_prop_orig_ref
1836                              ,'ITEM TYPE PROPERTIES - ORIG SYS REF'
1837                              ,cz_pb_mgr.mm_insert_array3
1838                              ,cz_pb_mgr.mm_source_array3
1839                              );
1840 
1841       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1842 
1843          tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1844 
1845          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1846            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item type prop source array: ' || tmp_array_count);
1847 
1848          tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1849 
1850          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1851            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item type prop id): ' || tmp_array_count);
1852 
1853          tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1854 
1855          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1856            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2(item type): ' || tmp_array_count);
1857 
1858          tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1859 
1860          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1861            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (item type prop orig_sys_ref): ' || tmp_array_count);
1862 
1863          mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM TYPE PROP SOURCE');
1864          mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM TYPE PROP INSERT');
1865          mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM TYPE PROP ITEM TYPE INSERT');
1866          mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM TYPE PROP ORIG_SYS_REF INSERT');
1867 
1868       END IF;
1869 
1870          plsql_table_list.DELETE;
1871          rec_count := 1;
1872          plsql_table_list(rec_count).col_name := 'property_id';
1873          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1874          rec_count := rec_count + 1;
1875          plsql_table_list(rec_count).col_name := 'item_type_id';
1876          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1877          rec_count := rec_count + 1;
1878          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1879          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1880          insert_item_tables('cz_item_type_properties'
1881                            ,'property_id'
1882                            ,'item_type_id'
1883                            ,cz_pb_mgr.v_db_link
1884                            ,plsql_table_list
1885                            ,'cz_pb_mgr.mm_source_array1'
1886                            ,'cz_pb_mgr.mm_source_array2'
1887                            ,cz_pb_mgr.mm_source_array1
1888                            ,cz_pb_mgr.mm_source_array2
1889                            );
1890  --todo Bug9180063 Update the Non BOM item type properties, that have orig_sys_ref = 'NULL'
1891  -- there is no need to have any exception block as the calling procedure will take care of this.
1892          BEGIN
1893            IF (cz_pb_mgr.mm_insert_array2.COUNT > 0)
1894            THEN
1895              EXECUTE IMMEDIATE    'BEGIN'
1896                        || ' '
1897                        || 'FOR I IN cz_pb_mgr.mm_insert_array2.FIRST..cz_pb_mgr.mm_insert_array2.LAST'
1898                        || ' '
1899                        || 'LOOP'
1900                        || ' '
1901                        || 'UPDATE cz_item_type_properties'
1902                        || cz_pb_mgr.v_db_link
1903                        || '  t'
1904                        || ' '
1905                        || 'SET   t.orig_sys_ref = NULL'
1906                        || ' '
1907                        || 'WHERE  t.item_type_id = cz_pb_mgr.mm_insert_array2(i)'
1908                        || ' '
1909                        || 'AND   t.orig_sys_ref = ''NULL'';'
1910                        || ' '
1911                        || 'END LOOP;'
1912                        || ' '
1913                        || 'END;';
1914              COMMIT;
1915            END IF;
1916         END;
1917       END IF;
1918 
1919       --ITEM  PROPERTY VALUES
1920       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1921       THEN
1922          cz_pb_mgr.mm_insert_array1.DELETE;
1923          cz_pb_mgr.mm_insert_array2.DELETE;
1924          cz_pb_mgr.mm_insert_array3.DELETE;
1925          cz_pb_mgr.mm_objtype_array.DELETE;
1926          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1927          cz_pb_mgr.mm_source_array1.DELETE;
1928          cz_pb_mgr.mm_source_array2.DELETE;
1929          cz_pb_mgr.mm_source_array3.DELETE;
1930          mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_id_tbl
1931                        ,cz_pb_mgr.mm_v_ht_sync_it_propval
1932                        ,'IT PROP VAL- PROPERTIES'
1933                        ,cz_pb_mgr.mm_insert_array1
1934                        ,cz_pb_mgr.mm_source_array1
1935                        );
1936          mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_item_tbl
1937                        ,cz_pb_mgr.mm_v_ht_sync_it_propval_itm
1938                        ,'IT PROP VALS - ITEMS'
1939                        ,cz_pb_mgr.mm_insert_array2
1940                        ,cz_pb_mgr.mm_source_array2
1941                        );
1942          mm_resolve_orig_refs(cz_pb_mgr.v_src_prop_val_orig_tbl
1943                              ,cz_pb_mgr.mm_v_ht_item_prop_val_orig_ref
1944                              ,'IT PROP VAL - ORIG SYS REF'
1945                              ,cz_pb_mgr.mm_insert_array3
1946                              ,cz_pb_mgr.mm_source_array3
1947                              );
1948 
1949       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1950 
1951          tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1952 
1953          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1954            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item prop val source array: ' || tmp_array_count);
1955 
1956          tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1957 
1958          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1959            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item prop val prop id): ' || tmp_array_count);
1960 
1961          tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1962 
1963          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1964            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2(item prop val item id): ' || tmp_array_count);
1965 
1966          tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1967 
1968          INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1969            (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (item prop val orig_sys_ref): ' || tmp_array_count);
1970 
1971          mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM PROP VAL SOURCE');
1972          mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM PROP VAL INSERT');
1973          mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM PROP VAL ITEM ID INSERT');
1974          mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM PROP VAL ORIG_SYS_REF INSERT');
1975 
1976       END IF;
1977 
1978          plsql_table_list.DELETE;
1979          rec_count := 1;
1980          plsql_table_list(rec_count).col_name := 'property_id';
1981          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1982          rec_count := rec_count + 1;
1983          plsql_table_list(rec_count).col_name := 'item_id';
1984          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1985          rec_count := rec_count + 1;
1986          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1987          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1988          insert_item_tables('cz_item_property_values'
1989                            ,'property_id'
1990                            ,'item_id'
1991                            ,cz_pb_mgr.v_db_link
1992                            ,plsql_table_list
1993                            ,'cz_pb_mgr.mm_source_array1'
1994                            ,'cz_pb_mgr.mm_source_array2'
1995                            ,cz_pb_mgr.mm_source_array1
1996                            ,cz_pb_mgr.mm_source_array2
1997                            );
1998  --todo Bug9180063 Update the Non BOM item  property values, that have orig_sys_ref = 'NULL'
1999         BEGIN
2000            IF (cz_pb_mgr.mm_insert_array2.COUNT > 0)
2001            THEN
2002              EXECUTE IMMEDIATE    'BEGIN'
2003                        || ' '
2004                        || 'FOR I IN cz_pb_mgr.mm_insert_array2.FIRST..cz_pb_mgr.mm_insert_array2.LAST'
2005                        || ' '
2006                        || 'LOOP'
2007                        || ' '
2008                        || 'UPDATE cz_item_property_values'
2009                        || cz_pb_mgr.v_db_link
2010                        || '  t'
2011                        || ' '
2012                        || 'SET   t.orig_sys_ref = NULL'
2013                        || ' '
2014                        || 'WHERE  t.item_id = cz_pb_mgr.mm_insert_array2(i)'
2015                        || ' '
2016                        || 'AND   t.orig_sys_ref = ''NULL'';'
2017                        || ' '
2018                        || 'END LOOP;'
2019                        || ' '
2020                        || 'END;';
2021              COMMIT;
2022            END IF;
2023         END;
2024       END IF;
2025    END insert_item_schema;
2026 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2027    PROCEDURE insert_into_rp_entries(
2028       table_name IN VARCHAR2
2029      ,primary_key1 IN VARCHAR2
2030      ,primary_key2 IN VARCHAR2
2031      ,db_link IN VARCHAR2
2032      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2033      ,plsql_table_name1 IN VARCHAR2
2034      ,plsql_table_name2 IN VARCHAR2
2035      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2036      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
2037    )
2038    AS
2039       v_cursor NUMBER;
2040       v_numrows NUMBER;
2041       v_insertstring VARCHAR2(10000);
2042       current_column VARCHAR2(128);
2043       v_db_link VARCHAR2(128);
2044       v_last NUMBER;
2045 
2046       CURSOR col_name_cur(par_table_name VARCHAR2)
2047       IS
2048 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2049 --the logical column for a logical object than a physical columns
2050          SELECT col.column_name
2051            FROM  user_synonyms syn, all_tab_columns col
2052           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2053             AND col.owner = syn.table_owner
2054             AND col.table_name = syn.table_name;
2055 
2056 
2057       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE  INDEX BY BINARY_INTEGER;
2058 
2059       col_list col_name_table;
2060       i BINARY_INTEGER := 1;
2061       match_found BOOLEAN;
2062    BEGIN
2063       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2064       THEN
2065          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2066          cz_pb_mgr.v_insert_table_name := table_name;
2067 
2068          BEGIN
2069             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP ';
2070             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2071 
2072             OPEN col_name_cur(table_name);
2073 
2074             LOOP
2075                FETCH col_name_cur
2076                 INTO current_column;
2077 
2078                EXIT WHEN col_name_cur%NOTFOUND;
2079                col_list(i) := LTRIM(RTRIM(current_column));
2080                i := i + 1;
2081                v_insertstring := v_insertstring || current_column || ',';
2082             END LOOP;
2083 
2084             CLOSE col_name_cur;
2085 
2086             v_insertstring := RTRIM(v_insertstring, ',');
2087             v_insertstring := v_insertstring || ')';
2088             v_insertstring := v_insertstring || '  select  ';
2089 
2090             IF (col_list.COUNT > 0)
2091             THEN
2092                FOR j IN col_list.FIRST .. col_list.LAST
2093                LOOP
2094                   match_found := FALSE;
2095 
2096                   IF (plsql_table_list.COUNT > 0)
2097                   THEN
2098                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2099                      LOOP
2100                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2101                         THEN
2102                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2103                            match_found := TRUE;
2104                            EXIT;
2105                         END IF;
2106                      END LOOP;
2107                   END IF;
2108 
2109                   IF (NOT match_found)
2110                   THEN
2111                      v_insertstring := v_insertstring || col_list(j) || ',';
2112                   END IF;
2113                END LOOP;
2114             END IF;
2115 
2116             v_insertstring := RTRIM(v_insertstring, ',');
2117             v_insertstring :=
2118                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2119             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2120             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2121             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; ';
2122             v_insertstring :=
2123                   v_insertstring
2124                || '  EXCEPTION WHEN OTHERS THEN '
2125                || ' '
2126                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2127                || ' '
2128                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2129                || ' '
2130                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2131 
2132             EXECUTE IMMEDIATE v_insertstring;
2133 
2134             COMMIT;
2135          EXCEPTION
2136             WHEN OTHERS
2137             THEN
2138                ROLLBACK;
2139                RAISE;
2140          END;
2141       END IF;
2142 
2143       COMMIT;
2144    END;
2145 
2146 ----------------------------------------------------
2147 
2148    ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2149    PROCEDURE insert_into_table(
2150       table_name IN VARCHAR2
2151      ,primary_key1 IN VARCHAR2
2152      ,primary_key2 IN VARCHAR2
2153      ,primary_key3 IN VARCHAR2
2154      ,db_link IN VARCHAR2
2155      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2156      ,plsql_table_name1 IN VARCHAR2
2157      ,plsql_table_name2 IN VARCHAR2
2158      ,plsql_table_name3 IN VARCHAR2
2159      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2160      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2161      ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.varchar_type_tbl
2162    )
2163    AS
2164       v_cursor NUMBER;
2165       v_numrows NUMBER;
2166       v_insertstring VARCHAR2(10000);
2167       current_column VARCHAR2(128);
2168       v_db_link VARCHAR2(128);
2169       v_last NUMBER;
2170 
2171       CURSOR col_name_cur(par_table_name VARCHAR2)
2172       IS
2173 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2174 --the logical column for a logical object than a physical columns
2175          SELECT col.column_name
2176            FROM  user_synonyms syn, all_tab_columns col
2177           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2178             AND col.owner = syn.table_owner
2179             AND col.table_name = syn.table_name;
2180 
2181 
2182       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE   INDEX BY BINARY_INTEGER;
2183 
2184       col_list col_name_table;
2185       i BINARY_INTEGER := 1;
2186       match_found BOOLEAN;
2187    BEGIN
2188       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2189       THEN
2190          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2191          cz_pb_mgr.v_insert_table_name := table_name;
2192 
2193          BEGIN
2194             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
2195             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2196 
2197             OPEN col_name_cur(table_name);
2198 
2199             LOOP
2200                FETCH col_name_cur
2201                 INTO current_column;
2202 
2203                EXIT WHEN col_name_cur%NOTFOUND;
2204                col_list(i) := LTRIM(RTRIM(current_column));
2205                i := i + 1;
2206                v_insertstring := v_insertstring || current_column || ',';
2207             END LOOP;
2208 
2209             CLOSE col_name_cur;
2210 
2211             v_insertstring := RTRIM(v_insertstring, ',');
2212             v_insertstring := v_insertstring || ')';
2213             v_insertstring := v_insertstring || '  select  ';
2214 
2215             IF (col_list.COUNT > 0)
2216             THEN
2217                FOR j IN col_list.FIRST .. col_list.LAST
2218                LOOP
2219                   match_found := FALSE;
2220 
2221                   IF (plsql_table_list.COUNT > 0)
2222                   THEN
2223                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2224                      LOOP
2225                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2226                         THEN
2227                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2228                            match_found := TRUE;
2229                            EXIT;
2230                         END IF;
2231                      END LOOP;
2232                   END IF;
2233 
2234                   IF (NOT match_found)
2235                   THEN
2236                      v_insertstring := v_insertstring || col_list(j) || ',';
2237                   END IF;
2238                END LOOP;
2239             END IF;
2240 
2241             v_insertstring := RTRIM(v_insertstring, ',');
2242             v_insertstring :=
2243                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2244             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2245             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
2246             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2247             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2248             v_insertstring :=
2249                   v_insertstring
2250                || '  EXCEPTION WHEN OTHERS THEN'
2251                || ' '
2252                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2253                || ' '
2254                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2255                || ' '
2256                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2257 
2258             EXECUTE IMMEDIATE v_insertstring;
2259 
2260             COMMIT;
2261          EXCEPTION
2262             WHEN OTHERS
2263             THEN
2264                ROLLBACK;
2265                RAISE;
2266          END;
2267       END IF;
2268 
2269       COMMIT;
2270    END;
2271 
2272 -------------------------------------------------------------------------
2273    PROCEDURE insert_into_table(
2274       table_name IN VARCHAR2
2275      ,primary_key1 IN VARCHAR2
2276      ,primary_key2 IN VARCHAR2
2277      ,primary_key3 IN VARCHAR2
2278      ,db_link IN VARCHAR2
2279      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2280      ,plsql_table_name1 IN VARCHAR2
2281      ,plsql_table_name2 IN VARCHAR2
2282      ,plsql_table_name3 IN VARCHAR2
2283      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2284      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2285      ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.t_ref
2286    )
2287    AS
2288       v_cursor NUMBER;
2289       v_numrows NUMBER;
2290       v_insertstring VARCHAR2(10000);
2291       current_column VARCHAR2(128);
2292       v_db_link VARCHAR2(128);
2293       v_last NUMBER;
2294 
2295       CURSOR col_name_cur(par_table_name VARCHAR2)
2296       IS
2297 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2298 --the logical column for a logical object than a physical columns
2299          SELECT col.column_name
2300            FROM  user_synonyms syn, all_tab_columns col
2301           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2302             AND col.owner = syn.table_owner
2303             AND col.table_name = syn.table_name;
2304 
2305 
2306       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE    INDEX BY BINARY_INTEGER;
2307 
2308       col_list col_name_table;
2309       i BINARY_INTEGER := 1;
2310       match_found BOOLEAN;
2311    BEGIN
2312       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2313       THEN
2314          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2315          cz_pb_mgr.v_insert_table_name := table_name;
2316 
2317          BEGIN
2318             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
2319             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2320 
2321             OPEN col_name_cur(table_name);
2322 
2323             LOOP
2324                FETCH col_name_cur
2325                 INTO current_column;
2326 
2327                EXIT WHEN col_name_cur%NOTFOUND;
2328                col_list(i) := LTRIM(RTRIM(current_column));
2329                i := i + 1;
2330                v_insertstring := v_insertstring || current_column || ',';
2331             END LOOP;
2332 
2333             CLOSE col_name_cur;
2334 
2335             v_insertstring := RTRIM(v_insertstring, ',');
2336             v_insertstring := v_insertstring || ')';
2337             v_insertstring := v_insertstring || '  select  ';
2338 
2339             IF (col_list.COUNT > 0)
2340             THEN
2341                FOR j IN col_list.FIRST .. col_list.LAST
2342                LOOP
2343                   match_found := FALSE;
2344 
2345                   IF (plsql_table_list.COUNT > 0)
2346                   THEN
2347                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2348                      LOOP
2349                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2350                         THEN
2351                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2352                            match_found := TRUE;
2353                            EXIT;
2354                         END IF;
2355                      END LOOP;
2356                   END IF;
2357 
2358                   IF (NOT match_found)
2359                   THEN
2360                      v_insertstring := v_insertstring || col_list(j) || ',';
2361                   END IF;
2362                END LOOP;
2363             END IF;
2364 
2365             v_insertstring := RTRIM(v_insertstring, ',');
2366             v_insertstring :=
2367                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2368             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2369             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
2370             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2371             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END;   END LOOP; COMMIT; ';
2372             v_insertstring :=
2373                   v_insertstring
2374                || '  EXCEPTION WHEN OTHERS THEN'
2375                || ' '
2376                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2377                || ' '
2378                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2379                || ' '
2380                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2381 
2382             EXECUTE IMMEDIATE v_insertstring;
2383 
2384             COMMIT;
2385          EXCEPTION
2386             WHEN OTHERS
2387             THEN
2388                cz_pb_mgr.v_err_message := 'Insert into cz ui page refs: ' || SQLERRM;
2389                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZUIPAGEREFS', SQLCODE);
2390                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2391                RAISE;
2392          END;
2393       END IF;
2394 
2395       COMMIT;
2396    END;
2397 
2398 ------------------------------------------------------------
2399    PROCEDURE insert_into_table(
2400       table_name IN VARCHAR2
2401      ,primary_key1 IN VARCHAR2
2402      ,primary_key2 IN VARCHAR2
2403      ,db_link IN VARCHAR2
2404      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2405      ,plsql_table_name1 IN VARCHAR2
2406      ,plsql_table_name2 IN VARCHAR2
2407      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2408      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.objtype
2409    )
2410    AS
2411       v_cursor NUMBER;
2412       v_numrows NUMBER;
2413       v_insertstring VARCHAR2(10000);
2414       current_column VARCHAR2(128);
2415       v_db_link VARCHAR2(128);
2416       v_last NUMBER;
2417 
2418       CURSOR col_name_cur(par_table_name VARCHAR2)
2419       IS
2420 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2421 --the logical column for a logical object than a physical columns
2422          SELECT col.column_name
2423            FROM  user_synonyms syn, all_tab_columns col
2424           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2425             AND col.owner = syn.table_owner
2426             AND col.table_name = syn.table_name;
2427 
2428 
2429       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE  INDEX BY BINARY_INTEGER;
2430 
2431       col_list col_name_table;
2432       i BINARY_INTEGER := 1;
2433       match_found BOOLEAN;
2434    BEGIN
2435       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2436       THEN
2437          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2438          cz_pb_mgr.v_insert_table_name := table_name;
2439 
2440          BEGIN
2441             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
2442             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2443 
2444             OPEN col_name_cur(table_name);
2445 
2446             LOOP
2447                FETCH col_name_cur
2448                 INTO current_column;
2449 
2450                EXIT WHEN col_name_cur%NOTFOUND;
2451                col_list(i) := LTRIM(RTRIM(current_column));
2452                i := i + 1;
2453                v_insertstring := v_insertstring || current_column || ',';
2454             END LOOP;
2455 
2456             CLOSE col_name_cur;
2457 
2458             v_insertstring := RTRIM(v_insertstring, ',');
2459             v_insertstring := v_insertstring || ')';
2460             v_insertstring := v_insertstring || '  select  ';
2461 
2462             IF (col_list.COUNT > 0)
2463             THEN
2464                FOR j IN col_list.FIRST .. col_list.LAST
2465                LOOP
2466                   match_found := FALSE;
2467 
2468                   IF (plsql_table_list.COUNT > 0)
2469                   THEN
2470                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2471                      LOOP
2472                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2473                         THEN
2474                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2475                            match_found := TRUE;
2476                            EXIT;
2477                         END IF;
2478                      END LOOP;
2479                   END IF;
2480 
2481                   IF (NOT match_found)
2482                   THEN
2483                      v_insertstring := v_insertstring || col_list(j) || ',';
2484                   END IF;
2485                END LOOP;
2486             END IF;
2487 
2488             v_insertstring := RTRIM(v_insertstring, ',');
2489             v_insertstring :=
2490                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2491             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2492             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2493             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2494             v_insertstring :=
2495                   v_insertstring
2496                || '  EXCEPTION WHEN OTHERS THEN '
2497                || ' '
2498                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2499                || ' '
2500                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2501                || ' '
2502                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2503 
2504             EXECUTE IMMEDIATE v_insertstring;
2505 
2506             COMMIT;
2507          EXCEPTION
2508             WHEN OTHERS
2509             THEN
2510                ROLLBACK;
2511                RAISE;
2512          END;
2513       END IF;
2514 
2515       COMMIT;
2516    END;
2517 
2518 ---------------------------------------------------------------------------------
2519    PROCEDURE insert_into_table(
2520       table_name IN VARCHAR2
2521      ,primary_key1 IN VARCHAR2
2522      ,primary_key2 IN VARCHAR2
2523      ,db_link IN VARCHAR2
2524      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2525      ,plsql_table_name1 IN VARCHAR2
2526      ,plsql_table_name2 IN VARCHAR2
2527      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2528      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type
2529    )
2530    AS
2531       v_cursor NUMBER;
2532       v_numrows NUMBER;
2533       v_insertstring VARCHAR2(10000);
2534       current_column VARCHAR2(128);
2535       v_db_link VARCHAR2(128);
2536       v_last NUMBER;
2537 
2538       CURSOR col_name_cur(par_table_name VARCHAR2)
2539       IS
2540 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2541 --the logical column for a logical object than a physical columns
2542          SELECT col.column_name
2543            FROM  user_synonyms syn, all_tab_columns col
2544           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2545             AND col.owner = syn.table_owner
2546             AND col.table_name = syn.table_name;
2547 
2548 
2549       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE   INDEX BY BINARY_INTEGER;
2550 
2551       col_list col_name_table;
2552       i BINARY_INTEGER := 1;
2553       match_found BOOLEAN;
2554    BEGIN
2555       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2556       THEN
2557          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2558          cz_pb_mgr.v_insert_table_name := table_name;
2559 
2560          BEGIN
2561             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
2562             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2563 
2564             OPEN col_name_cur(table_name);
2565 
2566             LOOP
2567                FETCH col_name_cur
2568                 INTO current_column;
2569 
2570                EXIT WHEN col_name_cur%NOTFOUND;
2571                col_list(i) := LTRIM(RTRIM(current_column));
2572                i := i + 1;
2573                v_insertstring := v_insertstring || current_column || ',';
2574             END LOOP;
2575 
2576             CLOSE col_name_cur;
2577 
2578             v_insertstring := RTRIM(v_insertstring, ',');
2579             v_insertstring := v_insertstring || ')';
2580             v_insertstring := v_insertstring || '  select  ';
2581 
2582             IF (col_list.COUNT > 0)
2583             THEN
2584                FOR j IN col_list.FIRST .. col_list.LAST
2585                LOOP
2586                   match_found := FALSE;
2587 
2588                   IF (plsql_table_list.COUNT > 0)
2589                   THEN
2590                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2591                      LOOP
2592                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2593                         THEN
2594                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2595                            match_found := TRUE;
2596                            EXIT;
2597                         END IF;
2598                      END LOOP;
2599                   END IF;
2600 
2601                   IF (NOT match_found)
2602                   THEN
2603                      v_insertstring := v_insertstring || col_list(j) || ',';
2604                   END IF;
2605                END LOOP;
2606             END IF;
2607 
2608             v_insertstring := RTRIM(v_insertstring, ',');
2609             v_insertstring :=
2610                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2611             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2612             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2613             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END;  END LOOP; COMMIT; ';
2614             v_insertstring :=
2615                   v_insertstring
2616                || '  EXCEPTION WHEN OTHERS THEN '
2617                || ' '
2618                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2619                || ' '
2620                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2621                || ' '
2622                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2623 
2624             EXECUTE IMMEDIATE v_insertstring;
2625 
2626             COMMIT;
2627          EXCEPTION
2628             WHEN OTHERS
2629             THEN
2630                ROLLBACK;
2631                RAISE;
2632          END;
2633       END IF;
2634 
2635       COMMIT;
2636    END;
2637 
2638 ----------------------------------------------------
2639    PROCEDURE insert_into_table(
2640       table_name IN VARCHAR2
2641      ,primary_key1 IN VARCHAR2
2642      ,primary_key2 IN VARCHAR2
2643      ,db_link IN VARCHAR2
2644      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2645      ,plsql_table_name1 IN VARCHAR2
2646      ,plsql_table_name2 IN VARCHAR2
2647      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2648      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2649    )
2650    AS
2651       v_cursor NUMBER;
2652       v_numrows NUMBER;
2653       v_insertstring VARCHAR2(10000);
2654       current_column VARCHAR2(128);
2655       v_db_link VARCHAR2(128);
2656       v_last NUMBER;
2657 
2658       CURSOR col_name_cur(par_table_name VARCHAR2)
2659       IS
2660 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2661 --the logical column for a logical object than a physical columns
2662          SELECT col.column_name
2663            FROM  user_synonyms syn, all_tab_columns col
2664           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2665             AND col.owner = syn.table_owner
2666             AND col.table_name = syn.table_name;
2667 
2668 
2669       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE  INDEX BY BINARY_INTEGER;
2670 
2671       col_list col_name_table;
2672       i BINARY_INTEGER := 1;
2673       match_found BOOLEAN;
2674    BEGIN
2675       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2676       THEN
2677          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2678          cz_pb_mgr.v_insert_table_name := table_name;
2679 
2680          BEGIN
2681             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2682             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2683 
2684             OPEN col_name_cur(table_name);
2685 
2686             LOOP
2687                FETCH col_name_cur
2688                 INTO current_column;
2689 
2690                EXIT WHEN col_name_cur%NOTFOUND;
2691                col_list(i) := LTRIM(RTRIM(current_column));
2692                i := i + 1;
2693                v_insertstring := v_insertstring || current_column || ',';
2694             END LOOP;
2695 
2696             CLOSE col_name_cur;
2697 
2698             v_insertstring := RTRIM(v_insertstring, ',');
2699             v_insertstring := v_insertstring || ')';
2700             v_insertstring := v_insertstring || '  select  ';
2701 
2702             IF (col_list.COUNT > 0)
2703             THEN
2704                FOR j IN col_list.FIRST .. col_list.LAST
2705                LOOP
2706                   match_found := FALSE;
2707 
2708                   IF (plsql_table_list.COUNT > 0)
2709                   THEN
2710                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2711                      LOOP
2712                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2713                         THEN
2714                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2715                            match_found := TRUE;
2716                            EXIT;
2717                         END IF;
2718                      END LOOP;
2719                   END IF;
2720 
2721                   IF (NOT match_found)
2722                   THEN
2723                      v_insertstring := v_insertstring || col_list(j) || ',';
2724                   END IF;
2725                END LOOP;
2726             END IF;
2727 
2728             v_insertstring := RTRIM(v_insertstring, ',');
2729             v_insertstring :=
2730                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2731             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2732             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2733             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2734             v_insertstring :=
2735                   v_insertstring
2736                || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; WHEN OTHERS THEN'
2737                || ' '
2738                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2739                || ' '
2740                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2741                || ' '
2742                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2743 
2744             EXECUTE IMMEDIATE v_insertstring;
2745 
2746             COMMIT;
2747          EXCEPTION
2748             WHEN OTHERS
2749             THEN
2750                ROLLBACK;
2751                cz_pb_mgr.v_err_message := 'Insert into ' || table_name || ': ' || SQLERRM;
2752                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, table_name, SQLCODE);
2753                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2754                RAISE;
2755          END;
2756       END IF;
2757 
2758       COMMIT;
2759    END;
2760 
2761 -----------------------------------------------------
2762 -------procedure that inserts the records into target db
2763 -------of the table referred by the table_name
2764    PROCEDURE insert_into_table(
2765       table_name IN VARCHAR2
2766      ,primary_key IN VARCHAR2
2767      ,db_link IN VARCHAR2
2768      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2769      ,plsql_table_name IN VARCHAR2
2770      ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
2771    )
2772    AS
2773       v_cursor NUMBER;
2774       v_numrows NUMBER;
2775       v_insertstring VARCHAR2(10000);
2776       current_column VARCHAR2(128);
2777       v_db_link VARCHAR2(128);
2778       v_last NUMBER;
2779 
2780       CURSOR col_name_cur(par_table_name VARCHAR2)
2781       IS
2782 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2783 --the logical column for a logical object than a physical columns
2784          SELECT col.column_name
2785            FROM  user_synonyms syn, all_tab_columns col
2786           WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2787             AND col.owner = syn.table_owner
2788             AND col.table_name = syn.table_name;
2789 
2790 
2791       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE    INDEX BY BINARY_INTEGER;
2792 
2793       col_list col_name_table;
2794       i BINARY_INTEGER := 1;
2795       match_found BOOLEAN;
2796    BEGIN
2797 
2798       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
2799       THEN
2800          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2801          cz_pb_mgr.v_insert_table_name := table_name;
2802 
2803          BEGIN
2804             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || '  LOOP BEGIN ';
2805             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2806 
2807             OPEN col_name_cur(table_name);
2808 
2809             LOOP
2810                FETCH col_name_cur
2811                 INTO current_column;
2812 
2813                EXIT WHEN col_name_cur%NOTFOUND;
2814                col_list(i) := LTRIM(RTRIM(current_column));
2815                i := i + 1;
2816                v_insertstring := v_insertstring || current_column || ',';
2817             END LOOP;
2818 
2819             CLOSE col_name_cur;
2820 
2821             v_insertstring := RTRIM(v_insertstring, ',');
2822             v_insertstring := v_insertstring || ')';
2823             v_insertstring := v_insertstring || '  select  ';
2824 
2825             IF (col_list.COUNT > 0)
2826             THEN
2827                FOR j IN col_list.FIRST .. col_list.LAST
2828                LOOP
2829                   match_found := FALSE;
2830 
2831                   IF (plsql_table_list.COUNT > 0)
2832                   THEN
2833                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2834                      LOOP
2835                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2836                         THEN
2837                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2838                            match_found := TRUE;
2839                            EXIT;
2840                         END IF;
2841                      END LOOP;
2842                   END IF;
2843 
2844                   IF (NOT match_found)
2845                   THEN
2846                      v_insertstring := v_insertstring || col_list(j) || ',';
2847                   END IF;
2848                END LOOP;
2849             END IF;
2850 
2851             v_insertstring := RTRIM(v_insertstring, ',');
2852             v_insertstring := v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
2853 --SKM -- Added check for Single Publication Langiage
2854             IF (vPubSingleLang IS NOT NULL AND table_name = 'cz_localized_texts') THEN
2855                  v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' AND LANGUAGE = '''||vPubSingleLang||''' ';
2856             ELSE
2857                  v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2858             END IF;
2859             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2860             v_insertstring :=
2861                   v_insertstring
2862                || '  EXCEPTION WHEN OTHERS THEN '
2863                || ' '
2864                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2865                || ' '
2866                || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2867                || ' '
2868                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2869 
2870             EXECUTE IMMEDIATE v_insertstring;
2871             COMMIT;
2872          EXCEPTION
2873             WHEN OTHERS
2874             THEN
2875                ROLLBACK;
2876                RAISE;
2877          END;
2878       END IF;
2879       COMMIT;
2880    END;
2881 
2882 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2883 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2884 -----procedure that insert intl texts into cz_localized_texts
2885 -- set persistent_intl_text_id with new intl_text_id if texts are from templates
2886 -- and if the session is model migration. Note local model migration (via model
2887 -- conversion) does not copy any template
2888    PROCEDURE insert_intl_texts(p_intl_text_id_ref IN cz_pb_mgr.t_ref, p_intl_text IN VARCHAR2,
2889                                p_from_template IN BOOLEAN DEFAULT FALSE)
2890    IS
2891       plsql_table_list cz_pb_mgr.col_plsql_table_list;
2892       v_cz_intl_text_new_tbl cz_pb_mgr.t_ref;
2893       v_cz_intl_text_old_tbl cz_pb_mgr.t_ref;
2894       l_ui_def_id_tbl cz_pb_mgr.t_ref;
2895       l_model_id_tbl cz_pb_mgr.t_ref;
2896       rec_count PLS_INTEGER := 0;
2897    BEGIN
2898       IF (p_intl_text_id_ref.COUNT > 0)
2899       THEN
2900          cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2901          cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2902          cz_pb_mgr.v_intl_text_model_tbl.DELETE;
2903          cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
2904 
2905          IF (p_intl_text = 'prop num value of cz prop vals')THEN
2906 
2907 	   FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST  -- cz_pb_mgr.v_prop_vals_data_num_ref.LAST
2908 	   LOOP
2909 	      IF (cz_pb_mgr.v_prop_vals_data_typ_ref(c) = 8 AND
2910                  (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
2911                  cz_pb_mgr.v_prop_vals_valuesource_ref(c) = 'PsValue'))
2912 	      THEN
2913 	         v_cz_intl_text_new_tbl.DELETE;
2914 	         v_cz_intl_text_old_tbl.DELETE;
2915 	         l_ui_def_id_tbl.DELETE;
2916 	         l_model_id_tbl.DELETE;
2917 
2918 		 BEGIN
2919 		 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2920 					    , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2921 					    ,cz_pb_mgr.v_oraclesequenceincr
2922 					    )
2923 			,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2924 		 BULK COLLECT INTO v_cz_intl_text_new_tbl
2925 			,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2926 		 FROM cz_intl_texts
2927 		 WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2928 		 EXCEPTION
2929 		 WHEN NO_DATA_FOUND
2930 		 THEN
2931 		    cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
2932 		    cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2933 		 WHEN OTHERS
2934 		 THEN
2935 		     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
2936 		     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2937 		     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2938 		 END;
2939 
2940 		 rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
2941 
2942 		 IF (v_cz_intl_text_new_tbl.COUNT > 0)
2943 		 THEN
2944 		     FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
2945 		     LOOP
2946 
2947 		        --Bug #5441580. This is the case of translatable properties, the original values will
2948 		        --have model_id = 0, we need to redefine them to the target model's model_id.
2949 
2950                         --Bug 11685105. Rework to handle the way devl_project_id is cached so that
2951 			--the cz_intl_text table can be correctly updated if the item gets repeated
2952 			--across different referenced models and have a Translatable Text Property
2953      		        IF (cz_pb_mgr.v_psnode_propval_tbl(c).devl_project_id IS NOT NULL) THEN
2954 		           l_model_id_tbl(k) := cz_pb_mgr.v_psnode_propval_tbl(c).devl_project_id;
2955 			ELSE
2956 			   l_model_id_tbl(k) := cz_pb_mgr.h_devl_prj_by_intl_text(v_cz_intl_text_old_tbl(k));
2957 			END IF;
2958 
2959 
2960 			IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
2961 			THEN
2962 				rec_count := rec_count + 1;
2963 				cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
2964 				cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
2965 				cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
2966 				cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
2967 				cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
2968 				cz_pb_mgr.v_psnode_propval_tbl(c).new_property_num_value := v_cz_intl_text_new_tbl(k); -- Bug 11685105 update rec with new intl text id
2969 			END IF;
2970 		     END LOOP;
2971 		 END IF;
2972 	      END IF;
2973 	   END LOOP;
2974          ELSE
2975 	   FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST
2976 	   LOOP
2977 	     --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
2978 	     --log_timing_message('SPITRE rework insert_intl_texts - p_intl_text_id_ref(c) := ' || p_intl_text_id_ref(c));
2979 	     --END IF;
2980 	     IF (p_intl_text_id_ref(c) IS NOT NULL)
2981 	     THEN
2982 	        v_cz_intl_text_new_tbl.DELETE;
2983 	        v_cz_intl_text_old_tbl.DELETE;
2984 	        l_ui_def_id_tbl.DELETE;
2985 	        l_model_id_tbl.DELETE;
2986 
2987 	        BEGIN
2988 		  SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2989 		        , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2990 		        ,cz_pb_mgr.v_oraclesequenceincr
2991 		        )
2992 		       ,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2993 		  BULK COLLECT INTO v_cz_intl_text_new_tbl
2994 		      ,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2995 		  FROM cz_intl_texts
2996 		  WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2997 	       EXCEPTION
2998 	       WHEN NO_DATA_FOUND
2999 	       THEN
3000 		   cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
3001 		   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
3002 	       WHEN OTHERS
3003 	       THEN
3004 		   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
3005 		   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
3006 		   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3007 	       END;
3008 
3009 	       rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
3010 
3011 	       IF (v_cz_intl_text_new_tbl.COUNT > 0)
3012 	       THEN
3013 	          FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
3014 	          LOOP
3015 
3016 	             IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
3017 	             THEN
3018 	                rec_count := rec_count + 1;
3019 		        cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
3020 		        cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
3021 		        cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
3022 		        cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
3023 		        cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
3024 		     END IF;
3025 		  END LOOP;
3026 	       END IF;
3027 	     END IF;
3028 	   END LOOP;
3029          --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3030          --  log_timing_message('SPITRE rework calling resolve_ids for - model id of cz intl texts');
3031          --END IF;
3032 	 resolve_ids(cz_pb_mgr.v_intl_text_model_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz intl texts');
3033          END IF;
3034 
3035          --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3036          --  log_timing_message('SPITRE rework calling resolve_ids for - ui def id of cz intl texts');
3037          --END IF;
3038          resolve_ids(cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def id of cz intl texts');
3039 
3040          IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
3041          THEN
3042             --------populate plsql_table_list for intl texts
3043             plsql_table_list.DELETE;
3044             rec_count := 1;
3045             plsql_table_list(rec_count).col_name := 'intl_text_id';
3046             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_intl_text_new_ref';
3047             rec_count := rec_count + 1;
3048 
3049             IF (p_from_template AND CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3050               plsql_table_list(rec_count).col_name   := 'persistent_intl_text_id';
3051               plsql_table_list(rec_count).table_name := 'CZ_PB_MGR.v_cz_intl_text_new_ref';
3052               rec_count := rec_count + 1;
3053             END IF;
3054 
3055             plsql_table_list(rec_count).col_name := 'model_id';
3056             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_model_tbl';
3057             rec_count := rec_count + 1;
3058             plsql_table_list(rec_count).col_name := 'ui_def_id';
3059             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_ui_tbl';
3060             -----------insert into cz_localized_texts
3061             insert_into_table('cz_localized_texts'
3062                              ,'intl_text_id'
3063                              ,cz_pb_mgr.v_db_link
3064                              ,plsql_table_list
3065                              ,'cz_pb_mgr.v_cz_intl_text_old_ref'
3066                              ,cz_pb_mgr.v_cz_intl_text_old_ref
3067                              );
3068          --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3069          --  log_timing_message('SPITRE rework After calling insert_into_table');
3070          --END IF;
3071            IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3072             update_mm_localized_texts;
3073            ELSE
3074             update_localized_texts;
3075          --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3076          --  log_timing_message('SPITRE rework After calling update_localized_texts');
3077          --END IF;
3078            END IF;
3079             cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
3080             cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
3081             v_cz_intl_text_new_tbl.DELETE;
3082             v_cz_intl_text_old_tbl.DELETE;
3083          END IF;
3084       END IF;
3085    EXCEPTION
3086       WHEN OTHERS
3087       THEN
3088          cz_pb_mgr.v_err_message := 'Insert into intl texts for: ' || p_intl_text || ' : ' || SQLERRM;
3089          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLTEXTS', SQLCODE);
3090          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3091          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
3092          RAISE;
3093    END insert_intl_texts;
3094 
3095 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3096    PROCEDURE refresh_ui_actions(p_global_tmpl_tbl cz_pb_mgr.t_ref)
3097    IS
3098       l_update_str VARCHAR2(2000);
3099    BEGIN
3100       IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.COUNT > 0)
3101       THEN
3102          FOR i IN cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.FIRST .. cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.LAST
3103          LOOP
3104             IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(i) = 0)
3105             THEN
3106                l_update_str :=
3107                      'UPDATE cz_ui_actions'
3108                   || cz_pb_mgr.v_db_link
3109                   || '  t'
3110                   || ' '
3111                   || 'SET    (CONTEXT_COMPONENT_ID,RENDER_CONDITION_ID,UI_ACTION_TYPE,'
3112                   || ' '
3113                   || 'TARGET_UI_DEF_ID,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
3114                   || ' '
3115                   || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,TARGET_EXPL_NODE_ID,'
3116                   || ' '
3117                   || 'URL_PROPERTY_ID,TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
3118                   || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
3119                   || 'PROCESSING_PAGE_TEMPL_ID,PROC_PAGE_TEMPL_UI_DEF_ID,'
3120                   || 'PROCESSING_CAPTION_TEXT_ID,PAGE_TITLE_TEXT_ID,MAIN_MESSAGE_TEXT_ID) '
3121                   || '='
3122                   || ' '
3123                   || '( SELECT :1,:2,UI_ACTION_TYPE,:3,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
3124                   || ' '
3125                   || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,:4,URL_PROPERTY_ID,'
3126                   || 'TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
3127                   || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
3128                   || ':5,:6,:7,:8,:9 '
3129                   || 'FROM cz_ui_actions WHERE  ui_def_id = 0'
3130                   || ' '
3131                   || 'AND ui_action_id = :10 )'
3132                   || ' '
3133                   || 'WHERE t.ui_def_id = 1'
3134                   || ' '
3135                   || 'AND t.ui_action_id = :11';
3136 
3137                EXECUTE IMMEDIATE l_update_str
3138                            USING cz_pb_mgr.g_ui_actns_ctx_comp_tbl(i)
3139                                 ,cz_pb_mgr.g_ui_actns_ren_cond_tbl(i)
3140                                 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref(i)
3141                                 ,cz_pb_mgr.g_ui_actns_tgtexpl_ref(i)
3142                                 ,cz_pb_mgr.g_uiact_prcpg_templ_tbl(i)
3143                                 ,cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(i)
3144                                 ,cz_pb_mgr.g_uiact_prc_caption_tbl(i)
3145                                 ,cz_pb_mgr.g_uiact_pg_title_tbl(i)
3146                                 ,cz_pb_mgr.g_uiact_main_msg_tbl(i)
3147                                 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(i)
3148                                 ,cz_pb_mgr.g_ui_actns_ui_act_id_ref(i);
3149             END IF;
3150          END LOOP;
3151       END IF;
3152 
3153       COMMIT;
3154    EXCEPTION
3155       WHEN OTHERS
3156       THEN
3157          RAISE;
3158    END refresh_ui_actions;
3159 
3160 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3161    PROCEDURE refresh_global_templates(p_global_tmpl_tbl cz_pb_mgr.t_ref)
3162    IS
3163       l_update_str VARCHAR2(2000);
3164    BEGIN
3165       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
3166       THEN
3167          FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
3168          LOOP
3169             IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
3170             THEN
3171                l_update_str :=
3172                      'UPDATE cz_ui_templates'
3173                   || cz_pb_mgr.v_db_link
3174                   || '  t'
3175                   || ' '
3176                   || 'SET    (TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,BUTTON_BAR_TEMPLATE_ID'
3177                   || ' '
3178                   || ',MESSAGE_TYPE,MAIN_MESSAGE_ID,TITLE_ID,LAYOUT_UI_STYLE,ROOT_REGION_TYPE'
3179                   || ' '
3180                   || ',BUTTON_BAR_TEMPL_UIDEF_ID,ROOT_ELEMENT_SIGNATURE_ID,TEMPLATE_USAGE'
3181                   || ' '
3182                   || ') ='
3183                   || ' '
3184                   || '( SELECT TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,:1,MESSAGE_TYPE,'
3185                   || ' '
3186                   || ':2,:3,LAYOUT_UI_STYLE,ROOT_REGION_TYPE,:4,ROOT_ELEMENT_SIGNATURE_ID,'
3187                   || ' '
3188                   || 'TEMPLATE_USAGE FROM cz_ui_templates WHERE  ui_def_id = 0'
3189                   || ' '
3190                   || 'AND template_id = :5 )'
3191                   || ' '
3192                   || 'WHERE t.ui_def_id = 1'
3193                   || ' '
3194                   || 'AND t.template_id = :6';
3195 
3196                EXECUTE IMMEDIATE l_update_str
3197                            USING cz_pb_mgr.g_ui_templates_button_tbl(i)
3198                                 ,cz_pb_mgr.g_ui_templates_msg_id_ref(i)
3199                                 ,cz_pb_mgr.g_ui_templates_title_ref(i)
3200                                 ,cz_pb_mgr.g_ui_templates_but_uidef_id(i)
3201                                 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
3202                                 ,cz_pb_mgr.g_ui_templates_new_temp_id_ref(i);
3203             END IF;
3204          END LOOP;
3205       END IF;
3206 
3207       COMMIT;
3208    EXCEPTION
3209       WHEN OTHERS
3210       THEN
3211          RAISE;
3212    END refresh_global_templates;
3213 
3214 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3215 ----collect all os style UI(s)
3216    PROCEDURE get_oa_uis(p_src_models IN cz_pb_mgr.t_ref, x_oa_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref, x_oa_ui_def_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
3217    AS
3218       v_ui_def_count NUMBER := 0;
3219       rec_count NUMBER := 0;
3220       v_src_uis_tbl cz_pb_mgr.t_ref;
3221       l_export_model_id cz_devl_projects.devl_project_id%TYPE;
3222       l_menu_caption_rule_tbl cz_pb_mgr.t_ref;
3223       l_page_caption_rule_tbl cz_pb_mgr.t_ref;
3224       l_from_mt_id_tbl cz_pb_mgr.t_ref;
3225    BEGIN
3226       IF (p_src_models.COUNT > 0)
3227       THEN
3228          x_oa_ui_def_tbl.DELETE;
3229          l_menu_caption_rule_tbl.DELETE;
3230          l_page_caption_rule_tbl.DELETE;
3231 
3232          FOR i IN p_src_models.FIRST .. p_src_models.LAST
3233          LOOP
3234             l_export_model_id := p_src_models(i);
3235             v_src_uis_tbl.DELETE;
3236 
3237             BEGIN
3238                SELECT cz_ui_defs.ui_def_id, cz_ui_defs.menu_caption_rule_id, cz_ui_defs.page_caption_rule_id, cz_ui_defs.from_master_template_id
3239                BULK COLLECT INTO v_src_uis_tbl, l_menu_caption_rule_tbl, l_page_caption_rule_tbl, l_from_mt_id_tbl
3240                  FROM cz_ui_defs
3241                 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.ui_style = oa_ui_style AND cz_ui_defs.deleted_flag = '0';
3242             EXCEPTION
3243                WHEN NO_DATA_FOUND
3244                THEN
3245                   -----if there are no UI do not care
3246                   NULL;
3247                WHEN OTHERS
3248                THEN
3249                   RAISE;
3250             END;
3251 
3252             IF (v_src_uis_tbl.COUNT > 0)
3253             THEN
3254                FOR i IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
3255                LOOP
3256                   v_ui_def_count := x_oa_ui_def_ref.COUNT + 1;
3257                   rec_count := x_oa_ui_def_tbl.COUNT + 1;
3258                   v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(i);
3259                   x_oa_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(i);
3260                   x_oa_ui_def_tbl(rec_count) := v_src_uis_tbl(i);
3261                   cz_pb_mgr.v_ui_defs_mcpt_rule_ref(v_ui_def_count) := l_menu_caption_rule_tbl(i);
3262                   cz_pb_mgr.v_ui_defs_pcpt_rule_ref(v_ui_def_count) := l_page_caption_rule_tbl(i);
3263                END LOOP;
3264             END IF;
3265          END LOOP;                                     /* end loop of FOR I IN p_src_models.FIRST */
3266       END IF;                                          /* end if of (p_src_models.COUNT > 0) */
3267    EXCEPTION
3268       WHEN OTHERS
3269       THEN
3270          RAISE;
3271    END get_oa_uis;
3272 
3273 -------------------
3274    FUNCTION createelement(p_namespace IN OUT NOCOPY VARCHAR2, p_tagname IN VARCHAR2)
3275       RETURN jdr_docbuilder.ELEMENT
3276    IS
3277       l_child_element jdr_docbuilder.ELEMENT;
3278    BEGIN
3279       IF (p_namespace IS NULL)
3280       THEN
3281          p_namespace := 'jrad:';
3282       END IF;
3283 
3284       l_child_element := jdr_docbuilder.createelement(p_namespace, p_tagname);
3285       RETURN l_child_element;
3286    EXCEPTION
3287       WHEN OTHERS
3288       THEN
3289          RAISE;
3290    END;
3291 
3292 ----------------------------------------------
3293    PROCEDURE synch_user_attribute(attrval IN OUT NOCOPY VARCHAR2)
3294    AS
3295       l_new_persistentid NUMBER;
3296       l_temp_attr3_name VARCHAR2(250);
3297       l_attr3_name VARCHAR2(250);
3298       l_attr3_name_value_new VARCHAR2(250);
3299       l_attr3_name_value_old VARCHAR2(250);
3300       l_equal_pos NUMBER;
3301       l_pipe_pos NUMBER;
3302       l_cnt NUMBER;
3303       l_pipe VARCHAR2(1);
3304       l_old_id VARCHAR2(250);
3305       l_last_count NUMBER;
3306    BEGIN
3307 -- Check for user:attribute1 or user:attribute2 or user:attribute3
3308 --1. loop till all the name-value pairs are replaced with the new persistent ids values.
3309 --2. get the value, check if there is any entry into the global array
3310 --3. replace the value with the new one.
3311       l_temp_attr3_name := attrval;
3312       l_cnt := 0;
3313 
3314       WHILE(l_temp_attr3_name IS NOT NULL)
3315       LOOP                                                                                    -- check if there are '|' at the begining of the string
3316          IF (LENGTH(l_temp_attr3_name) = l_last_count)
3317          THEN
3318             EXIT;
3319          ELSE
3320             l_last_count := LENGTH(l_temp_attr3_name);
3321          END IF;
3322 
3323          l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
3324 
3325          WHILE(l_pipe = '|')
3326          LOOP
3327             --if ( l_pipe = '|' ) then
3328             -- trim  to remove '|' from the start till no '|' are found
3329             l_temp_attr3_name := SUBSTR(l_temp_attr3_name, 2, LENGTH(l_temp_attr3_name));
3330             l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
3331          --continue;
3332          END LOOP;
3333 
3334          l_equal_pos := INSTR(l_temp_attr3_name, '=');
3335          l_attr3_name := SUBSTR(l_temp_attr3_name, l_cnt, l_equal_pos - 1);
3336          l_pipe_pos := INSTR(l_temp_attr3_name, '|');
3337 
3338          IF (l_pipe_pos = 0)
3339          THEN
3340             l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1);
3341             l_attr3_name_value_old := l_temp_attr3_name;
3342          ELSE
3343             l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1,(l_pipe_pos - l_equal_pos) - 1);
3344             l_attr3_name_value_old := SUBSTR(l_temp_attr3_name, 0, l_pipe_pos - 1);
3345          END IF;
3346 
3347          BEGIN
3348             IF (l_attr3_name = 'actionId')
3349             THEN
3350                IF (cz_pb_mgr.g_ui_actions_id_idx_ref.EXISTS(l_old_id))
3351                THEN
3352                   l_new_persistentid := cz_pb_mgr.g_ui_actions_id_idx_ref(l_old_id);
3353                END IF;
3354             ELSIF(l_attr3_name IN
3355                      ('displayCondnId'
3356                      ,'enabledCondnId'
3357                      ,'captionRuleId'
3358                      ,'colDisplayCondnId'
3359                      ,'liDisplayCondnId'
3360                      ,'rowDisplayCondnId'
3361                      ,'rowEnabledCondnId'
3362                      ,'rolloverRuleId'
3363                      ,'tableSummaryRuleId'
3364                      ,'switcherCondnId'
3365                      )
3366                  )
3367             THEN
3368                IF (cz_pb_mgr.v_cz_rules_rule_id_idx_ref.EXISTS(l_old_id))
3369                THEN
3370                   l_new_persistentid := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_id);
3371                END IF;
3372             ELSIF(l_attr3_name IN
3373                      ('urlIntlTextId', 'captionIntlTextId', 'rolloverIntlTextId', 'tableSummaryIntlTextId', 'cellIntlTextId', 'imageSourceIntlTextId')
3374                  )
3375             THEN
3376                IF (cz_pb_mgr.v_cz_intl_text_idx_ref.EXISTS(l_old_id))
3377                THEN
3378                   l_new_persistentid := cz_pb_mgr.v_cz_intl_text_idx_ref(l_old_id);
3379                END IF;
3380             END IF;
3381 
3382             IF (l_new_persistentid IS NOT NULL)
3383             THEN
3384                l_attr3_name_value_new := REPLACE(l_attr3_name_value_old, l_old_id, l_new_persistentid);
3385                attrval := REPLACE(attrval, l_attr3_name_value_old, l_attr3_name_value_new);
3386                l_new_persistentid := NULL;
3387             END IF;
3388          EXCEPTION
3389             WHEN NO_DATA_FOUND
3390             THEN
3391                -- do nothing
3392                -- since , all the ref tables will hold only non-seeded ids,
3393                -- the only time we will fall in this exception is when we try to look up seeded ids
3394                l_new_persistentid := NULL;
3395             WHEN OTHERS
3396             THEN
3397                RAISE;
3398          END;
3399 
3400          IF (l_pipe_pos = 0)
3401          THEN
3402             l_temp_attr3_name := NULL;
3403          ELSE
3404             l_temp_attr3_name := SUBSTR(l_temp_attr3_name, l_pipe_pos + 1, LENGTH(l_temp_attr3_name));
3405          END IF;
3406       END LOOP;
3407    END;
3408 
3409 -----------------------------------------------------
3410    PROCEDURE exploretree(
3411       p_jrad_parent_element IN jdr_docbuilder.ELEMENT
3412      ,p_dom_parent_element IN xmldom.domnode
3413      ,p_grouping_tag IN VARCHAR2
3414      ,p_link_name IN VARCHAR2
3415    )
3416    IS
3417       l_child_nodes xmldom.domnodelist;
3418       l_child_node xmldom.domnode;
3419       l_parent_xml_node xmldom.domnode;
3420       l_child_count NUMBER := 0;
3421       l_namespace VARCHAR2(255);
3422       l_tagname VARCHAR2(255);
3423       l_tag_name VARCHAR2(255);
3424       l_attributes xmldom.domnamednodemap;
3425       l_attrib_node xmldom.domnode;
3426       l_attrib_count NUMBER := 0;
3427       attrname VARCHAR2(255);
3428       attrval VARCHAR2(4000);
3429       l_groupingns VARCHAR2(255);
3430       l_groupingtagname VARCHAR2(255);
3431       l_grouping_tag VARCHAR2(255);
3432       l_parent_element jdr_docbuilder.ELEMENT;
3433       l_child_element jdr_docbuilder.ELEMENT;
3434       l_ampers VARCHAR2(1) := fnd_global.local_chr(38);
3435       l_parent_tag_name VARCHAR2(255);
3436    BEGIN
3437       l_child_nodes := xmldom.getchildnodes(p_dom_parent_element);
3438       l_child_count := xmldom.getlength(l_child_nodes);
3439       l_parent_element := p_jrad_parent_element;
3440 
3441       IF (l_child_count > 0)
3442       THEN
3443          FOR childcount IN 0 .. l_child_count - 1
3444          LOOP
3445             l_child_node := xmldom.item(l_child_nodes, childcount);
3446             l_grouping_tag := '';
3447             l_attributes := xmldom.getattributes(l_child_node);
3448             l_attrib_count := xmldom.getlength(l_attributes);
3449             l_tag_name := xmldom.getnodename(l_child_node);
3450             l_parent_xml_node := xmldom.getparentnode(l_child_node);
3451 
3452             IF NOT(xmldom.isnull(l_parent_xml_node))
3453             THEN
3454                l_parent_tag_name := xmldom.getnodename(l_parent_xml_node);
3455             END IF;
3456 
3457             IF ((l_attrib_count = 0) AND(l_tag_name NOT IN('ui:firePartialAction')))
3458             THEN
3459                l_grouping_tag := l_tag_name;
3460             END IF;
3461 
3462             IF (p_grouping_tag IS NOT NULL)
3463             THEN
3464                l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
3465                l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
3466                l_child_element := createelement(l_namespace, l_tagname);
3467                l_attributes := xmldom.getattributes(l_child_node);
3468 
3469                IF (l_attrib_count > 0)
3470                THEN
3471                   FOR attrcount IN 0 .. l_attrib_count - 1
3472                   LOOP
3473                      l_attrib_node := xmldom.item(l_attributes, attrcount);
3474                      attrname := xmldom.getnodename(l_attrib_node);
3475                      attrval := xmldom.getnodevalue(l_attrib_node);
3476                      attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
3477                      attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
3478                      attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
3479                      attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
3480                      attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
3481                      jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
3482                   END LOOP;
3483                END IF;
3484 
3485                l_groupingns := SUBSTR(p_grouping_tag, 1, INSTR(p_grouping_tag, ':'));
3486                l_groupingtagname := SUBSTR(p_grouping_tag, INSTR(p_grouping_tag, ':') + 1);
3487 
3488                IF (l_groupingns IS NULL)
3489                THEN
3490                   l_groupingns := 'jrad:';
3491                END IF;
3492 
3493                jdr_docbuilder.addchild(p_jrad_parent_element, l_groupingns, l_groupingtagname, l_child_element);
3494                exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
3495             ELSE
3496                l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
3497                l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
3498                l_child_element := createelement(l_namespace, l_tagname);
3499 
3500                IF (l_attrib_count > 0)
3501                THEN
3502                   FOR attrcount IN 0 .. l_attrib_count - 1
3503                   LOOP
3504                      l_attrib_node := xmldom.item(l_attributes, attrcount);
3505                      attrname := xmldom.getnodename(l_attrib_node);
3506                      attrval := xmldom.getnodevalue(l_attrib_node);
3507                      attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
3508                      attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
3509                      attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
3510                      attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
3511                      attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
3512                      jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
3513                   END LOOP;
3514                END IF;
3515 
3516                IF (l_grouping_tag IS NULL)
3517                THEN
3518                   jdr_docbuilder.addchild(p_jrad_parent_element, l_child_element);
3519                   exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
3520                ELSE
3521                   exploretree(p_jrad_parent_element, l_child_node, l_grouping_tag, p_link_name);
3522                END IF;
3523             END IF;
3524          END LOOP;
3525       END IF;
3526    EXCEPTION
3527    -- bug14191479. Checking for the Value Error, this will be raised when length attrval exceeds 4000 characters
3528      WHEN VALUE_ERROR THEN
3529      cz_pb_mgr.v_err_message := Replace( l_tag_name , 'oa:' , '');
3530      -- if it is a RAWTEXT then populate message that it exceeds 4000 characters
3531       IF( cz_pb_mgr.v_err_message = 'rawText' ) THEN
3532       cz_pb_mgr.v_err_message :=  'The length of the rawtext exceeds 4000 characters. Please split into two raw texts ';
3533       cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
3534       END IF;
3535        RAISE;
3536       WHEN OTHERS
3537       THEN
3538          RAISE;
3539    END exploretree;
3540 
3541 ----------------------------------------------------
3542 -- ancestorNode="docname.ancestorid", where docname normally pointing to itself,
3543 --                               ancestor being immediate parent or higher level's
3544 -- e.g. /oracle/apps/cz/runtime/oa/webui/templates/summary/28501_170._czc233440-xxx
3545 --      /oracle/apps/cz/runtime/oa/webui/regions/ui44563/Page_44563_1.16496045-yyy
3546 PROCEDURE handle_ancestorNode(p_old_doc_name IN VARCHAR2, p_new_doc_name IN VARCHAR2, p_chunk IN OUT NOCOPY LONG)
3547 IS
3548 BEGIN
3549   IF instr(p_chunk, 'ancestorNode="' || p_old_doc_name || '.') > 0 THEN
3550     p_chunk := replace(p_chunk, 'ancestorNode="' || p_old_doc_name || '.',
3551                                 'ancestorNode="' || p_new_doc_name || '.');
3552   END IF;
3553 END handle_ancestorNode;
3554 
3555 ----------------------------------------------------
3556 --There are some issues with having the p_chunk
3557 --parameter on replace_extends as a CLOB.  For some reason, the getLength on a CLOB for certain
3558 --JRAD documents was returning a 0, and UI copy procedure was failing.
3559 --Retaining this parameter as LONG and changing the places where we were
3560 --calling the procedure to LONG so we be consistent everywhere
3561 --See Bug 4930937 for symptoms of the bug.
3562 PROCEDURE replace_extends(p_chunk IN OUT NOCOPY LONG)
3563 IS
3564 BEGIN
3565   IF (cz_pb_mgr.g_ui_templates_jrad_old_ref.COUNT > 0) THEN
3566     FOR i IN cz_pb_mgr.g_ui_templates_jrad_old_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_old_ref.LAST
3567     LOOP
3568       IF (INSTR(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"') > 0) THEN
3569         p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"', cz_pb_mgr.g_ui_templates_jrad_new_ref(i) || '"');
3570       END IF;
3571     END LOOP;
3572   END IF;
3573 
3574   IF cz_pb_mgr.g_tmpl_jrad_old_tbl.COUNT > 0 THEN
3575     FOR i IN cz_pb_mgr.g_tmpl_jrad_old_tbl.FIRST .. cz_pb_mgr.g_tmpl_jrad_old_tbl.LAST LOOP
3576       IF INSTR(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"') > 0 THEN
3577         p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"', cz_pb_mgr.g_tmpl_jrad_new_tbl(i) || '"');
3578       END IF;
3579     END LOOP;
3580   END IF;
3581 END replace_extends;
3582 
3583 ----------------------------------------------------
3584    PROCEDURE collect_chunks(
3585       p_document_name IN VARCHAR2
3586      ,p_link_name IN VARCHAR2
3587      ,x_return_status OUT NOCOPY VARCHAR2
3588      ,x_msg_count OUT NOCOPY NUMBER
3589      ,x_msg_data OUT NOCOPY VARCHAR2
3590    )
3591    IS
3592       l_length BINARY_INTEGER;
3593       l_buffer VARCHAR2(32767);
3594       firstchunk VARCHAR2(32767);
3595       document_is_null EXCEPTION;
3596       l_seq_nbr NUMBER := 0;
3597 
3598       TYPE chunk_record IS RECORD(
3599          jrad_doc VARCHAR2(255)
3600         ,seq_nbr NUMBER
3601         ,xml_chunk VARCHAR2(32767)
3602       );
3603 
3604       TYPE chunk_record_tbl IS TABLE OF chunk_record
3605          INDEX BY BINARY_INTEGER;
3606 
3607       l_chunk_tbl chunk_record_tbl;
3608       l_exportfinished BOOLEAN;
3609    BEGIN
3610       pbdebug := 22021;
3611       x_return_status := FND_API.G_RET_STS_SUCCESS;
3612       x_msg_count := 0;
3613       x_msg_data := '';
3614       jdr_docbuilder.REFRESH;
3615 
3616       IF (p_document_name IS NULL) THEN
3617          RAISE document_is_null;
3618       END IF;
3619 
3620       firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3621 
3622       IF (firstchunk IS NULL) THEN
3623          RAISE document_is_null;
3624       END IF;
3625 
3626       l_buffer := LTRIM(RTRIM(firstchunk));
3627 
3628       IF (l_buffer IS NOT NULL) THEN
3629          l_seq_nbr := l_seq_nbr + 1;
3630          l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3631          l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3632          l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3633       END IF;
3634 
3635       LOOP
3636          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3637          l_buffer := LTRIM(RTRIM(l_buffer));
3638          EXIT WHEN l_buffer IS NULL;
3639 
3640          IF (l_buffer IS NOT NULL) THEN
3641             l_seq_nbr := l_seq_nbr + 1;
3642             l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3643             l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3644             l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3645          END IF;
3646       END LOOP;
3647 
3648 -- Bug#10417318:Modified the JRAD_CHUNKS insert and marking each chunk against the source publication id so that
3649 -- when two publications runs, shouldn't delete xml chunk data for each other. This change is all the palces for
3650 -- this table while insert and delete chunks
3651 
3652       IF (l_chunk_tbl.COUNT > 0) THEN
3653          FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3654          LOOP
3655              EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (publication_id,jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values ('||cz_pb_mgr.v_publication_id||',:1,:2,:3)'
3656              USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3657          END LOOP;
3658       END IF;
3659 
3660       COMMIT;
3661       jdr_docbuilder.REFRESH;
3662    EXCEPTION
3663       WHEN document_is_null THEN
3664          x_return_status := FND_API.G_RET_STS_ERROR;
3665          x_msg_count := 1;
3666          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3667          RAISE;
3668       WHEN OTHERS THEN
3669          x_return_status := FND_API.G_RET_STS_ERROR;
3670          x_msg_count := 1;
3671          x_msg_data := SQLERRM;
3672          RAISE;
3673    END collect_chunks;
3674 
3675 ----------------------------------------------------
3676    -- NOTE: p_document_type of NULL (default) represents a UI content template document.
3677    --       To collect JRAD chunks for UI pages, UI_PAGE should be passed as input value.
3678    PROCEDURE collect_chunks(
3679       p_document_name IN VARCHAR2
3680      ,p_new_document_name IN VARCHAR2
3681      ,p_link_name IN VARCHAR2
3682      ,x_return_status OUT NOCOPY VARCHAR2
3683      ,x_msg_count OUT NOCOPY NUMBER
3684      ,x_msg_data OUT NOCOPY VARCHAR2
3685      ,p_document_type IN VARCHAR2 DEFAULT NULL
3686    )
3687    IS
3688       amt BINARY_INTEGER := 32767;
3689       l_length BINARY_INTEGER;
3690       l_offset BINARY_INTEGER := 1;
3691       l_buffer VARCHAR2(32767);
3692       firstchunk VARCHAR2(32767);
3693       document_is_null EXCEPTION;
3694       l_seq_nbr NUMBER := 0;
3695       l_old_ui_def VARCHAR2(200);
3696       l_new_ui_def VARCHAR2(300);
3697       l_lob CLOB;
3698       l_lob_temp CLOB;
3699       p xmlparser.parser;
3700       doc xmldom.domdocument;
3701       nl xmldom.domnodelist;
3702       one_node xmldom.domnode;
3703       one_element xmldom.domelement;
3704       l_value VARCHAR2(32767);
3705       nodeMap xmldom.DOMNamedNodeMap;
3706       n xmldom.DOMNode;
3707       attrname varchar2(100);
3708       len2 NUMBER;
3709 
3710       TYPE chunk_record IS RECORD(
3711          jrad_doc VARCHAR2(255)
3712         ,seq_nbr NUMBER
3713         ,xml_chunk VARCHAR2(32767)
3714       );
3715 
3716       TYPE chunk_record_tbl IS TABLE OF chunk_record
3717          INDEX BY BINARY_INTEGER;
3718 
3719       l_chunk_tbl chunk_record_tbl;
3720       l_exportfinished BOOLEAN;
3721    BEGIN
3722       pbdebug := 22022;
3723       x_return_status := FND_API.G_RET_STS_SUCCESS;
3724       x_msg_count := 0;
3725       x_msg_data := '';
3726       jdr_docbuilder.REFRESH;
3727 
3728       IF (p_document_name IS NULL) THEN
3729          RAISE document_is_null;
3730       END IF;
3731 
3732       firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3733 
3734       IF (firstchunk IS NULL) THEN
3735          RAISE document_is_null;
3736       END IF;
3737 
3738       l_buffer := LTRIM(RTRIM(firstchunk));
3739 
3740       IF (l_buffer IS NOT NULL) THEN
3741          l_seq_nbr := l_seq_nbr + 1;
3742          l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3743          l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3744          l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3745       END IF;
3746 
3747       LOOP
3748          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3749          l_buffer := LTRIM(RTRIM(l_buffer));
3750          EXIT WHEN l_buffer IS NULL;
3751 
3752          IF (l_buffer IS NOT NULL) THEN
3753             l_seq_nbr := l_seq_nbr + 1;
3754             l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3755             l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3756             l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3757          END IF;
3758       END LOOP;
3759 
3760       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3761          IF (l_chunk_tbl.COUNT > 0) THEN
3762             SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3763             SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3764 
3765             FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3766             LOOP
3767                -- collect the entire document in the CLOB
3768                l_length := LENGTH(l_chunk_tbl(i).xml_chunk);
3769                SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk_tbl(i).xml_chunk);
3770             END LOOP;
3771 
3772             -- parse the document for user:attribute3
3773             -- call synch_user_attribute
3774             l_length := SYS.DBMS_LOB.getlength(l_lob);
3775             p := xmlparser.newparser;
3776             xmlparser.parseclob(p, l_lob);
3777             SYS.DBMS_LOB.CLOSE(l_lob);
3778             SYS.DBMS_LOB.freetemporary(l_lob);
3779             doc := xmlparser.getdocument(p);
3780             nl := xmldom.getelementsbytagname(doc, '*');
3781 
3782             IF (p_document_type IS  NULL )THEN
3783 		    FOR node_index IN 0 .. xmldom.getlength(nl) - 1
3784 		    LOOP
3785 		       one_node := xmldom.item(nl, node_index);
3786 		       one_element := xmldom.makeelement(one_node);
3787 		       --node_attr := xmldom.getattributenode(one_element, 'user:attribute3');
3788 		       -- This is a workaround for bug 5211850 till the API xmldom.getattributenode is fixed
3789 		       -- get all attributes of element
3790 		       nodeMap := xmldom.getAttributes(one_node);
3791 
3792 		       IF (xmldom.isNull(nodeMap) = FALSE) THEN
3793 			  len2 := xmldom.getLength(nodeMap);
3794 			  -- loop through attributes
3795 			  FOR i IN 0..len2-1 LOOP
3796 			      n := xmldom.item(nodeMap, i);
3797 			      attrname := xmldom.getNodeName(n);
3798 			      IF(attrname='user:attribute3' ) THEN
3799 				 l_value := xmldom.getNodeValue(n);
3800 				 EXIT;
3801 			      END IF;
3802 			  END LOOP;
3803 		       END IF;
3804 
3805 		       IF (l_value IS NOT NULL) THEN
3806 			     synch_user_attribute(l_value);
3807 			     xmldom.setattribute(one_element, 'user:attribute3', l_value);
3808 			     l_value:=NULL;
3809 		       END IF;
3810 		    END LOOP;
3811             END IF;
3812             -- Break the document to insert into the  cz_jrad_chunks
3813             SYS.DBMS_LOB.createtemporary(l_lob_temp, TRUE, DBMS_LOB.SESSION);
3814             SYS.DBMS_LOB.OPEN(l_lob_temp, DBMS_LOB.lob_readwrite);
3815             xmldom.writetoclob(doc, l_lob_temp);
3816 
3817             FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3818             LOOP
3819                SYS.DBMS_LOB.READ(l_lob_temp, amt, l_offset, l_buffer);
3820                l_chunk_tbl(i).xml_chunk := l_buffer;
3821                l_offset := l_offset + amt;
3822                l_buffer := NULL;
3823             END LOOP;
3824 
3825             SYS.DBMS_LOB.CLOSE(l_lob_temp);
3826             SYS.DBMS_LOB.freetemporary(l_lob_temp);
3827             xmlparser.freeparser(p);
3828             xmldom.freeDocument(doc);
3829          END IF;
3830       END IF;
3831 
3832 --Bug#10417318:Modified insert for JRAD_CHUNKS as explained earlier.
3833 
3834       IF (l_chunk_tbl.COUNT > 0) THEN
3835          FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3836          LOOP
3837             replace_extends(l_chunk_tbl(i).xml_chunk);
3838             handle_ancestorNode(p_document_name, p_new_document_name, l_chunk_tbl(i).xml_chunk);
3839              EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (publication_id,jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values ('||cz_pb_mgr.v_publication_id||',:1,:2,:3)'
3840              USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3841          END LOOP;
3842       END IF;
3843 
3844       COMMIT;
3845       jdr_docbuilder.REFRESH;
3846    EXCEPTION
3847       WHEN document_is_null THEN
3848          x_return_status := FND_API.G_RET_STS_ERROR;
3849          x_msg_count := 1;
3850          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3851          RAISE;
3852       WHEN OTHERS THEN
3853          x_return_status := FND_API.G_RET_STS_ERROR;
3854          x_msg_count := 1;
3855          x_msg_data := SQLERRM;
3856          RAISE;
3857    END collect_chunks;
3858 
3859 ------------------------------------
3860 --Bug10417318: Modified Select clause and added condition for documents specific to the publication Id
3861 --Passing Publication Id as this executes in remote instance
3862    PROCEDURE insert_jrad_docs(p_publication_id IN NUMBER)
3863    IS
3864       PRAGMA AUTONOMOUS_TRANSACTION;
3865 
3866       CURSOR jrad_docs_cur
3867       IS
3868          SELECT DISTINCT jrad_doc
3869                     FROM cz_jrad_chunks
3870                    WHERE publication_id=p_publication_id;
3871 
3872       CURSOR jrad_chunks_cur(p_jrad_doc VARCHAR2)
3873       IS
3874          SELECT   xml_chunk
3875              FROM cz_jrad_chunks
3876             WHERE jrad_doc = p_jrad_doc
3877               AND publication_id=p_publication_id
3878          ORDER BY seq_nbr;
3879 
3880       l_jrad_doc VARCHAR2(255);
3881       l_chunk VARCHAR2(32767);
3882       l_lob CLOB;
3883       l_offset PLS_INTEGER := 1;
3884       l_length BINARY_INTEGER;
3885       l_doc_id NUMBER;
3886       p xmlparser.parser;
3887       doc xmldom.domdocument;
3888       nl xmldom.domnodelist;
3889       len NUMBER;
3890       n xmldom.domnode;
3891       top_node xmldom.domnode;
3892       l_parent_node xmldom.domnode;
3893       v_ns VARCHAR2(255);
3894       v_el VARCHAR2(255);
3895       len1 NUMBER;
3896       len2 NUMBER;
3897       nnm xmldom.domnamednodemap;
3898       attrname VARCHAR2(255);
3899       attrval VARCHAR2(255);
3900       newattrname VARCHAR2(255);
3901       name_space VARCHAR2(255);
3902       tag_name VARCHAR2(255);
3903       l_doc jdr_docbuilder.document;
3904       top_element jdr_docbuilder.ELEMENT;
3905       g_document jdr_docbuilder.document;
3906       l_new_document jdr_docbuilder.document;
3907       jrad_save_status PLS_INTEGER;
3908       document_is_null EXCEPTION;
3909       l_msg VARCHAR2(2000);
3910 
3911       TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3912 
3913       g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3914    BEGIN
3915       pbdebug := 22024;
3916 
3917       OPEN jrad_docs_cur;
3918 
3919       LOOP
3920          jdr_docbuilder.REFRESH;
3921 
3922          FETCH jrad_docs_cur
3923           INTO l_jrad_doc;
3924 
3925          EXIT WHEN jrad_docs_cur%NOTFOUND;
3926          SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3927          SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3928 
3929          OPEN jrad_chunks_cur(l_jrad_doc);
3930 
3931          LOOP
3932             FETCH jrad_chunks_cur
3933              INTO l_chunk;
3934 
3935             EXIT WHEN jrad_chunks_cur%NOTFOUND;
3936 
3937              --There are some issues with having the p_chunk
3938              --parameter on replace extends as a CLOB.  For some reason, the getLength on a CLOB for certain
3939              --JRAD documents was returning a 0, and UI copy procedure was failing.
3940              --Retaining this parameter as LONG and changing the places where we were
3941              --calling the procedure to LONG so we be consistent everywhere
3942              --See Bug 4930937 for symptoms of the bug.
3943             IF (l_chunk IS NOT NULL)
3944             THEN
3945                -- for schema migration, no need to do any replacement; for remote publishing (or migration),
3946                -- the replacement is done before this gets called (e.g., when collect_chunks)
3947                -- and the two templ arrays are empty anyway
3948                -- replace_extends(l_chunk);
3949                l_length := LENGTH(l_chunk);
3950                SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk);
3951             END IF;
3952          END LOOP;
3953 
3954          CLOSE jrad_chunks_cur;
3955 
3956          l_length := SYS.DBMS_LOB.getlength(l_lob);
3957          p := xmlparser.newparser;
3958          xmlparser.parseclob(p, l_lob);
3959          doc := xmlparser.getdocument(p);
3960          SYS.DBMS_LOB.CLOSE(l_lob);
3961          SYS.DBMS_LOB.freetemporary(l_lob);
3962          l_doc := jdr_docbuilder.createdocument(l_jrad_doc);
3963          top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3964 
3965          IF (g_toplevel_attr_tbl.COUNT > 0)
3966          THEN
3967             FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3968             LOOP
3969                BEGIN
3970                   xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3971                EXCEPTION
3972                   WHEN OTHERS
3973                   THEN
3974                      NULL;
3975                END;
3976             END LOOP;
3977          END IF;
3978 
3979          name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3980          tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3981          top_element := createelement(name_space, tag_name);
3982          nnm := xmldom.getattributes(top_node);
3983 
3984          IF (xmldom.isnull(nnm) = FALSE)
3985          THEN
3986             len2 := xmldom.getlength(nnm);
3987 
3988             FOR i IN 0 .. len2 - 1
3989             LOOP
3990                n := xmldom.item(nnm, i);
3991                attrname := xmldom.getnodename(n);
3992                attrval := xmldom.getnodevalue(n);
3993                jdr_docbuilder.setattribute(top_element, attrname, attrval);
3994             END LOOP;
3995          END IF;
3996 
3997          jdr_docbuilder.settoplevelelement(l_doc, top_element);
3998 
3999          BEGIN
4000             exploretree(top_element, top_node, '', ' ');
4001          EXCEPTION
4002 	 ----bug14191479. To handle value errors.
4003 	   WHEN VALUE_ERROR THEN
4004 	      RAISE;
4005             WHEN OTHERS
4006             THEN
4007                RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
4008          END;
4009 
4010          jrad_save_status := jdr_docbuilder.SAVE;
4011          xmlparser.freeparser(p);
4012          xmldom.freeDocument(doc);
4013          COMMIT;
4014          jdr_docbuilder.REFRESH;
4015       END LOOP;
4016 
4017       CLOSE jrad_docs_cur;
4018 
4019       COMMIT;
4020    EXCEPTION
4021       WHEN OTHERS
4022       THEN
4023          ROLLBACK;
4024          jdr_docbuilder.REFRESH;
4025          IF l_jrad_doc is not null THEN
4026              l_msg := l_jrad_doc || '-'  || SQLERRM;
4027          ELSE
4028              l_msg := SQLERRM;
4029          END IF;
4030 
4031          INSERT INTO cz_db_logs
4032                      (logtime, caller, MESSAGE
4033                      )
4034               VALUES (SYSDATE, 'CZJRADLOAD', l_msg
4035                      );
4036 
4037          COMMIT;
4038          RAISE;
4039    END;
4040 
4041 --------------------------------------------------
4042 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4043 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4044    PROCEDURE export_jrad_docs(
4045       p_document_name IN VARCHAR2
4046      ,p_link_name IN VARCHAR2
4047      ,x_return_status OUT NOCOPY VARCHAR2
4048      ,x_msg_count OUT NOCOPY NUMBER
4049      ,x_msg_data OUT NOCOPY VARCHAR2
4050    )
4051    IS
4052    BEGIN
4053       pbdebug := 22025;
4054 
4055       EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4056 
4057       collect_chunks(p_document_name, p_link_name, x_return_status, x_msg_count, x_msg_data);
4058 
4059       EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4060 
4061       EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4062 
4063    EXCEPTION
4064       WHEN NO_DATA_FOUND
4065       THEN
4066          x_return_status := FND_API.G_RET_STS_ERROR;
4067          x_msg_count := 1;
4068          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
4069       WHEN OTHERS
4070       THEN
4071          x_return_status := fnd_api.g_ret_sts_unexp_error;
4072          x_msg_count := 1;
4073          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4074    END export_jrad_docs;
4075 
4076 ----------------------------------------------------
4077 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4078 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4079    PROCEDURE export_jrad_docs(
4080       p_ui_def_id IN NUMBER
4081      ,p_link_name IN VARCHAR2
4082      ,x_return_status OUT NOCOPY VARCHAR2
4083      ,x_msg_count OUT NOCOPY NUMBER
4084      ,x_msg_data OUT NOCOPY VARCHAR2
4085    )
4086    IS
4087       l_jrad_doc_tbl jraddoc_type_tbl;
4088       l_link_name cz_servers.fndnam_link_name%TYPE;
4089       link_name_is_null EXCEPTION;
4090    BEGIN
4091       pbdebug := 22026;
4092 
4093       IF (p_link_name IS NULL)
4094       THEN
4095          RAISE link_name_is_null;
4096       ELSE
4097          l_link_name := '@' || p_link_name;
4098       END IF;
4099 
4100       SELECT jrad_doc
4101       BULK COLLECT INTO l_jrad_doc_tbl
4102         FROM cz_ui_pages
4103        WHERE cz_ui_pages.ui_def_id = p_ui_def_id AND cz_ui_pages.deleted_flag = '0';
4104 
4105       IF (l_jrad_doc_tbl.COUNT > 0)
4106       THEN
4107          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4108 
4109          FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
4110          LOOP
4111             collect_chunks(l_jrad_doc_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
4112          END LOOP;
4113 
4114          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4115 
4116          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4117       END IF;
4118    EXCEPTION
4119       WHEN link_name_is_null
4120       THEN
4121          x_return_status := FND_API.G_RET_STS_ERROR;
4122          x_msg_data := 'Db Link Name is Null';
4123          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4124       WHEN NO_DATA_FOUND
4125       THEN
4126          x_return_status := FND_API.G_RET_STS_ERROR;
4127          x_msg_count := 1;
4128          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_ui_def_id);
4129       WHEN OTHERS
4130       THEN
4131          x_return_status := fnd_api.g_ret_sts_unexp_error;
4132          x_msg_count := 1;
4133          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4134    END export_jrad_docs;
4135 
4136 ------>>>>>>>>>>>>>>>>>>>>>>>>>>
4137 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4138    PROCEDURE export_template_jrad_docs(
4139       p_ui_def_id IN NUMBER
4140      ,p_template_id IN NUMBER
4141      ,p_link_name IN VARCHAR2
4142      ,x_return_status OUT NOCOPY VARCHAR2
4143      ,x_msg_count OUT NOCOPY NUMBER
4144      ,x_msg_data OUT NOCOPY VARCHAR2
4145    )
4146    IS
4147       l_jrad_doc_tbl jraddoc_type_tbl;
4148    BEGIN
4149       pbdebug := 22026;
4150 
4151       SELECT jrad_doc
4152       BULK COLLECT INTO l_jrad_doc_tbl
4153         FROM cz_ui_templates
4154        WHERE cz_ui_templates.ui_def_id = p_ui_def_id
4155          AND cz_ui_templates.template_id = p_template_id
4156          AND cz_ui_templates.seeded_flag = '0'
4157          AND cz_ui_templates.deleted_flag = '0';
4158 
4159 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4160       IF (l_jrad_doc_tbl.COUNT > 0)
4161       THEN
4162          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4163 
4164          FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
4165          LOOP
4166             collect_chunks(l_jrad_doc_tbl(i), p_link_name, x_return_status, x_msg_count, x_msg_data);
4167          END LOOP;
4168 
4169          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4170 
4171          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4172       END IF;
4173 
4174    EXCEPTION
4175       WHEN OTHERS
4176       THEN
4177          x_return_status := FND_API.G_RET_STS_ERROR;
4178          x_msg_count := 1;
4179          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4180    END export_template_jrad_docs;
4181 
4182 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>
4183 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4184    PROCEDURE export_template_jrad_docs(
4185       p_link_name IN VARCHAR2
4186      ,x_return_status OUT NOCOPY VARCHAR2
4187      ,x_msg_count OUT NOCOPY NUMBER
4188      ,x_msg_data OUT NOCOPY VARCHAR2
4189    )
4190    IS
4191       l_ui_def_id_tbl cz_pb_mgr.t_ref;
4192       l_template_id_tbl cz_pb_mgr.t_ref;
4193       l_link_name cz_servers.fndnam_link_name%TYPE;
4194       link_name_is_null EXCEPTION;
4195    BEGIN
4196       IF (p_link_name IS NULL)
4197       THEN
4198          RAISE link_name_is_null;
4199       ELSE
4200          l_link_name := '@' || p_link_name;
4201       END IF;
4202 
4203       SELECT ui_def_id, template_id
4204       BULK COLLECT INTO l_ui_def_id_tbl, l_template_id_tbl
4205         FROM cz_ui_templates
4206        WHERE cz_ui_templates.deleted_flag = '0'
4207          AND cz_ui_templates.seeded_flag = '0'
4208          AND (   cz_ui_templates.ui_def_id = 0
4209               OR cz_ui_templates.ui_def_id IN(
4210                     SELECT ui_def_id
4211                       FROM cz_ui_defs
4212                      WHERE cz_ui_defs.deleted_flag = '0'
4213                        AND cz_ui_defs.devl_project_id IN(SELECT object_id
4214                                                            FROM cz_rp_entries
4215                                                           WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0'))
4216              );
4217 
4218       IF (l_ui_def_id_tbl.COUNT > 0)
4219       THEN
4220          FOR i IN l_ui_def_id_tbl.FIRST .. l_ui_def_id_tbl.LAST
4221          LOOP
4222             x_return_status := FND_API.G_RET_STS_SUCCESS;
4223             x_msg_data := '';
4224             export_template_jrad_docs(l_ui_def_id_tbl(i), l_template_id_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
4225 
4226             IF (x_return_status = FND_API.G_RET_STS_ERROR)
4227             THEN
4228                log_pb_errors(x_msg_data, '0', 'EXPORTJRADDOCS', SQLCODE);
4229             END IF;
4230          END LOOP;
4231       END IF;
4232    EXCEPTION
4233       WHEN link_name_is_null
4234       THEN
4235          x_return_status := FND_API.G_RET_STS_ERROR;
4236          x_msg_data := 'Db Link Name is Null';
4237          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4238       WHEN OTHERS
4239       THEN
4240          x_return_status := FND_API.G_RET_STS_ERROR;
4241          x_msg_data := SQLERRM;
4242          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4243    END export_template_jrad_docs;
4244 
4245 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4246    PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2)
4247    IS
4248       l_lob CLOB;
4249       l_offset PLS_INTEGER := 1;
4250       l_length BINARY_INTEGER;
4251       l_doc_id NUMBER;
4252       l_buffer LONG;
4253       firstchunk LONG;
4254       p xmlparser.parser;
4255       doc xmldom.domdocument;
4256       nl xmldom.domnodelist;
4257       len NUMBER;
4258       n xmldom.domnode;
4259       top_node xmldom.domnode;
4260       l_parent_node xmldom.domnode;
4261       v_ns VARCHAR2(255);
4262       v_el VARCHAR2(255);
4263       len1 NUMBER;
4264       len2 NUMBER;
4265       nnm xmldom.domnamednodemap;
4266       attrname VARCHAR2(255);
4267       attrval VARCHAR2(255);
4268       newattrname VARCHAR2(255);
4269       name_space VARCHAR2(255);
4270       tag_name VARCHAR2(255);
4271       l_doc jdr_docbuilder.document;
4272       top_element jdr_docbuilder.ELEMENT;
4273       g_document jdr_docbuilder.document;
4274       l_new_document jdr_docbuilder.document;
4275       jrad_save_status PLS_INTEGER;
4276       document_is_null EXCEPTION;
4277 
4278       TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
4279 
4280       g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
4281       l_exportfinished BOOLEAN;
4282    BEGIN
4283       pbdebug := 22027;
4284       jdr_docbuilder.REFRESH;
4285 
4286       IF (p_old_document_name IS NULL)
4287       THEN
4288          RAISE document_is_null;
4289       END IF;
4290 
4291       --There are some issues with having the p_chunk
4292       --parameter as a CLOB.  For some reason, the getLength on a CLOB for certain
4293       --JRAD documents was returning a 0, and UI copy procedure was failing.
4294       --Retaining this parameter as LONG and changing the places where we were
4295       --calling the procedure to LONG so we be consistent everywhere
4296       --See Bug 4930937 for symptoms of the bug.
4297       SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
4298       SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
4299       firstchunk := jdr_utils.exportdocument(p_old_document_name, l_exportfinished);
4300       replace_extends(firstchunk);
4301       handle_ancestorNode(p_old_document_name, p_new_document_name, firstchunk);
4302 
4303       IF (firstchunk IS NULL)
4304       THEN
4305          RAISE document_is_null;
4306       END IF;
4307 
4308       BEGIN
4309          SYS.DBMS_LOB.writeappend(l_lob, LENGTH(firstchunk), firstchunk);
4310       EXCEPTION
4311          WHEN OTHERS
4312          THEN
4313             NULL; ---- for negative index to be ignored
4314       END;
4315 
4316       --There are some issues with having the p_chunk
4317       --parameter on replace_extends as a CLOB.  For some reason, the getLength on a CLOB for certain
4318       --JRAD documents was returning a 0, and UI copy procedure was failing.
4319       --Retaining this parameter as LONG and changing the places where we were
4320       --calling the procedure to LONG so we be consistent everywhere
4321       --See Bug 4930937 for symptoms of the bug.
4322       LOOP
4323          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
4324          EXIT WHEN l_buffer IS NULL;
4325          replace_extends(l_buffer);
4326          handle_ancestorNode(p_old_document_name, p_new_document_name, l_buffer);
4327          l_length := LENGTH(l_buffer);
4328          SYS.DBMS_LOB.writeappend(l_lob, l_length, l_buffer);
4329       END LOOP;
4330 
4331       l_length := SYS.DBMS_LOB.getlength(l_lob);
4332       p := xmlparser.newparser;
4333       xmlparser.parseclob(p, l_lob);
4334       doc := xmlparser.getdocument(p);
4335       SYS.DBMS_LOB.CLOSE(l_lob);
4336       SYS.DBMS_LOB.freetemporary(l_lob);
4337       l_doc := jdr_docbuilder.createdocument(p_new_document_name);
4338       top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
4339 
4340       IF (g_toplevel_attr_tbl.COUNT > 0)
4341       THEN
4342          FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
4343          LOOP
4344             BEGIN
4345                xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
4346             EXCEPTION
4347                WHEN OTHERS
4348                THEN
4349                   NULL;
4350             END;
4351          END LOOP;
4352       END IF;
4353 
4354       name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
4355       tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
4356       top_element := createelement(name_space, tag_name);
4357       nnm := xmldom.getattributes(top_node);
4358 
4359       IF (xmldom.isnull(nnm) = FALSE)
4360       THEN
4361          len2 := xmldom.getlength(nnm);
4362 
4363          FOR i IN 0 .. len2 - 1
4364          LOOP
4365             n := xmldom.item(nnm, i);
4366             attrname := xmldom.getnodename(n);
4367             attrval := xmldom.getnodevalue(n);
4368             jdr_docbuilder.setattribute(top_element, attrname, attrval);
4369          END LOOP;
4370       END IF;
4371 
4372       jdr_docbuilder.settoplevelelement(l_doc, top_element);
4373 
4374       BEGIN
4375          exploretree(top_element, top_node, '', ' ');
4376       EXCEPTION
4377       ----bug14191479. To handle value errors.
4378       WHEN VALUE_ERROR THEN
4379        RAISE;
4380          WHEN OTHERS
4381          THEN
4382             RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
4383       END;
4384 
4385       jrad_save_status := jdr_docbuilder.SAVE;
4386       xmlparser.freeparser(p);
4387       COMMIT;
4388       cz_pb_mgr.g_jrad_trans_list := jdr_utils.translationlist();
4389       cz_pb_mgr.g_jrad_trans_list := jdr_utils.gettranslations(p_old_document_name);
4390 
4391       IF (cz_pb_mgr.g_jrad_trans_list IS NOT NULL)
4392       THEN
4393          jdr_utils.savetranslations(p_new_document_name, cz_pb_mgr.g_jrad_trans_list);
4394       END IF;
4395 
4396       jdr_docbuilder.REFRESH;
4397       COMMIT;
4398    EXCEPTION
4399       WHEN document_is_null
4400       THEN
4401          NULL;
4402       WHEN OTHERS
4403       THEN
4404          EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
4405 
4406          RAISE;
4407    END insert_into_repository;
4408 
4409 -------------------------------------------------------
4410 -- p_document_type is used to decide if id replacement on xml doc is needed in a remote model migration session:
4411 -- if it is null (template jrad docs), replacement will be done via collect_chunks -> synch_user_attribute,
4412 -- otherwise (page xml docs), no replacement will be performed.
4413 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4414 --this is the actual procedure for collect_chunks and insert that is used in the code.
4415    PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2, p_link_name IN VARCHAR2 , p_document_type IN VARCHAR2 DEFAULT NULL)
4416    IS
4417       document_is_null EXCEPTION;
4418       l_return_status VARCHAR2(1);
4419       l_msg_count NUMBER := 0;
4420       l_msg_data VARCHAR2(2000);
4421    BEGIN
4422       pbdebug := 22028;
4423 
4424       IF (cz_pb_mgr.v_server_id <> 0)
4425       THEN
4426          jdr_docbuilder.REFRESH;
4427 
4428          IF (p_old_document_name IS NULL)
4429          THEN
4430             RAISE document_is_null;
4431          END IF;
4432 
4433          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4434 
4435          collect_chunks(p_old_document_name, p_new_document_name, p_link_name, l_return_status, l_msg_count, l_msg_data , p_document_type);
4436 
4437          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4438 
4439          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4440       ELSE
4441          insert_into_repository(p_old_document_name, p_new_document_name);
4442       END IF;
4443 
4444    EXCEPTION
4445       WHEN document_is_null
4446       THEN
4447          NULL;
4448      --bug14191479. To handle value errors.
4449       WHEN VALUE_ERROR THEN
4450          fnd_message.set_token('ERROR_TEXT', SQLERRM);
4451          fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
4452          fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
4453          cz_pb_mgr.v_err_message := fnd_message.get;
4454          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
4455 	 --bug14191479. Log message added for JRAD Doc
4456 	 cz_pb_mgr.error_msg_populate('Jrad doc: ' ||p_old_document_name ,'cz_pb_mgr.EXPLORETREE',SQLCODE);
4457          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4458 	 RAISE;
4459 
4460       WHEN EXPLORETREE_ERROR THEN
4461          fnd_message.set_name('FND', 'FND_AS_UNEXPECTED_ERROR');
4462          fnd_message.set_token('ERROR_TEXT', SQLERRM);
4463          fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
4464          fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
4465          cz_pb_mgr.v_err_message := fnd_message.get;
4466          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
4467 	 --bug14151479. Log message added for JRAD Doc
4468 	 cz_pb_mgr.error_msg_populate('Jrad doc: ' ||p_old_document_name ,'cz_pb_mgr.EXPLORETREE',SQLCODE);
4469          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4470 
4471          RAISE;
4472       WHEN OTHERS
4473       THEN
4474          EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
4475 
4476          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_JRAD_DOC_ERR', 'JRADDOC', p_old_document_name, 'SQLERRM', SQLERRM);
4477          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTOJRADREPOS', SQLCODE);
4478          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4479 
4480          RAISE;
4481    END insert_into_repository;
4482 
4483 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4484 -----collect from cz_ui_pages
4485    PROCEDURE bulk_collect_ui_pages
4486    IS
4487       l_cz_ui_pages_ui_def_tbl cz_pb_mgr.t_ref;
4488       l_cz_ui_pages_jrad_doc_tbl varchar_tbl_type;
4489       l_cz_ui_pages_capt_id_tbl cz_pb_mgr.t_ref;
4490       l_cz_page_stat_templ_tbl cz_pb_mgr.t_ref;
4491       l_cz_page_stat_uidef_tbl cz_pb_mgr.t_ref;
4492       l_cz_ui_pages_pgtmplid_tbl cz_pb_mgr.t_ref;
4493       l_cz_ui_pages_pgtmplui_tbl cz_pb_mgr.t_ref;
4494       l_cz_ui_pages_dis_cond_tbl cz_pb_mgr.t_ref;
4495       l_cz_ui_pages_enb_cond_tbl cz_pb_mgr.t_ref;
4496       l_cz_ui_pages_expl_node_tbl cz_pb_mgr.t_ref;
4497       l_rec_count NUMBER;
4498    BEGIN
4499       pbdebug := 22029;
4500 
4501       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4502       THEN
4503          cz_pb_mgr.g_cz_ui_pages_ui_def_ref.DELETE;
4504          cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.DELETE;
4505          cz_pb_mgr.g_cz_ui_pages_capt_id_ref.DELETE;
4506          cz_pb_mgr.g_pages_ui_def_old_ref.DELETE;
4507          cz_pb_mgr.g_cz_ui_old_jrad_doc_ref.DELETE;
4508          -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4509          -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4510          cz_pb_mgr.g_cz_ui_pages_stat_templ.DELETE;
4511          cz_pb_mgr.g_cz_ui_pages_stat_ui.DELETE;
4512          cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
4513          cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
4514          cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl.DELETE;
4515          cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl.DELETE;
4516          cz_pb_mgr.g_cz_ui_pages_expl_tbl.DELETE;
4517 
4518          FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4519          LOOP
4520             l_cz_ui_pages_ui_def_tbl.DELETE;
4521             l_cz_ui_pages_jrad_doc_tbl.DELETE;
4522             l_cz_ui_pages_capt_id_tbl.DELETE;
4523             l_cz_page_stat_templ_tbl.DELETE;
4524             l_cz_page_stat_uidef_tbl.DELETE;
4525             l_cz_ui_pages_pgtmplid_tbl.DELETE;
4526             l_cz_ui_pages_pgtmplui_tbl.DELETE;
4527             l_cz_ui_pages_dis_cond_tbl.DELETE;
4528             l_cz_ui_pages_enb_cond_tbl.DELETE;
4529             l_cz_ui_pages_expl_node_tbl.DELETE;
4530 
4531             SELECT ui_def_id, jrad_doc, caption_text_id, page_status_template_id
4532                   ,page_status_templ_uidef_id, outer_page_template_id, outer_page_templ_uidef_id, display_condition_id
4533                   ,enabled_condition_id, pagebase_expl_node_id
4534             BULK COLLECT INTO l_cz_ui_pages_ui_def_tbl, l_cz_ui_pages_jrad_doc_tbl, l_cz_ui_pages_capt_id_tbl, l_cz_page_stat_templ_tbl
4535                   ,l_cz_page_stat_uidef_tbl, l_cz_ui_pages_pgtmplid_tbl, l_cz_ui_pages_pgtmplui_tbl, l_cz_ui_pages_dis_cond_tbl
4536                   ,l_cz_ui_pages_enb_cond_tbl, l_cz_ui_pages_expl_node_tbl
4537               FROM cz_ui_pages
4538              WHERE cz_ui_pages.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_pages.deleted_flag = record_not_deleted;
4539 
4540             IF (l_cz_ui_pages_ui_def_tbl.COUNT > 0)
4541             THEN
4542                l_rec_count := cz_pb_mgr.g_pages_ui_def_old_ref.COUNT;
4543 
4544                FOR uidefref IN l_cz_ui_pages_ui_def_tbl.FIRST .. l_cz_ui_pages_ui_def_tbl.LAST
4545                LOOP
4546                   l_rec_count := l_rec_count + 1;
4547                  -- cz_pb_mgr.g_cz_ui_pages_ui_def_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4548                   -- cz_pb_mgr.v_intl_text_ui_tbl(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4549                   cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
4550                   cz_pb_mgr.g_cz_ui_pages_capt_id_ref(l_rec_count) := l_cz_ui_pages_capt_id_tbl(uidefref);
4551                   cz_pb_mgr.g_pages_ui_def_old_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4552                   cz_pb_mgr.g_cz_ui_old_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
4553                   cz_pb_mgr.g_cz_ui_pages_stat_templ(l_rec_count) := l_cz_page_stat_templ_tbl(uidefref);
4554                   cz_pb_mgr.g_cz_ui_pages_stat_ui(l_rec_count) := l_cz_page_stat_uidef_tbl(uidefref);
4555                   -- cz_pb_mgr.v_intl_text_model_tbl(l_rec_count) := -1;
4556                   cz_pb_mgr.g_cz_uipg_tmplid_tbl(l_rec_count) := l_cz_ui_pages_pgtmplid_tbl(uidefref);
4557                   cz_pb_mgr.g_cz_uipg_tmplui_tbl(l_rec_count) := l_cz_ui_pages_pgtmplui_tbl(uidefref);
4558                   cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl(l_rec_count) := l_cz_ui_pages_dis_cond_tbl(uidefref);
4559                   cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl(l_rec_count) := l_cz_ui_pages_enb_cond_tbl(uidefref);
4560                   cz_pb_mgr.g_cz_ui_pages_expl_tbl(l_rec_count) := l_cz_ui_pages_expl_node_tbl(uidefref);
4561                END LOOP;
4562             END IF;
4563          END LOOP;
4564       END IF;
4565    EXCEPTION
4566       WHEN NO_DATA_FOUND
4567       THEN
4568          NULL;
4569       WHEN OTHERS
4570       THEN
4571          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_pages', 'SQLERRM', SQLERRM);
4572          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGES', SQLCODE);
4573          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4574          RAISE;
4575    END bulk_collect_ui_pages;
4576 
4577 -------------------------------------------------------------------------
4578 -------insert into cz_ui_pages
4579    PROCEDURE insert_into_ui_pages
4580    IS
4581       rec_count NUMBER := 0;
4582       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4583    BEGIN
4584       pbdebug := 22030;
4585 
4586       IF (cz_pb_mgr.g_pages_ui_def_old_ref.COUNT > 0)
4587       THEN
4588          ----resolve  ui_def_id of ui pages
4589          resolve_ids(cz_pb_mgr.g_pages_ui_def_old_ref,cz_pb_mgr.g_cz_ui_pages_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui pages');
4590 
4591          -- resolve page status and outer page templates
4592          IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
4593            resolve_tmpl_ui_defs(g_cz_ui_pages_stat_ui, g_cz_ui_pages_stat_ui, g_cz_ui_pages_stat_templ, v_cz_ui_defs_idx_ref, 'pg status templ uidefs of ui pages');
4594            resolve_ids(cz_pb_mgr.g_cz_ui_pages_stat_templ, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'pg stat templs of ui pages', ENTITY_TYPE_UCT);
4595            resolve_tmpl_ui_defs(g_cz_uipg_tmplui_tbl, g_cz_uipg_tmplui_tbl,g_cz_uipg_tmplid_tbl, v_cz_ui_defs_idx_ref, 'outer pg templ uidefs of ui pages');
4596            resolve_ids(cz_pb_mgr.g_cz_uipg_tmplid_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'outer page tmpl id of ui pages', ENTITY_TYPE_UCT);
4597          END IF;
4598 
4599          ----caption ids of ui pages
4600          resolve_intl_texts(cz_pb_mgr.g_cz_ui_pages_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of cz ui pages');
4601 
4602          resolve_ids(cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'disabled condition of ui pages');
4603          resolve_ids(cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'enabled condition of ui pages');
4604          resolve_ids(cz_pb_mgr.g_cz_ui_pages_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl node id of ui pages');
4605          plsql_table_list.DELETE;
4606          rec_count := 1;
4607          plsql_table_list(rec_count).col_name := 'ui_def_id';
4608          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_ui_def_ref';
4609          rec_count := rec_count + 1;
4610          plsql_table_list(rec_count).col_name := 'jrad_doc';
4611          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref';
4612          rec_count := rec_count + 1;
4613          plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPLATE_ID';
4614          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_templ';
4615          rec_count := rec_count + 1;
4616          plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPL_UIDEF_ID';
4617          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_ui';
4618          rec_count := rec_count + 1;
4619          plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPLATE_ID';
4620          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplid_tbl';
4621          rec_count := rec_count + 1;
4622          plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPL_UIDEF_ID';
4623          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplui_tbl';
4624          rec_count := rec_count + 1;
4625          plsql_table_list(rec_count).col_name := 'DISPLAY_CONDITION_ID';
4626          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl';
4627          rec_count := rec_count + 1;
4628          plsql_table_list(rec_count).col_name := 'ENABLED_CONDITION_ID';
4629          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl';
4630          rec_count := rec_count + 1;
4631          plsql_table_list(rec_count).col_name := 'PAGEBASE_EXPL_NODE_ID';
4632          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_expl_tbl';
4633          rec_count := rec_count + 1;
4634          plsql_table_list(rec_count).col_name := 'CAPTION_TEXT_ID';
4635          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_capt_id_ref';
4636          insert_into_table('cz_ui_pages'
4637                           ,'ui_def_id'
4638                           ,'jrad_doc'
4639                           ,cz_pb_mgr.v_db_link
4640                           ,plsql_table_list
4641                           ,'cz_pb_mgr.g_pages_ui_def_old_ref'
4642                           ,'cz_pb_mgr.g_cz_ui_old_jrad_doc_ref'
4643                           ,cz_pb_mgr.g_pages_ui_def_old_ref
4644                           ,cz_pb_mgr.g_cz_ui_old_jrad_doc_ref
4645                           );
4646       END IF;
4647    END insert_into_ui_pages;
4648 
4649 ----------------------------------------------------------
4650 ---------bulk collect ui page sets
4651    PROCEDURE bulk_collect_page_sets
4652    IS
4653       l_rec_count NUMBER := 0;
4654       l_page_sets_ui_tbl cz_pb_mgr.t_ref;
4655       l_page_sets_pg_tbl cz_pb_mgr.t_ref;
4656       l_pagebase_expl_tbl cz_pb_mgr.t_ref;
4657       l_train_jrad_doc_tbl varchar_type_tbl;
4658    BEGIN
4659       pbdebug := 22031;
4660 
4661       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4662       THEN
4663          cz_pb_mgr.g_page_sets_ui_old_ref.DELETE;
4664          cz_pb_mgr.g_page_sets_ui_ref.DELETE;
4665          cz_pb_mgr.g_page_sets_pg_tbl.DELETE;
4666          cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
4667          cz_pb_mgr.g_page_sets_expl_tbl.DELETE;
4668 
4669          FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4670          LOOP
4671             SELECT ui_def_id, page_set_id, train_jrad_doc, pagebase_expl_node_id
4672             BULK COLLECT INTO l_page_sets_ui_tbl, l_page_sets_pg_tbl, l_train_jrad_doc_tbl, l_pagebase_expl_tbl
4673               FROM cz_ui_page_sets
4674              WHERE cz_ui_page_sets.deleted_flag = record_not_deleted AND cz_ui_page_sets.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef);
4675 
4676             IF (l_page_sets_ui_tbl.COUNT > 0)
4677             THEN
4678                l_rec_count := cz_pb_mgr.g_page_sets_ui_old_ref.COUNT;
4679 
4680                FOR pageset IN l_page_sets_ui_tbl.FIRST .. l_page_sets_ui_tbl.LAST
4681                LOOP
4682                   l_rec_count := l_rec_count + 1;
4683                   cz_pb_mgr.g_page_sets_ui_old_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4684                   --cz_pb_mgr.g_page_sets_ui_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4685                   cz_pb_mgr.g_page_sets_pg_tbl(l_rec_count) := l_page_sets_pg_tbl(pageset);
4686                   cz_pb_mgr.g_page_sets_jrad_doc_ref(l_rec_count) := l_train_jrad_doc_tbl(pageset);
4687                   cz_pb_mgr.g_page_sets_expl_tbl(l_rec_count) := l_pagebase_expl_tbl(pageset);
4688                END LOOP;
4689             END IF;
4690          END LOOP;
4691       END IF;
4692    EXCEPTION
4693       WHEN NO_DATA_FOUND
4694       THEN
4695          NULL;
4696       WHEN OTHERS
4697       THEN
4698          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4699          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGESETS', SQLCODE);
4700          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4701          RAISE;
4702    END bulk_collect_page_sets;
4703 
4704 ---------------------------------------------------------------
4705 ----insert into cz_ui_page_sets
4706    PROCEDURE insert_into_ui_page_sets
4707    IS
4708       rec_count NUMBER := 0;
4709       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4710    BEGIN
4711       IF (cz_pb_mgr.g_page_sets_ui_old_ref.COUNT > 0)
4712       THEN
4713          pbdebug := 22032;
4714          ----resolve  ui_def_id of page sets
4715          resolve_ids(cz_pb_mgr.g_page_sets_ui_old_ref,cz_pb_mgr.g_page_sets_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of page sets');
4716          resolve_ids(cz_pb_mgr.g_page_sets_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl node id of page sets');
4717          plsql_table_list.DELETE;
4718          rec_count := 1;
4719          plsql_table_list(rec_count).col_name := 'ui_def_id';
4720          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_ui_ref';
4721          rec_count := rec_count + 1;
4722          plsql_table_list(rec_count).col_name := 'train_jrad_doc';
4723          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_jrad_doc_ref';
4724          rec_count := rec_count + 1;
4725          plsql_table_list(rec_count).col_name := 'pagebase_expl_node_id';
4726          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_expl_tbl';
4727          insert_into_table('cz_ui_page_sets'
4728                           ,'ui_def_id'
4729                           ,'page_set_id'
4730                           ,cz_pb_mgr.v_db_link
4731                           ,plsql_table_list
4732                           ,'cz_pb_mgr.g_page_sets_ui_old_ref'
4733                           ,'cz_pb_mgr.g_page_sets_pg_tbl'
4734                           ,cz_pb_mgr.g_page_sets_ui_old_ref
4735                           ,cz_pb_mgr.g_page_sets_pg_tbl
4736                           );
4737       END IF;
4738    EXCEPTION
4739       WHEN OTHERS
4740       THEN
4741          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4742          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGESETS', SQLCODE);
4743          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4744          RAISE;
4745    END insert_into_ui_page_sets;
4746 
4747 ------------------------------------------------------------------------
4748 -----bulk collect from page refs
4749    PROCEDURE bulk_collect_page_refs
4750    IS
4751       l_page_refs_set_id_tbl cz_pb_mgr.t_ref;
4752       l_page_refs_ui_def_tbl cz_pb_mgr.t_ref;
4753       l_page_refs_pg_ref_id_tbl cz_pb_mgr.t_ref;
4754       l_page_refs_cond_id_tbl cz_pb_mgr.t_ref;
4755       l_page_refs_capt_id_tbl cz_pb_mgr.t_ref;
4756       l_page_refs_prop_id_tbl cz_pb_mgr.t_ref;
4757       l_page_refs_tgt_ui_tbl cz_pb_mgr.t_ref;
4758       l_page_refs_tgt_pg_set_tbl cz_pb_mgr.t_ref;
4759       l_page_refs_tgt_pg_id_tbl cz_pb_mgr.t_ref;
4760       l_page_refs_pg_set_tbl cz_pb_mgr.t_ref;
4761       l_page_refs_pg_ref_tbl cz_pb_mgr.t_ref;
4762       l_page_refs_tgt_expl_tbl cz_pb_mgr.t_ref;
4763       l_page_refs_cpt_rule_tbl cz_pb_mgr.t_ref;
4764       rec_count NUMBER := 0;
4765    BEGIN
4766       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4767       THEN
4768          cz_pb_mgr.g_page_refs_ui_def_old_ref.DELETE;
4769          cz_pb_mgr.g_page_refs_ui_def_new_ref.DELETE;
4770          cz_pb_mgr.g_page_refs_cond_id_ref.DELETE;
4771          cz_pb_mgr.g_page_refs_capt_id_ref.DELETE;
4772          cz_pb_mgr.g_page_refs_tgt_ui_ref.DELETE;
4773          cz_pb_mgr.g_page_refs_pg_set_ref.DELETE;
4774          cz_pb_mgr.g_page_refs_pg_ref_ref.DELETE;
4775          -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4776          -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4777          cz_pb_mgr.g_page_refs_tgt_expl_tbl.DELETE;
4778          cz_pb_mgr.g_page_refs_cpt_rule_tbl.DELETE;
4779          pbdebug := 22033;
4780 
4781          FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4782          LOOP
4783             l_page_refs_ui_def_tbl.DELETE;
4784             l_page_refs_cond_id_tbl.DELETE;
4785             l_page_refs_capt_id_tbl.DELETE;
4786             l_page_refs_tgt_ui_tbl.DELETE;
4787             l_page_refs_tgt_expl_tbl.DELETE;
4788             l_page_refs_cpt_rule_tbl.DELETE;
4789 
4790             SELECT ui_def_id, page_set_id, page_ref_id, condition_id, caption_text_id
4791                   ,target_ui_def_id, target_expl_node_id, caption_rule_id
4792             BULK COLLECT INTO l_page_refs_ui_def_tbl, l_page_refs_pg_set_tbl, l_page_refs_pg_ref_tbl, l_page_refs_cond_id_tbl, l_page_refs_capt_id_tbl
4793                   ,l_page_refs_tgt_ui_tbl, l_page_refs_tgt_expl_tbl, l_page_refs_cpt_rule_tbl
4794               FROM cz_ui_page_refs
4795              WHERE cz_ui_page_refs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_page_refs.deleted_flag = record_not_deleted;
4796 
4797             IF (l_page_refs_ui_def_tbl.COUNT > 0)
4798             THEN
4799                rec_count := cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT;
4800 
4801                FOR pageref IN l_page_refs_ui_def_tbl.FIRST .. l_page_refs_ui_def_tbl.LAST
4802                LOOP
4803                   rec_count := rec_count + 1;
4804                  -- cz_pb_mgr.g_page_refs_ui_def_new_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4805                   cz_pb_mgr.g_page_refs_ui_def_old_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4806                   -- cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_page_refs_ui_def_tbl(pageref);
4807                   -- cz_pb_mgr.v_intl_text_model_tbl(rec_count) := -1;
4808                   cz_pb_mgr.g_page_refs_pg_set_ref(rec_count) := l_page_refs_pg_set_tbl(pageref);
4809                   cz_pb_mgr.g_page_refs_pg_ref_ref(rec_count) := l_page_refs_pg_ref_tbl(pageref);
4810                   cz_pb_mgr.g_page_refs_cond_id_ref(rec_count) := l_page_refs_cond_id_tbl(pageref);
4811                   cz_pb_mgr.g_page_refs_capt_id_ref(rec_count) := l_page_refs_capt_id_tbl(pageref);
4812                   cz_pb_mgr.g_page_refs_tgt_ui_ref(rec_count) := l_page_refs_tgt_ui_tbl(pageref);
4813                   cz_pb_mgr.g_page_refs_tgt_expl_tbl(rec_count) := l_page_refs_tgt_expl_tbl(pageref);
4814                   cz_pb_mgr.g_page_refs_cpt_rule_tbl(rec_count) := l_page_refs_cpt_rule_tbl(pageref);
4815                END LOOP;
4816             END IF;
4817          END LOOP;
4818       END IF;
4819    EXCEPTION
4820       WHEN NO_DATA_FOUND
4821       THEN
4822          NULL;
4823       WHEN OTHERS
4824       THEN
4825          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4826          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGEREFS', SQLCODE);
4827          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4828          RAISE;
4829    END bulk_collect_page_refs;
4830 
4831 -------------------------------------------------
4832 ------insert into page refs
4833    PROCEDURE insert_into_ui_page_refs
4834    IS
4835       rec_count NUMBER := 0;
4836       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4837    BEGIN
4838       IF (cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT > 0)
4839       THEN
4840          pbdebug := 22034;
4841          ----resolve  ui_def_id
4842          resolve_ids(cz_pb_mgr.g_page_refs_ui_def_old_ref,cz_pb_mgr.g_page_refs_ui_def_new_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of page refs');
4843 
4844 	 ---bug14004074. Should not resolve caption_rule_id of page refs as this will have always a seeded value.
4845          --resolve_ids(cz_pb_mgr.g_page_refs_cpt_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'caption rule id of page refs');
4846 
4847 	 ---create rules for g_page_refs_cond_id_ref
4848          resolve_ids(cz_pb_mgr.g_page_refs_cond_id_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'condition id of page refs');
4849          ----caption ids of ui pages
4850          -----insert_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref,'caption ids of cz ui page refs');
4851          resolve_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of cz ui page refs');
4852          ----resolve expl id
4853          resolve_ids(cz_pb_mgr.g_page_refs_tgt_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl ids of page refs');
4854          plsql_table_list.DELETE;
4855          rec_count := 1;
4856          plsql_table_list(rec_count).col_name := 'ui_def_id';
4857          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_ui_def_new_ref';
4858          rec_count := rec_count + 1;
4859          plsql_table_list(rec_count).col_name := 'caption_text_id';
4860          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_capt_id_ref';
4861          rec_count := rec_count + 1;
4862          plsql_table_list(rec_count).col_name := 'target_ui_def_id';
4863          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_ui_ref';
4864          rec_count := rec_count + 1;
4865          plsql_table_list(rec_count).col_name := 'target_expl_node_id';
4866          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_expl_tbl';
4867          rec_count := rec_count + 1;
4868          plsql_table_list(rec_count).col_name := 'caption_rule_id';
4869          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cpt_rule_tbl';
4870          rec_count := rec_count + 1;
4871          plsql_table_list(rec_count).col_name := 'condition_id';
4872          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cond_id_ref';
4873          -- should call resolve_ids instead
4874          resolve_ref_ids_not_found(cz_pb_mgr.g_page_refs_ui_def_new_ref
4875                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
4876                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4877                                   ,cz_pb_mgr.g_page_refs_tgt_ui_ref
4878                                   ,'cz_ui_page_refs.target_ui_def_id'
4879                                   ,cz_pb_mgr.v_status_code
4880                                   );
4881          insert_into_table('cz_ui_page_refs'
4882                           ,'ui_def_id'
4883                           ,'page_set_id'
4884                           ,'page_ref_id'
4885                           ,cz_pb_mgr.v_db_link
4886                           ,plsql_table_list
4887                           ,'cz_pb_mgr.g_page_refs_ui_def_old_ref'
4888                           ,'cz_pb_mgr.g_page_refs_pg_set_ref'
4889                           ,'cz_pb_mgr.g_page_refs_pg_ref_ref'
4890                           ,cz_pb_mgr.g_page_refs_ui_def_old_ref
4891                           ,cz_pb_mgr.g_page_refs_pg_set_ref
4892                           ,cz_pb_mgr.g_page_refs_pg_ref_ref
4893                           );
4894       END IF;
4895    EXCEPTION
4896       WHEN OTHERS
4897       THEN
4898          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4899          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGEREFS', SQLCODE);
4900          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4901          RAISE;
4902    END insert_into_ui_page_refs;
4903 
4904 --------------------------------------------------
4905 -----bulk collect from ui refs
4906    PROCEDURE bulk_collect_ui_refs
4907    IS
4908       l_ui_refs_ui_def_tbl cz_pb_mgr.t_ref;
4909       l_ui_refs_ref_ui_def_tbl cz_pb_mgr.t_ref;
4910       l_ui_refs_expl_id_tbl cz_pb_mgr.t_ref;
4911       rec_count NUMBER := 0;
4912    BEGIN
4913       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4914       THEN
4915          cz_pb_mgr.g_ui_refs_old_ui_def_ref.DELETE;
4916          cz_pb_mgr.g_ui_refs_new_ui_def_ref.DELETE;
4917          cz_pb_mgr.g_ui_refs_ref_ui_def_ref.DELETE;
4918          cz_pb_mgr.g_ui_refs_expl_id_ref.DELETE;
4919          cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref.DELETE;
4920          cz_pb_mgr.g_ui_refs_expl_id_old_ref.DELETE;
4921 
4922          FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4923          LOOP
4924             l_ui_refs_ui_def_tbl.DELETE;
4925             l_ui_refs_ref_ui_def_tbl.DELETE;
4926             l_ui_refs_expl_id_tbl.DELETE;
4927 
4928             SELECT ui_def_id, ref_ui_def_id, model_ref_expl_id
4929             BULK COLLECT INTO l_ui_refs_ui_def_tbl, l_ui_refs_ref_ui_def_tbl, l_ui_refs_expl_id_tbl
4930               FROM cz_ui_refs
4931              WHERE cz_ui_refs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_refs.deleted_flag = record_not_deleted;
4932 
4933             IF (l_ui_refs_ui_def_tbl.COUNT > 0)
4934             THEN
4935                rec_count := cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT;
4936 
4937                FOR uiref IN l_ui_refs_ui_def_tbl.FIRST .. l_ui_refs_ui_def_tbl.LAST
4938                LOOP
4939                   rec_count := rec_count + 1;
4940                   cz_pb_mgr.g_ui_refs_old_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4941                  -- cz_pb_mgr.g_ui_refs_new_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4942                   cz_pb_mgr.g_ui_refs_ref_ui_def_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4943                   cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4944                   cz_pb_mgr.g_ui_refs_expl_id_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4945                   cz_pb_mgr.g_ui_refs_expl_id_old_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4946                END LOOP;
4947             END IF;
4948          END LOOP;
4949       END IF;
4950    EXCEPTION
4951       WHEN NO_DATA_FOUND
4952       THEN
4953          NULL;
4954       WHEN OTHERS
4955       THEN
4956          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4957          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIREFS', SQLCODE);
4958          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4959          RAISE;
4960    END bulk_collect_ui_refs;
4961 
4962 -----------------------------------------------------------------
4963 ------insert into cz_ui_refs
4964    PROCEDURE insert_into_ui_refs
4965    IS
4966       rec_count NUMBER := 0;
4967       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4968    BEGIN
4969       IF (cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT > 0)
4970       THEN
4971          ----resolve  ui_def_id
4972          resolve_ids(cz_pb_mgr.g_ui_refs_old_ui_def_ref,cz_pb_mgr.g_ui_refs_new_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui refs');
4973          ----resolve  model ref expl id
4974          resolve_ids(cz_pb_mgr.g_ui_refs_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl ids of page refs');
4975          plsql_table_list.DELETE;
4976          rec_count := 1;
4977          plsql_table_list(rec_count).col_name := 'ui_def_id';
4978          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_new_ui_def_ref';
4979          rec_count := rec_count + 1;
4980          plsql_table_list(rec_count).col_name := 'ref_ui_def_id';
4981          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_ref_ui_def_ref';
4982          rec_count := rec_count + 1;
4983          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4984          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_expl_id_ref';
4985          -- should call resolve_ids instead
4986          resolve_ref_ids_not_found(cz_pb_mgr.g_ui_refs_new_ui_def_ref
4987                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
4988                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4989                                   ,cz_pb_mgr.g_ui_refs_ref_ui_def_ref
4990                                   ,'cz_ui_refs.ref_ui_def_id'
4991                                   ,cz_pb_mgr.v_status_code
4992                                   );
4993          insert_into_table('cz_ui_refs'
4994                           ,'ui_def_id'
4995                           ,'ref_ui_def_id'
4996                           ,'model_ref_expl_id'
4997                           ,cz_pb_mgr.v_db_link
4998                           ,plsql_table_list
4999                           ,'cz_pb_mgr.g_ui_refs_old_ui_def_ref'
5000                           ,'cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref'
5001                           ,'cz_pb_mgr.g_ui_refs_expl_id_old_ref'
5002                           ,cz_pb_mgr.g_ui_refs_old_ui_def_ref
5003                           ,cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref
5004                           ,cz_pb_mgr.g_ui_refs_expl_id_old_ref
5005                           );
5006       END IF;
5007 
5008       COMMIT;
5009    EXCEPTION
5010       WHEN OTHERS
5011       THEN
5012          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
5013          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIREFS', SQLCODE);
5014          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5015          RAISE;
5016    END;
5017 
5018 ------------------------------------------------------------
5019 -----bulk collect from ui ps maps
5020    PROCEDURE bulk_collect_ui_ps_maps
5021    IS
5022       l_ui_ps_maps_ui_def_tbl cz_pb_mgr.t_ref;
5023       l_ui_ps_maps_ctrl_tmp_tbl cz_pb_mgr.t_ref;
5024       l_ui_ps_maps_page_id_tbl cz_pb_mgr.t_ref;
5025       l_ui_ps_maps_expl_id_tbl cz_pb_mgr.t_ref;
5026       l_ui_ps_maps_elem_sig_tbl cz_pb_mgr.t_ref;
5027       l_ui_ps_maps_ctrl_temp_ui_tbl cz_pb_mgr.t_ref;
5028       l_ui_ps_maps_element_tbl varchar_type_tbl;
5029       l_ui_ps_maps_tgt_pg_ui_def_tbl cz_pb_mgr.t_ref;
5030       rec_count NUMBER := 0;
5031    BEGIN
5032       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
5033       THEN
5034          cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.DELETE;
5035          cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref.DELETE;
5036          cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref.DELETE;
5037          cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
5038          cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
5039          cz_pb_mgr.g_ui_ps_maps_expl_id_tbl.DELETE;
5040          cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl.DELETE;
5041          cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl.DELETE;
5042          cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
5043 
5044          FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
5045          LOOP
5046             l_ui_ps_maps_ui_def_tbl.DELETE;
5047             l_ui_ps_maps_ctrl_tmp_tbl.DELETE;
5048             l_ui_ps_maps_page_id_tbl.DELETE;
5049             l_ui_ps_maps_element_tbl.DELETE;
5050             l_ui_ps_maps_expl_id_tbl.DELETE;
5051             l_ui_ps_maps_ctrl_temp_ui_tbl.DELETE;
5052             l_ui_ps_maps_elem_sig_tbl.DELETE;
5053             l_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
5054 
5055             BEGIN
5056                SELECT ui_def_id, ctrl_template_id, page_id, element_id
5057                      ,model_ref_expl_id, ctrl_template_ui_def_id, element_signature_id, target_page_ui_def_id
5058                BULK COLLECT INTO l_ui_ps_maps_ui_def_tbl, l_ui_ps_maps_ctrl_tmp_tbl, l_ui_ps_maps_page_id_tbl, l_ui_ps_maps_element_tbl
5059                      ,l_ui_ps_maps_expl_id_tbl, l_ui_ps_maps_ctrl_temp_ui_tbl, l_ui_ps_maps_elem_sig_tbl, l_ui_ps_maps_tgt_pg_ui_def_tbl
5060                  FROM cz_ui_page_elements
5061                 WHERE cz_ui_page_elements.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef)
5062                   AND cz_ui_page_elements.deleted_flag = record_not_deleted;
5063             EXCEPTION
5064                WHEN NO_DATA_FOUND
5065                THEN
5066                   NULL;
5067             END;
5068 
5069             IF (l_ui_ps_maps_ui_def_tbl.COUNT > 0)
5070             THEN
5071                rec_count := cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT;
5072 
5073                FOR uimap IN l_ui_ps_maps_ui_def_tbl.FIRST .. l_ui_ps_maps_ui_def_tbl.LAST
5074                LOOP
5075                   rec_count := rec_count + 1;
5076                   cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
5077                  -- cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
5078                   cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref(rec_count) := l_ui_ps_maps_ctrl_tmp_tbl(uimap);
5079                   cz_pb_mgr.g_ui_ps_maps_page_id_tbl(rec_count) := l_ui_ps_maps_page_id_tbl(uimap);
5080                   cz_pb_mgr.g_ui_ps_maps_element_tbl(rec_count) := l_ui_ps_maps_element_tbl(uimap);
5081                   cz_pb_mgr.g_ui_ps_maps_expl_id_tbl(rec_count) := l_ui_ps_maps_expl_id_tbl(uimap);
5082                   cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl(rec_count) := l_ui_ps_maps_ctrl_temp_ui_tbl(uimap);
5083                   cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl(rec_count) := l_ui_ps_maps_elem_sig_tbl(uimap);
5084                   cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl(rec_count) := l_ui_ps_maps_tgt_pg_ui_def_tbl(uimap);
5085                END LOOP;
5086             END IF;
5087          END LOOP;
5088       END IF;
5089    EXCEPTION
5090       WHEN OTHERS
5091       THEN
5092          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_ps_maps', 'SQLERRM', SQLERRM);
5093          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPSMAPS', SQLCODE);
5094          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5095          RAISE;
5096    END bulk_collect_ui_ps_maps;
5097 
5098 ------------------------------------------------------------------------
5099 ----insert into ui_ps_maps
5100    PROCEDURE insert_ui_ps_maps
5101    IS
5102       rec_count NUMBER := 0;
5103       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5104    BEGIN
5105       IF (cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT > 0)
5106       THEN
5107          ----resolve  ui_def_id
5108          resolve_ids(cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref,cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui ps maps');
5109 
5110          IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5111            resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl, cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref, 'ctrl tmp ui def ids of ui ps maps');
5112            resolve_ids(cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'ctrl template id of ui ps maps', ENTITY_TYPE_UCT);
5113          END IF;
5114 
5115          resolve_ids(cz_pb_mgr.g_ui_ps_maps_expl_id_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of page elements');
5116          resolve_ids(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'element_signature id of page elements', ENTITY_TYPE_SIGNATURE);
5117 
5118          plsql_table_list.DELETE;
5119          rec_count := 1;
5120          plsql_table_list(rec_count).col_name := 'ui_def_id';
5121          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref';
5122          rec_count := rec_count + 1;
5123          plsql_table_list(rec_count).col_name := 'ctrl_template_id';
5124          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref';
5125          rec_count := rec_count + 1;
5126          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
5127          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_expl_id_tbl';
5128          rec_count := rec_count + 1;
5129          plsql_table_list(rec_count).col_name := 'ctrl_template_ui_def_id';
5130          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl';
5131          rec_count := rec_count + 1;
5132          plsql_table_list(rec_count).col_name := 'element_signature_id';
5133          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl';
5134          rec_count := rec_count + 1;
5135          plsql_table_list(rec_count).col_name := 'TARGET_PAGE_UI_DEF_ID';
5136          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl';
5137          -- should call resolve_ids instead
5138          resolve_ref_ids_not_found(cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref
5139                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
5140                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
5141                                   ,cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl
5142                                   ,'cz_ui_page_elements.target_page_ui_def_id'
5143                                   ,cz_pb_mgr.v_status_code
5144                                   );
5145          insert_into_table('cz_ui_page_elements'
5146                           ,'ui_def_id'
5147                           ,'page_id'
5148                           ,'element_id'
5149                           ,cz_pb_mgr.v_db_link
5150                           ,plsql_table_list
5151                           ,'cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref'
5152                           ,'cz_pb_mgr.g_ui_ps_maps_page_id_tbl'
5153                           ,'cz_pb_mgr.g_ui_ps_maps_element_tbl'
5154                           ,cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref
5155                           ,cz_pb_mgr.g_ui_ps_maps_page_id_tbl
5156                           ,cz_pb_mgr.g_ui_ps_maps_element_tbl
5157                           );
5158       END IF;
5159    EXCEPTION
5160       WHEN OTHERS
5161       THEN
5162          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_elements', 'SQLERRM', SQLERRM);
5163          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPSMAPS', SQLCODE);
5164          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5165          RAISE;
5166    END insert_ui_ps_maps;
5167 ------------------------------------------------------------
5168    PROCEDURE insert_template_elements(
5169       p_template_id IN NUMBER
5170      ,p_ui_def_id IN NUMBER
5171      ,p_element_type IN NUMBER
5172      ,p_element_id IN NUMBER
5173      ,p_persistent_element_id IN NUMBER
5174      ,p_link_name IN VARCHAR2
5175    )
5176    IS
5177       l_str VARCHAR2(2000);
5178 
5179    --Bug 5525718 - In case of migration the ui_def_id should be 0
5180 
5181      l_ui_def_id              NUMBER := 1;
5182      l_persistent_element_id  CZ_UI_TEMPLATE_ELEMENTS.persistent_element_id%TYPE := p_persistent_element_id;
5183 
5184    BEGIN
5185 
5186       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
5187        l_ui_def_id := 0;
5188        l_persistent_element_id := p_element_id;
5189       END IF;
5190 
5191       l_str :=
5192             'insert into cz_ui_template_elements'
5193          || p_link_name
5194          || '  (TEMPLATE_ID,UI_DEF_ID,'
5195          || ' '
5196          || 'ELEMENT_TYPE,ELEMENT_ID,PERSISTENT_ELEMENT_ID,DELETED_FLAG,seeded_flag)'
5197          || ' '
5198          || 'VALUES (:1,:2,:3,:4,:5,''0'',''0'') ';
5199 
5200       EXECUTE IMMEDIATE l_str
5201                   USING p_template_id,l_ui_def_id, p_element_type, p_element_id, l_persistent_element_id;
5202    EXCEPTION
5203       WHEN OTHERS
5204       THEN
5205          RAISE;
5206    END insert_template_elements;
5207 
5208 -----------------------------------------
5209    PROCEDURE update_template_elements(p_template_id IN NUMBER, p_ui_def_id IN NUMBER, p_link_name IN VARCHAR2)
5210    IS
5211       l_str VARCHAR2(2000);
5212    BEGIN
5213 
5214 -------bug#13517253 physical delete from cz_localized_texts before deleteing the cz_ui_template_elements.
5215 ---- Else this leads to the unwanted data in this table for every template publication.
5216 -------mpothubo.
5217 
5218 
5219     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5220          log_timing_message('Start of update of cz_localized_texts');
5221     END IF;
5222 
5223      l_str :=
5224            'DELETE FROM  cz_localized_texts'
5225            || p_link_name
5226            || ' WHERE ui_def_id = :1 '
5227            || ' AND NVL(seeded_flag, ''0'') = ''0'''
5228            || ' AND deleted_flag = ''0'''
5229            || ' AND intl_text_id'
5230            || ' IN'
5231            || ' (SELECT element_id FROM cz_ui_template_elements'
5232            || p_link_name
5233            || ' WHERE element_type = ''8'''
5234            || ' AND ui_def_id= :2'
5235            || ' AND template_id = :3'
5236            || ' AND deleted_flag = ''0'''
5237            || ' AND NVL (seeded_flag,''0'') = ''0'')';
5238 
5239 
5240       EXECUTE IMMEDIATE l_str
5241                    USING p_ui_def_id, p_ui_def_id, p_template_id ;
5242 
5243     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5244 	     log_timing_message('No. of Records updated in cz_localized_texts (cz_ui_template_elements.element_id) : ' || sql%rowcount );
5245          log_timing_message('End of update of cz_localized_texts ');
5246     END IF;
5247 
5248     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5249          log_timing_message('Start of delete of cz_ui_template_elements ');
5250     END IF;
5251 
5252       l_str :=
5253            'DELETE FROM cz_ui_template_elements' || p_link_name || '  t' || ' ' || 'WHERE t.template_id =  :1' || ' ' || 'AND t.ui_def_id   = :2' ;
5254 
5255       EXECUTE IMMEDIATE l_str
5256                   USING p_template_id, p_ui_def_id;
5257 
5258 	IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5259 	     log_timing_message('No. of Records deleted in cz_ui_template_elements ' || sql%rowcount );
5260          log_timing_message('End of delete of cz_ui_template_elements ');
5261     END IF;
5262 
5263    EXCEPTION
5264       WHEN OTHERS
5265       THEN
5266          RAISE;
5267    END update_template_elements;
5268 
5269 -------------------------------------------
5270    PROCEDURE create_uit_publication(
5271       p_template_id IN NUMBER
5272      ,p_old_templ_id IN NUMBER
5273      ,p_source_tgt_flag IN VARCHAR2
5274      ,p_link_name IN VARCHAR2
5275      ,p_server_id IN NUMBER
5276      ,p_src_id IN NUMBER
5277      ,p_tgt_id IN NUMBER
5278    )
5279    IS
5280       l_inst_str VARCHAR2(2000);
5281       l_uit_date DATE;
5282       l_applicable_from DATE := cz_utils.epoch_begin;
5283       l_applicable_until DATE := cz_utils.epoch_end;
5284       l_status NUMBER := 0;
5285       l_ref_cursor ref_cursor;
5286       l_src_pb_id cz_model_publications.publication_id%TYPE;
5287       l_tgt_pb_id cz_model_publications.publication_id%TYPE;
5288       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
5289    BEGIN
5290       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
5291       THEN
5292          l_inst_str :=
5293                'UPDATE cz_model_publications'
5294             || p_link_name
5295             || ' t'
5296             || ' '
5297             || 'SET   t.last_update_date = sysdate'
5298             || ' '
5299             || 'WHERE t.object_id = :1'
5300             || ' '
5301             || 'AND  t.object_type = ''UIT'''
5302             || ' '
5303             || 'AND  t.server_id = :2'
5304             || ' '
5305             || 'AND  t.source_target_flag = :3'
5306             || ' '
5307             || 'AND  t.deleted_flag = ''0'' ';
5308 
5309          EXECUTE IMMEDIATE l_inst_str
5310                      USING p_template_id, cz_pb_mgr.v_server_id, p_source_tgt_flag;
5311 
5312          IF (SQL%ROWCOUNT = 0)
5313          THEN
5314             IF (p_source_tgt_flag = g_source_flag)
5315             THEN
5316                l_src_pb_id := p_src_id;
5317                l_tgt_pb_id := p_tgt_id;
5318             ELSIF(p_source_tgt_flag = g_target_flag)
5319             THEN
5320                l_src_pb_id := p_tgt_id;
5321                l_tgt_pb_id := p_src_id;
5322             END IF;
5323 
5324             l_inst_str :=
5325                   'INSERT INTO cz_model_publications'
5326                || p_link_name
5327                || ' '
5328                || '(PUBLICATION_ID,'
5329                || ' '
5330                || 'MODEL_ID,'
5331                || ' '
5332                || 'OBJECT_ID,'
5333                || ' '
5334                || 'OBJECT_TYPE,'
5335                || ' '
5336                || 'SERVER_ID,'
5337                || ' '
5338                || 'PUBLICATION_MODE,'
5339                || ' '
5340                || 'UI_DEF_ID,'
5341                || ' '
5342                || 'UI_STYLE,'
5343                || ' '
5344                || 'APPLICABLE_FROM,'
5345                || ' '
5346                || 'APPLICABLE_UNTIL,'
5347                || ' '
5348                || 'EXPORT_STATUS,'
5349                || ' '
5350                || 'DELETED_FLAG,'
5351                || ' '
5352                || 'MODEL_LAST_STRUCT_UPDATE,'
5353                || ' '
5354                || 'MODEL_LAST_LOGIC_UPDATE,'
5355                || ' '
5356                || 'MODEL_LAST_UPDATED,'
5357                || ' '
5358                || 'SOURCE_TARGET_FLAG,'
5359                || ' '
5360                || 'SOURCE_MODEL_ID,'
5361                || ' '
5362                || 'disabled_flag,'
5363                || ' '
5364                || 'remote_publication_id )'
5365                || ' '
5366                || 'SELECT :1,:2,:3,''UIT'',:4,'''
5367                || l_pub_mode
5368                || ''',1,7,:5,:6,''OK'',''0'',sysdate,sysdate,sysdate,:7,:8, 0,:9 FROM  dual';
5369 
5370             EXECUTE IMMEDIATE l_inst_str
5371                         USING l_src_pb_id
5372                              ,p_template_id
5373                              ,p_template_id
5374                              ,p_server_id
5375                              ,l_applicable_from
5376                              ,l_applicable_until
5377                              ,p_source_tgt_flag
5378                              ,p_old_templ_id
5379                              ,l_tgt_pb_id;
5380          END IF;
5381       END IF;
5382 
5383       COMMIT;
5384    EXCEPTION
5385       WHEN OTHERS
5386       THEN
5387          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5388          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
5389          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
5390          RAISE;
5391    END create_uit_publication;
5392 
5393 --------------------------------
5394    PROCEDURE insert_template_elements
5395    IS
5396       l_src_pb_id NUMBER;
5397       l_tgt_pb_id NUMBER;
5398       rec_count NUMBER := 0;
5399 
5400       l_upd_template_ids_tbl t_ref;
5401       l_str                  VARCHAR2(4000);
5402       l_ui_def_id            NUMBER;
5403 
5404    BEGIN
5405       IF ((cz_pb_mgr.l_template_id_ref.COUNT > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
5406       THEN
5407 
5408          IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model)
5409          THEN
5410            l_ui_def_id := 0;
5411          ELSE
5412            l_ui_def_id := 1;
5413          END IF;
5414 
5415          l_str := 'update cz_ui_templates'|| CZ_PB_MGR.v_db_link || '  set template_rev_nbr=template_rev_nbr+1 '
5416                    || ' where template_id=:1 and ui_def_id=:2';
5417 
5418          FOR i IN l_template_id_ref.FIRST..l_template_id_ref.LAST
5419          LOOP
5420            IF NOT(l_upd_template_ids_tbl.EXISTS(l_template_id_ref(i))) THEN
5421              update_template_elements(l_template_id_ref(i), l_ui_def_id, CZ_PB_MGR.v_db_link);
5422 
5423              IF l_ui_def_id = 0 THEN -- bump up template_rev_nvr only in case of Migration --
5424                 EXECUTE IMMEDIATE l_str
5425                   USING CZ_PB_MGR.l_template_id_ref(i), l_ui_def_id;
5426              END IF;
5427 
5428              l_upd_template_ids_tbl(l_template_id_ref(i)) := i;
5429            END IF;
5430          END LOOP;
5431 
5432          --Removing a call to resolve_ids here. The problem with this call is that l_element_id_ref table contains elements of all
5433          --types (rules, texts and actions), while the resolution was made against g_ui_actions_id_idx_ref, which contains only
5434          --actions. So, there was a possibility that some other element type id will get overriden. The resolution is moved to the
5435          --collect_global_actions procedure.
5436          FOR i IN CZ_PB_MGR.l_template_id_ref.FIRST .. CZ_PB_MGR.l_template_id_ref.LAST
5437          LOOP
5438             -----insert into cz_ui_template_elements
5439             insert_template_elements(CZ_PB_MGR.l_template_id_ref(i)
5440                                     ,l_ui_def_id
5441                                     ,CZ_PB_MGR.l_element_type_ref(i)
5442                                     ,CZ_PB_MGR.l_element_id_ref(i)
5443                                     ,CZ_PB_MGR.l_pers_elem_ref(i)
5444                                     ,CZ_PB_MGR.v_db_link
5445                                     );
5446          END LOOP;
5447 
5448       END IF;
5449 
5450       COMMIT;
5451 
5452       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model AND cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
5453       THEN
5454          -- array already has the new ids
5455          -- resolve_ids(cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve global templates');
5456 
5457          FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
5458          LOOP
5459             IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
5460             THEN
5461                SELECT cz_model_publications_s.NEXTVAL
5462                  INTO l_src_pb_id
5463                  FROM DUAL;
5464 
5465                l_tgt_pb_id :=
5466                   cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
5467                                              , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
5468                                              ,cz_pb_mgr.v_oraclesequenceincr
5469                                              );
5470 
5471           --     IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
5472                   create_uit_publication(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5473                                         ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5474                                         ,g_source_flag
5475                                         ,' '
5476                                         ,cz_pb_mgr.v_server_id
5477                                         ,l_src_pb_id
5478                                         ,l_tgt_pb_id
5479                                         );
5480                   create_uit_publication(cz_pb_mgr.g_ui_templates_new_temp_id_ref(i)
5481                                         ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5482                                         ,g_target_flag
5483                                         ,cz_pb_mgr.v_db_link
5484                                         ,cz_pb_mgr.v_server_id
5485                                         ,l_src_pb_id
5486                                         ,l_tgt_pb_id
5487                                         );
5488           --     END IF;
5489             END IF;
5490          END LOOP;
5491       END IF;
5492 
5493       COMMIT;
5494    EXCEPTION
5495       WHEN OTHERS
5496       THEN
5497         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5498         cz_pb_mgr.v_err_message  := SQLERRM;
5499         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERT_TEMPLATE_ELEMENTS', SQLCODE);
5500         cz_pb_mgr.global_export_retcode := 2;
5501         rollback_data(cz_pb_mgr.v_db_link);
5502         RAISE;
5503    END insert_template_elements;
5504 
5505 ------------------------------------------------------------
5506 ----insert into cz_ui_templates
5507    PROCEDURE insert_ui_templates
5508    IS
5509       rec_count NUMBER := 0;
5510       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5511       failed_to_lock_template EXCEPTION;
5512       failed_to_unlock_template EXCEPTION;
5513       l_locked_templates cz_security_pvt.number_type_tbl;
5514       l_templates_to_lock cz_security_pvt.number_type_tbl;
5515       l_return_status VARCHAR2(1);
5516       l_msg_count NUMBER;
5517       l_msg_data VARCHAR2(2000);
5518       l_msg_index NUMBER;
5519    BEGIN
5520       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT = 0) THEN RETURN; END IF;
5521 
5522          ----lock content templates to be moved
5523          FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
5524          LOOP
5525             l_templates_to_lock(l_templates_to_lock.COUNT + 1) := cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
5526          END LOOP;
5527 
5528   -- bug #10417318: Calling the locking procedure as per the multiserver flag.
5529   -- If this flag is true then we need to extend locking for common entity
5530   --If the there is no multi-server flag then will continue with regular locking.
5531          IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5532             cz_security_pvt.lock_pub_template(1.0
5533                                       ,l_templates_to_lock
5534                                       ,fnd_api.g_true
5535                                       ,fnd_api.g_true
5536 				      ,cz_pb_mgr.v_server_id
5537 				      ,cz_pb_mgr.v_publication_id
5538                                       ,l_locked_templates
5539                                       ,l_return_status
5540                                       ,l_msg_count
5541                                       ,l_msg_data
5542 				      );
5543           ELSE
5544             cz_security_pvt.lock_template(1.0
5545                                       ,l_templates_to_lock
5546                                       ,fnd_api.g_true
5547                                       ,fnd_api.g_true
5548                                       ,l_locked_templates
5549                                       ,l_return_status
5550                                       ,l_msg_count
5551                                       ,l_msg_data
5552                                       );
5553         END IF;
5554 
5555          IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
5556          THEN
5557             RAISE failed_to_lock_template;
5558          END IF;
5559 
5560          -----resplve templates
5561          --bug 5191745
5562          --before the fix, even for model migration, the ui_def_ids were being populated
5563          --with a value of '1' for CZ_UI_TEMPLATES record.
5564          --The ideal fix would have been to call 'resolve_tmpl_ui_defs' on its own, because
5565          --'resolve_tmpl_ui_defs' already checks for model migration condition
5566          --and assigns the ui_def_id correctly.
5567          --But there is a possibility that it would introduce regression in publishing
5568          --and taking the safer route here.
5569          IF (cz_pb_mgr.v_session_parameter = pub_model)
5570          THEN
5571             resolve_ids(cz_pb_mgr.g_ui_templates_ui_def_new_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'resolving ui defs of templates');
5572          ELSE
5573             resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_templates_ui_def_new_ref, cz_pb_mgr.g_ui_templates_old_temp_id_ref, 'resolving ui defs of templates');
5574          END IF;
5575          -----resolve button bar templates
5576          resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_templates_but_uidef_id, cz_pb_mgr.g_ui_templates_button_tbl, 'button templates ui def');
5577          resolve_ids(cz_pb_mgr.g_ui_templates_button_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'buton templates of ui templates', ENTITY_TYPE_UCT);
5578 
5579          ----copy xml doc
5580          -- IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0) THEN
5581             FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
5582             LOOP
5583                IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
5584                THEN
5585                   insert_into_repository(cz_pb_mgr.g_ui_templates_jrad_old_ref(doc), cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.v_db_link);
5586                END IF;
5587             END LOOP;
5588          -- END IF;
5589 
5590          -- main msg and title intl text records handled in insert_jrad_ui_intl_texts
5591          resolve_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
5592          resolve_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'title ids of cz ui templates');
5593 
5594          plsql_table_list.DELETE;
5595          rec_count := 1;
5596          plsql_table_list(rec_count).col_name := 'template_id';
5597          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
5598 
5599          rec_count := rec_count + 1;
5600          plsql_table_list(rec_count).col_name := 'main_message_id';
5601          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_msg_id_ref';
5602          rec_count := rec_count + 1;
5603          plsql_table_list(rec_count).col_name := 'title_id';
5604          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_title_ref';
5605          rec_count := rec_count + 1;
5606          plsql_table_list(rec_count).col_name := 'ui_def_id';
5607          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_ui_def_new_ref';
5608          rec_count := rec_count + 1;
5609          plsql_table_list(rec_count).col_name := 'jrad_doc';
5610          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_jrad_new_ref';
5611          rec_count := rec_count + 1;
5612          plsql_table_list(rec_count).col_name := 'button_bar_template_id';
5613          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_button_tbl';
5614          rec_count := rec_count + 1;
5615          plsql_table_list(rec_count).col_name := 'button_bar_templ_uidef_id';
5616          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_but_uidef_id';
5617 
5618          insert_into_table('CZ_UI_TEMPLATES'
5619                              ,'template_id'
5620                              ,'ui_def_id'
5621                              ,cz_pb_mgr.v_db_link
5622                              ,plsql_table_list
5623                              ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
5624                              ,'cz_pb_mgr.g_ui_templates_ui_def_old_ref'
5625                              ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
5626                              ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
5627                              );
5628          IF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
5629             refresh_global_templates(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
5630          END IF;
5631 
5632          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
5633             ----------begin insert into cz_rp_entries----------------
5634             plsql_table_list.DELETE;
5635             rec_count := 1;
5636             plsql_table_list(rec_count).col_name := 'object_id';
5637             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
5638             rec_count := rec_count + 1;
5639             plsql_table_list(rec_count).col_name := 'object_type';
5640             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_obj_type';
5641             rec_count := rec_count + 1;
5642             plsql_table_list(rec_count).col_name := 'enclosing_folder';
5643             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
5644             insert_into_rp_entries('cz_rp_entries'
5645                                   ,'object_id'
5646                                   ,'object_type'
5647                                   ,cz_pb_mgr.v_db_link
5648                                   ,plsql_table_list
5649                                   ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
5650                                   ,'cz_pb_mgr.g_ui_templates_obj_type'
5651                                   ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
5652                                   ,cz_pb_mgr.g_ui_templates_obj_type
5653                                   );
5654          ----------end insert into cz_rp_entries----------------
5655          END IF;
5656       -- END IF;
5657 
5658       -- bug #10417318
5659       IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5660          cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5661       ELSE
5662          cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5663       END IF;
5664 
5665       IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
5666       THEN
5667          RAISE failed_to_unlock_template;
5668       END IF;
5669    EXCEPTION
5670       WHEN failed_to_lock_template
5671       THEN
5672          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5673          l_msg_index := 1;
5674 
5675          WHILE l_msg_count > 0
5676          LOOP
5677             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
5678             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
5679             l_msg_index := l_msg_index + 1;
5680             l_msg_count := l_msg_count - 1;
5681          END LOOP;
5682 
5683          -- bug #10417318
5684          IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5685             cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5686          ELSE
5687             cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5688          END IF;
5689 
5690          raise_application_error('-20020', 'FAILED_TO_LOCK_TEMPLATE');
5691       WHEN failed_to_unlock_template
5692       THEN
5693          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5694          l_msg_index := 1;
5695 
5696          WHILE l_msg_count > 0
5697          LOOP
5698             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
5699             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
5700             l_msg_index := l_msg_index + 1;
5701             l_msg_count := l_msg_count - 1;
5702          END LOOP;
5703 
5704          raise_application_error('-20030', 'FAILED_TO_UNLOCK_TEMPLATE');
5705       WHEN OTHERS
5706       THEN
5707          -- bug #10417318
5708          IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5709            cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5710          ELSE
5711             cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5712          END IF;
5713 
5714          RAISE;
5715    END insert_ui_templates;
5716 
5717 --------------------------------------------------------------
5718 ----bulk collect from cz_ui_cont_type_templs
5719    PROCEDURE bulk_collect_cont_type_templs(p_cz_ui_defs_old_oa_ref cz_pb_mgr.t_ref)
5720    IS
5721       l_cnt_typ_tmpls_tmpid_tbl cz_pb_mgr.t_ref;
5722       l_cnt_typ_tmpls_uidef_tbl cz_pb_mgr.t_ref;
5723       l_cnt_typ_tmpls_tgtuidef_tbl cz_pb_mgr.t_ref;
5724       l_cnt_typ_tmpls_cont_tbl cz_pb_mgr.t_ref;
5725       rec_count NUMBER := 0;
5726    BEGIN
5727       IF (p_cz_ui_defs_old_oa_ref.COUNT > 0)
5728       THEN
5729          cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref.DELETE;
5730          cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.DELETE;
5731          cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.DELETE;
5732 
5733          FOR uidef IN p_cz_ui_defs_old_oa_ref.FIRST .. p_cz_ui_defs_old_oa_ref.LAST
5734          LOOP
5735             l_cnt_typ_tmpls_tmpid_tbl.DELETE;
5736             l_cnt_typ_tmpls_uidef_tbl.DELETE;
5737             l_cnt_typ_tmpls_cont_tbl.DELETE;
5738             l_cnt_typ_tmpls_tgtuidef_tbl.DELETE;
5739 
5740             IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
5741             THEN
5742                SELECT ui_def_id, template_id, template_ui_def_id, content_type
5743                BULK COLLECT INTO l_cnt_typ_tmpls_uidef_tbl, l_cnt_typ_tmpls_tmpid_tbl, l_cnt_typ_tmpls_tgtuidef_tbl, l_cnt_typ_tmpls_cont_tbl
5744                  FROM cz_ui_cont_type_templs
5745                 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted;
5746             ELSE
5747                SELECT ui_def_id, template_id, template_ui_def_id, content_type
5748                BULK COLLECT INTO l_cnt_typ_tmpls_uidef_tbl, l_cnt_typ_tmpls_tmpid_tbl, l_cnt_typ_tmpls_tgtuidef_tbl, l_cnt_typ_tmpls_cont_tbl
5749                  FROM cz_ui_cont_type_templs
5750                 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef)
5751                   AND cz_ui_cont_type_templs.seeded_flag <> seed_data
5752                   AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted
5753                   AND cz_ui_cont_type_templs.master_template_flag <> '1';
5754             END IF;
5755 
5756             IF (l_cnt_typ_tmpls_uidef_tbl.COUNT > 0)
5757             THEN
5758                rec_count := cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.COUNT;
5759 
5760                FOR uitmp IN l_cnt_typ_tmpls_uidef_tbl.FIRST .. l_cnt_typ_tmpls_uidef_tbl.LAST
5761                LOOP
5762                   rec_count := rec_count + 1;
5763                   cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref(rec_count) := l_cnt_typ_tmpls_tmpid_tbl(uitmp);
5764                   cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5765                  -- cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5766                   cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref(rec_count) := l_cnt_typ_tmpls_tgtuidef_tbl(uitmp);
5767                   cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(rec_count) := l_cnt_typ_tmpls_cont_tbl(uitmp);
5768                END LOOP;
5769             END IF;
5770          END LOOP;
5771       END IF;
5772    EXCEPTION
5773       WHEN NO_DATA_FOUND
5774       THEN
5775          NULL;
5776       WHEN OTHERS
5777       THEN
5778          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_cont_templates', 'SQLERRM', SQLERRM);
5779          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UICONTTEMPLATES', SQLCODE);
5780          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5781          RAISE;
5782    END bulk_collect_cont_type_templs;
5783 
5784 --------------------------------------------------------------------------
5785 ----bulk collect from cz_ui_cont_type_templs
5786    PROCEDURE bulk_collect_ui_actions(p_old_ui_def_tbl IN cz_pb_mgr.t_ref)
5787    IS
5788       l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
5789       l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
5790       l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
5791       l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
5792       l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
5793       l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
5794       l_prcpg_templ_tbl cz_pb_mgr.t_ref;
5795       l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
5796       l_prc_caption_tbl cz_pb_mgr.t_ref;
5797       l_pg_title_tbl    cz_pb_mgr.t_ref;
5798       l_main_msg_tbl    cz_pb_mgr.t_ref;
5799       rec_count NUMBER;
5800    BEGIN
5801       IF (p_old_ui_def_tbl.COUNT > 0) THEN
5802          rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
5803 
5804          FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5805          LOOP
5806             l_ui_actns_ui_act_id_tbl.DELETE;
5807             l_ui_actns_ui_uidef_tbl.DELETE;
5808             l_ui_actns_ui_tgtui_tbl.DELETE;
5809             l_ui_actns_tgtexpl_tbl.DELETE;
5810             l_ui_actns_ctx_comp_tbl.DELETE;
5811             l_ui_actns_ren_cond_tbl.DELETE;
5812             l_prcpg_templ_tbl.DELETE;
5813 	    l_prcpg_tmpui_tbl.DELETE;
5814 	    l_prc_caption_tbl.DELETE;
5815 	    l_pg_title_tbl.DELETE;
5816             l_main_msg_tbl.DELETE;
5817 
5818             SELECT ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
5819                   ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
5820                   ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
5821             BULK COLLECT INTO l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
5822                   ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
5823                   ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
5824               FROM cz_ui_actions
5825              WHERE cz_ui_actions.ui_def_id = p_old_ui_def_tbl(uidef)
5826                AND cz_ui_actions.deleted_flag = record_not_deleted
5827                AND cz_ui_actions.seeded_flag <> seed_data;
5828 
5829 -- Processing page ER#9656558
5830 -- insert processing page related texts here
5831 		insert_intl_texts(l_prc_caption_tbl, 'processing page caption intl texts');
5832 		insert_intl_texts(l_pg_title_tbl, 'processing page title intl texts');
5833 		insert_intl_texts(l_main_msg_tbl, 'processing page main message intl texts');
5834 
5835             IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
5836                FOR uitmp IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
5837                LOOP
5838                   rec_count := rec_count + 1;
5839                   cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5840                   cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5841                   cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(uitmp);
5842                   cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(uitmp);
5843                   cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(uitmp);
5844                   cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(uitmp);
5845                   cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(uitmp);
5846                   cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(uitmp);
5847                   cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(uitmp);
5848                   cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(uitmp);
5849                   cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(uitmp);
5850                   cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(uitmp);
5851                END LOOP;
5852             END IF;
5853          END LOOP;
5854       END IF;
5855    EXCEPTION
5856       WHEN NO_DATA_FOUND
5857       THEN
5858          NULL;
5859       WHEN OTHERS
5860       THEN
5861          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
5862          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
5863          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5864          RAISE;
5865    END bulk_collect_ui_actions;
5866 
5867 ----------------------------------------------------------
5868 ----bulk collect from cz_ui_cont_type_templs
5869    PROCEDURE bulk_collect_ui_images(p_old_ui_def_tbl cz_pb_mgr.t_ref)
5870    IS
5871       l_ui_images_ui_tbl cz_pb_mgr.t_ref;
5872       l_ui_images_usg_tbl cz_pb_mgr.t_ref;
5873       l_ui_images_enty_tbl cz_pb_mgr.t_ref;
5874       rec_count NUMBER := 0;
5875    BEGIN
5876       IF (p_old_ui_def_tbl.COUNT > 0)
5877       THEN
5878          cz_pb_mgr.v_ui_images_ui_ref.DELETE;
5879          cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
5880          cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
5881          cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
5882 
5883          FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5884          LOOP
5885             l_ui_images_ui_tbl.DELETE;
5886 
5887             SELECT ui_def_id, image_usage_code, entity_code
5888             BULK COLLECT INTO l_ui_images_ui_tbl, l_ui_images_usg_tbl, l_ui_images_enty_tbl
5889               FROM cz_ui_images
5890              WHERE cz_ui_images.ui_def_id = p_old_ui_def_tbl(uidef)
5891                AND cz_ui_images.deleted_flag = record_not_deleted
5892                AND cz_ui_images.seeded_flag <> seed_data;
5893 
5894             IF (l_ui_images_ui_tbl.COUNT > 0)
5895             THEN
5896                rec_count := cz_pb_mgr.v_ui_images_ui_tbl.COUNT;
5897 
5898                FOR uitmp IN l_ui_images_ui_tbl.FIRST .. l_ui_images_ui_tbl.LAST
5899                LOOP
5900                   rec_count := rec_count + 1;
5901                  -- cz_pb_mgr.v_ui_images_ui_ref(rec_count) := l_ui_images_ui_tbl(uitmp);
5902                   cz_pb_mgr.v_ui_images_ui_tbl(rec_count) := l_ui_images_ui_tbl(uitmp);
5903                   cz_pb_mgr.v_ui_images_usg_tbl(rec_count) := l_ui_images_usg_tbl(uitmp);
5904                   cz_pb_mgr.v_ui_images_enty_tbl(rec_count) := l_ui_images_enty_tbl(uitmp);
5905                END LOOP;
5906             END IF;
5907          END LOOP;
5908       END IF;
5909    EXCEPTION
5910       WHEN NO_DATA_FOUND
5911       THEN
5912          NULL;
5913       WHEN OTHERS
5914       THEN
5915          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_images', 'SQLERRM', SQLERRM);
5916          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIIMAGES', SQLCODE);
5917          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5918          RAISE;
5919    END bulk_collect_ui_images;
5920 
5921 ----------------------------------------------------------
5922 ----procedure that returns global templates
5923    PROCEDURE get_global_templates(
5924       p_templates_tbl IN cz_pb_mgr.t_ref
5925      ,x_global_templates_tbl OUT NOCOPY cz_pb_mgr.t_ref
5926      ,x_not_global_templ_tbl OUT NOCOPY cz_pb_mgr.t_ref
5927    )
5928    IS
5929       rec_count NUMBER := 0;
5930       l_tmp_id NUMBER := 0;
5931    BEGIN
5932       IF (p_templates_tbl.COUNT > 0)
5933       THEN
5934          FOR tempid IN p_templates_tbl.FIRST .. p_templates_tbl.LAST
5935          LOOP
5936             BEGIN
5937                SELECT 1
5938                  INTO l_tmp_id
5939                  FROM cz_ui_templates
5940                 WHERE cz_ui_templates.ui_def_id IS NULL AND cz_ui_templates.template_id = p_templates_tbl(tempid);
5941             EXCEPTION
5942                WHEN NO_DATA_FOUND
5943                THEN
5944                   l_tmp_id := 0;
5945             END;
5946 
5947             IF (l_tmp_id = 1)
5948             THEN
5949                rec_count := x_global_templates_tbl.COUNT + 1;
5950                x_global_templates_tbl(rec_count) := p_templates_tbl(tempid);
5951             ELSE
5952                rec_count := x_global_templates_tbl.COUNT + 1;
5953                x_not_global_templ_tbl(rec_count) := p_templates_tbl(tempid);
5954             END IF;
5955          END LOOP;
5956       END IF;
5957    EXCEPTION
5958       WHEN OTHERS
5959       THEN
5960          RAISE;
5961    END get_global_templates;
5962 
5963 -----------------------------------------------------------------------------
5964    PROCEDURE copy_jrad_docs
5965    IS
5966       l_new_document VARCHAR2(255);
5967    BEGIN
5968       pbdebug := 22035;
5969 
5970       IF (cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.COUNT > 0)
5971       THEN
5972          FOR doc IN cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.FIRST .. cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.LAST
5973          LOOP
5974             l_new_document :=
5975                REPLACE(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc)
5976                       ,TO_CHAR(cz_pb_mgr.g_pages_ui_def_old_ref(doc))
5977                       ,TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_pages_ui_def_old_ref(doc)))
5978                       );
5979             insert_into_repository(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc), l_new_document, cz_pb_mgr.v_db_link , 'UI_PAGE');
5980             cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc) := l_new_document;
5981          END LOOP;
5982       END IF;
5983    EXCEPTION
5984       WHEN OTHERS
5985       THEN
5986          RAISE;
5987    END copy_jrad_docs;
5988 
5989 ---------------------------------------------------------------------
5990    PROCEDURE copy_train_docs
5991    IS
5992       l_new_document VARCHAR2(255);
5993    BEGIN
5994       IF (cz_pb_mgr.g_page_sets_jrad_doc_ref.COUNT > 0)
5995       THEN
5996          FOR doc IN cz_pb_mgr.g_page_sets_jrad_doc_ref.FIRST .. cz_pb_mgr.g_page_sets_jrad_doc_ref.LAST
5997          LOOP
5998             l_new_document :=
5999                REPLACE(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc)
6000                       ,'ui' || TO_CHAR(cz_pb_mgr.g_page_sets_ui_old_ref(doc))
6001                       ,'ui' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_page_sets_ui_old_ref(doc)))
6002                       );
6003             insert_into_repository(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc), l_new_document, cz_pb_mgr.v_db_link, 'ui page set');
6004             cz_pb_mgr.g_page_sets_jrad_doc_ref(doc) := l_new_document;
6005          END LOOP;
6006       END IF;
6007    EXCEPTION
6008       WHEN OTHERS
6009       THEN
6010          RAISE;
6011    END copy_train_docs;
6012 
6013 ---------------------------------------------
6014    PROCEDURE insert_ref_templates
6015    IS
6016       l_template_id_tbl cz_pb_mgr.t_ref;
6017       l_ref_template_id_tbl cz_pb_mgr.t_ref;
6018       l_template_ui_tbl cz_pb_mgr.t_ref;
6019       l_ref_templ_ui_tbl cz_pb_mgr.t_ref;
6020       rec_count NUMBER := 0;
6021       plsql_table_list cz_pb_mgr.col_plsql_table_list;
6022    BEGIN
6023       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
6024       THEN
6025          cz_pb_mgr.g_template_id_ref.DELETE;
6026          cz_pb_mgr.g_ref_template_id_ref.DELETE;
6027          cz_pb_mgr.g_template_ui_ref.DELETE;
6028          cz_pb_mgr.g_ref_templ_ui_ref.DELETE;
6029          cz_pb_mgr.g_template_id_old_ref.DELETE;
6030          cz_pb_mgr.g_ref_template_id_old_ref.DELETE;
6031 
6032          FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
6033          LOOP
6034             l_template_id_tbl.DELETE;
6035             l_ref_template_id_tbl.DELETE;
6036             l_template_ui_tbl.DELETE;
6037             l_ref_templ_ui_tbl.DELETE;
6038 
6039             BEGIN
6040                SELECT template_id, ref_template_id, template_ui_def_id, ref_template_ui_def_id
6041                BULK COLLECT INTO l_template_id_tbl, l_ref_template_id_tbl, l_template_ui_tbl, l_ref_templ_ui_tbl
6042                  FROM cz_ui_ref_templates
6043                 WHERE cz_ui_ref_templates.template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
6044                       -- vsingava 29th Oct '10.  Bug10245926.
6045                       -- Consider only source templates.
6046                       AND cz_ui_ref_templates.template_ui_def_id = '0'
6047                       AND cz_ui_ref_templates.deleted_flag = '0';
6048             EXCEPTION
6049                WHEN NO_DATA_FOUND
6050                THEN
6051                   NULL;
6052             END;
6053 
6054             IF (l_template_id_tbl.COUNT > 0)
6055             THEN
6056                rec_count := cz_pb_mgr.g_TEMPLATE_ID_old_ref.COUNT;
6057 
6058                FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
6059                LOOP
6060                   rec_count := rec_count + 1;
6061                  -- cz_pb_mgr.g_template_id_ref(rec_count) := l_template_id_tbl(j);
6062                   cz_pb_mgr.g_ref_template_id_ref(rec_count) := l_ref_template_id_tbl(j);
6063                   cz_pb_mgr.g_ref_template_id_old_ref(rec_count) := l_ref_template_id_tbl(j);
6064                   cz_pb_mgr.g_template_ui_ref(rec_count) := l_template_ui_tbl(j);
6065                   cz_pb_mgr.g_ref_templ_ui_ref(rec_count) := l_ref_templ_ui_tbl(j);
6066                   cz_pb_mgr.g_template_id_old_ref(rec_count) := l_template_id_tbl(j);
6067                END LOOP;
6068             END IF;
6069          END LOOP;
6070 
6071          resolve_ids(cz_pb_mgr.g_TEMPLATE_ID_old_ref,cz_pb_mgr.g_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve template id of ref templates');
6072          resolve_ids(cz_pb_mgr.g_ref_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve ref template id of ref templates', ENTITY_TYPE_UCT);
6073          resolve_tmpl_ui_defs(cz_pb_mgr.g_template_ui_ref, cz_pb_mgr.g_template_id_old_ref, 'resolve template ui def of ref templates');
6074          resolve_tmpl_ui_defs(cz_pb_mgr.g_ref_templ_ui_ref, cz_pb_mgr.g_ref_template_id_old_ref, 'resolve ref template ui def of ref templates');
6075          plsql_table_list.DELETE;
6076          rec_count := 1;
6077          plsql_table_list(rec_count).col_name := 'template_id';
6078          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_ID_ref';
6079          rec_count := rec_count + 1;
6080          plsql_table_list(rec_count).col_name := 'ref_template_id';
6081          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref';
6082          rec_count := rec_count + 1;
6083          plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6084          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_UI_ref';
6085          rec_count := rec_count + 1;
6086          plsql_table_list(rec_count).col_name := 'ref_template_ui_def_id';
6087          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPL_UI_ref';
6088          insert_into_table('CZ_UI_REF_TEMPLATES'
6089                           ,'template_id'
6090                           ,'ref_template_id'
6091                           ,cz_pb_mgr.v_db_link
6092                           ,plsql_table_list
6093                           ,'cz_pb_mgr.g_TEMPLATE_ID_old_ref'
6094                           ,'cz_pb_mgr.g_REF_TEMPLATE_ID_old_ref'
6095                           ,cz_pb_mgr.g_template_id_old_ref
6096                           ,cz_pb_mgr.g_ref_template_id_old_ref
6097                           );
6098       END IF;
6099    EXCEPTION
6100       WHEN OTHERS
6101       THEN
6102          RAISE;
6103    END insert_ref_templates;
6104 
6105 ------------------------------------------------------
6106    PROCEDURE export_signatures(p_sig_array IN t_ref)
6107    IS
6108       plsql_table_list cz_pb_mgr.col_plsql_table_list;
6109       l_signature_new_tbl cz_pb_mgr.t_ref;
6110       l_signature_old_tbl cz_pb_mgr.t_ref;
6111       l_arg_sig_tbl cz_pb_mgr.t_ref;
6112       l_data_sig_tbl cz_pb_mgr.t_ref;
6113       l_sig_count NUMBER := 0;
6114       rec_count NUMBER := 0;
6115       l_arg_ind_tbl cz_pb_mgr.t_ref;
6116    BEGIN
6117       IF (p_sig_array.COUNT > 0)
6118       THEN
6119          cz_pb_mgr.v_sig_new_ref.DELETE;
6120          cz_pb_mgr.v_sig_old_ref.DELETE;
6121          cz_pb_mgr.v_sig_idx_ref.DELETE;
6122          cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
6123          cz_pb_mgr.v_arg_sig_tbl.DELETE;
6124          cz_pb_mgr.v_data_sig_tbl.DELETE;
6125 
6126          FOR sigid IN p_sig_array.FIRST .. p_sig_array.LAST
6127          LOOP
6128             l_signature_old_tbl.DELETE;
6129             l_signature_new_tbl.DELETE;
6130 
6131             BEGIN
6132                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_signatures_seq
6133                                                  , 'cz_signatures_s.nextval' || cz_pb_mgr.v_db_link
6134                                                  ,cz_pb_mgr.v_oraclesequenceincr
6135                                                  )
6136                      ,signature_id
6137                BULK COLLECT INTO l_signature_new_tbl
6138                      ,l_signature_old_tbl
6139                  FROM cz_signatures
6140                 WHERE cz_signatures.signature_id = p_sig_array(sigid)
6141                   AND cz_signatures.deleted_flag = record_not_deleted
6142                   AND cz_signatures.seeded_flag <> seed_data;
6143             EXCEPTION
6144                WHEN NO_DATA_FOUND
6145                THEN
6146                   NULL;
6147             END;
6148 
6149             IF (l_signature_old_tbl.COUNT > 0)
6150             THEN
6151                FOR i IN l_signature_old_tbl.FIRST .. l_signature_old_tbl.LAST
6152                LOOP
6153                   IF (NOT cz_pb_mgr.v_sig_idx_ref.EXISTS(l_signature_old_tbl(i)))
6154                   THEN
6155                      l_sig_count := cz_pb_mgr.v_sig_new_ref.COUNT + 1;
6156                      cz_pb_mgr.v_sig_new_ref(l_sig_count) := l_signature_new_tbl(i);
6157                      cz_pb_mgr.v_sig_old_ref(l_sig_count) := l_signature_old_tbl(i);
6158                      cz_pb_mgr.v_sig_idx_ref(l_signature_old_tbl(i)):=l_signature_new_tbl(i);
6159                   END IF;
6160                END LOOP;
6161             END IF;
6162          END LOOP;
6163 
6164          plsql_table_list.DELETE;
6165          rec_count := 1;
6166          plsql_table_list(rec_count).col_name := 'signature_id';
6167          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_sig_new_ref';
6168          insert_into_table('cz_signatures', 'signature_id', cz_pb_mgr.v_db_link, plsql_table_list, 'cz_pb_mgr.v_sig_old_ref', cz_pb_mgr.v_sig_old_ref);
6169       END IF;
6170 
6171       IF (cz_pb_mgr.v_sig_old_ref.COUNT > 0)
6172       THEN
6173          FOR j IN cz_pb_mgr.v_sig_old_ref.FIRST .. cz_pb_mgr.v_sig_old_ref.LAST
6174          LOOP
6175             SELECT argument_signature_id, datatype_signature_id, argument_index
6176             BULK COLLECT INTO l_arg_sig_tbl, l_data_sig_tbl, l_arg_ind_tbl
6177               FROM cz_signature_arguments
6178              WHERE cz_signature_arguments.argument_signature_id = cz_pb_mgr.v_sig_old_ref(j)
6179                AND cz_signature_arguments.deleted_flag = record_not_deleted
6180                AND cz_signature_arguments.seeded_flag <> seed_data;
6181 
6182             IF (l_arg_sig_tbl.COUNT > 0)
6183             THEN
6184                FOR k IN l_arg_sig_tbl.FIRST .. l_arg_sig_tbl.LAST
6185                LOOP
6186                   l_sig_count := cz_pb_mgr.v_arg_sig_old_tbl.COUNT + 1;
6187                   cz_pb_mgr.v_arg_sig_old_tbl(l_sig_count) := l_arg_sig_tbl(k);
6188                  -- cz_pb_mgr.v_arg_sig_tbl(l_sig_count) := l_arg_sig_tbl(k);
6189                   cz_pb_mgr.v_data_sig_tbl(l_sig_count) := l_data_sig_tbl(k);
6190                   cz_pb_mgr.v_arg_ind_old_tbl(l_sig_count) := l_arg_ind_tbl(k);
6191                END LOOP;
6192             END IF;
6193          END LOOP;
6194 
6195          ----resolve ids
6196          resolve_ids(cz_pb_mgr.v_arg_sig_old_tbl,cz_pb_mgr.v_arg_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'arg sig ids cz signature arguments');
6197          resolve_ids(cz_pb_mgr.v_data_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'data sig ids cz signature arguments', ENTITY_TYPE_SIGNATURE);
6198          plsql_table_list.DELETE;
6199          rec_count := 1;
6200          plsql_table_list(rec_count).col_name := 'argument_signature_id';
6201          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_sig_tbl';
6202          rec_count := rec_count + 1;
6203          plsql_table_list(rec_count).col_name := 'datatype_signature_id';
6204          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_data_sig_tbl';
6205          rec_count := rec_count + 1;
6206          plsql_table_list(rec_count).col_name := 'argument_index';
6207          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_ind_old_tbl';
6208          insert_into_table('cz_signature_arguments'
6209                           ,'argument_signature_id'
6210                           ,'argument_index'
6211                           ,cz_pb_mgr.v_db_link
6212                           ,plsql_table_list
6213                           ,'cz_pb_mgr.v_arg_sig_old_tbl'
6214                           ,'cz_pb_mgr.v_arg_ind_old_tbl'
6215                           ,cz_pb_mgr.v_arg_sig_old_tbl
6216                           ,cz_pb_mgr.v_arg_ind_old_tbl
6217                           );
6218          l_signature_new_tbl.DELETE;
6219          l_signature_old_tbl.DELETE;
6220          l_arg_sig_tbl.DELETE;
6221          l_data_sig_tbl.DELETE;
6222       END IF;
6223    EXCEPTION
6224       WHEN OTHERS
6225       THEN
6226          cz_pb_mgr.v_err_message := 'Insert into signature sets for: ' || SQLERRM;
6227          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SIGNATURESETS', SQLCODE);
6228          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6229          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6230          RAISE;
6231    END export_signatures;
6232 
6233 -------------------------------------------------------------------------------
6234    PROCEDURE insert_jrad_ui_intl_texts
6235    IS
6236       l_intl_text_id_tbl cz_pb_mgr.t_ref;
6237       rec_count NUMBER := 0;
6238    BEGIN
6239       cz_pb_mgr.g_intl_text_id_ref.DELETE;
6240 
6241       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
6242          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
6243          LOOP
6244             l_intl_text_id_tbl.DELETE;
6245 
6246             BEGIN
6247                SELECT intl_text_id
6248                BULK COLLECT INTO l_intl_text_id_tbl
6249                  FROM cz_intl_texts txt, cz_ui_defs ui
6250                 WHERE txt.model_id = cz_pb_mgr.v_models_to_be_exported(i)
6251                   AND txt.deleted_flag = '0'
6252                   AND NVL(txt.seeded_flag, '0') = '0'
6253                   AND NVL(txt.ui_def_id, -1) = ui.ui_def_id
6254                   AND txt.model_id = ui.devl_project_id
6255                   AND ui.deleted_flag = '0' AND ui_style = g_ui_style_jrad;
6256             EXCEPTION
6257                WHEN NO_DATA_FOUND THEN
6258                   NULL;
6259             END;
6260 
6261             IF (l_intl_text_id_tbl.COUNT > 0) THEN
6262                FOR j IN l_intl_text_id_tbl.FIRST .. l_intl_text_id_tbl.LAST
6263                LOOP
6264                   rec_count := rec_count + 1;
6265                   cz_pb_mgr.g_intl_text_id_ref(rec_count) := l_intl_text_id_tbl(j);
6266                END LOOP;
6267             END IF;
6268          END LOOP;
6269 
6270         IF (rec_count > 0) THEN
6271           insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'caption texts of JRAD UI');
6272         END IF;
6273       END IF;
6274 
6275       -- main msg and title ids collected in get_oa_tmpls
6276       IF cz_pb_mgr.g_ui_templates_msg_id_ref.COUNT > 0 THEN
6277         rec_count := 0;
6278         CZ_PB_MGR.g_intl_text_id_ref.DELETE;
6279 
6280         FOR i IN cz_pb_mgr.g_ui_templates_msg_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_msg_id_ref.LAST LOOP
6281           IF cz_pb_mgr.g_ui_templates_msg_id_ref(i) IS NOT NULL THEN
6282             rec_count := rec_count + 1;
6283             cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_msg_id_ref(i);
6284           END IF;
6285           IF cz_pb_mgr.g_ui_templates_title_ref(i) IS NOT NULL THEN
6286             rec_count := rec_count + 1;
6287             cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_title_ref(i);
6288           END IF;
6289         END LOOP;
6290 
6291         IF (rec_count > 0) THEN
6292           insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'template msg and title texts', TRUE);
6293         END IF;
6294       END IF;
6295 
6296    EXCEPTION
6297       WHEN OTHERS THEN
6298          cz_pb_mgr.v_err_message := 'Bulk Collect of intl texts of JRAD UI: ' || SQLERRM;
6299          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERTJRADUIINTLTEXTS', SQLCODE);
6300          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6301          RAISE;
6302    END insert_jrad_ui_intl_texts;
6303 
6304 -------------------------------------------------------------------------------
6305 ------copying OA style UI(s)
6306    PROCEDURE export_oa_uis
6307    IS
6308       rec_count NUMBER := 0;
6309       row_count NUMBER := 0;
6310       plsql_table_list cz_pb_mgr.col_plsql_table_list;
6311       l_new_document VARCHAR2(255);
6312    BEGIN
6313       ----insert intl texts of JRAD UI(s)
6314       insert_jrad_ui_intl_texts;
6315       ----insert into cz_ui_templates
6316       insert_ui_templates;
6317       -----insert ref templates
6318       insert_ref_templates;
6319 
6320       --bug 1170415 : set variable to true in order to skip rollback in failure case
6321       g_skip_templ_rollback := TRUE;
6322 
6323       ----collect ui pages
6324       bulk_collect_ui_pages;
6325       ----copy jrad docs
6326       copy_jrad_docs;
6327       ------insert into ui pages
6328       insert_into_ui_pages;
6329       ----collect page sets
6330       bulk_collect_page_sets;
6331       copy_train_docs;
6332       insert_into_ui_page_sets;
6333       -----bulk collect from page refs
6334       bulk_collect_page_refs;
6335       ----insert into cz_ui_page_refs
6336       insert_into_ui_page_refs;
6337       -----bulk collect from ui refs
6338       bulk_collect_ui_refs;
6339       ----insert into cz_ui_refs
6340       insert_into_ui_refs;
6341       -----bulk collect from ui ps maps
6342       bulk_collect_ui_ps_maps;
6343       ----insert into cz_ui_page_elements
6344       export_signatures(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl);
6345       insert_ui_ps_maps;
6346 
6347       -- A master template carries its own set of content templates
6348       -- need to resolved everything and insert separately for master templates
6349       -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
6350       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
6351       THEN
6352          --collect content templates
6353          bulk_collect_cont_type_templs(cz_pb_mgr.v_mt_old_id_tbl);
6354          --resolve template ids
6355          resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'tmpl ids of ui def of cont type tmpls', ENTITY_TYPE_UCT);
6356          --resolve ui def ids
6357          resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref,cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref, cz_pb_mgr.v_mt_old_to_new_id, 'ui def ids of ui def of cont type tmpls');
6358          plsql_table_list.DELETE;
6359          rec_count := 1;
6360          plsql_table_list(rec_count).col_name := 'ui_def_id';
6361          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
6362          rec_count := rec_count + 1;
6363          plsql_table_list(rec_count).col_name := 'template_id';
6364          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
6365          rec_count := rec_count + 1;
6366          plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6367          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
6368          rec_count := rec_count + 1;
6369          plsql_table_list(rec_count).col_name := 'content_type';
6370          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
6371          insert_into_table('cz_ui_cont_type_templs'
6372                           ,'content_type'
6373                           ,'ui_def_id'
6374                           ,cz_pb_mgr.v_db_link
6375                           ,plsql_table_list
6376                           ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
6377                           ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
6378                           ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
6379                           ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
6380                           );
6381         row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
6382         IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT >0) THEN
6383            FOR i in cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.FIRST .. cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.LAST
6384            LOOP
6385              row_count:=row_count+1;
6386              cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
6387              cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
6388           END LOOP;
6389         END IF;
6390       END IF;
6391 
6392       ----resolve  ui_def_id
6393       bulk_collect_cont_type_templs(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
6394 
6395       resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref,cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of cont type tmpls');
6396 
6397       ----resolve tmp ui_def_id, template id
6398       IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
6399         resolve_tmpl_ui_defs(cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref, cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, 'tmpl uidefs of cz_ui_cont_type_templs');
6400         resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'tmpl ids of ui def of cont type tmpls', ENTITY_TYPE_UCT);
6401       END IF;
6402 
6403       plsql_table_list.DELETE;
6404       rec_count := 1;
6405       plsql_table_list(rec_count).col_name := 'ui_def_id';
6406       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
6407       rec_count := rec_count + 1;
6408       plsql_table_list(rec_count).col_name := 'template_id';
6409       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
6410       rec_count := rec_count + 1;
6411       plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6412       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
6413       rec_count := rec_count + 1;
6414       plsql_table_list(rec_count).col_name := 'content_type';
6415       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
6416       insert_into_table('cz_ui_cont_type_templs'
6417                        ,'content_type'
6418                        ,'ui_def_id'
6419                        ,cz_pb_mgr.v_db_link
6420                        ,plsql_table_list
6421                        ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
6422                        ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
6423                        ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
6424                        ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
6425                        );
6426       row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
6427       IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT > 0) THEN
6428          FOR i in cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.FIRST .. cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.LAST
6429          LOOP
6430               row_count:=row_count+1;
6431               cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
6432               cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
6433          END LOOP;
6434       END IF;
6435 
6436       ----bulk collect ui actions
6437       bulk_collect_ui_actions(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
6438 
6439       -- Note g_ui_actns_ui_act_id_ref contains both local ui actions (bulk_collect_ui_actions)
6440       -- and global ones (collect_global_actions). The 'new' ids in this array are the same old
6441       -- ids as the ones in g_ui_actns_ui_act_id_old_ref. They are real new ids only when the
6442       -- session is remote migration and the actions are globals.
6443 
6444       ----resolve  ui_def_id
6445       resolve_ids(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref,cz_pb_mgr.g_ui_actns_ui_uidef_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui actions');
6446       -- ignore expl id resolution failure because of a ui refresh issue (see 6817586)
6447       resolve_ids(cz_pb_mgr.g_ui_actns_tgtexpl_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of ui actions', FLD_IGNORE_NOW);
6448       -- context_component_id, obsolete
6449       -- resolve_ids(cz_pb_mgr.g_ui_actns_ctx_comp_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ctx comp id of ui actions');
6450       resolve_ids(cz_pb_mgr.g_ui_actns_ren_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'render condition id of ui actions');
6451 
6452       IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
6453         resolve_tmpl_ui_defs(cz_pb_mgr.g_uiact_prcpg_tmpui_tbl, cz_pb_mgr.g_uiact_prcpg_templ_tbl, 'prc pg tmp uidef of ui actions');
6454         resolve_ids(cz_pb_mgr.g_uiact_prcpg_templ_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'prc pg templ id of ui actions', ENTITY_TYPE_UCT);
6455       END IF;
6456 
6457       resolve_intl_texts(cz_pb_mgr.g_uiact_prc_caption_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' prc caption ids of ui actions');
6458       resolve_intl_texts(cz_pb_mgr.g_uiact_pg_title_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' pg title ids of ui actions');
6459       resolve_intl_texts(cz_pb_mgr.g_uiact_main_msg_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' main msg ids of ui actions');
6460 
6461       plsql_table_list.DELETE;
6462       rec_count := 1;
6463       plsql_table_list(rec_count).col_name := 'ui_def_id';
6464       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_uidef_ref';
6465       rec_count := rec_count + 1;
6466       plsql_table_list(rec_count).col_name := 'ui_action_id';
6467       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_act_id_ref';
6468       rec_count := rec_count + 1;
6469       plsql_table_list(rec_count).col_name := 'target_ui_def_id';
6470       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_tgtui_ref';
6471       rec_count := rec_count + 1;
6472       plsql_table_list(rec_count).col_name := 'target_expl_node_id';
6473       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_tgtexpl_ref';
6474       rec_count := rec_count + 1;
6475       plsql_table_list(rec_count).col_name := 'context_component_id';
6476       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ctx_comp_tbl';
6477       rec_count := rec_count + 1;
6478       plsql_table_list(rec_count).col_name := 'render_condition_id';
6479       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ren_cond_tbl';
6480       rec_count := rec_count + 1;
6481       plsql_table_list(rec_count).col_name := 'processing_page_templ_id';
6482       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_templ_tbl';
6483       rec_count := rec_count + 1;
6484       plsql_table_list(rec_count).col_name := 'proc_page_templ_ui_def_id';
6485       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_tmpui_tbl';
6486       rec_count := rec_count + 1;
6487       plsql_table_list(rec_count).col_name := 'processing_caption_text_id';
6488       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prc_caption_tbl';
6489       rec_count := rec_count + 1;
6490       plsql_table_list(rec_count).col_name := 'page_title_text_id';
6491       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_pg_title_tbl';
6492       rec_count := rec_count + 1;
6493       plsql_table_list(rec_count).col_name := 'main_message_text_id';
6494       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_main_msg_tbl';
6495       -- should call resolve_ids instead
6496       resolve_ref_ids_not_found(cz_pb_mgr.g_ui_actns_ui_uidef_ref
6497                                ,cz_pb_mgr.v_cz_ui_defs_old_ref
6498                                ,cz_pb_mgr.v_cz_ui_defs_idx_ref
6499                                ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref
6500                                ,'cz_ui_actions.target_ui_def_id'
6501                                ,cz_pb_mgr.v_status_code
6502                                );
6503       insert_into_table('cz_ui_actions'
6504                        ,'ui_action_id'
6505                        ,'ui_def_id'
6506                        ,cz_pb_mgr.v_db_link
6507                        ,plsql_table_list
6508                        ,'cz_pb_mgr.g_ui_actns_ui_act_id_old_ref'
6509                        ,'cz_pb_mgr.g_ui_actns_ui_uidef_old_ref'
6510                        ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref
6511                        ,cz_pb_mgr.g_ui_actns_ui_uidef_old_ref
6512                        );
6513 
6514       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
6515       THEN
6516          refresh_ui_actions(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref);
6517       END IF;
6518 
6519       --bug 1170415 set variable to true in order to skip rollback for templ action in failure case
6520       g_skip_templaction_rollback := TRUE;
6521 
6522       ------bulk collect ui images for Master templates
6523       -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
6524       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
6525       THEN
6526          bulk_collect_ui_images(cz_pb_mgr.v_mt_old_id_tbl);
6527          resolve_ids(cz_pb_mgr.v_ui_images_ui_tbl,cz_pb_mgr.v_ui_images_ui_ref, cz_pb_mgr.v_mt_old_to_new_id, 'ui def ids of mt ui images');
6528          plsql_table_list.DELETE;
6529          rec_count := 1;
6530          plsql_table_list(rec_count).col_name := 'ui_def_id';
6531          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
6532          rec_count := rec_count + 1;
6533          plsql_table_list(rec_count).col_name := 'image_usage_code';
6534          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
6535          rec_count := rec_count + 1;
6536          plsql_table_list(rec_count).col_name := 'entity_code';
6537          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
6538          insert_into_table('cz_ui_images'
6539                           ,'ui_def_id'
6540                           ,'image_usage_code'
6541                           ,'entity_code'
6542                           ,cz_pb_mgr.v_db_link
6543                           ,plsql_table_list
6544                           ,'cz_pb_mgr.v_ui_images_ui_tbl'
6545                           ,'cz_pb_mgr.v_ui_images_usg_tbl'
6546                           ,'cz_pb_mgr.v_ui_images_enty_tbl'
6547                           ,cz_pb_mgr.v_ui_images_ui_tbl
6548                           ,cz_pb_mgr.v_ui_images_usg_tbl
6549                           ,cz_pb_mgr.v_ui_images_enty_tbl
6550                           );
6551 	 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
6552          IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT >0)THEN
6553            FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
6554            LOOP
6555              row_count:=row_count+1;
6556              cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
6557              cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
6558              cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
6559            END LOOP;
6560          END IF;
6561       END IF;
6562 
6563       ----resolve  ui_def_id
6564       bulk_collect_ui_images(cz_pb_mgr.v_cz_ui_defs_old_ref);
6565       resolve_ids(cz_pb_mgr.v_ui_images_ui_tbl,cz_pb_mgr.v_ui_images_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui images');
6566       -----insert into ui images
6567       plsql_table_list.DELETE;
6568       rec_count := 1;
6569       plsql_table_list(rec_count).col_name := 'ui_def_id';
6570       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
6571       rec_count := rec_count + 1;
6572       plsql_table_list(rec_count).col_name := 'image_usage_code';
6573       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
6574       rec_count := rec_count + 1;
6575       plsql_table_list(rec_count).col_name := 'entity_code';
6576       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
6577       insert_into_table('cz_ui_images'
6578                        ,'ui_def_id'
6579                        ,'image_usage_code'
6580                        ,'entity_code'
6581                        ,cz_pb_mgr.v_db_link
6582                        ,plsql_table_list
6583                        ,'cz_pb_mgr.v_ui_images_ui_tbl'
6584                        ,'cz_pb_mgr.v_ui_images_usg_tbl'
6585                        ,'cz_pb_mgr.v_ui_images_enty_tbl'
6586                        ,cz_pb_mgr.v_ui_images_ui_tbl
6587                        ,cz_pb_mgr.v_ui_images_usg_tbl
6588                        ,cz_pb_mgr.v_ui_images_enty_tbl
6589                        );
6590       row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
6591       IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT > 0) THEN
6592         FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
6593         LOOP
6594           row_count:=row_count+1;
6595           cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
6596           cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
6597           cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
6598         END LOOP;
6599       END IF;
6600 
6601       COMMIT;
6602    EXCEPTION
6603       WHEN OTHERS
6604       THEN
6605          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_OA_UI_ERR', 'SQLERRM', SQLERRM);
6606          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_EXPORTOAUI', SQLCODE);
6607          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6608          RAISE;
6609    END export_oa_uis;
6610 
6611 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6612 ------makes a copy of a UI and its children
6613    PROCEDURE export_single_oa_ui(
6614       p_ui_def_id IN NUMBER
6615      ,x_ui_def_id OUT NOCOPY NUMBER
6616      ,x_return_status OUT NOCOPY VARCHAR2
6617      ,x_msg_count OUT NOCOPY NUMBER
6618      ,x_msg_data OUT NOCOPY VARCHAR2
6619    )
6620    IS
6621       ui_def_id_is_null EXCEPTION;
6622       ui_def_id_not_found EXCEPTION;
6623       not_oa_style_ui EXCEPTION;
6624       l_ui_def_id NUMBER;
6625       l_ui_style VARCHAR2(3);
6626       l_child_ui_tbl cz_pb_mgr.t_ref;
6627       rec_count NUMBER := 0;
6628       plsql_table_list cz_pb_mgr.col_plsql_table_list;
6629    BEGIN
6630       x_return_status := FND_API.G_RET_STS_SUCCESS;
6631       cz_pb_mgr.v_status_code := 'OK';
6632 
6633       IF (p_ui_def_id IS NULL)
6634       THEN
6635          RAISE ui_def_id_is_null;
6636       END IF;
6637 
6638       BEGIN
6639          SELECT ui_def_id, ui_style
6640            INTO l_ui_def_id, l_ui_style
6641            FROM cz_ui_defs
6642           WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
6643       EXCEPTION
6644          WHEN NO_DATA_FOUND
6645          THEN
6646             RAISE ui_def_id_not_found;
6647       END;
6648 
6649       IF (l_ui_style <> oa_ui_style)
6650       THEN
6651          RAISE not_oa_style_ui;
6652       END IF;
6653 
6654       cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
6655       cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
6656       cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
6657       cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6658       rec_count := cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT + 1;
6659       cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_ui_def_id;
6660       cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_ui_def_id;
6661       l_child_ui_tbl.DELETE;
6662 
6663       BEGIN
6664          SELECT ref_ui_def_id
6665          BULK COLLECT INTO l_child_ui_tbl
6666            FROM cz_ui_refs
6667           WHERE cz_ui_refs.ui_def_id = l_ui_def_id AND cz_ui_refs.deleted_flag = record_not_deleted;
6668       EXCEPTION
6669          WHEN NO_DATA_FOUND
6670          THEN
6671             NULL;                                                                                                       ---if no children then ignore
6672       END;
6673 
6674       IF (l_child_ui_tbl.COUNT > 0)
6675       THEN
6676          rec_count := cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT + 1;
6677 
6678          FOR i IN l_child_ui_tbl.FIRST .. l_child_ui_tbl.LAST
6679          LOOP
6680             rec_count := rec_count + 1;
6681             cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_child_ui_tbl(i);
6682             cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_child_ui_tbl(i);
6683          END LOOP;
6684       END IF;
6685 
6686       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
6687       THEN
6688          cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6689          rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
6690          IF (v_cz_ui_defs_old_ref.COUNT > 0) THEN
6691           FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
6692           LOOP
6693             rec_count := rec_count + 1;
6694             cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
6695                  cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq, 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
6696 
6697             IF (cz_pb_mgr.v_cz_ui_defs_old_ref(k) = p_ui_def_id)
6698             THEN
6699                x_ui_def_id := cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
6700             END IF;
6701 
6702             cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.v_cz_ui_defs_old_ref(k)):=cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
6703           END LOOP;
6704 	 END IF;
6705 
6706          --------populate plsql_table_list for ui_defs
6707          plsql_table_list.DELETE;
6708          rec_count := 1;
6709          plsql_table_list(rec_count).col_name := 'ui_def_id';
6710          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
6711          insert_into_table('cz_ui_defs'
6712                           ,'ui_def_id'
6713                           ,cz_pb_mgr.v_db_link
6714                           ,plsql_table_list
6715                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
6716                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
6717                           );
6718          ------export oa uis
6719          export_oa_uis;
6720          cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
6721          cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
6722          cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
6723          cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6724       END IF;
6725    EXCEPTION
6726       WHEN ui_def_id_is_null
6727       THEN
6728          x_return_status := FND_API.G_RET_STS_ERROR;
6729          x_msg_data := cz_utils.get_text('UI_DEF_ID_IS_NULL');
6730          x_msg_count := 1;
6731       WHEN ui_def_id_not_found
6732       THEN
6733          x_return_status := FND_API.G_RET_STS_ERROR;
6734          x_msg_data := cz_utils.get_text('UI_DEF_ID_NOT_FOUND', 'UIDEFID', p_ui_def_id);
6735          x_msg_count := 1;
6736       WHEN not_oa_style_ui
6737       THEN
6738          x_return_status := FND_API.G_RET_STS_ERROR;
6739          x_msg_data := cz_utils.get_text('NOT_OA_STYLE_UI', 'UIDEFID', p_ui_def_id);
6740          x_msg_count := 1;
6741       WHEN OTHERS
6742       THEN
6743          x_return_status := FND_API.G_RET_STS_ERROR;
6744          x_msg_data := cz_utils.get_text('FATAL_ERROR', 'UIDEFID', p_ui_def_id, 'ERROR', SQLERRM);
6745          x_msg_count := 1;
6746    END export_single_oa_ui;
6747 
6748 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6749 ----update pup status
6750    PROCEDURE update_pup_status(p_publication_id cz_model_publications.publication_id%TYPE)
6751    IS
6752       l_remote_publication_id NUMBER;
6753    BEGIN
6754       UPDATE cz_model_publications
6755          SET export_status = 'OK'
6756        WHERE remote_publication_id = (SELECT remote_publication_id
6757                                         FROM cz_model_publications
6758                                        WHERE deleted_flag = '0' AND publication_id = p_publication_id AND export_status = 'ERR')
6759          AND export_status = 'PUP'
6760          AND deleted_flag = '0';
6761    END;
6762 
6763 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6764 ------updates export status in cZ_model_publications
6765    PROCEDURE update_publication_status(p_publication_id IN NUMBER, p_pb_status IN VARCHAR2, p_db_link IN VARCHAR2)
6766    IS
6767    BEGIN
6768       IF ((p_publication_id > 0) AND(p_pb_status IS NOT NULL))
6769       THEN
6770          cz_pb_mgr.v_insert_string :=
6771                'UPDATE cz_model_publications'
6772             || p_db_link
6773             || ' '
6774             || 'SET  export_status = :1,'
6775             || ' '
6776             || 'published = sysdate'
6777             || ' '
6778             || 'WHERE  cz_model_publications.publication_id = :2';
6779 
6780          EXECUTE IMMEDIATE cz_pb_mgr.v_insert_string
6781                      USING p_pb_status, p_publication_id;
6782       END IF;
6783    EXCEPTION
6784       WHEN OTHERS
6785       THEN
6786          cz_pb_mgr.v_err_message := 'ERROR : updation of publication status ' || SQLERRM;
6787          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPPBSTATUS', SQLCODE);
6788          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6789          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6790          RAISE;
6791    END update_publication_status;
6792 
6793 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6794 ------------ to retrieve the db link
6795    FUNCTION retrieve_db_link(p_server_id PLS_INTEGER)
6796       RETURN VARCHAR2
6797    IS
6798       v_source_id cz_servers.server_local_id%TYPE;
6799       v_source_instance cz_servers.instance_name%TYPE;
6800       v_source_host cz_servers.hostname%TYPE;
6801       v_source_port cz_servers.db_listener_port%TYPE;
6802       v_source_owner cz_servers.cz_owner%TYPE;
6803       v_target_id cz_servers.server_local_id%TYPE;
6804       v_target_instance cz_servers.instance_name%TYPE;
6805       v_target_host cz_servers.hostname%TYPE;
6806       v_target_port cz_servers.db_listener_port%TYPE;
6807       v_target_owner cz_servers.cz_owner%TYPE;
6808       v_db_link cz_servers.cz_link_name%TYPE;
6809 
6810       CURSOR db_compare_cur(p_server_id PLS_INTEGER)
6811       IS
6812          SELECT   server_local_id, instance_name, hostname, db_listener_port, cz_owner, fndnam_link_name
6813              FROM cz_servers
6814             WHERE server_local_id = p_server_id OR server_local_id = 0
6815          ORDER BY server_local_id;
6816 
6817       v_compare_record db_compare_cur%ROWTYPE;
6818    BEGIN
6819       BEGIN
6820          OPEN db_compare_cur(p_server_id);
6821 
6822          LOOP
6823             FETCH db_compare_cur
6824              INTO v_compare_record;
6825 
6826             EXIT WHEN db_compare_cur%NOTFOUND;
6827 
6828             IF (v_compare_record.server_local_id = 0)
6829             THEN
6830                v_source_instance := v_compare_record.instance_name;
6831                v_source_host := v_compare_record.hostname;
6832                v_source_port := v_compare_record.db_listener_port;
6833                v_source_owner := v_compare_record.cz_owner;
6834                v_target_instance := v_compare_record.instance_name;
6835                v_target_host := v_compare_record.hostname;
6836                v_target_port := v_compare_record.db_listener_port;
6837                v_target_owner := v_compare_record.cz_owner;
6838                v_db_link := v_compare_record.fndnam_link_name;
6839             ELSE
6840                v_target_instance := v_compare_record.instance_name;
6841                v_target_host := v_compare_record.hostname;
6842                v_target_port := v_compare_record.db_listener_port;
6843                v_target_owner := v_compare_record.cz_owner;
6844                v_db_link := v_compare_record.fndnam_link_name;
6845             END IF;
6846          END LOOP;
6847 
6848          CLOSE db_compare_cur;
6849       EXCEPTION
6850          WHEN OTHERS
6851          THEN
6852             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6853             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6854       END;
6855 
6856       IF (((v_target_instance IS NULL) OR(v_target_host IS NULL) OR(v_target_port IS NULL)) AND(v_compare_record.server_local_id <> 0.0))
6857       THEN
6858          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6859          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6860          cz_pb_mgr.v_status_code := 'ERR';
6861       END IF;
6862 
6863       IF (   (    (LTRIM(RTRIM(UPPER(v_source_instance))) = LTRIM(RTRIM(UPPER(v_target_instance))))
6864               AND (LTRIM(RTRIM(UPPER(v_source_host))) = LTRIM(RTRIM(UPPER(v_target_host))))
6865               AND (LTRIM(RTRIM(UPPER(v_source_port))) = LTRIM(RTRIM(UPPER(v_target_port))))
6866              )
6867           OR (p_server_id = 0)
6868          )
6869       THEN
6870          cz_pb_mgr.v_db_link := ' ';
6871       ELSE
6872          cz_pb_mgr.v_db_link := '@' || v_db_link || ' ';
6873       END IF;
6874 
6875       RETURN cz_pb_mgr.v_db_link;
6876    EXCEPTION
6877       WHEN OTHERS
6878       THEN
6879          RETURN cz_pb_mgr.v_db_link;
6880    END retrieve_db_link;
6881 
6882 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6883 ------------SKM**Bug#13437555---- A Special Procedure to rollback from Devl_Projects Table
6884 ------------This is due to unknown reason seeded project (Id=0) is getting
6885 ------------deleted as a part of rollback during publication failure.
6886 ------Deleted_flag=0 is not included in rp_entries as seeded_data can have with flag = 1
6887 
6888 PROCEDURE  DeleteFromDevlProjects(db_link IN VARCHAR2)
6889 
6890 AS
6891 
6892 v_DeleteProj    VARCHAR2(5000);
6893 v_db_link       VARCHAR2(128);
6894 
6895 BEGIN
6896 
6897     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
6898          log_timing_message('Start of rollback of cz_devl_projects table due to failure ');
6899     END IF;
6900 
6901     IF ( cz_pb_mgr.v_models_to_be_exported_new.COUNT > 0 ) THEN
6902 
6903 	v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6904 
6905         BEGIN
6906 	      v_DeleteProj := 'BEGIN FOR  i IN cz_pb_mgr.v_models_to_be_exported_new.FIRST..cz_pb_mgr.v_models_to_be_exported_new.LAST  LOOP ';
6907 	      v_DeleteProj := v_DeleteProj||' DELETE FROM cz_devl_projects'||v_db_link||' tgt ';
6908       	      v_DeleteProj := v_DeleteProj||' WHERE  tgt.devl_project_id =  cz_pb_mgr.v_models_to_be_exported_new(i) ';
6909               v_DeleteProj := v_DeleteProj||' AND NOT EXISTS( SELECT null FROM cz_rp_entries'||v_db_link;
6910               v_DeleteProj := v_DeleteProj||' WHERE object_type=''PRJ'' AND seeded_flag=''1'' AND object_id=tgt.devl_project_id)';
6911               v_DeleteProj := v_DeleteProj||' ; END LOOP; COMMIT; END; ';
6912 
6913 
6914 		EXECUTE IMMEDIATE v_DeleteProj;
6915 
6916 		EXCEPTION
6917 			WHEN OTHERS THEN
6918 				RAISE;
6919 			END;
6920       END IF;
6921 
6922       COMMIT;
6923 
6924     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
6925          log_timing_message('End of rollback of cz_devl_projects table due to failure ');
6926     END IF;
6927 
6928 EXCEPTION
6929 WHEN OTHERS THEN
6930 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', 'cz_devl_projects');
6931 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6932 
6933 END DeleteFromDevlProjects;
6934 
6935 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6936 ----------------------procedure called from rollback data that deletes the rows
6937 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6938 ----------------------procedure called from rollback data that deletes the rows
6939 ----------------------inserted into a table during publication process
6940 PROCEDURE	delete_from_table(table_name			IN	VARCHAR2 ,
6941 					primary_key			IN	VARCHAR2 ,
6942 					db_link			IN	VARCHAR2 ,
6943 					plsql_table_name		IN	VARCHAR2,
6944 					primary_key_plsql_table	IN	cz_pb_mgr.t_ref
6945 					)
6946 AS
6947 
6948 v_DeleteString  VARCHAR2(2000);
6949 v_db_link       VARCHAR2(128);
6950 
6951 BEGIN
6952       IF ( primary_key_plsql_table.COUNT > 0 ) THEN
6953 			v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6954 			BEGIN
6955 				v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table.FIRST||'..'||primary_key_plsql_table.LAST||'  LOOP ';
6956 				v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link||' tgt ';
6957       	      	v_DeleteString  := v_DeleteString||' WHERE  tgt.'||primary_key||' = '||plsql_table_name||'(m) ';
6958 				v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
6959 		 		EXECUTE IMMEDIATE v_DeleteString;
6960 			EXCEPTION
6961 			WHEN OTHERS THEN
6962 				RAISE;
6963 			END;
6964       END	IF;
6965 COMMIT;
6966 EXCEPTION
6967 WHEN OTHERS THEN
6968 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6969 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6970 END	delete_from_table;
6971 
6972 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6973 ----------------------procedure called from rollback data that deletes the rows
6974 ----------------------inserted into a table during publication process
6975 
6976 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6977                             primary_key1   IN	VARCHAR2 ,
6978                             primary_key2   IN	VARCHAR2 ,
6979 			    primary_key3   IN	VARCHAR2 ,
6980                             db_link	       IN	VARCHAR2 ,
6981                             plsql_table_name1 IN VARCHAR2,
6982 			    	    plsql_table_name2 IN VARCHAR2,
6983 				    plsql_table_name3 IN VARCHAR2,
6984 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6985 
6986 AS
6987 v_cursor          NUMBER;
6988 v_NumRows         NUMBER;
6989 v_DeleteString 	VARCHAR2(10000);
6990 v_db_link         VARCHAR2(128);
6991 
6992 BEGIN
6993      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6994 
6995  BEGIN
6996   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6997 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
6998 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
6999 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7000 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7001 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
7002 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
7003 	EXECUTE IMMEDIATE v_DeleteString;
7004   END	IF;
7005  EXCEPTION
7006  WHEN OTHERS THEN
7007 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7008 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7009  END;
7010 COMMIT;
7011 END;
7012 
7013 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7014 ----------------------procedure called from rollback data that deletes the rows
7015 ----------------------inserted into a table during publication process
7016 
7017 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
7018                             primary_key1   IN	VARCHAR2 ,
7019                             primary_key2   IN	VARCHAR2 ,
7020                             db_link	       IN	VARCHAR2 ,
7021                             plsql_table_name1 IN VARCHAR2,
7022 			    	    plsql_table_name2 IN VARCHAR2,
7023 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
7024 
7025 AS
7026 v_cursor          NUMBER;
7027 v_NumRows         NUMBER;
7028 v_DeleteString 	VARCHAR2(10000);
7029 v_db_link         VARCHAR2(128);
7030 
7031 BEGIN
7032      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
7033 
7034  BEGIN
7035   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
7036 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
7037 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
7038 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7039 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7040 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
7041 	EXECUTE IMMEDIATE v_DeleteString;
7042   END	IF;
7043  EXCEPTION
7044  WHEN OTHERS THEN
7045 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7046 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7047  END;
7048 COMMIT;
7049 END;
7050 
7051 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7052 ----------------------procedure called from rollback data that deletes the rows
7053 ----------------------inserted into a table during publication process
7054 
7055 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
7056                             primary_key1   IN	VARCHAR2 ,
7057                             primary_key2   IN	VARCHAR2 ,
7058 			    primary_key3   IN	VARCHAR2 ,
7059 			    primary_key4   IN	VARCHAR2 ,
7060                             db_link	       IN	VARCHAR2 ,
7061                             plsql_table_name1 IN VARCHAR2,
7062 			    	    plsql_table_name2 IN VARCHAR2,
7063 				    plsql_table_name3 IN VARCHAR2,
7064 				    plsql_table_name4 IN VARCHAR2,
7065 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
7066 
7067 AS
7068 v_cursor          NUMBER;
7069 v_NumRows         NUMBER;
7070 v_DeleteString 	VARCHAR2(10000);
7071 v_db_link         VARCHAR2(128);
7072 
7073 BEGIN
7074      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
7075 
7076  BEGIN
7077   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
7078 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
7079 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
7080 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7081 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7082 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
7083 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key4||'='||plsql_table_name4||'(m) ';
7084 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
7085 	EXECUTE IMMEDIATE v_DeleteString;
7086   END	IF;
7087  EXCEPTION
7088  WHEN OTHERS THEN
7089 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7090 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7091  END;
7092 COMMIT;
7093 END;
7094 
7095 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7096 ---------procedure that deletes data of single index arrays
7097    PROCEDURE delete_from_idx_tables(
7098       p_table_name IN VARCHAR2
7099      ,p_primary_key IN VARCHAR2
7100      ,p_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
7101      ,p_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
7102    )
7103    AS
7104       v_deletestring VARCHAR2(2000);
7105       v_idx_id NUMBER;
7106    BEGIN
7107       IF (p_old_array.COUNT > 0)
7108       THEN
7109          FOR i IN p_old_array.FIRST .. p_old_array.LAST
7110          LOOP
7111             v_idx_id := p_idx_array(p_old_array(i));
7112             v_deletestring := ' delete from ' || p_table_name || v_db_link || ' tgt ';
7113             v_deletestring := v_deletestring || ' WHERE  tgt.' || p_primary_key || ' = :1';
7114 
7115             EXECUTE IMMEDIATE v_deletestring
7116                         USING v_idx_id;
7117 
7118             IF (MOD(i, cz_pb_mgr.record_commit_size) = 0)
7119             THEN
7120                COMMIT;
7121             END IF;
7122          END LOOP;
7123       END IF;
7124 
7125       COMMIT;
7126    EXCEPTION
7127       WHEN OTHERS
7128       THEN
7129          cz_pb_mgr.v_err_message := 'Error during rollback of  ' || p_table_name || ' : ' || SQLERRM;
7130          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
7131    END;
7132 
7133 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7134 --------in the model publication process
7135 --------a model is published in its entirety
7136 --------if an error occurs during the publishing
7137 --------process the data that has been committed
7138 --------on the target server is rolled back
7139    PROCEDURE rollback_data(p_db_link IN VARCHAR2)
7140    AS
7141       v_insert_string VARCHAR2(2000) := '';
7142       v_database_link VARCHAR2(128);
7143 
7144       --bug 1170415
7145       -- This procedure was introduced to remove template related ui actions from ui actions array
7146       -- in case publication failure occurs after successful insertion of ui template related data
7147       -- to address above Sun issue
7148       PROCEDURE refine_ui_action_array IS
7149       BEGIN
7150 
7151 
7152 --This check is added as a part of Sprint-2 and is an existing issue throws, index or value
7153 --error while rollback when there is no ui action for a given ui
7154 
7155          IF (  cz_pb_mgr.g_ui_actns_ui_uidef_ref.COUNT > 0) THEN
7156 
7157          FOR i in cz_pb_mgr.g_ui_actns_ui_uidef_ref.FIRST .. cz_pb_mgr.g_ui_actns_ui_uidef_ref.LAST
7158          LOOP
7159            IF (cz_pb_mgr.g_ui_actns_ui_uidef_ref(i) = 1) THEN
7160              log_timing_message('Skipping rollback of UI action: ' || cz_pb_mgr.g_ui_actns_ui_act_id_ref(i) ||
7161              ' and ui_def_id: ' || cz_pb_mgr.g_ui_actns_ui_uidef_ref(i));
7162              cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE(i);
7163              cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE(i);
7164            END IF;
7165          END LOOP;
7166 
7167        END IF;
7168       END;
7169 
7170    BEGIN
7171       v_database_link := LTRIM(RTRIM(p_db_link));
7172 
7173       IF ((cz_pb_mgr.v_server_id IS NULL) OR(v_database_link = '@'))
7174       THEN
7175          v_database_link := NULL;
7176       END IF;
7177 
7178       delete_from_table('cz_ps_nodes', 'ps_node_id', v_database_link, 'cz_pb_mgr.v_cz_ps_nodes_new_tbl', cz_pb_mgr.v_cz_ps_nodes_new_tbl);
7179       delete_from_table('cz_ps_prop_vals', 'ps_node_id', v_database_link, 'cz_pb_mgr.v_cz_ps_nodes_new_tbl', cz_pb_mgr.v_cz_ps_nodes_new_tbl);
7180 --SKM:Bug-13437555 Caling own procedure for deleting from cz_devl_projects table.
7181 
7182       DeleteFromDevlProjects(v_database_link);
7183 
7184 --      delete_from_table('cz_devl_projects'
7185 --                       ,'devl_project_id'
7186 --                       ,v_database_link
7187 --                       ,'cz_pb_mgr.v_models_to_be_exported_new'
7188 --                       ,cz_pb_mgr.v_models_to_be_exported_new
7189 --                       );
7190       delete_from_table('cz_ui_defs', 'ui_def_id', v_database_link, 'cz_pb_mgr.v_cz_ui_defs_new_ref', cz_pb_mgr.v_cz_ui_defs_new_ref);
7191       delete_from_table('cz_ui_properties', 'ui_def_id', v_database_link, 'cz_pb_mgr.v_cz_ui_defs_new_ref', cz_pb_mgr.v_cz_ui_defs_new_ref);
7192       delete_from_table('cz_ui_nodes', 'ui_node_id', v_database_link, 'cz_pb_mgr.v_cz_ui_nodes_new_ref', cz_pb_mgr.v_cz_ui_nodes_new_ref);
7193       delete_from_table('cz_ui_node_props', 'ui_node_id', v_database_link, 'cz_pb_mgr.v_cz_ui_nodes_new_ref', cz_pb_mgr.v_cz_ui_nodes_new_ref);
7194       delete_from_table('cz_model_ref_expls'
7195                        ,'model_ref_expl_id'
7196                        ,v_database_link
7197                        ,'cz_pb_mgr.v_cz_model_ref_expls_new_ref'
7198                        ,cz_pb_mgr.v_cz_model_ref_expls_new_ref
7199                        );
7200       delete_from_table('cz_lce_headers', 'lce_header_id', v_database_link, 'cz_pb_mgr.v_cz_lce_headers_new_ref', cz_pb_mgr.v_cz_lce_headers_new_ref);
7201       delete_from_table('cz_rules', 'rule_id', v_database_link, 'cz_pb_mgr.v_cz_rules_rule_id_new_ref', cz_pb_mgr.v_cz_rules_rule_id_new_ref);
7202       delete_from_table('cz_des_chart_features'
7203                        ,'rule_id'
7204                        ,v_database_link
7205                        ,'cz_pb_mgr.v_cz_des_feature_rid_new_ref'
7206                        ,cz_pb_mgr.v_cz_des_feature_rid_new_ref
7207                        );
7208       delete_from_table('cz_des_chart_cells'
7209                        ,'rule_id'
7210                        ,v_database_link
7211                        ,'cz_pb_mgr.v_cz_des_cells_rule_id_new_ref'
7212                        ,cz_pb_mgr.v_cz_des_cells_rule_id_new_ref
7213                        );
7214 
7215    delete_from_table('cz_ui_pages','ui_def_id',v_database_link,'cz_pb_mgr.g_cz_ui_pages_ui_def_ref',cz_pb_mgr.g_cz_ui_pages_ui_def_ref);
7216    delete_from_table('cz_ui_page_elements','ui_def_id','page_id','element_id',v_database_link,'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref','cz_pb_mgr.g_ui_ps_maps_page_id_tbl','cz_pb_mgr.g_ui_ps_maps_element_tbl',cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref);
7217    delete_from_table('cz_ui_page_refs','ui_def_id','page_set_id','page_ref_id',v_database_link,'cz_pb_mgr.g_page_refs_ui_def_new_ref','cz_pb_mgr.g_page_refs_pg_set_ref','cz_pb_mgr.g_page_refs_pg_ref_ref',cz_pb_mgr.g_page_refs_ui_def_new_ref);
7218    delete_from_table('cz_ui_page_sets','ui_def_id','page_set_id',v_database_link,'cz_pb_mgr.g_page_sets_ui_ref','cz_pb_mgr.g_page_sets_pg_tbl',cz_pb_mgr.g_page_sets_ui_ref);
7219    delete_from_table('cz_ui_refs','ui_def_id','model_ref_expl_id',v_database_link,'cz_pb_mgr.g_ui_refs_new_ui_def_ref','cz_pb_mgr.g_ui_refs_expl_id_ref',cz_pb_mgr.g_ui_refs_new_ui_def_ref);
7220    delete_from_table('cz_ui_cont_type_templs','ui_def_id','content_type',v_database_link,'cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref','cz_pb_mgr.l_cnt_typ_tmpls_cont_ref',cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref);
7221 
7222    --bug 11700415 skip rollback for ref templates and templ actions depending on global variable
7223    IF NOT g_skip_templ_rollback THEN
7224       delete_from_table('cz_ui_ref_templates','template_id','template_ui_def_id',
7225                      'ref_template_id','ref_template_ui_def_id',v_database_link,'cz_pb_mgr.g_TEMPLATE_ID_ref','cz_pb_mgr.g_TEMPLATE_UI_ref',
7226                      'cz_pb_mgr.g_REF_TEMPLATE_ID_ref','cz_pb_mgr.g_REF_TEMPL_UI_ref',cz_pb_mgr.g_TEMPLATE_ID_ref);
7227    END IF;
7228    --If UI action for templates inserted refine the array by removing action related to templates
7229    IF g_skip_templaction_rollback THEN
7230       refine_ui_action_array;
7231    END IF;
7232 
7233    delete_from_table('cz_ui_actions','ui_def_id','ui_action_id',v_database_link,'cz_pb_mgr.g_ui_actns_ui_uidef_ref','cz_pb_mgr.g_ui_actns_ui_act_id_ref',cz_pb_mgr.g_ui_actns_ui_uidef_ref);
7234    delete_from_table('cz_ui_images','ui_def_id','image_usage_code','entity_code',v_database_link,'cz_pb_mgr.l_ui_images_ui_ref','cz_pb_mgr.l_ui_images_usg_tbl','cz_pb_mgr.l_ui_images_enty_tbl',cz_pb_mgr.l_ui_images_ui_ref);
7235    delete_from_table('cz_signatures','signature_id',v_database_link,'cz_pb_mgr.v_sig_new_ref',cz_pb_mgr.v_sig_new_ref);
7236    delete_from_table('cz_signature_arguments','argument_signature_id','argument_index',v_database_link,'cz_pb_mgr.v_arg_sig_tbl','cz_pb_mgr.v_arg_ind_old_tbl',cz_pb_mgr.v_arg_sig_tbl);
7237    delete_from_table('cz_func_comp_specs','func_comp_id',v_database_link,'cz_pb_mgr.v_cz_func_comp_new_ref',cz_pb_mgr.v_cz_func_comp_new_ref);
7238    delete_from_table('cz_populators','populator_id',v_database_link,'cz_pb_mgr.v_populators_new_id_ref',cz_pb_mgr.v_populators_new_id_ref);
7239    delete_from_table('cz_filter_sets','filter_set_id',v_database_link,'cz_pb_mgr.v_filter_sets_new_id_ref',cz_pb_mgr.v_filter_sets_new_id_ref);
7240    delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.g_archives_new_ref',cz_pb_mgr.g_archives_new_ref);
7241 
7242    delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.mm_v_ht_sync_archives',cz_pb_mgr.mm_v_ht_sync_archives);
7243 
7244    delete_from_table('cz_archive_refs','archive_id','devl_project_id',v_database_link,'cz_pb_mgr.g_archive_id_ref','cz_pb_mgr.g_devl_proj_ref',cz_pb_mgr.g_archive_id_ref);
7245    delete_from_table('cz_localized_texts','intl_text_id',v_database_link,'cz_pb_mgr.v_cz_intl_text_new_ref',cz_pb_mgr.v_cz_intl_text_new_ref);
7246 
7247       delete_from_idx_tables('cz_rule_folders', 'rule_folder_id', cz_pb_mgr.v_cz_folders_id_old_ref, cz_pb_mgr.v_cz_folders_id_idx_ref);
7248       delete_from_idx_tables('cz_expression_nodes', 'expr_node_id', cz_pb_mgr.v_cz_enodes_enode_id_old_ref, cz_pb_mgr.v_cz_enodes_enode_id_idx_ref);
7249 
7250       DELETE FROM cz_pb_model_exports
7251             WHERE publication_id = cz_pb_mgr.v_publication_id;
7252 
7253       COMMIT;
7254       cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7255       cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', cz_pb_mgr.v_sql_err_msg);
7256       cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ROLLBACKDATA', SQLCODE);
7257    EXCEPTION
7258       WHEN OTHERS
7259       THEN
7260          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7261          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_ROLLBACK_ERR', 'SQLERRM', SQLERRM);
7262          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
7263          RAISE;
7264    END rollback_data;
7265 
7266 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7267 -----------procedure updates the status in cz_model_publications and cz_pb_model_exports
7268 -----------@p_publication_id : source publication id
7269 -----------@p_status : publication status
7270 -----------@p_link : database link name
7271 -----------@p_models_exported : source models that have entries in model exports
7272 -----------@x_status : publication status parameter
7273    PROCEDURE update_pb_status(
7274       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
7275      ,p_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
7276      ,p_models_exported IN OUT NOCOPY cz_pb_mgr.t_ref
7277      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
7278    )
7279    AS
7280    BEGIN
7281       -----update status on the source. p_link is null
7282       update_publication_status(p_publication_id, p_status, ' ');
7283 
7284       IF (p_models_exported.COUNT > 0)
7285       THEN
7286          FOR i IN p_models_exported.FIRST .. p_models_exported.LAST
7287          LOOP
7288             UPDATE cz_pb_model_exports t
7289                SET t.status = p_status
7290              WHERE t.model_id = p_models_exported(i) AND t.server_id = cz_pb_mgr.v_server_id AND t.publication_id = p_publication_id;
7291          END LOOP;
7292 
7293          COMMIT;
7294       END IF;
7295 
7296       -----set status for concurrent manager
7297       IF (x_status = PUBLICATION_ERROR)
7298       THEN
7299          cz_pb_mgr.global_export_retcode := 2;
7300       END IF;
7301    EXCEPTION
7302       WHEN OTHERS
7303       THEN
7304          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
7305          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDPBSTATUS', SQLCODE);
7306          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7307          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
7308          RAISE;
7309    END update_pb_status;
7310 
7311 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7312 --------function to validate the source and target schemas.
7313 --------a source model can be published on a target server
7314 --------having the same major and minor schema versions
7315 --------v_count when 0 is a failure else 1 indicates success
7316    FUNCTION validate_schema(target_server_id PLS_INTEGER)
7317       RETURN NUMBER
7318    IS
7319       v_source_major_version cz_db_settings.VALUE%TYPE;
7320       v_source_minor_version cz_db_settings.VALUE%TYPE;
7321       v_target_major_version cz_db_settings.VALUE%TYPE;
7322       v_target_minor_version cz_db_settings.VALUE%TYPE;
7323 
7324       CURSOR db_link_cur(p_server_id PLS_INTEGER)
7325       IS
7326          SELECT local_name, fndnam_link_name
7327            FROM cz_servers
7328           WHERE server_local_id = p_server_id;
7329 
7330       v_link_record db_link_cur%ROWTYPE;
7331       v_str VARCHAR2(4000);
7332       db_schema_compare_cur ref_cursor;
7333       v_count PLS_INTEGER := 0;
7334       v_db_link cz_servers.fndnam_link_name%TYPE;
7335    BEGIN
7336       OPEN db_link_cur(target_server_id);
7337 
7338       LOOP
7339          FETCH db_link_cur
7340           INTO v_link_record;
7341 
7342          EXIT WHEN db_link_cur%NOTFOUND;
7343          v_db_link := '@' || v_link_record.fndnam_link_name;
7344          cz_pb_mgr.v_server_local_name := v_link_record.local_name;
7345       END LOOP;
7346 
7347       CLOSE db_link_cur;
7348 
7349       IF LTRIM(RTRIM(v_db_link)) = '@'
7350       THEN
7351          v_count := 1;
7352       ELSE
7353          OPEN db_schema_compare_cur FOR    '	select count(*)'
7354                                         || ' '
7355                                         || 'from	cz_db_settings,'
7356                                         || ' '
7357                                         || 'cz_db_settings'
7358                                         || v_db_link
7359                                         || ' tgt'
7360                                         || ' '
7361                                         || 'where	cz_db_settings.setting_id = tgt.setting_id'
7362                                         || ' '
7363                                         || 'and	cz_db_settings.value = tgt.value'
7364                                         || ' '
7365                                         || 'and	cz_db_settings.setting_id = ''MAJOR_VERSION'''
7366                                         || ' '
7367                                         || 'INTERSECT'
7368                                         || ' '
7369                                         || 'select count(*)'
7370                                         || ' '
7371                                         || 'from	cz_db_settings,'
7372                                         || ' '
7373                                         || 'cz_db_settings'
7374                                         || v_db_link
7375                                         || ' tgt'
7376                                         || ' '
7377                                         || 'where	cz_db_settings.setting_id = tgt.setting_id'
7378                                         || ' '
7379                                         || 'and	cz_db_settings.value = tgt.value'
7380                                         || ' '
7381                                         || 'and	cz_db_settings.setting_id = ''MINOR_VERSION'' ';
7382 
7383          LOOP
7384             FETCH db_schema_compare_cur
7385              INTO v_count;
7386 
7387             EXIT WHEN db_schema_compare_cur%NOTFOUND;
7388          END LOOP;
7389 
7390          CLOSE db_schema_compare_cur;
7391       END IF;
7392 
7393       --------set commit size variable
7394       BEGIN
7395          SELECT VALUE
7396            INTO cz_pb_mgr.record_commit_size
7397            FROM cz_db_settings
7398           WHERE cz_db_settings.setting_id = record_commit_str;
7399       EXCEPTION
7400          WHEN OTHERS
7401          THEN
7402             cz_pb_mgr.record_commit_size := 500;
7403       END;
7404 
7405       RETURN v_count;
7406    EXCEPTION
7407       WHEN NO_DATA_FOUND
7408       THEN
7409          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_LINK_NAME');
7410          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
7411          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7412          RETURN v_count;
7413       WHEN OTHERS
7414       THEN
7415          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_VALIDATION_ERR');
7416          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
7417          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7418          RETURN v_count;
7419    END validate_schema;
7420 
7421 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7422 ------------ procedures for refreshing item sub-schema
7423    PROCEDURE load_usages
7424    AS
7425       l_sql_string VARCHAR2(32000);
7426    BEGIN
7427       cz_pb_mgr.v_model_usages_tbl.DELETE;
7428       cz_pb_mgr.v_usages_lang_tbl.DELETE;
7429 
7430       BEGIN
7431          SELECT model_usage_id
7432          BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl
7433            FROM cz_model_usages;
7434       EXCEPTION
7435          WHEN NO_DATA_FOUND
7436          THEN
7437             cz_pb_mgr.v_err_message := 'No model usages found';
7438             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7439          WHEN OTHERS
7440          THEN
7441             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
7442             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7443             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7444             RAISE;
7445       END;
7446 
7447       IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
7448       THEN
7449          l_sql_string :=
7450                'BEGIN '
7451             || ' DELETE FROM CZ_MODEL_USAGES'
7452             || cz_pb_mgr.v_db_link
7453             || '; '
7454             || ' '
7455             || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
7456             || ' '
7457             || 'LOOP'
7458             || ' '
7459             || 'INSERT INTO cz_model_usages'
7460             || cz_pb_mgr.v_db_link
7461             || ' '
7462             || '(MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE)'
7463             || ' '
7464             || 'SELECT MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE FROM cz_model_usages t'
7465             || ' '
7466             || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i);'
7467             || ' '
7468             || 'END LOOP;'
7469             || ' '
7470             || 'END;';
7471 
7472          EXECUTE IMMEDIATE l_sql_string;
7473       END IF;
7474 
7475       cz_pb_mgr.v_model_usages_tbl.DELETE;
7476       cz_pb_mgr.v_usages_lang_tbl.DELETE;
7477 
7478       BEGIN
7479          SELECT model_usage_id, LANGUAGE
7480          BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl, v_usages_lang_tbl
7481            FROM cz_model_usages_tl;
7482       EXCEPTION
7483          WHEN NO_DATA_FOUND
7484          THEN
7485             cz_pb_mgr.v_err_message := 'No model usages translations found';
7486             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7487          WHEN OTHERS
7488          THEN
7489             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages_tl', 'SQLERRM', SQLERRM);
7490             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7491             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7492             RAISE;
7493       END;
7494 
7495       IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
7496       THEN
7497          EXECUTE IMMEDIATE    'BEGIN'
7498                            || ' '
7499                            || 'DELETE FROM CZ_MODEL_USAGES_TL'
7500                            || cz_pb_mgr.v_db_link
7501                            || ';'
7502                            || ' '
7503                            || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
7504                            || ' '
7505                            || 'LOOP'
7506                            || ' '
7507                            || 'BEGIN'
7508                            || ' '
7509                            || 'INSERT INTO cz_model_usages_tl'
7510                            || cz_pb_mgr.v_db_link
7511                            || ' '
7512                            || '(MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION)'
7513                            || ' '
7514                            || 'SELECT MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION FROM cz_model_usages_tl t'
7515                            || ' '
7516                            || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i)'
7517                            || ' '
7518                            || 'and t.language=cz_pb_mgr.v_usages_lang_tbl(i);'
7519                            || ' '
7520                            || 'END;'
7521                            || ' '
7522                            || 'END LOOP;'
7523                            || ' '
7524                            || 'END;';
7525       END IF;
7526 
7527       cz_pb_mgr.v_model_usages_tbl.DELETE;
7528       cz_pb_mgr.v_usages_lang_tbl.DELETE;
7529    EXCEPTION
7530       WHEN OTHERS
7531       THEN
7532          ROLLBACK;
7533          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
7534          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USAGES', SQLCODE);
7535          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7536          RAISE;
7537    END load_usages;
7538 
7539 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7540 ----procedure that checks if a model has been published earlier
7541 ----@p_publication_id : publication_id of the publication request
7542 ----x_record_count : returns count of earlier publications
7543    PROCEDURE chk_if_aleady_published(p_publication_id IN cz_model_publications.publication_id%TYPE, x_record_count IN OUT NOCOPY NUMBER)
7544    AS
7545    BEGIN
7546       IF (g_object_type = MODEL_PUBLICATION)
7547       THEN
7548          SELECT COUNT(*)
7549            INTO x_record_count
7550            FROM cz_model_publications z
7551           WHERE z.object_id = (SELECT object_id
7552                                  FROM cz_model_publications
7553                                 WHERE cz_model_publications.publication_id = p_publication_id)
7554             AND z.server_id = (SELECT server_id
7555                                  FROM cz_model_publications
7556                                 WHERE cz_model_publications.publication_id = p_publication_id)
7557             AND z.model_last_struct_update =
7558                    (SELECT last_struct_update
7559                       FROM cz_devl_projects
7560                      WHERE cz_devl_projects.devl_project_id =
7561                                           (SELECT object_id
7562                                              FROM cz_model_publications
7563                                             WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = '0'))
7564             AND z.export_status IN('OK', 'PUP')
7565             AND z.source_target_flag = g_source_flag
7566             AND z.deleted_flag = record_not_deleted;
7567       ELSIF(g_object_type = template_publication)
7568       THEN
7569          SELECT COUNT(*)
7570            INTO x_record_count
7571            FROM cz_model_publications z
7572           WHERE z.object_id = (SELECT object_id
7573                                  FROM cz_model_publications
7574                                 WHERE cz_model_publications.publication_id = p_publication_id)
7575             AND z.server_id = (SELECT server_id
7576                                  FROM cz_model_publications
7577                                 WHERE cz_model_publications.publication_id = p_publication_id)
7578             AND z.export_status IN('OK', 'PUP')
7579             AND z.source_target_flag = g_source_flag
7580             AND z.deleted_flag = record_not_deleted;
7581       END IF;
7582    EXCEPTION
7583       WHEN OTHERS
7584       THEN
7585          RAISE;
7586    END chk_if_aleady_published;
7587 
7588 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7589 -----procedure that gets the date on which the model was last published
7590 -----@p_model_id: model_id on the publication request
7591 -----@p_server_id : server_id on the publication request
7592 -----x_last_xfr_activity : last published date
7593    PROCEDURE get_last_xfr_activity(
7594       p_model_id IN cz_model_publications.model_id%TYPE
7595      ,p_server_id IN cz_model_publications.server_id%TYPE
7596      ,x_last_xfr_activity IN OUT NOCOPY DATE
7597    )
7598    AS
7599    BEGIN
7600       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
7601       THEN
7602          SELECT last_xfr_activity
7603            INTO x_last_xfr_activity
7604            FROM cz_pb_model_exports
7605           WHERE cz_pb_model_exports.export_id =
7606                    (SELECT MAX(export_id)
7607                       FROM cz_pb_model_exports z
7608                      WHERE z.root_model_id = p_model_id
7609                        AND z.server_id = p_server_id
7610                        AND z.status = 'OK'
7611                        AND z.publication_id IN(
7612                               SELECT publication_id
7613                                 FROM cz_model_publications
7614                                WHERE export_status IN('OK', 'PUP')
7615                                  AND server_id = p_server_id
7616                                  AND UPPER(publication_mode) = cz_model_migration_pvt.mode_migration));
7617 				 --SPUPPALA bug#7116052 7-AUG-2009
7618       ELSE
7619          SELECT last_xfr_activity
7620            INTO x_last_xfr_activity
7621            FROM cz_pb_model_exports
7622           WHERE cz_pb_model_exports.export_id =
7623                    (SELECT MAX(export_id)
7624                       FROM cz_pb_model_exports z
7625                      WHERE z.root_model_id = p_model_id
7626                        AND z.server_id = p_server_id
7627                        AND z.status = 'OK'
7628                        AND z.publication_id IN(
7629                               SELECT publication_id
7630                                 FROM cz_model_publications
7631                                WHERE export_status IN('OK', 'PUP')
7632                                  AND server_id = p_server_id
7633                                  AND UPPER(publication_mode) <> cz_model_migration_pvt.mode_migration));
7634 				 --SPUPPALA bug#7116052 7-AUG-2009
7635       END IF;
7636    EXCEPTION
7637       WHEN OTHERS
7638       THEN
7639          x_last_xfr_activity := NULL;
7640    END get_last_xfr_activity;
7641 
7642 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7643 -----procedure that retrieves the last update date from cz_expression nodes
7644 -----required to check if rules have been changed since it was last published
7645    PROCEDURE get_max_expr_date(p_model_id cz_model_publications.model_id%TYPE, x_expr_node_date IN OUT NOCOPY DATE)
7646    AS
7647    BEGIN
7648       SELECT MAX(last_update_date)
7649         INTO x_expr_node_date
7650         FROM cz_expression_nodes t
7651        WHERE t.deleted_flag = record_not_deleted
7652          AND t.expr_type <> 208
7653          AND EXISTS(SELECT 1
7654                       FROM cz_rules
7655                      WHERE rule_id = t.rule_id AND devl_project_id = p_model_id AND deleted_flag = record_not_deleted)
7656          AND t.deleted_flag = record_not_deleted
7657          AND t.expr_type <> 208;
7658    EXCEPTION
7659       WHEN OTHERS
7660       THEN
7661          x_expr_node_date := cz_utils.epoch_begin;
7662    END get_max_expr_date;
7663 
7664 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7665 -----procedure that retrieves the last_struct_update date
7666 -----required to check if ps structure been changed since model was last published
7667    PROCEDURE get_last_struct_date(p_model_id cz_model_publications.model_id%TYPE, x_last_struct_date IN OUT NOCOPY DATE)
7668    AS
7669    BEGIN
7670       SELECT last_struct_update
7671         INTO x_last_struct_date
7672         FROM cz_devl_projects t
7673        WHERE t.deleted_flag = record_not_deleted AND t.devl_project_id = p_model_id;
7674    EXCEPTION
7675       WHEN OTHERS
7676       THEN
7677          x_last_struct_date := cz_utils.epoch_begin;
7678    END get_last_struct_date;
7679 
7680 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7681 -----procedure that returns the source ui_defs for export
7682 -----@p_model_id   : model that is exported
7683 -----@p_src_models : source models array
7684 -----x_ui_def_ref  : output of source ui defs
7685    PROCEDURE get_source_uis(
7686       p_model_id IN cz_model_publications.model_id%TYPE
7687      ,p_src_models IN cz_pb_mgr.t_ref
7688      ,x_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref
7689    )
7690    AS
7691       v_ui_def_count NUMBER := 0;
7692       v_src_uis_tbl cz_pb_mgr.t_ref;
7693       v_cz_ui_defs_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
7694       l_export_model_id cz_devl_projects.devl_project_id%TYPE;
7695    BEGIN
7696       IF (p_src_models.COUNT > 0)
7697       THEN
7698          x_ui_def_ref.DELETE;
7699 
7700          FOR i IN p_src_models.FIRST .. p_src_models.LAST
7701          LOOP
7702             l_export_model_id := p_src_models(i);
7703             v_src_uis_tbl.DELETE;
7704 
7705             BEGIN
7706                SELECT cz_ui_defs.ui_def_id
7707                BULK COLLECT INTO v_src_uis_tbl
7708                  FROM cz_ui_defs
7709                 WHERE cz_ui_defs.devl_project_id = l_export_model_id
7710                   AND cz_ui_defs.deleted_flag = '0'
7711                   AND cz_ui_defs.ui_style <> 7
7712                   AND cz_ui_defs.NAME <> 'MUID';
7713             EXCEPTION
7714                WHEN OTHERS
7715                THEN
7716                   cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7717                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7718             END;
7719 
7720             IF (v_src_uis_tbl.COUNT > 0)
7721             THEN
7722                v_ui_def_count := x_ui_def_ref.COUNT;
7723 
7724                FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7725                LOOP
7726                   IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7727                   THEN
7728                      v_ui_def_count := v_ui_def_count + 1;
7729                      x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7730                      v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7731                   END IF;
7732                END LOOP;
7733             END IF;
7734 
7735             v_src_uis_tbl.DELETE;
7736 
7737             BEGIN
7738                SELECT DISTINCT ui_def_ref_id
7739                BULK COLLECT INTO v_src_uis_tbl
7740                           FROM cz_ui_nodes
7741                          WHERE cz_ui_nodes.ui_def_id IN(
7742                                   SELECT cz_ui_defs.ui_def_id
7743                                     FROM cz_ui_defs
7744                                    WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7745                                          AND cz_ui_defs.NAME <> 'MUID')
7746                            AND cz_ui_nodes.ui_def_ref_id IN(
7747                                   SELECT cz_ui_defs.ui_def_id
7748                                     FROM cz_ui_defs
7749                                    WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7750                                          AND cz_ui_defs.NAME <> 'MUID')
7751                            AND cz_ui_nodes.deleted_flag = '0'
7752                            AND cz_ui_nodes.ui_def_ref_id IS NOT NULL;
7753             EXCEPTION
7754                WHEN OTHERS
7755                THEN
7756                   cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7757                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7758             END;
7759 
7760             IF (v_src_uis_tbl.COUNT > 0)
7761             THEN
7762                v_ui_def_count := x_ui_def_ref.COUNT;
7763 
7764                FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7765                LOOP
7766                   IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7767                   THEN
7768                      v_ui_def_count := v_ui_def_count + 1;
7769                      x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7770                      v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7771                   END IF;
7772                END LOOP;
7773             END IF;
7774          END LOOP;                                                                                       /* end loop of FOR I IN p_src_models.FIRST */
7775       END IF;                                                                                                 /* end if of (p_src_models.COUNT > 0) */
7776    EXCEPTION
7777       WHEN OTHERS
7778       THEN
7779          RAISE;
7780    END get_source_uis;
7781 
7782 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7783 ----procedure that returns the max last_update_date of ui schema
7784    PROCEDURE get_max_ui_date(p_ui_def_id IN cz_model_publications.ui_def_id%TYPE, x_max_update_date IN OUT NOCOPY DATE)
7785    AS
7786       v_ui_def_id_date cz_ui_defs.last_update_date%TYPE;
7787       v_ui_node_id_date cz_ui_nodes.last_update_date%TYPE;
7788       v_ui_props_date cz_ui_nodes.last_update_date%TYPE;
7789       v_ui_node_props_date cz_ui_nodes.last_update_date%TYPE;
7790       v_ui_node_intl_date cz_ui_nodes.last_update_date%TYPE;
7791       v_initialized_date DATE;
7792       v_ui_pages_date DATE;
7793       v_ui_pages_capt_date DATE;
7794       v_ui_page_sets_date DATE;
7795       v_ui_page_refs_date DATE;
7796       v_ui_pg_ref_capt_date DATE;
7797       v_ui_refs_date DATE;
7798       v_ui_templs_date DATE;
7799       v_ui_cont_templs_date DATE;
7800       v_ui_actions_date DATE;
7801       v_ui_images_date DATE;
7802       v_page_elements_date DATE;
7803 
7804       CURSOR ui_def_cur(ui_ui_def_id NUMBER)
7805       IS
7806          SELECT   last_update_date
7807              FROM cz_ui_defs
7808             WHERE cz_ui_defs.ui_def_id = ui_ui_def_id AND cz_ui_defs.deleted_flag = '0'
7809          ORDER BY last_update_date DESC;
7810 
7811       CURSOR ui_nodes_cur(node_ui_def_id NUMBER)
7812       IS
7813          SELECT   last_update_date
7814              FROM cz_ui_nodes
7815             WHERE cz_ui_nodes.ui_def_id = node_ui_def_id AND cz_ui_nodes.deleted_flag = '0'
7816          ORDER BY last_update_date DESC;
7817 
7818       CURSOR ui_properties_cur(prop_ui_def_id NUMBER)
7819       IS
7820          SELECT   last_update_date
7821              FROM cz_ui_properties
7822             WHERE cz_ui_properties.ui_def_id = prop_ui_def_id AND cz_ui_properties.deleted_flag = '0'
7823          ORDER BY last_update_date DESC;
7824 
7825       CURSOR ui_node_props_cur(nodeprops_ui_def_id NUMBER)
7826       IS
7827          SELECT   last_update_date
7828              FROM cz_ui_node_props
7829             WHERE cz_ui_node_props.ui_def_id = nodeprops_ui_def_id AND cz_ui_node_props.deleted_flag = '0'
7830          ORDER BY last_update_date DESC;
7831 
7832       CURSOR ui_intl_texts_cur(p_ui_def_id NUMBER)
7833       IS
7834          SELECT   last_update_date
7835              FROM cz_intl_texts
7836             WHERE intl_text_id IN(SELECT f.tool_tip_id
7837                                     FROM cz_ui_nodes f
7838                                    WHERE f.ui_def_id = p_ui_def_id AND f.deleted_flag = '0'
7839                                   UNION
7840                                   SELECT g.caption_id
7841                                     FROM cz_ui_nodes g
7842                                    WHERE g.ui_def_id = p_ui_def_id AND g.deleted_flag = '0')
7843          ORDER BY last_update_date DESC;
7844 
7845       CURSOR ui_pages_cur(ui_pages_def_id NUMBER)
7846       IS
7847          SELECT   last_update_date
7848              FROM cz_ui_pages
7849             WHERE cz_ui_pages.ui_def_id = ui_pages_def_id
7850          ORDER BY last_update_date DESC;
7851 
7852       CURSOR ui_pages_capt_cur(p_ui_def_id NUMBER)
7853       IS
7854          SELECT   last_update_date
7855              FROM cz_intl_texts
7856             WHERE intl_text_id IN(SELECT caption_text_id
7857                                     FROM cz_ui_pages
7858                                    WHERE cz_ui_pages.ui_def_id = p_ui_def_id)
7859          ORDER BY last_update_date DESC;
7860 
7861       CURSOR ui_page_sets_cur(p_ui_def_id NUMBER)
7862       IS
7863          SELECT   last_update_date
7864              FROM cz_ui_page_sets
7865             WHERE cz_ui_page_sets.ui_def_id = p_ui_def_id AND cz_ui_page_sets.deleted_flag = '0'
7866          ORDER BY last_update_date DESC;
7867 
7868       CURSOR ui_page_refs_cur(p_ui_def_id NUMBER)
7869       IS
7870          SELECT   last_update_date
7871              FROM cz_ui_page_refs
7872             WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id AND cz_ui_page_refs.deleted_flag = '0'
7873          ORDER BY last_update_date DESC;
7874 
7875       CURSOR ui_page_refs_capt_cur(p_ui_def_id NUMBER)
7876       IS
7877          SELECT   last_update_date
7878              FROM cz_intl_texts
7879             WHERE intl_text_id IN(SELECT caption_text_id
7880                                     FROM cz_ui_page_refs
7881                                    WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id)
7882          ORDER BY last_update_date DESC;
7883 
7884       CURSOR ui_refs_cur(p_ui_def_id NUMBER)
7885       IS
7886          SELECT   last_update_date
7887              FROM cz_ui_refs
7888             WHERE cz_ui_refs.ui_def_id = p_ui_def_id AND cz_ui_refs.deleted_flag = '0'
7889          ORDER BY last_update_date DESC;
7890 
7891       CURSOR ui_templs_cur(p_ui_def_id NUMBER)
7892       IS
7893          SELECT   last_update_date
7894              FROM cz_ui_templates
7895             WHERE cz_ui_templates.ui_def_id = p_ui_def_id AND cz_ui_templates.deleted_flag = '0'
7896          ORDER BY last_update_date DESC;
7897 
7898       CURSOR ui_cont_templs_cur(p_ui_def_id NUMBER)
7899       IS
7900          SELECT   last_update_date
7901              FROM cz_ui_cont_type_templs
7902             WHERE cz_ui_cont_type_templs.ui_def_id = p_ui_def_id AND cz_ui_cont_type_templs.deleted_flag = '0'
7903          ORDER BY last_update_date DESC;
7904 
7905       CURSOR ui_actions_cur(p_ui_def_id NUMBER)
7906       IS
7907          SELECT   last_update_date
7908              FROM cz_ui_actions
7909             WHERE cz_ui_actions.ui_def_id = p_ui_def_id
7910          ORDER BY last_update_date DESC;
7911 
7912       CURSOR ui_images_cur(p_ui_def_id NUMBER)
7913       IS
7914          SELECT   last_update_date
7915              FROM cz_ui_images
7916             WHERE cz_ui_images.ui_def_id = p_ui_def_id
7917          ORDER BY last_update_date DESC;
7918       CURSOR ui_page_elements(p_ui_def_id NUMBER)
7919       IS
7920          SELECT   last_update_date
7921              FROM cz_ui_page_elements
7922             WHERE cz_ui_page_elements.ui_def_id = p_ui_def_id
7923          ORDER BY last_update_date DESC;
7924    BEGIN
7925       v_initialized_date := cz_utils.epoch_begin;
7926       v_ui_def_id_date := v_initialized_date;
7927       v_ui_node_id_date := v_initialized_date;
7928       v_ui_props_date := v_initialized_date;
7929       v_ui_node_props_date := v_initialized_date;
7930       v_ui_node_intl_date := v_initialized_date;
7931       v_ui_pages_date := v_initialized_date;
7932       v_ui_pages_capt_date := v_initialized_date;
7933       v_ui_page_sets_date := v_initialized_date;
7934       v_ui_page_refs_date := v_initialized_date;
7935       v_ui_pg_ref_capt_date := v_initialized_date;
7936       v_ui_refs_date := v_initialized_date;
7937       v_ui_templs_date := v_initialized_date;
7938       v_ui_cont_templs_date := v_initialized_date;
7939       v_ui_actions_date := v_initialized_date;
7940       v_ui_images_date := v_initialized_date;
7941 
7942       BEGIN
7943          OPEN ui_def_cur(p_ui_def_id);
7944 
7945          LOOP
7946             FETCH ui_def_cur
7947              INTO v_ui_def_id_date;
7948 
7949             EXIT WHEN ui_def_cur%NOTFOUND;
7950             EXIT WHEN ui_def_cur%ROWCOUNT = 1;
7951          END LOOP;
7952 
7953          CLOSE ui_def_cur;
7954       EXCEPTION
7955          WHEN OTHERS
7956          THEN
7957             v_ui_def_id_date := cz_utils.epoch_begin;
7958 
7959             CLOSE ui_def_cur;
7960       END;
7961 
7962       BEGIN
7963          OPEN ui_nodes_cur(p_ui_def_id);
7964 
7965          LOOP
7966             FETCH ui_nodes_cur
7967              INTO v_ui_node_id_date;
7968 
7969             EXIT WHEN ui_nodes_cur%NOTFOUND;
7970             EXIT WHEN ui_nodes_cur%ROWCOUNT = 1;
7971          END LOOP;
7972 
7973          CLOSE ui_nodes_cur;
7974       EXCEPTION
7975          WHEN OTHERS
7976          THEN
7977             v_ui_node_id_date := cz_utils.epoch_begin;
7978 
7979             CLOSE ui_nodes_cur;
7980       END;
7981 
7982       BEGIN
7983          OPEN ui_properties_cur(p_ui_def_id);
7984 
7985          LOOP
7986             FETCH ui_properties_cur
7987              INTO v_ui_props_date;
7988 
7989             EXIT WHEN ui_properties_cur%NOTFOUND;
7990             EXIT WHEN ui_properties_cur%ROWCOUNT = 1;
7991          END LOOP;
7992 
7993          CLOSE ui_properties_cur;
7994       EXCEPTION
7995          WHEN OTHERS
7996          THEN
7997             v_ui_props_date := cz_utils.epoch_begin;
7998 
7999             CLOSE ui_properties_cur;
8000       END;
8001 
8002       BEGIN
8003          OPEN ui_node_props_cur(p_ui_def_id);
8004 
8005          LOOP
8006             FETCH ui_node_props_cur
8007              INTO v_ui_node_props_date;
8008 
8009             EXIT WHEN ui_node_props_cur%NOTFOUND;
8010             EXIT WHEN ui_node_props_cur%ROWCOUNT = 1;
8011          END LOOP;
8012 
8013          CLOSE ui_node_props_cur;
8014       EXCEPTION
8015          WHEN OTHERS
8016          THEN
8017             v_ui_node_props_date := cz_utils.epoch_begin;
8018 
8019             CLOSE ui_node_props_cur;
8020       END;
8021 
8022       BEGIN
8023          OPEN ui_intl_texts_cur(p_ui_def_id);
8024 
8025          LOOP
8026             FETCH ui_intl_texts_cur
8027              INTO v_ui_node_intl_date;
8028 
8029             EXIT WHEN ui_intl_texts_cur%NOTFOUND;
8030             EXIT WHEN ui_intl_texts_cur%ROWCOUNT = 1;
8031          END LOOP;
8032 
8033          CLOSE ui_intl_texts_cur;
8034       EXCEPTION
8035          WHEN OTHERS
8036          THEN
8037             v_ui_node_intl_date := cz_utils.epoch_begin;
8038 
8039             CLOSE ui_intl_texts_cur;
8040       END;
8041 
8042       BEGIN
8043          OPEN ui_pages_cur(p_ui_def_id);
8044 
8045          LOOP
8046             FETCH ui_pages_cur
8047              INTO v_ui_pages_date;
8048 
8049             EXIT WHEN ui_pages_cur%NOTFOUND;
8050             EXIT WHEN ui_pages_cur%ROWCOUNT = 1;
8051          END LOOP;
8052 
8053          CLOSE ui_pages_cur;
8054       EXCEPTION
8055          WHEN OTHERS
8056          THEN
8057             v_ui_pages_date := cz_utils.epoch_begin;
8058 
8059             CLOSE ui_pages_cur;
8060       END;
8061 
8062       BEGIN
8063          OPEN ui_pages_capt_cur(p_ui_def_id);
8064 
8065          LOOP
8066             FETCH ui_pages_capt_cur
8067              INTO v_ui_pages_capt_date;
8068 
8069             EXIT WHEN ui_pages_capt_cur%NOTFOUND;
8070             EXIT WHEN ui_pages_capt_cur%ROWCOUNT = 1;
8071          END LOOP;
8072 
8073          CLOSE ui_pages_capt_cur;
8074       EXCEPTION
8075          WHEN OTHERS
8076          THEN
8077             v_ui_pages_capt_date := cz_utils.epoch_begin;
8078 
8079             CLOSE ui_pages_capt_cur;
8080       END;
8081 
8082       BEGIN
8083          OPEN ui_page_sets_cur(p_ui_def_id);
8084 
8085          LOOP
8086             FETCH ui_page_sets_cur
8087              INTO v_ui_page_sets_date;
8088 
8089             EXIT WHEN ui_page_sets_cur%NOTFOUND;
8090             EXIT WHEN ui_page_sets_cur%ROWCOUNT = 1;
8091          END LOOP;
8092 
8093          CLOSE ui_page_sets_cur;
8094       EXCEPTION
8095          WHEN OTHERS
8096          THEN
8097             v_ui_page_sets_date := cz_utils.epoch_begin;
8098 
8099             CLOSE ui_page_sets_cur;
8100       END;
8101 
8102       BEGIN
8103          OPEN ui_page_refs_cur(p_ui_def_id);
8104 
8105          LOOP
8106             FETCH ui_page_refs_cur
8107              INTO v_ui_page_refs_date;
8108 
8109             EXIT WHEN ui_page_refs_cur%NOTFOUND;
8110             EXIT WHEN ui_page_refs_cur%ROWCOUNT = 1;
8111          END LOOP;
8112 
8113          CLOSE ui_page_refs_cur;
8114       EXCEPTION
8115          WHEN OTHERS
8116          THEN
8117             v_ui_page_refs_date := cz_utils.epoch_begin;
8118 
8119             CLOSE ui_page_refs_cur;
8120       END;
8121 
8122       BEGIN
8123          OPEN ui_page_refs_capt_cur(p_ui_def_id);
8124 
8125          LOOP
8126             FETCH ui_page_refs_capt_cur
8127              INTO v_ui_pg_ref_capt_date;
8128 
8129             EXIT WHEN ui_page_refs_capt_cur%NOTFOUND;
8130             EXIT WHEN ui_page_refs_capt_cur%ROWCOUNT = 1;
8131          END LOOP;
8132 
8133          CLOSE ui_page_refs_capt_cur;
8134       EXCEPTION
8135          WHEN OTHERS
8136          THEN
8137             v_ui_pg_ref_capt_date := cz_utils.epoch_begin;
8138 
8139             CLOSE ui_page_refs_capt_cur;
8140       END;
8141 
8142       BEGIN
8143          OPEN ui_refs_cur(p_ui_def_id);
8144 
8145          LOOP
8146             FETCH ui_refs_cur
8147              INTO v_ui_refs_date;
8148 
8149             EXIT WHEN ui_refs_cur%NOTFOUND;
8150             EXIT WHEN ui_refs_cur%ROWCOUNT = 1;
8151          END LOOP;
8152 
8153          CLOSE ui_refs_cur;
8154       EXCEPTION
8155          WHEN OTHERS
8156          THEN
8157             v_ui_refs_date := cz_utils.epoch_begin;
8158 
8159             CLOSE ui_refs_cur;
8160       END;
8161 
8162       BEGIN
8163          OPEN ui_templs_cur(p_ui_def_id);
8164 
8165          LOOP
8166             FETCH ui_templs_cur
8167              INTO v_ui_templs_date;
8168 
8169             EXIT WHEN ui_templs_cur%NOTFOUND;
8170             EXIT WHEN ui_templs_cur%ROWCOUNT = 1;
8171          END LOOP;
8172 
8173          CLOSE ui_templs_cur;
8174       EXCEPTION
8175          WHEN OTHERS
8176          THEN
8177             v_ui_templs_date := cz_utils.epoch_begin;
8178 
8179             CLOSE ui_templs_cur;
8180       END;
8181 
8182       BEGIN
8183          OPEN ui_cont_templs_cur(p_ui_def_id);
8184 
8185          LOOP
8186             FETCH ui_cont_templs_cur
8187              INTO v_ui_cont_templs_date;
8188 
8189             EXIT WHEN ui_cont_templs_cur%NOTFOUND;
8190             EXIT WHEN ui_cont_templs_cur%ROWCOUNT = 1;
8191          END LOOP;
8192 
8193          CLOSE ui_cont_templs_cur;
8194       EXCEPTION
8195          WHEN OTHERS
8196          THEN
8197             v_ui_cont_templs_date := cz_utils.epoch_begin;
8198 
8199             CLOSE ui_cont_templs_cur;
8200       END;
8201 
8202       BEGIN
8203          OPEN ui_actions_cur(p_ui_def_id);
8204 
8205          LOOP
8206             FETCH ui_actions_cur
8207              INTO v_ui_actions_date;
8208 
8209             EXIT WHEN ui_actions_cur%NOTFOUND;
8210             EXIT WHEN ui_actions_cur%ROWCOUNT = 1;
8211          END LOOP;
8212 
8213          CLOSE ui_actions_cur;
8214       EXCEPTION
8215          WHEN OTHERS
8216          THEN
8217             v_ui_actions_date := cz_utils.epoch_begin;
8218 
8219             CLOSE ui_actions_cur;
8220       END;
8221 
8222       BEGIN
8223          OPEN ui_images_cur(p_ui_def_id);
8224 
8225          LOOP
8226             FETCH ui_images_cur
8227              INTO v_ui_images_date;
8228 
8229             EXIT WHEN ui_images_cur%NOTFOUND;
8230             EXIT WHEN ui_images_cur%ROWCOUNT = 1;
8231          END LOOP;
8232 
8233          CLOSE ui_images_cur;
8234       EXCEPTION
8235          WHEN OTHERS
8236          THEN
8237             v_ui_images_date := cz_utils.epoch_begin;
8238 
8239             CLOSE ui_images_cur;
8240       END;
8241 
8242       BEGIN
8243          OPEN ui_page_elements(p_ui_def_id);
8244 
8245          LOOP
8246             FETCH ui_page_elements
8247              INTO v_page_elements_date;
8248 
8249             EXIT WHEN ui_page_elements%NOTFOUND;
8250             EXIT WHEN ui_page_elements%ROWCOUNT = 1;
8251          END LOOP;
8252 
8253          CLOSE ui_page_elements;
8254       EXCEPTION
8255          WHEN OTHERS
8256          THEN
8257             v_page_elements_date := cz_utils.epoch_begin;
8258             CLOSE ui_page_elements;
8259       END;
8260       BEGIN
8261          SELECT MAX(GREATEST(v_ui_def_id_date
8262                             ,v_ui_node_id_date
8263                             ,v_ui_props_date
8264                             ,v_ui_node_props_date
8265                             ,v_ui_node_intl_date
8266                             ,v_ui_pages_date
8267                             ,v_ui_pages_capt_date
8268                             ,v_ui_page_sets_date
8269                             ,v_ui_page_refs_date
8270                             ,v_ui_page_refs_date
8271                             ,v_ui_pg_ref_capt_date
8272                             ,v_ui_refs_date
8273                             ,v_ui_templs_date
8274                             ,v_ui_cont_templs_date
8275                             ,v_ui_actions_date
8276                             ,v_ui_images_date
8277                             ,v_page_elements_date
8278                             )
8279                    )
8280            INTO x_max_update_date
8281            FROM DUAL;
8282       EXCEPTION
8283          WHEN OTHERS
8284          THEN
8285             x_max_update_date := cz_utils.epoch_begin;
8286       END;
8287    EXCEPTION
8288       WHEN OTHERS
8289       THEN
8290          RAISE;
8291    END get_max_ui_date;
8292 
8293 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8294 -------procedure that retrieves all source models
8295    PROCEDURE get_source_models(p_model_id IN cz_model_publications.model_id%TYPE, x_models_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
8296    AS
8297       v_count PLS_INTEGER := 0;
8298       v_component_id cz_model_ref_expls.component_id%TYPE;
8299 
8300       CURSOR models_cur(in_root_model NUMBER)
8301       IS
8302          SELECT DISTINCT component_id
8303                     FROM cz_model_ref_expls x
8304                    WHERE x.model_id = in_root_model AND x.ps_node_type IN(263, 264) AND x.deleted_flag = '0';
8305    BEGIN
8306       x_models_tbl.DELETE;
8307       v_count := 0;
8308 
8309       OPEN models_cur(p_model_id);
8310 
8311       LOOP
8312          FETCH models_cur
8313           INTO v_component_id;
8314 
8315          EXIT WHEN models_cur%NOTFOUND;
8316          v_count := v_count + 1;
8317          x_models_tbl(v_count) := v_component_id;
8318       END LOOP;
8319 
8320       CLOSE models_cur;
8321 
8322       v_count := v_count + 1;
8323       x_models_tbl(v_count) := p_model_id;
8324    EXCEPTION
8325       WHEN OTHERS
8326       THEN
8327          RAISE;
8328    END get_source_models;
8329 
8330 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8331 --------procedure that checks if logic has changed since the model was last published
8332    PROCEDURE chk_if_logic_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8333    AS
8334       v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
8335       v_expr_node_date cz_ui_nodes.last_update_date%TYPE;
8336    BEGIN
8337       IF (p_model_array.COUNT > 0)
8338       THEN
8339          FOR i IN p_model_array.FIRST .. p_model_array.LAST
8340          LOOP
8341             get_max_expr_date(p_model_array(i), v_expr_node_date);
8342 
8343             IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_expr_node_date))
8344             THEN
8345                x_record_count := refresh_rules_count;
8346                EXIT;
8347             END IF;
8348 
8349             BEGIN
8350                SELECT last_logic_update
8351                  INTO v_last_logic_update
8352                  FROM cz_devl_projects
8353                 WHERE cz_devl_projects.devl_project_id = p_model_array(i) AND cz_devl_projects.deleted_flag = '0';
8354             EXCEPTION
8355                WHEN OTHERS
8356                THEN
8357                   v_last_logic_update := NULL;
8358             END;
8359 
8360             IF ((v_last_logic_update IS NOT NULL) AND(p_last_xfr_date < v_last_logic_update))
8361             THEN
8362                x_record_count := refresh_rules_count;
8363                EXIT;
8364             END IF;
8365          END LOOP;
8366       END IF;
8367    EXCEPTION
8368       WHEN OTHERS
8369       THEN
8370          RAISE;
8371    END chk_if_logic_changed;
8372 
8373 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8374 --------procedure that checks if archives have changed since the model was last published
8375    PROCEDURE chk_if_archives_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8376    AS
8377       v_last_archive_update cz_archives.last_update_date%TYPE;
8378    BEGIN
8379       IF (p_model_array.COUNT > 0)
8380       THEN
8381          FOR i IN p_model_array.FIRST .. p_model_array.LAST
8382          LOOP
8383             BEGIN
8384                SELECT GREATEST(MAX(arch.last_update_date), MAX(refs.last_update_date))
8385                  INTO v_last_archive_update
8386                  FROM cz_archives arch, cz_archive_refs refs
8387                 WHERE refs.devl_project_id = p_model_array(i) AND arch.archive_id = refs.archive_id AND arch.deleted_flag = '0'
8388                       AND refs.deleted_flag = 0;
8389             EXCEPTION
8390                WHEN NO_DATA_FOUND
8391                THEN
8392                   v_last_archive_update := NULL;
8393             END;
8394 
8395             IF ((v_last_archive_update IS NOT NULL) AND(p_last_xfr_date < v_last_archive_update))
8396             THEN
8397                x_record_count := refresh_rules_count;
8398                EXIT;
8399             END IF;
8400          END LOOP;
8401       END IF;
8402    EXCEPTION
8403       WHEN OTHERS
8404       THEN
8405          RAISE;
8406    END chk_if_archives_changed;
8407 
8408 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8409 -------procedure checks if model structure has changed since it was last published
8410    PROCEDURE chk_if_struct_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8411    AS
8412       v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
8413       v_last_struct_date cz_devl_projects.last_struct_update%TYPE;
8414    BEGIN
8415       IF (p_model_array.COUNT > 0)
8416       THEN
8417          FOR i IN p_model_array.FIRST .. p_model_array.LAST
8418          LOOP
8419             get_last_struct_date(p_model_array(i), v_last_struct_date);
8420 
8421             IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_last_struct_date))
8422             THEN
8423                x_record_count := -777;
8424                EXIT;
8425             END IF;
8426          END LOOP;
8427       END IF;
8428    EXCEPTION
8429       WHEN OTHERS
8430       THEN
8431          RAISE;
8432    END;
8433 
8434 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8435 ----get last update date for FC
8436    PROCEDURE get_fc_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8437    AS
8438       v_update_date cz_func_comp_specs.last_update_date%TYPE;
8439    BEGIN
8440       IF (p_model_array.COUNT > 0)
8441       THEN
8442          x_max_update_date := cz_utils.epoch_begin;
8443 
8444          FOR i IN p_model_array.FIRST .. p_model_array.LAST
8445          LOOP
8446             BEGIN
8447                SELECT MAX(last_update_date)
8448                  INTO v_update_date
8449                  FROM cz_func_comp_specs
8450                 WHERE cz_func_comp_specs.devl_project_id = p_model_array(i) AND cz_func_comp_specs.deleted_flag = record_not_deleted;
8451             EXCEPTION
8452                WHEN OTHERS
8453                THEN
8454                   v_update_date := NULL;
8455             END;
8456 
8457             IF (v_update_date IS NOT NULL)
8458             THEN
8459                IF (v_update_date > x_max_update_date)
8460                THEN
8461                   x_max_update_date := v_update_date;
8462                END IF;
8463             END IF;
8464          END LOOP;
8465       END IF;
8466    END get_fc_date;
8467 
8468 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8469 ------procedure that retrieves the max last update date
8470 ------for ps nodes on the model
8471    PROCEDURE get_psnode_last_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE) AS
8472    BEGIN
8473      SELECT MAX(last_update_date)
8474        INTO x_last_update_date
8475        FROM cz_ps_nodes
8476       WHERE devl_project_id = p_model_id;
8477    EXCEPTION
8478      WHEN OTHERS THEN
8479        x_last_update_date := cz_utils.epoch_begin;
8480    END;
8481 
8482 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8483 ------procedure that retrieves the max last update date
8484 ------for the description on the model
8485    PROCEDURE get_intl_text_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
8486    AS
8487    BEGIN
8488       SELECT MAX(last_update_date)
8489         INTO x_last_update_date
8490         FROM cz_localized_texts
8491        WHERE model_id = p_model_id;
8492    EXCEPTION
8493       WHEN OTHERS
8494       THEN
8495          x_last_update_date := cz_utils.epoch_begin;
8496    END;
8497 
8498 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8499    PROCEDURE get_max_template_date(p_template_id IN NUMBER, x_max_date OUT NOCOPY DATE)
8500    IS
8501    BEGIN
8502       SELECT last_update_date
8503         INTO x_max_date
8504         FROM cz_ui_templates
8505        WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.deleted_flag = record_not_deleted;
8506    EXCEPTION
8507       WHEN OTHERS
8508       THEN
8509          x_max_date := cz_utils.epoch_begin;
8510    END get_max_template_date;
8511 
8512 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8513    PROCEDURE get_template_date(p_global_templs_ref IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8514    IS
8515       l_last_update_date DATE;
8516       l_prev_date DATE := cz_utils.epoch_begin;
8517    BEGIN
8518       x_max_update_date := cz_utils.epoch_begin;
8519 
8520       IF (p_global_templs_ref.COUNT > 0)
8521       THEN
8522          FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
8523          LOOP
8524             SELECT last_update_date
8525               INTO l_last_update_date
8526               FROM cz_ui_templates
8527              WHERE cz_ui_templates.template_id = p_global_templs_ref(i)
8528                AND cz_ui_templates.deleted_flag = record_not_deleted
8529                AND cz_ui_templates.ui_def_id = 0;
8530 
8531             IF (l_last_update_date > l_prev_date)
8532             THEN
8533                x_max_update_date := l_last_update_date;
8534             END IF;
8535 
8536             l_prev_date := x_max_update_date;
8537          END LOOP;
8538       END IF;
8539    EXCEPTION
8540       WHEN NO_DATA_FOUND
8541       THEN
8542          x_max_update_date := cz_utils.epoch_begin;
8543    END get_template_date;
8544 
8545 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8546    PROCEDURE get_last_templ_activity(p_global_templs_ref IN cz_pb_mgr.t_ref, p_server_id IN NUMBER, x_last_xfr_activity OUT NOCOPY DATE)
8547    IS
8548       l_last_update_date DATE;
8549       l_prev_date DATE := cz_utils.epoch_begin;
8550       rec_count NUMBER := 0;
8551       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
8552    BEGIN
8553       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
8554       THEN
8555          l_pub_mode := cz_model_migration_pvt.mode_migration;
8556       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
8557       THEN
8558          l_pub_mode := cz_model_migration_pvt.mode_copy;
8559       END IF;
8560 
8561       x_last_xfr_activity := cz_utils.epoch_begin;
8562 
8563       IF (p_global_templs_ref.COUNT > 0)
8564       THEN
8565          FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
8566          LOOP
8567             BEGIN
8568                SELECT MAX(published)
8569                  INTO l_last_update_date
8570                  FROM cz_model_publications
8571                 WHERE cz_model_publications.object_id = p_global_templs_ref(i)
8572                   AND cz_model_publications.deleted_flag = record_not_deleted
8573                   AND cz_model_publications.object_type = template_publication
8574                   AND UPPER(cz_model_publications.publication_mode) = l_pub_mode;
8575 		  --SPUPPALA bug#7116052 7-AUG-2009
8576             EXCEPTION
8577                WHEN NO_DATA_FOUND
8578                THEN
8579                   NULL;
8580             END;
8581 
8582             IF (l_last_update_date >= l_prev_date)
8583             THEN
8584                x_last_xfr_activity := l_last_update_date;
8585             END IF;
8586          END LOOP;
8587       END IF;
8588    EXCEPTION
8589       WHEN OTHERS
8590       THEN
8591          x_last_xfr_activity := cz_utils.epoch_begin;
8592    END get_last_templ_activity;
8593 
8594 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8595    PROCEDURE get_effectivity_set_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
8596    IS
8597    BEGIN
8598       SELECT MAX(last_update_date)
8599         INTO x_last_update_date
8600         FROM cz_effectivity_sets
8601        WHERE cz_effectivity_sets.effectivity_set_id IN(
8602                 SELECT DISTINCT effectivity_set_id
8603                            FROM cz_ps_nodes
8604                           WHERE cz_ps_nodes.devl_project_id = p_model_id
8605                             AND cz_ps_nodes.deleted_flag = record_not_deleted
8606                             AND cz_ps_nodes.effectivity_set_id IS NOT NULL);
8607    EXCEPTION
8608       WHEN NO_DATA_FOUND
8609       THEN
8610          x_last_update_date := cz_utils.epoch_begin;
8611    END get_effectivity_set_date;
8612 
8613 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8614 ------get last update date for effectivity
8615    PROCEDURE get_eff_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8616    AS
8617       v_update_date cz_effectivity_sets.last_update_date%TYPE;
8618    BEGIN
8619       IF (p_model_array.COUNT > 0)
8620       THEN
8621          x_max_update_date := cz_utils.epoch_begin;
8622 
8623          FOR i IN p_model_array.FIRST .. p_model_array.LAST
8624          LOOP
8625             get_effectivity_set_date(p_model_array(i), v_update_date);
8626 
8627             IF (v_update_date > x_max_update_date)
8628             THEN
8629                x_max_update_date := v_update_date;
8630             END IF;
8631          END LOOP;
8632       END IF;
8633    END get_eff_date;
8634 
8635 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8636    PROCEDURE collect_global_actions(p_elem_id_tbl IN OUT NOCOPY cz_pb_mgr.t_ref, p_elem_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref)
8637    IS
8638       l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
8639       l_ui_actns_ui_act_new_id_tbl cz_pb_mgr.t_ref;
8640       l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
8641       l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
8642       l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
8643       l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
8644       l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
8645       l_prcpg_templ_tbl cz_pb_mgr.t_ref;
8646       l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
8647       l_prc_caption_tbl cz_pb_mgr.t_ref;
8648       l_pg_title_tbl    cz_pb_mgr.t_ref;
8649       l_main_msg_tbl    cz_pb_mgr.t_ref;
8650       l_text_tbl        t_ref;
8651       l_text_count      PLS_INTEGER := 0;
8652       rec_count         NUMBER;
8653    BEGIN
8654       IF (p_elem_id_tbl.COUNT > 0) THEN
8655          rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
8656 
8657          FOR i IN p_elem_id_tbl.FIRST .. p_elem_id_tbl.LAST
8658          LOOP
8659             l_ui_actns_ui_act_id_tbl.DELETE;
8660             l_ui_actns_ui_uidef_tbl.DELETE;
8661             l_ui_actns_ui_tgtui_tbl.DELETE;
8662             l_ui_actns_tgtexpl_tbl.DELETE;
8663             l_ui_actns_ctx_comp_tbl.DELETE;
8664             l_ui_actns_ren_cond_tbl.DELETE;
8665             l_prcpg_templ_tbl.DELETE;
8666 	    l_prcpg_tmpui_tbl.DELETE;
8667 	    l_prc_caption_tbl.DELETE;
8668 	    l_pg_title_tbl.DELETE;
8669             l_main_msg_tbl.DELETE;
8670 
8671             IF (p_elem_type_ref(i) = 552) THEN
8672                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_actions_seq
8673                                                  , 'cz_ui_actions_s.nextval' || cz_pb_mgr.v_db_link
8674                                                  ,cz_pb_mgr.v_oraclesequenceincr
8675                                                  )
8676                      ,ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
8677                      ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
8678                      ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
8679                BULK COLLECT INTO l_ui_actns_ui_act_new_id_tbl
8680                      ,l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
8681                      ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
8682                      ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
8683                  FROM cz_ui_actions
8684                 WHERE cz_ui_actions.ui_action_id = p_elem_id_tbl(i)
8685                   AND cz_ui_actions.ui_def_id = 0
8686                   AND cz_ui_actions.deleted_flag = record_not_deleted
8687                   AND cz_ui_actions.seeded_flag <> seed_data;
8688             END IF;
8689 
8690             IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
8691                FOR j IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
8692                LOOP
8693                   rec_count := rec_count + 1;
8694 
8695                   IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0) THEN
8696                      cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_new_id_tbl(j);
8697                      cz_pb_mgr.g_ui_actions_id_idx_ref(l_ui_actns_ui_act_id_tbl(j)):=l_ui_actns_ui_act_new_id_tbl(j);
8698                   ELSE
8699                     cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
8700                   END IF;
8701 
8702                   cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
8703                   cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(j);
8704                   cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(j);
8705                   cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(j);
8706                   cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(j);
8707                   cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(j); -- this col not used, otherwise we would have an issue
8708                   cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(j);
8709                   cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(j);
8710                   cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(j);
8711                   cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(j);
8712                   cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(j);
8713 
8714                   -- no template element records for page title text, main msg, prc caption text
8715                   -- so we need to collect them here
8716                   IF l_prc_caption_tbl(j) IS NOT NULL THEN
8717                     l_text_count := l_text_count + 1;
8718                     l_text_tbl(l_text_count) := l_prc_caption_tbl(j);
8719                   END IF;
8720                   IF l_pg_title_tbl(j) IS NOT NULL THEN
8721                     l_text_count := l_text_count + 1;
8722                     l_text_tbl(l_text_count) := l_pg_title_tbl(j);
8723                   END IF;
8724                   IF l_main_msg_tbl(j) IS NOT NULL THEN
8725                     l_text_count := l_text_count + 1;
8726                     l_text_tbl(l_text_count) := l_main_msg_tbl(j);
8727                   END IF;
8728                END LOOP;
8729 
8730                IF l_text_count > 0 THEN
8731                  insert_intl_texts(l_text_tbl, 'global texts from ui actions', TRUE);
8732                END IF;
8733 
8734                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
8735 
8736                  --The resolution moved here from insert_template_elements.
8737                  BEGIN
8738                     p_elem_id_tbl(i) := cz_pb_mgr.g_ui_actions_id_idx_ref(p_elem_id_tbl(i));
8739                  EXCEPTION
8740                    WHEN OTHERS THEN
8741                      cz_pb_mgr.v_err_message := 'Error during resolution of ui_action id = ' || p_elem_id_tbl(i) || ': ' || SQLERRM;
8742                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8743                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8744                      RAISE;
8745                  END;
8746                END IF;
8747             END IF;
8748          END LOOP;
8749       END IF;
8750    EXCEPTION
8751       WHEN NO_DATA_FOUND THEN
8752          NULL;
8753       WHEN OTHERS THEN
8754          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
8755          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8756          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8757          RAISE;
8758    END collect_global_actions;
8759 --------------------------------
8760    PROCEDURE collect_global_texts(
8761       p_template_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8762      ,p_element_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8763      ,x_status_code IN OUT NOCOPY VARCHAR2
8764    )
8765    IS
8766       l_elem_text_tbl cz_pb_mgr.t_ref;
8767       rec_count NUMBER := 0;
8768    BEGIN
8769       IF (p_template_id_ref.COUNT > 0)
8770       THEN
8771          FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8772          LOOP
8773             IF (p_element_type_ref(i) = 8)
8774             THEN
8775                rec_count := l_elem_text_tbl.COUNT + 1;
8776                l_elem_text_tbl(rec_count) := p_template_id_ref(i);
8777             END IF;
8778          END LOOP;
8779 
8780          insert_intl_texts(l_elem_text_tbl, 'global texts', TRUE);
8781 
8782          FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8783          LOOP
8784             IF (p_element_type_ref(i) = 8)
8785             THEN
8786                p_template_id_ref(i) := cz_pb_mgr.v_cz_intl_text_idx_ref(p_template_id_ref(i));
8787             END IF;
8788          END LOOP;
8789       END IF;
8790    EXCEPTION
8791       WHEN OTHERS
8792       THEN
8793          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_COLLECT_GL_TEXTS', 'SQLERRM', SQLERRM);
8794          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_GLTEXTS', SQLCODE);
8795          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8796          RAISE;
8797    END collect_global_texts;
8798 
8799 ---------------------------------------------------------------
8800 PROCEDURE collect_global_rules(
8801       p_rule_id_array IN OUT NOCOPY cz_pb_mgr.t_ref
8802      ,p_rule_type_array IN OUT NOCOPY cz_pb_mgr.t_ref
8803      ,x_status IN OUT NOCOPY VARCHAR2
8804     )
8805 AS
8806   l_new_rule_id        NUMBER;
8807   l_old_rule_id        NUMBER;
8808   v_cz_rules_rf_id     NUMBER;
8809   v_cz_rules_proj_id   NUMBER;
8810   v_cz_rules_comp_id   NUMBER;
8811   v_cz_rules_rea_id    NUMBER;
8812   v_cz_rules_eff_id    NUMBER;
8813   v_cz_rules_unmsg_id  NUMBER;
8814   v_cz_rules_expl_id   NUMBER;
8815   v_cz_rules_sig       NUMBER;
8816   v_cz_rules_ui        NUMBER;
8817   v_cz_eff_usage_mask  cz_rules.effective_usage_mask%TYPE;
8818 
8819   rec_count            NUMBER;
8820 BEGIN
8821   IF (x_status = PUBLICATION_ERROR OR p_rule_id_array.COUNT = 0) THEN
8822     RETURN;
8823   END IF;
8824 
8825   rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT;
8826 
8827   FOR i IN p_rule_id_array.FIRST .. p_rule_id_array.LAST
8828   LOOP
8829     IF (p_rule_type_array(i) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)) THEN
8830       BEGIN
8831         SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
8832                                          ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link
8833                                           ,cz_pb_mgr.v_oraclesequenceincr
8834                                           )
8835               ,rule_id, rule_folder_id, devl_project_id, component_id
8836               ,reason_id, unsatisfied_msg_id, effectivity_set_id
8837               ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
8838          INTO l_new_rule_id
8839               ,l_old_rule_id, v_cz_rules_rf_id, v_cz_rules_proj_id, v_cz_rules_comp_id
8840               ,v_cz_rules_rea_id, v_cz_rules_unmsg_id, v_cz_rules_eff_id
8841               ,v_cz_rules_expl_id, v_cz_rules_sig, v_cz_rules_ui, v_cz_eff_usage_mask
8842         FROM cz_rules
8843         WHERE rule_id = p_rule_id_array(i) AND deleted_flag = '0' AND seeded_flag = '0';
8844 
8845         rec_count := rec_count + 1;
8846         cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_rule_id):=l_new_rule_id;
8847         cz_pb_mgr.v_cz_rules_rule_id_new_ref(rec_count) := l_new_rule_id;
8848         cz_pb_mgr.v_cz_rules_rule_id_old_ref(rec_count) := l_old_rule_id;
8849         cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := v_cz_rules_proj_id;
8850         cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := v_cz_rules_comp_id;
8851         cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
8852         cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := v_cz_rules_expl_id;
8853         cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := v_cz_rules_rea_id;
8854         cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := v_cz_rules_unmsg_id;
8855         cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := v_cz_rules_eff_id;
8856         cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := v_cz_rules_sig;
8857         cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
8858         cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := v_cz_rules_ui;
8859         cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_cz_eff_usage_mask;
8860         cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_new_rule_id;
8861 
8862       EXCEPTION
8863         WHEN NO_DATA_FOUND THEN
8864           cz_pb_mgr.v_err_message := 'No rules found: ' || p_rule_id_array(i);
8865           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
8866       END;
8867 
8868       BEGIN
8869         p_rule_id_array(i) := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(p_rule_id_array(i));
8870       EXCEPTION
8871         WHEN OTHERS THEN
8872           NULL;
8873       END;
8874     END IF;
8875   END LOOP;
8876 EXCEPTION
8877   WHEN OTHERS THEN
8878     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
8879     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
8880     x_status := PUBLICATION_ERROR;
8881     RAISE;
8882 END collect_global_rules;
8883 
8884 ------------------------------------------------
8885    PROCEDURE collect_template_elements(p_template_ref IN cz_pb_mgr.t_ref)
8886    IS
8887       l_template_id_tbl cz_pb_mgr.t_ref;
8888       l_ui_def_id_tbl cz_pb_mgr.t_ref;
8889       l_element_type_tbl cz_pb_mgr.t_ref;
8890       l_element_id_tbl cz_pb_mgr.t_ref;
8891       l_pers_elem_tbl cz_pb_mgr.t_ref;
8892       l_src_pb_id NUMBER;
8893       l_tgt_pb_id NUMBER;
8894       rec_count NUMBER := 0;
8895    BEGIN
8896       l_template_id_ref.DELETE;
8897       l_ui_def_id_ref.DELETE;
8898       l_element_type_ref.DELETE;
8899       l_element_id_ref.DELETE;
8900       l_pers_elem_ref.DELETE;
8901       cz_pb_mgr.l_template_id_ref.DELETE;
8902       cz_pb_mgr.l_ui_def_id_ref.DELETE;
8903       cz_pb_mgr.l_element_type_ref.DELETE;
8904       cz_pb_mgr.l_element_id_ref.DELETE;
8905       cz_pb_mgr.l_pers_elem_ref.DELETE;
8906       cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
8907       cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE;
8908       cz_pb_mgr.g_ui_actns_ui_tgtui_ref.DELETE;
8909       cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
8910       cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
8911       cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
8912       cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
8913       cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
8914       cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
8915       cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
8916       cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
8917 
8918       IF (p_template_ref.COUNT > 0)
8919       THEN
8920          FOR i IN p_template_ref.FIRST .. p_template_ref.LAST
8921          LOOP
8922             l_template_id_tbl.DELETE;
8923             l_ui_def_id_tbl.DELETE;
8924             l_element_type_tbl.DELETE;
8925             l_element_id_tbl.DELETE;
8926             l_pers_elem_tbl.DELETE;
8927 
8928             SELECT template_id, ui_def_id, element_type, element_id, persistent_element_id
8929             BULK COLLECT INTO l_template_id_tbl, l_ui_def_id_tbl, l_element_type_tbl, l_element_id_tbl, l_pers_elem_tbl
8930               FROM cz_ui_template_elements
8931              WHERE cz_ui_template_elements.template_id = p_template_ref(i)
8932                AND cz_ui_template_elements.ui_def_id = 0
8933                AND cz_ui_template_elements.deleted_flag = '0'
8934                AND cz_ui_template_elements.seeded_flag <> seed_data;
8935 
8936             IF (l_template_id_tbl.COUNT > 0)
8937             THEN
8938                rec_count := cz_pb_mgr.l_template_id_ref.COUNT;
8939 
8940                FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
8941                LOOP
8942                   rec_count := rec_count + 1;
8943                   cz_pb_mgr.l_template_id_ref(rec_count) := l_template_id_tbl(j);
8944                   cz_pb_mgr.l_ui_def_id_ref(rec_count) := l_ui_def_id_tbl(j);
8945                   cz_pb_mgr.l_element_type_ref(rec_count) := l_element_type_tbl(j);
8946                   cz_pb_mgr.l_element_id_ref(rec_count) := l_element_id_tbl(j);
8947                   cz_pb_mgr.l_pers_elem_ref(rec_count) := l_pers_elem_tbl(j);
8948                END LOOP;
8949             END IF;
8950          END LOOP;
8951 
8952          IF (l_template_id_ref.COUNT > 0)
8953          THEN
8954             collect_global_actions(cz_pb_mgr.l_element_id_ref, l_element_type_ref);
8955             collect_global_rules(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8956             collect_global_texts(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8957             resolve_ids(cz_pb_mgr.l_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'template ids of template elements');
8958          END IF;
8959       END IF;
8960    EXCEPTION
8961       WHEN NO_DATA_FOUND
8962       THEN
8963          NULL;
8964       WHEN OTHERS
8965       THEN
8966          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_template_elements', 'SQLERRM', SQLERRM);
8967          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_TMPLELEM', SQLCODE);
8968          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8969          RAISE;
8970    END collect_template_elements;
8971 
8972 --------------------------------------------------------------------------------
8973 FUNCTION get_target_template(p_src_template_id IN NUMBER) RETURN NUMBER
8974 IS
8975   l_template_id NUMBER := -1;
8976   l_ref_cursor ref_cursor;
8977  BEGIN
8978    -- using binding vars
8979    -- check existing in ui template table (esp for mig)?
8980    OPEN l_ref_cursor FOR 'SELECT object_id'
8981                       || ' FROM cz_model_publications'
8982                       || cz_pb_mgr.v_db_link
8983                       || ' t'
8984                       || ' WHERE t.source_model_id = '
8985                       || p_src_template_id
8986                       || ' AND t.object_type = ''UIT'' AND t.deleted_flag=0'
8987                       || ' AND t.source_target_flag = '''
8988                       || g_target_flag
8989                       || '''';
8990 
8991   LOOP
8992     FETCH l_ref_cursor INTO l_template_id;
8993     EXIT WHEN l_ref_cursor%NOTFOUND;
8994   END LOOP;
8995 
8996   CLOSE l_ref_cursor;
8997 
8998   RETURN l_template_id;
8999 END get_target_template;
9000 
9001 --returns the template at target server if it ever got published
9002 --(populates cz_pb_mgr.g_ui_templates_new_temp_id_ref)
9003 -- or generates a new id for the target.
9004 
9005    FUNCTION get_new_template(p_template_id IN NUMBER)
9006       RETURN NUMBER
9007    IS
9008       l_template_id NUMBER;
9009    BEGIN
9010       l_template_id := get_target_template(p_template_id);
9011       IF (l_template_id = -1) THEN
9012          l_template_id :=
9013 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates_seq,
9014               'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
9015       END IF;
9016 
9017       RETURN l_template_id;
9018    EXCEPTION
9019       WHEN OTHERS THEN
9020          RAISE;
9021    END get_new_template;
9022 
9023 --------------------------------------------------------------------------
9024 -- returns 0 when a template is either never published
9025 -- or is modified after last publication else returns 1.
9026    PROCEDURE has_uit_changed(p_template_id IN NUMBER, p_server_id IN NUMBER, x_status IN OUT NOCOPY NUMBER)
9027    IS
9028       l_uit_update_date DATE;
9029       l_last_update_date DATE;
9030       l_template_id NUMBER;
9031    BEGIN
9032       x_status := 0;
9033 
9034       SELECT last_update_date
9035         INTO l_last_update_date
9036         FROM cz_model_publications
9037        WHERE cz_model_publications.object_id = p_template_id
9038          AND cz_model_publications.object_type = 'UIT'
9039          AND cz_model_publications.source_target_flag = g_source_flag
9040          AND cz_model_publications.server_id = p_server_id
9041          AND cz_model_publications.export_status IN('OK', 'PUP')
9042          AND cz_model_publications.deleted_flag = '0';
9043 
9044       SELECT last_update_date
9045         INTO l_uit_update_date
9046         FROM cz_ui_templates
9047        WHERE ui_def_id = 0 AND template_id = p_template_id AND deleted_flag = '0';
9048 
9049   -- if template changed since last publication
9050       IF (l_uit_update_date > l_last_update_date) THEN
9051          x_status := 0;
9052       ELSE
9053   -- get the target tempalte id for the last publication and
9054   -- add it to the index, such that its not processed further.
9055          l_template_id := get_target_template(p_template_id);
9056          IF l_template_id = -1 THEN
9057            x_status := 0;
9058          ELSE
9059            cz_pb_mgr.g_ui_templates_idx_temp_ref(p_template_id):=l_template_id;
9060            x_status := 1;
9061          END IF;
9062       END IF;
9063    -- if template never got published
9064    EXCEPTION
9065       WHEN NO_DATA_FOUND THEN
9066          x_status := 0;
9067    END has_uit_changed;
9068 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9069 PROCEDURE get_oa_tmpls
9070 IS
9071   l_new_tmpl_tbl  cz_pb_mgr.t_ref;  -- new or changed templs
9072   l_old_tmpl_tbl  cz_pb_mgr.t_ref;  -- exported already, no change
9073   l_all_tmpl_tbl  cz_pb_mgr.t_ref;  -- All the templates in all the UI's
9074   l_all_tmpl_map  cz_pb_mgr.t_ref_idx_vc2;
9075   l_temp_tbl      cz_pb_mgr.t_ref;
9076   l_rec_count     PLS_INTEGER;
9077   l_template_id   NUMBER;
9078   l_jrad_doc      VARCHAR2(255); -- cz_ui_templates.jrad_doc%TYPE;
9079 
9080   -- used for synch operation and insert operation resp
9081   l_parent_container_type NUMBER;
9082   l_root_element_signature_id NUMBER;
9083   l_template_name    VARCHAR2(255); -- cz_ui_templates.TEMPLATE_NAME%TYPE;
9084   l_root_region_type VARCHAR2(255); -- cz_ui_templates.ROOT_REGION_TYPE%TYPE;
9085 
9086   remote_uct ref_cursor;
9087 
9088   document_synch EXCEPTION;
9089 
9090   -- check if templates published previously or if changed since publication
9091   -- add to the new tbl if never published or exported before but changed after publication
9092   -- put to the old tbl, and put src:tgt ids into g_ui_templates_idx_temp_ref map otherwise
9093   -- may be better to separate the new ones with the changed and then just use the
9094   -- new ones for insert proc while the changed for updating?
9095   PROCEDURE check_template_status(p_tmpl_tbl IN t_ref)
9096   IS
9097     l_status     INTEGER;
9098     l_old_count  PLS_INTEGER;
9099     l_new_count  PLS_INTEGER;
9100     l_all_count  PLS_INTEGER;
9101   BEGIN
9102     IF p_tmpl_tbl.COUNT > 0 THEN
9103       l_old_count := l_old_tmpl_tbl.COUNT;
9104       l_new_count := l_new_tmpl_tbl.COUNT;
9105       l_all_count := l_all_tmpl_tbl.COUNT;
9106       FOR i IN p_tmpl_tbl.FIRST .. p_tmpl_tbl.LAST LOOP
9107         IF NOT l_all_tmpl_map.EXISTS(p_tmpl_tbl(i)) THEN
9108           l_status := 0;
9109           l_all_count := l_all_count + 1;
9110           l_all_tmpl_tbl(l_all_count) := p_tmpl_tbl(i);
9111           has_uit_changed(p_tmpl_tbl(i), cz_pb_mgr.v_server_id, l_status);
9112           IF l_status = 0 THEN -- not pub'd or chg'd since pub
9113             l_new_count := l_new_count + 1;
9114             l_new_tmpl_tbl(l_new_count) := p_tmpl_tbl(i);
9115           ELSE
9116             l_old_count := l_old_count + 1;
9117             l_old_tmpl_tbl(l_old_count) := p_tmpl_tbl(i);
9118           END IF;
9119 
9120           l_all_tmpl_map(p_tmpl_tbl(i)) := NULL;
9121         END IF;
9122       END LOOP;
9123     END IF;
9124   END check_template_status;
9125 
9126 BEGIN
9127   --For model migration, the rules related tables will be loaded in bulk_collect_rules
9128   --and they should not be cleared here.  Rules related tables are collected in 'collect_global_rules',
9129   --which is called from here.
9130   --For publishing, this code gets executed right in the beginning(when all the tables are empty
9131   --anyway), and seems redundant.  But for the risk of introducing regressions, we
9132   --will execute this only for publishing.
9133   IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
9134     clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
9135   END IF;
9136 
9137   cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
9138   cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
9139   cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
9140   cz_pb_mgr.g_ui_templates_ui_def_old_ref.DELETE;
9141   cz_pb_mgr.g_ui_templates_ui_def_new_ref.DELETE;
9142   cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
9143   cz_pb_mgr.g_ui_templates_title_ref.DELETE;
9144   cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
9145   cz_pb_mgr.g_ui_templates_jrad_old_ref.DELETE;
9146   cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
9147   cz_pb_mgr.g_ui_templates_but_uidef_id.DELETE;
9148 
9149   -- templates already exported and no change since, used only in replacing extends
9150   cz_pb_mgr.g_tmpl_jrad_old_tbl.DELETE;
9151   cz_pb_mgr.g_tmpl_jrad_new_tbl.DELETE;
9152 
9153   cz_pb_mgr.g_ui_templates_obj_type.DELETE;
9154   cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
9155 
9156   -- templs directly referred by the UIs: not published before or changed since publication
9157   IF cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 AND cz_pb_mgr.v_session_parameter <> model_copy THEN
9158     FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST LOOP
9159       l_temp_tbl.DELETE;
9160       SELECT template_id BULK COLLECT INTO l_temp_tbl
9161       FROM cz_ui_collect_tmpls_v
9162       WHERE cz_ui_collect_tmpls_v.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
9163       AND cz_ui_collect_tmpls_v.template_id IN
9164            (SELECT template_id
9165             FROM cz_ui_templates
9166             WHERE cz_ui_templates.deleted_flag = '0' AND cz_ui_templates.seeded_flag = '0'
9167             AND cz_ui_templates.ui_def_id = 0);
9168 
9169       check_template_status(l_temp_tbl);
9170     END LOOP;
9171   END IF;
9172 
9173   -- append changed or not published ref templs to l_new_tmpl_tbl
9174   -- vsingava 10th May '10, bug7243309
9175   -- The template changed might be referred from a non-changed and already published
9176   -- template. Account for that.
9177   l_rec_count := l_all_tmpl_tbl.COUNT;
9178   IF l_rec_count > 0 THEN
9179     FOR i IN 1 .. l_rec_count LOOP
9180       l_temp_tbl.DELETE;
9181       SELECT ref_template_id BULK COLLECT INTO l_temp_tbl
9182       FROM cz_ui_ref_templates
9183       WHERE cz_ui_ref_templates.deleted_flag = '0'
9184       AND cz_ui_ref_templates.seeded_flag = '0'
9185       AND cz_ui_ref_templates.ref_template_ui_def_id = '0'
9186       AND cz_ui_ref_templates.ref_template_id IN
9187          (SELECT template_id
9188           FROM cz_ui_templates t
9189           WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0)
9190       START WITH cz_ui_ref_templates.template_id = l_all_tmpl_tbl(i) AND cz_ui_ref_templates.template_ui_def_id = '0'
9191       CONNECT BY PRIOR ref_template_id = cz_ui_ref_templates.template_id
9192              AND PRIOR ref_template_ui_def_id = cz_ui_ref_templates.template_ui_def_id
9193              AND PRIOR cz_ui_ref_templates.deleted_flag = '0';
9194 
9195       check_template_status(l_temp_tbl);
9196     END LOOP;
9197   END IF;
9198 
9199   -- add button bar templs (bbt) referred by the templates to the array
9200   -- assume bbts have no ref tmpl, otherwise we have an issue here
9201   l_rec_count := l_new_tmpl_tbl.COUNT;
9202   IF l_rec_count > 0 THEN
9203     FOR i IN 1 .. l_rec_count LOOP
9204       l_temp_tbl.DELETE;
9205       SELECT button_bar_template_id BULK COLLECT INTO l_temp_tbl
9206       FROM cz_ui_templates
9207       WHERE cz_ui_templates.deleted_flag = '0'
9208       AND cz_ui_templates.seeded_flag = '0'
9209       AND cz_ui_templates.ui_def_id = 0
9210       AND cz_ui_templates.button_bar_template_id IS NOT NULL
9211       AND cz_ui_templates.template_id = l_new_tmpl_tbl(i)
9212       AND cz_ui_templates.button_bar_template_id IN
9213           (SELECT template_id
9214            FROM cz_ui_templates t
9215            WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0);
9216 
9217       check_template_status(l_temp_tbl);
9218     END LOOP;
9219   END IF;
9220 
9221   -- processing page tmpls (ppt) referred by ui actions
9222   -- assume ppts have no ref tmpl, no further ppt ref from the action elements (if any) of the ppts
9223   l_rec_count := l_new_tmpl_tbl.COUNT;
9224   IF l_rec_count > 0 THEN
9225     FOR i IN 1 .. l_rec_count LOOP
9226       l_temp_tbl.DELETE;
9227       SELECT processing_page_templ_id BULK COLLECT INTO l_temp_tbl
9228       FROM cz_ui_actions act
9229       WHERE deleted_flag = '0' AND ui_def_id = 0 AND ui_action_id IN
9230          (SELECT element_id FROM cz_ui_template_elements
9231           WHERE deleted_flag = '0' AND element_type = 552
9232           AND template_id = l_new_tmpl_tbl(i)
9233           AND ui_def_id = 0 and seeded_flag = '0')
9234       AND EXISTS (SELECT NULL FROM cz_ui_templates
9235                   WHERE deleted_flag = '0' AND ui_def_id = 0
9236                   AND template_id = act.processing_page_templ_id AND seeded_flag = '0');
9237 
9238       check_template_status(l_temp_tbl);
9239     END LOOP;
9240   END IF;
9241 
9242   IF (l_new_tmpl_tbl.COUNT > 0) THEN
9243     l_rec_count := 0;
9244 
9245     FOR i IN l_new_tmpl_tbl.FIRST .. l_new_tmpl_tbl.LAST LOOP
9246       FOR j IN (SELECT * FROM cz_ui_templates
9247                 WHERE template_id = l_new_tmpl_tbl(i) AND ui_def_id = '0' AND deleted_flag = '0') LOOP
9248         IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model THEN
9249           -- The synch check will be performed here
9250           -- The template name will be checked over the link
9251           -- If the the template does not exists, then we will be using the new template that is created
9252           l_template_name := NULL;
9253           l_template_id := NULL;
9254           l_parent_container_type := NULL;
9255           l_root_region_type := NULL;
9256           l_root_element_signature_id := NULL;
9257 
9258           OPEN remote_uct FOR 'Select template_name,template_id,parent_container_type,root_region_type,'
9259             || 'root_element_signature_id from cz_ui_templates'
9260             || cz_pb_mgr.v_db_link || 't '
9261             || 'where t.ui_def_id = ''0'' and t.template_usage = ''0'' and '
9262             || 't.deleted_flag = ''0'' and t.seeded_flag = ''0'' and '
9263             || 't.template_name = :1 and t.template_type = :2 and nvl(t.message_type,-1) = nvl(:3,-1)'
9264           USING j.template_name, j.template_type, j.message_type;
9265           FETCH remote_uct
9266             INTO l_template_name, l_template_id, l_parent_container_type,
9267                  l_root_region_type, l_root_element_signature_id;
9268 
9269           IF l_template_name IS NOT NULL AND
9270                (   l_parent_container_type <> j.parent_container_type
9271                 OR l_root_region_type <> j.root_region_type
9272                 OR l_root_element_signature_id <> j.root_element_signature_id ) THEN
9273             cz_pb_mgr.v_err_message := cz_utils.get_text('UCT synch error', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
9274             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
9275             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9276             RAISE document_synch;
9277           END IF;
9278         END IF;
9279 
9280         -- pub: populate all the new or changed templs to the arrays
9281         -- mig: only add the new templs (l_template_name IS NULL) ??
9282         IF cz_pb_mgr.v_session_parameter = pub_model OR l_template_name IS NULL THEN
9283           l_rec_count := l_rec_count + 1;
9284           l_template_id := get_new_template(j.template_id);
9285           cz_pb_mgr.g_ui_templates_new_temp_id_ref(l_rec_count) := l_template_id;
9286           cz_pb_mgr.g_ui_templates_old_temp_id_ref(l_rec_count) := j.template_id;
9287           cz_pb_mgr.g_ui_templates_ui_def_old_ref(l_rec_count) := j.ui_def_id; -- '0'
9288           cz_pb_mgr.g_ui_templates_ui_def_new_ref(l_rec_count) := j.ui_def_id;
9289           cz_pb_mgr.g_ui_templates_msg_id_ref(l_rec_count) := j.main_message_id;
9290           cz_pb_mgr.g_ui_templates_title_ref(l_rec_count) := j.title_id;
9291           cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
9292           cz_pb_mgr.g_ui_templates_button_tbl(l_rec_count) := j.button_bar_template_id;
9293           cz_pb_mgr.g_ui_templates_but_uidef_id(l_rec_count) := j.button_bar_templ_uidef_id;
9294 
9295           IF cz_pb_mgr.v_session_parameter = pub_model THEN
9296             cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := j.jrad_doc || '_p';
9297           ELSE
9298             cz_pb_mgr.g_ui_templates_obj_type(l_rec_count) := 'UCT';
9299             cz_pb_mgr.g_enclosing_fld_rp_entry(l_rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
9300             cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := REPLACE(j.jrad_doc,TO_CHAR(j.template_id),TO_CHAR(l_template_id));
9301           END IF;
9302         END IF;
9303 
9304         -- fix for bug 7047145
9305         -- even if UI CT is already exists on target instance we need to replace
9306         -- old template_ids to new ones in XML attribute "extends"
9307         -- To do that g_ui_templates_jrad_old_ref/g_ui_templates_jrad_new_ref must be populated
9308         -- these two arrays are used in replace_extends()
9309         -- This part shoul be executed in the loop for already published/migrated templates
9310         --  but current code has a mny problems in this area ( checking for ui templates
9311         -- which need to be published/migrated
9312         IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND l_template_name IS NOT NULL THEN
9313             l_rec_count := l_rec_count + 1;
9314             cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
9315             cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := REPLACE(j.jrad_doc,TO_CHAR(j.template_id),TO_CHAR(l_template_id));
9316         END IF;
9317 
9318         cz_pb_mgr.g_ui_templates_idx_temp_ref(j.template_id):=l_template_id;
9319       END LOOP;
9320     END LOOP;
9321 
9322     collect_template_elements(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
9323   END IF;
9324 
9325   -- get jard_doc for the tmpls published before and not changed since for replacing extends
9326   IF l_old_tmpl_tbl.COUNT > 0 THEN
9327     l_rec_count := 0;
9328     FOR i IN l_old_tmpl_tbl.FIRST..l_old_tmpl_tbl.LAST LOOP
9329       SELECT jrad_doc INTO l_jrad_doc
9330       FROM  cz_ui_templates
9331       WHERE template_id  = l_old_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
9332 
9333       l_rec_count := l_rec_count + 1;
9334       CZ_PB_MGR.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
9335       IF cz_pb_mgr.v_session_parameter = pub_model THEN
9336          cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
9337       ELSE
9338         cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
9339           REPLACE(l_jrad_doc, TO_CHAR(l_old_tmpl_tbl(i)),
9340                               TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_old_tmpl_tbl(i))));
9341       END IF;
9342     END LOOP;
9343   END IF;
9344 
9345   --LA 9782717
9346   -- Fix based on 7250891 where need to collect jrad docs for the other templates in the chain
9347   -- which are in l_new_tmpl_tbl
9348   IF l_new_tmpl_tbl.COUNT > 0 THEN
9349     FOR i IN l_new_tmpl_tbl.FIRST..l_new_tmpl_tbl.LAST LOOP
9350       SELECT jrad_doc INTO l_jrad_doc
9351       FROM  cz_ui_templates
9352       WHERE template_id  = l_new_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
9353 
9354       l_rec_count := l_rec_count + 1;
9355       cz_pb_mgr.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
9356       IF cz_pb_mgr.v_session_parameter = pub_model THEN
9357          cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
9358       ELSE
9359         cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
9360           REPLACE(l_jrad_doc, TO_CHAR(l_new_tmpl_tbl(i)),
9361                               TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_new_tmpl_tbl(i))));
9362       END IF;
9363     END LOOP;
9364   END IF;
9365 
9366 EXCEPTION
9367   WHEN OTHERS THEN
9368     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
9369     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
9370     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9371     RAISE;
9372 END get_oa_tmpls;
9373 
9374 ---------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9375 ------------procedure checks if the model has been changed since it was last published
9376    FUNCTION has_tobe_published(publicationid IN NUMBER)
9377       RETURN BOOLEAN
9378    IS
9379       v_last_struct_update cz_devl_projects.last_struct_update%TYPE;
9380       v_models_tbl cz_pb_mgr.t_ref;
9381       record_count PLS_INTEGER := 0;
9382       v_last_update_date cz_ui_defs.last_update_date%TYPE;
9383       v_fc_update_date cz_func_comp_specs.last_update_date%TYPE;
9384       v_eff_update_date DATE;
9385       v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
9386       l_max_template_date cz_pb_model_exports.last_xfr_activity%TYPE;
9387       l_capt_update_date DATE;
9388       l_ps_node_update_date DATE;
9389       v_descr_date DATE;
9390    BEGIN
9391       chk_if_aleady_published(publicationid, record_count);
9392       get_source_models(cz_pb_mgr.v_root_model_id, v_models_tbl);
9393       get_source_uis(cz_pb_mgr.v_root_model_id, v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
9394       get_oa_uis(v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
9395       get_oa_tmpls;
9396 
9397       IF (record_count > 0)
9398       THEN
9399          get_last_xfr_activity(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_last_xfr_activity);
9400 
9401          IF (g_object_type = MODEL_PUBLICATION)
9402          THEN
9403             ----check if logic has changed
9404             chk_if_logic_changed(v_models_tbl, v_last_xfr_activity, record_count);
9405             ----check if ARCHIVES got reloaded/changed
9406             chk_if_archives_changed(v_models_tbl, v_last_xfr_activity, record_count);
9407             ----check if structure has changed
9408             chk_if_struct_changed(v_models_tbl, v_last_xfr_activity, record_count);
9409 
9410             -----check if model descripton has changed
9411             IF (v_models_tbl.COUNT > 0)
9412             THEN
9413                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9414                LOOP
9415                   get_intl_text_date(v_models_tbl(i), v_descr_date);
9416 
9417                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_descr_date))
9418                   THEN
9419                      record_count := 0;
9420                      EXIT;
9421                   END IF;
9422                END LOOP;
9423             END IF;
9424 
9425             ----check if fc has changed
9426             get_fc_date(v_models_tbl, v_fc_update_date);
9427 
9428             IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_fc_update_date))
9429             THEN
9430                record_count := 0;
9431             END IF;
9432 
9433             -----check if eff has changed
9434             get_eff_date(v_models_tbl, v_eff_update_date);
9435 
9436             IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_eff_update_date))
9437             THEN
9438                record_count := 0;
9439             END IF;
9440 
9441             ----check if ps node names has changed
9442             IF (v_models_tbl.COUNT > 0)
9443             THEN
9444                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9445                LOOP
9446                   get_psnode_last_date(v_models_tbl(i), l_ps_node_update_date);
9447 
9448                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_ps_node_update_date)) THEN
9449                      record_count := 0;
9450                      EXIT;
9451                   END IF;
9452                END LOOP;
9453             END IF;
9454 
9455             ----check if captions text has changed
9456             IF (v_models_tbl.COUNT > 0)
9457             THEN
9458                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9459                LOOP
9460                   BEGIN
9461                      SELECT MAX(last_update_date)
9462                        INTO l_capt_update_date
9463                        FROM cz_intl_texts
9464                       WHERE model_id = v_models_tbl(i);
9465                   EXCEPTION
9466                      WHEN OTHERS
9467                      THEN
9468                         l_capt_update_date := cz_utils.epoch_begin;
9469                   END;
9470 
9471                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9472                   THEN
9473                      record_count := 0;
9474                      EXIT;
9475                   END IF;
9476                END LOOP;
9477             END IF;
9478 
9479             -----check if capt rules have changed
9480             IF (v_models_tbl.COUNT > 0)
9481             THEN
9482                l_capt_update_date := cz_utils.epoch_begin;
9483 
9484                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9485                LOOP
9486                   BEGIN
9487                      SELECT last_update_date
9488                        INTO l_capt_update_date
9489                        FROM cz_devl_projects
9490                       WHERE devl_project_id = v_models_tbl(i);
9491                   EXCEPTION
9492                      WHEN OTHERS
9493                      THEN
9494                         l_capt_update_date := cz_utils.epoch_begin;
9495                   END;
9496 
9497                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9498                   THEN
9499                      record_count := 0;
9500                      EXIT;
9501                   END IF;
9502                END LOOP;
9503             END IF;
9504 
9505             -----check if template elements have changed
9506             -- but actually these templs are new or changed ones!
9507             IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
9508             THEN
9509                l_capt_update_date := cz_utils.epoch_begin;
9510 
9511                FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
9512                LOOP
9513                   BEGIN
9514                      SELECT MAX(last_update_date)
9515                        INTO l_capt_update_date
9516                        FROM cz_ui_template_elements
9517                       WHERE template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
9518                   EXCEPTION
9519                      WHEN OTHERS
9520                      THEN
9521                         l_capt_update_date := cz_utils.epoch_begin;
9522                   END;
9523 
9524                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9525                   THEN
9526                      record_count := 0;
9527                      EXIT;
9528                   END IF;
9529                END LOOP;
9530             END IF;
9531 
9532             ----check if uis have changed
9533             cz_pb_mgr.v_ui_str := 'x';
9534 
9535             IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
9536             THEN
9537                FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
9538                LOOP
9539                   get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(i), v_last_update_date);
9540 
9541                   IF (v_last_xfr_activity IS NULL)
9542                   THEN
9543                      cz_pb_mgr.v_ui_str := 'UI';
9544                      EXIT;
9545                   ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
9546                   THEN
9547                      cz_pb_mgr.v_ui_str := 'UI';
9548                      EXIT;
9549                   END IF;
9550                END LOOP;
9551             END IF;
9552 
9553             IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
9554             THEN
9555                get_template_date(cz_pb_mgr.g_ui_templates_old_temp_id_ref, v_last_update_date);
9556 
9557                IF (v_last_xfr_activity IS NULL)
9558                THEN
9559                   cz_pb_mgr.v_ui_str := 'UI';
9560                ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
9561                THEN
9562                   cz_pb_mgr.v_ui_str := 'UI';
9563                END IF;
9564             END IF;
9565          ELSIF(g_object_type = template_publication)
9566          THEN
9567             get_max_template_date(cz_pb_mgr.v_root_model_id, l_max_template_date);
9568          END IF;
9569       END IF;                                                                                                       /* end if of (record_count > 0) */
9570 
9571       IF (g_object_type = MODEL_PUBLICATION)
9572       THEN
9573          IF ((record_count > 0) AND(cz_pb_mgr.v_ui_str <> 'UI'))
9574          THEN
9575             RETURN FALSE;
9576          ELSIF((record_count = refresh_rules_count) AND(cz_pb_mgr.v_ui_str <> 'UI'))
9577          THEN
9578             v_refresh_rules := 'YES';
9579             RETURN TRUE;                                                                                                            ----refresh rules
9580          ELSIF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT = 0)
9581          THEN
9582             cz_pb_mgr.v_ui_str := 'x';
9583             RETURN TRUE;
9584          ELSE
9585             RETURN TRUE;
9586          END IF;
9587       ELSIF(g_object_type = template_publication)
9588       THEN
9589          IF (v_last_xfr_activity IS NULL)
9590          THEN
9591             RETURN TRUE;
9592          ELSIF(v_last_xfr_activity > l_max_template_date)
9593          THEN
9594             RETURN FALSE;
9595          ELSE
9596             RETURN TRUE;
9597          END IF;
9598       END IF;
9599    EXCEPTION
9600       WHEN OTHERS
9601       THEN
9602          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', SQLERRM);
9603          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
9604          cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
9605          RAISE;
9606    END has_tobe_published;
9607 
9608 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9609 ----procedure that removes duplicate values in models array
9610 ----
9611    PROCEDURE add_root_model(p_root_model_id IN NUMBER, p_models_array IN OUT NOCOPY cz_pb_mgr.t_ref)
9612    AS
9613       model_idx NUMBER := 0;
9614       root_model_found VARCHAR2(1) := 'F';
9615    BEGIN
9616       IF (p_models_array.COUNT > 0)
9617       THEN
9618          FOR i IN p_models_array.FIRST .. p_models_array.LAST
9619          LOOP
9620             IF (p_models_array(i) = p_root_model_id)
9621             THEN
9622                root_model_found := 'T';
9623             END IF;
9624          END LOOP;
9625       END IF;
9626 
9627       IF (root_model_found <> 'T')
9628       THEN
9629          model_idx := p_models_array.COUNT + 1;
9630          p_models_array(model_idx) := p_root_model_id;
9631       END IF;
9632    EXCEPTION
9633       WHEN OTHERS
9634       THEN
9635          RAISE;
9636    END add_root_model;
9637 
9638 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9639 ----procedure that returns the max node depth for a given child model
9640 ----if max node depth is greater than 1 then we need to determine the
9641 ----parent of this child (p_model_id) is exported or not.
9642    PROCEDURE get_max_node_depth(
9643       p_model_id IN cz_model_ref_expls.model_id%TYPE
9644      ,p_root_model_id IN cz_model_ref_expls.model_id%TYPE
9645      ,x_node_depth OUT NOCOPY cz_model_ref_expls.node_depth%TYPE
9646    )
9647    IS
9648    BEGIN
9649       SELECT MAX(node_depth)
9650         INTO x_node_depth
9651         FROM cz_model_ref_expls
9652        WHERE cz_model_ref_expls.deleted_flag = '0' AND cz_model_ref_expls.component_id = p_model_id AND cz_model_ref_expls.model_id = p_root_model_id;
9653    END get_max_node_depth;
9654 
9655 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9656 -------procedure that adds a parent of a child that is being exported
9657 -------to the export array.
9658 -------The first step is collect all models (exported and not exported) into
9659 ------l_all_models_array.  Loop over each child model in l_all_models_array
9660 ------and check if the child model node_depth is greater than 1.  If greater than 1
9661 ------then get all the parents at all levels for that child model
9662 ------check if the parent is being exported, if not add it to the export array.
9663 ------The root model is not part of any of the arrays here.  We check for
9664 ------child models only if greater than one level below.
9665    PROCEDURE add_parent_models(
9666       p_root_model_id IN cz_model_ref_expls.model_id%TYPE
9667      ,p_models_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
9668      ,p_models_not_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
9669    )
9670    IS
9671       l_component_id cz_model_ref_expls.component_id%TYPE;
9672       l_node_depth cz_model_ref_expls.node_depth%TYPE;
9673       rec_count NUMBER := 0;
9674       l_models_exported cz_pb_mgr.t_ref_idx_vc2;
9675       l_models_not_exported cz_pb_mgr.t_ref_idx_vc2;
9676       l_all_models_array cz_pb_mgr.t_ref;
9677 
9678       CURSOR c_parent_models(p_component_id cz_model_ref_expls.component_id%TYPE, p_top_model_id cz_model_ref_expls.model_id%TYPE)
9679       IS
9680          SELECT component_id
9681            FROM cz_model_ref_expls
9682           WHERE cz_model_ref_expls.deleted_flag = '0'
9683             AND cz_model_ref_expls.ps_node_type IN(263, 264)
9684             AND cz_model_ref_expls.model_ref_expl_id IN(
9685                                                         SELECT parent_expl_node_id
9686                                                           FROM cz_model_ref_expls x
9687                                                          WHERE x.deleted_flag = '0' AND x.component_id = p_component_id
9688                                                                AND x.model_id = p_top_model_id);
9689    BEGIN
9690       IF (p_models_not_to_be_exported.COUNT > 0)
9691       THEN
9692          ----ALL child models both exported and non exported
9693          ----are collected into l_all_models_array
9694          l_all_models_array.DELETE;
9695 
9696          SELECT   x.component_id
9697          BULK COLLECT INTO l_all_models_array
9698              FROM cz_model_ref_expls x
9699             WHERE x.deleted_flag = '0'
9700               AND x.model_id = p_root_model_id
9701               AND (x.ps_node_type = 263 OR x.ps_node_type = 264)
9702               AND x.node_depth = (SELECT MAX(b.node_depth)
9703                                     FROM cz_model_ref_expls b
9704                                    WHERE x.component_id = b.component_id AND b.model_id = p_root_model_id AND b.deleted_flag = '0')
9705          ORDER BY node_depth DESC;
9706 
9707          IF (p_models_to_be_exported.COUNT > 0)
9708          THEN
9709             FOR j IN p_models_to_be_exported.FIRST .. p_models_to_be_exported.LAST
9710             LOOP
9711                l_models_exported(p_models_to_be_exported(j)) := p_models_to_be_exported(j);
9712             END LOOP;
9713          END IF;
9714 
9715          FOR k IN p_models_not_to_be_exported.FIRST .. p_models_not_to_be_exported.LAST
9716          LOOP
9717             l_models_not_exported(p_models_not_to_be_exported(k)) := p_models_not_to_be_exported(k);
9718          END LOOP;
9719         IF (l_all_models_array.COUNT > 0) THEN
9720          FOR i IN l_all_models_array.FIRST .. l_all_models_array.LAST
9721          LOOP
9722             IF (l_models_exported.EXISTS(l_all_models_array(i)))
9723             THEN
9724                ---get max node_depth from cz_model_ref_expls for the child model
9725                get_max_node_depth(l_all_models_array(i), p_root_model_id, l_node_depth);
9726 
9727                -----check if node depth > 1, we are interested only if the child model
9728                -----is at a level greater than 1 in the tree.
9729                IF (l_node_depth > 1)
9730                THEN
9731                   -----the cursor is required because, there can be multiple
9732                               -----occurrences of the same component at different levels
9733                   -----in the model tree.  In such a case all the parents of the child
9734                   ----- are exported
9735                   OPEN c_parent_models(l_all_models_array(i), p_root_model_id);
9736 
9737                   LOOP
9738                      FETCH c_parent_models
9739                       INTO l_component_id;
9740 
9741                      EXIT WHEN c_parent_models%NOTFOUND;
9742 
9743                      IF (NOT l_models_exported.EXISTS(l_component_id))
9744                      THEN
9745                         l_models_exported(l_component_id) := l_component_id;
9746                         rec_count := p_models_to_be_exported.COUNT + 1;
9747                         p_models_to_be_exported(rec_count) := l_component_id;
9748                         l_models_not_exported.DELETE(l_component_id);
9749                      END IF;
9750                   END LOOP;
9751 
9752                   CLOSE c_parent_models;
9753                END IF;
9754             END IF;
9755          END LOOP;                                                                                          /* end loop of l_all_models_array.FIRST */
9756         END IF;
9757          -----we do not want to loop over single idx arrays
9758          -----because we would be looping more number of times if the array is sparse
9759          p_models_not_to_be_exported.DELETE;
9760          rec_count := 0;
9761         IF (l_all_models_array.COUNT > 0) THEN
9762          FOR notexpmodel IN l_all_models_array.FIRST .. l_all_models_array.LAST
9763          LOOP
9764             IF (NOT l_models_exported.EXISTS(l_all_models_array(notexpmodel)))
9765             THEN
9766                rec_count := p_models_not_to_be_exported.COUNT + 1;
9767                p_models_not_to_be_exported(rec_count) := l_all_models_array(notexpmodel);
9768             END IF;
9769          END LOOP;
9770 	END IF;
9771       END IF;
9772    EXCEPTION
9773       WHEN OTHERS
9774       THEN
9775          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9776          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9777 
9778          IF (c_parent_models%ISOPEN)
9779          THEN
9780             CLOSE c_parent_models;
9781          END IF;
9782 
9783          RAISE;
9784    END add_parent_models;
9785 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9786 ------Procedure that retrieves the remote model id of the target model
9787 ------@p_server_id --- server local id of target instance
9788 ------@x_status --- publication status
9789 ------@p_model_id --- source model id
9790 ------@x_remote_model_id -- retrieved remote model id
9791    PROCEDURE get_remote_model_id(
9792       p_server_id IN cz_servers.server_local_id%TYPE
9793      ,p_model_id IN cz_pb_model_exports.model_id%TYPE
9794      ,x_status IN OUT NOCOPY VARCHAR2
9795      ,x_remote_model_id IN OUT NOCOPY cz_pb_model_exports.model_id%TYPE
9796    )
9797    AS
9798    BEGIN
9799      IF ((x_status <> PUBLICATION_ERROR) AND (cz_pb_mgr.v_session_parameter <> model_copy)) THEN
9800        IF cz_pb_mgr.v_cz_ps_nodes_idx_tbl.EXISTS(p_model_id) THEN
9801          x_remote_model_id := cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id);
9802        ELSE
9803          IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model THEN
9804            IF p_server_id=0 THEN
9805              SELECT remote_model_id INTO x_remote_model_id
9806              FROM cz_pb_model_exports
9807              WHERE export_id=(SELECT max(export_id)
9808                               FROM cz_pb_model_exports
9809                               WHERE model_id=p_model_id AND server_id=0
9810                               AND status='OK' AND migration_group_id=g_migration_group_id);
9811            ELSE
9812             EXECUTE IMMEDIATE    'SELECT remote_model_id '
9813                               || ' '
9814                               || 'FROM cz_pb_model_exports'
9815                               || ' '
9816                               || 'WHERE cz_pb_model_exports.server_id = :1'
9817                               || ' '
9818                               || 'AND cz_pb_model_exports.export_id = '
9819                               || ' '
9820                               || '(SELECT MIN(export_id)'
9821                               || ' '
9822                               || 'FROM cz_pb_model_exports x, cz_devl_projects'
9823                               || cz_pb_mgr.v_db_link
9824                               || ' farprj'
9825                               || ' '
9826                               || 'WHERE x.server_id = :2'
9827                               || ' '
9828                               || 'AND x.model_id = :3'
9829                               || ' '
9830                               || 'AND x.status = ''OK'''
9831                               || ' '
9832                               || 'AND x.remote_model_id = farprj.devl_project_id'
9833                               || ' '
9834                               || 'AND farprj.deleted_flag = ''0'''
9835                               || ' '
9836                               || 'AND farprj.post_migr_change_flag = :4'
9837                               || ' '
9838                               || 'AND x.migration_group_id IS NOT NULL)'
9839                               || ' '
9840                               || 'AND cz_pb_model_exports.model_id  = :5'
9841                               || ' '
9842                               || 'AND cz_pb_model_exports.status = ''OK'''
9843                          INTO x_remote_model_id
9844                         USING p_server_id, p_server_id, p_model_id, cz_model_migration_pvt.change_flag_unchanged, p_model_id;
9845            END IF;
9846          ELSE
9847             SELECT cz_pb_model_exports.remote_model_id
9848               INTO x_remote_model_id
9849               FROM cz_pb_model_exports
9850              WHERE cz_pb_model_exports.server_id = p_server_id
9851                AND cz_pb_model_exports.export_id =
9852                       (SELECT MAX(export_id)
9853                          FROM cz_pb_model_exports
9854                         WHERE cz_pb_model_exports.server_id = p_server_id
9855                           AND cz_pb_model_exports.model_id = p_model_id
9856                           AND cz_pb_model_exports.status = 'OK'
9857                           AND migration_group_id IS NULL)
9858                AND cz_pb_model_exports.model_id = p_model_id
9859                AND cz_pb_model_exports.status = 'OK';
9860          END IF;
9861 
9862          cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id) := x_remote_model_id;
9863        END IF;
9864 
9865      ELSE
9866        x_remote_model_id := p_model_id;
9867      END IF;
9868    EXCEPTION
9869       WHEN OTHERS THEN
9870          cz_pb_mgr.v_err_message :=
9871                      'Error in retrieving remote model id from model exports for model : ' || p_model_id || ' on ' || p_server_id || ' : ' || SQLERRM;
9872          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMMODELID', SQLCODE);
9873          x_status := PUBLICATION_ERROR;
9874          RAISE;
9875    END get_remote_model_id;
9876 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9877 ------ get_models_tobe_exported gets all models to be exported and those
9878 ------ that are not to be exported to the production database
9879 ------ v_models_to_be_exported
9880 ------ v_models_not_to_be_exported
9881 -----  call to add_root_model add the root model if it does not exist
9882    PROCEDURE get_models_tobe_exported(rootmodelid IN NUMBER)
9883    AS
9884       CURSOR model_cur(in_root_model NUMBER)
9885       IS
9886          SELECT DISTINCT component_id
9887                     FROM cz_model_ref_expls x
9888                    WHERE x.model_id = in_root_model AND x.deleted_flag = '0' AND(x.ps_node_type = 263 OR x.ps_node_type = 264);
9889 
9890       v_count PLS_INTEGER := 0;
9891       v_models model_id_table;
9892       record_index NUMBER := 0;
9893       not_exported_record_index NUMBER := 0;
9894       v_model_id cz_model_publications.model_id%TYPE;
9895       v_expr_last_update cz_expression_nodes.last_update_date%TYPE;
9896       l_exp_models_idx_ref cz_pb_mgr.t_ref_idx_vc2;
9897       l_intl_text_date DATE;
9898       l_eff_set_date DATE;
9899       l_max_arc_date DATE;
9900       l_max_ui_date DATE;
9901       l_ps_node_update_date DATE;
9902       l_remote_model_cur ref_cursor;
9903       l_remote_model cz_pb_model_exports.model_id%TYPE;
9904       l_remote_proj cz_pb_model_exports.model_id%TYPE;
9905       l_remote_name VARCHAR2(32000);
9906       child_model_ui_has_changed BOOLEAN := FALSE;
9907    BEGIN
9908       cz_pb_mgr.v_models_to_be_exported.DELETE;
9909       cz_pb_mgr.v_models_not_to_be_exported.DELETE;
9910 
9911       IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
9912       THEN
9913          OPEN model_cur(rootmodelid);
9914 
9915             /* Bug 5523268
9916              * Check the changes to the UI in Source as well
9917              * Check for the change in the entire reference structure.  I
9918              * if there is a change in the UI of child models, pick that up
9919              * as well;
9920              */
9921 
9922          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9923          THEN
9924             child_model_ui_has_changed :=has_ui_inany_chld_mdl_changed(rootmodelid);
9925          END IF;
9926 
9927          IF (cz_pb_mgr.v_ui_str = 'UI' or child_model_ui_has_changed )
9928          THEN
9929             LOOP
9930                FETCH model_cur
9931                 INTO v_model_id;
9932 
9933                EXIT WHEN model_cur%NOTFOUND;
9934                record_index := record_index + 1;
9935                cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9936             END LOOP;
9937 
9938             add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9939          ELSE
9940             LOOP
9941                FETCH model_cur
9942                 INTO v_model_id;
9943 
9944                EXIT WHEN model_cur%NOTFOUND;
9945                v_count := 0;
9946 
9947                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9948                  IF cz_pb_mgr.v_server_id = 0 THEN
9949                    SELECT COUNT(*) INTO v_count
9950 		   FROM cz_pb_model_exports
9951                    WHERE model_id=v_model_id AND status=publication_ok AND server_id=0
9952                    AND migration_group_id=g_migration_group_id;
9953                  ELSE
9954                   EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_pb_model_exports x, cz_devl_projects'
9955                                     || cz_pb_mgr.v_db_link
9956                                     || ' farprj'
9957                                     || ' '
9958                                     || 'WHERE x.model_id = :1'
9959                                     || ' '
9960                                     || 'AND x.status = :2'
9961                                     || ' '
9962                                     || 'AND x.server_id = :3'
9963                                     || ' '
9964                                     || 'AND x.remote_model_id = farprj.devl_project_id'
9965                                     || ' '
9966                                     || 'AND farprj.deleted_flag = ''0'''
9967                                     || ' '
9968                                     || 'AND farprj.post_migr_change_flag = :4'
9969                                     || ' '
9970                                     || 'AND x.migration_group_id IS NOT NULL'
9971                                INTO v_count
9972                               USING v_model_id, publication_ok, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged;
9973                  END IF;
9974                ELSE
9975                   SELECT COUNT(*)
9976                     INTO v_count
9977                     FROM cz_pb_model_exports x
9978                    WHERE x.model_id = v_model_id AND x.status = publication_ok AND x.server_id = cz_pb_mgr.v_server_id
9979                    AND migration_group_id IS NULL;
9980                END IF;
9981 
9982                IF (v_count = 0)
9983                THEN
9984                   record_index := record_index + 1;
9985                   cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9986                ELSE
9987                   v_count := 0;
9988 
9989                   -------check if expr nodes have changed since the model was last published
9990                   SELECT MAX(last_update_date)
9991                     INTO v_expr_last_update
9992                     FROM cz_expression_nodes t
9993                    WHERE t.deleted_flag = '0'
9994                      AND t.expr_type <> 208
9995                      AND EXISTS(SELECT 1
9996                                   FROM cz_rules
9997                                  WHERE rule_id = t.rule_id AND devl_project_id = v_model_id AND deleted_flag = '0')
9998                      AND t.deleted_flag = '0'
9999                      AND t.expr_type <> 208;
10000 
10001                   IF (v_expr_last_update IS NULL)
10002                   THEN
10003                      v_expr_last_update := cz_utils.epoch_begin;
10004                   END IF;
10005 
10006                   -----effectivitity set check
10007                   get_effectivity_set_date(v_model_id, l_eff_set_date);
10008 
10009                   IF (l_eff_set_date > v_expr_last_update)
10010                   THEN
10011                      v_expr_last_update := l_eff_set_date;
10012                   END IF;
10013 
10014                   ------check if intl text has changed
10015                   get_intl_text_date(v_model_id, l_intl_text_date);
10016 
10017                   IF (l_intl_text_date > v_expr_last_update)
10018                   THEN
10019                      v_expr_last_update := l_intl_text_date;
10020                   END IF;
10021 
10022                   get_psnode_last_date(v_model_id, l_ps_node_update_date);
10023                   IF (l_ps_node_update_date > v_expr_last_update)
10024                   THEN
10025                      v_expr_last_update := l_ps_node_update_date;
10026                   END IF;
10027 
10028 
10029                   -----------end expr nodes check
10030                   SELECT GREATEST(MAX(arc.last_update_date), MAX(REF.last_update_date))
10031                     INTO l_max_arc_date
10032                     FROM cz_archives arc, cz_archive_refs REF
10033                    WHERE REF.devl_project_id = v_model_id AND arc.archive_id = REF.archive_id AND arc.deleted_flag = '0' AND REF.deleted_flag = '0';
10034 
10035                   IF l_max_arc_date IS NOT NULL AND l_max_arc_date > v_expr_last_update
10036                   THEN
10037                      v_expr_last_update := l_max_arc_date;
10038                   END IF;
10039 
10040                   -- check if any new ui created after last xfr activity
10041                   -- call get_max_ui_date if this check still not enough
10042                   SELECT MAX(creation_date) INTO l_max_ui_date
10043                   FROM cz_ui_defs
10044                   WHERE deleted_flag = '0' AND devl_project_id = v_model_id AND ui_style <> '-1';
10045                   IF l_max_ui_date IS NOT NULL AND l_max_ui_date > v_expr_last_update THEN
10046                     v_expr_last_update := l_max_ui_date;
10047                   END IF;
10048 
10049                   IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
10050                     IF cz_pb_mgr.v_server_id = 0 THEN
10051                       SELECT COUNT(*) INTO v_count
10052 		        FROM cz_devl_projects x, cz_pb_model_exports y
10053 		       WHERE x.devl_project_id = y.model_id
10054 		         AND x.last_update_date < y.last_xfr_activity
10055 		         AND y.last_xfr_activity > v_expr_last_update
10056 		         AND y.model_id = v_model_id AND y.server_id = 0
10057                          AND y.status = 'OK' AND y.migration_group_id = g_migration_group_id;
10058                     ELSE
10059                      EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_devl_projects x, cz_pb_model_exports y, cz_devl_projects'
10060                                        || cz_pb_mgr.v_db_link
10061                                        || ' farprj'
10062                                        || ' '
10063                                        || 'WHERE x.devl_project_id = y.model_id'
10064                                        || ' '
10065                                        || 'AND x.last_update_date < y.last_xfr_activity'
10066                                        || ' '
10067                                        || 'AND y.last_xfr_activity > :1'
10068                                        || ' '
10069                                        || 'AND y.model_id = :2'
10070                                        || ' '
10071                                        || 'AND y.server_id = :3'
10072                                        || ' '
10073                                        || 'AND y.remote_model_id = farprj.devl_project_id'
10074                                        || ' '
10075                                        || 'AND farprj.deleted_flag = ''0'''
10076                                        || ' '
10077                                        || 'AND farprj.post_migr_change_flag = :4'
10078                                        || ' '
10079                                        || 'AND y.migration_group_id IS NOT NULL AND y.status = :5'
10080                                   INTO v_count
10081                                  USING v_expr_last_update, v_model_id, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged, publication_ok;
10082                     END IF;
10083                   ELSE
10084                      SELECT COUNT(*)
10085                        INTO v_count
10086                        FROM cz_devl_projects x, cz_pb_model_exports y
10087                       WHERE x.devl_project_id = y.model_id
10088                         AND x.last_update_date < y.last_xfr_activity
10089                         AND y.last_xfr_activity > v_expr_last_update
10090                         AND y.model_id = v_model_id
10091                         AND y.server_id = cz_pb_mgr.v_server_id
10092                         AND y.status = 'OK' AND y.migration_group_id IS NULL;
10093                   END IF;
10094 
10095                   IF (v_count = 0)
10096                   THEN
10097                      record_index := record_index + 1;
10098                      cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10099                   ELSE
10100                      -----check if the model exists and is not deleted
10101                      l_remote_model := 0;
10102                      l_remote_proj := 0;
10103 
10104                      BEGIN
10105                        get_remote_model_id(cz_pb_mgr.v_server_id, v_model_id, cz_pb_mgr.v_status_code, l_remote_model);
10106                      EXCEPTION
10107                         WHEN NO_DATA_FOUND THEN
10108                            record_index := record_index + 1;
10109                            cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10110                      END;
10111 
10112                      IF (l_remote_model > 0)
10113                      THEN
10114                         OPEN l_remote_model_cur FOR    'SELECT devl_project_id,'
10115                                                     || ' '
10116                                                     || 'REPLACE(cz_developer_utils_pvt.get_repository_path'
10117                                                     || cz_pb_mgr.v_db_link
10118                                                     || ' '
10119                                                     || '(devl_project_id, ''PRJ''), ''/'', ''.'')'
10120                                                     || ' '
10121                                                     || 'FROM cz_devl_projects'
10122                                                     || cz_pb_mgr.v_db_link
10123                                                     || '   t'
10124                                                     || ' '
10125                                                     || 'WHERE t.devl_project_id = :1'
10126                                                     || ' '
10127                                                     || 'AND t.deleted_flag = ''0''' USING l_remote_model;
10128 
10129                         LOOP
10130                            FETCH l_remote_model_cur
10131                             INTO l_remote_proj, l_remote_name;
10132 
10133                            EXIT WHEN l_remote_model_cur%NOTFOUND;
10134                         END LOOP;
10135 
10136                         CLOSE l_remote_model_cur;
10137 
10138                         IF (l_remote_proj > 0)
10139                         THEN
10140                            not_exported_record_index := not_exported_record_index + 1;
10141                            cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id;
10142                            v_remote_names_not_exported(v_model_id) := l_remote_name;
10143                         ELSE
10144                            record_index := record_index + 1;
10145                            cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10146                         END IF;
10147                      END IF;
10148                   END IF;
10149                END IF;
10150             END LOOP;
10151 
10152             add_parent_models(rootmodelid, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_models_not_to_be_exported);
10153             add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
10154          END IF;
10155 
10156          CLOSE model_cur;
10157       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
10158       THEN
10159          l_exp_models_idx_ref.DELETE;
10160 
10161          OPEN model_cur(rootmodelid);
10162 
10163          LOOP
10164             FETCH model_cur
10165              INTO v_model_id;
10166 
10167             EXIT WHEN model_cur%NOTFOUND;
10168 
10169             IF (cz_pb_mgr.copy_root_only = 'NO')
10170             THEN
10171                record_index := record_index + 1;
10172                cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10173                l_exp_models_idx_ref(v_model_id) := v_model_id;
10174             ELSIF(cz_pb_mgr.copy_root_only = 'YES')
10175             THEN
10176                NULL;
10177                ----not_exported_record_index := not_exported_record_index + 1;
10178             ----cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id ;
10179             END IF;
10180          END LOOP;
10181 
10182          CLOSE model_cur;
10183 
10184          IF (NOT l_exp_models_idx_ref.EXISTS(rootmodelid))
10185          THEN
10186             record_index := record_index + 1;
10187             cz_pb_mgr.v_models_to_be_exported(record_index) := rootmodelid;
10188          END IF;
10189       END IF;
10190    EXCEPTION
10191       WHEN OTHERS
10192       THEN
10193          CLOSE model_cur;
10194 
10195          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10196          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10197          RAISE;
10198    END get_models_tobe_exported;
10199 
10200 ---->>>>>>>>>>>>>>>>>>>>>>>>>
10201 ---------Creates an export request for each model in the PL/SQL table cz_pb_mgr.v_models_to_be_exported
10202    PROCEDURE create_export_request(rootmodelid IN NUMBER, modelid IN NUMBER, publicationid IN NUMBER, serverid IN NUMBER)
10203    AS
10204       v_node_depth cz_model_ref_expls.node_depth%TYPE;
10205    BEGIN
10206       SELECT NVL(MAX(node_depth), 0)
10207         INTO v_node_depth
10208         FROM cz_model_ref_expls
10209        WHERE model_id = rootmodelid AND component_id = modelid AND deleted_flag = '0';
10210 
10211       INSERT INTO cz_pb_model_exports
10212                   (export_id, export_seq, model_id, root_model_id, server_id, publication_id, export_reverse_seq
10213                   ,superseded_flag, last_xfr_activity, creation_date, last_update_date, created_by, last_updated_by, migration_group_id
10214                   )
10215            VALUES (cz_pb_model_exports_s.NEXTVAL, cz_pb_model_exports_s.CURRVAL, modelid, rootmodelid, serverid, publicationid, NVL(v_node_depth, 0)
10216                   ,'N', SYSDATE, SYSDATE, SYSDATE, 1, 1, cz_pb_mgr.g_migration_group_id
10217                   );
10218 
10219       SELECT cz_pb_model_exports_s.CURRVAL
10220         INTO cz_pb_mgr.v_export_id
10221         FROM DUAL;
10222 
10223       COMMIT;
10224    EXCEPTION
10225       WHEN OTHERS
10226       THEN
10227          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXP_REQUEST_ERR', 'MODELID', modelid);
10228          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CREATE_EXPORT_REQUEST', SQLCODE);
10229          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10230          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10231          RAISE;
10232    END create_export_request;
10233 
10234 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10235 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10236    PROCEDURE create_copy_requests
10237    IS
10238    BEGIN
10239       IF ((cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_models_not_to_be_exported.COUNT > 0))
10240       THEN
10241          FOR copyid IN cz_pb_mgr.v_models_not_to_be_exported.FIRST .. cz_pb_mgr.v_models_not_to_be_exported.LAST
10242          LOOP
10243             create_export_request(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_models_not_to_be_exported(copyid), cz_pb_mgr.v_publication_id, 0);
10244 
10245             UPDATE cz_pb_model_exports
10246                SET remote_model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid)
10247                   ,status = publication_ok
10248              WHERE cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id
10249                AND cz_pb_model_exports.model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid);
10250          END LOOP;
10251       END IF;
10252 
10253       COMMIT;
10254    EXCEPTION
10255       WHEN OTHERS
10256       THEN
10257          RAISE;
10258    END create_copy_requests;
10259 
10260 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10261 -------------procedure to check publications on target instance
10262    PROCEDURE remote_pb_check(p_publication_id NUMBER)
10263    IS
10264       remote_pb_cv ref_cursor;
10265       v_publication_id NUMBER := 0;
10266       v_remote_link cz_servers.fndnam_link_name%TYPE;
10267    BEGIN
10268       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10269       THEN
10270          IF ((p_publication_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
10271          THEN
10272             v_remote_link := retrieve_db_link(cz_pb_mgr.v_server_id);
10273             cz_pb_mgr.v_insert_string :=
10274                'SELECT  publication_id FROM cz_model_publications' || v_remote_link || ' t' || ' ' || 'WHERE t.publication_id =  '
10275                || p_publication_id;
10276 
10277             OPEN remote_pb_cv FOR cz_pb_mgr.v_insert_string;
10278 
10279             LOOP
10280                FETCH remote_pb_cv
10281                 INTO v_publication_id;
10282 
10283                EXIT WHEN remote_pb_cv%NOTFOUND;
10284             END LOOP;
10285 
10286             CLOSE remote_pb_cv;
10287 
10288             IF (v_publication_id = 0)
10289             THEN
10290                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'PUBID', p_publication_id);
10291                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
10292                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10293             END IF;
10294          END IF;
10295       END IF;
10296    EXCEPTION
10297       WHEN OTHERS
10298       THEN
10299          CLOSE remote_pb_cv;
10300 
10301          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'SQLERRM', SQLERRM);
10302          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
10303          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10304          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10305          RAISE;
10306    END remote_pb_check;
10307 
10308 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10309 ------insert into effectivity sets table
10310    PROCEDURE insert_eff_sets(
10311       p_eff_set_id_ref IN cz_pb_mgr.t_ref
10312      ,p_eff_sets_old_key IN OUT NOCOPY cz_pb_mgr.t_ref
10313      ,p_eff_sets_new_key IN OUT NOCOPY cz_pb_mgr.t_ref
10314      ,p_eff_single_idx_key IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
10315      ,p_old_key_name IN VARCHAR2
10316      ,p_new_key_name IN VARCHAR2
10317      ,p_eff_text IN VARCHAR2
10318    )
10319    IS
10320       plsql_table_list cz_pb_mgr.col_plsql_table_list;
10321       v_cz_eff_sets_old_ref cz_pb_mgr.t_ref;
10322       v_cz_eff_sets_new_ref cz_pb_mgr.t_ref;
10323       check_all_null BOOLEAN := FALSE;
10324       v_eff_count PLS_INTEGER := 0;
10325       rec_count PLS_INTEGER := 0;
10326       l_eff_set_new_id NUMBER := NULL;
10327       l_eff_sets_exist_key cz_pb_mgr.t_ref;
10328    BEGIN
10329       IF (p_eff_set_id_ref.COUNT > 0)
10330       THEN
10331          p_eff_sets_old_key.DELETE;
10332          p_eff_sets_new_key.DELETE;
10333          l_eff_sets_exist_key.DELETE;
10334          p_eff_single_idx_key.DELETE;
10335          cz_pb_mgr.v_cz_eff_sets_idx_tbl.DELETE;
10336          cz_pb_mgr.g_eff_set_obj_type.DELETE;
10337          cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
10338          cz_pb_mgr.v_cz_eff_sets_new_tbl.DELETE;
10339          check_all_null := TRUE;
10340 
10341          FOR p IN p_eff_set_id_ref.FIRST .. p_eff_set_id_ref.LAST
10342          LOOP
10343             IF (p_eff_set_id_ref(p) IS NOT NULL)
10344             THEN
10345                BEGIN
10346                   check_all_null := FALSE;
10347                   v_cz_eff_sets_old_ref.DELETE;
10348                   v_cz_eff_sets_new_ref.DELETE;
10349 
10350                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_effectivity_sets_seq
10351                                                     , 'cz_effectivity_sets_s.nextval' || cz_pb_mgr.v_db_link
10352                                                     ,cz_pb_mgr.v_oraclesequenceincr
10353                                                     )
10354                         ,effectivity_set_id
10355                   BULK COLLECT INTO v_cz_eff_sets_new_ref
10356                         ,v_cz_eff_sets_old_ref
10357                     FROM cz_effectivity_sets
10358                    WHERE cz_effectivity_sets.effectivity_set_id = p_eff_set_id_ref(p) AND cz_effectivity_sets.deleted_flag = '0';
10359                EXCEPTION
10360                   WHEN NO_DATA_FOUND
10361                   THEN
10362                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10363                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EFFSETS', SQLCODE);
10364                   WHEN OTHERS
10365                   THEN
10366                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_effectivity_sets', 'SQLERRM', SQLERRM);
10367                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
10368                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10369                END;
10370 
10371                IF (v_cz_eff_sets_new_ref.COUNT > 0)
10372                THEN
10373                   v_eff_count := cz_pb_mgr.v_cz_eff_sets_new_tbl.COUNT;
10374 
10375                   FOR r IN v_cz_eff_sets_new_ref.FIRST .. v_cz_eff_sets_new_ref.LAST
10376                   LOOP
10377                      IF (v_cz_eff_sets_new_ref(r) IS NOT NULL)
10378                      THEN
10379                         IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10380                         THEN
10381                            l_eff_set_new_id := mm_sync_eff_sets(v_cz_eff_sets_old_ref(r), v_cz_eff_sets_new_ref(r));
10382 
10383                            IF ((l_eff_set_new_id IS NULL) AND(NOT v_cz_eff_sets_idx_tbl.EXISTS(v_cz_eff_sets_old_ref(r))))
10384                            THEN
10385                               l_eff_set_new_id := v_cz_eff_sets_new_ref(r);
10386                               v_eff_count := v_eff_count + 1;
10387                               p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
10388                               p_eff_sets_new_key(v_eff_count) := l_eff_set_new_id;
10389                               cz_pb_mgr.g_eff_set_obj_type(v_eff_count) := 'EFF';
10390                               cz_pb_mgr.g_enclosing_fld_rp_entry(v_eff_count) := cz_pb_mgr.g_migration_tgt_folder_id;
10391                               cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=p_eff_sets_new_key(v_eff_count);
10392                            ELSE
10393                               cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=l_eff_set_new_id;
10394                            END IF;
10395                         ELSE
10396                            v_eff_count := v_eff_count + 1;
10397                            p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
10398                            p_eff_sets_new_key(v_eff_count) := v_cz_eff_sets_new_ref(r);
10399                            cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=v_cz_eff_sets_new_ref(r);
10400                         END IF;
10401                      END IF;
10402                   END LOOP;
10403                END IF;
10404             END IF;
10405          END LOOP;
10406 
10407          ------------------insert into cz effectivity sets
10408          plsql_table_list.DELETE;
10409          rec_count := 1;
10410          plsql_table_list(rec_count).col_name := 'effectivity_set_id';
10411          plsql_table_list(rec_count).table_name := p_new_key_name;
10412 
10413          IF (NOT check_all_null)
10414          THEN
10415             BEGIN
10416                insert_into_table('cz_effectivity_sets'
10417                                 ,'effectivity_set_id'
10418                                 ,cz_pb_mgr.v_db_link
10419                                 ,plsql_table_list
10420                                 ,p_old_key_name
10421                                 ,p_eff_sets_old_key
10422                                 );
10423 
10424                IF (p_eff_sets_new_key.COUNT > 0 AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10425                THEN
10426                   ----------begin insert into cz_rp_entries----------------
10427                   plsql_table_list.DELETE;
10428                   rec_count := 1;
10429                   plsql_table_list(rec_count).col_name := 'object_id';
10430                   plsql_table_list(rec_count).table_name := p_new_key_name;
10431                   rec_count := rec_count + 1;
10432                   plsql_table_list(rec_count).col_name := 'object_type';
10433                   plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_eff_set_obj_type';
10434                   rec_count := rec_count + 1;
10435                   plsql_table_list(rec_count).col_name := 'enclosing_folder';
10436                   plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
10437                   insert_into_rp_entries('cz_rp_entries'
10438                                         ,'object_id'
10439                                         ,'object_type'
10440                                         ,cz_pb_mgr.v_db_link
10441                                         ,plsql_table_list
10442                                         ,p_old_key_name
10443                                         ,'cz_pb_mgr.g_eff_set_obj_type'
10444                                         ,p_eff_sets_old_key
10445                                         ,cz_pb_mgr.g_eff_set_obj_type
10446                                         );
10447                ----------end insert into cz_rp_entries----------------
10448                END IF;
10449 
10450                COMMIT;
10451             EXCEPTION
10452                WHEN OTHERS
10453                THEN
10454                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10455             END;
10456          END IF;
10457 
10458          p_eff_sets_old_key.DELETE;
10459          p_eff_sets_new_key.DELETE;
10460       END IF;
10461    EXCEPTION
10462       WHEN OTHERS
10463       THEN
10464          cz_pb_mgr.v_err_message := 'Insert into cz eff sets for: ' || p_eff_text;
10465          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
10466          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10467          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10468          RAISE;
10469    END insert_eff_sets;
10470 
10471 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10472 -----procedure that verifies if the model being published is a BOM model
10473 -----and is being published to a different instance different from the one
10474 -----it has been imported from.
10475 -----@p_server_id is the target_server_id
10476 -----@p_model_id is the devl_project_id of the model being published
10477 -----@cz_pb_mgr.bom_flag is the out parameter: 'Y' indicates the model is to be
10478 -----synchronized.  'N' indicates that no sync is necessary.
10479    PROCEDURE verify_model_for_sync(p_server_id IN cz_servers.server_local_id%TYPE, p_model_id IN cz_devl_projects.devl_project_id%TYPE)
10480    AS
10481       v_source_server NUMBER;
10482       v_bom_persistent_node_id NUMBER;
10483       v_bom_ps_node_id NUMBER;
10484       v_bom_err_flag VARCHAR2(1);
10485       v_bom_err_msg VARCHAR2(2000);
10486       v_verify_model_run_id NUMBER;
10487       v_bomsynch_err_flag VARCHAR2(2000);
10488       v_model_name cz_devl_projects.NAME%TYPE;
10489 
10490       TYPE verify_model_message_list IS TABLE OF cz_db_logs.MESSAGE%TYPE
10491          INDEX BY BINARY_INTEGER;
10492 
10493       v_verify_model_msg_ref verify_model_message_list;
10494    BEGIN
10495       -------no synchronization required if published locally
10496       IF ((p_server_id <> 0) AND(g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10497          )
10498       THEN
10499          -----call to this procedure made to determine if the model being published
10500          -----contains a BOM
10501          cz_runtime.get_root_bom_node(p_model_id, v_bom_persistent_node_id, v_bom_ps_node_id, v_bom_err_flag, v_bom_err_msg);
10502 
10503          --------v_bom_err_flag = 0 indicates that the model contains a single BOM
10504          --------if it contains a single BOM identify the server from where the model
10505             --------was imported
10506          IF (v_bom_err_flag = '0')
10507          THEN
10508             SELECT source_server
10509               INTO v_source_server
10510               FROM cz_xfr_project_bills
10511              WHERE model_ps_node_id = (SELECT devl_project_id
10512                                          FROM cz_ps_nodes
10513                                         WHERE cz_ps_nodes.ps_node_id = v_bom_ps_node_id AND cz_ps_nodes.deleted_flag = '0');
10514 
10515             ------if the server from where it was imported is different from the target
10516             ------to which it is being published then call the bom sync procedure
10517                         ------else no sync required
10518             IF (v_source_server <> p_server_id)
10519             THEN
10520                BEGIN
10521                   SELECT local_name
10522                     INTO cz_pb_mgr.v_server_local_name
10523                     FROM cz_servers
10524                    WHERE cz_servers.server_local_id = p_server_id;
10525                EXCEPTION
10526                   WHEN NO_DATA_FOUND
10527                   THEN
10528                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_NO_SERVER_NAME_FOUND', 'SERVERID', p_server_id);
10529                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10530                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10531                   WHEN OTHERS
10532                   THEN
10533                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SERVER_NAME_ERR', 'SERVERID', p_server_id);
10534                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10535                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10536                END;
10537 
10538                cz_bom_synch.verify_model(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_local_name, v_bomsynch_err_flag, v_verify_model_run_id);
10539 
10540                ----- if v_bomsynch_err_flag is not success then set publication status to ERROR
10541                IF (v_bomsynch_err_flag <> cz_bom_synch.error_flag_success)
10542                THEN
10543                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10544 
10545                   BEGIN
10546                      SELECT NAME
10547                        INTO v_model_name
10548                        FROM cz_devl_projects
10549                       WHERE devl_project_id = cz_pb_mgr.v_root_model_id AND deleted_flag = '0';
10550                   EXCEPTION
10551                      WHEN OTHERS
10552                      THEN
10553                         v_model_name := 'Model name not found for model_id: ' || cz_pb_mgr.v_root_model_id;
10554                   END;
10555 
10556                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_VERIFY_ERR', 'MODELNAME', v_model_name);
10557                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROC', SQLCODE);
10558 
10559                   ----trap errors from verify model to populate cz_db_logs
10560                   BEGIN
10561                      SELECT MESSAGE
10562                      BULK COLLECT INTO v_verify_model_msg_ref
10563                        FROM cz_db_logs
10564                       WHERE cz_db_logs.run_id = v_verify_model_run_id;
10565                   EXCEPTION
10566                      WHEN NO_DATA_FOUND
10567                      THEN
10568                         cz_pb_mgr.v_err_message := 'No messages from verify model procedure';
10569                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10570                      WHEN OTHERS
10571                      THEN
10572                         cz_pb_mgr.v_err_message := 'ERROR in bulk collect of messages for verify_model_procedure: ' || SQLERRM;
10573                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10574                   END;
10575 
10576                   IF (v_verify_model_msg_ref.COUNT > 0)
10577                   THEN
10578                      FOR j IN v_verify_model_msg_ref.FIRST .. v_verify_model_msg_ref.LAST
10579                      LOOP
10580                         IF (v_verify_model_msg_ref(j) IS NOT NULL)
10581                         THEN
10582                            cz_pb_mgr.v_err_message := v_verify_model_msg_ref(j);
10583                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10584                         END IF;
10585                      END LOOP;
10586                   END IF;
10587                ELSE
10588                   cz_pb_mgr.bomsynch_flag := 'Y';
10589                END IF;
10590             ELSE
10591                cz_pb_mgr.bomsynch_flag := 'N';
10592             END IF;
10593          ----- v_bom_err_flag = 2 then NO BOM SYNC to be done
10594          ELSIF(v_bom_err_flag = '2')
10595          THEN
10596             cz_pb_mgr.bomsynch_flag := 'N';
10597             cz_pb_mgr.v_err_message := 'No BOM component found in model: ' || TO_CHAR(p_model_id);
10598             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
10599          -----v_bom_err_flag is not 0 or 2 set the publication status to ERROR
10600          ELSE
10601             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10602             cz_pb_mgr.v_err_message := 'Error: two bom models exist in model: ' || TO_CHAR(p_model_id);
10603             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
10604          END IF;
10605       ELSE
10606          cz_pb_mgr.bomsynch_flag := 'N';
10607       END IF;
10608    EXCEPTION
10609       WHEN OTHERS
10610       THEN
10611          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_PROC_ERR', 'SQLERRM', SQLERRM);
10612          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10613          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10614          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10615          RAISE;
10616    END verify_model_for_sync;
10617 
10618 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10619 ------procedure to get synchronized values for organization_id,
10620 ------top_item_id and product_key of cz_model_publications
10621 ------If no bom synch required, then default values are returned
10622    PROCEDURE get_synchronized_pb_values(p_publication_id IN NUMBER)
10623    IS
10624    BEGIN
10625       IF (p_publication_id > 0)
10626       THEN
10627          SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_orgid(organization_id), 'N', organization_id)
10628                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_topitemid(top_item_id), 'N', top_item_id)
10629                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_productkey(product_key), 'N', product_key)
10630            INTO cz_pb_mgr.v_bomsynch_org_id
10631                ,cz_pb_mgr.v_bomsynch_item_id
10632                ,cz_pb_mgr.v_bomsynch_product_key
10633            FROM cz_model_publications
10634           WHERE cz_model_publications.publication_id = p_publication_id;
10635       END IF;
10636    EXCEPTION
10637       WHEN OTHERS
10638       THEN
10639          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GET_SYNC_ERR', 'SQLERRM', SQLERRM);
10640          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETSYNCVALUES', SQLCODE);
10641          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10642          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10643          RAISE;
10644    END get_synchronized_pb_values;
10645 
10646 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10647 ------function returns true when p_str is a number
10648 ------used in replace_lce_texts
10649    FUNCTION is_number(p_str IN VARCHAR2)
10650       RETURN BOOLEAN
10651    IS
10652       v_numval NUMBER;
10653    BEGIN
10654       IF (p_str IS NOT NULL)
10655       THEN
10656          v_numval := TO_NUMBER(p_str);
10657          RETURN TRUE;
10658       ELSE
10659          RETURN FALSE;
10660       END IF;
10661    EXCEPTION
10662       WHEN OTHERS
10663       THEN
10664          RETURN FALSE;
10665    END is_number;
10666 
10667   FUNCTION is_val_number (p_str IN VARCHAR2)
10668   RETURN VARCHAR2 IS
10669 
10670   BEGIN
10671 
10672      IF(is_number(p_str))
10673      THEN
10674        RETURN 'TRUE';
10675 
10676      ELSE
10677 
10678        RETURN 'FALSE';
10679      END IF;
10680 
10681   END is_val_number;
10682 
10683 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10684 -------procedure to replace reason ids and unsatisfied message
10685 -------ids in logic text.
10686 -------p_logic_text: is the lce text
10687 -------p_pattern : pattern to search for like '... ' for reason ids
10688 -------p_column : name of the column like reason_id
10689 -------x_logic_text: out parameter contains replaced text
10690 PROCEDURE replace_intl_texts(p_logic_text IN VARCHAR2, p_pattern IN VARCHAR2, p_column IN VARCHAR2, x_logic_text IN OUT NOCOPY VARCHAR2)
10691 IS
10692   v_search_str VARCHAR2(200);
10693   v_replace_str VARCHAR2(200);
10694   v_idx_number NUMBER;
10695   v_rep_idx_no NUMBER;
10696   v_instr PLS_INTEGER;
10697   v_lce_text VARCHAR2(4000);
10698   v_complete_str NUMBER;
10699   v_complete_str1 NUMBER;
10700   v_complete_str2 NUMBER;
10701   v_pattern VARCHAR2(200);
10702   v_lce_text_str VARCHAR2(4000);
10703   v_end_delim_str varchar2(25);
10704 
10705 BEGIN
10706   IF (p_logic_text IS NOT NULL) THEN
10707     v_lce_text := p_logic_text;
10708     v_lce_text_str := p_logic_text;
10709     v_instr := INSTR(v_lce_text, p_pattern);
10710     WHILE (v_instr > 0)
10711     LOOP
10712       IF (p_pattern LIKE reasonid) THEN
10713         v_instr := v_instr + 4;
10714         v_pattern := p_pattern;
10715         v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
10716       ELSE -- IF (p_pattern LIKE unmsgid) THEN
10717         v_pattern := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr, 5)));
10718         v_pattern := v_pattern || ' ';
10719         v_instr := v_instr + 5;
10720         v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
10721       END IF;
10722 
10723       v_complete_str1 := INSTR(v_lce_text, ' ');
10724       v_complete_str2 := INSTR(v_lce_text, pbnewline);
10725 
10726       IF v_complete_str2 > 0 AND v_complete_str1 > 0 THEN
10727         v_complete_str := LEAST(v_complete_str1, v_complete_str2) - 1;
10728         IF v_complete_str1 > v_complete_str2 THEN
10729           v_end_delim_str := pbnewline;
10730         ELSE
10731           v_end_delim_str := ' ';
10732         END IF;
10733       ELSIF v_complete_str2 > 0 AND v_complete_str1 = 0 THEN
10734         v_complete_str := v_complete_str2 - 1;
10735         v_end_delim_str:= pbnewline;
10736       ELSIF v_complete_str2 = 0 AND v_complete_str1 > 0 THEN
10737         v_complete_str := v_complete_str1 - 1;
10738         v_end_delim_str:= ' ';
10739       ELSE -- v_complete_str2 = 0) AND(v_complete_str1 = 0
10740         v_complete_str := LENGTH(v_lce_text);
10741         v_end_delim_str := NULL;
10742       END IF;
10743 
10744       v_search_str := NULL;
10745       v_search_str := LTRIM(RTRIM(SUBSTR(v_lce_text, 1, v_complete_str)));
10746 
10747       IF (is_number(v_search_str)) THEN
10748         v_idx_number := TO_NUMBER(v_search_str);
10749         BEGIN
10750           v_rep_idx_no := cz_pb_mgr.v_cz_intl_text_idx_ref(v_idx_number);
10751         EXCEPTION
10752           WHEN NO_DATA_FOUND THEN
10753             CZ_PB_MGR.v_err_message := 'Failure in resolving '||p_column||': '||v_search_str;
10754             CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LCETEXTS',SQLCODE);
10755             RAISE;
10756         END;
10757 
10758         IF v_end_delim_str IS NULL THEN
10759           v_lce_text_str := substr(v_lce_text_str, 1, length(v_lce_text_str)-v_complete_str) || to_char(v_rep_idx_no);
10760         ELSE
10761           v_search_str  := v_pattern || TO_CHAR(v_idx_number) || v_end_delim_str;
10762           v_replace_str := v_pattern || TO_CHAR(v_rep_idx_no) || v_end_delim_str;
10763           v_lce_text_str := REPLACE(v_lce_text_str, v_search_str, v_replace_str);
10764         END IF;
10765       END IF;
10766 
10767       v_instr := INSTR(v_lce_text, p_pattern);
10768     END LOOP;
10769   END IF;
10770 
10771   x_logic_text := v_lce_text_str;
10772 EXCEPTION
10773   WHEN OTHERS THEN
10774     cz_pb_mgr.v_err_message := 'Error during replacing ' || p_column || ' : ' || SQLERRM;
10775     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10776     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10777     RAISE;
10778 END replace_intl_texts;
10779 
10780 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
10781    PROCEDURE insert_lce_load_specs(
10782       p_specs_attach_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10783      ,p_specs_lce_header_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10784      ,p_specs_required_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10785      ,p_specs_attach_comp_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10786      ,p_specs_model_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10787      ,p_specs_net_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10788      ,p_alias_name_ref IN OUT NOCOPY cz_pb_mgr.t_alias_name
10789      ,x_status IN OUT NOCOPY VARCHAR2
10790    )
10791    AS
10792    BEGIN
10793       IF (x_status <> PUBLICATION_ERROR)
10794       THEN
10795          IF (p_specs_model_id_ref.COUNT > 0)
10796          THEN
10797             EXECUTE IMMEDIATE    'BEGIN'
10798                               || ' '
10799                               || 'IF (cz_pb_mgr.v_specs_attach_expl_id_ref.COUNT > 0) THEN '
10800                               || 'FOR I IN cz_pb_mgr.v_specs_attach_expl_id_ref.FIRST..cz_pb_mgr.v_specs_attach_expl_id_ref.LAST'
10801                               || ' '
10802                               || 'LOOP'
10803                               || ' '
10804                               || 'INSERT INTO cz_lce_load_specs'
10805                               || cz_pb_mgr.v_db_link
10806                               || '(ATTACHMENT_EXPL_ID'
10807                               || ' '
10808                               || ',LCE_HEADER_ID'
10809                               || ' '
10810                               || ',REQUIRED_EXPL_ID'
10811                               || ' '
10812                               || ',ATTACHMENT_COMP_ID'
10813                               || ' '
10814                               || ',MODEL_ID'
10815                               || ' '
10816                               || ',NET_TYPE'
10817                               || ' '
10818                               || ',alias_name'
10819                               || ' '
10820                               || ',DELETED_FLAG)'
10821                               || ' '
10822                               || 'values (cz_pb_mgr.v_specs_attach_expl_id_ref(i)'
10823                               || ' '
10824                               || ',cz_pb_mgr.v_specs_lce_header_id_ref(i)'
10825                               || ' '
10826                               || ',cz_pb_mgr.v_specs_required_expl_id_ref(i)'
10827                               || ' '
10828                               || ',cz_pb_mgr.v_specs_attach_comp_id_ref(i)'
10829                               || ' '
10830                               || ',cz_pb_mgr.v_specs_model_id_ref(i)'
10831                               || ' '
10832                               || ',cz_pb_mgr.v_specs_net_type_ref(i)'
10833                               || ' '
10834                               || ',cz_pb_mgr.v_specs_alias_name_ref(i)'
10835                               || ' '
10836                               || ',''0'''
10837                               || ' '
10838                               || ');'
10839                               || ' '
10840                               || 'END LOOP;'
10841                               || 'END IF; '
10842                               || ' '
10843                               || 'END;';
10844 
10845             COMMIT;
10846          END IF;
10847       END IF;
10848    EXCEPTION
10849       WHEN OTHERS
10850       THEN
10851          x_status := PUBLICATION_ERROR;
10852          cz_pb_mgr.v_err_message := 'Error during insert of lce_load_specs: ' || SQLERRM;
10853          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10854          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10855          RAISE;
10856    END insert_lce_load_specs;
10857 
10858 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10859 --------copy data into cz_lce_headers
10860    PROCEDURE copy_lce_headers
10861    IS
10862       v_cz_lce_comp_id_tbl cz_pb_mgr.t_ref;
10863       v_cz_lce_expl_id_tbl cz_pb_mgr.t_ref;
10864       v_cz_lce_headers_new_tbl cz_pb_mgr.t_ref;
10865       v_cz_lce_headers_old_tbl cz_pb_mgr.t_ref;
10866       v_cz_lce_headers_comp_tbl cz_pb_mgr.t_ref;
10867       v_cz_lce_headers_expl_tbl cz_pb_mgr.t_ref;
10868       v_cz_lce_devl_id_tbl cz_pb_mgr.t_ref;
10869       v_specs_attach_expl_id_tbl cz_pb_mgr.t_ref;
10870       v_specs_lce_header_id_tbl cz_pb_mgr.t_ref;
10871       v_specs_required_expl_id_tbl cz_pb_mgr.t_ref;
10872       v_specs_attach_comp_id_tbl cz_pb_mgr.t_ref;
10873       v_specs_model_id_tbl cz_pb_mgr.t_ref;
10874       v_specs_net_type_tbl cz_pb_mgr.t_ref;
10875       plsql_table_list cz_pb_mgr.col_plsql_table_list;
10876       v_specs_alias_name_tbl cz_pb_mgr.t_alias_name;
10877       rec_count NUMBER := 0;
10878       resolution_status VARCHAR2(200);
10879    BEGIN
10880       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10881       THEN
10882          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
10883          THEN
10884             cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
10885             cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
10886             cz_pb_mgr.v_cz_lce_headers_idx_ref.DELETE;
10887             cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
10888             cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
10889             cz_pb_mgr.v_cz_lce_devl_id_ref.DELETE;
10890 
10891             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10892             LOOP
10893                cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
10894                cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
10895                v_cz_lce_comp_id_tbl.DELETE;
10896                v_cz_lce_expl_id_tbl.DELETE;
10897 
10898                BEGIN
10899                   SELECT cz_pb_mgr.sequence_generate(cz_lce_headers_seq
10900                                                     , 'cz_lce_headers_s.nextval' || cz_pb_mgr.v_db_link
10901                                                     ,cz_pb_mgr.v_oraclesequenceincr
10902                                                     )
10903                         ,lce_header_id, component_id, model_ref_expl_id, devl_project_id
10904                   BULK COLLECT INTO cz_pb_mgr.v_cz_lce_headers_new_tbl
10905                         ,cz_pb_mgr.v_cz_lce_headers_old_tbl, v_cz_lce_comp_id_tbl, v_cz_lce_expl_id_tbl, v_cz_lce_devl_id_tbl
10906                     FROM cz_lce_headers
10907                    WHERE cz_lce_headers.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_lce_headers.deleted_flag = record_not_deleted;
10908                EXCEPTION
10909                   WHEN NO_DATA_FOUND
10910                   THEN
10911                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10912                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10913                   WHEN OTHERS
10914                   THEN
10915                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10916                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10917                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10918                END;
10919 
10920                rec_count := cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT;
10921 
10922                IF (cz_pb_mgr.v_cz_lce_headers_new_tbl.COUNT > 0)
10923                THEN
10924                   FOR k IN cz_pb_mgr.v_cz_lce_headers_new_tbl.FIRST .. cz_pb_mgr.v_cz_lce_headers_new_tbl.LAST
10925                   LOOP
10926                      rec_count := rec_count + 1;
10927                      cz_pb_mgr.v_cz_lce_headers_new_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10928                      cz_pb_mgr.v_cz_lce_headers_old_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_old_tbl(k);
10929                      cz_pb_mgr.v_cz_lce_headers_idx_ref(cz_pb_mgr.v_cz_lce_headers_old_tbl(k)):=cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10930                      cz_pb_mgr.v_cz_lce_comp_id_ref(rec_count) := v_cz_lce_comp_id_tbl(k);
10931                      cz_pb_mgr.v_cz_lce_expl_id_ref(rec_count) := v_cz_lce_expl_id_tbl(k);
10932                      cz_pb_mgr.v_cz_lce_devl_id_ref(rec_count) := v_cz_lce_devl_id_tbl(k);
10933                   END LOOP;
10934                END IF;
10935             END LOOP;
10936          END IF;
10937 
10938          IF (cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT > 0)
10939          THEN
10940             ------resolve component ids of cz lce headers
10941             resolve_ids(cz_pb_mgr.v_cz_lce_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component ids of lce headers');
10942             -------resolve model ref expl id
10943             resolve_ids(cz_pb_mgr.v_cz_lce_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of lce headers');
10944             -------resolve model ref expl id
10945             resolve_ids(cz_pb_mgr.v_cz_lce_devl_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl proj id of lce headers');
10946             ------------insert into cz lce headers
10947             plsql_table_list.DELETE;
10948             rec_count := 1;
10949             plsql_table_list(rec_count).col_name := 'lce_header_id';
10950             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_headers_new_ref';
10951             rec_count := rec_count + 1;
10952             plsql_table_list(rec_count).col_name := 'component_id';
10953             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_comp_id_ref';
10954             rec_count := rec_count + 1;
10955             plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
10956             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_expl_id_ref';
10957             rec_count := rec_count + 1;
10958             plsql_table_list(rec_count).col_name := 'devl_project_id';
10959             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_devl_id_ref';
10960             insert_into_table('cz_lce_headers'
10961                              ,'lce_header_id'
10962                              ,cz_pb_mgr.v_db_link
10963                              ,plsql_table_list
10964                              ,'cz_pb_mgr.v_cz_lce_headers_old_ref'
10965                              ,cz_pb_mgr.v_cz_lce_headers_old_ref
10966                              );
10967             ------insert data into cz_lce_load_specs
10968             clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
10969             IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
10970             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10971             LOOP
10972                BEGIN
10973                   v_specs_attach_expl_id_tbl.DELETE;
10974                   v_specs_lce_header_id_tbl.DELETE;
10975                   v_specs_required_expl_id_tbl.DELETE;
10976                   v_specs_attach_comp_id_tbl.DELETE;
10977                   v_specs_model_id_tbl.DELETE;
10978                   v_specs_net_type_tbl.DELETE;
10979                   v_specs_alias_name_tbl.DELETE;
10980 
10981                   SELECT attachment_expl_id, lce_header_id, required_expl_id, attachment_comp_id
10982                         ,model_id, net_type, alias_name
10983                   BULK COLLECT INTO v_specs_attach_expl_id_tbl, v_specs_lce_header_id_tbl, v_specs_required_expl_id_tbl, v_specs_attach_comp_id_tbl
10984                         ,v_specs_model_id_tbl, v_specs_net_type_tbl, v_specs_alias_name_tbl
10985                     FROM cz_lce_load_specs
10986                    WHERE cz_lce_load_specs.model_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_lce_load_specs.deleted_flag = record_not_deleted;
10987                EXCEPTION
10988                   WHEN NO_DATA_FOUND
10989                   THEN
10990                      NULL;
10991                   WHEN OTHERS
10992                   THEN
10993                      RAISE no_load_specs_data;
10994                END;
10995 
10996                rec_count := cz_pb_mgr.v_specs_model_id_ref.COUNT;
10997 
10998                IF (v_specs_model_id_tbl.COUNT > 0)
10999                THEN
11000                   FOR loadspeccount IN v_specs_model_id_tbl.FIRST .. v_specs_model_id_tbl.LAST
11001                   LOOP
11002                      rec_count := rec_count + 1;
11003                      cz_pb_mgr.v_specs_attach_expl_id_ref(rec_count) := v_specs_attach_expl_id_tbl(loadspeccount);
11004                      cz_pb_mgr.v_specs_lce_header_id_ref(rec_count) := v_specs_lce_header_id_tbl(loadspeccount);
11005                      cz_pb_mgr.v_specs_required_expl_id_ref(rec_count) := v_specs_required_expl_id_tbl(loadspeccount);
11006                      cz_pb_mgr.v_specs_attach_comp_id_ref(rec_count) := v_specs_attach_comp_id_tbl(loadspeccount);
11007                      cz_pb_mgr.v_specs_model_id_ref(rec_count) := v_specs_model_id_tbl(loadspeccount);
11008                      cz_pb_mgr.v_specs_net_type_ref(rec_count) := v_specs_net_type_tbl(loadspeccount);
11009                      cz_pb_mgr.v_specs_alias_name_ref(rec_count) := v_specs_alias_name_tbl(loadspeccount);
11010                   END LOOP;
11011                END IF;
11012             END LOOP;
11013             END IF;
11014 
11015             --------resolve attachment expl id
11016             resolve_ids(cz_pb_mgr.v_specs_attach_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'attachment expl id of cz_lce_load_specs');
11017             --------resolve lce_header id
11018             resolve_ids(cz_pb_mgr.v_specs_lce_header_id_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce_header_id of cz_lce_load_specs');
11019             --------resolve required expl id
11020             resolve_ids(cz_pb_mgr.v_specs_required_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'required expl id of cz_lce_load_specs');
11021             --------resolve attachment comp id
11022             resolve_ids(cz_pb_mgr.v_specs_attach_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'attachment comp id of cz_lce_load_specs');
11023             --------resolve model id
11024             resolve_ids(cz_pb_mgr.v_specs_model_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz_lce_load_specs');
11025             insert_lce_load_specs(cz_pb_mgr.v_specs_attach_expl_id_ref
11026                                  ,cz_pb_mgr.v_specs_lce_header_id_ref
11027                                  ,cz_pb_mgr.v_specs_required_expl_id_ref
11028                                  ,cz_pb_mgr.v_specs_attach_comp_id_ref
11029                                  ,cz_pb_mgr.v_specs_model_id_ref
11030                                  ,cz_pb_mgr.v_specs_net_type_ref
11031                                  ,cz_pb_mgr.v_specs_alias_name_ref
11032                                  ,cz_pb_mgr.v_status_code
11033                                  );
11034             v_cz_lce_comp_id_tbl.DELETE;
11035             v_cz_lce_expl_id_tbl.DELETE;
11036             v_cz_lce_devl_id_tbl.DELETE;
11037             v_specs_attach_expl_id_tbl.DELETE;
11038             v_specs_lce_header_id_tbl.DELETE;
11039             v_specs_required_expl_id_tbl.DELETE;
11040             v_specs_attach_comp_id_tbl.DELETE;
11041             v_specs_model_id_tbl.DELETE;
11042          END IF;
11043       END IF;                                                                             /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
11044    EXCEPTION
11045       WHEN no_load_specs_data
11046       THEN
11047          cz_pb_mgr.v_err_message := 'Error in retrieving data from cz_load_specs';
11048          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCELOADSPECS', SQLCODE);
11049          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11050          RAISE;
11051       WHEN OTHERS
11052       THEN
11053          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
11054          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCEHDRS', SQLCODE);
11055          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11056          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11057          RAISE;
11058    END copy_lce_headers;
11059 
11060 -- used only when rules not copied in publication
11061 PROCEDURE get_rule_intl_text_ids(x_text_id_tbl OUT NOCOPY CZ_PB_MGR.t_ref)
11062 IS
11063   l_text_id_tbl  CZ_PB_MGR.t_ref;
11064   l_counter      PLS_INTEGER := 0;
11065 BEGIN
11066   FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
11067     l_text_id_tbl.DELETE;
11068     SELECT intl_text_id BULK COLLECT INTO l_text_id_tbl
11069     FROM cz_intl_texts
11070     WHERE model_id = cz_pb_mgr.v_models_to_be_exported(i)
11071     AND deleted_flag = '0' AND (seeded_flag IS NULL OR seeded_flag = '0')
11072     AND intl_text_id IN (SELECT reason_id
11073                          FROM cz_rules
11074                          WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
11075                          AND deleted_flag = '0' AND reason_id IS NOT NULL
11076                          UNION ALL
11077                          SELECT unsatisfied_msg_id
11078                          FROM cz_rules
11079                          WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
11080                          AND deleted_flag = '0' AND unsatisfied_msg_id IS NOT NULL);
11081     IF l_text_id_tbl.COUNT > 0 THEN
11082       FOR j IN l_text_id_tbl.FIRST .. l_text_id_tbl.LAST LOOP
11083         l_counter := l_counter + 1;
11084         x_text_id_tbl(l_counter) := l_text_id_tbl(j);
11085       END LOOP;
11086     END IF;
11087   END LOOP;
11088 END get_rule_intl_text_ids;
11089 
11090 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11091 ---------procedure to copy data into cz_lce_texts
11092 ---------reason ids and unsatisfied message ids of cz rules
11093 ---------are copied and resolved in this procedure
11094 ---------
11095    PROCEDURE copy_lce_texts(p_copy_rules_flag IN VARCHAR2)
11096    IS
11097       TYPE lce_text_ref IS TABLE OF VARCHAR2(4000)
11098          INDEX BY BINARY_INTEGER;
11099 
11100       v_text_hdr_ref cz_pb_mgr.t_ref;
11101       v_text_seq_ref cz_pb_mgr.t_ref;
11102       v_lce_text_ref lce_text_ref;
11103       v_text_hdr_tbl cz_pb_mgr.t_ref;
11104       v_text_seq_tbl cz_pb_mgr.t_ref;
11105       v_lce_text_tbl cz_pb_mgr.lcetexttype;
11106       v_text_hdr_new_ref cz_pb_mgr.t_ref;
11107       v_text_seq_new_ref cz_pb_mgr.t_ref;
11108       v_lce_text_new_ref cz_pb_mgr.lcetexttype;
11109       record_count PLS_INTEGER;
11110       seq_nbr PLS_INTEGER;
11111       return_position PLS_INTEGER;
11112       rec_count NUMBER;
11113       l_text_id_tbl CZ_PB_MGR.t_ref;
11114    BEGIN
11115       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
11116       THEN
11117          IF (cz_pb_mgr.v_cz_lce_headers_old_ref.COUNT > 0)
11118          THEN
11119             v_text_hdr_ref.DELETE;
11120             v_text_seq_ref.DELETE;
11121             v_lce_text_ref.DELETE;
11122 
11123             FOR i IN cz_pb_mgr.v_cz_lce_headers_old_ref.FIRST .. cz_pb_mgr.v_cz_lce_headers_old_ref.LAST
11124             LOOP
11125                BEGIN
11126                   v_text_hdr_tbl.DELETE;
11127                   v_text_seq_tbl.DELETE;
11128                   v_lce_text_tbl.DELETE;
11129 
11130                   SELECT   lce_header_id, seq_nbr, lce_text
11131                   BULK COLLECT INTO v_text_hdr_tbl, v_text_seq_tbl, v_lce_text_tbl
11132                       FROM cz_lce_texts
11133                      WHERE cz_lce_texts.lce_header_id = cz_pb_mgr.v_cz_lce_headers_old_ref(i)
11134                   ORDER BY lce_header_id, seq_nbr;
11135                EXCEPTION
11136                   WHEN NO_DATA_FOUND
11137                   THEN
11138                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11139                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11140                   WHEN OTHERS
11141                   THEN
11142                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11143                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11144                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11145                END;
11146 
11147                rec_count := v_text_hdr_ref.COUNT;
11148 
11149                IF (v_text_hdr_tbl.COUNT > 0)
11150                THEN
11151                   FOR j IN v_text_hdr_tbl.FIRST .. v_text_hdr_tbl.LAST
11152                   LOOP
11153                      rec_count := rec_count + 1;
11154                      v_text_hdr_ref(rec_count) := v_text_hdr_tbl(j);
11155                      v_text_seq_ref(rec_count) := v_text_seq_tbl(j);
11156                      v_lce_text_ref(rec_count) := v_lce_text_tbl(j);
11157                   END LOOP;
11158                END IF;
11159             END LOOP;
11160          END IF;
11161 
11162          IF (v_text_hdr_ref.COUNT > 0)
11163          THEN
11164             -------------Resolving lce header id
11165             resolve_ids(v_text_hdr_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce header id of cz lce texts');
11166          END IF;
11167 
11168          -------replace reason ids in lce text
11169          IF (v_lce_text_ref.COUNT > 0) THEN
11170            -- insert intl text records and populate text id lookup map if rules are not copied in publication
11171            IF UPPER(NVL(p_copy_rules_flag, 'YES')) <> 'YES' THEN
11172              get_rule_intl_text_ids(l_text_id_tbl);
11173              insert_intl_texts(l_text_id_tbl,'Reason and unsatisfied msg ids of rules');
11174            END IF;
11175 
11176            FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
11177            LOOP
11178              replace_intl_texts(v_lce_text_ref(j), reasonid, 'REASONID', v_lce_text_ref(j));
11179            END LOOP;
11180          END IF;
11181 
11182          ----replace unsatisfied message ids
11183          IF (v_lce_text_ref.COUNT > 0)
11184          THEN
11185             FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
11186             LOOP
11187                replace_intl_texts(v_lce_text_ref(j), unmsgid, 'UNSATMSGID', v_lce_text_ref(j));
11188             END LOOP;
11189          END IF;
11190 
11191          IF (v_text_hdr_ref.COUNT > 0)
11192          THEN
11193             record_count := 0;
11194             seq_nbr := 0;
11195 
11196             FOR i IN v_text_hdr_ref.FIRST .. v_text_hdr_ref.LAST
11197             LOOP
11198                record_count := record_count + 1;
11199                seq_nbr := seq_nbr + 1;
11200 
11201                IF (v_text_seq_ref(i) = 1)
11202                THEN
11203                   seq_nbr := 1;
11204                END IF;
11205 
11206                IF (LENGTH(v_lce_text_ref(i)) > 2000)
11207                THEN
11208                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11209                   v_text_seq_new_ref(record_count) := seq_nbr;
11210                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, 2000);
11211                   return_position := INSTR(v_lce_text_new_ref(record_count), pbnewline, -1);
11212                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, return_position);
11213                   record_count := record_count + 1;
11214                   seq_nbr := seq_nbr + 1;
11215                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11216                   v_text_seq_new_ref(record_count) := seq_nbr;
11217                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), return_position + 1);
11218                ELSE
11219                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11220                   v_text_seq_new_ref(record_count) := seq_nbr;
11221                   v_lce_text_new_ref(record_count) := v_lce_text_ref(i);
11222                END IF;
11223             END LOOP;
11224          END IF;
11225 
11226          IF (v_text_hdr_new_ref.COUNT > 0)
11227          THEN
11228             FOR i IN v_text_hdr_new_ref.FIRST .. v_text_hdr_new_ref.LAST
11229             LOOP
11230                BEGIN
11231                   EXECUTE IMMEDIATE    'INSERT INTO cz_lce_texts'
11232                                     || cz_pb_mgr.v_db_link
11233                                     || '( LCE_HEADER_ID'
11234                                     || ' '
11235                                     || ',SEQ_NBR'
11236                                     || ' '
11237                                     || ',LCE_TEXT'
11238                                     || ' '
11239                                     || ')'
11240                                     || ' '
11241                                     || 'VALUES (:1,:2,:3)'
11242                               USING v_text_hdr_new_ref(i), v_text_seq_new_ref(i), v_lce_text_new_ref(i);
11243 
11244                   COMMIT;
11245                EXCEPTION
11246                   WHEN OTHERS
11247                   THEN
11248                      ROLLBACK;
11249                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11250                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
11251                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11252                END;
11253             END LOOP;
11254 
11255             COMMIT;
11256          END IF;
11257 
11258          v_text_hdr_ref.DELETE;
11259          v_text_seq_ref.DELETE;
11260          v_lce_text_ref.DELETE;
11261          v_text_hdr_tbl.DELETE;
11262          v_text_seq_tbl.DELETE;
11263          v_lce_text_tbl.DELETE;
11264       END IF;                                                                             /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
11265    EXCEPTION
11266       WHEN OTHERS
11267       THEN
11268          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11269          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCETEXTS', SQLCODE);
11270          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11271          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11272          RAISE;
11273    END;
11274 
11275 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11276 ---------the installed or base languages on the source and the target instance
11277 ---------must be the same.
11278    PROCEDURE pb_language_check
11279    IS
11280       lang_cv ref_cursor;
11281       lang_index NUMBER := 0.0;
11282    BEGIN
11283       cz_pb_mgr.v_src_lang_code_tbl.DELETE;
11284 
11285       BEGIN
11286          SELECT   UPPER(language_code)
11287          BULK COLLECT INTO cz_pb_mgr.v_src_lang_code_tbl
11288              FROM fnd_languages
11289             WHERE fnd_languages.installed_flag IN('B', 'I')
11290          ORDER BY UPPER(language_code);
11291       EXCEPTION
11292          WHEN OTHERS
11293          THEN
11294             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11295             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11296             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11297             cz_pb_mgr.global_export_retcode := 2;
11298       END;
11299 
11300       cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
11301 
11302       BEGIN
11303          OPEN lang_cv FOR    'SELECT UPPER(language_code)'
11304                           || ' '
11305                           || 'FROM 	 fnd_languages'
11306                           || cz_pb_mgr.v_db_link
11307                           || ' '
11308                           || 'WHERE  fnd_languages.installed_flag IN (''B'', ''I'')'
11309                           || ' '
11310                           || 'ORDER  BY UPPER(language_code)';
11311 
11312          lang_index := 1;
11313 
11314          LOOP
11315             FETCH lang_cv
11316              INTO cz_pb_mgr.v_tgt_lang_code_tbl(lang_index);
11317 
11318             EXIT WHEN lang_cv%NOTFOUND;
11319             lang_index := lang_index + 1;
11320          END LOOP;
11321       EXCEPTION
11322          WHEN OTHERS
11323          THEN
11324             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11325             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11326             cz_pb_mgr.v_status_code := 'ERR';
11327             cz_pb_mgr.global_export_retcode := 2;
11328       END;
11329 
11330       IF (    (cz_pb_mgr.v_src_lang_code_tbl.COUNT > 0)
11331           AND (cz_pb_mgr.v_tgt_lang_code_tbl.COUNT > 0)
11332           AND (cz_pb_mgr.v_src_lang_code_tbl.COUNT = cz_pb_mgr.v_tgt_lang_code_tbl.COUNT)
11333          )
11334       THEN
11335          FOR l IN cz_pb_mgr.v_src_lang_code_tbl.FIRST .. cz_pb_mgr.v_src_lang_code_tbl.LAST
11336          LOOP
11337             IF (cz_pb_mgr.v_src_lang_code_tbl(l) <> cz_pb_mgr.v_tgt_lang_code_tbl(l))
11338             THEN
11339                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SRC_TGT_LANG', 'LANGUAGE', cz_pb_mgr.v_tgt_lang_code_tbl(l));
11340                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11341                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11342                cz_pb_mgr.global_export_retcode := 2;
11343             END IF;
11344          END LOOP;
11345       ELSE
11346          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11347          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11348          cz_pb_mgr.v_status_code := 'ERR';
11349          cz_pb_mgr.global_export_retcode := 2;
11350       END IF;
11351 
11352       cz_pb_mgr.v_src_lang_code_tbl.DELETE;
11353       cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
11354    END pb_language_check;
11355 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11356 -----procedure to fix bug# 2759486  When copies of models exist
11357 -----there could be many projects with the same persistent_node_id
11358 -----So we need persistent_node_id and its associated project for resolving child_model_expl_id
11359 -----of model ref expls.
11360    PROCEDURE get_pers_prj_id(
11361       p_ref_node IN cz_ps_nodes.ps_node_id%TYPE
11362      ,x_pers_node_id OUT NOCOPY cz_ps_nodes.ps_node_id%TYPE
11363      ,x_prj_id OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
11364    )
11365    IS
11366    BEGIN
11367       SELECT persistent_node_id, devl_project_id
11368         INTO x_pers_node_id, x_prj_id
11369         FROM cz_ps_nodes t
11370        WHERE t.ps_node_id = p_ref_node AND t.deleted_flag = '0';
11371    EXCEPTION
11372       WHEN OTHERS
11373       THEN
11374          cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ref_node;
11375          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.get_pers_prj_id', SQLCODE);
11376          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11377          RAISE;
11378    END;
11379 
11380 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11381 -------procedure retrieves the project id of a ps node
11382    PROCEDURE get_devl_project_id(
11383       p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
11384      ,x_devl_project_id IN OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
11385      ,x_status IN OUT NOCOPY VARCHAR2
11386    )
11387    AS
11388    BEGIN
11389       IF (x_status <> PUBLICATION_ERROR)
11390       THEN
11391          SELECT devl_project_id
11392            INTO x_devl_project_id
11393            FROM cz_ps_nodes
11394           WHERE cz_ps_nodes.ps_node_id = p_ps_node_id AND cz_ps_nodes.deleted_flag = '0';
11395       END IF;
11396    EXCEPTION
11397       WHEN OTHERS
11398       THEN
11399          cz_pb_mgr.v_err_message := 'Error in retrieving devl proj id from cz ps nodes for ps node id: ' || p_ps_node_id || ' : ' || SQLERRM;
11400          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11401          x_status := PUBLICATION_ERROR;
11402          RAISE;
11403    END;
11404 
11405 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11406 -------procedure that retrieves persistent node id
11407    PROCEDURE get_persistent_node_id(
11408       p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
11409      ,x_persistent_id IN OUT NOCOPY cz_ps_nodes.persistent_node_id%TYPE
11410      ,x_status IN OUT NOCOPY VARCHAR2
11411    )
11412    AS
11413    BEGIN
11414       IF (x_status <> PUBLICATION_ERROR)
11415       THEN
11416          SELECT persistent_node_id
11417            INTO x_persistent_id
11418            FROM cz_ps_nodes t
11419           WHERE t.ps_node_id = p_ps_node_id AND t.deleted_flag = '0';
11420       END IF;
11421    EXCEPTION
11422       WHEN OTHERS
11423       THEN
11424          cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ps_node_id;
11425          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11426          x_status := PUBLICATION_ERROR;
11427          RAISE;
11428    END;
11429 
11430 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11431 -------procedure retrieves the component id
11432    PROCEDURE remote_component_id(
11433       p_resolved_key_value IN OUT NOCOPY NUMBER
11434      ,p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
11435      ,p_server_id IN cz_servers.server_local_id%TYPE
11436      ,x_status IN OUT NOCOPY VARCHAR2
11437    )
11438    AS
11439    BEGIN
11440       IF (x_status <> PUBLICATION_ERROR)
11441       THEN
11442          IF (p_model_not_exported_array.COUNT > 0)
11443          THEN
11444             FOR j IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
11445             LOOP
11446                IF (p_resolved_key_value = p_model_not_exported_array(j)) THEN
11447                  get_remote_model_id(p_server_id, p_resolved_key_value, x_status, p_resolved_key_value);
11448                  EXIT;
11449                END IF;
11450             END LOOP;
11451          END IF;
11452       END IF;
11453    EXCEPTION
11454       WHEN OTHERS
11455       THEN
11456          cz_pb_mgr.v_err_message := 'Error in retrieving remote component from pb model exports: ' || SQLERRM;
11457          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11458          x_status := PUBLICATION_ERROR;
11459          RAISE;
11460    END;
11461 
11462 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11463 -------procedure that resolves remote reference nodes
11464    PROCEDURE resolve_ref_ids_not_found(
11465       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
11466      ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
11467      ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
11468      ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
11469      ,p_column_name IN VARCHAR2
11470      ,x_status IN OUT NOCOPY VARCHAR2
11471    )
11472    AS
11473       ref_node_found BOOLEAN := FALSE;
11474       v_node_id NUMBER := 0.0;
11475       child_ref_id_cv ref_cursor;
11476       v_ref_project cz_devl_projects.devl_project_id%TYPE;
11477       v_ref_remote_model cz_devl_projects.devl_project_id%TYPE;
11478       v_child_expl_id cz_model_ref_expls.model_ref_expl_id%TYPE;
11479       v_persistent_node_id cz_ps_nodes.persistent_node_id%TYPE;
11480       v_source_child_model cz_model_ref_expls.model_id%TYPE;
11481       v_child_ref_node cz_ps_nodes.ps_node_id%TYPE;
11482       v_ref_model_id cz_model_ref_expls.model_id%TYPE;
11483    BEGIN
11484       IF (x_status <> PUBLICATION_ERROR)
11485       THEN
11486          IF (p_master_keys_array.COUNT > 0)
11487          THEN
11488             FOR i IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
11489             LOOP
11490                ref_node_found := FALSE;
11491 
11492                IF (p_resolved_key_array(i) IS NOT NULL)
11493                THEN
11494                   BEGIN
11495                      p_resolved_key_array(i) := p_resolving_key_new_idx_array(p_resolved_key_array(i));
11496                      ref_node_found := TRUE;
11497                   EXCEPTION
11498                      WHEN NO_DATA_FOUND
11499                      THEN
11500                         ref_node_found := FALSE;
11501                      WHEN OTHERS
11502                      THEN
11503                         RAISE;
11504                   END;
11505 
11506                   v_node_id := p_resolved_key_array(i);
11507                   v_ref_project := 0;
11508                   v_source_child_model := 0;
11509                   v_child_ref_node := 0;
11510                   v_persistent_node_id := 0;
11511                   v_ref_model_id := 0;
11512 
11513                   IF (NOT ref_node_found)
11514                   THEN
11515                      IF (p_column_name = 'cz_model_ref_expl.referring_node_id')
11516                      THEN
11517                         get_devl_project_id(p_resolved_key_array(i), v_ref_project, cz_pb_mgr.v_status_code);
11518                         get_remote_model_id(cz_pb_mgr.v_server_id, v_ref_project, cz_pb_mgr.v_status_code, v_ref_remote_model);
11519 
11520                         IF ((v_ref_project IS NOT NULL) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
11521                         THEN
11522                            OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id FROM cz_model_ref_expls'
11523                                                     || cz_pb_mgr.v_db_link
11524                                                     || '  t'
11525                                                     || ' '
11526                                                     || 'WHERE  t.model_id = '
11527                                                     || TO_CHAR(v_ref_remote_model)
11528                                                     || ' '
11529                                                     || 'AND    node_depth = 0 ';
11530 
11531                            LOOP
11532                               FETCH child_ref_id_cv
11533                                INTO v_child_expl_id;
11534 
11535                               EXIT WHEN child_ref_id_cv%NOTFOUND;
11536                            END LOOP;
11537 
11538                            CLOSE child_ref_id_cv;
11539 
11540                            OPEN child_ref_id_cv FOR    'SELECT model_id'
11541                                                     || ' '
11542                                                     || 'FROM   cz_model_ref_expls'
11543                                                     || cz_pb_mgr.v_db_link
11544                                                     || '  t'
11545                                                     || ' '
11546                                                     || 'WHERE  t.model_ref_expl_id = '
11547                                                     || TO_CHAR(v_child_expl_id)
11548                                                     || ' '
11549                                                     || 'AND   t.deleted_flag = ''0'' ';
11550 
11551                            LOOP
11552                               FETCH child_ref_id_cv
11553                                INTO v_ref_model_id;
11554 
11555                               EXIT WHEN child_ref_id_cv%NOTFOUND;
11556                            END LOOP;
11557 
11558                            CLOSE child_ref_id_cv;
11559 
11560                            get_persistent_node_id(p_resolved_key_array(i), v_persistent_node_id, cz_pb_mgr.v_status_code);
11561 
11562                            OPEN child_ref_id_cv FOR    'SELECT ps_node_id FROM cz_ps_nodes'
11563                                                     || cz_pb_mgr.v_db_link
11564                                                     || '  t'
11565                                                     || ' '
11566                                                     || 'WHERE  t.persistent_node_id = '
11567                                                     || TO_CHAR(v_persistent_node_id)
11568                                                     || ' '
11569                                                     || 'AND   t.devl_project_id = '
11570                                                     || TO_CHAR(v_ref_model_id)
11571                                                     || ' '
11572                                                     || 'AND   t.deleted_flag = ''0'' ';
11573 
11574                            LOOP
11575                               FETCH child_ref_id_cv
11576                                INTO p_resolved_key_array(i);
11577 
11578                               EXIT WHEN child_ref_id_cv%NOTFOUND;
11579                            END LOOP;
11580 
11581                            CLOSE child_ref_id_cv;
11582                         END IF;
11583                      ELSIF(p_column_name = 'cz_model_ref_expl.child_expl_id')
11584                      THEN
11585                       IF cz_pb_mgr.v_session_parameter<>model_copy THEN
11586                         BEGIN
11587                            SELECT model_id, referring_node_id
11588                              INTO v_source_child_model, v_child_ref_node
11589                              FROM cz_model_ref_expls
11590                             WHERE cz_model_ref_expls.model_ref_expl_id = p_resolved_key_array(i) AND cz_model_ref_expls.deleted_flag = '0';
11591                         EXCEPTION
11592                            WHEN OTHERS
11593                            THEN
11594                               v_child_ref_node := NULL;
11595                         END;
11596 
11597                         IF (v_child_ref_node IS NOT NULL)
11598                         THEN
11599                            get_pers_prj_id(v_child_ref_node, v_persistent_node_id, v_source_child_model);
11600                            get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
11601 
11602                            BEGIN
11603                               OPEN child_ref_id_cv FOR    'SELECT ps_node_id'
11604                                                        || ' '
11605                                                        || 'FROM   cz_ps_nodes'
11606                                                        || cz_pb_mgr.v_db_link
11607                                                        || '  t'
11608                                                        || ' '
11609                                                        || 'WHERE  t.persistent_node_id = '
11610                                                        || TO_CHAR(v_persistent_node_id)
11611                                                        || ' '
11612                                                        || 'AND   t.devl_project_id = '
11613                                                        || TO_CHAR(v_ref_remote_model)
11614                                                        || ' '
11615                                                        || 'AND   t.deleted_flag = ''0'' ';
11616 
11617                               LOOP
11618                                  FETCH child_ref_id_cv
11619                                   INTO v_child_ref_node;
11620 
11621                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
11622                               END LOOP;
11623 
11624                               CLOSE child_ref_id_cv;
11625                            EXCEPTION
11626                               WHEN NO_DATA_FOUND
11627                               THEN
11628                                  cz_pb_mgr.v_err_message :=
11629                                     'NO remote referring node id found for model :' || v_ref_remote_model || ' on server : ' || cz_pb_mgr.v_server_id;
11630                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODREF', SQLCODE);
11631 
11632                                  CLOSE child_ref_id_cv;
11633                               WHEN OTHERS
11634                               THEN
11635                                  CLOSE child_ref_id_cv;
11636                            END;
11637                         ELSE
11638                            get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
11639                         END IF;
11640 
11641                         IF ((v_child_ref_node > 0) AND(v_source_child_model > 0) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
11642                         THEN
11643                            BEGIN
11644                               OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id'
11645                                                        || ' '
11646                                                        || 'FROM  cz_model_ref_expls'
11647                                                        || cz_pb_mgr.v_db_link
11648                                                        || ' t'
11649                                                        || ' '
11650                                                        || 'WHERE  t.model_id = '
11651                                                        || TO_CHAR(v_ref_remote_model)
11652                                                        || ' '
11653                                                        || 'AND    t.referring_node_id = '
11654                                                        || TO_CHAR(v_child_ref_node);
11655 
11656                               LOOP
11657                                  FETCH child_ref_id_cv
11658                                   INTO p_resolved_key_array(i);
11659 
11660                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
11661                               END LOOP;
11662 
11663                               CLOSE child_ref_id_cv;
11664                            EXCEPTION
11665                               WHEN OTHERS
11666                               THEN
11667                                  CLOSE child_ref_id_cv;
11668                            END;
11669                         ELSE
11670                            BEGIN
11671                               OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id'
11672                                                        || ' '
11673                                                        || 'FROM  cz_model_ref_expls'
11674                                                        || cz_pb_mgr.v_db_link
11675                                                        || ' t'
11676                                                        || ' '
11677                                                        || 'WHERE  t.model_id = '
11678                                                        || TO_CHAR(v_ref_remote_model)
11679                                                        || ' '
11680                                                        || 'AND    t.node_depth = 0';
11681 
11682                               LOOP
11683                                  FETCH child_ref_id_cv
11684                                   INTO p_resolved_key_array(i);
11685 
11686                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
11687                               END LOOP;
11688 
11689                               CLOSE child_ref_id_cv;
11690                            EXCEPTION
11691                               WHEN OTHERS
11692                               THEN
11693                                  CLOSE child_ref_id_cv;
11694                            END;
11695                         END IF;
11696                       END IF;
11697                      ELSIF(p_column_name = 'cz_model_ref_expl.component_id')
11698                      THEN
11699                         remote_component_id(p_resolved_key_array(i)
11700                                            ,cz_pb_mgr.v_models_not_to_be_exported
11701                                            ,cz_pb_mgr.v_server_id
11702                                            ,cz_pb_mgr.v_status_code
11703                                            );
11704                      ELSIF(p_column_name IN
11705                               ('cz_ui_nodes.ui_def_ref_id'
11706                               ,'cz_ui_refs.ref_ui_def_id'
11707                               ,'cz_ui_page_refs.target_ui_def_id'
11708                               ,'cz_ui_page_elements.target_page_ui_def_id'
11709                               ,'cz_ui_ref_templates.ref_template_ui_def_id'
11710                               ,'cz_ui_actions.target_ui_def_id'
11711                               )
11712                           )
11713                      THEN
11714                         BEGIN
11715                            IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
11716                            THEN
11717                               OPEN child_ref_id_cv FOR    'SELECT ui_def_id FROM cz_ui_defs'
11718                                                        || cz_pb_mgr.v_db_link
11719                                                        || ' '
11720                                                        || 'WHERE name = (SELECT name FROM cz_ui_defs t'
11721                                                        || ' '
11722                                                        || 'WHERE t.ui_def_id = '
11723                                                        || p_resolved_key_array(i)
11724                                                        || ')'
11725                                                        || ' '
11726                                                        || 'AND devl_project_id = :1'
11727                               USING v_ref_remote_model;
11728                               LOOP
11729                                  FETCH child_ref_id_cv
11730                                   INTO p_resolved_key_array(i);
11731 
11732                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
11733                               END LOOP;
11734 
11735                               CLOSE child_ref_id_cv;
11736                            ELSE
11737                               OPEN child_ref_id_cv FOR    'SELECT	ui_def_id FROM cz_ui_defs'
11738                                                        || cz_pb_mgr.v_db_link
11739                                                        || ' '
11740                                                        || 'WHERE		name	= ( SELECT name FROM	  cz_ui_defs t'
11741                                                        || ' '
11742                                                        || 'WHERE  t.ui_def_id = '
11743                                                        || p_resolved_key_array(i)
11744                                                        || ' )'
11745                                                        || ' '
11746                                                        || 'AND devl_project_id = :1'
11747                               USING v_ref_remote_model;
11748                               LOOP
11749                                  FETCH child_ref_id_cv
11750                                   INTO p_resolved_key_array(i);
11751 
11752                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
11753                               END LOOP;
11754 
11755                               CLOSE child_ref_id_cv;
11756                            END IF;
11757                         EXCEPTION
11758                            WHEN OTHERS
11759                            THEN
11760                               CLOSE child_ref_id_cv;
11761 
11762                               RAISE;
11763                         END;
11764                      END IF;                                                                                             /* end if of p_column name */
11765                   END IF;                                                                                                /* end if of ref_not_found */
11766                END IF;                                                                                            /* end if of p_resolved_key_array */
11767             END LOOP;                                                                                            /* end loop of p_master_keys_array */
11768          END IF;                                                                                                    /*end if of p_master_keys_array */
11769       END IF;                                                                                                                 /* end if of x_status */
11770    EXCEPTION
11771       WHEN OTHERS
11772       THEN
11773          cz_pb_mgr.v_err_message := 'Error in resolving : ' || p_column_name || ' for id ' || v_node_id || ' : ' || SQLERRM;
11774          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREFIDS', SQLCODE);
11775          x_status := PUBLICATION_ERROR;
11776          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11777          RAISE;
11778    END;
11779 
11780 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11781 ------update reference ids of cz ps nodes of the remote model
11782 ------@p_models_exported -- root model and all its children
11783 ------@x_status --- publication status
11784 ------@p_server_id --- server local is of the target instance
11785 ------@p_new_ps_node_array --- ps node array that contains new values
11786 -- Note: do get_rem_nodes_of_models early, then we can remove this ugly method as well as some other bad ones
11787    PROCEDURE update_remote_reference_ids(
11788       p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11789      ,p_new_ps_node_array IN OUT NOCOPY cz_pb_mgr.t_ref
11790      ,p_server_id IN cz_servers.server_local_id%TYPE
11791      ,x_status IN OUT NOCOPY VARCHAR2
11792    )
11793    AS
11794       l_sql_string VARCHAR2(32000);
11795       l_remote_mode_id NUMBER;
11796    BEGIN
11797       IF (x_status <> PUBLICATION_ERROR)
11798       THEN
11799          IF (p_models_not_exported.COUNT > 0)
11800          THEN
11801             FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11802             LOOP
11803 	       IF (p_new_ps_node_array.COUNT > 0) THEN
11804                FOR j IN p_new_ps_node_array.FIRST .. p_new_ps_node_array.LAST
11805                LOOP
11806                   IF (cz_pb_mgr.v_ps_refid_old_tbl(j) IS NOT NULL)
11807                   THEN
11808                     get_remote_model_id(p_server_id, p_models_not_exported(i), x_status, l_remote_mode_id);
11809                     l_sql_string := 'UPDATE cz_ps_nodes'
11810                            ||   cz_pb_mgr.v_db_link
11811                            || ' SET reference_id=:1,component_id=:2'
11812                            || ' WHERE deleted_flag=:3 AND ps_node_id=:4 AND reference_id=:5';
11813                     EXECUTE IMMEDIATE l_sql_string
11814                       USING l_remote_mode_id,l_remote_mode_id,record_not_deleted,p_new_ps_node_array(j),p_models_not_exported(i);
11815                   END IF;
11816                END LOOP;
11817 	       END IF;
11818             END LOOP;
11819 
11820             COMMIT WORK;
11821          END IF;
11822       END IF;
11823    EXCEPTION
11824       WHEN OTHERS
11825       THEN
11826          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REF_ID_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
11827          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11828          x_status := PUBLICATION_ERROR;
11829          RAISE;
11830    END;
11831 
11832 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11833 --------procedure that resolves the virtual components of explosion records
11834 --------@p_model_ref_expls_ref :explosion array
11835 --------@p_models_not_exported :source models that are not exported
11836 --------@p_server_id           :server local id of cz servers of the target instance
11837 --------@x_status              :publication_status
11838    PROCEDURE resolve_virtual_components(
11839       p_model_ref_expls_ref IN OUT NOCOPY cz_pb_mgr.t_ref
11840      ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11841      ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11842      ,x_status IN OUT NOCOPY VARCHAR2
11843    )
11844    AS
11845       rec_count PLS_INTEGER := 0;
11846       v_vrt_comp_id_tbl cz_pb_mgr.t_ref;
11847       v_vrt_comp_id_ref cz_pb_mgr.t_ref;
11848       virt_ref_id_cv ref_cursor;
11849       virt_model_id_cv ref_cursor;
11850       v_vir_remote_model_id NUMBER := 0.0;
11851       v_vir_devl_id NUMBER := 0.0;
11852       v_remote_comp_id NUMBER := 0.0;
11853       v_child_expl_id NUMBER := 0.0;
11854       v_vir_persistent_id cz_ps_nodes.persistent_node_id%TYPE;
11855       v_errored_model_id cz_devl_projects.devl_project_id%TYPE;
11856    BEGIN
11857       IF (x_status <> PUBLICATION_ERROR)
11858       THEN
11859          IF (p_models_not_exported.COUNT > 0)
11860          THEN
11861             v_vrt_comp_id_tbl.DELETE;
11862 
11863             FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11864             LOOP
11865                v_errored_model_id := p_models_not_exported(i);
11866 
11867                BEGIN
11868                   SELECT component_id
11869                   BULK COLLECT INTO v_vrt_comp_id_tbl
11870                     FROM cz_model_ref_expls
11871                    WHERE cz_model_ref_expls.model_id = p_models_not_exported(i)
11872                      AND cz_model_ref_expls.virtual_flag = 0
11873                      AND (cz_model_ref_expls.ps_node_type = non_virtual_component OR cz_model_ref_expls.ps_node_type = model_connector)
11874                      AND cz_model_ref_expls.deleted_flag = record_not_deleted;
11875                EXCEPTION
11876                   WHEN NO_DATA_FOUND
11877                   THEN
11878                      cz_pb_mgr.v_err_message := 'No virtual components in the model : ' || TO_CHAR(p_models_not_exported(i));
11879                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11880                   WHEN OTHERS
11881                   THEN
11882                      cz_pb_mgr.v_err_message :=
11883                                 'Error in bulk collect of virtual components in the model : ' || TO_CHAR(p_models_not_exported(i)) || ' : '
11884                                 || SQLERRM;
11885                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11886                      RAISE;
11887                END;
11888 
11889                IF (v_vrt_comp_id_tbl.COUNT > 0)
11890                THEN
11891                   rec_count := v_vrt_comp_id_ref.COUNT;
11892 
11893                   FOR j IN v_vrt_comp_id_tbl.FIRST .. v_vrt_comp_id_tbl.LAST
11894                   LOOP
11895                      rec_count := rec_count + 1;
11896                      v_vrt_comp_id_ref(rec_count) := v_vrt_comp_id_tbl(j);
11897                   END LOOP;
11898                END IF;
11899             END LOOP;
11900          END IF;
11901 
11902          v_vir_persistent_id := 0;
11903          v_vir_devl_id := 0;
11904 
11905          IF (v_vrt_comp_id_ref.COUNT > 0)
11906          THEN
11907             FOR i IN v_vrt_comp_id_ref.FIRST .. v_vrt_comp_id_ref.LAST
11908             LOOP
11909                BEGIN
11910                   SELECT devl_project_id, persistent_node_id
11911                     INTO v_vir_devl_id, v_vir_persistent_id
11912                     FROM cz_ps_nodes
11913                    WHERE ps_node_id = v_vrt_comp_id_ref(i);
11914                EXCEPTION
11915                   WHEN OTHERS
11916                   THEN
11917                      v_vir_devl_id := 0;
11918                      v_vir_persistent_id := 0;
11919                END;
11920 
11921                v_vir_remote_model_id := 0;
11922 
11923                IF (v_vir_devl_id > 0)
11924                THEN
11925                   get_remote_model_id(cz_pb_mgr.v_server_id, v_vir_devl_id, cz_pb_mgr.v_status_code, v_vir_remote_model_id);
11926                END IF;
11927 
11928                cz_pb_mgr.v_remote_comp_id := 0;
11929 
11930                IF (v_vir_remote_model_id > 0)
11931                THEN
11932                   BEGIN
11933                      OPEN virt_ref_id_cv FOR    'SELECT ps_node_id FROM cz_ps_nodes'
11934                                              || cz_pb_mgr.v_db_link
11935                                              || '  t'
11936                                              || ' '
11937                                              || 'WHERE  t.devl_project_id = '
11938                                              || v_vir_remote_model_id
11939                                              || ' '
11940                                              || 'AND    t.persistent_node_id  = '
11941                                              || v_vir_persistent_id
11942                                              || ' '
11943                                              || 'AND   t.deleted_flag = ''0'' ';
11944 
11945                      LOOP
11946                         FETCH virt_ref_id_cv
11947                          INTO v_remote_comp_id;
11948 
11949                         EXIT WHEN virt_ref_id_cv%NOTFOUND;
11950                      END LOOP;
11951 
11952                      CLOSE virt_ref_id_cv;
11953                   EXCEPTION
11954                      WHEN OTHERS
11955                      THEN
11956                         CLOSE virt_ref_id_cv;
11957 
11958                         RAISE;
11959                   END;
11960 
11961                   cz_pb_mgr.v_child_expl_id := NULL;
11962 
11963                   IF (v_remote_comp_id > 0)
11964                   THEN
11965                      BEGIN
11966                         OPEN virt_model_id_cv FOR    'SELECT model_ref_expl_id'
11967                                                   || ' '
11968                                                   || 'FROM  cz_model_ref_expls'
11969                                                   || cz_pb_mgr.v_db_link
11970                                                   || '  t'
11971                                                   || ' '
11972                                                   || 'WHERE t.model_id = '
11973                                                   || v_vir_remote_model_id
11974                                                   || ' '
11975                                                   || 'AND  t.component_id = '
11976                                                   || v_remote_comp_id
11977                                                   || ' '
11978                                                   || 'AND  t.deleted_flag = ''0'' ';
11979 
11980                         LOOP
11981                            FETCH virt_model_id_cv
11982                             INTO v_child_expl_id;
11983 
11984                            EXIT WHEN virt_model_id_cv%NOTFOUND;
11985                         END LOOP;
11986 
11987                         CLOSE virt_model_id_cv;
11988                      EXCEPTION
11989                         WHEN OTHERS
11990                         THEN
11991                            CLOSE virt_model_id_cv;
11992 
11993                            RAISE;
11994                      END;
11995 
11996 		     IF (p_model_ref_expls_ref.COUNT > 0) THEN
11997                      FOR z IN p_model_ref_expls_ref.FIRST .. p_model_ref_expls_ref.LAST
11998                      LOOP
11999                         EXECUTE IMMEDIATE    'BEGIN '
12000                                           || ' '
12001                                           || 'UPDATE cz_model_ref_expls'
12002                                           || cz_pb_mgr.v_db_link
12003                                           || '  t'
12004                                           || ' '
12005                                           || 'SET    t.component_id = '
12006                                           || v_remote_comp_id
12007                                           || ' ,'
12008                                           || ' '
12009                                           || 't.child_model_expl_id = '
12010                                           || v_child_expl_id
12011                                           || ''
12012                                           || ' '
12013                                           || 'WHERE  t.model_ref_expl_id = '
12014                                           || p_model_ref_expls_ref(z)
12015                                           || ''
12016                                           || ' '
12017                                           || 'AND    t.component_id = '
12018                                           || v_vrt_comp_id_ref(i)
12019                                           || ''
12020                                           || ' '
12021                                           || 'AND    t.deleted_flag = ''0'';'
12022                                           || ' '
12023                                           || 'COMMIT;'
12024                                           || ' '
12025                                           || 'END;';
12026                      END LOOP;
12027 		     END IF;
12028                   END IF;                                                                               /* end if of cz_pb_mgr.v_remote_comp_id > 0 */
12029                END IF;                                                                                       /* end if of v_vir_remote_model_id > 0 */
12030             END LOOP;
12031 
12032             v_vrt_comp_id_tbl.DELETE;
12033             v_vrt_comp_id_ref.DELETE;
12034          END IF;                                                                                           /* end if of v_vrt_comp_id_ref.COUNT > 0 */
12035       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
12036    EXCEPTION
12037       WHEN OTHERS
12038       THEN
12039          cz_pb_mgr.v_err_message := 'Error during resolution of non virtual component of source model : ' || v_errored_model_id || ' : ' || SQLERRM;
12040          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEVIRTCOMP', SQLCODE);
12041          x_status := PUBLICATION_ERROR;
12042          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12043          RAISE;
12044    END;
12045 
12046 
12047 -- Models with no change since the last successful export are not exported. Therefore their UIs
12048 -- are not exported as well. In such a case if a referring UI is exported, then the ids of referred UIs
12049 -- need to be resolved in these referring UIs. For that we need to map all referred UI Id from the
12050 -- source to corresponding remote Ids. This is exactly what this procedure does i.e. tt maps the
12051 -- source ui_def_ids to remote ui_def_ids in the table x_cz_ui_defs_idx_ref
12052 PROCEDURE get_uis_of_mdls_not_exported(p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref,
12053                                        x_cz_ui_defs_idx_ref IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
12054                                        p_server_id  IN OUT NOCOPY cz_servers.server_local_id%TYPE,
12055                                        x_status IN OUT NOCOPY VARCHAR2)
12056 AS
12057 
12058 v_ui_defs_tbl               cz_pb_mgr.t_ref;
12059 
12060 ui_ref_id_cv               REF_CURSOR;
12061 v_devl_project_id          cz_devl_projects.devl_project_id%TYPE;
12062 v_remote_devl_project_id   cz_devl_projects.devl_project_id%TYPE;
12063 v_remote_ui_def_id         cz_ui_defs.ui_def_id%TYPE;
12064 v_name                     cz_ui_defs.name%TYPE;
12065 CANNOT_FIND_REMOTE_UI      EXCEPTION;
12066 
12067 BEGIN
12068 
12069   IF (x_status <> PUBLICATION_ERROR) THEN
12070     IF (p_models_not_exported.COUNT > 0) THEN
12071       -- loop through all model that are not exported during this publishing session
12072       FOR I IN p_models_not_exported.FIRST..p_models_not_exported.LAST
12073       LOOP
12074         v_ui_defs_tbl.DELETE;
12075         v_devl_project_id := p_models_not_exported(i);
12076         get_remote_model_id(p_server_id,v_devl_project_id,x_status,v_remote_devl_project_id);
12077 
12078         -- For each of these source models, get all the UIs
12079        IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0) THEN
12080          SELECT ui_def_id BULK COLLECT INTO v_ui_defs_tbl
12081          FROM cz_ui_defs
12082          WHERE deleted_flag='0' AND devl_project_id=v_devl_project_id AND ui_style=g_ui_style_jrad;
12083        ELSE
12084         BEGIN
12085           SELECT ui_def_id
12086           BULK
12087           COLLECT
12088           INTO   v_ui_defs_tbl
12089           FROM   cz_ui_defs
12090           WHERE  cz_ui_defs.devl_project_id = v_devl_project_id
12091           AND    cz_ui_defs.deleted_flag = RECORD_NOT_DELETED
12092           AND    cz_ui_defs.ui_style <> '-1';
12093 
12094         EXCEPTION
12095         WHEN NO_DATA_FOUND THEN
12096           cz_pb_mgr.v_err_message := 'No ui_def_ids found for : '||to_char(v_devl_project_id);
12097           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED', SQLCODE);
12098         WHEN OTHERS THEN
12099           RAISE;
12100         END;
12101        END IF;
12102 
12103         IF (v_ui_defs_tbl.COUNT > 0) THEN
12104           -- For each source UI, find the corresponding remote UI. We find the corresponding remote
12105           -- UI using the remote devl_project_id and name of the UI
12106           FOR K IN v_ui_defs_tbl.FIRST..v_ui_defs_tbl.LAST
12107           LOOP
12108             BEGIN
12109               SELECT name into v_name
12110               from cz_ui_defs
12111               where ui_def_Id = v_ui_defs_tbl(k)
12112               AND deleted_flag = RECORD_NOT_DELETED;
12113 
12114               v_remote_ui_def_id := NULL;
12115               OPEN ui_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'||CZ_PB_MGR.v_db_link ||
12116                                     ' WHERE name = :1 AND devl_project_id = :2' ||
12117                                     ' AND deleted_flag = :3'
12118                    USING v_name, v_remote_devl_project_id, RECORD_NOT_DELETED;
12119               LOOP
12120                 -- There is one problem here. If there is an extra UI on the source model
12121                 -- then we wont find it on the remote model. This issue needs to be addressed.
12122                 -- For now we just raise a CANNOT_FIND_REMOTE_UI exception in such a case
12123                 FETCH  ui_ref_id_cv INTO v_remote_ui_def_id;
12124                 EXIT WHEN ui_ref_id_cv%NOTFOUND;
12125               END LOOP;
12126 
12127               IF ( v_remote_ui_def_id IS NULL ) THEN
12128                 cz_pb_mgr.v_err_message := 'Cannot find UI ' || v_name || ' for remote model ' || to_char(v_devl_project_id);
12129                 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED',SQLCODE);
12130                 RAISE CANNOT_FIND_REMOTE_UI;
12131               END IF;
12132 
12133               CLOSE  ui_ref_id_cv;
12134 
12135               x_cz_ui_defs_idx_ref(v_ui_defs_tbl(k)) := v_remote_ui_def_id;
12136 
12137             EXCEPTION
12138               WHEN OTHERS THEN
12139                 CLOSE  ui_ref_id_cv;
12140                 RAISE;
12141             END;
12142           END LOOP;
12143         END IF;
12144       END LOOP; /* end loop of p_models_not_exported */
12145     END IF; /* end if of p_models_not_exported */
12146   END IF;
12147 END get_uis_of_mdls_not_exported;
12148 
12149 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12150 --------Procedure to resolve remote ui nodes of cz_ui_nodes
12151 -- Note for model conversion, v_cz_ui_nodes_new_ref should be empty, otherwise there would be a problem here
12152    PROCEDURE resolve_remote_ui_nodes(
12153       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref    -- v_cz_ui_nodes_new_ref
12154      ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
12155      ,p_resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref       -- v_cz_ui_nodes_ui_ref_id_ref
12156      ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
12157      ,x_status IN OUT NOCOPY VARCHAR2
12158    )
12159    AS
12160       v_remote_ui_defs_ref cz_pb_mgr.t_ref;
12161       v_remote_ui_defs_tbl cz_pb_mgr.t_ref;
12162       v_remote_ui_nodes_ref cz_pb_mgr.t_ref;
12163       v_remote_ui_nod_ui_def_ref cz_pb_mgr.t_ref;
12164       v_remote_ui_nodes_tbl cz_pb_mgr.t_ref;
12165       v_remote_ui_nod_ui_def_tbl cz_pb_mgr.t_ref;
12166       v_remote_pers_ui_node_tbl cz_pb_mgr.t_ref;
12167       v_remote_pers_ui_node_ref cz_pb_mgr.t_ref;
12168       ui_def_ref_id_cv ref_cursor;
12169       v_node_ref_proj_id cz_devl_projects.devl_project_id%TYPE;
12170       v_node_ref_export_id cz_pb_model_exports.export_id%TYPE;
12171       v_node_ref_remote_model cz_pb_model_exports.remote_model_id%TYPE;
12172       rec_count NUMBER;
12173 
12174       CURSOR l_ui_def_cur (p_ui_def_id NUMBER) IS SELECT name FROM  cz_ui_defs b WHERE  b.ui_def_id = p_ui_def_id;
12175       l_ui_def_name cz_ui_defs.name%TYPE;
12176 
12177    BEGIN
12178       IF (x_status <> PUBLICATION_ERROR)
12179       THEN
12180          IF (p_master_keys_array.COUNT > 0)
12181          THEN
12182             -- same thing already done in get_uis_of_mdls_not_exported!
12183             IF (p_models_not_exported.COUNT > 0)
12184             THEN
12185                v_remote_ui_defs_ref.DELETE;
12186 
12187                FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
12188                LOOP
12189                   v_remote_ui_defs_tbl.DELETE;
12190 
12191                   BEGIN
12192                      SELECT ui_def_id
12193                      BULK COLLECT INTO v_remote_ui_defs_tbl
12194                        FROM cz_ui_defs
12195                       WHERE cz_ui_defs.devl_project_id = p_models_not_exported(i) AND cz_ui_defs.deleted_flag = record_not_deleted
12196                       AND ui_style IN (g_ui_style_dhtml,g_ui_style_applet);
12197                   EXCEPTION
12198                      WHEN NO_DATA_FOUND
12199                      THEN
12200                         cz_pb_mgr.v_err_message := 'No ui_def_ref_ids found for : ' || TO_CHAR(cz_pb_mgr.v_models_not_to_be_exported(i));
12201                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREMOTEUINODES', SQLCODE);
12202                      WHEN OTHERS
12203                      THEN
12204                         RAISE;
12205                   END;
12206 
12207                   rec_count := v_remote_ui_defs_ref.COUNT;
12208 
12209                   IF (v_remote_ui_defs_tbl.COUNT > 0)
12210                   THEN
12211                      FOR k IN v_remote_ui_defs_tbl.FIRST .. v_remote_ui_defs_tbl.LAST
12212                      LOOP
12213                         rec_count := rec_count + 1;
12214                         v_remote_ui_defs_ref(rec_count) := v_remote_ui_defs_tbl(k);
12215                      END LOOP;
12216                   END IF;
12217                END LOOP;                                                                       /* end loop of cz_pb_mgr.v_models_not_to_be_exported */
12218             END IF;                                                                                              /* end if of p_models_not_exported */
12219 
12220             IF (v_remote_ui_defs_ref.COUNT > 0)
12221             THEN
12222                v_remote_ui_defs_tbl.DELETE;
12223                v_remote_ui_nodes_ref.DELETE;
12224                v_remote_ui_nod_ui_def_ref.DELETE;
12225 
12226                FOR i IN v_remote_ui_defs_ref.FIRST .. v_remote_ui_defs_ref.LAST
12227                LOOP
12228                   v_remote_ui_nodes_tbl.DELETE;
12229                   v_remote_ui_nod_ui_def_tbl.DELETE;
12230 
12231                   BEGIN
12232                      SELECT   ui_node_id, ui_def_id, persistent_ui_node_id
12233                      BULK COLLECT INTO v_remote_ui_nodes_tbl, v_remote_ui_nod_ui_def_tbl, v_remote_pers_ui_node_tbl
12234                          FROM cz_ui_nodes
12235                         WHERE cz_ui_nodes.ui_def_id = v_remote_ui_defs_ref(i) AND cz_ui_nodes.deleted_flag = '0'
12236                      ORDER BY cz_ui_nodes.ui_node_id;
12237                   EXCEPTION
12238                      WHEN NO_DATA_FOUND
12239                      THEN
12240                         cz_pb_mgr.v_err_message := 'No ui_node_ids found ';
12241                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12242                      WHEN OTHERS
12243                      THEN
12244                         cz_pb_mgr.v_err_message := 'Error in retrieving ui_node_ids for remote ui_node_refs ';
12245                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12246                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12247                   END;
12248 
12249                   IF (v_remote_ui_nodes_tbl.COUNT > 0)
12250                   THEN
12251                      FOR j IN v_remote_ui_nodes_tbl.FIRST .. v_remote_ui_nodes_tbl.LAST
12252                      LOOP
12253                         rec_count := v_remote_ui_nodes_ref.COUNT + 1;
12254                         v_remote_ui_nodes_ref(rec_count) := v_remote_ui_nodes_tbl(j);
12255                         v_remote_ui_nod_ui_def_ref(rec_count) := v_remote_ui_nod_ui_def_tbl(j);
12256                         v_remote_pers_ui_node_ref(rec_count) := v_remote_pers_ui_node_tbl(j);
12257                      END LOOP;
12258                   END IF;                                                                                        /* end if of v_remote_ui_nodes_tbl */
12259                END LOOP;                                                                                        /* end loop of v_remote_ui_defs_ref */
12260             END IF;                                                                                               /* end if of v_remote_ui_defs_ref */
12261 
12262             IF (v_remote_ui_nodes_ref.COUNT > 0)
12263             THEN
12264 	       IF (p_master_keys_array.COUNT > 0) THEN
12265                FOR j IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
12266                LOOP
12267                   IF (p_resolved_array(j) IS NOT NULL)
12268                   THEN
12269                      FOR i IN v_remote_ui_nodes_ref.FIRST .. v_remote_ui_nodes_ref.LAST
12270                      LOOP
12271                         IF (p_resolved_array(j) = v_remote_ui_nodes_ref(i))
12272                         THEN
12273                            ---------get devl_project_id
12274                            SELECT devl_project_id
12275                              INTO v_node_ref_proj_id
12276                              FROM cz_ui_defs
12277                             WHERE ui_def_id = v_remote_ui_nod_ui_def_ref(i) AND cz_ui_defs.deleted_flag = '0';
12278 
12279                            get_remote_model_id(p_server_id,v_node_ref_proj_id,x_status,v_node_ref_remote_model);
12280 
12281                            OPEN l_ui_def_cur(v_remote_ui_nod_ui_def_ref(i));
12282                            FETCH l_ui_def_cur INTO l_ui_def_name;
12283                            CLOSE l_ui_def_cur;
12284 
12285                            OPEN ui_def_ref_id_cv FOR    'SELECT ui_node_id'
12286                                                      || ' '
12287                                                      || 'FROM	 cz_ui_nodes'
12288                                                      || cz_pb_mgr.v_db_link
12289                                                      || '  t'
12290                                                      || ' '
12291                                                      || 'WHERE  t.persistent_ui_node_id = :pers_ui_node_id'
12292                                                      || ' '
12293                                                      || 'AND    t.ui_def_id  = (SELECT ui_def_id'
12294                                                      || ' '
12295                                                      || 'FROM   cz_ui_defs'
12296                                                      || cz_pb_mgr.v_db_link
12297                                                      || ' a'
12298                                                      || ' '
12299                                                      || 'WHERE  a.name = :ui_def_name'
12300                                                      || ' '
12301                                                      || 'AND   a.devl_project_id = :devl_project_id)'
12302                                                      || ' '
12303                                                      || 'AND 	t.deleted_flag = ''0'''
12304                                                      || ' '
12305                                                      || 'AND  	ROWNUM < 2 '
12306                                                      USING v_remote_pers_ui_node_ref(i), l_ui_def_name, v_node_ref_remote_model;
12307                            LOOP
12308                               FETCH ui_def_ref_id_cv
12309                                INTO p_resolved_array(j);
12310 
12311                               EXIT WHEN ui_def_ref_id_cv%NOTFOUND;
12312                            END LOOP;
12313 
12314                            CLOSE ui_def_ref_id_cv;
12315                         END IF;                                                         /* end if of p_resolved_array(j) = v_remote_ui_nodes_ref(i) */
12316                      END LOOP;                                                                       /* end loop of FOR  I IN v_remote_ui_nodes_ref */
12317                   END IF;                                                                              /* end if of p_resolved_array(j) IS NOT NULL */
12318                END LOOP;                                                                                /* end loop of FOR J IN p_master_keys_array */
12319 	       END IF;
12320             END IF;                                                                                    /* end if of v_remote_ui_nodes_ref.COUNT > 0 */
12321          END IF;                                                                                       /* end if of (p_master_keys_array.COUNT > 0) */
12322       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
12323    EXCEPTION
12324       WHEN NO_DATA_FOUND
12325       THEN
12326          cz_pb_mgr.v_err_message := 'No ui_node_ref_ids found ';
12327          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12328 
12329          CLOSE ui_def_ref_id_cv;
12330       WHEN OTHERS
12331       THEN
12332          cz_pb_mgr.v_err_message := 'Error in retrieving ui_nod_ref_ids ';
12333          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12334 
12335          CLOSE ui_def_ref_id_cv;
12336 
12337          x_status := PUBLICATION_ERROR;
12338          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12339          RAISE;
12340    END resolve_remote_ui_nodes;
12341 
12342 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12343 --------------populate ps nodes pl/sql table with ps node ids from remote server
12344 --------------@p_model_not_exported_array: source models not exported
12345 --------------@p_ps_nodes_single_array   : ps nodes single index array
12346 --------------@x_status            : publication status parameter
12347    PROCEDURE get_rem_nodes_of_models(
12348       p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
12349      ,p_ps_nodes_single_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12350      ,x_status IN OUT NOCOPY VARCHAR2
12351    )
12352    AS
12353       remote_ps_count NUMBER;
12354       v_remote_models_tbl cz_pb_mgr.t_ref;
12355       v_rem_ps_nodes_ref cz_pb_mgr.t_ref;
12356       v_rem_pers_nodes_ref cz_pb_mgr.t_ref;
12357       v_src_ps_nodes_ref cz_pb_mgr.t_ref;
12358       remote_node_cv ref_cursor;
12359       v_remote_ps_node_id cz_ps_nodes.ps_node_id%TYPE;
12360       v_remote_pers_node_id cz_ps_nodes.persistent_node_id%TYPE;
12361       l_remote_model_id  NUMBER;
12362    BEGIN
12363       IF (x_status <> PUBLICATION_ERROR) THEN
12364          IF (p_model_not_exported_array.COUNT > 0) THEN
12365             FOR k IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
12366             LOOP
12367                BEGIN
12368                  get_remote_model_id(cz_pb_mgr.v_server_id,p_model_not_exported_array(k),x_status,l_remote_model_id);
12369                  v_remote_models_tbl(k):=l_remote_model_id;
12370                EXCEPTION
12371                   WHEN OTHERS THEN
12372                      cz_pb_mgr.v_err_message :=
12373                                      'No remote model found for source model: ' || p_model_not_exported_array(k)
12374                                      || ' on the remote server';
12375                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTENODES', SQLCODE);
12376                      x_status := PUBLICATION_ERROR;
12377                      RAISE;
12378                END;
12379 
12380                IF (v_remote_models_tbl(k) > 0) THEN
12381                   OPEN remote_node_cv FOR 'SELECT ps_node_id,persistent_node_id'
12382                                           || ' '
12383                                           || 'FROM  cz_ps_nodes'
12384                                           || cz_pb_mgr.v_db_link
12385                                           || '  t'
12386                                           || ' '
12387                                           || 'WHERE t.devl_project_id = '
12388                                           || v_remote_models_tbl(k)
12389                                           || ' '
12390                                           || 'AND t.deleted_flag = ''0'' ';
12391 
12392                   LOOP
12393                      FETCH remote_node_cv
12394                       INTO v_remote_ps_node_id, v_remote_pers_node_id;
12395 
12396                      EXIT WHEN remote_node_cv%NOTFOUND;
12397                      remote_ps_count := v_rem_ps_nodes_ref.COUNT + 1;
12398                      v_rem_ps_nodes_ref(remote_ps_count) := v_remote_ps_node_id;
12399                      v_rem_pers_nodes_ref(remote_ps_count) := v_remote_pers_node_id;
12400 
12401                      SELECT ps_node_id
12402                        INTO v_src_ps_nodes_ref(remote_ps_count)
12403                        FROM cz_ps_nodes
12404                       WHERE cz_ps_nodes.devl_project_id = p_model_not_exported_array(k)
12405                         AND cz_ps_nodes.persistent_node_id = v_remote_pers_node_id
12406                         AND cz_ps_nodes.deleted_flag = record_not_deleted;
12407                   END LOOP;
12408 
12409                   CLOSE remote_node_cv;
12410                END IF;                               /* end if of (v_remote_models_tbl(k) > 0) */
12411             END LOOP;                                /* end loop of FOR k IN p_model_not_exported_array */
12412 
12413             IF (v_rem_ps_nodes_ref.COUNT > 0)
12414             THEN
12415                FOR m IN v_rem_ps_nodes_ref.FIRST .. v_rem_ps_nodes_ref.LAST
12416                LOOP
12417                   cz_pb_mgr.v_cz_ps_nodes_idx_tbl(v_src_ps_nodes_ref(m)):=v_rem_ps_nodes_ref(m);
12418                END LOOP;
12419             END IF;                                                                                     /* end if of (v_rem_ps_nodes_ref.COUNT > 0) */
12420          END IF;                                                                                /* end if of (p_model_not_exported_array.COUNT > 0) */
12421       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
12422    EXCEPTION
12423       WHEN OTHERS
12424       THEN
12425          cz_pb_mgr.v_err_message := 'Error in retrieving remote ps node ids for source models not exported: ' || SQLERRM;
12426          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMNODES', SQLCODE);
12427 
12428          CLOSE remote_node_cv;
12429 
12430          x_status := PUBLICATION_ERROR;
12431          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12432          RAISE;
12433    END get_rem_nodes_of_models;
12434 
12435    -------------------------------------------------------------------------------------------------------------------------------------------
12436 
12437    -----procedure inserts data into cz_ps_prop_vals for non-migration session
12438 -----@p_prop_vals_array: table of ps nodes
12439 -----@p_property_array  : table of property ids
12440 -----@p_data_val_array  : table of data values
12441 -----@x_status : publication status parameter
12442    PROCEDURE insert_into_ps_prop_vals
12443    AS
12444    BEGIN
12445       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
12446       THEN
12447          EXECUTE IMMEDIATE    'BEGIN'
12448                            || ' '
12449                            || 'cz_pb_mgr.v_expr_count := 0;'
12450                            || ' '
12451                            || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
12452                            || ' '
12453                            || 'LOOP'
12454                            || ' '
12455                            || 'cz_pb_mgr.v_propval_node_id    := cz_pb_mgr.v_prop_vals_node_ref(i);'
12456                            || ' '
12457                            || 'cz_pb_mgr.v_propval_prop_id    := cz_pb_mgr.v_prop_vals_prop_ref(i);'
12458                            || ' '
12459                            || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
12460                            || ' '
12461                            || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.v_prop_vals_data_num_ref(i);'
12462                            || ' '
12463                            || 'INSERT INTO cz_ps_prop_vals'
12464                            || cz_pb_mgr.v_db_link
12465                            || '('
12466                            || ' '
12467                            || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
12468                            || ' '
12469                            || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
12470                            || ' '
12471                            || '''0'',cz_pb_mgr.v_propval_data_num_value);'
12472                            || ' '
12473                            || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12474                            || ' '
12475                            || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
12476                            || ' '
12477                            || 'END IF;'
12478                            || ' '
12479                            || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12480                            || ' '
12481                            || 'END LOOP;'
12482                            || ' '
12483                            || 'END;';
12484       END IF;
12485 
12486       COMMIT;
12487    EXCEPTION
12488       WHEN OTHERS
12489       THEN
12490          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12491          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
12492          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12493          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12494          RAISE;
12495    END insert_into_ps_prop_vals;
12496 
12497 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12498 -----procedure inserts data into cz_ps_prop_vals
12499 -----@p_prop_vals_array: table of ps nodes
12500 -----@p_property_array  : table of property ids
12501 -----@p_data_val_array  : table of data values
12502 -----@x_status : publication status parameter
12503 PROCEDURE rm_insert_into_ps_prop_vals
12504 AS
12505 
12506 StIdx            INTEGER:=1;
12507 EndIdx           INTEGER:= CZ_PB_MGR.record_commit_size;
12508 r_return_status  CHAR(1):= FND_API.G_RET_STS_SUCCESS;
12509 r_msg_string     VARCHAR2(1000):='';
12510 remote_exception EXCEPTION;
12511 
12512 BEGIN
12513 
12514     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
12515          log_timing_message('start bulk insert for remote SelectInsert');
12516     END IF;
12517 
12518 IF ( (CZ_PB_MGR.v_status_code <> PUBLICATION_ERROR) AND (CZ_PB_MGR.v_prop_vals_node_ref.COUNT > 0) ) THEN
12519      IF (CZ_PB_MGR.v_server_id = 0) THEN
12520 
12521              -- Bug7250510 for BULK insert to a local instance
12522              -- This code (If clause) can be removed as local insert can be done with the same remote insert procedure.
12523 
12524            LOOP
12525 
12526                IF (StIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN
12527                    EXIT;
12528                 END IF;
12529 
12530                 EndIdx := StIdx + CZ_PB_MGR.record_commit_size - 1;
12531 
12532                 IF (EndIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN
12533                     EndIdx := CZ_PB_MGR.v_prop_vals_node_ref.COUNT;
12534                 END IF;
12535 
12536                 FORALL i IN StIdx..EndIdx
12537 
12538                         INSERT INTO cz_ps_prop_vals(PS_NODE_ID, PROPERTY_ID, DATA_VALUE, DELETED_FLAG, DATA_NUM_VALUE)
12539                              				VALUES (CZ_PB_MGR.v_prop_vals_node_ref(i),
12540                                                                 CZ_PB_MGR.v_prop_vals_prop_ref(i),
12541                                                                 CZ_PB_MGR.v_prop_vals_data_ref(i),
12542                                                                 '0',
12543                                                                 CZ_PB_MGR.v_prop_vals_data_num_ref(i));
12544 
12545                          StIdx  := StIdx + CZ_PB_MGR.record_commit_size;
12546 
12547 
12548                         COMMIT;
12549 
12550             END LOOP;
12551       ELSE
12552         -- Bug#7537580 : Execute the BULK insert procedure remotely - SKM
12553 
12554 	     EXECUTE IMMEDIATE
12555 
12556                    'DECLARE'||'  '||
12557                         'InsPsNodeId    CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12558                         'InsPropId      CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12559                         'InsCharData    CZ_PB_MGR.propDataType'||CZ_PB_MGR.v_db_link||'; '||
12560                         'InsNumData     CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12561                         'StIdx          INTEGER:=1; '||
12562                         'EndIdx         INTEGER:= CZ_PB_MGR.record_commit_size; '||
12563 
12564                     'BEGIN' ||' '||
12565                        'FOR j IN CZ_PB_MGR.v_prop_vals_node_ref.FIRST..CZ_PB_MGR.v_prop_vals_node_ref.LAST'||' '||
12566                        'LOOP' ||' '||
12567                      --'dbms_output.put_line(''I am in outer Loop :Tot Count :''||CZ_PB_MGR.v_prop_vals_node_ref.COUNT);'||' '||
12568                       -- Start an inner loop here to create a packet array as per the commit size
12569                       -- and send that small packet instead of sending a huge array to the remote instance.
12570                       -- Initialize the array
12571 
12572                         'InsPsNodeId.DELETE; '||
12573                         'InsPropId.DELETE;   '||
12574                         'InsCharData.DELETE; '||
12575                         'InsNumData.DELETE;  '||
12576 
12577                		'IF (StIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN'||' '||
12578                    		'EXIT;'||' '||
12579                 	'END IF;'||' '||
12580 
12581                 	'EndIdx := StIdx + CZ_PB_MGR.record_commit_size - 1;'||' '||
12582 
12583                  	'IF (EndIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT)THEN'||' '||
12584                              'EndIdx := CZ_PB_MGR.v_prop_vals_node_ref.COUNT;'||' '||
12585                 	'END IF;'||' '||
12586 
12587                      --'dbms_output.put_line(''I am before in inner loop : StIdx ''||StIdx);'||' '||
12588                      --'dbms_output.put_line(''I am before in inner loop : EndIdx ''||EndIdx);'||' '||
12589                 	'FOR i IN StIdx..EndIdx '||' '||
12590 
12591                          'LOOP' ||' '||
12592                            'InsPsNodeId(i) := CZ_PB_MGR.v_prop_vals_node_ref(i); '||' '||
12593                            'InsPropId(i)   := CZ_PB_MGR.v_prop_vals_prop_ref(i); '||' '||
12594                            'InsCharData(i) := CZ_PB_MGR.v_prop_vals_data_ref(i); '||' '||
12595                            'InsNumData(i)  := CZ_PB_MGR.v_prop_vals_data_num_ref(i); '||' '||
12596 
12597                          'END LOOP;'||' '||
12598 
12599                           'StIdx  := StIdx + CZ_PB_MGR.record_commit_size;'||' '||
12600 
12601 
12602 
12603                      --'dbms_output.put_line(''I am before insert : Count - :''||InsPsNodeId.COUNT);'||' '||
12604                          'CZ_PB_MGR.REMOTE_INSERT_PS_PROP_VALS'||CZ_PB_MGR.v_db_link||'( '||
12605                                                                'InsPsNodeId'||',  '||
12606                                                                'InsPropId'||',  '||
12607                                                                'InsCharData'||',  '||
12608                                                                'InsNumData'||'); '||'  '||
12609 
12610                      --'dbms_output.put_line(''I am after insert - St Index:''||StIdx);'||' '||
12611                      --'dbms_output.put_line(''I am after insert - End Index:''||EndIdx);'||' '||
12612 
12613                         'END LOOP;'||' '||
12614 
12615                      'END;';
12616 
12617       END IF;
12618 
12619    END IF;
12620 
12621              -- Check the status of the RPC execution that will be in cz_db_logs table;
12622              -- Need to delete data in the same place using the same array of ps_node_id, property_id
12623 IF ( (CZ_PB_MGR.v_status_code <> PUBLICATION_ERROR) AND (CZ_PB_MGR.v_server_id <> 0) ) THEN
12624         BEGIN
12625         EXECUTE IMMEDIATE
12626                    'SELECT statuscode, message '||' '||
12627                    'FROM  cz_db_logs'||CZ_PB_MGR.v_db_link||' '||
12628                    'WHERE  caller = ''REMOTE_INSERT_PS_PROP_VALS'' '||' '||
12629                    'AND trunc(logtime) = trunc (sysdate) ' INTO r_return_status, r_msg_string;
12630 
12631              EXCEPTION
12632                      WHEN NO_DATA_FOUND THEN
12633                       NULL;
12634                      WHEN OTHERS THEN
12635                       NULL;
12636           END;
12637 
12638          IF (r_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
12639 	     CZ_PB_MGR.v_status_code := CZ_PB_MGR.PUBLICATION_ERROR;
12640 	     CZ_PB_MGR.v_sql_err_msg := r_msg_string;
12641              RAISE remote_exception;
12642          END IF;
12643    END IF;
12644 
12645 COMMIT;
12646 EXCEPTION
12647 WHEN REMOTE_EXCEPTION THEN
12648 	CZ_PB_MGR.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'remote_cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12649 	CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LOAD_DATA:cz_ps_prop_vals',SQLCODE);
12650 	CZ_PB_MGR.v_status_code := PUBLICATION_ERROR;
12651 	CZ_PB_MGR.v_sql_err_msg := substr(SQLERRM,1,2000);
12652 WHEN OTHERS THEN
12653 	CZ_PB_MGR.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'local_cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12654 	CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LOAD_DATA:cz_ps_prop_vals',SQLCODE);
12655 	CZ_PB_MGR.v_status_code := PUBLICATION_ERROR;
12656 	CZ_PB_MGR.v_sql_err_msg := substr(SQLERRM,1,2000);
12657 	RAISE;
12658 END rm_insert_into_ps_prop_vals;
12659 
12660 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12661 -- Bug#7537580: Procedure to do Remote BULK Insert - SKM
12662 PROCEDURE remote_insert_ps_prop_vals( InsPsNodeId IN CZ_PB_MGR.t_ref,
12663                                       InsPropId   IN CZ_PB_MGR.t_ref,
12664                                       InsCharData IN CZ_PB_MGR.propDataType,
12665                                       InsNumData  IN CZ_PB_MGR.t_ref)
12666 AS
12667 
12668 r_return_status  CHAR(1):= FND_API.G_RET_STS_SUCCESS;
12669 r_msg_data       VARCHAR2(1000) := '';
12670 
12671 BEGIN
12672 
12673     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
12674          log_timing_message('start bulk insert for remote SelectInsert calling procedure remote_insert_ps_prop_vals ');
12675     END IF;
12676 
12677      IF  (InsPsNodeId.COUNT > 0) THEN
12678 
12679 
12680                 FORALL i IN InsPsNodeId.FIRST..InsPsNodeId.LAST
12681                     INSERT INTO cz_ps_prop_vals(PS_NODE_ID, PROPERTY_ID, DATA_VALUE, DELETED_FLAG, DATA_NUM_VALUE)
12682                                         VALUES (InsPsNodeId(i), InsPropId(i), InsCharData(i), '0', InsNumData(i) );
12683 
12684                 COMMIT;
12685 
12686      END IF;
12687 
12688 EXCEPTION
12689 WHEN OTHERS THEN
12690         r_return_status := FND_API.G_RET_STS_ERROR;
12691         r_msg_data  := 'Error Executing Remote Bulk Insert - PS_PROP_VALS'||SQLERRM;
12692         DELETE FROM cz_db_logs WHERE caller = 'REMOTE_INSERT_PS_PROP_VALS';
12693 
12694         INSERT INTO cz_db_logs(logtime, caller, message, statuscode)
12695         VALUES(sysdate,'REMOTE_INSERT_PS_PROP_VALS',r_msg_data,r_return_status);
12696 
12697         COMMIT;
12698         RAISE;
12699 END remote_insert_ps_prop_vals;
12700 
12701 --end 9812709
12702 
12703 
12704 --------------------------------------------------------------------------------
12705   -- used for model conversion
12706   -- ps node ids in v_prop_vals_node_ref and translatable text ids in v_prop_vals_data_num_ref
12707   -- are already resolved in upload_item_schema
12708   PROCEDURE mc_insert_pspropvals IS
12709   BEGIN
12710     IF cz_pb_mgr.v_prop_vals_node_ref.COUNT=0 THEN RETURN; END IF;
12711 
12712     FOR i IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST LOOP
12713       IF cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsValue' OR cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsDflt' THEN
12714         INSERT INTO cz_ps_prop_vals(ps_node_id, property_id, data_value, data_num_value, deleted_flag)
12715         VALUES(cz_pb_mgr.v_prop_vals_node_ref(i), cz_pb_mgr.v_prop_vals_prop_ref(i),
12716                cz_pb_mgr.v_prop_vals_data_ref(i), cz_pb_mgr.v_prop_vals_data_num_ref(i), '0');
12717       END IF;
12718     END LOOP;
12719     COMMIT;
12720   EXCEPTION
12721     WHEN OTHERS THEN
12722       cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12723       cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
12724       cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12725       cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12726       RAISE;
12727   END mc_insert_pspropvals;
12728 
12729 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12730    PROCEDURE insert_des_chart_features(x_status IN OUT NOCOPY VARCHAR2)
12731    AS
12732    BEGIN
12733       IF (x_status <> PUBLICATION_ERROR)
12734       THEN
12735          IF (cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT > 0)
12736          THEN
12737             cz_pb_mgr.v_expr_count := 0;
12738 
12739             EXECUTE IMMEDIATE    'BEGIN'
12740                               || ' '
12741                               || 'FOR I IN cz_pb_mgr.v_cz_des_feature_id_old_ref.FIRST..cz_pb_mgr.v_cz_des_feature_id_old_ref.LAST'
12742                               || ' '
12743                               || 'LOOP'
12744                               || ' '
12745                               || 'INSERT INTO cz_des_chart_features'
12746                               || cz_pb_mgr.v_db_link
12747                               || '('
12748                               || ' '
12749                               || 'RULE_ID'
12750                               || ' '
12751                               || ',FEATURE_ID'
12752                               || ' '
12753                               || ',FEATURE_TYPE'
12754                               || ' '
12755                               || ',DELETED_FLAG'
12756                               || ' '
12757                               || ',MODEL_REF_EXPL_ID)'
12758                               || ' '
12759                               || 'VALUES (cz_pb_mgr.v_cz_des_feature_rid_new_ref(i)'
12760                               || ' '
12761                               || ',cz_pb_mgr.v_cz_des_feature_id_old_ref(i)'
12762                               || ' '
12763                               || ',cz_pb_mgr.v_cz_des_feature_ft_typ_ref(i)'
12764                               || ' '
12765                               || ',''0'''
12766                               || ' '
12767                               || ',cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(i)'
12768                               || ' '
12769                               || ');'
12770                               || ' '
12771                               || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12772                               || ' '
12773                               || 'COMMIT;'
12774                               || ' '
12775                               || 'cz_pb_mgr.v_expr_count := 0;'
12776                               || ' '
12777                               || 'END IF;'
12778                               || ' '
12779                               || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12780                               || ' '
12781                               || 'END LOOP;'
12782                               || ' '
12783                               || 'END;';
12784          END IF;
12785       END IF;
12786 
12787       COMMIT;
12788    EXCEPTION
12789       WHEN OTHERS
12790       THEN
12791          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
12792          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_FEATURES', SQLCODE);
12793          x_status := PUBLICATION_ERROR;
12794          RAISE;
12795    END;
12796 
12797 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12798 ------the new ids from v_cz_des_cells_rule_id_new_ref
12799    PROCEDURE insert_des_chart_cells(x_status IN OUT NOCOPY VARCHAR2)
12800    AS
12801    BEGIN
12802       IF (x_status <> PUBLICATION_ERROR)
12803       THEN
12804          IF (cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.COUNT > 0)
12805          THEN
12806             cz_pb_mgr.v_expr_count := 0;
12807 
12808             EXECUTE IMMEDIATE    'BEGIN'
12809                               || ' '
12810                               || 'FOR I IN cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.FIRST..cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.LAST'
12811                               || ' '
12812                               || 'LOOP'
12813                               || ' '
12814                               || 'INSERT INTO cz_des_chart_cells'
12815                               || cz_pb_mgr.v_db_link
12816                               || '('
12817                               || ' '
12818                               || 'RULE_ID'
12819                               || ' '
12820                               || ',PRIMARY_OPT_ID'
12821                               || ' '
12822                               || ',SECONDARY_OPT_ID'
12823                               || ' '
12824                               || ',MARK_CHAR'
12825                               || ' '
12826                               || ',DELETED_FLAG'
12827                               || ' '
12828                               || ',SECONDARY_FEAT_EXPL_ID'
12829                               || ' '
12830                               || ',SECONDARY_FEATURE_ID'
12831                               || ' '
12832                               || ')'
12833                               || ' '
12834                               || 'values   (	cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(i)'
12835                               || ' '
12836                               || ',cz_pb_mgr.v_cz_des_cells_popt_id_ref(i)'
12837                               || ' '
12838                               || ',cz_pb_mgr.v_cz_des_cells_sopt_id_ref(i)'
12839                               || ' '
12840                               || ',cz_pb_mgr.v_cz_des_cells_mark_char_ref(i)'
12841                               || ' '
12842                               || ',''0'''
12843                               || ' '
12844                               || ',cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(i)'
12845                               || ' '
12846                               || ',cz_pb_mgr.v_cz_des_cells_sf_id_ref(i)'
12847                               || ' '
12848                               || ');'
12849                               || ' '
12850                               || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12851                               || ' '
12852                               || 'COMMIT;'
12853                               || ' '
12854                               || 'cz_pb_mgr.v_expr_count := 0;'
12855                               || ' '
12856                               || 'END IF;'
12857                               || ' '
12858                               || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12859                               || ' '
12860                               || 'END LOOP;'
12861                               || ' '
12862                               || 'END;';
12863          END IF;
12864       END IF;
12865 
12866       COMMIT;
12867    EXCEPTION
12868       WHEN OTHERS
12869       THEN
12870          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
12871          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_CELLS', SQLCODE);
12872          x_status := PUBLICATION_ERROR;
12873          RAISE;
12874    END;
12875 
12876 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12877    PROCEDURE collect_func_comp_specs
12878    IS
12879       v_cz_func_devl_old_tbl cz_pb_mgr.t_ref;
12880       v_cz_func_cid_old_tbl cz_pb_mgr.t_ref;
12881       v_cz_func_expl_old_tbl cz_pb_mgr.t_ref;
12882       v_cz_func_fld_old_tbl cz_pb_mgr.t_ref;
12883       v_object_type_tbl cz_pb_mgr.objtype;
12884       rec_count NUMBER := 0;
12885    BEGIN
12886       IF (cz_pb_mgr.g_log_timing = publication_timing)
12887       THEN
12888          log_timing_message('start bulk collect of func comp specs');
12889       END IF;
12890 
12891       clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
12892 
12893       IF (cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0)
12894       THEN
12895          FOR i IN cz_pb_mgr.v_cz_model_ref_expls_old_ref.FIRST .. cz_pb_mgr.v_cz_model_ref_expls_old_ref.LAST
12896          LOOP
12897             clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
12898             v_cz_func_devl_old_tbl.DELETE;
12899             v_cz_func_cid_old_tbl.DELETE;
12900             v_cz_func_expl_old_tbl.DELETE;
12901             v_cz_func_fld_old_tbl.DELETE;
12902             v_object_type_tbl.DELETE;
12903 
12904             BEGIN
12905                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_func_comp_specs_seq
12906                                                  , 'cz_func_comp_specs_s.nextval' || cz_pb_mgr.v_db_link
12907                                                  ,cz_pb_mgr.v_oraclesequenceincr
12908                                                  )
12909                      ,func_comp_id, devl_project_id, component_id, model_ref_expl_id
12910                      ,rule_folder_id, 'FNC'
12911                BULK COLLECT INTO cz_pb_mgr.v_cz_func_comp_new_tbl
12912                      ,cz_pb_mgr.v_cz_func_comp_old_tbl, v_cz_func_devl_old_tbl, v_cz_func_cid_old_tbl, v_cz_func_expl_old_tbl
12913                      ,v_cz_func_fld_old_tbl, v_object_type_tbl
12914                  FROM cz_func_comp_specs t
12915                 WHERE t.model_ref_expl_id = cz_pb_mgr.v_cz_model_ref_expls_old_ref(i) AND t.deleted_flag = '0';
12916             EXCEPTION
12917                WHEN NO_DATA_FOUND
12918                THEN
12919                   cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
12920                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FUNCCOMP', SQLCODE);
12921                WHEN OTHERS
12922                THEN
12923                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_func_comp_specs', 'SQLERRM', SQLERRM);
12924                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
12925                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12926                   RAISE;
12927             END;
12928 
12929             rec_count := cz_pb_mgr.v_cz_func_comp_new_ref.COUNT;
12930 
12931             IF (cz_pb_mgr.v_cz_func_comp_new_tbl.COUNT > 0)
12932             THEN
12933                FOR k IN cz_pb_mgr.v_cz_func_comp_new_tbl.FIRST .. cz_pb_mgr.v_cz_func_comp_new_tbl.LAST
12934                LOOP
12935                   rec_count := rec_count + 1;
12936                   cz_pb_mgr.v_cz_func_comp_new_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_new_tbl(k);
12937                   cz_pb_mgr.v_cz_func_comp_old_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_old_tbl(k);
12938                   cz_pb_mgr.v_cz_func_comp_idx_ref(cz_pb_mgr.v_cz_func_comp_old_tbl(k)):=cz_pb_mgr.v_cz_func_comp_new_tbl(k);
12939                   cz_pb_mgr.v_cz_func_devl_old_ref(rec_count) := v_cz_func_devl_old_tbl(k);
12940                   cz_pb_mgr.v_cz_func_cid_old_ref(rec_count) := v_cz_func_cid_old_tbl(k);
12941                   cz_pb_mgr.v_cz_func_expl_old_ref(rec_count) := v_cz_func_expl_old_tbl(k);
12942                   cz_pb_mgr.v_cz_func_fld_old_ref(rec_count) := v_cz_func_fld_old_tbl(k);
12943                   cz_pb_mgr.v_cz_func_obj_ref(rec_count) := v_object_type_tbl(k);
12944                END LOOP;
12945             END IF;
12946          END LOOP;  /* end loop of FOR  I IN cz_pb_mgr.v_cz_model_ref_expls_old_ref */
12947       END IF;       /* end if of cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0 */
12948 
12949       IF (cz_pb_mgr.g_log_timing = publication_timing)
12950       THEN
12951          log_timing_message('end bulk collect of func comp specs');
12952       END IF;
12953    EXCEPTION
12954       WHEN OTHERS
12955       THEN
12956          RAISE;
12957    END collect_func_comp_specs;
12958 
12959 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12960 -----procedure that bulk collects rules of projects
12961 ----@p_rules_flag : indicates if rules have to be copied while publishing
12962 ----@p_model_array : models to be copied
12963 ----@p_rules_old_array : tbl containing old rule ids
12964 ----@p_rules_new_array : tbl for new rules
12965 ----@p_rules_sng_array : table for single index implementation
12966 ----@x_status : publication status parameter
12967 PROCEDURE bulk_collect_rules(
12968       p_rules_flag IN VARCHAR2
12969      ,p_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12970      ,p_rules_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
12971      ,p_rules_new_array IN OUT NOCOPY cz_pb_mgr.t_ref
12972      ,p_rules_sng_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12973      ,x_status IN OUT NOCOPY VARCHAR2
12974    )
12975 AS
12976   l_cz_rules_new_id_tbl   cz_pb_mgr.t_ref;
12977   l_cz_rules_old_id_tbl   cz_pb_mgr.t_ref;
12978   l_cz_rules_rf_id_tbl    cz_pb_mgr.t_ref;
12979   l_cz_rules_proj_id_tbl  cz_pb_mgr.t_ref;
12980   l_cz_rules_comp_id_tbl  cz_pb_mgr.t_ref;
12981   l_cz_rules_rea_id_tbl   cz_pb_mgr.t_ref;
12982   l_cz_rules_eff_id_tbl   cz_pb_mgr.t_ref;
12983   l_cz_rules_unmsg_id_tbl cz_pb_mgr.t_ref;
12984   l_cz_rules_expl_id_tbl  cz_pb_mgr.t_ref;
12985   l_cz_rules_sig_tbl      cz_pb_mgr.t_ref;
12986   l_cz_rules_ui_tbl       cz_pb_mgr.t_ref;
12987   l_cz_rules_perst_id_tbl cz_pb_mgr.t_ref;
12988   l_eff_usg_mask_tbl      cz_pb_mgr.t_eff_usage_mask;
12989   l_object_type           cz_rule_folders.object_type%TYPE;
12990   l_rule_type_tbl         cz_pb_mgr.t_ref;
12991 
12992   rec_count PLS_INTEGER;
12993 
12994 BEGIN
12995   IF (x_status = PUBLICATION_ERROR OR p_model_array.COUNT = 0) THEN
12996     RETURN;
12997   END IF;
12998   rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT; -- ? 0
12999 
13000   FOR i IN p_model_array.FIRST .. p_model_array.LAST
13001   LOOP
13002     l_cz_rules_new_id_tbl.DELETE;
13003     l_cz_rules_old_id_tbl.DELETE;
13004     l_cz_rules_rf_id_tbl.DELETE;
13005     l_cz_rules_proj_id_tbl.DELETE;
13006     l_cz_rules_comp_id_tbl.DELETE;
13007     l_cz_rules_rea_id_tbl.DELETE;
13008     l_cz_rules_eff_id_tbl.DELETE;
13009     l_cz_rules_unmsg_id_tbl.DELETE;
13010     l_cz_rules_expl_id_tbl.DELETE;
13011     l_cz_rules_sig_tbl.DELETE;
13012     l_cz_rules_ui_tbl.DELETE;
13013     l_eff_usg_mask_tbl.DELETE;
13014     l_cz_rules_perst_id_tbl.DELETE;
13015     l_rule_type_tbl.DELETE;
13016 
13017     BEGIN
13018       IF (cz_pb_mgr.v_session_parameter = MODEL_COPY) THEN
13019         IF (COPY_RULES = 'YES') THEN
13020           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13021                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13022              ,rule_id, rule_folder_id, devl_project_id, component_id
13023              ,reason_id, unsatisfied_msg_id, effectivity_set_id
13024              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13025              ,persistent_rule_id, rule_type
13026           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13027              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13028              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13029              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13030              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13031           FROM cz_rules t
13032           WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13033                AND t.seeded_flag <> SEED_DATA
13034 		AND ((CZ_PB_MGR.COPY_UIS='YES')
13035 		       OR
13036 		    (rule_type NOT IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION))
13037 		    )
13038                AND (
13039                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13040                      (t.ui_def_id>1 AND
13041                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13042                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13043                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13044                                WHERE p.page_id=t.ui_page_id AND
13045                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13046                    );
13047 
13048       ELSIF (COPY_RULES = 'NO') THEN -- vigramak edit bug 13340775
13049 	    SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13050                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13051              ,rule_id, rule_folder_id, devl_project_id, component_id
13052              ,reason_id, unsatisfied_msg_id, effectivity_set_id
13053              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13054              ,persistent_rule_id, rule_type
13055           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13056              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13057              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13058              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13059              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13060           FROM cz_rules t
13061           WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13062                AND t.seeded_flag <> SEED_DATA
13063 		AND ((CZ_PB_MGR.COPY_UIS='YES' AND rule_type IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION,RULE_TYPE_POPULATOR))
13064 		       OR
13065 		    (CZ_PB_MGR.COPY_UIS='NO' AND rule_type IN (RULE_TYPE_POPULATOR))
13066 		    )
13067                AND (
13068                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13069                      (t.ui_def_id>1 AND
13070                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13071                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13072                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13073                                WHERE p.page_id=t.ui_page_id AND
13074                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13075                    );
13076         END IF;
13077       ELSE
13078         IF (p_rules_flag = 'YES') THEN
13079           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13080                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13081              ,rule_id, rule_folder_id, devl_project_id, component_id
13082              ,reason_id, unsatisfied_msg_id, effectivity_set_id
13083              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13084              ,persistent_rule_id, rule_type
13085           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13086              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13087              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13088              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13089              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13090           FROM cz_rules t
13091           WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13092                 AND t.seeded_flag <> SEED_DATA
13093                 AND (
13094                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13095                      (t.ui_def_id>1 AND
13096                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13097                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13098                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13099                                WHERE p.page_id=t.ui_page_id AND
13100                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13101                     );
13102 
13103         ELSE
13104           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13105                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13106              ,rule_id, rule_folder_id, devl_project_id, component_id
13107              ,reason_id, unsatisfied_msg_id, effectivity_set_id
13108              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13109              ,persistent_rule_id, rule_type
13110           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13111              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13112              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13113              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13114              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13115           FROM cz_rules t
13116           WHERE t.devl_project_id = p_model_array(i)
13117            AND  t.rule_type IN (RULE_TYPE_CONFIG_EXTENSION, RULE_TYPE_DISPLAY_CONDITION,
13118                                 RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)
13119            AND  t.deleted_flag = '0'  AND t.seeded_flag <> SEED_DATA
13120            AND (
13121                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13122                      (t.ui_def_id>1 AND
13123                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13124                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13125                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13126                                WHERE p.page_id=t.ui_page_id AND
13127                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13128                    );
13129 
13130         END IF;
13131       END IF;
13132     EXCEPTION
13133       WHEN NO_DATA_FOUND THEN
13134         cz_pb_mgr.v_err_message := 'No rules found for model: ' || p_model_array(i);
13135         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
13136       WHEN OTHERS THEN
13137         RAISE;
13138     END;
13139 
13140     IF l_cz_rules_new_id_tbl.COUNT > 0 THEN
13141       FOR k IN l_cz_rules_new_id_tbl.FIRST .. l_cz_rules_new_id_tbl.LAST
13142       LOOP
13143         rec_count := rec_count + 1;
13144         cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_cz_rules_old_id_tbl(k)):=l_cz_rules_new_id_tbl(k);
13145         cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := l_cz_rules_proj_id_tbl(k);
13146         cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := l_cz_rules_comp_id_tbl(k);
13147         cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := l_cz_rules_expl_id_tbl(k);
13148         p_rules_new_array(rec_count) := l_cz_rules_new_id_tbl(k);
13149         p_rules_old_array(rec_count) := l_cz_rules_old_id_tbl(k);
13150         cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := l_cz_rules_rea_id_tbl(k);
13151         cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := l_cz_rules_unmsg_id_tbl(k);
13152         cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := l_cz_rules_eff_id_tbl(k);
13153         cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := l_cz_rules_sig_tbl(k);
13154         cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := l_cz_rules_ui_tbl(k);
13155         cz_pb_mgr.v_cz_rule_usage_mask_tbl(rec_count) := l_eff_usg_mask_tbl(k);
13156         cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
13157         cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_cz_rules_perst_id_tbl(k);
13158 
13159         IF l_rule_type_tbl(k) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION,
13160                                   RULE_TYPE_CAPTION, RULE_TYPE_POPULATOR) THEN
13161           cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
13162         ELSE
13163           cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := l_cz_rules_rf_id_tbl(k);
13164         END IF;
13165       END LOOP;
13166     END IF;
13167   END LOOP;
13168 
13169   IF (rec_count > 0 AND (cz_pb_mgr.v_session_parameter = MODEL_COPY OR
13170                          cz_pb_mgr.v_session_parameter = CZ_MODEL_MIGRATION_PVT.MIGRATE_MODEL)) THEN
13171     FOR j IN p_rules_old_array.FIRST .. p_rules_old_array.LAST
13172     LOOP
13173       BEGIN
13174         SELECT object_type  INTO l_object_type
13175         FROM cz_rule_folders
13176         WHERE rule_folder_id = p_rules_old_array(j) AND object_type NOT IN ('FNC', 'RFL', 'RSQ');
13177         cz_pb_mgr.v_cz_rules_obj_ref(j) := l_object_type;
13178       EXCEPTION
13179         WHEN NO_DATA_FOUND THEN
13180           NULL;
13181       END;
13182     END LOOP;
13183   END IF;
13184 EXCEPTION
13185   WHEN OTHERS THEN
13186     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
13187     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
13188     x_status := PUBLICATION_ERROR;
13189     RAISE;
13190 END bulk_collect_rules;
13191 
13192 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13193 ----procedure that clears all global pl/sql tables
13194    PROCEDURE clear_all_tables(x_status IN OUT NOCOPY VARCHAR2)
13195    AS
13196    BEGIN
13197       clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
13198       clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
13199       clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
13200       clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
13201       clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
13202       clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
13203       clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
13204       clear_tables('cz_ui_defs', 'tbl', cz_pb_mgr.v_status_code);
13205       clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
13206       clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
13207       clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
13208       clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
13209       clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
13210       clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
13211       clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
13212       clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
13213       clear_tables('cz_expression_nodes', 'ref', cz_pb_mgr.v_status_code);
13214       clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
13215       clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
13216       clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
13217       clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
13218       clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
13219    EXCEPTION
13220       WHEN OTHERS
13221       THEN
13222          cz_pb_mgr.v_err_message := 'Error in clearing all tables : ' || SQLERRM;
13223          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CLEARALLTABLES', SQLCODE);
13224          x_status := PUBLICATION_ERROR;
13225          RAISE;
13226    END clear_all_tables;
13227 
13228 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13229 -----procedure to get the new ui_def_id that would be in the target publication
13230 -----@p_publication_id : source publication_id
13231 -----@p_old_ui_array : array containing old ui_def_ids
13232 -----@p_new_ui_array : array containing new ui_def_ids
13233 -----@x_new_ui_def_id  : new ui_def_id
13234 -----@x_status : publication status parameter
13235    PROCEDURE get_new_ui_def_id(
13236       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13237      ,p_old_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
13238      ,p_new_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
13239      ,x_new_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
13240      ,x_status IN OUT NOCOPY VARCHAR2
13241    )
13242    AS
13243       v_old_ui_def_id cz_model_publications.model_id%TYPE;
13244    BEGIN
13245       IF (x_status <> PUBLICATION_ERROR)
13246       THEN
13247          SELECT ui_def_id
13248            INTO v_old_ui_def_id
13249            FROM cz_model_publications
13250           WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
13251 
13252          IF ((v_old_ui_def_id > 0) AND(p_new_ui_array.COUNT > 0))
13253          THEN
13254 	  IF (p_old_ui_array.COUNT > 0) THEN
13255             FOR i IN p_old_ui_array.FIRST .. p_old_ui_array.LAST
13256             LOOP
13257                IF (v_old_ui_def_id = p_old_ui_array(i))
13258                THEN
13259                   x_new_ui_def_id := p_new_ui_array(i);
13260                   EXIT;
13261                END IF;
13262             END LOOP;
13263 	   END IF;
13264          ELSE
13265             x_new_ui_def_id := NULL;
13266          END IF;
13267       END IF;
13268    EXCEPTION
13269       WHEN OTHERS
13270       THEN
13271          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_DATA_FOUND', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
13272          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:UIDEFID', SQLCODE);
13273          x_status := PUBLICATION_ERROR;
13274          RAISE;
13275    END get_new_ui_def_id;
13276 
13277 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13278 ----procedure gets model id for target publication
13279    PROCEDURE get_new_model_id(
13280       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13281      ,p_new_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
13282      ,x_new_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
13283      ,x_status IN OUT NOCOPY VARCHAR2
13284    )
13285    AS
13286    BEGIN
13287       IF (x_status <> PUBLICATION_ERROR)
13288       THEN
13289          IF (p_new_model_array.COUNT > 0)
13290          THEN
13291             SELECT remote_model_id
13292               INTO x_new_model_id
13293               FROM cz_pb_model_exports
13294              WHERE cz_pb_model_exports.publication_id = p_publication_id
13295                AND cz_pb_model_exports.model_id = cz_pb_model_exports.root_model_id
13296                ---AND     cz_pb_model_exports.export_reverse_seq = 0
13297                AND cz_pb_model_exports.superseded_flag = 'N';
13298          END IF;
13299 
13300          ---the above query has been changed to hold good for circular connectors
13301                ---In circular references the root may not have an export rev seq of 0
13302          UPDATE cz_pb_model_exports
13303             SET superseded_flag = 'Y'
13304           WHERE publication_id = p_publication_id AND superseded_flag = 'N';
13305       END IF;
13306    EXCEPTION
13307       WHEN OTHERS
13308       THEN
13309          cz_pb_mgr.v_err_message := 'Error in retrieving new model id for publication id: ' || p_publication_id || ' : ' || SQLERRM;
13310          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETNEWMODELID', SQLCODE);
13311          x_status := PUBLICATION_ERROR;
13312          RAISE;
13313    END get_new_model_id;
13314 
13315 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13316 ------procedure that retrieves the source publication_id, export_status, server_id, remote_publication_id
13317 ------from cz_model_publications table
13318 ------@p_publication_id : publication id whose info is required
13319 ------@p_status : publication_status
13320 ------@x_model_id : model that is to be published
13321 ------@x_ui_def_id : ui_def_id
13322 ------@x_export_status  : prev publication status
13323 ------@x_remote_publication_id : prev remote publication id
13324 ------@x_status : publication status parameter
13325    PROCEDURE get_source_pb_info(
13326       p_publication_id IN cz_model_publications.publication_id%TYPE
13327      ,x_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
13328      ,x_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
13329      ,x_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
13330      ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13331      ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13332      ,x_object_type IN OUT NOCOPY cz_model_publications.object_type%TYPE
13333      ,x_pb_mode IN OUT NOCOPY cz_model_publications.publication_mode%TYPE
13334      ,x_status IN OUT NOCOPY VARCHAR2
13335    )
13336    AS
13337    BEGIN
13338       IF (x_status <> PUBLICATION_ERROR)
13339       THEN
13340          SELECT object_id, ui_def_id, server_id, export_status, remote_publication_id, object_type, publication_mode, NVL(config_engine_type, 'L')
13341            INTO x_model_id, x_ui_def_id, x_server_id, x_export_status, x_remote_publication_id, x_object_type, x_pb_mode, g_engine_type
13342            FROM cz_model_publications, cz_devl_projects
13343           WHERE cz_model_publications.publication_id = p_publication_id
13344             AND cz_model_publications.deleted_flag = record_not_deleted
13345             AND cz_model_publications.object_id = cz_devl_projects.devl_project_id
13346             AND cz_devl_projects.deleted_flag = '0';
13347 	    -- Bug 5507300; 06-Sep-2006; kdande; Removed the following condition as user should be able to Republish disabled publications.
13348             -- AND cz_model_publications.disabled_flag = '0';
13349 
13350          ----if x_ui_def_id is null
13351          IF (x_ui_def_id IS NULL)
13352          THEN
13353             BEGIN
13354                SELECT ui_def_id
13355                  INTO x_ui_def_id
13356                  FROM cz_ui_defs
13357                 WHERE cz_ui_defs.devl_project_id = x_model_id AND cz_ui_defs.deleted_flag = '0' AND cz_ui_defs.NAME NOT LIKE 'MUID' AND ROWNUM < 2;
13358             EXCEPTION
13359                WHEN NO_DATA_FOUND
13360                THEN
13361                   x_ui_def_id := NULL;
13362                WHEN OTHERS
13363                THEN
13364                   x_ui_def_id := 0;
13365             END;
13366          END IF;
13367       END IF;
13368    EXCEPTION
13369       WHEN OTHERS
13370       THEN
13371          cz_pb_mgr.v_err_message :=
13372                                   'Error in retrieving source publication info for publication id : ' || TO_CHAR(p_publication_id) || ' : '
13373                                   || SQLERRM;
13374          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13375          x_status := PUBLICATION_ERROR;
13376          RAISE;
13377    END get_source_pb_info;
13378 
13379 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13380 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
13381 ------from cz_model_publications table
13382 ------@p_publication_id : publication id whose info is required
13383 ------@p_status : publication_status
13384 ------@x_prev publication id : prev publication id
13385 ------@x_prev_export_status  : prev publication status
13386 ------@x_prev_remote_publication_id : prev remote publication id
13387 ------@x_status : publication status parameter
13388    PROCEDURE get_new_copy_pb_info(
13389       p_publication_id IN cz_model_publications.publication_id%TYPE
13390      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13391      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13392      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13393      ,x_status IN OUT NOCOPY VARCHAR2
13394    )
13395    AS
13396    BEGIN
13397       IF (p_publication_id IS NOT NULL)
13398       THEN
13399          SELECT publication_id, export_status, remote_publication_id
13400            INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
13401            FROM cz_model_publications
13402           WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
13403       END IF;
13404    EXCEPTION
13405       WHEN OTHERS
13406       THEN
13407          cz_pb_mgr.v_err_message :=
13408                                'Error in retrieving publication info (newcopy) for publication id : ' || TO_CHAR(p_publication_id) || ' : '
13409                                || SQLERRM;
13410          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13411          x_status := PUBLICATION_ERROR;
13412          RAISE;
13413    END get_new_copy_pb_info;
13414 
13415 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13416 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
13417 ------from cz_model_publications table
13418 ------@p_publication_id : publication id whose info is required
13419 ------@p_status : publication_status
13420 ------@x_prev publication id : prev publication id
13421 ------@x_prev_export_status  : prev publication status
13422 ------@x_prev_remote_publication_id : prev remote publication id
13423 ------@x_status : publication status parameter
13424    PROCEDURE get_republish_pb_info(
13425       p_publication_id IN cz_model_publications.publication_id%TYPE
13426      ,p_status IN cz_model_publications.export_status%TYPE
13427      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13428      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13429      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13430      ,x_status IN OUT NOCOPY VARCHAR2
13431    )
13432    AS
13433    BEGIN
13434       SELECT publication_id, export_status, remote_publication_id
13435         INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
13436         FROM cz_model_publications
13437        WHERE cz_model_publications.remote_publication_id = p_publication_id
13438          AND cz_model_publications.export_status = p_status
13439          AND cz_model_publications.deleted_flag = record_not_deleted;
13440    EXCEPTION
13441       WHEN OTHERS
13442       THEN
13443          cz_pb_mgr.v_err_message := 'Error in retrieving publication info (republish) for publication id : ' || p_publication_id || ' : ' || SQLERRM;
13444          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13445          x_status := PUBLICATION_ERROR;
13446          RAISE;
13447    END get_republish_pb_info;
13448 
13449 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13450 ----------procedure to get the max publication id for a model
13451 ----------@p_model_id  : devl_project_id of the model
13452 ----------@p_server_id : server_id of the publication request
13453 ----------@x_publication_id : retrieved max publication id
13454 ----------@x_status: publication status parameter
13455    PROCEDURE get_max_pub_id(
13456       p_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13457      ,p_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
13458      ,x_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13459      ,x_status IN OUT NOCOPY VARCHAR2
13460    )
13461    AS
13462    BEGIN
13463       SELECT MAX(publication_id)
13464         INTO x_publication_id
13465         FROM cz_model_publications t
13466        WHERE t.model_id = p_model_id
13467          AND t.server_id = p_server_id
13468          AND t.model_last_struct_update = (SELECT last_struct_update
13469                                              FROM cz_devl_projects
13470                                             WHERE cz_devl_projects.devl_project_id = p_model_id)
13471          AND t.export_status IN('PUP', 'OK')
13472          AND t.source_target_flag = g_source_flag
13473          AND t.publication_id <> cz_pb_mgr.v_publication_id
13474          AND t.deleted_flag = record_not_deleted;
13475    EXCEPTION
13476       WHEN NO_DATA_FOUND
13477       THEN
13478          NULL;
13479       WHEN OTHERS
13480       THEN
13481          cz_pb_mgr.v_err_message := 'Error in retrieving max publication id for model id : ' || p_model_id || ' : ' || SQLERRM;
13482          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13483          x_status := PUBLICATION_ERROR;
13484          RAISE;
13485    END get_max_pub_id;
13486 
13487 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13488 -----procedure that retrieves previous publication
13489 -----if an existing publication is re-published.  This is again based on if all UIs are exported
13490 -----or no UI is exported i.e., only a publication request is created and no data is exported
13491 -----@p_ui_str : values are 'UI' or 'x' that indicates if UIs are exported
13492 -----@p_session_parameter : differentiates between a publishing process and deep copy
13493 -----@p_rem_publication_id : remote publication id of the existing publication
13494 -----@x_prev publication id : prev publication id
13495 -----@x_prev_export_status  : prev publication status
13496 -----@x_prev_remote_publication_id : prev remote publication id
13497 -----@x_status : publication status parameter
13498    PROCEDURE get_prev_publication(
13499       p_ui_str IN OUT NOCOPY VARCHAR2
13500      ,p_session_parameter IN OUT NOCOPY VARCHAR2
13501      ,p_rem_publication_id IN cz_model_publications.publication_id%TYPE
13502      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13503      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13504      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13505      ,x_status IN OUT NOCOPY VARCHAR2
13506    )
13507    AS
13508       v_pr_pub_id cz_model_publications.publication_id%TYPE;
13509    BEGIN
13510       IF ((p_ui_str = 'UI') AND(p_session_parameter <> model_copy))
13511       THEN
13512          IF (p_rem_publication_id IS NOT NULL)
13513          THEN
13514             get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13515 
13516             IF (x_prev_publication_id > 0)
13517             THEN
13518                cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
13519                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13520             END IF;
13521          ELSE
13522             get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_pr_pub_id, cz_pb_mgr.v_status_code);
13523             get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13524 
13525             IF (x_prev_publication_id > 0)
13526             THEN
13527                cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(x_prev_publication_id);
13528                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13529             END IF;
13530          END IF;                                                                                   /* end if of ( p_rem_publication_id IS NOT NULL) */
13531       ELSIF((cz_pb_mgr.v_ui_str = 'x') AND(cz_pb_mgr.v_session_parameter <> model_copy))
13532       THEN
13533          IF (p_rem_publication_id IS NOT NULL)
13534          THEN
13535             get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13536 
13537             IF (x_prev_publication_id > 0)
13538             THEN
13539                cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
13540                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13541             END IF;
13542          ELSE
13543             get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_pr_pub_id, cz_pb_mgr.v_status_code);
13544             get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13545          END IF;
13546       END IF;                                                                /* end if of (p_ui_str = 'UI') AND (p_session_parameter <> MODEL_COPY) */
13547    EXCEPTION
13548       WHEN OTHERS
13549       THEN
13550          cz_pb_mgr.v_err_message :=
13551                               'Error in retrieving previous publication info for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
13552          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPREVPUB', SQLCODE);
13553          RAISE;
13554    END get_prev_publication;
13555 
13556 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13557 ------procedure inserts target publication record
13558 ------@p_new_publication_id : new publication id
13559 ------@p_old_publication_id : old publication id
13560 ------@p_link IN OUT NOCOPY : db link
13561 ------@x_status publication status parameter
13562    PROCEDURE insert_tgt_publication(
13563       p_new_publication_id IN cz_model_publications.publication_id%TYPE
13564      ,p_old_publication_id IN cz_model_publications.publication_id%TYPE
13565      ,p_model_id IN cz_model_publications.model_id%TYPE
13566      ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
13567      ,p_link IN OUT NOCOPY VARCHAR2
13568      ,p_insert_flag IN VARCHAR2
13569      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13570    )
13571    AS
13572       v_ui_def VARCHAR2(2000);
13573       v_inst_str VARCHAR2(8000);
13574       v_src_ui_def_id VARCHAR2(2000);
13575    BEGIN
13576       IF ((p_new_publication_id > 0) AND(x_status <> PUBLICATION_ERROR))
13577       THEN
13578          get_synchronized_pb_values(p_old_publication_id);
13579 
13580          IF (p_ui_def_id IS NULL)
13581          THEN
13582             v_ui_def := 'NULL';
13583             v_src_ui_def_id := 'NULL';
13584          ELSE
13585             v_ui_def := TO_CHAR(p_ui_def_id);
13586             v_src_ui_def_id := TO_CHAR(cz_pb_mgr.v_root_ui_def_id);
13587          END IF;
13588 
13589          v_inst_str :=
13590                'INSERT INTO cz_model_publications'
13591             || p_link
13592             || ''
13593             || ' '
13594             || '(PUBLICATION_ID'
13595             || ' '
13596             || ',MODEL_ID'
13597             || ' '
13598             || ',OBJECT_ID'
13599             || ' '
13600             || ',OBJECT_TYPE'
13601             || ' '
13602             || ',SERVER_ID'
13603             || ' '
13604             || ',ORGANIZATION_ID'
13605             || ' '
13606             || ',TOP_ITEM_ID'
13607             || ' '
13608             || ',PRODUCT_KEY'
13609             || ' '
13610             || ',PUBLICATION_MODE'
13611             || ' '
13612             || ',UI_DEF_ID'
13613             || ' '
13614             || ',UI_STYLE'
13615             || ' '
13616             || ',APPLICABLE_FROM'
13617             || ' '
13618             || ',APPLICABLE_UNTIL'
13619             || ' '
13620             || ',EXPORT_STATUS'
13621             || ' '
13622             || ',MODEL_PERSISTENT_ID'
13623             || ' '
13624             || ',DELETED_FLAG'
13625             || ' '
13626             || ',MODEL_LAST_STRUCT_UPDATE'
13627             || ' '
13628             || ',MODEL_LAST_LOGIC_UPDATE'
13629             || ' '
13630             || ',MODEL_LAST_UPDATED'
13631             || ' '
13632             || ',SOURCE_TARGET_FLAG'
13633             || ' '
13634             || ',REMOTE_PUBLICATION_ID'
13635             || ' '
13636             || ',SOURCE_UI_DEF_ID'
13637             || ' '
13638             || ',SOURCE_MODEL_ID'
13639             || ' '
13640             || ',CONTAINER'
13641             || ' '
13642             || ',PAGE_LAYOUT'
13643             || ' '
13644             || ',disabled_flag'
13645             || ' '
13646             || ')'
13647             || ' '
13648             || 'SELECT 	:1'
13649             || ' '
13650             || ',:2'
13651             || ' '
13652             || ',:3'
13653             || ' '
13654             || ',OBJECT_TYPE'
13655             || ' '
13656             || ',SERVER_ID'
13657             || ' '
13658             || ',:4'
13659             || ' '
13660             || ',:5'
13661             || ' '
13662             || ',:6'
13663             || ' '
13664             || ',PUBLICATION_MODE'
13665             || ' '
13666             || ',:7'
13667             || ' '
13668             || ',UI_STYLE'
13669             || ' '
13670             || ',APPLICABLE_FROM'
13671             || ' '
13672             || ',APPLICABLE_UNTIL'
13673             || ' '
13674             || ',''OK'''
13675             || ' '
13676             || ',MODEL_PERSISTENT_ID'
13677             || ' '
13678             || ',DELETED_FLAG'
13679             || ' '
13680             || ',MODEL_LAST_STRUCT_UPDATE'
13681             || ' '
13682             || ',MODEL_LAST_LOGIC_UPDATE'
13683             || ' '
13684             || ',MODEL_LAST_UPDATED'
13685             || ' '
13686             || ','''
13687             || g_target_flag
13688             || ''''
13689             || ' '
13690             || ',:8'
13691             || ' '
13692             || ',:9'
13693             || ' '
13694             || ',:10'
13695             || ' '
13696             || ',CONTAINER'
13697             || ' '
13698             || ',PAGE_LAYOUT'
13699             || ' '
13700             || ',disabled_flag'
13701             || ' '
13702             || 'FROM  cz_model_publications'
13703             || ' '
13704             || 'WHERE publication_id = :11 ';
13705 
13706          EXECUTE IMMEDIATE v_inst_str
13707                      USING p_new_publication_id
13708                           ,p_model_id
13709                           ,p_model_id
13710                           ,cz_pb_mgr.v_bomsynch_org_id
13711                           ,cz_pb_mgr.v_bomsynch_item_id
13712                           ,cz_pb_mgr.v_bomsynch_product_key
13713                           ,p_ui_def_id
13714                           ,p_old_publication_id
13715                           ,cz_pb_mgr.v_root_ui_def_id
13716                           ,cz_pb_mgr.v_root_model_id
13717                           ,p_old_publication_id;
13718 
13719          ---------update remote_publication on the source
13720          IF (p_insert_flag = 'REPUBLISH')
13721          THEN
13722             UPDATE cz_model_publications
13723                SET remote_publication_id = p_new_publication_id
13724              WHERE publication_id = cz_pb_mgr.v_cz_model_pub_old_id;
13725          ELSIF(p_insert_flag = 'NEW')
13726          THEN
13727             UPDATE cz_model_publications
13728                SET remote_publication_id = p_new_publication_id
13729              WHERE publication_id = p_old_publication_id;
13730          END IF;
13731 
13732 --Bug#12653412: SKM**SUN PURGE (Update all the models in cz_devl_projects.published to NULL
13733 --based on the list of models exported (from cz_model_exports.remote_model_id) based on p_new/old_publication_id
13734          EXECUTE IMMEDIATE 'UPDATE cz_devl_projects SET published = NULL ' || ' ' ||
13735                             'WHERE devl_project_id IN (SELECT remote_model_id '|| ' '||
13736                              'FROM cz_pb_model_exports WHERE publication_id = ' ||p_old_publication_id|| ')';
13737 
13738          ------update for republish_model api
13739          IF (cz_pb_mgr.v_republish_model = new_copy_mode)
13740          THEN
13741             EXECUTE IMMEDIATE    'UPDATE cz_model_publications'
13742                               || p_link
13743                               || '   t '
13744                               || ' '
13745                               || 'SET    t.applicable_from  = :1,'
13746                               || ' '
13747                               || 't.applicable_until = :2'
13748                               || ' '
13749                               || 'WHERE   t.publication_id   = :3 '
13750                         USING v_repub_appl_from, v_repub_appl_until, v_repub_remote_pb_id;
13751          END IF;
13752 
13753          EXECUTE IMMEDIATE 'UPDATE cz_devl_projects set checkout_user = NULL ' || ' ' || 'WHERE  devl_project_id = ' || NVL(p_model_id, 0);
13754       END IF;
13755 
13756       COMMIT;
13757    EXCEPTION
13758       WHEN OTHERS
13759       THEN
13760          cz_pb_mgr.v_err_message := 'Error in inserting target publication for source publication id: ' || p_old_publication_id || ' : ' || SQLERRM;
13761          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
13762          x_status := PUBLICATION_ERROR;
13763          RAISE;
13764    END insert_tgt_publication;
13765 
13766 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13767 -----procedure that inserts publication applicability parameters on the target instance
13768    PROCEDURE insert_pb_parameters(
13769       p_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13770      ,p_old_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13771      ,p_session_parameter IN OUT NOCOPY VARCHAR2
13772      ,p_db_link IN VARCHAR2
13773      ,x_status IN OUT NOCOPY VARCHAR2
13774    )
13775    AS
13776    BEGIN
13777       IF (x_status <> PUBLICATION_ERROR) AND(p_session_parameter <> model_copy)
13778       THEN
13779          ---------------- insert the fields of cz_pb_client_apps
13780          cz_pb_mgr.v_insert_string :='INSERT INTO cz_pb_client_apps'||p_db_link  || ' ' ||
13781 						'(PUBLICATION_ID,FND_APPLICATION_ID,APPLICATION_SHORT_NAME,NOTES)' || ' ' ||
13782 					  'SELECT '||p_new_publication_id||',t.APPLICATION_ID,t.APPLICATION_SHORT_NAME,NOTES' || ' ' ||
13783 					  'FROM  cz_pb_client_apps,fnd_application' ||p_db_link|| ' ' ||
13784 	 				  't WHERE cz_pb_client_apps.publication_id = :1'  || ' ' ||
13785 	 				  'and cz_pb_client_apps.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME';
13786 		EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13787 
13788          COMMIT;
13789          ----------insert the fields of cz_publication_usages
13790          cz_pb_mgr.v_insert_string :=
13791                'INSERT INTO cz_publication_usages'
13792             || p_db_link
13793             || ' '
13794             || '(PUBLICATION_ID,USAGE_ID)'
13795             || ' '
13796             || 'SELECT  '
13797             || p_new_publication_id
13798             || ',USAGE_ID'
13799             || ' '
13800             || 'FROM  cz_publication_usages'
13801             || ' '
13802 	    || 'WHERE publication_id = :1';
13803 
13804 	 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13805 
13806 
13807          COMMIT;
13808          ---------------- insert the fields of cz_pb_languages
13809          cz_pb_mgr.v_insert_string :=
13810                'INSERT INTO cz_pb_languages'
13811             || p_db_link
13812             || ' '
13813             || '(PUBLICATION_ID,LANGUAGE)'
13814             || ' '
13815             || 'SELECT '
13816             || p_new_publication_id
13817             || ',LANGUAGE'
13818             || ' '
13819             || 'FROM  cz_pb_languages'
13820             || ' '
13821 	    ||	'WHERE cz_pb_languages.publication_id = :1';
13822 
13823 	 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13824 
13825          COMMIT;
13826       END IF;                                                    /* end if of x_status <> PUBLICATION_ERROR) AND (p_session_parameter <> MODEL_COPY */
13827    EXCEPTION
13828       WHEN OTHERS
13829       THEN
13830          cz_pb_mgr.v_err_message :=
13831             'Error in inserting publication parameters on the target instance for source publication id: ' || p_old_publication_id || ' : '
13832             || SQLERRM;
13833          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
13834          x_status := PUBLICATION_ERROR;
13835          RAISE;
13836    END insert_pb_parameters;
13837 
13838 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13839    PROCEDURE insert_devl_projects(
13840       p_new_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13841      ,p_old_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13842      ,p_orig_sys_ref IN OUT NOCOPY cz_devl_projects.orig_sys_ref%TYPE
13843      ,x_status IN OUT NOCOPY VARCHAR2
13844    )
13845    AS
13846       l_sql_query VARCHAR2(32000);
13847    BEGIN
13848       IF (x_status <> PUBLICATION_ERROR)
13849       THEN
13850          cz_pb_mgr.v_devl_orig_sys_ref := NULL;
13851          cz_pb_mgr.l_intl_text_id_tbl.DELETE;
13852          cz_pb_mgr.l_bom_caption_rule_tbl.DELETE;
13853          cz_pb_mgr.l_nonbom_caption_rule_tbl.DELETE;
13854          cz_pb_mgr.l_bom_caption_rule := 0;
13855          cz_pb_mgr.l_nonbom_capt_rule_id := 0;
13856          l_devl_proj_inv_id := NULL;
13857          l_devl_proj_org_id := NULL;
13858          l_devl_proj_product_key := NULL;
13859          l_bom_caption_text_id := 0;
13860          l_nonbom_caption_text_id := 0;
13861 
13862          SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_origsysref(orig_sys_ref), orig_sys_ref), bom_caption_rule_id
13863                ,nonbom_caption_rule_id, DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_invid(inventory_item_id), inventory_item_id)
13864                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_orgid(organization_id), organization_id)
13865                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_productkey(product_key), product_key), bom_caption_text_id
13866                ,nonbom_caption_text_id
13867            INTO cz_pb_mgr.v_devl_orig_sys_ref, cz_pb_mgr.l_bom_caption_rule
13868                ,cz_pb_mgr.l_nonbom_capt_rule_id, cz_pb_mgr.l_devl_proj_inv_id
13869                ,cz_pb_mgr.l_devl_proj_org_id
13870                ,cz_pb_mgr.l_devl_proj_product_key, cz_pb_mgr.l_bom_caption_text_id
13871                ,cz_pb_mgr.l_nonbom_caption_text_id
13872            FROM cz_devl_projects
13873           WHERE cz_devl_projects.devl_project_id = p_old_model_id;
13874 
13875          IF (cz_pb_mgr.l_bom_caption_text_id <> 0)
13876          THEN
13877             cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_bom_caption_text_id;
13878             insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'bom capt text of cz_devl_projects');
13879             resolve_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'bom capt text of cz_devl_projects');
13880             cz_pb_mgr.l_bom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
13881          ELSE
13882             cz_pb_mgr.l_bom_caption_text_id := NULL;
13883          END IF;
13884 
13885          IF (cz_pb_mgr.l_nonbom_caption_text_id <> 0)
13886          THEN
13887             cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_nonbom_caption_text_id;
13888             insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'non bom capt text of cz_devl_projects');
13889             resolve_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'non bom capt text of cz_devl_projects');
13890             cz_pb_mgr.l_nonbom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
13891          ELSE
13892             cz_pb_mgr.l_nonbom_caption_text_id := NULL;
13893          END IF;
13894 
13895          IF (cz_pb_mgr.l_bom_caption_rule <> 0)
13896          THEN
13897             resolve_ids(cz_pb_mgr.l_bom_caption_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'bom rule ids of projects', ENTITY_TYPE_RULE);
13898          ELSE
13899             cz_pb_mgr.l_bom_caption_rule := NULL;
13900          END IF;
13901 
13902          IF (cz_pb_mgr.l_nonbom_capt_rule_id <> 0)
13903          THEN
13904             resolve_ids(cz_pb_mgr.l_nonbom_caption_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'non bom rule ids of projects', ENTITY_TYPE_RULE);
13905          ELSE
13906             cz_pb_mgr.l_nonbom_capt_rule_id := NULL;
13907          END IF;
13908 
13909 --Bug#12653412: SKM**SUN PURGE
13910 --Populate sysdate for the published column here
13911 
13912          l_sql_query :=
13913                'BEGIN  INSERT INTO cz_devl_projects'
13914             || cz_pb_mgr.v_db_link
13915             || '(DEVL_PROJECT_ID'
13916             || ' '
13917             || ',NAME,VERSION,DESC_TEXT,ORIG_SYS_REF,PUBLISHED,LAST_STRUCT_UPDATE'
13918             || ' '
13919             || ',UI_TIMESTAMP_STRUCT_UPDATE'
13920             || ' '
13921             || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
13922             || ' '
13923             || ',MODEL_TYPE,bom_caption_rule_id,nonbom_caption_rule_id'
13924             || ' '
13925             || ',organization_id,inventory_item_id,product_key'
13926             || ' '
13927             || ',bom_caption_text_id,nonbom_caption_text_id,POST_MIGR_CHANGE_FLAG,config_engine_type)'
13928             || ' '
13929             || 'SELECT :1'
13930             || ' '
13931             || ',NAME,VERSION,DESC_TEXT,:2,sysdate,LAST_STRUCT_UPDATE'
13932             || ' '
13933             || ',UI_TIMESTAMP_STRUCT_UPDATE'
13934             || ' '
13935             || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
13936             || ' '
13937             || ',MODEL_TYPE,:3,:4'
13938             || ' '
13939             || ',:5,:6,:7'
13940             || ' '
13941             || ',:8,:9,POST_MIGR_CHANGE_FLAG,config_engine_type'
13942             || ' '
13943             || 'FROM cz_devl_projects'
13944             || ' '
13945             || 'WHERE cz_devl_projects.devl_project_id = '
13946             || TO_CHAR(p_old_model_id)
13947             || '; END; ';
13948 
13949          EXECUTE IMMEDIATE l_sql_query
13950                      USING p_new_model_id
13951                           ,cz_pb_mgr.v_devl_orig_sys_ref
13952                           ,cz_pb_mgr.l_bom_caption_rule
13953                           ,cz_pb_mgr.l_nonbom_capt_rule_id
13954                           ,cz_pb_mgr.l_devl_proj_org_id
13955                           ,cz_pb_mgr.l_devl_proj_inv_id
13956                           ,cz_pb_mgr.l_devl_proj_product_key
13957                           ,cz_pb_mgr.l_bom_caption_text_id
13958                           ,cz_pb_mgr.l_nonbom_caption_text_id;
13959       END IF;
13960 
13961       COMMIT;
13962    EXCEPTION
13963       WHEN OTHERS
13964       THEN
13965          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_devl_projects', 'SQLERRM', SQLERRM);
13966          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
13967          x_status := PUBLICATION_ERROR;
13968          RAISE;
13969    END insert_devl_projects;
13970 
13971 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13972 ---------procedure retrieves the value of sequence incrementor
13973    PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE)
13974    AS
13975    BEGIN
13976       SELECT VALUE
13977         INTO x_oraclesequenceincr
13978         FROM cz_db_settings
13979        WHERE cz_db_settings.setting_id = sequence_incr_str;
13980    EXCEPTION
13981       WHEN OTHERS
13982       THEN
13983          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_INCR');
13984          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SEQINCR', SQLCODE);
13985          x_oraclesequenceincr := 20;
13986    END;
13987 
13988 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13989 -----procedure retrieves copy rules flag
13990    PROCEDURE get_copy_rules_flg(x_copyrules IN OUT NOCOPY VARCHAR2)
13991    AS
13992    BEGIN
13993       IF (cz_pb_mgr.v_session_parameter = pub_model)
13994       THEN
13995          SELECT VALUE
13996            INTO x_copyrules
13997            FROM cz_db_settings
13998           WHERE cz_db_settings.setting_id = rule_copy;
13999       ELSE
14000          x_copyrules := copy_rules;
14001       END IF;
14002    EXCEPTION
14003       WHEN OTHERS
14004       THEN
14005          x_copyrules := 'YES';
14006    END;
14007 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14008 -----bug #10417318
14009 -----procedureto to get multi Publication flag from cz_db_settings. SUN ER
14010 -----If this flag is Yes, then only we will allow multi server publication
14011    PROCEDURE get_multi_server_pub_flg
14012    AS
14013    BEGIN
14014       IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14015       THEN
14016          SELECT DECODE(UPPER(value),'TRUE','YES','FALSE','NO','T','YES','F','NO','1','YES','0','NO','YES','YES','NO','NO','Y','YES','N','NO','NO')
14017            INTO vMultiServerPub
14018            FROM cz_db_settings
14019           WHERE UPPER(cz_db_settings.setting_id) = UPPER(MULTI_SERVER_PUB);
14020       END IF;
14021    EXCEPTION
14022       WHEN OTHERS
14023       THEN
14024          vMultiServerPub := 'NO';
14025    END;
14026 
14027 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14028 -----procedureto to get single Publication Language from cz_db_settings. SUN ER
14029    PROCEDURE get_single_pb_language
14030    AS
14031    BEGIN
14032       IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14033       THEN
14034          SELECT UPPER(value)
14035            INTO vPubSingleLang
14036            FROM cz_db_settings
14037           WHERE UPPER(cz_db_settings.setting_id) = PUB_LANGUAGE;
14038       END IF;
14039    EXCEPTION
14040       WHEN OTHERS
14041       THEN
14042          vPubSingleLang := NULL;
14043    END;
14044 
14045    -----procedureto to get Bulk Remote Publication from cz_db_settings.
14046    PROCEDURE get_remote_select_insert
14047    AS
14048    BEGIN
14049       IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14050       THEN
14051          SELECT UPPER(value)
14052            INTO vBulkSelectInsert
14053            FROM cz_db_settings
14054           WHERE cz_db_settings.setting_id = BULK_SELECT_INSERT;
14055       END IF;
14056    EXCEPTION
14057       WHEN OTHERS
14058       THEN
14059          vBulkSelectInsert := NULL;
14060    END;
14061 
14062 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14063 -----procedure that uploads publication data
14064 ----@p_publication_id : publication request id on the source database
14065    PROCEDURE upload_publication_data(p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE)
14066    AS
14067       v_new_ui_def_id cz_model_publications.ui_def_id%TYPE;
14068       v_remote_model cz_model_publications.model_id%TYPE;
14069       v_prev_publication_id cz_model_publications.publication_id%TYPE;
14070       v_prev_export_status cz_model_publications.export_status%TYPE;
14071    BEGIN
14072       pbdebug := 22036;
14073       -------------update the status in cz_model_publications and model exports
14074       update_pb_status(p_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
14075       ------------get new publication id for the target publication
14076       get_new_publication_id(p_publication_id
14077                             ,cz_pb_mgr.v_cz_model_pub_old_id
14078                             ,cz_pb_mgr.v_cz_model_pub_new_id
14079                             ,cz_pb_mgr.remote_publication_id
14080                             ,cz_pb_mgr.v_status_code
14081                             );
14082       ------get new ui_def_id for the target publication
14083       get_new_ui_def_id(p_publication_id, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_new_ref, v_new_ui_def_id, cz_pb_mgr.v_status_code);
14084 
14085       -------get model id for target publication
14086       IF (g_object_type = MODEL_PUBLICATION) THEN
14087          get_new_model_id(p_publication_id, v_models_to_be_exported_new, v_remote_model, cz_pb_mgr.v_status_code);
14088       ELSE -- not supported
14089         get_new_model_id(p_publication_id, cz_pb_mgr.g_ui_templates_new_temp_id_ref, v_remote_model, cz_pb_mgr.v_status_code);
14090       END IF;
14091 
14092       -----------get previous publication id and status
14093       get_prev_publication(cz_pb_mgr.v_ui_str
14094                           ,cz_pb_mgr.v_session_parameter
14095                           ,cz_pb_mgr.remote_publication_id
14096                           ,v_prev_publication_id
14097                           ,v_prev_export_status
14098                           ,cz_pb_mgr.v_prev_remote_publication_id
14099                           ,cz_pb_mgr.v_status_code
14100                           );
14101       --------insert the new publication into cz_model_publications table of the target db
14102       insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
14103                             ,cz_pb_mgr.v_cz_model_pub_old_id
14104                             ,v_remote_model
14105                             ,v_new_ui_def_id
14106                             ,cz_pb_mgr.v_db_link
14107                             ,'NEW'
14108                             ,cz_pb_mgr.v_status_code
14109                             );
14110 
14111       ---------------- insert applicability parameters for tgt publication
14112       IF (g_object_type = MODEL_PUBLICATION)
14113       THEN
14114          insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
14115                              ,cz_pb_mgr.v_cz_model_pub_old_id
14116                              ,cz_pb_mgr.v_session_parameter
14117                              ,cz_pb_mgr.v_db_link
14118                              ,cz_pb_mgr.v_status_code
14119                              );
14120       END IF;
14121 
14122       ------reset status to the original if a re-publish fails
14123       IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP')
14124       THEN
14125          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
14126          THEN
14127             UPDATE cz_model_publications
14128                SET export_status = 'OK'
14129              WHERE publication_id = v_prev_publication_id;
14130          ELSE
14131             UPDATE cz_model_publications
14132                SET deleted_flag = '1'
14133                   ,export_status = 'OK'
14134              WHERE publication_id = v_prev_publication_id;
14135 
14136             EXECUTE IMMEDIATE    'BEGIN'
14137                               || ' '
14138                               || 'UPDATE cz_model_publications'
14139                               || cz_pb_mgr.v_db_link
14140                               || ' '
14141                               || ' '
14142                               || 'SET deleted_flag = ''1'','
14143                               || ' '
14144                               || 'export_status = ''OK'''
14145                               || ' '
14146                               || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
14147                               || ' '
14148                               || 'END;';
14149          END IF;
14150       END IF;
14151    EXCEPTION
14152       WHEN OTHERS
14153       THEN
14154          cz_pb_mgr.v_err_message := 'Error in upload of PUBLICATION schema for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
14155          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
14156          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14157          RAISE;
14158    END;                                                                                                      /* end of upload of publication schema */
14159 
14160 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14161 --Functions used for resolving effectuve usage mask
14162    FUNCTION hextodec(hexnum IN CHAR)
14163       RETURN NUMBER
14164    IS
14165       x NUMBER;
14166       digits NUMBER;
14167       RESULT NUMBER := 0;
14168       current_digit CHAR(1);
14169       current_digit_dec NUMBER;
14170    BEGIN
14171       digits := LENGTH(hexnum);
14172 
14173       FOR x IN 1 .. digits
14174       LOOP
14175          current_digit := SUBSTR(hexnum, x, 1);
14176 
14177          IF current_digit IN('A', 'B', 'C', 'D', 'E', 'F')
14178          THEN
14179             current_digit_dec := ASCII(current_digit) - ASCII('A') + 10;
14180          ELSE
14181             current_digit_dec := TO_NUMBER(current_digit);
14182          END IF;
14183 
14184          RESULT := (RESULT * 16) + current_digit_dec;
14185       END LOOP;
14186 
14187       RETURN RESULT;
14188    END hextodec;
14189 
14190 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14191    FUNCTION hextobinary(hexnum IN CHAR)
14192       RETURN VARCHAR2
14193    IS
14194       RESULT VARCHAR2(4) := '';
14195       current_digit_dec NUMBER;
14196    BEGIN
14197       IF hexnum IN('A', 'B', 'C', 'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f')
14198       THEN
14199          current_digit_dec := ASCII(UPPER(hexnum)) - ASCII('A') + 10;
14200       ELSE
14201          current_digit_dec := TO_NUMBER(hexnum);
14202       END IF;
14203 
14204       LOOP
14205          RESULT := TO_CHAR(MOD(current_digit_dec, 2)) || RESULT;
14206          current_digit_dec := TRUNC(current_digit_dec / 2);
14207          EXIT WHEN(current_digit_dec < 1);
14208       END LOOP;
14209 
14210       RESULT := LPAD(RESULT, 4, '0');
14211       RETURN RESULT;
14212    END hextobinary;
14213 
14214 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14215    FUNCTION power_func(p_power IN NUMBER)
14216       RETURN NUMBER
14217    IS
14218       RESULT NUMBER := 1;
14219    BEGIN
14220       FOR x IN 1 .. p_power
14221       LOOP
14222          RESULT := RESULT * 2;
14223       END LOOP;
14224 
14225       RETURN RESULT;
14226    END;
14227 
14228 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14229    PROCEDURE getUsgNameArray(usagemap VARCHAR2, p_old_usage_name_to_id_map IN OUT NOCOPY cz_pb_mgr.t_usage_name)
14230    AS
14231       l_str VARCHAR2(1) := '';
14232       l_length NUMBER;
14233       l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
14234       l_bits VARCHAR2(64) := '';
14235       current_digit VARCHAR2(1);
14236       l_length1 NUMBER;
14237       l_cnt NUMBER := 0;
14238       l_name VARCHAR2(2000);
14239       l_id NUMBER;
14240    BEGIN
14241       l_length := LENGTH(usagemap);
14242 
14243       FOR i IN 1 .. l_length
14244       LOOP
14245          current_digit := SUBSTR(usagemap, i, 1);
14246          l_length1 := LENGTH(l_bits);
14247          l_bits := l_bits || hextobinary(current_digit);
14248       END LOOP;
14249 
14250       l_length := LENGTH(l_bits);
14251 
14252       FOR i IN 1 .. l_length
14253       LOOP
14254          l_str := SUBSTR(l_bits, -i, 1);
14255 
14256          IF (TO_NUMBER(l_str) = 1)
14257          THEN
14258             SELECT NAME, model_usage_id
14259               INTO l_name, l_id
14260               FROM cz_model_usages
14261              WHERE model_usage_id = l_cnt;
14262 
14263             p_old_usage_name_to_id_map(l_cnt) := l_name;
14264          END IF;
14265 
14266          l_cnt := l_cnt + 1;
14267       END LOOP;
14268    END getUsgNameArray;
14269 
14270 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14271    PROCEDURE buildusagemask(usageid IN NUMBER, usagemask IN OUT NOCOPY VARCHAR2)
14272    AS
14273       l_str VARCHAR2(255) DEFAULT NULL;
14274       l_num NUMBER;
14275       l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
14276    BEGIN
14277       l_num := hextodec(usagemask) + power_func(usageid);
14278 
14279       LOOP
14280          l_str := SUBSTR(l_hex, MOD(l_num, 16) + 1, 1) || l_str;
14281          l_num := TRUNC(l_num / 16);
14282          EXIT WHEN(l_num = 0);
14283       END LOOP;
14284 
14285       usagemask := LPAD(l_str, 16, '0');
14286    END buildusagemask;
14287 
14288 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14289 --procedure to resolve effective usage mask for ps nodes and rules.
14290 --Bug #5485126 - p_rules_flag should be 1 when the procedure is called for rules.
14291 
14292    PROCEDURE resolve_effective_usage_mask(p_id_to_eff_usg_msk IN t_ref, p_rules_flag IN PLS_INTEGER)
14293    AS
14294       remote_usage ref_cursor;
14295       avail_usage_cur ref_cursor;
14296       -- We start with default mask.
14297       l_previous_mask VARCHAR2(16) := v_default_eff_usg_mask;
14298       l_avail_usage_id NUMBER;
14299       l_effective_usage VARCHAR2(2000);
14300       usageid NUMBER;
14301       l_usage_id cz_model_usages.model_usage_id%TYPE;
14302       l_usage_name cz_model_usages.NAME%TYPE;
14303       l_usage_desc cz_model_usages.description%TYPE;
14304       l_index_ps_to_eff NUMBER;
14305       l_index_usage_name_to_id NUMBER;
14306       l_count NUMBER;
14307       rec_count NUMBER := 0;
14308       l_str VARCHAR2(2000);
14309    BEGIN
14310       IF(p_rules_flag = 1)THEN
14311         cz_pb_mgr.v_new_rul_usg_msk_tbl.DELETE;
14312       ELSE
14313         cz_pb_mgr.v_new_eff_usg_msk_tbl.DELETE;
14314       END IF;
14315 
14316       IF (p_id_to_eff_usg_msk.COUNT > 0)
14317       THEN
14318          FOR eff IN p_id_to_eff_usg_msk.FIRST .. p_id_to_eff_usg_msk.LAST
14319          LOOP
14320             rec_count := rec_count + 1;
14321 
14322             --Bug #5485126 - if the p_rules_flag is set, use the rule usage mask array.
14323 
14324             IF(p_rules_flag = 1)THEN
14325 
14326                l_effective_usage := cz_pb_mgr.v_cz_rule_usage_mask_tbl(eff);
14327             ELSE
14328 
14329                l_effective_usage := cz_pb_mgr.v_cz_effective_usage_mask_tbl(eff);
14330             END IF;
14331 
14332             IF (l_effective_usage <> v_default_eff_usg_mask)
14333             THEN
14334                getUsgNameArray(l_effective_usage, cz_pb_mgr.v_old_usage_name_to_id_map);
14335                l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.FIRST;
14336 
14337                WHILE(l_index_usage_name_to_id IS NOT NULL)
14338                LOOP
14339                   l_usage_name := cz_pb_mgr.v_old_usage_name_to_id_map(l_index_usage_name_to_id);
14340                   l_usage_id := NULL;
14341                   l_usage_desc := NULL;
14342                   -- At this point we will check if the usage is already been processed
14343 				  -- we will maintain two arrays
14344 				  -- 1. having list of all the usage name processed
14345 				  -- 2. usage name to new remote usage id that is commited.
14346 		          IF (cz_pb_mgr.g_usg_name_processed.COUNT = 0 OR (NOT cz_pb_mgr.g_usg_name_processed.EXISTS(l_usage_name))) THEN
14347                     OPEN remote_usage FOR    'Select model_usage_id, name, description '
14348                                           || ' '
14349                                           || 'from cz_model_usages'
14350                                           || cz_pb_mgr.v_db_link
14351                                           || ' t'
14352                                           || ' '
14353                                           || 'where t.name = :1' USING l_usage_name;
14354 
14355                     FETCH remote_usage
14356                      INTO l_usage_id, l_usage_name, l_usage_desc;
14357 
14358                     IF (l_usage_id IS NULL)
14359                     THEN
14360                        OPEN avail_usage_cur FOR 'select min(model_usage_id) from cz_model_usages' || cz_pb_mgr.v_db_link || 'where in_use=''X''';
14361 
14362                        FETCH avail_usage_cur
14363                         INTO l_avail_usage_id;
14364 
14365                        IF (l_avail_usage_id is null)
14366                        THEN
14367                           --Raise migration failure.
14368                           --Proposed: Usage Limit maxed out during the migration process.
14369                           cz_pb_mgr.v_err_message :=
14370                                                   cz_utils.get_text('CZDEV_MAX_USAGES_CREATED_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
14371                           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.resolve_effective_usage_mask', SQLCODE);
14372                           cz_pb_mgr.v_status_code := 0;                                                                             -- MIGRATION_ERROR;
14373                           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14374                           RAISE NO_DATA_FOUND;
14375                        ELSE
14376                           l_usage_id := l_avail_usage_id;
14377                           --Insert into cz_model_usages, use execute immediate
14378                           l_str :=
14379                                 'update cz_model_usages'
14380                              || cz_pb_mgr.v_db_link
14381                              || ' '
14382                              || 'set name = :1,'
14383                              || ' '
14384                              || 'description = :2,'
14385                              || ' '
14386                              || 'in_use = ''1'' '
14387                              || ' '
14388                              || 'where model_usage_id = :3';
14389 
14390                           EXECUTE IMMEDIATE l_str
14391                                       USING l_usage_name, l_usage_desc, l_avail_usage_id;
14392 
14393                           ----------insert into cz_rp_entries
14394                           l_str :=
14395                                 'BEGIN
14396                         	insert into cz_rp_entries'
14397                              || cz_pb_mgr.v_db_link
14398                              || ' ( OBJECT_TYPE'
14399                              || ' '
14400                              || ',OBJECT_ID'
14401                              || ' '
14402                              || ',ENCLOSING_FOLDER'
14403                              || ' '
14404                              || ',NAME'
14405                              || ' '
14406                              || ',DESCRIPTION'
14407                              || ' '
14408                              || ',DELETED_FLAG'
14409                              || ' '
14410                              || ',SEEDED_FLAG'
14411                              || ' '
14412                              || ')'
14413                              || ' '
14414                              || 'VALUES ( ''USG'' '
14415                              || ' '
14416                              || ',:1'
14417                              || ' '
14418                              || ',:2'
14419                              || ' '
14420                              || ',:3'
14421                              || ' '
14422                              || ',:4'
14423                              || ' '
14424                              || ',''0'' '
14425                              || ' '
14426                              || ',''0'');'
14427                              || ' '
14428                              || 'commit;'
14429                              || ' '
14430                              || 'EXCEPTION'
14431                              || ' '
14432                              || 'WHEN OTHERS THEN'
14433                              || ' '
14434                              || 'update cz_rp_entries set deleted_flag = ''0'' where object_id = :1;'
14435                              || ' '
14436                              || 'END;';
14437 
14438                           EXECUTE IMMEDIATE l_str
14439                                       USING l_avail_usage_id, cz_pb_mgr.g_migration_tgt_folder_id, l_usage_name, l_usage_desc;
14440 
14441                           COMMIT;
14442                        END IF;
14443                      END IF;
14444 		     cz_pb_mgr.g_usg_name_processed(l_usage_name) := l_usage_id;
14445 		  END IF;
14446                   l_usage_id := cz_pb_mgr.g_usg_name_processed(l_usage_name);
14447                   buildusagemask(l_usage_id, l_previous_mask);
14448                   l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.NEXT(l_index_usage_name_to_id);
14449                END LOOP;
14450 
14451                IF(p_rules_flag = 1)THEN
14452                   cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := l_previous_mask;
14453                ELSE
14454                   cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := l_previous_mask;
14455                END IF;
14456 
14457                --Add the new usage mask to the array_of_resolved_mask  against the new ps_node_ids.
14458                l_previous_mask := v_default_eff_usg_mask;
14459                cz_pb_mgr.v_old_usage_name_to_id_map.DELETE;
14460             ELSE
14461                IF(p_rules_flag = 1)THEN
14462                  cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
14463                ELSE
14464                  cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
14465                END IF;
14466             END IF;
14467          END LOOP;
14468       END IF;
14469    END resolve_effective_usage_mask;
14470 
14471 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14472 ------procedure to upload ps structure tree
14473    PROCEDURE upload_ps_structure(
14474       p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref
14475      ,p_export_flag IN OUT NOCOPY VARCHAR2
14476      ,x_status IN OUT NOCOPY VARCHAR2
14477    )
14478    AS
14479       v_project_count PLS_INTEGER := 0;
14480       rec_count PLS_INTEGER := 0;
14481       v_cz_model_ref_expls_new_tbl cz_pb_mgr.t_ref;
14482       v_cz_model_ref_expls_old_tbl cz_pb_mgr.t_ref;
14483       plsql_table_list cz_pb_mgr.col_plsql_table_list;
14484    BEGIN
14485       pbdebug := 22037;
14486 
14487       ----logging process times
14488       IF (cz_pb_mgr.g_log_timing = publication_timing)
14489       THEN
14490          log_timing_message('start bulk collect of psnodes');
14491       END IF;
14492 
14493       -- if model migration, the collection of ps_nodes related stuff has already happened
14494       -- before, so don't redo this.
14495       -- IF (p_models_for_export.COUNT > 0) THEN
14496       --   bulk collect of psnodes moved to mm_loadoldpsnodesforitems() ...
14497       -- END IF; -- end if of p_models_for_export > 0
14498       IF (cz_pb_mgr.g_log_timing = publication_timing)
14499       THEN
14500          log_timing_message('end bulk collect of psnodes');
14501          log_timing_message('start insert_eff_sets');
14502       END IF;
14503 
14504       -------------populate effectivity sets table
14505       insert_eff_sets(cz_pb_mgr.v_ps_eff_set_id_tbl
14506                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
14507                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
14508                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
14509                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
14510                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
14511                      ,'Eff sets of ps nodes'
14512                      );
14513       ------clear_tables('cz_rules','ref',cz_pb_mgr.v_status_code);
14514       -----bulk collect old and new rule ids
14515       bulk_collect_rules(p_export_flag
14516                         ,cz_pb_mgr.v_models_to_be_exported
14517                         ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
14518                         ,cz_pb_mgr.v_cz_rules_rule_id_new_ref
14519                         ,cz_pb_mgr.v_cz_rules_rule_id_idx_ref
14520                         ,cz_pb_mgr.v_status_code
14521                         );
14522 
14523       IF (cz_pb_mgr.g_log_timing = publication_timing)
14524       THEN
14525          log_timing_message('end insert_eff_sets');
14526          log_timing_message('start eff sets of ps nodes');
14527       END IF;
14528 
14529       -- resolve effective usage mask for rules
14530       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14531       THEN
14532          resolve_effective_usage_mask(cz_pb_mgr.v_cz_rules_rule_id_old_ref, 1);
14533       END IF;
14534 
14535       ---------resolve eff sets
14536       resolve_ids(cz_pb_mgr.v_ps_eff_set_id_tbl, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff sets of ps nodes');
14537 
14538       IF (cz_pb_mgr.g_log_timing = publication_timing)
14539       THEN
14540          log_timing_message('end eff sets of ps nodes');
14541       END IF;
14542 
14543       -------------insert intl texts for cz_ps_nodes
14544       IF (cz_pb_mgr.g_log_timing = publication_timing)
14545       THEN
14546          log_timing_message('start insert_intl_texts Intl Text of ps nodes');
14547       END IF;
14548 
14549       insert_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, 'Intl Text of ps nodes');
14550 
14551       IF (cz_pb_mgr.g_log_timing = publication_timing)
14552       THEN
14553          log_timing_message('end insert_intl_texts Intl Text of ps nodes');
14554       END IF;
14555 
14556       IF (cz_pb_mgr.g_log_timing = publication_timing)
14557       THEN
14558          log_timing_message('start Intl Text of ps nodes');
14559       END IF;
14560 
14561       resolve_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'intl texts of ps nodes');
14562 
14563       IF (cz_pb_mgr.g_log_timing = publication_timing)
14564       THEN
14565          log_timing_message('end Intl Text of ps nodes');
14566       END IF;
14567 
14568       -----insert violation text ids
14569       IF (cz_pb_mgr.g_log_timing = publication_timing)
14570       THEN
14571          log_timing_message('start insert_intl_texts Violation text of ps nodes');
14572       END IF;
14573 
14574       insert_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, 'Violation text of ps nodes');
14575 
14576       IF (cz_pb_mgr.g_log_timing = publication_timing)
14577       THEN
14578          log_timing_message('end insert_intl_texts Violation text of ps nodes');
14579       END IF;
14580 
14581       -------resolve violation text ids
14582       IF (cz_pb_mgr.g_log_timing = publication_timing)
14583       THEN
14584          log_timing_message('start resolve_intl_texts Violation text of ps nodes');
14585       END IF;
14586 
14587       resolve_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'violation texts of ps nodes');
14588 
14589       IF (cz_pb_mgr.g_log_timing = publication_timing)
14590       THEN
14591          log_timing_message('end resolve_intl_texts Violation text of ps nodes');
14592       END IF;
14593 
14594       -------resolve rule ids
14595       IF (cz_pb_mgr.g_log_timing = publication_timing)
14596       THEN
14597          log_timing_message('start resolve caption rule ids in ps nodes');
14598       END IF;
14599 
14600       resolve_ids(cz_pb_mgr.v_ps_capt_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'caption rule ids of ps nodes');
14601 
14602       IF (cz_pb_mgr.g_log_timing = publication_timing)
14603       THEN
14604          log_timing_message('end resolve resolve caption rule ids in ps nodes');
14605       END IF;
14606 
14607       ------------Resolving ps_ref_id of cz ps nodes
14608       IF (cz_pb_mgr.g_log_timing = publication_timing)
14609       THEN
14610          log_timing_message('start resolve_ids ps_ref_id of cz ps nodes');
14611       END IF;
14612 
14613       -- non-exported psnodes actually loaded and put into the map too, so it would be better to load them early too
14614       -- then no special treatment needed for reference_id, component_id, etc
14615       resolve_ids(cz_pb_mgr.v_ps_refid_old_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'reference_id of cz ps nodes', FLD_PSN_REFERENCE_ID);
14616 
14617       IF (cz_pb_mgr.g_log_timing = publication_timing)
14618       THEN
14619          log_timing_message('end resolve_ids ps_ref_id of cz ps nodes');
14620       END IF;
14621 
14622       ------------Resolving component -ids of ps_nodes
14623       resolve_ids(cz_pb_mgr.v_cz_ps_nodes_comp_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz ps nodes', FLD_PSN_REFERENCE_ID);
14624 
14625       -- resolve effective usage mask for ps nodes.
14626       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14627       THEN
14628          resolve_effective_usage_mask(cz_pb_mgr.v_cz_ps_nodes_old_tbl, 0);
14629       END IF;
14630 
14631       -- to verify: the model referred by reverse connector id would always be reexported regardless of having any
14632       -- change or not, if the model having the reverse connector is exported?
14633       -- otherwise, we need to implement resolver_ref_ids_not_found for this column and call that instead
14634       resolve_ids(cz_pb_mgr.g_ps_reverse_connector_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'psn reverse_connector_id');
14635 
14636       plsql_table_list.DELETE;
14637       rec_count := 1;
14638       plsql_table_list(rec_count).col_name := 'ps_node_id';
14639       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_new_tbl';
14640       rec_count := rec_count + 1;
14641       plsql_table_list(rec_count).col_name := 'devl_project_id';
14642       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_devl_project_tbl';
14643       rec_count := rec_count + 1;
14644       plsql_table_list(rec_count).col_name := 'parent_id';
14645       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_parent_id_tbl';
14646       rec_count := rec_count + 1;
14647       plsql_table_list(rec_count).col_name := 'reference_id';
14648       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_refId_old_tbl';
14649       rec_count := rec_count + 1;
14650       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_eff_set_id_tbl';
14651       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
14652       rec_count := rec_count + 1;
14653       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_intl_old_tbl';
14654       plsql_table_list(rec_count).col_name := 'intl_text_id';
14655       rec_count := rec_count + 1;
14656       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_viol_old_tbl';
14657       plsql_table_list(rec_count).col_name := 'violation_text_id';
14658       rec_count := rec_count + 1;
14659       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_orig_sys_tbl';
14660       plsql_table_list(rec_count).col_name := 'orig_sys_ref';
14661       rec_count := rec_count + 1;
14662       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_path_tbl';
14663       plsql_table_list(rec_count).col_name := 'component_sequence_path';
14664       rec_count := rec_count + 1;
14665       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_id_tbl';
14666       plsql_table_list(rec_count).col_name := 'component_sequence_id';
14667       rec_count := rec_count + 1;
14668       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_capt_rule_tbl';
14669       plsql_table_list(rec_count).col_name := 'displayname_capt_rule_id';
14670       rec_count := rec_count + 1;
14671       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_comp_tbl';
14672       plsql_table_list(rec_count).col_name := 'component_id';
14673       rec_count := rec_count + 1;
14674       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_uits_add_tbl';
14675       plsql_table_list(rec_count).col_name := 'UI_TIMESTAMP_ADD';
14676 
14677       rec_count := rec_count + 1;
14678       plsql_table_list(rec_count).col_name := 'reverse_connector_id';
14679       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_reverse_connector_tbl';
14680 
14681       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14682       THEN
14683          rec_count := rec_count + 1;
14684          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_eff_usg_msk_tbl';
14685          plsql_table_list(rec_count).col_name := 'effective_usage_mask';
14686          mm_resync_ps_items;
14687          mm_resync_ps_item_types; --Bug9180063
14688          rec_count := rec_count + 1;
14689          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_id_tbl';
14690          plsql_table_list(rec_count).col_name := 'item_id';
14691  --Bug9180063 to include item_type_backptr during insertion of data into cz_ps_nodes
14692          rec_count := rec_count + 1;
14693          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_type_id_tbl';
14694          plsql_table_list(rec_count).col_name := 'item_type_backptr';
14695       END IF;
14696 
14697       IF (cz_pb_mgr.g_log_timing = publication_timing)
14698       THEN
14699          log_timing_message('start insert_into_table of cz ps nodes');
14700       END IF;
14701 
14702       insert_into_table('cz_ps_nodes'
14703                        ,'ps_node_id'
14704                        ,cz_pb_mgr.v_db_link
14705                        ,plsql_table_list
14706                        ,'cz_pb_mgr.v_cz_ps_nodes_old_tbl'
14707                        ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14708                        );
14709 
14710       IF (cz_pb_mgr.g_log_timing = publication_timing)
14711       THEN
14712          log_timing_message('end insert_into_table of cz ps nodes');
14713       END IF;
14714 
14715       -----------update reference id of cz_ps_nodes of the target server for the models not exported
14716       IF (cz_pb_mgr.g_log_timing = publication_timing)
14717       THEN
14718          log_timing_message('start update_remote_reference_ids');
14719       END IF;
14720 
14721       update_remote_reference_ids(cz_pb_mgr.v_models_not_to_be_exported
14722                                  ,cz_pb_mgr.v_cz_ps_nodes_new_tbl
14723                                  ,cz_pb_mgr.v_server_id
14724                                  ,cz_pb_mgr.v_status_code
14725                                  );
14726 
14727       IF (cz_pb_mgr.g_log_timing = publication_timing)
14728       THEN
14729          log_timing_message('end update_remote_reference_ids');
14730       END IF;
14731 
14732       --------------Populating cz_model_ref_expls table of the target database
14733       clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
14734 
14735       IF (p_models_for_export.COUNT > 0)
14736       THEN
14737          IF (cz_pb_mgr.g_log_timing = publication_timing)
14738          THEN
14739             log_timing_message('start bulk collect of model_ref_expls');
14740          END IF;
14741 
14742          FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
14743          LOOP
14744             v_cz_model_ref_expls_new_tbl.DELETE;
14745             v_cz_model_ref_expls_old_tbl.DELETE;
14746             clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
14747 
14748             BEGIN
14749                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_ref_expls_seq
14750                                                  , 'cz_model_ref_expls_s.nextval' || cz_pb_mgr.v_db_link
14751                                                  ,cz_pb_mgr.v_oraclesequenceincr
14752                                                  )
14753                      ,model_ref_expl_id, component_id, parent_expl_node_id, child_model_expl_id
14754                      ,referring_node_id, model_id
14755                BULK COLLECT INTO v_cz_model_ref_expls_new_tbl
14756                      ,v_cz_model_ref_expls_old_tbl, cz_pb_mgr.v_component_id_old_tbl, cz_pb_mgr.v_parent_expl_id_tbl, cz_pb_mgr.v_child_expl_id_tbl
14757                      ,cz_pb_mgr.v_referring_node_id_tbl, cz_pb_mgr.v_ref_model_id_tbl
14758                  FROM cz_model_ref_expls t
14759                 WHERE t.model_id = p_models_for_export(i) AND t.deleted_flag = '0';
14760             EXCEPTION
14761                WHEN OTHERS
14762                THEN
14763                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_ref_expls', 'SQLERRM', SQLERRM);
14764                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14765                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14766                   RAISE;
14767             END;
14768 
14769             rec_count := cz_pb_mgr.v_cz_model_ref_expls_new_ref.COUNT;
14770 
14771             IF (v_cz_model_ref_expls_new_tbl.COUNT > 0)
14772             THEN
14773                FOR k IN v_cz_model_ref_expls_new_tbl.FIRST .. v_cz_model_ref_expls_new_tbl.LAST
14774                LOOP
14775                   rec_count := rec_count + 1;
14776                   cz_pb_mgr.v_cz_model_ref_expls_new_ref(rec_count) := v_cz_model_ref_expls_new_tbl(k);
14777                   cz_pb_mgr.v_cz_model_ref_expls_old_ref(rec_count) := v_cz_model_ref_expls_old_tbl(k);
14778                   cz_pb_mgr.v_cz_model_ref_expls_idx_ref(v_cz_model_ref_expls_old_tbl(k)):=v_cz_model_ref_expls_new_tbl(k);
14779                   cz_pb_mgr.v_component_id_old_ref(rec_count) := cz_pb_mgr.v_component_id_old_tbl(k);
14780                   cz_pb_mgr.v_parent_expl_id_ref(rec_count) := cz_pb_mgr.v_parent_expl_id_tbl(k);
14781                   cz_pb_mgr.v_child_expl_id_ref(rec_count) := cz_pb_mgr.v_child_expl_id_tbl(k);
14782                   cz_pb_mgr.v_referring_node_id_ref(rec_count) := cz_pb_mgr.v_referring_node_id_tbl(k);
14783                   cz_pb_mgr.v_ref_model_id_ref(rec_count) := cz_pb_mgr.v_ref_model_id_tbl(k);
14784                END LOOP;
14785             END IF;
14786          END LOOP;                                     /* end loop of FOR I IN p_models_for_export */
14787       END IF;                                          /* end if of p_models_for_export.COUNT > 0 */
14788 
14789       IF (cz_pb_mgr.g_log_timing = publication_timing)
14790       THEN
14791          log_timing_message('end bulk collect of model_ref_expls');
14792       END IF;
14793 
14794       ------------Resolve parent expl ids of model_ref_expls
14795       IF (cz_pb_mgr.g_log_timing = publication_timing)
14796       THEN
14797          log_timing_message('start resolve_ids parent ids of cz_model_ref_expls');
14798       END IF;
14799 
14800       resolve_ids(cz_pb_mgr.v_parent_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'parent ids of cz_model_ref_expls');
14801 
14802       IF (cz_pb_mgr.g_log_timing = publication_timing)
14803       THEN
14804          log_timing_message('end resolve_ids parent ids of cz_model_ref_expls');
14805       END IF;
14806 
14807       -------------resolve model id of model_ref_expls
14808       IF (cz_pb_mgr.g_log_timing = publication_timing)
14809       THEN
14810          log_timing_message('start resolve_ids model id of cz_model_ref_expls');
14811       END IF;
14812 
14813       resolve_ids(cz_pb_mgr.v_ref_model_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz_model_ref_expls');
14814 
14815       IF (cz_pb_mgr.g_log_timing = publication_timing)
14816       THEN
14817          log_timing_message('end resolve_ids model id of cz_model_ref_expls');
14818       END IF;
14819 
14820       ----------resolving referring node ids of model ref expls
14821       IF (cz_pb_mgr.g_log_timing = publication_timing)
14822       THEN
14823          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
14824       END IF;
14825 
14826       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14827                                ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14828                                ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
14829                                ,cz_pb_mgr.v_referring_node_id_ref
14830                                ,'cz_model_ref_expl.referring_node_id'
14831                                ,cz_pb_mgr.v_status_code
14832                                );
14833 
14834       IF (cz_pb_mgr.g_log_timing = publication_timing)
14835       THEN
14836          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
14837       END IF;
14838 
14839       -----------resolve child expl ids
14840       IF (cz_pb_mgr.g_log_timing = publication_timing)
14841       THEN
14842          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
14843       END IF;
14844 
14845       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14846                                ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
14847                                ,cz_pb_mgr.v_cz_model_ref_expls_idx_ref
14848                                ,cz_pb_mgr.v_child_expl_id_ref
14849                                ,'cz_model_ref_expl.child_expl_id'
14850                                ,cz_pb_mgr.v_status_code
14851                                );
14852 
14853       IF (cz_pb_mgr.g_log_timing = publication_timing)
14854       THEN
14855          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
14856       END IF;
14857 
14858       ----------resolving component_id of model ref expls
14859       IF (cz_pb_mgr.g_log_timing = publication_timing)
14860       THEN
14861          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.component_id');
14862       END IF;
14863 
14864       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14865                                ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14866                                ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
14867                                ,cz_pb_mgr.v_component_id_old_ref
14868                                ,'cz_model_ref_expl.component_id'
14869                                ,cz_pb_mgr.v_status_code
14870                                );
14871 
14872       IF (cz_pb_mgr.g_log_timing = publication_timing)
14873       THEN
14874          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.component_id');
14875       END IF;
14876 
14877       ----------populate target root model id
14878       IF (p_models_for_export.COUNT > 0)
14879       THEN
14880          FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
14881          LOOP
14882             IF (p_models_for_export(i) = cz_pb_mgr.v_root_model_id)
14883             THEN
14884                cz_pb_mgr.target_root_model_id := cz_pb_mgr.v_models_to_be_exported_new(i);
14885                EXIT;
14886             END IF;
14887          END LOOP;
14888       END IF;
14889 
14890       --------populate plsql_table_list for model_ref_expls
14891       plsql_table_list.DELETE;
14892       rec_count := 1;
14893       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
14894       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_model_ref_expls_new_ref';
14895       rec_count := rec_count + 1;
14896       plsql_table_list(rec_count).col_name := 'parent_expl_node_id';
14897       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_parent_expl_id_ref';
14898       rec_count := rec_count + 1;
14899       plsql_table_list(rec_count).col_name := 'component_id';
14900       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_component_id_old_ref';
14901       rec_count := rec_count + 1;
14902       plsql_table_list(rec_count).col_name := 'model_id';
14903       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ref_model_id_ref';
14904       rec_count := rec_count + 1;
14905       plsql_table_list(rec_count).col_name := 'referring_node_id';
14906       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_referring_node_id_ref';
14907       rec_count := rec_count + 1;
14908       plsql_table_list(rec_count).col_name := 'child_model_expl_id';
14909       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_child_expl_id_ref';
14910 
14911       IF (cz_pb_mgr.g_log_timing = publication_timing)
14912       THEN
14913          log_timing_message('start insert_into_table cz_model_ref_expls');
14914       END IF;
14915 
14916       insert_into_table('cz_model_ref_expls'
14917                        ,'model_ref_expl_id'
14918                        ,cz_pb_mgr.v_db_link
14919                        ,plsql_table_list
14920                        ,'cz_pb_mgr.v_cz_model_ref_expls_old_ref'
14921                        ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
14922                        );
14923 
14924       IF (cz_pb_mgr.g_log_timing = publication_timing)
14925       THEN
14926          log_timing_message('end insert_into_table cz_model_ref_expls');
14927       END IF;
14928 
14929       -----------------------resolution of non virtual components
14930       IF (cz_pb_mgr.g_log_timing = publication_timing)
14931       THEN
14932          log_timing_message('start resolve_virtual_components');
14933       END IF;
14934 
14935       resolve_virtual_components(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14936                                 ,cz_pb_mgr.v_models_not_to_be_exported
14937                                 ,cz_pb_mgr.v_server_id
14938                                 ,cz_pb_mgr.v_status_code
14939                                 );
14940 
14941       IF (cz_pb_mgr.g_log_timing = publication_timing)
14942       THEN
14943          log_timing_message('end resolve_virtual_components');
14944       END IF;
14945 
14946       -------get func comp spec by expl id
14947       IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
14948       THEN
14949          collect_func_comp_specs;
14950       ELSIF(cz_pb_mgr.v_session_parameter = model_copy)
14951       THEN
14952          IF (cz_pb_mgr.copy_rules = 'YES')
14953          THEN
14954             collect_func_comp_specs;
14955          END IF;
14956       END IF;
14957 
14958       ---------release local pl/sql tables
14959       v_cz_model_ref_expls_new_tbl.DELETE;
14960       v_cz_model_ref_expls_old_tbl.DELETE;
14961    EXCEPTION
14962       WHEN OTHERS
14963       THEN
14964          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14965          x_status := PUBLICATION_ERROR;
14966          RAISE pb_upload_ps_schema;
14967    END upload_ps_structure;                                       /* end of export of product structure */
14968 
14969 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14970    PROCEDURE insert_ui_node_props(p_ui_def_id_tbl IN cz_pb_mgr.t_ref)
14971    AS
14972       l_prop_node_tbl cz_pb_mgr.t_ref;
14973       l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
14974       l_rec_count NUMBER := 0;
14975    BEGIN
14976       IF p_ui_def_id_tbl.COUNT > 0
14977       THEN
14978          cz_pb_mgr.g_ui_node_prop_new_node_tbl.DELETE;
14979          cz_pb_mgr.g_ui_node_prop_old_node_tbl.DELETE;
14980          cz_pb_mgr.g_ui_node_prop_new_uidf_tbl.DELETE;
14981          cz_pb_mgr.g_ui_node_prop_old_uidf_tbl.DELETE;
14982 
14983 	 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14984          FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14985          LOOP
14986             l_prop_node_tbl.DELETE;
14987 
14988             SELECT DISTINCT prop.ui_node_id
14989             BULK COLLECT INTO l_prop_node_tbl
14990                        FROM cz_ui_node_props prop, cz_ui_nodes node
14991                       WHERE prop.ui_def_id = node.ui_def_id
14992                         AND prop.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
14993                         AND node.ui_node_id = prop.ui_node_id
14994                         AND node.deleted_flag = record_not_deleted
14995                         AND prop.deleted_flag = record_not_deleted;
14996 
14997             IF l_prop_node_tbl.COUNT > 0
14998             THEN
14999                l_rec_count := cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT;
15000 
15001                FOR j IN l_prop_node_tbl.FIRST .. l_prop_node_tbl.LAST
15002                LOOP
15003                   l_rec_count := l_rec_count + 1;
15004                   cz_pb_mgr.g_ui_node_prop_new_node_tbl(l_rec_count) := l_prop_node_tbl(j);
15005                   cz_pb_mgr.g_ui_node_prop_old_node_tbl(l_rec_count) := l_prop_node_tbl(j);
15006                   cz_pb_mgr.g_ui_node_prop_new_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
15007                   cz_pb_mgr.g_ui_node_prop_old_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
15008                END LOOP;
15009             END IF;
15010          END LOOP;
15011 	 END IF;
15012 
15013          IF cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT > 0
15014          THEN
15015             resolve_ids(cz_pb_mgr.g_ui_node_prop_new_node_tbl, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'ui node ids of ui node props');
15016             resolve_ids(cz_pb_mgr.g_ui_node_prop_new_uidf_tbl, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui node props');
15017             l_plsql_table_list(1).col_name := 'ui_node_id';
15018             l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_ui_node_prop_new_node_tbl';
15019             l_plsql_table_list(2).col_name := 'ui_def_id';
15020             l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_ui_node_prop_new_uidf_tbl';
15021             insert_into_table('cz_ui_node_props'
15022                              ,'ui_node_id'
15023                              ,'ui_def_id'
15024                              ,cz_pb_mgr.v_db_link
15025                              ,l_plsql_table_list
15026                              ,'cz_pb_mgr.g_ui_node_prop_old_node_tbl'
15027                              ,'cz_pb_mgr.g_ui_node_prop_old_uidf_tbl'
15028                              ,cz_pb_mgr.g_ui_node_prop_old_node_tbl
15029                              ,cz_pb_mgr.g_ui_node_prop_old_uidf_tbl
15030                              );
15031          END IF;
15032       END IF;
15033 
15034       COMMIT;
15035    EXCEPTION
15036       WHEN OTHERS
15037       THEN
15038          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_node_props', 'ERR', SQLERRM);
15039          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.NODEPROPS', SQLCODE);
15040          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15041    END insert_ui_node_props;
15042 
15043 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15044    PROCEDURE synch_master_template
15045    AS
15046       remote_mt ref_cursor;
15047       rec_count NUMBER;
15048       l_mt_gen_id t_ref;
15049       l_mt_old_id t_ref;
15050       l_mt_name t_mt_name;
15051       l_mt_id NUMBER;
15052       mt_idx NUMBER;
15053       plsql_table_list cz_pb_mgr.col_plsql_table_list;
15054       l_rec_count NUMBER;
15055    BEGIN
15056       cz_pb_mgr.v_mt_name.DELETE;
15057       cz_pb_mgr.v_mt_name_ref.DELETE;
15058       cz_pb_mgr.v_mt_gen_id.DELETE;
15059       cz_pb_mgr.v_mt_old_id_tbl.DELETE;
15060       cz_pb_mgr.v_mt_old_only.DELETE;
15061       cz_pb_mgr.v_new_mt_id_ref.DELETE;
15062       cz_pb_mgr.v_new_mt_id_tbl.DELETE;
15063       cz_pb_mgr.g_mt_obj_type.DELETE;
15064 
15065       -- Bug 5510573; 06-Sep-2006; kdande; Added a check to see if cz_pb_mgr.v_cz_ui_defs_old_ref has elements at all and then proceed
15066       IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
15067       FOR ui IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15068       LOOP
15069          -- Andrew is going to provide with a query to fetch master template for given ui def id.
15070          SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq, 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
15071                ,ui_def_id, NAME
15072          BULK COLLECT INTO l_mt_gen_id
15073                ,l_mt_old_id, l_mt_name
15074            FROM cz_ui_defs mstr
15075           WHERE mstr.deleted_flag = '0'
15076             AND mstr.master_template_flag = '1'
15077             AND mstr.seeded_flag = '0'
15078             AND EXISTS(SELECT 1
15079                          FROM cz_ui_defs udf
15080                         WHERE udf.from_master_template_id = mstr.ui_def_id AND ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(ui));
15081 
15082          -- keep a running array for l_mt_names
15083          rec_count := v_mt_name.COUNT;
15084 
15085          IF (l_mt_old_id.COUNT > 0)
15086          THEN
15087             FOR m IN l_mt_old_id.FIRST .. l_mt_old_id.LAST
15088             LOOP
15089                IF (cz_pb_mgr.v_mt_name_ref.COUNT = 0 OR NOT cz_pb_mgr.v_mt_name_ref.EXISTS(l_mt_name(m)))
15090                THEN
15091                   rec_count := rec_count + 1;
15092                   cz_pb_mgr.v_mt_name(rec_count) := l_mt_name(m);
15093                   cz_pb_mgr.v_mt_name_ref(l_mt_name(m)) := m;
15094                   cz_pb_mgr.v_mt_old_id_tbl(rec_count) := l_mt_old_id(m);
15095                   cz_pb_mgr.v_mt_gen_id(rec_count) := l_mt_gen_id(m);
15096                END IF;
15097             END LOOP;
15098          END IF;
15099       END LOOP;
15100       END IF;
15101 
15102       -- loop through the array list to check name on the remote server
15103       IF (cz_pb_mgr.v_mt_name.COUNT > 0)
15104       THEN
15105          rec_count := 0;
15106          cz_pb_mgr.v_mt_old_id_ref.DELETE;
15107 
15108          FOR n IN cz_pb_mgr.v_mt_name.FIRST .. cz_pb_mgr.v_mt_name.LAST
15109          LOOP
15110             --IF ((cz_pb_mgr.v_new_mt_name_to_id_map.COUNT = 0) OR (NOT cz_pb_mgr.v_new_mt_name_to_id_map.exists(cz_pb_mgr.v_mt_name(N))) ) THEN
15111             l_mt_id := NULL;
15112             rec_count := rec_count + 1;
15113 
15114             OPEN remote_mt FOR    'Select ui_def_id'
15115                                || ' '
15116                                || 'from cz_ui_defs'
15117                                || cz_pb_mgr.v_db_link
15118                                || 't'
15119                                || ' '
15120                                || 'where t.deleted_flag = ''0'' and t.master_template_flag = ''1'' and t.name = :1' USING cz_pb_mgr.v_mt_name(n);
15121 
15122             FETCH remote_mt
15123              INTO l_mt_id;
15124 
15125             IF (l_mt_id IS NOT NULL)
15126             THEN
15127                cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := l_mt_id;
15128                cz_pb_mgr.v_mt_id_ref(rec_count) := l_mt_id;
15129             ELSE
15130                cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := cz_pb_mgr.v_mt_gen_id(n);
15131                cz_pb_mgr.v_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
15132                cz_pb_mgr.v_new_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
15133                cz_pb_mgr.v_mt_old_id_ref(rec_count) := cz_pb_mgr.v_mt_old_id_tbl(n);
15134             END IF;
15135          --END IF;
15136          END LOOP;
15137 
15138          rec_count := 0;
15139          cz_pb_mgr.g_mt_obj_type.DELETE;
15140          cz_pb_mgr.g_mt_enclosing_fld_rp_entry.DELETE;
15141          mt_idx := cz_pb_mgr.v_new_mt_id_ref.FIRST;
15142 
15143          WHILE(mt_idx IS NOT NULL)
15144          LOOP
15145             rec_count := rec_count + 1;
15146             cz_pb_mgr.v_new_mt_id_tbl(rec_count) := cz_pb_mgr.v_new_mt_id_ref(mt_idx);
15147             cz_pb_mgr.g_mt_obj_type(rec_count) := 'UMT';
15148             cz_pb_mgr.g_mt_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
15149             mt_idx := cz_pb_mgr.v_new_mt_id_ref.NEXT(mt_idx);
15150          END LOOP;
15151 
15152          IF (cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
15153          THEN
15154               --------populate plsql_table_list for ui_defs
15155             --null values in arrays will cause insert problems
15156             --so pack v_mt_old_id_ref into a non empty array
15157             --it can get into this situation where there are some m
15158             --master templates that need to migrated, but there are some that
15159             --don't need to be migrated.
15160             l_rec_count := 0;
15161 
15162 	    IF (cz_pb_mgr.v_mt_old_id_ref.COUNT > 0) THEN
15163             FOR m IN cz_pb_mgr.v_mt_old_id_ref.FIRST .. cz_pb_mgr.v_mt_old_id_ref.LAST
15164             LOOP
15165                IF (cz_pb_mgr.v_mt_old_id_ref(m) IS NOT NULL)
15166                THEN
15167                   l_rec_count := l_rec_count + 1;
15168                   cz_pb_mgr.v_mt_old_only(l_rec_count) := cz_pb_mgr.v_mt_old_id_ref(m);
15169                END IF;
15170             END LOOP;
15171 	    END IF;
15172 
15173             plsql_table_list.DELETE;
15174             rec_count := 1;
15175             plsql_table_list(rec_count).col_name := 'ui_def_id';
15176             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
15177             insert_into_table('cz_ui_defs', 'ui_def_id', cz_pb_mgr.v_db_link, plsql_table_list, 'cz_pb_mgr.v_mt_old_only', cz_pb_mgr.v_mt_old_only);
15178             ----------begin insert into cz_rp_entries----------------
15179             plsql_table_list.DELETE;
15180             rec_count := 1;
15181             plsql_table_list(rec_count).col_name := 'object_id';
15182             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
15183             rec_count := rec_count + 1;
15184             plsql_table_list(rec_count).col_name := 'object_type';
15185             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_obj_type';
15186             rec_count := rec_count + 1;
15187             plsql_table_list(rec_count).col_name := 'enclosing_folder';
15188             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_enclosing_fld_rp_entry';
15189             insert_into_rp_entries('cz_rp_entries'
15190                                   ,'object_id'
15191                                   ,'object_type'
15192                                   ,cz_pb_mgr.v_db_link
15193                                   ,plsql_table_list
15194                                   ,'cz_pb_mgr.v_mt_old_only'
15195                                   ,'cz_pb_mgr.g_mt_obj_type'
15196                                   ,cz_pb_mgr.v_mt_old_only
15197                                   ,cz_pb_mgr.g_mt_obj_type
15198                                   );
15199          ----------end insert into cz_rp_entries----------------
15200          END IF;
15201       END IF;
15202    END synch_master_template;
15203 
15204 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15205 --------procedure that uploads UI schema
15206    PROCEDURE upload_ui_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2,
15207                               p_copy_nonjradui IN BOOLEAN DEFAULT TRUE)
15208    AS
15209       plsql_table_list cz_pb_mgr.col_plsql_table_list;
15210       rec_count PLS_INTEGER := 0;
15211       v_ui_node_count PLS_INTEGER := 0;
15212       v_cz_ui_defs_old_tbl cz_pb_mgr.t_ref;
15213       v_ui_devl_id_tbl cz_pb_mgr.t_ref;
15214       v_ui_comp_id_tbl cz_pb_mgr.t_ref;
15215       v_ui_rf_id_tbl cz_pb_mgr.t_ref;
15216       v_cz_ui_nodes_new_tbl cz_pb_mgr.t_ref;
15217       v_cz_ui_nodes_old_tbl cz_pb_mgr.t_ref;
15218       v_cz_ui_nodes_ui_def_id_tbl cz_pb_mgr.t_ref;
15219       v_cz_ui_nodes_parent_id_tbl cz_pb_mgr.t_ref;
15220       v_cz_ui_nodes_ui_ref_id_tbl cz_pb_mgr.t_ref;
15221       v_cz_ui_nodes_ps_node_id_tbl cz_pb_mgr.t_ref;
15222       v_cz_ui_nodes_component_id_tbl cz_pb_mgr.t_ref;
15223       v_cz_ui_nodes_ui_dref_id_tbl cz_pb_mgr.t_ref;
15224       v_cz_ui_nodes_expl_id_tbl cz_pb_mgr.t_ref;
15225       v_cz_ui_nodes_fcomp_id_tbl cz_pb_mgr.t_ref;
15226       v_cz_ui_nodes_capt_id_tbl cz_pb_mgr.t_ref;
15227       v_cz_ui_nodes_tool_id_tbl cz_pb_mgr.t_ref;
15228       v_menu_capt_rule_tbl cz_pb_mgr.t_ref;
15229       v_page_capt_rule_tbl cz_pb_mgr.t_ref;
15230       l_from_mt_id_tbl cz_pb_mgr.t_ref;
15231    BEGIN
15232       pbdebug := 22038;
15233 
15234       IF ((cz_pb_mgr.copy_uis <> 'YES') AND(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy))
15235       THEN
15236          cz_pb_mgr.v_root_ui_def_id := -999;
15237       END IF;
15238 
15239       IF (cz_pb_mgr.g_log_timing = publication_timing)
15240       THEN
15241          log_timing_message('start bulk collect of ui defs');
15242       END IF;
15243 
15244       IF ((cz_pb_mgr.v_root_ui_def_id IS NOT NULL) AND(cz_pb_mgr.v_root_ui_def_id <= 0))THEN RETURN; END IF;
15245 
15246          clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
15247 
15248          IF (p_models_for_export.COUNT > 0) THEN
15249             -- not copy non-jrad ui in any conversion session or in a copy session flagged by p_copy_nonjradui
15250             IF NOT (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 OR
15251                     cz_pb_mgr.v_session_parameter=model_copy AND NOT p_copy_nonjradui) THEN
15252               get_source_uis(cz_pb_mgr.v_root_model_id, p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref);
15253             END IF;
15254             get_oa_uis(p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
15255 
15256             --get_oa_tmpls is also called from has_to_be_published.
15257             --However, for model migration, has_to_be_published
15258             --is not called.  So make the call  to get_oa_tmpls here.
15259             IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0 THEN
15260                get_oa_tmpls;
15261             END IF;
15262 
15263             IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
15264             THEN
15265                rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
15266 
15267                FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15268                LOOP
15269                   rec_count := rec_count + 1;
15270                   cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
15271                      cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq
15272                                                 , 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link
15273                                                 ,cz_pb_mgr.v_oraclesequenceincr
15274                                                 );
15275                END LOOP;
15276             END IF;                                                                           /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
15277          END IF;
15278 
15279          IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
15280          THEN
15281             FOR m IN cz_pb_mgr.v_cz_ui_defs_new_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_new_ref.LAST
15282             LOOP
15283                cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.v_cz_ui_defs_old_ref(m)) := cz_pb_mgr.v_cz_ui_defs_new_ref(m);
15284             END LOOP;
15285          END IF;
15286 
15287          get_uis_of_mdls_not_exported(cz_pb_mgr.v_models_not_to_be_exported,
15288                                       cz_pb_mgr.v_cz_ui_defs_idx_ref,
15289                                       cz_pb_mgr.v_server_id,
15290 					                            cz_pb_mgr.v_status_code);
15291 
15292          IF (cz_pb_mgr.g_log_timing = publication_timing)
15293          THEN
15294             log_timing_message('end bulk collect of ui defs');
15295             log_timing_message('start bulk collect of devl_project_ids and component_ids for ui_defs');
15296          END IF;
15297 
15298          ---------get devl_project_ids and component_ids for ui_defs
15299          /* We should really re-architect this portion of the code
15300             we have already queried cz_ui_defs before for oa_style UIs in
15301             get_oa_uis and have the menu_caption_rule_id,page_caption_rule_id,
15302             from_master_template_id.  We need to query it again here because
15303             we don't have these values for DHTML UIs and insert_into_table for
15304             cz_ui_defs will fail.  We should consolidate the querying into one place.
15305          */
15306 
15307          IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
15308          THEN
15309 	   IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
15310             FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15311             LOOP
15312                BEGIN
15313                   v_ui_devl_id_tbl.DELETE;
15314                   v_ui_comp_id_tbl.DELETE;
15315                   v_ui_rf_id_tbl.DELETE;
15316 
15317                   SELECT devl_project_id, component_id, menu_caption_rule_id, page_caption_rule_id, cz_ui_defs.from_master_template_id
15318                   BULK COLLECT INTO v_ui_devl_id_tbl, v_ui_comp_id_tbl, v_menu_capt_rule_tbl, v_page_capt_rule_tbl, l_from_mt_id_tbl
15319                     FROM cz_ui_defs
15320                    WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i) AND cz_ui_defs.deleted_flag = record_not_deleted;
15321 
15322                   rec_count := cz_pb_mgr.v_ui_devl_id_ref.COUNT;
15323 
15324                   IF (v_ui_devl_id_tbl.COUNT > 0)
15325                   THEN
15326                      FOR k IN v_ui_devl_id_tbl.FIRST .. v_ui_devl_id_tbl.LAST
15327                      LOOP
15328                         rec_count := rec_count + 1;
15329                         cz_pb_mgr.v_ui_devl_id_ref(rec_count) := v_ui_devl_id_tbl(k);
15330                         cz_pb_mgr.v_ui_comp_id_ref(rec_count) := v_ui_comp_id_tbl(k);
15331                         cz_pb_mgr.v_ui_defs_mcpt_rule_ref(rec_count) := v_menu_capt_rule_tbl(k);
15332                         cz_pb_mgr.v_ui_defs_pcpt_rule_ref(rec_count) := v_page_capt_rule_tbl(k);
15333                         v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(k);
15334                      END LOOP;
15335                   END IF;
15336                EXCEPTION
15337                   WHEN OTHERS
15338                   THEN
15339                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_defs', 'SQLERRM', SQLERRM);
15340                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
15341                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15342                      RAISE;
15343                END;
15344             END LOOP;                                                                        /* end loop of FOR I IN cz_pb_mgr.v_cz_ui_defs_old_ref */
15345 	   END IF;
15346          END IF;                                                                              /* end if of cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0 */
15347 
15348          IF (cz_pb_mgr.g_log_timing = publication_timing)
15349          THEN
15350             log_timing_message('end bulk collect of devl_project_ids and component_ids for ui_defs');
15351             log_timing_message('start resolve_ids devl project id of cz_ui_defs');
15352          END IF;
15353 
15354          ----------resolve devl_project_ids
15355          resolve_ids(cz_pb_mgr.v_ui_devl_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl project id of cz_ui_defs');
15356 
15357          IF (cz_pb_mgr.g_log_timing = publication_timing)
15358          THEN
15359             log_timing_message('end resolve_ids devl project id of cz_ui_defs');
15360          END IF;
15361 
15362          ----------resolve component_ids
15363          IF (cz_pb_mgr.g_log_timing = publication_timing)
15364          THEN
15365             log_timing_message('start resolve_ids component id of cz_ui_defs');
15366          END IF;
15367 
15368          resolve_ids(cz_pb_mgr.v_ui_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz_ui_defs');
15369 
15370          IF (cz_pb_mgr.g_log_timing = publication_timing)
15371          THEN
15372             log_timing_message('end resolve_ids component id of cz_ui_defs');
15373          END IF;
15374 
15375          ----------resolve component_ids of models not to be exported
15376          IF (cz_pb_mgr.g_log_timing = publication_timing)
15377          THEN
15378             log_timing_message('start component_ids of models not to be exported');
15379          END IF;
15380 
15381          IF (cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0)
15382          THEN
15383             FOR k IN cz_pb_mgr.v_ui_comp_id_ref.FIRST .. cz_pb_mgr.v_ui_comp_id_ref.LAST
15384             LOOP
15385                remote_component_id(cz_pb_mgr.v_ui_comp_id_ref(k)
15386                                   ,cz_pb_mgr.v_models_not_to_be_exported
15387                                   ,cz_pb_mgr.v_server_id
15388                                   ,cz_pb_mgr.v_status_code
15389                                   );
15390             END LOOP;
15391          END IF;            /* end if of cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0 */
15392 
15393          IF (cz_pb_mgr.g_log_timing = publication_timing)
15394          THEN
15395             log_timing_message('end component_ids of models not to be exported');
15396          END IF;
15397 
15398          resolve_ids(cz_pb_mgr.v_ui_defs_mcpt_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'menu caption rule ids of ui defs');
15399          resolve_ids(cz_pb_mgr.v_ui_defs_pcpt_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'page caption rule ids of ui defs');
15400 
15401          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
15402          THEN
15403             synch_master_template;
15404             resolve_ids(cz_pb_mgr.v_master_template_id_ref, cz_pb_mgr.v_mt_old_to_new_id, 'from_master_template_id of uidef', ENTITY_TYPE_UMT);
15405          END IF;
15406 
15407          --------populate plsql_table_list for ui_defs
15408          plsql_table_list.DELETE;
15409          rec_count := 1;
15410          plsql_table_list(rec_count).col_name := 'ui_def_id';
15411          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
15412          rec_count := rec_count + 1;
15413          plsql_table_list(rec_count).col_name := 'devl_project_id';
15414          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_devl_id_ref';
15415          rec_count := rec_count + 1;
15416          plsql_table_list(rec_count).col_name := 'component_id';
15417          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_comp_id_ref';
15418          rec_count := rec_count + 1;
15419          plsql_table_list(rec_count).col_name := 'menu_caption_rule_id';
15420          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_mcpt_rule_ref';
15421          rec_count := rec_count + 1;
15422          plsql_table_list(rec_count).col_name := 'page_caption_rule_id';
15423          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_pcpt_rule_ref';
15424 
15425          ---------insert into cz_ui_defs of target server
15426          IF (cz_pb_mgr.g_log_timing = publication_timing)
15427          THEN
15428             log_timing_message('start insert_into_table cz_ui_defs');
15429          END IF;
15430 
15431          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
15432          THEN
15433             rec_count := rec_count + 1;
15434             plsql_table_list(rec_count).col_name := 'from_master_template_id';
15435             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_master_template_id_ref';
15436          END IF;
15437 
15438          insert_into_table('cz_ui_defs'
15439                           ,'ui_def_id'
15440                           ,cz_pb_mgr.v_db_link
15441                           ,plsql_table_list
15442                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
15443                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
15444                           );
15445 
15446          IF (cz_pb_mgr.g_log_timing = publication_timing)
15447          THEN
15448             log_timing_message('end insert_into_table cz_ui_defs');
15449          END IF;
15450 
15451          ------export oa uis
15452          IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0) THEN
15453             export_oa_uis;
15454          END IF;
15455 
15456          --------populate plsql_table_list for ui_properties
15457          plsql_table_list.DELETE;
15458          rec_count := 1;
15459          plsql_table_list(rec_count).col_name := 'ui_def_id';
15460          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
15461 
15462          ------------insert into cz_ui_properties  of target server
15463          IF (cz_pb_mgr.g_log_timing = publication_timing)
15464          THEN
15465             log_timing_message('start insert_into_table cz_ui_properties');
15466          END IF;
15467 
15468          insert_into_table('cz_ui_properties'
15469                           ,'ui_def_id'
15470                           ,cz_pb_mgr.v_db_link
15471                           ,plsql_table_list
15472                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
15473                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
15474                           );
15475 
15476          IF (cz_pb_mgr.g_log_timing = publication_timing)
15477          THEN
15478             log_timing_message('end insert_into_table cz_ui_properties');
15479          END IF;
15480 
15481          ----------insert ids of cz_ui_nodes
15482          clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
15483 
15484          IF (cz_pb_mgr.g_log_timing = publication_timing)
15485          THEN
15486             log_timing_message('start bulk collect of cz_ui_nodes');
15487          END IF;
15488 
15489          IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
15490          THEN
15491             FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15492             LOOP
15493                v_cz_ui_nodes_new_tbl.DELETE;
15494                v_cz_ui_nodes_old_tbl.DELETE;
15495                v_cz_ui_nodes_ui_def_id_tbl.DELETE;
15496                v_cz_ui_nodes_parent_id_tbl.DELETE;
15497                v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
15498                v_cz_ui_nodes_ps_node_id_tbl.DELETE;
15499                v_cz_ui_nodes_component_id_tbl.DELETE;
15500                v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
15501                v_cz_ui_nodes_expl_id_tbl.DELETE;
15502                v_cz_ui_nodes_fcomp_id_tbl.DELETE;
15503                v_cz_ui_nodes_capt_id_tbl.DELETE;
15504                v_cz_ui_nodes_tool_id_tbl.DELETE;
15505 
15506                BEGIN
15507                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_nodes_seq
15508                                                     , 'cz_ui_nodes_s.nextval' || cz_pb_mgr.v_db_link
15509                                                     ,cz_pb_mgr.v_oraclesequenceincr
15510                                                     )
15511                         ,ui_node_id, ui_def_id, parent_id, ui_node_ref_id
15512                         ,ui_def_ref_id, ps_node_id, component_id, model_ref_expl_id
15513                         ,func_comp_id, caption_id, tool_tip_id
15514                   BULK COLLECT INTO v_cz_ui_nodes_new_tbl
15515                         ,v_cz_ui_nodes_old_tbl, v_cz_ui_nodes_ui_def_id_tbl, v_cz_ui_nodes_parent_id_tbl, v_cz_ui_nodes_ui_ref_id_tbl
15516                         ,v_cz_ui_nodes_ui_dref_id_tbl, v_cz_ui_nodes_ps_node_id_tbl, v_cz_ui_nodes_component_id_tbl, v_cz_ui_nodes_expl_id_tbl
15517                         ,v_cz_ui_nodes_fcomp_id_tbl, v_cz_ui_nodes_capt_id_tbl, v_cz_ui_nodes_tool_id_tbl
15518                     FROM cz_ui_nodes
15519                    WHERE cz_ui_nodes.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i) AND cz_ui_nodes.deleted_flag = record_not_deleted;
15520                EXCEPTION
15521                   WHEN NO_DATA_FOUND
15522                   THEN
15523                      cz_pb_mgr.v_err_message := 'No ui nodes found for : ' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_old_ref(i));
15524                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODES', SQLCODE);
15525                   WHEN OTHERS
15526                   THEN
15527                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_nodes', 'SQLERRM', SQLERRM);
15528                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
15529                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15530                      RAISE;
15531                END;
15532 
15533                IF (v_cz_ui_nodes_new_tbl.COUNT > 0)
15534                THEN
15535                   FOR k IN v_cz_ui_nodes_new_tbl.FIRST .. v_cz_ui_nodes_new_tbl.LAST
15536                   LOOP
15537                      v_ui_node_count := cz_pb_mgr.v_cz_ui_nodes_new_ref.COUNT + 1;
15538                      cz_pb_mgr.v_cz_ui_nodes_new_ref(v_ui_node_count) := v_cz_ui_nodes_new_tbl(k);
15539                      cz_pb_mgr.v_cz_ui_nodes_old_ref(v_ui_node_count) := v_cz_ui_nodes_old_tbl(k);
15540                      cz_pb_mgr.v_cz_ui_nodes_idx_ref(v_cz_ui_nodes_old_tbl(k)):=v_cz_ui_nodes_new_tbl(k);
15541                      cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_def_id_tbl(k);
15542                      cz_pb_mgr.v_cz_ui_nodes_parent_id_ref(v_ui_node_count) := v_cz_ui_nodes_parent_id_tbl(k);
15543                      cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_ref_id_tbl(k);
15544                      cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref(v_ui_node_count) := v_cz_ui_nodes_ps_node_id_tbl(k);
15545                      cz_pb_mgr.v_cz_ui_nodes_component_id_ref(v_ui_node_count) := v_cz_ui_nodes_component_id_tbl(k);
15546                      cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_dref_id_tbl(k);
15547                      cz_pb_mgr.v_cz_ui_nodes_expl_id_ref(v_ui_node_count) := v_cz_ui_nodes_expl_id_tbl(k);
15548                      cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref(v_ui_node_count) := v_cz_ui_nodes_fcomp_id_tbl(k);
15549                      cz_pb_mgr.v_cz_ui_nodes_capt_id_ref(v_ui_node_count) := v_cz_ui_nodes_capt_id_tbl(k);
15550                      cz_pb_mgr.v_cz_ui_nodes_tool_id_ref(v_ui_node_count) := v_cz_ui_nodes_tool_id_tbl(k);
15551                   END LOOP;
15552                END IF;                                                                                 /* end if of v_cz_ui_nodes_new_tbl.COUNT > 0 */
15553             END LOOP;
15554          END IF;                                                                              /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
15555 
15556          IF (cz_pb_mgr.g_log_timing = publication_timing)
15557          THEN
15558             log_timing_message('end bulk collect of cz_ui_nodes');
15559          END IF;
15560 
15561          ----intl texts of ui nodes
15562          IF (cz_pb_mgr.g_log_timing = publication_timing)
15563          THEN
15564             log_timing_message('start insert_intl_texts caption ids of ui nodes');
15565          END IF;
15566 
15567          insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, 'Caption ids of ui nodes');
15568 
15569          IF (cz_pb_mgr.g_log_timing = publication_timing)
15570          THEN
15571             log_timing_message('end insert_intl_texts caption ids of ui nodes');
15572          END IF;
15573 
15574          -----resolve caption ids
15575          IF (cz_pb_mgr.g_log_timing = publication_timing)
15576          THEN
15577             log_timing_message('start resolve_intl_texts caption ids of ui nodes');
15578          END IF;
15579 
15580          resolve_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of ui nodes');
15581 
15582          IF (cz_pb_mgr.g_log_timing = publication_timing)
15583          THEN
15584             log_timing_message('end resolve_intl_texts caption ids of ui nodes');
15585          END IF;
15586 
15587          -----insert tool tip ids
15588          IF (cz_pb_mgr.g_log_timing = publication_timing)
15589          THEN
15590             log_timing_message('start insert_intl_texts Tool tip ids of ui nodes');
15591          END IF;
15592 
15593          insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, 'Tool tip ids of ui nodes');
15594 
15595          IF (cz_pb_mgr.g_log_timing = publication_timing)
15596          THEN
15597             log_timing_message('end insert_intl_texts Tool tip ids of ui nodes');
15598          END IF;
15599 
15600          ---------resolve tool tip ids
15601          IF (cz_pb_mgr.g_log_timing = publication_timing)
15602          THEN
15603             log_timing_message('start resolve_intl_texts tool tip ids of ui nodes');
15604          END IF;
15605 
15606          resolve_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'tool tip ids of ui nodes');
15607 
15608          IF (cz_pb_mgr.g_log_timing = publication_timing)
15609          THEN
15610             log_timing_message('end resolve_intl_texts tool tip ids of ui nodes');
15611          END IF;
15612 
15613          ---------resolve ui def ids of ui nodes
15614          IF (cz_pb_mgr.g_log_timing = publication_timing)
15615          THEN
15616             log_timing_message('start resolve_ids ui def ids of ui nodes');
15617          END IF;
15618 
15619          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui nodes');
15620 
15621          IF (cz_pb_mgr.g_log_timing = publication_timing)
15622          THEN
15623             log_timing_message('end resolve_ids ui def ids of ui nodes');
15624          END IF;
15625 
15626          ---------resolve parent ids of ui nodes
15627          IF (cz_pb_mgr.g_log_timing = publication_timing)
15628          THEN
15629             log_timing_message('start resolve_ids parent ids of ui nodes');
15630          END IF;
15631 
15632          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_parent_id_ref, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'parent ids of ui nodes');
15633 
15634          IF (cz_pb_mgr.g_log_timing = publication_timing)
15635          THEN
15636             log_timing_message('end resolve_ids parent ids of ui nodes');
15637          END IF;
15638 
15639          ---------resolve ui node ref ids of ui nodes
15640          IF (cz_pb_mgr.g_log_timing = publication_timing)
15641          THEN
15642             log_timing_message('start resolve_ids ui node ref ids of ui nodes');
15643          END IF;
15644 
15645          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'ui node ref ids of ui nodes', FLD_IGNORE_NOW);
15646 
15647          IF (cz_pb_mgr.g_log_timing = publication_timing)
15648          THEN
15649             log_timing_message('end resolve_ids ui node ref ids of ui nodes');
15650          END IF;
15651 
15652          ---------resolve ps node ref ids of ui nodes
15653          IF (cz_pb_mgr.g_log_timing = publication_timing)
15654          THEN
15655             log_timing_message('start resolve_ids ps node ids of ui nodes');
15656          END IF;
15657 
15658          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ps node ids of ui nodes');
15659 
15660          IF (cz_pb_mgr.g_log_timing = publication_timing)
15661          THEN
15662             log_timing_message('end resolve_ids ps node ids of ui nodes');
15663          END IF;
15664 
15665          ---------resolve component ids of ui nodes
15666          IF (cz_pb_mgr.g_log_timing = publication_timing)
15667          THEN
15668             log_timing_message('start resolve_ids component ids of ui nodes');
15669          END IF;
15670 
15671          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_component_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component ids of ui nodes');
15672 
15673          IF (cz_pb_mgr.g_log_timing = publication_timing)
15674          THEN
15675             log_timing_message('end resolve_ids component ids of ui nodes');
15676             log_timing_message('start resolve_ids model ref expl id of cz_ui nodes');
15677          END IF;
15678 
15679          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of cz_ui nodes');
15680 
15681          IF (cz_pb_mgr.g_log_timing = publication_timing)
15682          THEN
15683             log_timing_message('end resolve_ids model ref expl id of cz_ui nodes');
15684             log_timing_message('start resolve_ids func comp ids of ui nodes');
15685          END IF;
15686 
15687          ---------resolve func comp ids of ui nodes
15688          resolve_ids(cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref, cz_pb_mgr.v_cz_func_comp_idx_ref, 'func comp ids of ui nodes');
15689 
15690          IF (cz_pb_mgr.g_log_timing = publication_timing)
15691          THEN
15692             log_timing_message('end resolve_ids func comp ids of ui nodes');
15693             log_timing_message('start resolve_ref_ids_not_found');
15694          END IF;
15695 
15696          ---------resolve ui_def_ref_id
15697          -- should call resolve_ids instead
15698          resolve_ref_ids_not_found(cz_pb_mgr.v_cz_ui_nodes_new_ref
15699                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
15700                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
15701                                   ,cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref
15702                                   ,'cz_ui_nodes.ui_def_ref_id'
15703                                   ,cz_pb_mgr.v_status_code
15704                                   );
15705 
15706          IF (cz_pb_mgr.g_log_timing = publication_timing)
15707          THEN
15708             log_timing_message('end resolve_ref_ids_not_found');
15709             log_timing_message('start resolve_remote_ui_nodes');
15710          END IF;
15711 
15712          ----------resolve remote ui_node_ids
15713          resolve_remote_ui_nodes(cz_pb_mgr.v_cz_ui_nodes_new_ref
15714                                 ,cz_pb_mgr.v_models_not_to_be_exported
15715                                 ,cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref
15716                                 ,cz_pb_mgr.v_server_id
15717                                 ,cz_pb_mgr.v_status_code
15718                                 );
15719 
15720          IF (cz_pb_mgr.g_log_timing = publication_timing)
15721          THEN
15722             log_timing_message('end resolve_remote_ui_nodes');
15723          END IF;
15724 
15725          --------populate plsql_table_list for ui_nodes
15726          plsql_table_list.DELETE;
15727          rec_count := 1;
15728          plsql_table_list(rec_count).col_name := 'ui_node_id';
15729          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_new_ref';
15730          rec_count := rec_count + 1;
15731          plsql_table_list(rec_count).col_name := 'ui_def_id';
15732          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref';
15733          rec_count := rec_count + 1;
15734          plsql_table_list(rec_count).col_name := 'parent_id';
15735          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_parent_id_ref';
15736          rec_count := rec_count + 1;
15737          plsql_table_list(rec_count).col_name := 'component_id';
15738          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_component_id_ref';
15739          rec_count := rec_count + 1;
15740          plsql_table_list(rec_count).col_name := 'ps_node_id';
15741          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref';
15742          rec_count := rec_count + 1;
15743          plsql_table_list(rec_count).col_name := 'ui_node_ref_id';
15744          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref';
15745          rec_count := rec_count + 1;
15746          plsql_table_list(rec_count).col_name := 'ui_def_ref_id';
15747          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref';
15748          rec_count := rec_count + 1;
15749          plsql_table_list(rec_count).col_name := 'func_comp_id';
15750          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref';
15751          rec_count := rec_count + 1;
15752          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15753          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_expl_id_ref';
15754          rec_count := rec_count + 1;
15755          plsql_table_list(rec_count).col_name := 'caption_id';
15756          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_capt_id_ref';
15757          rec_count := rec_count + 1;
15758          plsql_table_list(rec_count).col_name := 'tool_tip_id';
15759          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_tool_id_ref';
15760 
15761          IF (cz_pb_mgr.g_log_timing = publication_timing)
15762          THEN
15763             log_timing_message('start insert_into_table cz_ui_nodes');
15764          END IF;
15765 
15766          -----------insert into cz_ui_nodes of target server
15767          insert_into_table('cz_ui_nodes'
15768                           ,'ui_node_id'
15769                           ,cz_pb_mgr.v_db_link
15770                           ,plsql_table_list
15771                           ,'cz_pb_mgr.v_cz_ui_nodes_old_ref'
15772                           ,cz_pb_mgr.v_cz_ui_nodes_old_ref
15773                           );
15774 
15775          IF (cz_pb_mgr.g_log_timing = publication_timing)
15776          THEN
15777             log_timing_message('end insert_into_table cz_ui_nodes');
15778          END IF;
15779 
15780          --------populate plsql_table_list for ui_node_props
15781          IF (cz_pb_mgr.g_log_timing = publication_timing)
15782          THEN
15783             log_timing_message('start insert_into_table cz_ui_node_props');
15784          END IF;
15785 
15786          insert_ui_node_props(cz_pb_mgr.v_cz_ui_defs_old_ref);
15787 
15788          IF (cz_pb_mgr.g_log_timing = publication_timing)
15789          THEN
15790             log_timing_message('end insert_into_table cz_ui_node_props');
15791          END IF;
15792 
15793          -------------release local pl/sql tables
15794          v_cz_ui_nodes_new_tbl.DELETE;
15795          v_cz_ui_nodes_old_tbl.DELETE;
15796          v_cz_ui_nodes_ui_def_id_tbl.DELETE;
15797          v_cz_ui_nodes_parent_id_tbl.DELETE;
15798          v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
15799          v_cz_ui_nodes_ps_node_id_tbl.DELETE;
15800          v_cz_ui_nodes_component_id_tbl.DELETE;
15801          v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
15802          v_cz_ui_nodes_expl_id_tbl.DELETE;
15803          v_cz_ui_nodes_fcomp_id_tbl.DELETE;
15804 
15805    EXCEPTION
15806       WHEN OTHERS
15807       THEN
15808          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
15809          x_status := PUBLICATION_ERROR;
15810          RAISE pb_upload_ui_schema;
15811    END upload_ui_schema;  /* end of upload of UI schema */
15812 
15813 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15814 --------procedure to upload item sub-schema
15815    PROCEDURE upload_item_schema(p_ps_nodes_array IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2)
15816    AS
15817       v_property_count PLS_INTEGER := 0;
15818       rec_count PLS_INTEGER := 0;
15819       v_remote_prop_tbl cz_pb_mgr.t_ref;
15820       l_data_type_tbl cz_pb_mgr.t_ref;
15821       l_def_num_value_tbl cz_pb_mgr.t_ref;
15822       l_old_psnode_id NUMBER;
15823    BEGIN
15824 
15825       ------------------insert data into cz_ps_prop_vals
15826       clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
15827       -------9812709-------------------------------------------------------------------------------------
15828       IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15829          log_timing_message('vBulkSelectInsert value : ' || vBulkSelectInsert);
15830       END IF;
15831 
15832       IF(vBulkSelectInsert = 'YES')THEN
15833 
15834          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15835             log_timing_message('start bulk collect method remote_bulk_get_all_properties ');
15836 	 END IF;
15837 
15838 	      remote_bulk_get_all_properties;
15839       ELSE
15840           IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15841             log_timing_message('start bulk collect method get_all_properties');
15842 	  END IF;
15843 
15844 	  get_all_properties;
15845       END IF;
15846 
15847       IF (cz_pb_mgr.g_log_timing = publication_timing)
15848       THEN
15849          log_timing_message('end bulk collect from cz_psnode_propval_v');
15850       END IF;
15851 
15852       IF (cz_pb_mgr.g_log_timing = publication_timing)
15853       THEN
15854          log_timing_message('start resolve psnodes of prop vals');
15855       END IF;
15856 
15857       -----resolve psnodes of prop vals
15858       resolve_ids(cz_pb_mgr.v_prop_vals_node_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ps node id of prop vals');
15859 
15860       -- BUG 11685105 - update the structure with new ps_node_ids
15861       IF (cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0) THEN
15862          FOR k IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST
15863          LOOP
15864             cz_pb_mgr.v_psnode_propval_tbl(k).new_ps_node_id := cz_pb_mgr.v_prop_vals_node_ref(k);
15865          END LOOP;
15866       END IF;
15867       -- BUG 11685105
15868 
15869       IF (cz_pb_mgr.g_log_timing = publication_timing)
15870       THEN
15871          log_timing_message('end resolve psnodes of prop vals');
15872       END IF;
15873 
15874       ----resolve prop num value for translatable text props
15875       IF (cz_pb_mgr.g_log_timing = publication_timing)
15876       THEN
15877          log_timing_message('start resolve prop num value');
15878       END IF;
15879 
15880       IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0 AND
15881          (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0)) THEN
15882          FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
15883          LOOP
15884             IF  cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
15885                (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
15886                 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
15887                rec_count := rec_count + 1;
15888                cz_pb_mgr.v_prop_vals_intl_text_ref(rec_count) := cz_pb_mgr.v_prop_vals_data_num_ref(intltext);
15889             END IF;
15890          END LOOP;
15891       END IF;
15892 
15893       IF (cz_pb_mgr.g_log_timing = publication_timing)
15894       THEN
15895          log_timing_message('end resolve prop num value');
15896       END IF;
15897 
15898 /*insert tranlateable property related intls for publication or local migration. Remote Migration will be dealt separately*/
15899       -- v_prop_vals_intl_text_ref not used by remote migration
15900       IF cz_pb_mgr.v_prop_vals_intl_text_ref.COUNT > 0 THEN
15901 
15902         IF (cz_pb_mgr.g_log_timing = publication_timing)
15903         THEN
15904            log_timing_message('start insert texts for prop num value');
15905         END IF;
15906 
15907         -- Fix bug 11685105
15908         --insert_intl_texts(cz_pb_mgr.v_prop_vals_intl_text_ref, 'prop num value of cz prop vals');
15909 	--Instead of cz_pb_mgr.v_prop_vals_intl_text_ref we will send cz_pb_mgr.v_prop_vals_data_num_ref
15910 	--As the insert_intl_texts will check for the data type 8 and process it.
15911 
15912         insert_intl_texts(cz_pb_mgr.v_prop_vals_data_num_ref, 'prop num value of cz prop vals');
15913 
15914         IF (cz_pb_mgr.g_log_timing = publication_timing)
15915         THEN
15916            log_timing_message('end insert texts for prop num value');
15917         END IF;
15918 
15919         IF (cz_pb_mgr.g_log_timing = publication_timing)
15920         THEN
15921            log_timing_message('start resolve cz_pb_mgr.v_prop_vals_data_num_ref');
15922         END IF;
15923 
15924         IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0)
15925         THEN
15926            FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
15927            LOOP
15928               IF  cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
15929                   cz_pb_mgr.v_prop_vals_data_num_ref(intltext) IS NOT NULL AND
15930                  (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
15931                   cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
15932  		  IF (cz_pb_mgr.v_psnode_propval_tbl(intltext).new_property_num_value IS NOT NULL)
15933 		  THEN
15934                     cz_pb_mgr.v_prop_vals_data_num_ref(intltext) := cz_pb_mgr.v_psnode_propval_tbl(intltext).new_property_num_value; -- BUG11685105
15935 		  ELSE
15936                     cz_pb_mgr.v_prop_vals_data_num_ref(intltext) := cz_pb_mgr.v_cz_intl_text_idx_ref(cz_pb_mgr.v_prop_vals_data_num_ref(intltext));
15937                   END IF;
15938               END IF;
15939            END LOOP;
15940         END IF;
15941       END IF;
15942 
15943       IF (cz_pb_mgr.g_log_timing = publication_timing)
15944       THEN
15945          log_timing_message('end resolve cz_pb_mgr.v_prop_vals_data_num_ref');
15946       END IF;
15947 
15948       IF (cz_pb_mgr.g_log_timing = publication_timing)
15949       THEN
15950          log_timing_message('start insert_into_ps_prop_vals');
15951       END IF;
15952 
15953       -- If this is remote model migration, we need to synchronize the properties before
15954       -- we insert into the target machine
15955       -- that will be done as part of insert item schema
15956       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0) THEN
15957          ------insert into cz_ps_prop_vals
15958       ------Srinik---------------------------------------
15959 
15960        IF cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model THEN
15961 
15962 	  IF(vBulkSelectInsert = 'YES')THEN
15963              IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15964                 log_timing_message('start bulk remote bulk insert remote_insert_into_ps_prop_vals; ');
15965              END IF;
15966 
15967             rm_insert_into_ps_prop_vals;
15968          ELSE
15969 	     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15970                log_timing_message('start normal insert procedure calling insert_into_ps_prop_vals');
15971 	     END IF;
15972 	   insert_into_ps_prop_vals;
15973 
15974 	 END IF;
15975 
15976        ELSE
15977            mc_insert_pspropvals;
15978 
15979        END IF;
15980 
15981          IF (cz_pb_mgr.g_log_timing = publication_timing)
15982          THEN
15983             log_timing_message('end insert_into_ps_prop_vals');
15984          END IF;
15985 
15986          ---------release pl/sql tables
15987          clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
15988          clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
15989       END IF;
15990 
15991       ------------ populate item sub schema
15992       IF (cz_pb_mgr.v_server_id <> 0)
15993       THEN
15994          insert_item_schema;
15995 
15996          -- if model migration, the tables were not cleared before,
15997          -- they are being taken care of at this stage
15998          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
15999          THEN
16000             ---------release pl/sql tables
16001             clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
16002             clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
16003          END IF;
16004 
16005          ----------refresh model usages
16006          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
16007          THEN
16008             load_usages;
16009          END IF;
16010 
16011          ---------delete pl/sql tables
16012          clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
16013          clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
16014       END IF;                       /* end if of cz_pb_mgr.v_server_id <> 0 */
16015    EXCEPTION
16016       WHEN OTHERS
16017       THEN
16018          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
16019          x_status := PUBLICATION_ERROR;
16020          RAISE pb_upload_item_schema;
16021    END upload_item_schema;          /* end of upload of ITEM schema */
16022 
16023 --------------------------------------------------------------------------------
16024 PROCEDURE copy_fce_files IS
16025   l_oldid_tbl  t_ref;
16026   l_newid_tbl  t_ref;
16027   l_comid_tbl  t_ref;
16028   l_count      PLS_INTEGER := 0;
16029   l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
16030 BEGIN
16031   FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
16032     l_newid_tbl.DELETE;
16033     l_oldid_tbl.DELETE;
16034     l_comid_tbl.DELETE;
16035 
16036     SELECT cz_pb_mgr.sequence_generate(CZ_FCE_FILES_SEQ
16037                                       ,'CZ_FCE_FILES_S.NEXTVAL' || cz_pb_mgr.v_db_link
16038                                       ,cz_pb_mgr.v_oraclesequenceincr
16039                                       ),
16040            fce_file_id, component_id
16041     BULK COLLECT INTO l_newid_tbl, l_oldid_tbl, l_comid_tbl
16042     FROM cz_fce_files
16043     WHERE deleted_flag = '0' AND component_id = cz_pb_mgr.v_models_to_be_exported(i);
16044 
16045     IF l_newid_tbl.COUNT > 0 THEN
16046       FOR j IN l_newid_tbl.FIRST .. l_newid_tbl.LAST LOOP
16047         l_count := l_count + 1;
16048         cz_pb_mgr.g_fcefile_new_id_tbl(l_count) := l_newid_tbl(j);
16049         cz_pb_mgr.g_fcefile_old_id_tbl(l_count) := l_oldid_tbl(j);
16050         cz_pb_mgr.g_fcefile_compid_tbl(l_count) := l_comid_tbl(j);
16051       END LOOP;
16052     END IF;
16053   END LOOP;
16054 
16055   resolve_ids(cz_pb_mgr.g_fcefile_compid_tbl,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'component id of fce files');
16056 
16057   l_plsql_table_list(1).col_name   := 'FCE_FILE_ID';
16058   l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_fcefile_new_id_tbl';
16059   l_plsql_table_list(2).col_name   := 'COMPONENT_ID';
16060   l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_fcefile_compid_tbl';
16061 
16062   insert_into_table('CZ_FCE_FILES'
16063                    ,'FCE_FILE_ID'
16064                    , cz_pb_mgr.v_db_link
16065                    , l_plsql_table_list
16066                    ,'cz_pb_mgr.g_fcefile_old_id_tbl'
16067                    , cz_pb_mgr.g_fcefile_old_id_tbl
16068                    );
16069 END copy_fce_files;
16070 
16071 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16072 -----procedure to insert rules
16073    PROCEDURE insert_rules(p_copy_rules_flag IN VARCHAR2, p_model_root_folder_map IN cz_pb_mgr.t_ref_idx_vc2)
16074    IS
16075       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16076       rec_count NUMBER := 0;
16077    BEGIN
16078       ---------------reason id of cz rules
16079       insert_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, 'Reason ids of cz rules');
16080       --------resolve reason ids
16081       resolve_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'reason id of cz rules');
16082 
16083       ---------------unsatisfied message of cz rules
16084       insert_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, 'Unsatisfied message ids of cz rules');
16085       ---------resolve unsatisfied message ids
16086       resolve_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'unmsg id of cz rules');
16087 
16088       ------------populate effectivity set ids for cz rules
16089       insert_eff_sets(cz_pb_mgr.v_cz_rules_eff_id_ref
16090                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
16091                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
16092                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
16093                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
16094                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
16095                      ,'Eff sets of cz rules'
16096                      );
16097 
16098       export_signatures(cz_pb_mgr.v_cz_rules_sig_ref);
16099       -------------Resolve sig id of cz_rules
16100       resolve_ids(cz_pb_mgr.v_cz_rules_sig_ref, cz_pb_mgr.v_sig_idx_ref, 'sig id of cz rules', ENTITY_TYPE_SIGNATURE);
16101       ----------resolve_eff_sets;
16102       resolve_ids(cz_pb_mgr.v_cz_rules_eff_id_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff sets of cz rules');
16103 
16104       -------------Resolve rule_folder_id of cz_rules
16105       -- if copy rule db setting is not yes, publishing still copies CXs and FCs but only copies
16106       -- the root rule folder of a model, so we will put such rules under root folder in tgt model
16107       -- note we do not want to leave rule folders unresolved because it may cause problem in developer
16108       IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16109         FOR i IN cz_pb_mgr.v_cz_rules_rf_id_ref.FIRST .. cz_pb_mgr.v_cz_rules_rf_id_ref.LAST LOOP
16110           IF cz_pb_mgr.v_cz_rules_rf_id_ref(i)<>0 THEN
16111             cz_pb_mgr.v_cz_rules_rf_id_ref(i):=p_model_root_folder_map(cz_pb_mgr.v_cz_rules_proj_id_ref(i));
16112           END IF;
16113         END LOOP;
16114       END IF;
16115       resolve_ids(cz_pb_mgr.v_cz_rules_rf_id_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'rule folder ids of cz rules');
16116 
16117       -------------Resolve devl_project_id of cz_rules
16118       resolve_ids(cz_pb_mgr.v_cz_rules_proj_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl_project_id of cz rules');
16119       -------------Resolve component_id of cz_rules
16120       resolve_ids(cz_pb_mgr.v_cz_rules_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component_id of cz rules', FLD_RULE_COMPONENT_ID);
16121 
16122       -------------Resolve expl id of cz_rules
16123       resolve_ids(cz_pb_mgr.v_cz_rules_expl_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl id of cz rules');
16124       resolve_ids(cz_pb_mgr.v_cz_rules_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def id of cz rules');
16125       -------------populate plsql_table_list for cz rules
16126       plsql_table_list.DELETE;
16127       rec_count := 1;
16128       plsql_table_list(rec_count).col_name := 'rule_id';
16129       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
16130       rec_count := rec_count + 1;
16131       plsql_table_list(rec_count).col_name := 'rule_folder_id';
16132       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
16133       rec_count := rec_count + 1;
16134       plsql_table_list(rec_count).col_name := 'devl_project_id';
16135       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
16136       rec_count := rec_count + 1;
16137       plsql_table_list(rec_count).col_name := 'component_id';
16138       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_comp_id_ref';
16139       rec_count := rec_count + 1;
16140       plsql_table_list(rec_count).col_name := 'reason_id';
16141       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rea_id_ref';
16142       rec_count := rec_count + 1;
16143       plsql_table_list(rec_count).col_name := 'unsatisfied_msg_id';
16144       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_unmsg_id_ref';
16145       rec_count := rec_count + 1;
16146       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16147       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
16148       rec_count := rec_count + 1;
16149       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
16150       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_expl_ref';
16151       rec_count := rec_count + 1;
16152       plsql_table_list(rec_count).col_name := 'signature_id';
16153       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_sig_ref';
16154       rec_count := rec_count + 1;
16155       plsql_table_list(rec_count).col_name := 'ui_def_id';
16156       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_ui_ref';
16157       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
16158         rec_count := rec_count + 1;
16159         plsql_table_list(rec_count).col_name := 'effective_usage_mask';
16160         plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_rul_usg_msk_tbl';
16161         rec_count := rec_count + 1;
16162         plsql_table_list(rec_count).col_name := 'persistent_rule_id';
16163         plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_persistent_id_ref';
16164       END IF;
16165 
16166       ------populate cz_rules
16167       insert_into_table('cz_rules'
16168 			   ,'rule_id'
16169 			   ,cz_pb_mgr.v_db_link
16170 			   ,plsql_table_list
16171 			   ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
16172 			   ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
16173 			   );
16174 
16175       -----insert new records into cz_rule_folders
16176       plsql_table_list.DELETE;
16177       rec_count := 1;
16178       plsql_table_list(rec_count).col_name := 'rule_folder_id';
16179       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
16180       rec_count := rec_count + 1;
16181       plsql_table_list(rec_count).col_name := 'object_type';
16182       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_obj_ref';
16183       rec_count := rec_count + 1;
16184       plsql_table_list(rec_count).col_name := 'devl_project_id';
16185       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
16186       rec_count := rec_count + 1;
16187       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16188       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
16189       rec_count := rec_count + 1;
16190       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16191       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
16192       ----------insert into cz_func_comp_specs
16193       insert_into_table('cz_rule_folders'
16194                        ,'rule_folder_id'
16195                        ,'object_type'
16196                        ,cz_pb_mgr.v_db_link
16197                        ,plsql_table_list
16198                        ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
16199                        ,'cz_pb_mgr.v_cz_rules_obj_ref'
16200                        ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
16201                        ,cz_pb_mgr.v_cz_rules_obj_ref
16202                        );
16203    END insert_rules;
16204 
16205 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16206    PROCEDURE bulk_collect_archives
16207    IS
16208       l_archive_refs_tbl cz_pb_mgr.t_ref;
16209       l_archive_id_tbl cz_pb_mgr.t_ref;
16210       l_devl_proj_tbl cz_pb_mgr.t_ref;
16211       rec_count NUMBER := 0;
16212       l_archive_count NUMBER := 0;
16213    BEGIN
16214       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16215       THEN
16216          cz_pb_mgr.g_archive_id_old_ref.DELETE;
16217          cz_pb_mgr.g_devl_proj_ref.DELETE;
16218          cz_pb_mgr.g_devl_proj_old_ref.DELETE;
16219          cz_pb_mgr.g_archive_id_ref.DELETE;
16220          cz_pb_mgr.g_archives_idx_ref.DELETE;
16221 
16222          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16223          LOOP
16224             l_archive_refs_tbl.DELETE;
16225             l_devl_proj_tbl.DELETE;
16226 
16227             BEGIN
16228                SELECT archive_id, devl_project_id
16229                BULK COLLECT INTO l_archive_refs_tbl, l_devl_proj_tbl
16230                  FROM cz_archive_refs
16231                 WHERE cz_archive_refs.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_archive_refs.deleted_flag = record_not_deleted;
16232             EXCEPTION
16233                WHEN NO_DATA_FOUND
16234                THEN
16235                   NULL;
16236             END;
16237 
16238             IF (l_archive_refs_tbl.COUNT > 0)
16239             THEN
16240                rec_count := cz_pb_mgr.g_archive_id_old_ref.COUNT;
16241 
16242                FOR j IN l_archive_refs_tbl.FIRST .. l_archive_refs_tbl.LAST
16243                LOOP
16244                   rec_count := rec_count + 1;
16245                   --cz_pb_mgr.g_archive_id_ref(rec_count) := l_archive_refs_tbl(j);
16246                   cz_pb_mgr.g_archive_id_old_ref(rec_count) := l_archive_refs_tbl(j);
16247                   cz_pb_mgr.g_devl_proj_ref(rec_count) := l_devl_proj_tbl(j);
16248                   cz_pb_mgr.g_devl_proj_old_ref(rec_count) := l_devl_proj_tbl(j);
16249                END LOOP;
16250             END IF;
16251          END LOOP;
16252       END IF;
16253    EXCEPTION
16254       WHEN OTHERS
16255       THEN
16256          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_archive_refs', 'SQLERRM', SQLERRM);
16257          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ARCHIVES', SQLCODE);
16258          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16259          RAISE;
16260    END bulk_collect_archives;
16261 
16262 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16263    PROCEDURE export_archives
16264    IS
16265       l_archives_tbl t_ref;
16266       l_old_archives_tbl t_ref;
16267       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16268       rec_count NUMBER := 0;
16269    BEGIN
16270       bulk_collect_archives;
16271       cz_pb_mgr.g_archives_old_ref.DELETE;
16272       cz_pb_mgr.g_archives_new_ref.DELETE;
16273       cz_pb_mgr.g_archives_idx_ref.DELETE;
16274 
16275       IF (cz_pb_mgr.g_archive_id_old_ref.COUNT > 0)
16276       THEN
16277          FOR i IN cz_pb_mgr.g_archive_id_old_ref.FIRST .. cz_pb_mgr.g_archive_id_old_ref.LAST
16278          LOOP
16279             l_old_archives_tbl.DELETE;
16280             l_archives_tbl.DELETE;
16281 
16282             SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_archives_seq
16283                                               , 'cz_archives_s.nextval' || cz_pb_mgr.v_db_link
16284                                               ,cz_pb_mgr.v_oraclesequenceincr
16285                                               )
16286                   ,archive_id
16287             BULK COLLECT INTO l_archives_tbl
16288                   ,l_old_archives_tbl
16289               FROM cz_archives
16290              WHERE cz_archives.archive_id = cz_pb_mgr.g_archive_id_old_ref(i) AND cz_archives.deleted_flag = record_not_deleted;
16291 
16292             IF (l_archives_tbl.COUNT > 0)
16293             THEN
16294                FOR j IN l_archives_tbl.FIRST .. l_archives_tbl.LAST
16295                LOOP
16296                   rec_count := cz_pb_mgr.g_archives_new_ref.COUNT + 1;
16297                   cz_pb_mgr.g_archives_new_ref(rec_count) := l_archives_tbl(j);
16298                   cz_pb_mgr.g_archives_idx_ref(cz_pb_mgr.g_archive_id_old_ref(i)) := l_archives_tbl(j);
16299                   cz_pb_mgr.g_archives_old_ref(rec_count) := l_old_archives_tbl(j);
16300                END LOOP;
16301             END IF;
16302          END LOOP;
16303 
16304          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16305          THEN
16306             mm_sync_archives;
16307          -- resolve the array to only those that need to be inserted
16308          END IF;
16309 
16310          IF (cz_pb_mgr.v_session_parameter <> model_copy AND cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
16311          THEN
16312             resolve_ids(cz_pb_mgr.g_archive_id_old_ref,cz_pb_mgr.g_archive_id_ref, cz_pb_mgr.g_archives_idx_ref, 'resolve archive id of archives');
16313 
16314 	 ELSE
16315     	   rec_count:=0;
16316     	    FOR I IN cz_pb_mgr.g_archive_id_old_ref.FIRST..cz_pb_mgr.g_archive_id_old_ref.LAST
16317     	     LOOP
16318     	      rec_count:=rec_count+1;
16319               cz_pb_mgr.g_archive_id_ref(rec_count):=cz_pb_mgr.g_archive_id_old_ref(i);
16320     	     END LOOP;
16321          END IF;
16322 
16323          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16324          THEN
16325             mm_insert_archives;
16326          ELSE
16327             mm_insert_archives_for_pb;
16328          END IF;
16329 
16330          IF (cz_pb_mgr.g_log_timing = publication_timing)
16331          THEN
16332             log_timing_message('end insert_into_table cz_archives');
16333          END IF;
16334       END IF;
16335    EXCEPTION
16336       WHEN OTHERS
16337       THEN
16338          RAISE;
16339    END export_archives;
16340 
16341 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16342    PROCEDURE export_populators
16343    IS
16344       l_filter_sets_id_tbl cz_pb_mgr.t_ref;
16345       l_filter_sets_devl_tbl cz_pb_mgr.t_ref;
16346       l_filter_sets_rule_tbl cz_pb_mgr.t_ref;
16347       l_filter_sets_new_id_tbl cz_pb_mgr.t_ref;
16348       l_populators_new_id_tbl cz_pb_mgr.t_ref;
16349       l_populators_id_tbl cz_pb_mgr.t_ref;
16350       l_populators_node_tbl cz_pb_mgr.t_ref;
16351       l_populators_set_id_tbl cz_pb_mgr.t_ref;
16352       rec_flt_count NUMBER := 0;
16353       rec_pop_count NUMBER := 0;
16354       rec_count PLS_INTEGER := 0;
16355       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16356    BEGIN
16357       IF ((cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model)) AND(cz_pb_mgr.v_models_to_be_exported.COUNT > 0))
16358       THEN
16359          cz_pb_mgr.v_filter_sets_new_id_ref.DELETE;
16360          cz_pb_mgr.v_filter_sets_id_ref.DELETE;
16361          cz_pb_mgr.v_filter_sets_devl_ref.DELETE;
16362          cz_pb_mgr.v_filter_sets_rule_ref.DELETE;
16363          cz_pb_mgr.v_filter_sets_idx_ref.DELETE;
16364 
16365          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16366          LOOP
16367             l_filter_sets_new_id_tbl.DELETE;
16368             l_filter_sets_id_tbl.DELETE;
16369             l_filter_sets_devl_tbl.DELETE;
16370             l_filter_sets_rule_tbl.DELETE;
16371 
16372             BEGIN
16373                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_filter_sets_seq
16374                                                  , 'cz_filter_sets_s.nextval' || cz_pb_mgr.v_db_link
16375                                                  ,cz_pb_mgr.v_oraclesequenceincr
16376                                                  )
16377                      ,filter_set_id, devl_project_id, rule_id
16378                BULK COLLECT INTO l_filter_sets_new_id_tbl
16379                      ,l_filter_sets_id_tbl, l_filter_sets_devl_tbl, l_filter_sets_rule_tbl
16380                  FROM cz_filter_sets
16381                 WHERE cz_filter_sets.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_filter_sets.deleted_flag = '0'
16382                 AND EXISTS (SELECT NULL FROM cz_populators pop, cz_ps_nodes psn
16383                             WHERE pop.deleted_flag = '0' AND pop.filter_set_id = cz_filter_sets.filter_set_id
16384                             AND pop.owned_by_node_id = psn.ps_node_id AND psn.deleted_flag = '0');
16385 
16386             EXCEPTION
16387                WHEN NO_DATA_FOUND
16388                THEN
16389                   NULL;
16390                WHEN OTHERS
16391                THEN
16392                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_filter_sets', 'SQLERRM', SQLERRM);
16393                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FILTERSETS', SQLCODE);
16394                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16395                   RAISE;
16396             END;
16397 
16398             IF (l_filter_sets_id_tbl.COUNT > 0)
16399             THEN
16400                rec_flt_count := cz_pb_mgr.v_filter_sets_id_ref.COUNT;
16401 
16402                FOR j IN l_filter_sets_id_tbl.FIRST .. l_filter_sets_id_tbl.LAST
16403                LOOP
16404                   rec_flt_count := rec_flt_count + 1;
16405                   cz_pb_mgr.v_filter_sets_new_id_ref(rec_flt_count) := l_filter_sets_new_id_tbl(j);
16406                   cz_pb_mgr.v_filter_sets_id_ref(rec_flt_count) := l_filter_sets_id_tbl(j);
16407                   cz_pb_mgr.v_filter_sets_idx_ref(l_filter_sets_id_tbl(j)) := l_filter_sets_new_id_tbl(j);
16408                   cz_pb_mgr.v_filter_sets_devl_ref(rec_flt_count) := l_filter_sets_devl_tbl(j);
16409                   cz_pb_mgr.v_filter_sets_rule_ref(rec_flt_count) := l_filter_sets_rule_tbl(j);
16410                END LOOP;
16411             END IF;
16412          END LOOP;
16413 
16414          IF (cz_pb_mgr.v_filter_sets_id_ref.COUNT > 0)
16415          THEN
16416             cz_pb_mgr.v_populators_new_id_ref.DELETE;
16417             cz_pb_mgr.v_populators_id_ref.DELETE;
16418             cz_pb_mgr.v_populators_node_ref.DELETE;
16419             cz_pb_mgr.v_populators_set_id_ref.DELETE;
16420 
16421             FOR i IN cz_pb_mgr.v_filter_sets_id_ref.FIRST .. cz_pb_mgr.v_filter_sets_id_ref.LAST
16422             LOOP
16423                l_populators_id_tbl.DELETE;
16424                l_populators_node_tbl.DELETE;
16425                l_populators_set_id_tbl.DELETE;
16426                l_populators_new_id_tbl.DELETE;
16427 
16428                BEGIN
16429                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_populators_seq
16430                                                     , 'cz_populators_s.nextval' || cz_pb_mgr.v_db_link
16431                                                     ,cz_pb_mgr.v_oraclesequenceincr
16432                                                     )
16433                         ,populator_id, owned_by_node_id, filter_set_id
16434                   BULK COLLECT INTO l_populators_new_id_tbl
16435                         ,l_populators_id_tbl, l_populators_node_tbl, l_populators_set_id_tbl
16436                     FROM cz_populators
16437                    WHERE cz_populators.filter_set_id = cz_pb_mgr.v_filter_sets_id_ref(i) AND cz_populators.deleted_flag = '0';
16438                EXCEPTION
16439                   WHEN NO_DATA_FOUND
16440                   THEN
16441                      NULL;
16442                   WHEN OTHERS
16443                   THEN
16444                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
16445                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
16446                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16447                      RAISE;
16448                END;
16449 
16450                IF (l_populators_id_tbl.COUNT > 0)
16451                THEN
16452                   rec_pop_count := cz_pb_mgr.v_populators_id_ref.COUNT;
16453 
16454                   FOR j IN l_populators_id_tbl.FIRST .. l_populators_id_tbl.LAST
16455                   LOOP
16456                      rec_pop_count := rec_pop_count + 1;
16457                      cz_pb_mgr.v_populators_new_id_ref(rec_pop_count) := l_populators_new_id_tbl(j);
16458                      cz_pb_mgr.v_populators_id_ref(rec_pop_count) := l_populators_id_tbl(j);
16459                      cz_pb_mgr.v_populators_node_ref(rec_pop_count) := l_populators_node_tbl(j);
16460                      cz_pb_mgr.v_populators_set_id_ref(rec_pop_count) := l_populators_set_id_tbl(j);
16461                   END LOOP;
16462                END IF;
16463             END LOOP;
16464 
16465             ------resolve devl id and rule id
16466             resolve_ids(cz_pb_mgr.v_filter_sets_devl_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'dev proj id of cz filter sets');
16467             ------resolve devl id
16468             resolve_ids(cz_pb_mgr.v_filter_sets_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of cz filter sets');
16469             -----resolve ps node id
16470             resolve_ids(cz_pb_mgr.v_populators_node_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'owned by node id of cz populators');
16471             -----resolve filter set id
16472             resolve_ids(cz_pb_mgr.v_populators_set_id_ref, cz_pb_mgr.v_filter_sets_idx_ref, 'filter set id of cz populators');
16473             plsql_table_list.DELETE;
16474             rec_count := 1;
16475             plsql_table_list(rec_count).col_name := 'filter_set_id';
16476             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_new_id_ref';
16477             rec_count := rec_count + 1;
16478             plsql_table_list(rec_count).col_name := 'devl_project_id';
16479             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_devl_ref';
16480             rec_count := rec_count + 1;
16481             plsql_table_list(rec_count).col_name := 'rule_id';
16482             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_rule_ref';
16483             insert_into_table('cz_filter_sets'
16484                              ,'filter_set_id'
16485                              ,cz_pb_mgr.v_db_link
16486                              ,plsql_table_list
16487                              ,'cz_pb_mgr.v_filter_sets_id_ref'
16488                              ,cz_pb_mgr.v_filter_sets_id_ref
16489                              );
16490             plsql_table_list.DELETE;
16491             rec_count := 1;
16492             plsql_table_list(rec_count).col_name := 'populator_id';
16493             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_new_id_ref';
16494             rec_count := rec_count + 1;
16495             plsql_table_list(rec_count).col_name := 'owned_by_node_id';
16496             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_node_ref';
16497             rec_count := rec_count + 1;
16498             plsql_table_list(rec_count).col_name := 'filter_set_id';
16499             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_set_id_ref';
16500             insert_into_table('cz_populators'
16501                              ,'populator_id'
16502                              ,cz_pb_mgr.v_db_link
16503                              ,plsql_table_list
16504                              ,'cz_pb_mgr.v_populators_id_ref'
16505                              ,cz_pb_mgr.v_populators_id_ref
16506                              );
16507 
16508             IF (cz_pb_mgr.v_populators_node_ref.COUNT > 0)
16509             THEN
16510                EXECUTE IMMEDIATE
16511                 'BEGIN' || ' ' ||
16512                    'FOR i IN cz_pb_mgr.v_populators_node_ref.FIRST..cz_pb_mgr.v_populators_node_ref.LAST' || ' ' ||
16513                      'LOOP' || ' ' ||
16514                        'UPDATE cz_ps_nodes' ||  cz_pb_mgr.v_db_link  || ' ' || 't' || ' ' ||
16515                           'SET   t.from_populator_id = cz_pb_mgr.v_populators_new_id_ref(i) ' || ' ' ||
16516                           'WHERE  t.devl_project_id = cz_pb_mgr.v_filter_sets_devl_ref(i) AND' || ' ' ||
16517                            't.from_populator_id=cz_pb_mgr.v_populators_id_ref(i) AND' ||  ' ' ||
16518                            't.deleted_flag=''0''; ' || ' ' ||
16519                     'END LOOP;' || ' ' ||
16520                 'END;';
16521 
16522                COMMIT;
16523             END IF;
16524          END IF;
16525       END IF;
16526    EXCEPTION
16527       WHEN OTHERS
16528       THEN
16529          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
16530          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
16531          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16532          RAISE;
16533    END export_populators;
16534 
16535 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16536 ------procedure that uploads rule schema
16537    PROCEDURE upload_rule_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, p_copy_rules_flag IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
16538    AS
16539       rec_count PLS_INTEGER := 0;
16540       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16541       v_cz_folders_pf_id_tbl cz_pb_mgr.t_ref;
16542       v_cz_folders_pj_id_tbl cz_pb_mgr.t_ref;
16543       v_cz_express_proj_id_tbl cz_pb_mgr.t_ref;
16544       v_cz_enodes_expr_id_tbl cz_pb_mgr.t_ref;
16545       v_cz_des_feature_id_old_tbl cz_pb_mgr.t_ref;
16546       v_cz_des_feature_rule_id_tbl cz_pb_mgr.t_ref;
16547       v_cz_des_feature_mrefl_id_tbl cz_pb_mgr.t_ref;
16548       v_cz_des_feature_ft_typ_tbl cz_pb_mgr.t_ref;
16549       v_cz_des_cells_rule_id_tbl cz_pb_mgr.t_ref;
16550       v_cz_des_cells_sf_id_tbl cz_pb_mgr.t_ref;
16551       v_cz_des_cells_sopt_id_tbl cz_pb_mgr.t_ref;
16552       v_cz_des_cells_popt_id_tbl cz_pb_mgr.t_ref;
16553       v_cz_des_cells_sexpl_id_tbl cz_pb_mgr.t_ref;
16554       v_cz_des_cells_mark_char_tbl cz_pb_mgr.exprflgtype;
16555       v_cz_rule_folders_orig_tbl cz_pb_mgr.orig_sys_ref_type;
16556       v_cz_rule_folders_eff_tbl cz_pb_mgr.t_ref;
16557       v_sig_count NUMBER := 0;
16558       v_object_type_tbl cz_pb_mgr.objtype;
16559       rec_count_rsq NUMBER := 0;
16560       v_rule_type_tbl cz_pb_mgr.t_ref;
16561       v_model_root_folder_map  cz_pb_mgr.t_ref_idx_vc2;
16562 
16563 PROCEDURE mm_resolve_rule_fks(px_fk_tbl IN OUT NOCOPY t_ref, p_id_map t_ref_idx_vc2, p_ruleid_tbl IN t_ref, p_colname IN VARCHAR2)
16564 IS
16565 BEGIN
16566   IF px_fk_tbl.COUNT=0 THEN RETURN; END IF;
16567 
16568   FOR i IN px_fk_tbl.FIRST .. px_fk_tbl.LAST LOOP
16569     IF px_fk_tbl(i) IS NOT NULL THEN
16570       BEGIN
16571         px_fk_tbl(i) := p_id_map(px_fk_tbl(i));
16572       EXCEPTION
16573         WHEN NO_DATA_FOUND THEN
16574           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16575           FOR j IN (SELECT rule.name rulename, prj.name prjname
16576                     FROM cz_rules rule, cz_devl_projects prj
16577                     WHERE rule.rule_id=p_ruleid_tbl(i) AND rule.devl_project_id=prj.devl_project_id) LOOP
16578             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MIGR_RULE_ERR', 'FK_COL', p_colname, 'RULE_NAME', j.rulename, 'MODEL_NAME', j.prjname);
16579             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'upload_rule_schema.mm_resolve_rule_fks', SQLCODE);
16580           END LOOP;
16581           RAISE;
16582       END;
16583     END IF;
16584   END LOOP;
16585 END mm_resolve_rule_fks;
16586 
16587    BEGIN
16588       --------------populate ps nodes pl/sql table with ps node ids from remote server
16589       get_rem_nodes_of_models(cz_pb_mgr.v_models_not_to_be_exported
16590                              ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
16591                              ,cz_pb_mgr.v_status_code
16592                              );
16593       -------insert into cz_rule_folders
16594       clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
16595       mm_v_tbl_rule_seq.DELETE;
16596 
16597       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16598       THEN
16599          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16600          LOOP
16601             clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
16602             v_cz_folders_pf_id_tbl.DELETE;
16603             v_cz_folders_pj_id_tbl.DELETE;
16604             v_cz_rule_folders_orig_tbl.DELETE;
16605             v_cz_rule_folders_eff_tbl.DELETE;
16606             v_object_type_tbl.DELETE;
16607 
16608             BEGIN
16609                IF (cz_pb_mgr.v_session_parameter = model_copy)
16610                THEN
16611 		 IF (p_copy_rules_flag = 'YES') THEN
16612                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
16613                                                     , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
16614                                                     ,cz_pb_mgr.v_oraclesequenceincr
16615                                                     )
16616                         ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
16617                         ,orig_sys_ref, object_type
16618                   BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
16619                         ,cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl, v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl
16620                         ,v_cz_rule_folders_eff_tbl, v_object_type_tbl
16621                     FROM cz_rule_folders t
16622                    WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND t.deleted_flag = '0' AND t.object_type IN('RFL', 'RSQ');
16623                   ELSE -- Just create the Model Rule Folder if not copying rules
16624                     SELECT cz_pb_mgr.sequence_generate(
16625                              cz_pb_mgr.cz_rule_folders_seq,
16626                              'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
16627                              cz_pb_mgr.v_oraclesequenceincr
16628                            ),
16629                            rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id,orig_sys_ref, object_type
16630                     BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl, cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl,
16631                            v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl, v_cz_rule_folders_eff_tbl, v_object_type_tbl
16632                     FROM   cz_rule_folders t
16633                     WHERE  t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16634                     AND    t.deleted_flag = '0'
16635                     AND    t.parent_rule_folder_id IS NULL
16636                     AND    t.object_type = 'RFL';
16637 		  END IF;
16638                ELSE
16639                   IF (p_copy_rules_flag = 'YES')
16640                   THEN
16641                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
16642                                                        , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
16643                                                        ,cz_pb_mgr.v_oraclesequenceincr
16644                                                        )
16645                            ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
16646                            ,orig_sys_ref, object_type
16647                      BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
16648                            ,cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl, v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl
16649                            ,v_cz_rule_folders_orig_tbl, v_object_type_tbl
16650                        FROM cz_rule_folders t
16651                       WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16652                         AND t.deleted_flag = '0'
16653                         AND t.object_type IN('RFL', 'RSQ');
16654                   ELSE -- Just create the Model Rule Folder if not copying rules
16655                     SELECT cz_pb_mgr.sequence_generate(
16656                              cz_pb_mgr.cz_rule_folders_seq,
16657                              'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
16658                              cz_pb_mgr.v_oraclesequenceincr
16659                            ), rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id, orig_sys_ref, object_type
16660                     BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl, cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl,
16661                            v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl, v_cz_rule_folders_orig_tbl, v_object_type_tbl
16662                     FROM   cz_rule_folders t
16663                     WHERE  t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16664                     AND    t.deleted_flag = '0'
16665                     AND    t.parent_rule_folder_id IS NULL
16666                     AND    t.object_type = 'RFL';
16667                   END IF;
16668                END IF;
16669             EXCEPTION
16670                WHEN NO_DATA_FOUND
16671                THEN
16672                   cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16673                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
16674                WHEN OTHERS
16675                THEN
16676                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rule_folders', 'SQLERRM', SQLERRM);
16677                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
16678                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16679                   RAISE;
16680             END;
16681 
16682             rec_count := cz_pb_mgr.v_cz_folders_id_new_ref.COUNT;
16683             rec_count_rsq := mm_v_tbl_rule_seq.COUNT;
16684 
16685             IF (cz_pb_mgr.v_cz_folders_id_new_tbl.COUNT > 0)
16686             THEN
16687                FOR k IN cz_pb_mgr.v_cz_folders_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_folders_id_new_tbl.LAST
16688                LOOP
16689                   rec_count := rec_count + 1;
16690                   cz_pb_mgr.v_cz_folders_id_new_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_new_tbl(k);
16691                   cz_pb_mgr.v_cz_folders_id_old_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_old_tbl(k);
16692                   cz_pb_mgr.v_cz_folders_id_idx_ref(cz_pb_mgr.v_cz_folders_id_old_tbl(k)):=cz_pb_mgr.v_cz_folders_id_new_tbl(k);
16693                   cz_pb_mgr.v_cz_folders_pf_id_ref(rec_count) := v_cz_folders_pf_id_tbl(k);
16694                   cz_pb_mgr.v_cz_folders_pj_id_ref(rec_count) := v_cz_folders_pj_id_tbl(k);
16695                   cz_pb_mgr.v_cz_folders_eff_ref(rec_count) := v_cz_rule_folders_eff_tbl(k);
16696                   cz_pb_mgr.v_cz_folders_orig_ref(rec_count) := v_cz_rule_folders_orig_tbl(k);
16697                   cz_pb_mgr.v_cz_folders_obj_ref(rec_count) := v_object_type_tbl(k);
16698 
16699                   IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16700                     v_model_root_folder_map(cz_pb_mgr.v_models_to_be_exported(i)):=v_cz_folders_id_old_tbl(k);
16701                   END IF;
16702 
16703                   IF (v_object_type_tbl(k) = 'RSQ')
16704                   THEN
16705                      rec_count_rsq := rec_count_rsq + 1;
16706                      mm_v_tbl_rule_seq(rec_count_rsq) := v_cz_folders_id_old_tbl(k);
16707                   END IF;
16708                END LOOP;
16709             END IF;
16710          END LOOP;      /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
16711       END IF;           /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
16712 
16713       -----resolve parent rule folder id and devl proj id
16714       resolve_ids(cz_pb_mgr.v_cz_folders_pf_id_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'parent folder id of rule folders');
16715       resolve_ids(cz_pb_mgr.v_cz_folders_pj_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl proj id of rule folders');
16716       insert_eff_sets(cz_pb_mgr.v_cz_folders_eff_ref
16717                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
16718                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
16719                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
16720                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
16721                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
16722                      ,'Eff sets of rule folders'
16723                      );
16724       resolve_ids(cz_pb_mgr.v_cz_folders_eff_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff id of rule folders');
16725       -----insert new records into cz_rule_folders
16726       plsql_table_list.DELETE;
16727       rec_count := 1;
16728       plsql_table_list(rec_count).col_name := 'rule_folder_id';
16729       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_id_new_ref';
16730       rec_count := rec_count + 1;
16731       plsql_table_list(rec_count).col_name := 'object_type';
16732       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_obj_ref';
16733       rec_count := rec_count + 1;
16734       plsql_table_list(rec_count).col_name := 'devl_project_id';
16735       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pj_id_ref';
16736       rec_count := rec_count + 1;
16737       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16738       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pf_id_ref';
16739       rec_count := rec_count + 1;
16740       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16741       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_eff_ref';
16742       rec_count := rec_count + 1;
16743       plsql_table_list(rec_count).col_name := 'orig_sys_ref';
16744       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_orig_ref';
16745       insert_into_table('cz_rule_folders'
16746                        ,'rule_folder_id'
16747                        ,'object_type'
16748                        ,cz_pb_mgr.v_db_link
16749                        ,plsql_table_list
16750                        ,'cz_pb_mgr.v_cz_folders_id_old_ref'
16751                        ,'cz_pb_mgr.v_cz_folders_obj_ref'
16752                        ,cz_pb_mgr.v_cz_folders_id_old_ref
16753                        ,cz_pb_mgr.v_cz_folders_obj_ref
16754                        );
16755 
16756       --------release local pl/sql tables of rule folders
16757       v_cz_folders_pf_id_tbl.DELETE;
16758       v_cz_folders_pj_id_tbl.DELETE;
16759       v_cz_rule_folders_eff_tbl.DELETE;
16760       v_cz_rule_folders_orig_tbl.DELETE;
16761       clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
16762 
16763       -------------insert into func comp specs
16764      IF cz_pb_mgr.v_cz_func_comp_old_ref.COUNT > 0 THEN
16765       IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16766         FOR i IN cz_pb_mgr.v_cz_func_fld_old_ref.FIRST .. cz_pb_mgr.v_cz_func_fld_old_ref.LAST LOOP
16767           IF cz_pb_mgr.v_cz_func_fld_old_ref(i) IS NOT NULL THEN
16768             cz_pb_mgr.v_cz_func_fld_old_ref(i):=v_model_root_folder_map(cz_pb_mgr.v_cz_func_devl_old_ref(i));
16769           END IF;
16770         END LOOP;
16771       END IF;
16772       resolve_ids(cz_pb_mgr.v_cz_func_fld_old_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'rule folder id of cz_func_comp_specs');
16773 
16774       IF (cz_pb_mgr.g_log_timing = publication_timing)
16775       THEN
16776          log_timing_message('start resolve_ids devl project id of cz_func_comp_specs');
16777       END IF;
16778 
16779       resolve_ids(cz_pb_mgr.v_cz_func_devl_old_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl project id of cz_func_comp_specs');
16780 
16781       IF (cz_pb_mgr.g_log_timing = publication_timing)
16782       THEN
16783          log_timing_message('end resolve_ids devl project id of cz_func_comp_specs');
16784          log_timing_message('start resolve_ids component id of cz_func_comp_specs');
16785       END IF;
16786 
16787       resolve_ids(cz_pb_mgr.v_cz_func_cid_old_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz_func_comp_specs', FLD_RULE_COMPONENT_ID);
16788 
16789       IF (cz_pb_mgr.g_log_timing = publication_timing)
16790       THEN
16791          log_timing_message('end resolve_ids component id of cz_func_comp_specs');
16792          log_timing_message('start resolve_ids model ref expl id of cz_funce_comp_specs');
16793       END IF;
16794 
16795       resolve_ids(cz_pb_mgr.v_cz_func_expl_old_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of cz_func_comp_specs');
16796 
16797       IF (cz_pb_mgr.g_log_timing = publication_timing)
16798       THEN
16799          log_timing_message('end resolve_ids model ref expl id of cz_funce_comp_specs');
16800       END IF;
16801 
16802       --------populate plsql_table_list for cz func comp specs
16803       plsql_table_list.DELETE;
16804       rec_count := 1;
16805       plsql_table_list(rec_count).col_name := 'func_comp_id';
16806       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
16807       rec_count := rec_count + 1;
16808       plsql_table_list(rec_count).col_name := 'devl_project_id';
16809       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
16810       rec_count := rec_count + 1;
16811       plsql_table_list(rec_count).col_name := 'component_id';
16812       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_cid_old_ref';
16813       rec_count := rec_count + 1;
16814       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
16815       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_expl_old_ref';
16816       rec_count := rec_count + 1;
16817       plsql_table_list(rec_count).col_name := 'rule_folder_id';
16818       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
16819 
16820       ----------insert into cz_func_comp_specs
16821       IF (cz_pb_mgr.g_log_timing = publication_timing)
16822       THEN
16823          log_timing_message('start insert_into_table cz_func_comp_specs');
16824       END IF;
16825 
16826       insert_into_table('cz_func_comp_specs'
16827                        ,'func_comp_id'
16828                        ,cz_pb_mgr.v_db_link
16829                        ,plsql_table_list
16830                        ,'cz_pb_mgr.v_cz_func_comp_old_ref'
16831                        ,cz_pb_mgr.v_cz_func_comp_old_ref
16832                        );
16833 
16834       IF (cz_pb_mgr.g_log_timing = publication_timing)
16835       THEN
16836          log_timing_message('end insert_into_table cz_func_comp_specs');
16837       END IF;
16838 
16839       -----insert new records into cz_rule_folders
16840       plsql_table_list.DELETE;
16841       rec_count := 1;
16842       plsql_table_list(rec_count).col_name := 'rule_folder_id';
16843       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
16844       rec_count := rec_count + 1;
16845       plsql_table_list(rec_count).col_name := 'object_type';
16846       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_obj_ref';
16847       rec_count := rec_count + 1;
16848       plsql_table_list(rec_count).col_name := 'devl_project_id';
16849       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
16850       rec_count := rec_count + 1;
16851       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16852       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
16853       ----------insert into cz_func_comp_specs
16854       insert_into_table('cz_rule_folders'
16855                        ,'rule_folder_id'
16856                        ,'object_type'
16857                        ,cz_pb_mgr.v_db_link
16858                        ,plsql_table_list
16859                        ,'cz_pb_mgr.v_cz_func_comp_old_ref'
16860                        ,'cz_pb_mgr.v_cz_func_obj_ref'
16861                        ,cz_pb_mgr.v_cz_func_comp_old_ref
16862                        ,cz_pb_mgr.v_cz_func_obj_ref
16863                        );
16864      END IF;
16865 
16866       -----export archives
16867       export_archives;
16868       export_populators;
16869 
16870       IF cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 THEN
16871         insert_rules(p_copy_rules_flag, v_model_root_folder_map);
16872       END IF;
16873 
16874       IF cz_pb_mgr.v_session_parameter = pub_model THEN
16875         IF g_engine_type = ENGINE_TYPE_FCE THEN
16876           copy_fce_files;
16877         ELSE
16878           copy_lce_headers;
16879           copy_lce_texts(p_copy_rules_flag);
16880         END IF;
16881       END IF;
16882 
16883          ---------------local pl/sql tables of cz rules released after populating rule sub schema
16884          -------------insert expressions
16885          IF (cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0)
16886          THEN
16887             FOR m IN cz_pb_mgr.v_cz_rules_rule_id_old_ref.FIRST .. cz_pb_mgr.v_cz_rules_rule_id_old_ref.LAST
16888             LOOP
16889                clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
16890 
16891                BEGIN
16892                   IF (cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model))
16893                   THEN
16894                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
16895                                                        , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
16896                                                        ,cz_pb_mgr.v_oraclesequenceincr
16897                                                        )
16898                            ,expr_node_id, ps_node_id, expr_parent_id
16899                            ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
16900                            ,param_signature_id,property_id
16901                      BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
16902                            ,cz_pb_mgr.v_cz_enodes_enode_id_old_tbl, cz_pb_mgr.v_cz_enodes_psnode_id_tbl, cz_pb_mgr.v_cz_enodes_pexpr_id_tbl
16903                            ,cz_pb_mgr.v_cz_enodes_mrefl_id_tbl, cz_pb_mgr.v_cz_enodes_rule_id_tbl, cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl
16904                            ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
16905                            ,cz_pb_mgr.v_cz_enodes_prop_id_tbl
16906                        FROM cz_expression_nodes t
16907                       WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0';
16908                   ELSE
16909                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
16910                                                        , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
16911                                                        ,cz_pb_mgr.v_oraclesequenceincr
16912                                                        )
16913                            ,expr_node_id, ps_node_id, expr_parent_id
16914                            ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
16915                            ,param_signature_id
16916                      BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
16917                            ,cz_pb_mgr.v_cz_enodes_enode_id_old_tbl, cz_pb_mgr.v_cz_enodes_psnode_id_tbl, cz_pb_mgr.v_cz_enodes_pexpr_id_tbl
16918                            ,cz_pb_mgr.v_cz_enodes_mrefl_id_tbl, cz_pb_mgr.v_cz_enodes_rule_id_tbl, cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl
16919                            ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
16920                        FROM cz_expression_nodes t
16921                       WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0' AND t.expr_type <> 208;
16922                   END IF;
16923                EXCEPTION
16924                   WHEN NO_DATA_FOUND
16925                   THEN
16926                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16927                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
16928                   WHEN OTHERS
16929                   THEN
16930                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_expression_nodes', 'SQLERRM', SQLERRM);
16931                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
16932                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16933                      RAISE;
16934                END;
16935 
16936                rec_count := cz_pb_mgr.v_cz_enodes_enode_id_new_ref.COUNT;
16937 
16938                IF (cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.COUNT > 0)
16939                THEN
16940                   FOR i IN cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.LAST
16941                   LOOP
16942                      rec_count := rec_count + 1;
16943                      cz_pb_mgr.v_cz_enodes_enode_id_new_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
16944                      cz_pb_mgr.v_cz_enodes_enode_id_old_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i);
16945                      cz_pb_mgr.v_cz_enodes_enode_id_idx_ref(cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i)):=cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
16946                      cz_pb_mgr.v_cz_enodes_psnode_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_psnode_id_tbl(i);
16947                      cz_pb_mgr.v_cz_enodes_pexpr_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_pexpr_id_tbl(i);
16948                      cz_pb_mgr.v_cz_enodes_mrefl_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_mrefl_id_tbl(i);
16949                      cz_pb_mgr.v_cz_enodes_rule_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_rule_id_tbl(i);
16950                      cz_pb_mgr.v_cz_enodes_arg_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16951                      cz_pb_mgr.v_cz_enodes_par_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16952 
16953                      IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
16954                      THEN
16955                       cz_pb_mgr.v_cz_enodes_prop_id_ref(rec_count):=cz_pb_mgr.v_cz_enodes_prop_id_tbl(i);
16956                      END IF;
16957 
16958                      IF (cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i) IS NOT NULL)
16959                      THEN
16960                         IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)))
16961                         THEN
16962                            v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
16963                            cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16964                            cz_pb_mgr.v_cz_expr_sig_idx_ref(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16965                         END IF;
16966                      END IF;
16967 
16968                      IF (cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i) IS NOT NULL)
16969                      THEN
16970                         IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)))
16971                         THEN
16972                            v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
16973                            cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16974                            cz_pb_mgr.v_cz_expr_sig_idx_ref(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16975                         END IF;
16976                      END IF;
16977                   END LOOP;
16978                END IF;
16979             END LOOP;                                                           /* end loop of */
16980          END IF;  -- end cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0                                                                                                                     /* (COUNT > 0) */
16981 
16982          --------export_signatures
16983          export_signatures(cz_pb_mgr.v_cz_expr_sig_ref);
16984          -----------resolve parent expr node id
16985          resolve_ids(cz_pb_mgr.v_cz_enodes_pexpr_id_ref, cz_pb_mgr.v_cz_enodes_enode_id_idx_ref, 'parent expr ids of expression nodes', FLD_IGNORE_NOW);
16986          -------resolve sig ids
16987          resolve_ids(cz_pb_mgr.v_cz_enodes_arg_sig_id_ref, cz_pb_mgr.v_sig_idx_ref, 'arg sig ids cz expr nodes', ENTITY_TYPE_SIGNATURE);
16988          resolve_ids(cz_pb_mgr.v_cz_enodes_par_sig_id_ref, cz_pb_mgr.v_sig_idx_ref, 'param sig ids cz expr nodes', ENTITY_TYPE_SIGNATURE);
16989 
16990          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
16991            mm_resolve_rule_fks(cz_pb_mgr.v_cz_enodes_psnode_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_enodes_rule_id_ref,'cz_expression_nodes.ps_node_id');
16992            mm_resolve_rule_fks(cz_pb_mgr.v_cz_enodes_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_enodes_rule_id_ref,'cz_expression_nodes.model_ref_expl_id');
16993            resolve_ids(cz_pb_mgr.v_cz_enodes_prop_id_ref, cz_pb_mgr.mm_v_ht_sync_all_prop, 'property id of cz expr nodes', ENTITY_TYPE_PROPERTY);
16994          ELSE
16995            resolve_ids(cz_pb_mgr.v_cz_enodes_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'model ref expl id of expression nodes',FLD_IGNORE_NOW);
16996            resolve_ids(cz_pb_mgr.v_cz_enodes_psnode_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'ps node ids of expression nodes',FLD_IGNORE_NOW);
16997          END IF;
16998 
16999          resolve_ids(cz_pb_mgr.v_cz_enodes_rule_id_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of expression nodes');
17000 
17001          --------populate plsql_table_list for cz_expression_nodes
17002          plsql_table_list.DELETE;
17003          rec_count := 1;
17004          plsql_table_list(rec_count).col_name := 'expr_node_id';
17005          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_enode_id_new_ref';
17006          rec_count := rec_count + 1;
17007          plsql_table_list(rec_count).col_name := 'rule_id';
17008          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_rule_id_ref';
17009          rec_count := rec_count + 1;
17010          plsql_table_list(rec_count).col_name := 'ps_node_id';
17011          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_psnode_id_ref';
17012          rec_count := rec_count + 1;
17013          plsql_table_list(rec_count).col_name := 'expr_parent_id';
17014          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_pexpr_id_ref';
17015          rec_count := rec_count + 1;
17016          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
17017          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_mrefl_id_ref';
17018          rec_count := rec_count + 1;
17019          plsql_table_list(rec_count).col_name := 'argument_signature_id';
17020          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_arg_sig_id_ref';
17021          rec_count := rec_count + 1;
17022          plsql_table_list(rec_count).col_name := 'param_signature_id';
17023          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_par_sig_id_ref';
17024 
17025          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
17026          THEN
17027           rec_count := rec_count + 1;
17028           plsql_table_list(rec_count).col_name := 'property_id';
17029           plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_prop_id_ref';
17030 	 END IF;
17031 
17032          ------insert new records into cz_expression_nodes
17033          insert_into_table('cz_expression_nodes'
17034                           ,'expr_node_id'
17035                           ,cz_pb_mgr.v_db_link
17036                           ,plsql_table_list
17037                           ,'cz_pb_mgr.v_cz_enodes_enode_id_old_ref'
17038                           ,cz_pb_mgr.v_cz_enodes_enode_id_old_ref
17039                           );
17040          --------release tbl pl/sql tables of cz expression nodes
17041          clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
17042 
17043       IF (p_copy_rules_flag = 'YES') THEN
17044 
17045          -------------insert into cz_des_chart_features
17046          clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
17047 
17048          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17049          THEN
17050             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17051             LOOP
17052                v_cz_des_feature_id_old_tbl.DELETE;
17053                v_cz_des_feature_rule_id_tbl.DELETE;
17054                v_cz_des_feature_mrefl_id_tbl.DELETE;
17055                v_cz_des_feature_ft_typ_tbl.DELETE;
17056 
17057                BEGIN
17058                  SELECT feature_id, rule_id, model_ref_expl_id, feature_type
17059                  BULK COLLECT INTO v_cz_des_feature_id_old_tbl, v_cz_des_feature_rule_id_tbl, v_cz_des_feature_mrefl_id_tbl, v_cz_des_feature_ft_typ_tbl
17060                  FROM cz_des_chart_features t
17061                  WHERE t.rule_id IN(
17062                                SELECT rule_id
17063                                  FROM cz_rules
17064                                 WHERE cz_rules.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
17065                                   AND cz_rules.deleted_flag = '0')
17066                         AND t.deleted_flag = '0';
17067                EXCEPTION
17068                   WHEN NO_DATA_FOUND
17069                   THEN
17070                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
17071                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
17072                   WHEN OTHERS
17073                   THEN
17074                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
17075                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
17076                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17077                      RAISE;
17078                END;
17079 
17080                rec_count := cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT;
17081 
17082                IF (v_cz_des_feature_id_old_tbl.COUNT > 0)
17083                THEN
17084                   FOR k IN v_cz_des_feature_id_old_tbl.FIRST .. v_cz_des_feature_id_old_tbl.LAST
17085                   LOOP
17086                      rec_count := rec_count + 1;
17087                      cz_pb_mgr.v_cz_des_feature_id_old_ref(rec_count) := v_cz_des_feature_id_old_tbl(k);
17088                      cz_pb_mgr.v_cz_des_feature_rule_id_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
17089                      cz_pb_mgr.v_cz_des_feature_rid_new_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
17090                      cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(rec_count) := v_cz_des_feature_mrefl_id_tbl(k);
17091                      cz_pb_mgr.v_cz_des_feature_ft_typ_ref(rec_count) := v_cz_des_feature_ft_typ_tbl(k);
17092                   END LOOP;
17093                END IF;
17094             END LOOP;                                     /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
17095          END IF;                                          /* cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
17096 
17097          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
17098            mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_feature_id_old_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_feature_rid_new_ref,'cz_des_chart_features.feature_id');
17099            mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_feature_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_des_feature_rid_new_ref,'cz_des_chart_features.model_ref_expl_id');
17100          ELSE
17101            resolve_ids(cz_pb_mgr.v_cz_des_feature_id_old_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'feature id of cz_des_features',FLD_IGNORE_NOW);
17102            resolve_ids(cz_pb_mgr.v_cz_des_feature_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'model ref expl id of cz_des_features',FLD_IGNORE_NOW);
17103          END IF;
17104 
17105          resolve_ids(cz_pb_mgr.v_cz_des_feature_rid_new_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of des chart features');
17106 
17107          ------insert new records into cz_des_chart_features
17108          insert_des_chart_features(cz_pb_mgr.v_status_code);
17109          -------------release local pl/sql tables of des chart features
17110          v_cz_des_feature_id_old_tbl.DELETE;
17111          v_cz_des_feature_rule_id_tbl.DELETE;
17112          v_cz_des_feature_mrefl_id_tbl.DELETE;
17113          v_cz_des_feature_ft_typ_tbl.DELETE;
17114          ------------insert into cz_des_chart_cells
17115          clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
17116 
17117          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17118          THEN
17119             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17120             LOOP
17121                v_cz_des_cells_rule_id_tbl.DELETE;
17122                v_cz_des_cells_sf_id_tbl.DELETE;
17123                v_cz_des_cells_sopt_id_tbl.DELETE;
17124                v_cz_des_cells_popt_id_tbl.DELETE;
17125                v_cz_des_cells_sexpl_id_tbl.DELETE;
17126                v_rule_type_tbl.DELETE;
17127 
17128                BEGIN
17129                  SELECT rul.rule_id, secondary_feature_id, primary_opt_id, secondary_opt_id
17130                       , secondary_feat_expl_id, mark_char, rule_type
17131                  BULK COLLECT INTO v_cz_des_cells_rule_id_tbl, v_cz_des_cells_sf_id_tbl, v_cz_des_cells_popt_id_tbl, v_cz_des_cells_sopt_id_tbl
17132                                   ,v_cz_des_cells_sexpl_id_tbl, v_cz_des_cells_mark_char_tbl, v_rule_type_tbl
17133                  FROM cz_rules rul, cz_des_chart_cells dcc
17134                  WHERE rul.deleted_flag = '0' AND rul.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
17135                  AND rul.rule_id = dcc.rule_id AND dcc.deleted_flag = '0';
17136                EXCEPTION
17137                   WHEN NO_DATA_FOUND
17138                   THEN
17139                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
17140                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
17141                   WHEN OTHERS
17142                   THEN
17143                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
17144                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
17145                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17146                      RAISE;
17147                END;
17148 
17149                rec_count := cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.COUNT;
17150 
17151                IF (v_cz_des_cells_rule_id_tbl.COUNT > 0)
17152                THEN
17153                   FOR k IN v_cz_des_cells_rule_id_tbl.FIRST .. v_cz_des_cells_rule_id_tbl.LAST
17154                   LOOP
17155                      rec_count := rec_count + 1;
17156                      cz_pb_mgr.v_cz_des_cells_rule_id_old_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
17157                      cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
17158                      cz_pb_mgr.v_cz_des_cells_sf_id_ref(rec_count) := v_cz_des_cells_sf_id_tbl(k);
17159                      cz_pb_mgr.v_cz_des_cells_sopt_id_ref(rec_count) := v_cz_des_cells_sopt_id_tbl(k);
17160                      cz_pb_mgr.v_cz_des_cells_popt_id_ref(rec_count) := v_cz_des_cells_popt_id_tbl(k);
17161                      cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(rec_count) := v_cz_des_cells_sexpl_id_tbl(k);
17162                      cz_pb_mgr.v_cz_des_cells_mark_char_ref(rec_count) := v_cz_des_cells_mark_char_tbl(k);
17163                   END LOOP;
17164                END IF;
17165             END LOOP;                       /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
17166          END IF;                            /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
17167 
17168          resolve_ids(cz_pb_mgr.v_cz_des_cells_rule_id_new_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of des chart cells');
17169          resolve_ids(cz_pb_mgr.v_cz_des_cells_popt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'cz_des_chart_cells.primary_opt_id',FLD_IGNORE_NOW);
17170 
17171          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
17172            mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sf_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_feature_id');
17173            mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sopt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_opt_id');
17174            mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sexpl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_feat_expl_id');
17175          ELSE
17176            resolve_ids(cz_pb_mgr.v_cz_des_cells_sf_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'secondary feature id of cz_des_cells',FLD_IGNORE_NOW);
17177            resolve_ids(cz_pb_mgr.v_cz_des_cells_sopt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'secondary opt id of cz_des_cells',FLD_IGNORE_NOW);
17178            resolve_ids(cz_pb_mgr.v_cz_des_cells_sexpl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'secondary feat expl id of cz_des_cells',FLD_IGNORE_NOW);
17179          END IF;
17180 
17181          ------insert new records into cz_des_chart_cells
17182          insert_des_chart_cells(cz_pb_mgr.v_status_code);
17183 
17184          --during model migration, if a rule_seq has a rule whose effectivity_set_id already
17185          --exists on the target, then set the rule effectivity to be
17186          --never effective for all the rules in that rule sequence
17187          --do this only if there is something to resolve(mm_v_ht_eff_set_tbl_t.COUNT >0)
17188          IF (    (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17189              AND (mm_v_tbl_rule_seq.COUNT > 0)
17190              AND (mm_v_ht_eff_set_tbl_t.COUNT > 0)
17191             )
17192          THEN
17193             mm_resolve_rule_seq_effsetid;
17194          END IF;
17195 
17196          -------------release local pl/sql tables of cz des chart cells
17197          v_cz_des_cells_rule_id_tbl.DELETE;
17198          v_cz_des_cells_sf_id_tbl.DELETE;
17199          v_cz_des_cells_sopt_id_tbl.DELETE;
17200          v_cz_des_cells_popt_id_tbl.DELETE;
17201          v_cz_des_cells_sexpl_id_tbl.DELETE;
17202 
17203       ELSE
17204          clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
17205       END IF;
17206    EXCEPTION
17207       WHEN OTHERS
17208       THEN
17209          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
17210          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_sql_err_msg, 'cz_pb_mgr.RULESCHEMA', SQLCODE);
17211          x_status := PUBLICATION_ERROR;
17212          RAISE pb_upload_rule_schema;
17213    END upload_rule_schema;
17214 -----------------------------------------------------------------------------------------------------
17215    PROCEDURE mm_raiseallpossiblesyncerrors
17216    AS
17217       v_prop_id cz_properties.property_id%TYPE;
17218       v_error_flag PLS_INTEGER := 0;
17219       v_null PLS_INTEGER;
17220       j PLS_INTEGER;
17221       v_target_item_type_name cz_item_types.name%TYPE;
17222 
17223       v_null_table  number_type_tbl;
17224 
17225    BEGIN
17226 -- PROPERTY: check if there is atleast one property where the names match, but datatype does not
17227 -- ITEM_TYPES: check if there are more source item properties than target item properties
17228 -- ITEM TYPES: heck if there is atleast one item where the item_type is different
17229 -- UI CONTENT TEMPLATES: UI Content template failure - exact match on TEMPLATE_TYPE, MESSAGE_TYPE, but mismatch
17230 --         on either of ROOT_ELEMENT_TYPE, MAIN_MESSAGE_ID, PARENT_CONTAINER_TYPE,
17231 --         ROOT ELEMENT SIGNATURE_ID or ROOT_REGION_CODE
17232 -- USAGE: Name does not match, but there are already 64 Usages
17233       FOR i IN 1 .. v_remote_prop_ref.COUNT
17234       LOOP
17235          BEGIN
17236             EXECUTE IMMEDIATE    'SELECT data_type FROM cz_properties'
17237                               || cz_pb_mgr.v_db_link
17238                               || ' WHERE deleted_flag = ''0'' AND name = :1 AND NVL(src_application_id, 0) = :2'
17239                          INTO v_null
17240                         USING v_property_record_ref(v_remote_prop_ref(i)).NAME, v_property_record_ref(v_remote_prop_ref(i)).src_application_id;
17241 
17242             IF (v_null <> v_property_record_ref(v_remote_prop_ref(i)).data_type)
17243             THEN
17244 --~> 'Property ''%PROPERTYNAME'' has a different data type on the target instance.'
17245                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_PROPERTY', 'PROPERTYNAME', v_property_record_ref(v_remote_prop_ref(i)).NAME);
17246                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17247                v_error_flag := 1;
17248             END IF;
17249          EXCEPTION
17250             WHEN NO_DATA_FOUND
17251             THEN
17252                NULL;
17253          END;
17254       END LOOP;
17255 
17256       FOR i IN 1 .. v_item_types_new_ref.COUNT
17257       LOOP
17258          BEGIN
17259             EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_types'
17260                               || cz_pb_mgr.v_db_link
17261                               || 'it '
17262                               || ' WHERE it.deleted_flag = ''0'''
17263                               || '   AND it.name = :1'
17264                               || '   AND NVL(it.src_application_id, 0) = :2'
17265                          INTO v_null
17266                         USING v_type_record_ref(v_item_types_new_ref(i)).NAME, v_type_record_ref(v_item_types_new_ref(i)).src_application_id;
17267 
17268             j := v_type_property_record_ref(v_item_types_new_ref(i)).FIRST;
17269 
17270             WHILE(j IS NOT NULL)
17271             LOOP
17272                BEGIN
17273                   EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_types'
17274                                     || cz_pb_mgr.v_db_link
17275                                     || 'it, '
17276                                     || '                 cz_item_type_properties'
17277                                     || cz_pb_mgr.v_db_link
17278                                     || 'tp, '
17279                                     || '                 cz_properties'
17280                                     || cz_pb_mgr.v_db_link
17281                                     || ' pr '
17282                                     || ' WHERE it.deleted_flag = ''0'''
17283                                     || '   AND pr.deleted_flag = ''0'''
17284                                     || '   AND tp.deleted_flag = ''0'''
17285                                     || '   AND it.item_type_id = tp.item_type_id'
17286                                     || '   AND pr.property_id = tp.property_id'
17287                                     || '   AND it.name = :1'
17288                                     || '   AND NVL(it.src_application_id, 0) = :2'
17289                                     || '   AND pr.name = :3'
17290                                     || '   AND NVL(pr.src_application_id, 0) = :4'
17291                                INTO v_null
17292                               USING v_type_record_ref(v_item_types_new_ref(i)).NAME
17293                                    ,v_type_record_ref(v_item_types_new_ref(i)).src_application_id
17294                                    ,v_type_property_record_ref(v_item_types_new_ref(i))(j).NAME
17295                                    ,v_type_property_record_ref(v_item_types_new_ref(i))(j).src_application_id;
17296                EXCEPTION
17297                   WHEN NO_DATA_FOUND
17298                   THEN
17299                      v_error_flag := 1;
17300                      --~> 'Item type ''%ITEMTYPENAME'' has a different combination of properties on the target instance.'
17301                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEMTYPE', 'ITEMTYPENAME', v_type_record_ref(v_item_types_new_ref(i)).NAME);
17302                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17303                END;
17304 
17305                j := v_type_property_record_ref(v_item_types_new_ref(i)).NEXT(j);
17306             END LOOP;
17307          EXCEPTION
17308             WHEN NO_DATA_FOUND
17309             THEN
17310                NULL;
17311          END;
17312       END LOOP;
17313 
17314       FOR i IN 1 .. v_item_masters_tbl.COUNT
17315       LOOP
17316 
17317          --Bug #6972667. This query can return several items with the same ref_part_nbr in different item types.
17318          --Judging from the SELECT NULL and empty exception block for no_data_found, the only purpose of this
17319          --query is to skip the second verification for items that don't exist on the target, so we can just
17320          --use BULK COLLECT.
17321 
17322          EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_masters'
17323                            || cz_pb_mgr.v_db_link
17324                            || ' it '
17325                            || ' WHERE it.deleted_flag = ''0'''
17326                            || '   AND it.ref_part_nbr = :1'
17327                            || '   AND NVL(it.src_application_id, 0) = :2'
17328                            || '   AND NVL(it.orig_sys_ref, ''0'') = :3'
17329                       BULK COLLECT INTO v_null_table
17330                      USING mm_v_itmst_ref_part_nbr_ref(i)
17331                          , mm_v_itmst_src_app_id_ref(i)
17332                          --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17333                          --source item_id
17334                          , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17335 
17336          IF ( v_null_table.COUNT > 0 ) THEN
17337 
17338             BEGIN
17339                EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_masters'
17340                                  || cz_pb_mgr.v_db_link
17341                                  || ' it, '
17342                                  || '                 cz_item_types'
17343                                  || cz_pb_mgr.v_db_link
17344                                  || ' ip '
17345                                  || ' WHERE it.deleted_flag = ''0'''
17346                                  || '   AND ip.deleted_flag = ''0'''
17347                                  || '   AND it.ref_part_nbr = :1'
17348                                  || '   AND NVL(it.src_application_id, 0) = :2'
17349                                  || '   AND ip.name = :3'
17350                                  || '   AND NVL(ip.src_application_id, 0) = :4'
17351                                  || '   AND NVL(it.orig_sys_ref, ''0'') = :5'
17352 
17353                                   --Bug #6972667. Missing join condition.
17354 
17355                                  || '   AND ip.item_type_id = it.item_type_id'
17356                             INTO v_null
17357                            USING mm_v_itmst_ref_part_nbr_ref(i)
17358                                , mm_v_itmst_src_app_id_ref(i)
17359                                , v_type_record_ref(v_item_types_tbl(i)).NAME
17360                                , v_type_record_ref(v_item_types_tbl(i)).src_application_id
17361                                --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17362                                --source item_id
17363                                , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17364             EXCEPTION
17365                WHEN NO_DATA_FOUND
17366                THEN
17367                   v_error_flag := 1;
17368                   --~> 'Item ''%ITEMNAME'' has a different item type on the target instance.'
17369 		  -- Bug 5219852; 06-Sep-2006; kdande; Modified the message to show the source and target item type names
17370                   EXECUTE IMMEDIATE    'SELECT ip.name FROM cz_item_masters'
17371                                    || cz_pb_mgr.v_db_link
17372                                    || ' it, cz_item_types'
17373                                    || cz_pb_mgr.v_db_link
17374                                    || ' ip '
17375                                    || ' WHERE it.deleted_flag = ''0'''
17376                                    || '   AND ip.deleted_flag = ''0'''
17377                                    || '   AND it.ref_part_nbr = :1'
17378                                    || '   AND ip.item_type_id = it.item_type_id'
17379                                    || '   AND NVL(it.src_application_id, 0) = :2'
17380                                    || '   AND NVL(it.orig_sys_ref, ''0'') = :3'
17381                               INTO v_target_item_type_name
17382                              USING mm_v_itmst_ref_part_nbr_ref(i)
17383                                  , mm_v_itmst_src_app_id_ref(i)
17384                                  --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17385                                  --source item_id
17386                                  , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17387                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEM', 'ITEMNAME', mm_v_itmst_ref_part_nbr_ref(i),
17388                                              'SRCNAME', v_type_record_ref(v_item_types_tbl(i)).NAME,
17389 					     'TGTNAME', v_target_item_type_name);
17390                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17391             END;
17392          END IF; --v_null_table.COUNT > 0
17393       END LOOP;
17394 
17395       IF (v_error_flag = 1)
17396       THEN
17397          RAISE cz_pb_global_synch;
17398       END IF;
17399    EXCEPTION
17400       WHEN cz_pb_global_synch
17401       THEN
17402          RAISE;
17403       WHEN OTHERS
17404       THEN
17405 --~>'Unexpected error during upfront validation: %ERRORTEXT'
17406          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_UNEXPECTED', 'ERRORTEXT', SQLERRM);
17407          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17408          RAISE;
17409    END mm_raiseallpossiblesyncerrors;
17410 ------------------------------------------------------------------------------------------------
17411 --Bug #5186307. The bug is deferred.
17412 /*
17413 PROCEDURE split_item_origsysref( p_origsysref IN VARCHAR2
17414                                , x_item_id OUT NOCOPY NUMBER
17415                                , x_org_id  OUT NOCOPY NUMBER) IS
17416 BEGIN
17417 
17418   --The values can only be not null valid numbers, otherwise TO_NUMBER will fail.
17419 
17420   x_item_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, 1, INSTR(p_origsysref, ':') - 1), 'NULL'));
17421   x_org_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, INSTR(p_origsysref, ':') + 1), 'NULL'));
17422 END;
17423 */
17424 ------------------------------------------------------------------------------------------------
17425 --Bug #5186307. The bug is deferred, the function just returns the parameter.
17426 /*
17427 FUNCTION synch_item_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
17428 
17429   l_item_id   NUMBER;
17430   l_org_id    NUMBER;
17431 BEGIN
17432 
17433   IF(p_origsysref IS NULL)THEN
17434 
17435     --This is an item with source application INV and null orig_sys_ref. Don't do anything for now,
17436     --but this may be a problem. Not sure if this can happen here, may be caught earlier.
17437 
17438     RETURN NULL;
17439   END IF;
17440 
17441   IF(v_item_synched_osr.EXISTS(p_origsysref))THEN RETURN v_item_synched_osr(p_origsysref); END IF;
17442 
17443   --Just return the parameter.
17444 
17445   --split_item_origsysref(p_origsysref, l_item_id, l_org_id);
17446 
17447   v_item_synched_osr(p_origsysref) := p_origsysref;
17448   RETURN v_item_synched_osr(p_origsysref);
17449 END;
17450 */
17451 ------------------------------------------------------------------------------------------------
17452 --Bug #5186307. The bug is deferred, the function just returns the parameter.
17453 /*
17454 FUNCTION synch_itemtype_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
17455 
17456   l_catalog_id   NUMBER;
17457 BEGIN
17458 
17459   IF(p_origsysref IS NULL)THEN
17460 
17461     --This is an item type with source application INV and null orig_sys_ref. Don't do anything for
17462     --now, but this may be a problem. Not sure if this can happen here, may be caught earlier.
17463 
17464     RETURN NULL;
17465   END IF;
17466 
17467   IF(v_itemtype_synched_osr.EXISTS(p_origsysref))THEN RETURN v_itemtype_synched_osr(p_origsysref); END IF;
17468 
17469   --The value can only be a valid not null number.
17470 
17471   l_catalog_id := TO_NUMBER(p_origsysref);
17472 
17473   --Just return the parameter.
17474 
17475   v_itemtype_synched_osr(p_origsysref) := p_origsysref;
17476   RETURN v_itemtype_synched_osr(p_origsysref);
17477 END;
17478 */
17479 ------------------------------------------------------------------------------------------------
17480 --This procedure reads the item/property data into the arrays, previously done by insert_item_schema,
17481 --and performs the upfron validations for model migration.
17482    PROCEDURE read_item_schema
17483    IS
17484       v_cz_items_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
17485       v_cz_types_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
17486       v_item_types_orig_tbl cz_pb_mgr.orig_sys_ref_type;
17487       v_remote_prop_tbl cz_pb_mgr.t_ref;
17488       v_prop_type_tbl cz_pb_mgr.t_ref;
17489       v_prop_src_app_tbl cz_pb_mgr.t_ref;
17490       v_prop_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
17491       v_type_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
17492       v_type_src_app_tbl cz_pb_mgr.t_ref;
17493       v_bom_flg_tbl cz_pb_mgr.t_ref;
17494       v_bom_flg_ref cz_pb_mgr.t_ref;
17495       plsql_table_list cz_pb_mgr.col_plsql_table_list;
17496       rec_count NUMBER;
17497       mm_v_itmst_ref_part_nbr_tbl varchar_type_4000_tbl;
17498       mm_v_itmst_src_app_id_tbl t_ref;
17499    BEGIN
17500 ---COLLECT ALL THE SOURCE ITEM MASTER RECORDS
17501       IF (cz_pb_mgr.v_ps_item_id_tbl.COUNT > 0)
17502       THEN
17503          cz_pb_mgr.v_item_masters_tbl.DELETE;
17504          cz_pb_mgr.v_item_types_tbl.DELETE;
17505          cz_pb_mgr.v_items_orig_ref.DELETE;
17506 
17507          FOR i IN cz_pb_mgr.v_ps_item_id_tbl.FIRST .. cz_pb_mgr.v_ps_item_id_tbl.LAST
17508          LOOP
17509             cz_pb_mgr.v_item_masters_ref.DELETE;
17510             cz_pb_mgr.v_item_types_ref.DELETE;
17511             v_bom_flg_tbl.DELETE;
17512             v_item_types_orig_tbl.DELETE;
17513 
17514 -- Bug9619157. As a part of the investigation this was one new issue found where
17515 -- item for the reference BOM node was not resolved. Hence subsequence code has been added
17516 -- to take care of item of ps_node_type=263 with src_application not null
17517 
17518             BEGIN
17519                IF ((cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_MODEL)
17520                    OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_OPTIONCLASS) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_STANDARD)
17521                    OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_REFERENCE AND cz_pb_mgr.v_ps_src_appl_id_old_tbl(i) = SRC_APPL_ID_BOM))
17522                THEN
17523                   SELECT item_id, item_type_id
17524                         ,DECODE(cz_pb_mgr.bomsynch_flag
17525                                ,'Y', NVL(cz_bom_synch.itemmaster_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17526                                ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
17527                                )
17528                         ,bom_item, ref_part_nbr, NVL(src_application_id, 0)
17529                   BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref
17530                         ,v_item_types_orig_tbl
17531                         ,v_bom_flg_tbl, mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
17532                     FROM cz_item_masters
17533                    WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
17534                      AND cz_item_masters.item_id IS NOT NULL
17535                      AND cz_item_masters.deleted_flag = '0';
17536                ELSE
17537                   SELECT item_id, item_type_id, orig_sys_ref, nonbom_item
17538                         ,ref_part_nbr, NVL(src_application_id, 0)
17539                   BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref, v_item_types_orig_tbl, v_bom_flg_tbl
17540                         ,mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
17541                     FROM cz_item_masters
17542                    WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
17543                      AND cz_item_masters.item_id IS NOT NULL
17544                      AND cz_item_masters.deleted_flag = '0';
17545                END IF;
17546             EXCEPTION
17547                WHEN NO_DATA_FOUND
17548                THEN
17549                   -----if no items exist, logging a message is not required
17550                   NULL;
17551                WHEN OTHERS
17552                THEN
17553                   RAISE;
17554             END;
17555 
17556             rec_count := cz_pb_mgr.v_item_masters_tbl.COUNT;
17557 
17558             IF (cz_pb_mgr.v_item_masters_ref.COUNT > 0)
17559             THEN
17560                FOR k IN cz_pb_mgr.v_item_masters_ref.FIRST .. cz_pb_mgr.v_item_masters_ref.LAST
17561                LOOP
17562                   IF (cz_pb_mgr.v_item_masters_ref(k) IS NOT NULL)
17563                   THEN
17564                      IF (NOT v_cz_items_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_masters_ref(k)))
17565                      THEN
17566                         rec_count := rec_count + 1;
17567                         cz_pb_mgr.v_item_masters_tbl(rec_count) := cz_pb_mgr.v_item_masters_ref(k);
17568                         cz_pb_mgr.mm_v_itmst_ref_part_nbr_ref(rec_count) := mm_v_itmst_ref_part_nbr_tbl(k);
17569                         cz_pb_mgr.mm_v_itmst_src_app_id_ref(rec_count) := mm_v_itmst_src_app_id_tbl(k);
17570                         cz_pb_mgr.v_item_types_tbl(rec_count) := cz_pb_mgr.v_item_types_ref(k);
17571                         cz_pb_mgr.v_items_orig_ref(rec_count) := v_item_types_orig_tbl(k);
17572                         --for model migration, maintain a sync table to get the
17573                         --orig_sys_ref from a given item
17574                         mm_v_ht_items_orig_ref(cz_pb_mgr.v_item_masters_ref(k)) := v_item_types_orig_tbl(k);
17575                         v_cz_items_old_ref_idx_ref(cz_pb_mgr.v_item_masters_ref(k)) := cz_pb_mgr.v_item_masters_ref(k);
17576                         v_bom_flg_ref(rec_count) := v_bom_flg_tbl(k);
17577                      END IF;
17578                   END IF;
17579                END LOOP;
17580             END IF;                                                                             /* end if of cz_pb_mgr.v_item_masters_ref.COUNT > 0 */
17581          END LOOP;                                                                          /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
17582       END IF;                                                                                /* end if of cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
17583 
17584       IF (cz_pb_mgr.v_item_types_tbl.COUNT > 0)
17585       THEN
17586          cz_pb_mgr.v_item_types_new_ref.DELETE;
17587          cz_pb_mgr.v_item_types_orig_ref.DELETE;
17588          v_cz_types_old_ref_idx_ref.DELETE;
17589 
17590          FOR i IN cz_pb_mgr.v_item_types_tbl.FIRST .. cz_pb_mgr.v_item_types_tbl.LAST
17591          LOOP
17592             v_item_types_orig_tbl.DELETE;
17593             cz_pb_mgr.v_item_types_ref.DELETE;
17594 
17595             BEGIN
17596                IF ((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = bom_item))
17597                THEN
17598                   SELECT item_type_id, NAME, NVL(src_application_id, 0)
17599                         ,DECODE(cz_pb_mgr.bomsynch_flag
17600                                ,'Y', NVL(cz_bom_synch.itemtype_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17601                                ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
17602                                )
17603                   BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl
17604                         ,v_item_types_orig_tbl
17605                     FROM cz_item_types
17606                    WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
17607                ELSIF((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = nonbom_item))
17608                THEN
17609                   SELECT item_type_id, NAME, NVL(src_application_id, 0), orig_sys_ref
17610                   BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl, v_item_types_orig_tbl
17611                     FROM cz_item_types
17612                    WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
17613                END IF;
17614             EXCEPTION
17615                WHEN NO_DATA_FOUND
17616                THEN
17617                   NULL;
17618                WHEN OTHERS
17619                THEN
17620                   RAISE;
17621             END;
17622 
17623             IF (cz_pb_mgr.v_item_types_ref.COUNT > 0)
17624             THEN
17625                FOR k IN cz_pb_mgr.v_item_types_ref.FIRST .. cz_pb_mgr.v_item_types_ref.LAST
17626                LOOP
17627                   IF (cz_pb_mgr.v_item_types_ref(k) IS NOT NULL)
17628                   THEN
17629                      IF (NOT v_cz_types_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_types_ref(k)))
17630                      THEN
17631                         rec_count := cz_pb_mgr.v_item_types_new_ref.COUNT + 1;
17632                         cz_pb_mgr.v_item_types_new_ref(rec_count) := cz_pb_mgr.v_item_types_ref(k);
17633                         cz_pb_mgr.v_item_types_orig_ref(rec_count) := v_item_types_orig_tbl(k);
17634                         --for model migration, maintain a sync table to get the
17635                         --orig_sys_ref from a given item type
17636                         mm_v_ht_item_types_orig_ref(cz_pb_mgr.v_item_types_ref(k)) := v_item_types_orig_tbl(k);
17637                         v_cz_types_old_ref_idx_ref(cz_pb_mgr.v_item_types_ref(k)) := cz_pb_mgr.v_item_types_ref(k);
17638                         v_type_record_ref(v_item_types_ref(k)).NAME := v_type_name_tbl(k);
17639                         v_type_record_ref(v_item_types_ref(k)).src_application_id := v_type_src_app_tbl(k);
17640                      END IF;
17641                   END IF;
17642                END LOOP;
17643             END IF;
17644          END LOOP;
17645       END IF;
17646 
17647 --~> Properties
17648       cz_pb_mgr.v_remote_prop_ref.DELETE;
17649       v_property_record_ref.DELETE;
17650 
17651       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17652       THEN
17653          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17654          LOOP
17655             v_remote_prop_tbl.DELETE;
17656             BEGIN
17657               SELECT property_id, data_type, name, src_application_id
17658                 BULK COLLECT INTO v_remote_prop_tbl, v_prop_type_tbl, v_prop_name_tbl, v_prop_src_app_tbl
17659                 FROM (SELECT itp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17660                       from cz_item_masters im, cz_item_type_properties itp, cz_ps_nodes psn, cz_properties p
17661                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.deleted_flag = '0'
17662                       and psn.item_id = im.item_id AND im.deleted_flag = '0' and im.item_type_id = itp.item_type_id
17663                       AND itp.deleted_flag = '0' and itp.property_id = p.property_id and p.deleted_flag = '0'
17664                       UNION
17665                       SELECT psp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17666                       from cz_ps_prop_vals psp, cz_ps_nodes psn, cz_properties p
17667                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.ps_node_id = psp.ps_node_id
17668                       and psn.deleted_flag = '0' AND psp.deleted_Flag = '0' and psp.property_id = p.property_id
17669                       and p.deleted_flag = '0'
17670                       UNION
17671                       SELECT ipv.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17672                       from cz_ps_nodes psn, cz_item_property_values ipv, cz_properties p
17673                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.item_id = ipv.item_id
17674                       and psn.deleted_flag = '0' and ipv.deleted_flag = '0' and ipv.property_id = p.property_id
17675                       and p.deleted_flag = '0');
17676 
17677             EXCEPTION
17678                WHEN no_data_found THEN
17679                   NULL;
17680                WHEN OTHERS THEN
17681                   log_pb_errors(SQLERRM,1,'cz_pb_mgr PROP SELECT',SQLCODE);
17682                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17683                   RAISE;
17684             END;
17685 
17686             IF (v_remote_prop_tbl.COUNT > 0)
17687             THEN
17688                FOR j IN v_remote_prop_tbl.FIRST .. v_remote_prop_tbl.LAST
17689                LOOP
17690                   IF (v_remote_prop_tbl(j) IS NOT NULL)
17691                   THEN
17692                      rec_count := cz_pb_mgr.v_remote_prop_ref.COUNT + 1;
17693                      cz_pb_mgr.v_remote_prop_ref(rec_count) := v_remote_prop_tbl(j);
17694 
17695                      IF (NOT v_property_record_ref.EXISTS(v_remote_prop_tbl(j)))
17696                      THEN
17697                         v_property_record_ref(v_remote_prop_tbl(j)).NAME := v_prop_name_tbl(j);
17698                         v_property_record_ref(v_remote_prop_tbl(j)).data_type := v_prop_type_tbl(j);
17699                         v_property_record_ref(v_remote_prop_tbl(j)).src_application_id := v_prop_src_app_tbl(j);
17700                      END IF;
17701                   END IF;
17702                END LOOP;
17703             END IF;
17704          END LOOP;
17705       END IF;
17706 
17707     -- The copy of item type props and item prop values is uncessary for publication (4861805)
17708     IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
17709 --~> Item type properties
17710       IF (cz_pb_mgr.v_item_types_new_ref.COUNT > 0)
17711       THEN
17712          cz_pb_mgr.v_item_prop_id_tbl.DELETE;
17713          cz_pb_mgr.v_item_prop_type_tbl.DELETE;
17714          cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
17715          cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
17716 
17717          FOR i IN cz_pb_mgr.v_item_types_new_ref.FIRST .. cz_pb_mgr.v_item_types_new_ref.LAST
17718          LOOP
17719             cz_pb_mgr.v_item_prop_id_ref.DELETE;
17720             cz_pb_mgr.v_item_prop_type_ref.DELETE;
17721             cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
17722             cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
17723             cz_pb_mgr.v_tgt_item_type_prop_orig_ref.DELETE;    --Bug9031588
17724             cz_pb_mgr.v_src_item_type_prop_orig_ref.DELETE;    --Bug9031588
17725             BEGIN
17726                SELECT itp.property_id, itp.item_type_id,p.def_num_value, p.data_type
17727                      ,DECODE (cz_pb_mgr.bomsynch_flag
17728                             ,'Y', NVL(cz_bom_synch.itemtypeprop_origsysref(itp.orig_sys_ref), cz_pb_mgr.null_string)
17729                             ,NVL(itp.orig_sys_ref, cz_pb_mgr.null_string)),NVL(itp.orig_sys_ref, cz_pb_mgr.null_string)
17730                BULK COLLECT INTO cz_pb_mgr.v_item_prop_id_ref, cz_pb_mgr.v_item_prop_type_ref
17731                       ,cz_pb_mgr.v_item_prop_num_val_ref, cz_pb_mgr.v_item_prop_data_typ_ref
17732                       ,v_tgt_item_type_prop_orig_ref, v_src_item_type_prop_orig_ref
17733                  FROM cz_item_type_properties itp, cz_properties p
17734                 WHERE itp.item_type_id = cz_pb_mgr.v_item_types_new_ref(i)
17735                       AND p.deleted_flag = '0'
17736                       AND itp.property_id =p.property_id
17737                       AND itp.deleted_flag = '0';
17738             EXCEPTION
17739                WHEN NO_DATA_FOUND
17740                THEN
17741                   NULL;
17742                WHEN OTHERS
17743                THEN
17744                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_item_type_properties', 'SQLERRM', SQLERRM);
17745                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPE', SQLCODE);
17746                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17747             END;
17748 
17749             rec_count := cz_pb_mgr.v_item_prop_id_tbl.COUNT;
17750 
17751             IF (cz_pb_mgr.v_item_prop_id_ref.COUNT > 0)
17752             THEN
17753                FOR k IN cz_pb_mgr.v_item_prop_id_ref.FIRST .. cz_pb_mgr.v_item_prop_id_ref.LAST
17754                LOOP
17755                   rec_count := rec_count + 1;
17756                   cz_pb_mgr.v_item_prop_id_tbl(rec_count) := cz_pb_mgr.v_item_prop_id_ref(k);
17757                   cz_pb_mgr.v_item_prop_type_tbl(rec_count) := cz_pb_mgr.v_item_prop_type_ref(k);
17758                   cz_pb_mgr.v_item_prop_num_val_tbl(rec_count):=cz_pb_mgr.v_item_prop_num_val_ref(k);
17759                   cz_pb_mgr.v_item_prop_data_typ_tbl(rec_count):=cz_pb_mgr.v_item_prop_data_typ_ref(k);
17760                   cz_pb_mgr.v_tgt_type_prop_orig_tbl(rec_count):=cz_pb_mgr.v_tgt_item_type_prop_orig_ref(k);   --Bug9031588
17761                   cz_pb_mgr.v_src_type_prop_orig_tbl(rec_count):=cz_pb_mgr.v_src_item_type_prop_orig_ref(k);   --Bug9031588
17762                   v_type_property_record_ref(v_item_prop_type_ref(k))(v_item_prop_id_ref(k)) := v_property_record_ref(v_item_prop_id_ref(k));
17763                   mm_v_ht_item_typ_prop_orig_ref(v_src_item_type_prop_orig_ref(k)) := v_tgt_item_type_prop_orig_ref(k);  --Bug9031588
17764                END LOOP;
17765             END IF;
17766          END LOOP;  --  end loop of FOR I IN cz_pb_mgr.v_item_types_tbl
17767       END IF;       --  cz_pb_mgr.v_item_types_new_ref.COUNT > 0
17768 
17769       IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
17770       THEN
17771          cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
17772          cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
17773 
17774          FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
17775          LOOP
17776             cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
17777             cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
17778             cz_pb_mgr.v_it_prop_value_ref.DELETE;
17779             cz_pb_mgr.v_tgt_item_prop_val_orig_ref.DELETE;    --Bug9031588
17780             cz_pb_mgr.v_src_item_prop_val_orig_ref.DELETE;    --Bug9031588
17781 
17782             BEGIN
17783                SELECT property_id, item_id
17784                       ,DECODE(cz_pb_mgr.bomsynch_flag
17785                             ,'Y', NVL(cz_bom_synch.itempropvalues_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17786                             , NVL(orig_sys_ref, cz_pb_mgr.null_string)
17787                             ),NVL(orig_sys_ref, cz_pb_mgr.null_string)
17788                BULK COLLECT INTO cz_pb_mgr.v_it_prop_vals_id_ref, cz_pb_mgr.v_it_prop_vals_item_ref
17789                       ,v_tgt_item_prop_val_orig_ref,v_src_item_prop_val_orig_ref
17790                  FROM cz_item_property_values
17791                 WHERE item_id = cz_pb_mgr.v_item_masters_tbl(i) AND deleted_flag = '0';
17792             EXCEPTION
17793                WHEN NO_DATA_FOUND
17794                THEN
17795                   cz_pb_mgr.v_err_message := 'No item property value found for item id: ' || TO_CHAR(cz_pb_mgr.v_item_masters_tbl(i));
17796                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPES', SQLCODE);
17797                WHEN OTHERS
17798                THEN
17799                   RAISE;
17800             END;
17801 
17802             rec_count := cz_pb_mgr.v_it_prop_vals_id_tbl.COUNT;
17803 
17804             IF (cz_pb_mgr.v_it_prop_vals_id_ref.COUNT > 0)
17805             THEN
17806                FOR k IN cz_pb_mgr.v_it_prop_vals_id_ref.FIRST .. cz_pb_mgr.v_it_prop_vals_id_ref.LAST
17807                LOOP
17808                   rec_count := rec_count + 1;
17809                   cz_pb_mgr.v_it_prop_vals_id_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_id_ref(k);
17810                   cz_pb_mgr.v_it_prop_vals_item_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_item_ref(k);
17811                   cz_pb_mgr.v_tgt_prop_val_orig_tbl(rec_count) := cz_pb_mgr.v_tgt_item_prop_val_orig_ref(k);   --Bug9031588
17812                   cz_pb_mgr.v_src_prop_val_orig_tbl(rec_count) := cz_pb_mgr.v_src_item_prop_val_orig_ref(k);   --Bug9031588
17813                   mm_v_ht_item_prop_val_orig_ref(v_src_item_prop_val_orig_ref(k)) := v_tgt_item_prop_val_orig_ref(k);  --Bug9031588
17814                END LOOP;
17815             END IF;
17816          END LOOP;  --  end loop of FOR I IN cz_pb_mgr.v_item_masters_tbl
17817       END IF;       --  end if of cz_pb_mgr.v_item_masters_tbl.COUNT > 0
17818     END IF;
17819 
17820     --Bug #5186307. Some of the item and item types can be bom, although corresponding ps nodes and the whole
17821     --model can be non-bom (item-based ps nodes and populators). For a non-bom model bom synchronization will
17822     --not be called, and it is just impossible to call it. However, the orig_sys_refs of the bom items and
17823     --item types still need to be synchronized. The following code implements this synchronization for a non-
17824     --bom model.
17825 
17826     --The bug is deferred.
17827 /*
17828     IF(cz_pb_mgr.bomsynch_flag = 'N' AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)THEN
17829 
17830       FOR i IN 1..v_item_masters_tbl.COUNT LOOP
17831 
17832         IF(mm_v_itmst_src_app_id_ref(i) = 401)THEN
17833 
17834            v_items_orig_ref(i) := synch_item_origsysref(v_items_orig_ref(i));
17835         END IF;
17836       END LOOP;
17837 
17838       FOR i IN 1..v_item_types_new_ref.COUNT LOOP
17839 
17840         IF(v_type_record_ref(v_item_types_new_ref(i)).src_application_id = 702)THEN
17841 
17842            v_item_types_orig_ref(i) := synch_itemtype_origsysref(v_item_types_orig_ref(i));
17843         END IF;
17844       END LOOP;
17845     END IF;
17846 */
17847     --Now run the upfront validations for model migration.
17848     IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17849     THEN
17850        mm_raiseallpossiblesyncerrors;
17851     END IF;
17852    END;
17853 -----------------------------------------------------------------------------------------------------
17854 -------------- Load data : procedure used to export data
17855    PROCEDURE load_data(
17856       v_publication_id IN cz_model_publications.publication_id%TYPE
17857      ,v_root_model_id IN cz_model_publications.model_id%TYPE
17858      ,v_server_id IN cz_model_publications.server_id%TYPE
17859      ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
17860      ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
17861    )
17862    AS
17863       v_db_link VARCHAR2(128);
17864       seq_cv ref_cursor;
17865       rec_count PLS_INTEGER := 0;
17866       resolution_status VARCHAR2(200);
17867       v_copy_rules_flag VARCHAR2(3) := '';
17868       plsql_table_list cz_pb_mgr.col_plsql_table_list;
17869    BEGIN
17870       -------select value of setting id CopyRules from cz_db_settings
17871       IF (cz_pb_mgr.g_log_timing = publication_timing)
17872       THEN
17873          log_timing_message('start get_copy_rules_flg');
17874       END IF;
17875 
17876       get_copy_rules_flg(v_copy_rules_flag);
17877 
17878       IF (cz_pb_mgr.g_log_timing = publication_timing)
17879       THEN
17880          log_timing_message('end get_copy_rules_flg: copy_rules_flag='||v_copy_rules_flag);
17881       END IF;
17882 
17883       IF (copy_rules = 'NO')
17884       THEN
17885          v_copy_rules_flag := 'NO';
17886       END IF;
17887 
17888       ---------check languages on source and target instances
17889       IF (cz_pb_mgr.g_log_timing = publication_timing)
17890       THEN
17891          log_timing_message('start pb_language_check');
17892       END IF;
17893 
17894       pb_language_check;
17895 
17896   --- To get the single language from cz_db_settins -- SKM
17897       get_single_pb_language;
17898 
17899   --- BulkSelectInsert() Call -- SKM
17900       get_remote_select_insert;
17901 
17902       IF (cz_pb_mgr.g_log_timing = publication_timing)
17903       THEN
17904          log_timing_message('end pb_language_check');
17905       END IF;
17906 
17907       -- load the ps nodes needed for ps_prop_vals and items
17908       -- this process of getting all the ps node information used to happen in upload_ps_structure, but
17909       -- model migration needed this to happen much before that
17910       mm_v_ht_item_types_orig_ref.DELETE;
17911       mm_v_ht_items_orig_ref.DELETE;
17912       mm_loadoldpsnodesforitems;
17913       IF (cz_pb_mgr.v_server_id <> 0 ) THEN
17914         read_item_schema;
17915       END IF;
17916 
17917       --------upload item sub-schema
17918       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17919       THEN
17920          IF (cz_pb_mgr.g_log_timing = publication_timing)
17921          THEN
17922             log_timing_message('start upload_item_schema');
17923          END IF;
17924 
17925          --upload_item_schema used to to happen after upload_ps_structure, upload_ui_schema
17926          --but model migration required this to happen earlier.  Moving this did not seem to affect
17927          --publication.
17928          upload_item_schema(cz_pb_mgr.v_cz_ps_nodes_old_tbl, cz_pb_mgr.v_status_code);
17929 
17930          IF (cz_pb_mgr.g_log_timing = publication_timing)
17931          THEN
17932             log_timing_message('end upload_item_schema');
17933          END IF;
17934       END IF;
17935 
17936       ------export product structure
17937       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17938       THEN
17939          IF (cz_pb_mgr.g_log_timing = publication_timing)
17940          THEN
17941             log_timing_message('start upload_ps_structure');
17942          END IF;
17943 
17944          upload_ps_structure(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
17945 
17946          IF (cz_pb_mgr.g_log_timing = publication_timing)
17947          THEN
17948             log_timing_message('end upload_ps_structure');
17949          END IF;
17950       END IF;
17951 
17952       --------------upload UI Schema
17953       IF (cz_pb_mgr.g_log_timing = publication_timing)
17954       THEN
17955          log_timing_message('start upload_ui_schema');
17956       END IF;
17957 
17958       upload_ui_schema(cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code, p_copy_nonjradui);
17959 
17960       IF (cz_pb_mgr.g_log_timing = publication_timing)
17961       THEN
17962          log_timing_message('end upload_ui_schema');
17963       END IF;
17964 
17965       ------upload rule schema
17966       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17967       THEN
17968          IF (cz_pb_mgr.g_log_timing = publication_timing)
17969          THEN
17970             log_timing_message('start upload_rule_schema');
17971          END IF;
17972 
17973          upload_rule_schema(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
17974 
17975          IF (cz_pb_mgr.g_log_timing = publication_timing)
17976          THEN
17977             log_timing_message('end upload_rule_schema');
17978          END IF;
17979       END IF;
17980 
17981       x_status_code := cz_pb_mgr.v_status_code;
17982    EXCEPTION
17983       WHEN cz_pb_global_synch
17984       THEN
17985 --~>  'Errors in upfront validation, unable to continue.'
17986          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPVAL_ERRORS');
17987          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17988          x_status_code := PUBLICATION_ERROR;
17989       WHEN pb_upload_ps_schema
17990       THEN
17991          cz_pb_mgr.v_err_message := 'Error in export of product structure for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
17992          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PRODSTRUCTURE', SQLCODE);
17993          x_status_code := PUBLICATION_ERROR;
17994       WHEN pb_upload_ui_schema
17995       THEN
17996          cz_pb_mgr.v_err_message := 'Error in upload of UI schema for publication id : ' || cz_pb_mgr.v_publication_id;
17997          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
17998          x_status_code := PUBLICATION_ERROR;
17999       WHEN pb_upload_rule_schema
18000       THEN
18001          cz_pb_mgr.v_err_message := 'Error in upload of RULE schema for publication id : ' || cz_pb_mgr.v_publication_id || ':' || SQLERRM;
18002          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADRULESCHEMA', SQLCODE);
18003          x_status_code := PUBLICATION_ERROR;
18004       WHEN pb_upload_item_schema
18005       THEN
18006          cz_pb_mgr.v_err_message := 'Error in upload of ITEM schema for publication id : ' || cz_pb_mgr.v_publication_id;
18007          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADITEMSCHEMA', SQLCODE);
18008          x_status_code := PUBLICATION_ERROR;
18009       WHEN OTHERS
18010       THEN
18011          x_status_code := PUBLICATION_ERROR;
18012          cz_pb_mgr.v_err_message := 'Fatal error occured during data upload ';
18013          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ENDLOADDATA', SQLCODE);
18014    END load_data;
18015 
18016 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18017    PROCEDURE insert_tmp_pub(p_temp_id IN NUMBER)
18018    IS
18019       l_old_publication_id NUMBER;
18020       l_remote_publication_id NUMBER;
18021       l_new_publication_id NUMBER;
18022       v_inst_str VARCHAR2(2000);
18023    BEGIN
18024       v_inst_str :=
18025             'UPDATE cz_model_publications set deleted_flag = ''1'' WHERE object_id := :1 '
18026          || ' '
18027          || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
18028 
18029       EXECUTE IMMEDIATE v_inst_str
18030                   USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
18031 
18032       COMMIT;
18033       v_inst_str :=
18034             'UPDATE cz_model_publications'
18035          || cz_pb_mgr.v_db_link
18036          || ' set deleted_flag = ''1'' WHERE object_id := :1'
18037          || ' '
18038          || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
18039 
18040       EXECUTE IMMEDIATE v_inst_str
18041                   USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
18042 
18043       COMMIT;
18044 
18045       SELECT cz_model_publications_s.NEXTVAL
18046         INTO l_old_publication_id
18047         FROM DUAL;
18048 
18049       l_remote_publication_id :=
18050          cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
18051                                     , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
18052                                     ,cz_pb_mgr.v_oraclesequenceincr
18053                                     );
18054       v_inst_str :=
18055             'INSERT INTO cz_model_publications'
18056          || ' '
18057          || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
18058          || ' '
18059          || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
18060          || ' '
18061          || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
18062          || ' '
18063          || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
18064          || ' '
18065          || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
18066          || ' '
18067          || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
18068          || ' '
18069          || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
18070          || g_source_flag
18071          || ''',:4,SOURCE_UI_DEF_ID,'
18072          || ' '
18073          || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag  FROM  DUAL ';
18074 
18075       EXECUTE IMMEDIATE v_inst_str
18076                   USING l_old_publication_id, p_temp_id, p_temp_id, l_remote_publication_id;
18077 
18078       v_inst_str :=
18079             'INSERT INTO cz_model_publications'
18080          || cz_pb_mgr.v_db_link
18081          || ''
18082          || ' '
18083          || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
18084          || ' '
18085          || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
18086          || ' '
18087          || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
18088          || ' '
18089          || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
18090          || ' '
18091          || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
18092          || ' '
18093          || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
18094          || ' '
18095          || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
18096          || g_target_flag
18097          || ''',:4,SOURCE_UI_DEF_ID,'
18098          || ' '
18099          || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag  FROM  DUAL ';
18100 
18101       EXECUTE IMMEDIATE v_inst_str
18102                   USING l_remote_publication_id, p_temp_id, p_temp_id, l_old_publication_id;
18103 
18104       COMMIT;
18105    EXCEPTION
18106       WHEN OTHERS
18107       THEN
18108          NULL;
18109    END;
18110 
18111 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18112 ----will global template have a button_bar_template
18113 ----may be not
18114 
18115    PROCEDURE export_global_template(p_template_id IN NUMBER, p_publication_id IN NUMBER)
18116    IS
18117       rec_count NUMBER := 0;
18118       l_new_document VARCHAR2(255);
18119       l_document_id NUMBER;
18120       l_str VARCHAR2(2000);
18121    BEGIN
18122       -----bulk collect from templates
18123       cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
18124       cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
18125       cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
18126       cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
18127       cz_pb_mgr.g_ui_templates_title_ref.DELETE;
18128       cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
18129       cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
18130       cz_pb_mgr.v_intl_text_model_tbl.DELETE;
18131       cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
18132 
18133       IF (cz_pb_mgr.v_server_id = 0)
18134       THEN
18135          SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates_seq
18136                                            , 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link
18137                                            ,cz_pb_mgr.v_oraclesequenceincr
18138                                            )
18139                ,template_id, main_message_id, title_id
18140                ,jrad_doc, -1, 0
18141                ,0
18142          BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref
18143                ,cz_pb_mgr.g_ui_templates_old_temp_id_ref, cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.g_ui_templates_title_ref
18144                ,cz_pb_mgr.g_ui_templates_jrad_new_ref, cz_pb_mgr.v_intl_text_model_tbl, cz_pb_mgr.v_intl_text_ui_tbl
18145                ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
18146            FROM cz_ui_templates
18147           WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.ui_def_id = 0 AND cz_ui_templates.deleted_flag = record_not_deleted;
18148       ELSE
18149          SELECT template_id, template_id, main_message_id
18150                ,title_id, jrad_doc, -1
18151                ,0, 0
18152          BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_old_temp_id_ref, cz_pb_mgr.g_ui_templates_msg_id_ref
18153                ,cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.g_ui_templates_jrad_new_ref, cz_pb_mgr.v_intl_text_model_tbl
18154                ,cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.g_ui_templates_ui_def_old_ref
18155            FROM cz_ui_templates
18156           WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.ui_def_id = 0 AND cz_ui_templates.deleted_flag = record_not_deleted;
18157       END IF;
18158 
18159       ------main msg
18160       insert_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, 'main message ids of cz ui templates', TRUE);
18161       resolve_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
18162       ----title id
18163       insert_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, 'main message ids of cz ui templates', TRUE);
18164       resolve_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
18165 
18166       IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0)
18167       THEN
18168          FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
18169          LOOP
18170             IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
18171             THEN
18172                insert_into_repository(cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.v_db_link);
18173             END IF;
18174          END LOOP;
18175       END IF;
18176 
18177       insert_ui_templates;
18178 
18179       COMMIT;
18180    EXCEPTION
18181       WHEN OTHERS
18182       THEN
18183          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18184          cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || p_template_id || ' : ' || SQLERRM;
18185          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
18186          RAISE;
18187    END export_global_template;
18188 
18189 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18190    PROCEDURE export_global_template
18191    IS
18192       rec_count NUMBER := 0;
18193       l_new_document VARCHAR2(255);
18194       l_document_id NUMBER;
18195       l_str VARCHAR2(2000);
18196       l_global_temp_tbl cz_pb_mgr.t_ref;
18197    BEGIN
18198       -----bulk collect from templates
18199       cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
18200       cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
18201       cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
18202       cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
18203       cz_pb_mgr.g_ui_templates_title_ref.DELETE;
18204       cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
18205       cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
18206       cz_pb_mgr.v_intl_text_model_tbl.DELETE;
18207       cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
18208 
18209       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18210       THEN
18211          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18212          LOOP
18213             l_global_temp_tbl.DELETE;
18214 
18215             SELECT template_id
18216             BULK COLLECT INTO l_global_temp_tbl
18217               FROM cz_ui_collect_tmpls_v
18218              WHERE cz_ui_collect_tmpls_v.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_ui_collect_tmpls_v.ui_def_id = 0;
18219 
18220             IF (l_global_temp_tbl.COUNT > 0)
18221             THEN
18222                rec_count := cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT;
18223 
18224                FOR j IN l_global_temp_tbl.FIRST .. l_global_temp_tbl.LAST
18225                LOOP
18226                   rec_count := rec_count + 1;
18227                   cz_pb_mgr.g_ui_templates_old_temp_id_ref(rec_count) := l_global_temp_tbl(j);
18228                END LOOP;
18229             END IF;
18230          END LOOP;
18231       END IF;
18232 
18233       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
18234       THEN
18235          FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
18236          LOOP
18237             export_global_template(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i), cz_pb_mgr.v_publication_id);
18238             insert_tmp_pub(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i));
18239          END LOOP;
18240       END IF;
18241 
18242       COMMIT;
18243    EXCEPTION
18244       WHEN OTHERS
18245       THEN
18246          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18247          cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || SQLERRM;
18248          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
18249          RAISE;
18250    END export_global_template;
18251 
18252 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18253 -------- procedure to export the configuration models
18254 ---------from the development to the production server
18255    PROCEDURE proc_export(
18256       publicationid IN NUMBER
18257      ,modelid IN NUMBER
18258      ,serverid IN NUMBER
18259      ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
18260      ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
18261    )
18262    IS
18263       CURSOR model_cur(rootmodelid NUMBER, serverid NUMBER, pubid NUMBER)
18264       IS
18265          SELECT   model_id
18266              FROM cz_pb_model_exports
18267             WHERE root_model_id = rootmodelid AND server_id = serverid AND publication_id = pubid AND superseded_flag = 'N'
18268          ORDER BY export_reverse_seq DESC;
18269 
18270       v_cursor NUMBER;
18271       v_model_id_table_exported model_id_table;
18272       v_model_id_table_not_exported model_id_table;
18273       v_model_count NUMBER := 1;
18274       v_validate_count NUMBER;
18275       mm_models_to_be_migrated cz_pb_mgr.t_ref;
18276 
18277       l_expl_check_flag   cz_db_settings.value%TYPE;
18278       l_run_id            NUMBER := cz_pb_mgr.v_pb_run_id;
18279       l_msg_count         NUMBER;
18280       l_msg_data          VARCHAR2(32000);
18281       l_return_status     VARCHAR2(16);
18282 
18283    BEGIN
18284       v_next_sequence_gen.DELETE;
18285       v_sequence_count.DELETE;
18286 
18287       ------retrieve seq incrementor from cz_db_settings
18288       IF (cz_pb_mgr.g_log_timing = publication_timing)
18289       THEN
18290          log_timing_message('start get_seq_incrementor');
18291       END IF;
18292 
18293       get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
18294 
18295       IF (cz_pb_mgr.g_log_timing = publication_timing)
18296       THEN
18297          log_timing_message('end get_seq_incrementor');
18298       END IF;
18299 
18300       IF (cz_pb_mgr.g_log_timing = publication_timing)
18301       THEN
18302          log_timing_message('start get_models_tobe_exported');
18303       END IF;
18304 
18305       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
18306       THEN
18307          mm_models_to_be_migrated := get_rootmodel_and_mig_tgt_fldr(publicationid);
18308          mm_get_models_tobe_exported(mm_models_to_be_migrated);
18309       ELSIF(g_object_type = MODEL_PUBLICATION)
18310       THEN
18311          get_models_tobe_exported(modelid);
18312       ELSIF(g_object_type = template_publication)
18313       THEN
18314          cz_pb_mgr.v_models_to_be_exported.DELETE;
18315          cz_pb_mgr.v_models_to_be_exported(1) := modelid;
18316       END IF;
18317 
18318       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
18319       FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18320       LOOP
18321          mm_v_rootmodels_tobe_exported(i) := modelid;
18322       END LOOP;
18323       END IF;
18324 
18325       IF (cz_pb_mgr.g_log_timing = publication_timing)
18326       THEN
18327          log_timing_message('end get_models_tobe_exported');
18328          log_timing_message('start create_export_request');
18329       END IF;
18330 
18331       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18332       THEN
18333          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18334          LOOP
18335             create_export_request(cz_pb_mgr.mm_v_rootmodels_tobe_exported(i), cz_pb_mgr.v_models_to_be_exported(i), publicationid, serverid);
18336          END LOOP;
18337       ELSE
18338          cz_pb_mgr.v_err_message := 'No model / template data exported ';
18339          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:EXPREQ', SQLCODE);
18340       END IF;
18341 
18342       -----create_copy_requests;
18343       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
18344       THEN
18345          cz_pb_mgr.v_models_to_be_exported.DELETE;
18346 
18347          IF (cz_pb_mgr.g_log_timing = publication_timing)
18348          THEN
18349             log_timing_message('end create_export_request');
18350             log_timing_message('start model_cur ');
18351          END IF;
18352 
18353          OPEN model_cur(modelid, serverid, publicationid);
18354 
18355          LOOP
18356             FETCH model_cur
18357              INTO v_cursor;
18358 
18359             EXIT WHEN model_cur%NOTFOUND;
18360             cz_pb_mgr.v_models_to_be_exported(v_model_count) := v_cursor;
18361             v_model_count := v_model_count + 1;
18362          END LOOP;
18363 
18364          CLOSE model_cur;
18365 
18366          IF (cz_pb_mgr.g_log_timing = publication_timing)
18367          THEN
18368             log_timing_message('end model_cur ');
18369             log_timing_message('start validate_schema');
18370          END IF;
18371 
18372          v_validate_count := validate_schema(serverid);
18373 
18374          IF (cz_pb_mgr.g_log_timing = publication_timing)
18375          THEN
18376             log_timing_message('end validate_schema');
18377          END IF;
18378 
18379          IF ((v_validate_count = 1) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
18380          THEN
18381             IF (cz_pb_mgr.g_log_timing = publication_timing)
18382             THEN
18383                log_timing_message('start load_data');
18384             END IF;
18385 
18386             load_data(publicationid, modelid, serverid, x_status_code, p_copy_nonjradui);
18387 
18388             IF (cz_pb_mgr.g_log_timing = publication_timing)
18389             THEN
18390                log_timing_message('end load_data');
18391             END IF;
18392          ELSE
18393             IF (v_validate_count <> 1)
18394             THEN
18395                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_COMPAT_ERR');
18396                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:VALSCH', SQLCODE);
18397                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18398             ELSE
18399                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18400                cz_pb_mgr.v_err_message := 'Process terminated for publication_id: ' || TO_CHAR(cz_pb_mgr.v_publication_id);
18401                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:PROCEXP', SQLCODE);
18402             END IF;
18403          END IF;
18404       ELSIF(g_object_type = template_publication)
18405       THEN
18406          export_global_template(modelid, publicationid);
18407       END IF;
18408 
18409       -----upload publication data
18410       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
18411       THEN
18412          upload_publication_data(cz_pb_mgr.v_publication_id);
18413       END IF;
18414 
18415       --Verify if the exported product structure and explosion data are in synch.
18416 
18417       IF(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)THEN
18418 
18419         BEGIN
18420           SELECT DECODE(UPPER(value), 'Y', 'Y', 'YES', 'Y', '1', 'Y', 'ON', 'Y', 'N')
18421             INTO l_expl_check_flag FROM cz_db_settings
18422            WHERE UPPER(section_name) = 'PUBLICATION'
18423              AND UPPER(setting_id) = 'CheckExplosionStructure';
18424         EXCEPTION
18425           WHEN OTHERS THEN
18426             l_expl_check_flag := 'N';
18427         END;
18428 
18429         IF(l_expl_check_flag = 'Y')THEN
18430 
18431           EXECUTE IMMEDIATE 'BEGIN cz_diagnostics_pvt.verify_structure' || cz_pb_mgr.v_db_link || '(1.0, :1, ''0'', :2, :3, :4, :5); END;'
18432             USING cz_pb_mgr.target_root_model_id, IN OUT l_run_id, IN OUT l_return_status, IN OUT l_msg_count, IN OUT l_msg_data;
18433         END IF;
18434 
18435         IF(l_return_status = FND_API.G_RET_STS_ERROR)THEN
18436 
18437           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18438           cz_pb_mgr.v_err_message :=  l_msg_data;
18439           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_diagnostics_pvt', -1);
18440         END IF;
18441       END IF;
18442 
18443       -----set status for concurrent manager
18444       IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
18445       THEN
18446          cz_pb_mgr.global_export_retcode := 2;
18447          rollback_data(cz_pb_mgr.v_db_link);
18448       END IF;
18449 
18450       -----clear tables
18451       clear_all_tables(cz_pb_mgr.v_status_code);
18452    EXCEPTION
18453       WHEN OTHERS
18454       THEN
18455          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
18456          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORT_FAILURE', SQLCODE);
18457          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18458          RAISE;
18459    END proc_export;
18460 
18461 --------------------------------------------------------------------------------
18462 -- private: ret status: 0 yes, 2 no (msg_data - ui or err info, model_name - model info)
18463 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER
18464                          ,p_report_model_info IN NUMBER
18465                          ,x_return_status OUT NOCOPY NUMBER
18466                          ,x_msg_data OUT NOCOPY VARCHAR2
18467                          ,x_model_name OUT NOCOPY VARCHAR2
18468                          ,p_check_root_ui_only IN BOOLEAN DEFAULT FALSE
18469                          )
18470 IS
18471   l_ui_style cz_ui_defs.ui_style%TYPE;
18472   l_ui_status cz_ui_defs.ui_status%TYPE;
18473   l_ui_tbl t_ref;
18474   l_ui_name cz_ui_defs.NAME%TYPE;
18475   l_root_model_id NUMBER;
18476   l_root_ui_last_update_date DATE;
18477   l_model_id NUMBER;
18478   l_model_name cz_devl_projects.NAME%TYPE;
18479   l_last_update_date DATE;
18480   l_last_struct_update DATE;
18481   l_suppress_refresh_flag cz_ui_defs.suppress_refresh_flag%TYPE;
18482 BEGIN
18483   x_return_status := 0;
18484   x_msg_data := '';
18485 
18486   SELECT ui_style, ui_status, NAME, NVL(suppress_refresh_flag, '0'), devl_project_id, NVL(ui_timestamp_refresh, last_update_date)
18487     INTO l_ui_style, l_ui_status, l_ui_name, l_suppress_refresh_flag, l_root_model_id, l_root_ui_last_update_date
18488   FROM cz_ui_defs
18489   WHERE ui_def_id = p_ui_def_id;
18490 
18491   IF l_ui_status = 'NEED_REFRESH' THEN
18492     x_return_status := 2;
18493     x_msg_data := l_ui_name;
18494 
18495     IF p_report_model_info = 1 THEN
18496       SELECT NAME INTO x_model_name
18497       FROM cz_devl_projects
18498       WHERE devl_project_id = l_root_model_id;
18499     END IF;
18500 
18501     RETURN;
18502   END IF;
18503 
18504   IF p_check_root_ui_only THEN
18505     IF l_suppress_refresh_flag='0' THEN
18506       l_ui_tbl(1) := p_ui_def_id;
18507     END IF;
18508   ELSE
18509     IF (l_ui_style IN(g_ui_style_dhtml, g_ui_style_applet)) THEN
18510       SELECT DISTINCT ui_def_id BULK COLLECT INTO l_ui_tbl
18511       FROM cz_ui_nodes
18512       WHERE deleted_flag = '0'
18513       START WITH ui_def_id = p_ui_def_id
18514       CONNECT BY PRIOR ui_def_ref_id = ui_def_id AND PRIOR deleted_flag = '0';
18515     ELSIF (l_ui_style = g_ui_style_jrad) THEN
18516       SELECT ref_ui_def_id BULK COLLECT INTO l_ui_tbl
18517       FROM (SELECT DISTINCT ref_ui_def_id
18518             FROM cz_ui_refs
18519             START WITH ui_def_id = p_ui_def_id AND deleted_flag = '0'
18520             CONNECT BY PRIOR ref_ui_def_id = ui_def_id AND deleted_flag = '0' AND PRIOR deleted_flag = '0') uis
18521       WHERE EXISTS (SELECT NULL
18522                     FROM cz_ui_defs
18523                     WHERE ui_def_id = uis.ref_ui_def_id AND deleted_flag = '0' AND NVL(suppress_refresh_flag, '0') = '0');
18524 
18525       IF l_suppress_refresh_flag = '0' THEN
18526         l_ui_tbl(l_ui_tbl.COUNT + 1) := p_ui_def_id;
18527       END IF;
18528     ELSIF l_ui_style = g_ui_style_custom THEN
18529       RETURN;
18530     ELSE
18531       x_return_status := 2;
18532       x_msg_data := cz_utils.get_text('CZ_UI_STYLE_ERR');
18533       RETURN;
18534     END IF;
18535   END IF;
18536 
18537   IF (l_ui_tbl.COUNT > 0) THEN
18538     FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST
18539     LOOP
18540       IF l_ui_tbl(i) = p_ui_def_id THEN
18541         l_model_id := l_root_model_id;
18542         l_last_update_date := l_root_ui_last_update_date;
18543       ELSE
18544         BEGIN
18545           SELECT NVL(ui_timestamp_refresh, last_update_date), devl_project_id, NAME, ui_status
18546             INTO l_last_update_date, l_model_id, l_ui_name, l_ui_status
18547           FROM cz_ui_defs
18548           WHERE cz_ui_defs.ui_def_id = l_ui_tbl(i);
18549         EXCEPTION
18550           WHEN OTHERS THEN
18551             l_last_update_date := NULL;
18552         END;
18553 
18554         IF l_last_update_date IS NULL OR l_ui_status = 'NEED_REFRESH' THEN
18555           x_return_status := 2;
18556           x_msg_data := l_ui_name;
18557 
18558           IF p_report_model_info = 1 THEN
18559             SELECT NAME INTO x_model_name
18560             FROM cz_devl_projects
18561             WHERE devl_project_id = l_model_id;
18562           END IF;
18563 
18564           EXIT;
18565         END IF;
18566       END IF;
18567 
18568       BEGIN
18569         SELECT DECODE(l_ui_style, g_ui_style_jrad, NVL(ui_timestamp_struct_update, last_struct_update), last_struct_update), NAME
18570           INTO l_last_struct_update, l_model_name
18571         FROM cz_devl_projects
18572         WHERE cz_devl_projects.devl_project_id = l_model_id;
18573       EXCEPTION
18574         WHEN OTHERS THEN
18575           l_last_struct_update := NULL;
18576           l_model_name := NULL;
18577       END;
18578 
18579       IF l_last_struct_update IS NULL OR l_last_update_date < l_last_struct_update THEN
18580         x_return_status := 2;
18581         x_msg_data := l_ui_name;
18582         x_model_name := l_model_name;
18583         EXIT;
18584       END IF;
18585     END LOOP;
18586   END IF;
18587 EXCEPTION
18588   WHEN OTHERS THEN
18589     x_return_status := 2;
18590     x_msg_data := SQLERRM;
18591 END is_ui_upto_date;
18592 
18593 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18594 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18595 -----------deep model copy
18596 -----------p_model_id : devl_project_id of the model for which a copy is to be made.
18597 -----------p_server_id: server_id from cz_servers that contains db info
18598 -----------p_folder: folder to which the copy is made
18599 -----------p_copy_rules: flag 1 implies copy rules else 0
18600 -----------p_copy_uis: flag 1 implies copy uis
18601 -----------p_copy_root: flag 1 implies that only root model would be copied
18602 -----------x_model_id : devl_project_id of the copied model
18603    PROCEDURE deep_model_copy(
18604       p_model_id IN NUMBER
18605      ,p_server_id IN NUMBER
18606      ,p_folder IN NUMBER
18607      ,p_copy_rules IN NUMBER
18608      ,p_copy_uis IN NUMBER
18609      ,p_copy_root IN NUMBER
18610      ,x_model_id OUT NOCOPY NUMBER
18611      ,x_run_id OUT NOCOPY NUMBER
18612      ,x_status OUT NOCOPY VARCHAR2
18613    )
18614    AS
18615       v_count PLS_INTEGER := 0;
18616       v_model_chk_count PLS_INTEGER := 0;
18617       v_ui_chk_count PLS_INTEGER := 0;
18618       v_folder_chk PLS_INTEGER := 0;
18619       v_rp_entries_name cz_rp_entries.NAME%TYPE;
18620       v_rp_entries_desc cz_rp_entries.description%TYPE;
18621       v_object_id cz_rp_entries.object_id%TYPE;
18622       v_copy_number NUMBER := 0.0;
18623       v_rp_orig_sys_ref VARCHAR2(255);
18624       v_imp_ps_node_count PLS_INTEGER := 0;
18625       v_pub_id cz_model_publications.publication_id%TYPE;
18626       l_msg_index NUMBER;
18627       failed_to_lock_model EXCEPTION;
18628       l_msg_data VARCHAR2(2000);
18629       l_msg_count NUMBER := 0;
18630       l_return_status VARCHAR2(1);
18631       l_lock_status VARCHAR2(1);
18632       l_locked_models cz_security_pvt.number_type_tbl;
18633       l_checkout_user cz_security_pvt.varchar_type_tbl;
18634       l_model_upto_date_status NUMBER;
18635       l_ui_upto_date_status NUMBER;
18636       l_model_upto_date_msg VARCHAR2(2000);
18637       logic_gen_required CONSTANT NUMBER := 1;
18638       ui_refresh_required CONSTANT NUMBER := 2;
18639       l_ui_tbl     t_ref;
18640       l_ui_name    VARCHAR2(1000);
18641       l_model_name VARCHAR2(1000);
18642       l_copy_nonjradui BOOLEAN;
18643       ui_not_uptodate EXCEPTION;
18644 
18645       TYPE ui_style_tbl_type IS TABLE OF cz_ui_defs.ui_style%TYPE INDEX BY PLS_INTEGER;
18646       l_ui_style_tbl  ui_style_tbl_type;
18647    BEGIN
18648       ----------delete session specific parameters
18649       BEGIN
18650          delete_session_parameters;
18651       EXCEPTION
18652          WHEN OTHERS
18653          THEN
18654             cz_pb_mgr.v_err_message := 'ERROR :deletion of session parameters ' || SQLERRM;
18655             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18656       END;
18657 
18658       cz_pb_mgr.v_status_code := publication_ok;
18659 
18660       ---------select run_id and user from dual
18661       ---------
18662       BEGIN
18663          SELECT USER, cz_xfr_run_infos_s.NEXTVAL
18664            INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
18665            FROM DUAL;
18666       EXCEPTION
18667          WHEN OTHERS
18668          THEN
18669             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
18670             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
18671       END;
18672 
18673       cz_security_pvt.lock_model(1.0, p_model_id, fnd_api.g_true, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18674 
18675       IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
18676       THEN
18677          l_msg_index := 1;
18678 
18679          WHILE l_msg_count > 0
18680          LOOP
18681             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
18682             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
18683             l_msg_index := l_msg_index + 1;
18684             l_msg_count := l_msg_count - 1;
18685          END LOOP;
18686 
18687          RAISE failed_to_lock_model;
18688       END IF;
18689 
18690       --------initialize session parameters
18691       cz_pb_mgr.sequence_const := 0;
18692       cz_pb_mgr.v_status_code := 'OK';
18693       cz_pb_mgr.global_export_retcode := 0;
18694       cz_pb_mgr.g_object_type := 'PRJ';
18695 
18696       IF (p_copy_rules = 1)
18697       THEN
18698          cz_pb_mgr.copy_rules := 'YES';
18699       ELSE
18700          cz_pb_mgr.copy_rules := 'NO';
18701       END IF;
18702 
18703       IF (p_copy_uis = 1)
18704       THEN
18705          cz_pb_mgr.copy_uis := 'YES';
18706       ELSE
18707          cz_pb_mgr.copy_uis := 'NO';
18708       END IF;
18709 
18710       IF (p_copy_root = 0)
18711       THEN
18712          cz_pb_mgr.copy_root_only := 'NO';
18713       ELSE
18714          cz_pb_mgr.copy_root_only := 'YES';
18715       END IF;
18716 
18717       --------initialize model, ui and server values
18718       cz_pb_mgr.v_root_model_id := p_model_id;
18719 
18720       --------get the ui_def_id for the above model
18721       IF (cz_pb_mgr.copy_uis = 'YES')
18722       THEN
18723          BEGIN
18724             SELECT MAX(ui_def_id)
18725               INTO cz_pb_mgr.v_root_ui_def_id
18726               FROM cz_ui_defs
18727              WHERE cz_ui_defs.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_ui_defs.deleted_flag = '0';
18728          EXCEPTION
18729             WHEN NO_DATA_FOUND
18730             THEN
18731                cz_pb_mgr.v_root_ui_def_id := -999;
18732             WHEN OTHERS
18733             THEN
18734                cz_pb_mgr.v_root_ui_def_id := -999;
18735          END;
18736       ELSE
18737          cz_pb_mgr.v_root_ui_def_id := -999;
18738       END IF;
18739 
18740       cz_pb_mgr.v_server_id := p_server_id;
18741       -------set session level parameter that differentiates from publishing
18742       cz_pb_mgr.v_session_parameter := model_copy;
18743       cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
18744       cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
18745       ---------check if model exists
18746       v_model_chk_count := 0;
18747 
18748       BEGIN
18749          SELECT 1, NVL(config_engine_type, 'L')
18750            INTO v_model_chk_count, g_engine_type
18751            FROM cz_devl_projects
18752           WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_devl_projects.deleted_flag = '0';
18753       EXCEPTION
18754          WHEN OTHERS
18755          THEN
18756             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
18757             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18758             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18759       END;
18760 
18761       ---------verify that ui exists
18762       v_ui_chk_count := -1;
18763 
18764       IF (cz_pb_mgr.v_root_ui_def_id > 0)
18765       THEN
18766          BEGIN
18767             SELECT 1
18768               INTO v_ui_chk_count
18769               FROM cz_ui_defs
18770              WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_root_ui_def_id AND cz_ui_defs.deleted_flag = '0';
18771          EXCEPTION
18772             WHEN OTHERS
18773             THEN
18774                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
18775                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18776                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18777          END;
18778       END IF;
18779 
18780       -------check if UI is upto date
18781       IF cz_pb_mgr.copy_uis = 'YES' THEN
18782         l_copy_nonjradui := TRUE;
18783         IF cz_pb_mgr.copy_root_only = 'YES' THEN
18784           SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
18785           FROM cz_ui_defs
18786           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id=p_model_id;
18787         ELSE
18788           SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
18789           FROM cz_ui_defs
18790           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
18791           (SELECT component_id FROM cz_model_ref_expls
18792            WHERE deleted_flag='0' AND model_id=p_model_id);
18793         END IF;
18794 
18795         IF l_ui_tbl.COUNT>0 THEN
18796           FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST LOOP
18797             -- all jrad uis have to be up to date
18798             -- all nonjrad uis will be not copied if any such ui is not up to date
18799             IF l_ui_style_tbl(i) = oa_ui_style OR l_copy_nonjradui THEN
18800               is_ui_upto_date(p_ui_def_id         => l_ui_tbl(i)
18801                              ,p_report_model_info => 1
18802                              ,x_return_status     => l_ui_upto_date_status
18803                              ,x_msg_data          => l_ui_name
18804                              ,x_model_name        => l_model_name
18805                              ,p_check_root_ui_only=> TRUE
18806                              );
18807               IF l_ui_upto_date_status IS NOT NULL AND l_ui_upto_date_status <> 0 THEN
18808                 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' ||
18809                                         ' ''' || l_ui_name || '''', 'MODELID', '''' || l_model_name || '''');
18810                 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', -20001);
18811                 IF l_ui_style_tbl(i) = oa_ui_style THEN
18812                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18813                   RAISE ui_not_uptodate;
18814                 ELSE
18815                   l_copy_nonjradui := FALSE;
18816                 END IF;
18817               END IF;
18818             END IF;
18819           END LOOP;
18820         END IF;
18821       END IF;
18822 
18823       -- if no ui to copy or not to copy ui
18824       IF l_ui_upto_date_status IS NULL THEN
18825         l_ui_upto_date_status := 0;
18826       END IF;
18827 
18828       --------check if folder exists
18829       IF (p_folder IS NOT NULL)
18830       THEN
18831          BEGIN
18832             SELECT 1
18833               INTO v_folder_chk
18834               FROM cz_rp_entries
18835              WHERE object_type = 'FLD' AND object_id = p_folder AND deleted_flag = '0';
18836          EXCEPTION
18837             WHEN OTHERS
18838             THEN
18839                cz_pb_mgr.v_err_message := 'Error in retrieving folder id : ' || p_folder || ' : ' || SQLERRM;
18840                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18841                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18842          END;
18843       END IF;
18844 
18845       IF (v_model_chk_count = 0)
18846       THEN
18847          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
18848          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18849          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18850       ELSIF(v_ui_chk_count = 0)
18851       THEN
18852          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
18853          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18854          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18855       ELSE
18856          -----------create a dummy publication
18857          BEGIN
18858             SELECT cz_model_publications_s.NEXTVAL
18859               INTO cz_pb_mgr.v_publication_id
18860               FROM DUAL;
18861 
18862             v_pub_id := cz_pb_mgr.v_publication_id;
18863          EXCEPTION
18864             WHEN OTHERS
18865             THEN
18866                cz_pb_mgr.v_err_message := 'Error in generation of dummy publication id';
18867                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18868                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18869          END;
18870 
18871          BEGIN
18872             INSERT INTO cz_model_publications
18873                         (publication_id, model_id, server_id, product_key, publication_mode
18874                         ,ui_def_id, ui_style, applicable_from, applicable_until, deleted_flag, model_last_struct_update, model_last_logic_update
18875                         ,model_last_updated, source_target_flag, object_id, object_type, disabled_flag
18876                         )
18877                  VALUES (cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, 'copy model', 'T'
18878                         ,cz_pb_mgr.v_root_ui_def_id, '0', SYSDATE, SYSDATE, '0', SYSDATE, SYSDATE
18879                         ,SYSDATE, g_target_flag, cz_pb_mgr.v_root_model_id, 'PRJ', '0'
18880                         );
18881 
18882             COMMIT;
18883          EXCEPTION
18884             WHEN OTHERS
18885             THEN
18886                cz_pb_mgr.v_err_message := 'Error in creation of dummy publication record: ' || SQLERRM;
18887                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18888                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18889          END;
18890 
18891          BEGIN
18892             proc_export(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, cz_pb_mgr.v_status_code,
18893                         (cz_pb_mgr.copy_uis='YES' AND l_copy_nonjradui));
18894 
18895             IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18896             THEN
18897                cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || '  successfully copied';
18898                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18899             ELSE
18900                cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || '  copy failed';
18901                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18902             END IF;
18903 
18904             COMMIT;
18905          EXCEPTION
18906             WHEN OTHERS
18907             THEN
18908                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
18909                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18910                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18911          END;
18912 
18913          ----------insert into cz_rp_entries
18914          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18915          THEN
18916             v_imp_ps_node_count := 0;
18917 
18918             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18919             LOOP
18920                v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
18921                cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
18922                cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
18923 
18924                BEGIN
18925                   SELECT remote_model_id
18926                     INTO v_object_id
18927                     FROM cz_pb_model_exports
18928                    WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
18929                      AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
18930                EXCEPTION
18931                   WHEN OTHERS
18932                   THEN
18933                      cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
18934                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18935                END;
18936 
18937                BEGIN
18938                   SELECT desc_text, orig_sys_ref
18939                     INTO v_rp_entries_desc, v_rp_orig_sys_ref
18940                     FROM cz_devl_projects
18941                    WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
18942                EXCEPTION
18943                   WHEN NO_DATA_FOUND
18944                   THEN
18945                      v_rp_orig_sys_ref := NULL;
18946                      cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
18947                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18948                   WHEN OTHERS
18949                   THEN
18950                      v_rp_orig_sys_ref := NULL;
18951                      cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
18952                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18953                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18954                END;
18955 
18956                v_rp_entries_name := copy_name(cz_pb_mgr.v_models_to_be_exported(i));
18957 
18958                IF (v_rp_entries_name = 'ERROR')
18959                THEN
18960                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18961                END IF;
18962 
18963                IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18964                THEN
18965                   cz_pb_mgr.v_new_object_id := v_object_id;
18966 
18967                   BEGIN
18968                      cz_pb_mgr.v_rp_folder_id := p_folder;
18969                      cz_pb_mgr.v_rp_name := v_rp_entries_name;
18970                      cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
18971 
18972                      EXECUTE IMMEDIATE    'BEGIN'
18973                                        || ' '
18974                                        || 'insert into cz_rp_entries'
18975                                        || cz_pb_mgr.v_db_link
18976                                        || ' ( OBJECT_TYPE'
18977                                        || ' '
18978                                        || ',OBJECT_ID'
18979                                        || ' '
18980                                        || ',ENCLOSING_FOLDER'
18981                                        || ' '
18982                                        || ',NAME'
18983                                        || ' '
18984                                        || ',DESCRIPTION'
18985                                        || ' '
18986                                        || ',DELETED_FLAG'
18987                                        || ' '
18988                                        || ',SEEDED_FLAG'
18989                                        || ' '
18990                                        || ')'
18991                                        || ' '
18992                                        || 'VALUES ( ''PRJ'''
18993                                        || ' '
18994                                        || ',cz_pb_mgr.v_new_object_id'
18995                                        || ' '
18996                                        || ',cz_pb_mgr.v_rp_folder_id'
18997                                        || ' '
18998                                        || ',cz_pb_mgr.v_rp_name'
18999                                        || ' '
19000                                        || ',cz_pb_mgr.v_rp_desc'
19001                                        || ' '
19002                                        || ',''0'''
19003                                        || ' '
19004                                        || ',''0'');'
19005                                        || ' '
19006                                        || 'commit;'
19007                                        || ' '
19008                                        || 'END;';
19009                   EXCEPTION
19010                      WHEN OTHERS
19011                      THEN
19012                         cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
19013                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19014                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19015                   END;
19016 
19017                   --------update proj name in devl projects with the new name
19018                   ----------check if source model is upto date
19019                   l_model_upto_date_msg := NULL;
19020                   l_model_upto_date_status := 0;
19021                   is_model_upto_date(cz_pb_mgr.v_models_to_be_exported(i), l_model_upto_date_status, l_model_upto_date_msg);
19022 
19023                   BEGIN
19024                      IF (cz_pb_mgr.v_rp_name IS NOT NULL)
19025                      THEN
19026                         IF ((l_model_upto_date_status = 0) AND(l_ui_upto_date_status = 0))
19027                         THEN
19028                            EXECUTE IMMEDIATE    'BEGIN'
19029                                              || ' '
19030                                              || 'UPDATE cz_devl_projects'
19031                                              || cz_pb_mgr.v_db_link
19032                                              || '  t'
19033                                              || ' '
19034                                              || 'SET  t.name = cz_pb_mgr.v_rp_name'
19035                                              || ' '
19036                                              || 'WHERE  t.devl_project_id = '
19037                                              || cz_pb_mgr.v_new_object_id
19038                                              || ';'
19039                                              || ' '
19040                                              || 'END;';
19041                         ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = ui_refresh_required))
19042                         THEN
19043                            EXECUTE IMMEDIATE    'BEGIN'
19044                                              || ' '
19045                                              || 'UPDATE cz_devl_projects'
19046                                              || cz_pb_mgr.v_db_link
19047                                              || '  t'
19048                                              || ' '
19049                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
19050                                              || ' '
19051                                              || 't.last_logic_update = sysdate,'
19052                                              || ' '
19053                                              || 't.last_struct_update =  sysdate'
19054                                              || ' '
19055                                              || 'WHERE  t.devl_project_id = '
19056                                              || cz_pb_mgr.v_new_object_id
19057                                              || ';'
19058                                              || ' '
19059                                              || 'END;';
19060                         ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = 0))
19061                         THEN
19062                            EXECUTE IMMEDIATE    'BEGIN'
19063                                              || ' '
19064                                              || 'UPDATE cz_devl_projects'
19065                                              || cz_pb_mgr.v_db_link
19066                                              || '  t'
19067                                              || ' '
19068                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
19069                                              || ' '
19070                                              || 't.last_logic_update = sysdate'
19071                                              || ' '
19072                                              || 'WHERE  t.devl_project_id = '
19073                                              || cz_pb_mgr.v_new_object_id
19074                                              || ';'
19075                                              || ' '
19076                                              || 'END;';
19077                         ELSE
19078                            EXECUTE IMMEDIATE    'BEGIN'
19079                                              || ' '
19080                                              || 'UPDATE cz_devl_projects'
19081                                              || cz_pb_mgr.v_db_link
19082                                              || '  t'
19083                                              || ' '
19084                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
19085                                              || ' '
19086                                              || 't.last_struct_update = sysdate'
19087                                              || ' '
19088                                              || 'WHERE  t.devl_project_id = '
19089                                              || cz_pb_mgr.v_new_object_id
19090                                              || ';'
19091                                              || ' '
19092                                              || 'END;';
19093                         END IF;
19094                      END IF;
19095 
19096                      COMMIT;
19097                   EXCEPTION
19098                      WHEN OTHERS
19099                      THEN
19100                         cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
19101                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19102                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19103                   END;
19104 
19105                  BEGIN
19106 
19107 	             EXECUTE IMMEDIATE ' INSERT INTO CZ_PERSISTENT_REC_IDS'
19108 	                               ||' (devl_project_id,MAX_PERSISTENT_REC_ID,'
19109                                        ||' deleted_flag) '
19110 		                       ||'  SELECT :1,m.max_persistent_rec_id,0 from '
19111                                        ||'  cz_devl_projects p,'
19112 		                       ||'  CZ_PERSISTENT_REC_IDS m '
19113                                        ||'  where p.devl_project_id=:2'
19114 	                               ||'  and m.devl_project_id=p.devl_project_id  '
19115 		                       ||'  and p.deleted_flag=0 '
19116                                        ||'  and p.POST_MIGR_CHANGE_FLAG is not null and p.POST_MIGR_CHANGE_FLAG<>''L'''
19117 		     USING  cz_pb_mgr.v_new_object_id, cz_pb_mgr.v_models_to_be_exported(i);
19118 
19119                  EXCEPTION
19120                      WHEN OTHERS
19121                      THEN
19122                         cz_pb_mgr.v_err_message := 'Error in inserting records into CZ_PERSISTENT_REC_IDS: ' || SQLERRM;
19123                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19124                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19125                   END;
19126 
19127                   ------insert into cz_xfr_project_bills
19128                   IF (v_rp_orig_sys_ref IS NOT NULL)
19129                   THEN
19130                      BEGIN
19131                         EXECUTE IMMEDIATE    'BEGIN'
19132                                           || ' '
19133                                           || 'insert into cz_xfr_project_bills'
19134                                           || cz_pb_mgr.v_db_link
19135                                           || ' ('
19136                                           || ' '
19137                                           || 'MODEL_PS_NODE_ID'
19138                                           || ' '
19139                                           || ',ORGANIZATION_ID'
19140                                           || ' '
19141                                           || ',COMPONENT_ITEM_ID'
19142                                           || ' '
19143                                           || ',DESCRIPTION'
19144                                           || ' '
19145                                           || ',LAST_IMPORT_RUN_ID'
19146                                           || ' '
19147                                           || ',LAST_IMPORT_DATE'
19148                                           || ' '
19149                                           || ',SOURCE_BILL_DELETED'
19150                                           || ' '
19151                                           || ',TOP_ITEM_ID'
19152                                           || ' '
19153                                           || ',DELETED_FLAG'
19154                                           || ' '
19155                                           || ',EXPLOSION_TYPE'
19156                                           || ' '
19157                                           || ',BILL_REVISION_DATE'
19158                                           || ' '
19159                                           || ',EFF_FROM'
19160                                           || ' '
19161                                           || ',EFF_TO'
19162                                           || ' '
19163                                           || ',SOURCE_SERVER'
19164                                           || ' '
19165                                           || ',COPY_ADDL_CHILD_MODELS'
19166                                           || ' '
19167                                           || ')'
19168                                           || ' '
19169                                           || 'SELECT  cz_pb_mgr.v_new_object_id'
19170                                           || ' '
19171                                           || ',ORGANIZATION_ID'
19172                                           || ' '
19173                                           || ',COMPONENT_ITEM_ID'
19174                                           || ' '
19175                                           || ',DESCRIPTION'
19176                                           || ' '
19177                                           || ',LAST_IMPORT_RUN_ID'
19178                                           || ' '
19179                                           || ',LAST_IMPORT_DATE'
19180                                           || ' '
19181                                           || ',SOURCE_BILL_DELETED'
19182                                           || ' '
19183                                           || ',TOP_ITEM_ID'
19184                                           || ' '
19185                                           || ',DELETED_FLAG'
19186                                           || ' '
19187                                           || ',EXPLOSION_TYPE'
19188                                           || ' '
19189                                           || ',BILL_REVISION_DATE'
19190                                           || ' '
19191                                           || ',EFF_FROM'
19192                                           || ' '
19193                                           || ',EFF_TO'
19194                                           || ' '
19195                                           || ',SOURCE_SERVER'
19196                                           || ' '
19197                                           || ',COPY_ADDL_CHILD_MODELS'
19198                                           || ' '
19199                                           || 'FROM   cz_xfr_project_bills'
19200                                           || ' '
19201                                           || 'WHERE  cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
19202                                           || ' '
19203                                           || 'AND   cz_xfr_project_bills.deleted_flag = ''0'';'
19204                                           || ' '
19205                                           || 'commit;'
19206                                           || ' '
19207                                           || 'END;';
19208                      EXCEPTION
19209                         WHEN NO_DATA_FOUND
19210                         THEN
19211                            cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19212                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19213                         WHEN OTHERS
19214                         THEN
19215                            cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19216                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19217                            cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19218                      END;
19219                   END IF;
19220                END IF;
19221             END LOOP;
19222          END IF;
19223 
19224          x_run_id := cz_pb_mgr.v_pb_run_id;
19225          x_status := cz_pb_mgr.v_status_code;
19226          log_pb_trace;
19227          delete_session_parameters;
19228 
19229          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
19230          THEN
19231             rollback_data(cz_pb_mgr.v_db_link);
19232             x_model_id := -999;
19233 
19234             IF (cz_pb_mgr.v_imported_ps_ref.COUNT > 0)
19235             THEN
19236                EXECUTE IMMEDIATE    'BEGIN'
19237                                  || ' '
19238                                  || 'FOR I IN cz_pb_mgr.v_imported_ps_ref.FISRT..cz_pb_mgr.v_imported_ps_ref.LAST'
19239                                  || ' '
19240                                  || 'LOOP'
19241                                  || ' '
19242                                  || 'DELETE FROM cz_rp_entries'
19243                                  || cz_pb_mgr.v_db_link
19244                                  || ' t'
19245                                  || ' '
19246                                  || 'WHERE  t.object_id = cz_pb_mgr.v_imported_ps_ref(i)'
19247                                  || ' '
19248                                  || 'AND    t.object_type = ''PRJ'';'
19249                                  || ' '
19250                                  || 'END;';
19251             END IF;
19252          ELSE
19253             x_model_id := v_object_id;
19254          END IF;
19255 
19256          ----------delete dummy publication record
19257          DELETE FROM cz_model_publications
19258                WHERE publication_id = v_pub_id;
19259 
19260          DELETE FROM cz_model_publications
19261                WHERE remote_publication_id = v_pub_id;
19262 
19263          DELETE FROM cz_pb_model_exports
19264                WHERE publication_id = v_pub_id;
19265       END IF;
19266 
19267       cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19268 
19269       IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
19270       THEN
19271          l_msg_index := 1;
19272 
19273          WHILE l_msg_count > 0
19274          LOOP
19275             cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19276             l_msg_index := l_msg_index + 1;
19277             l_msg_count := l_msg_count - 1;
19278          END LOOP;
19279       END IF;
19280 
19281       COMMIT;
19282    EXCEPTION
19283       WHEN failed_to_lock_model
19284       THEN
19285          x_run_id := cz_pb_mgr.v_pb_run_id;
19286          x_status := PUBLICATION_ERROR;
19287          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19288          log_pb_trace;
19289       WHEN ui_not_uptodate THEN
19290          x_run_id := cz_pb_mgr.v_pb_run_id;
19291          x_status := PUBLICATION_ERROR;
19292          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19293          log_pb_trace;
19294       WHEN OTHERS
19295       THEN
19296          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19297          cz_pb_mgr.v_err_message := 'Fatal error during deep model copy of model: ' || cz_pb_mgr.v_root_model_id;
19298          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19299    END;
19300 
19301 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19302 -----signature of deep model copy that developer would call
19303 ----
19304    PROCEDURE deep_model_copy(
19305       p_model_id IN NUMBER
19306      ,p_server_id IN NUMBER
19307      ,p_folder IN NUMBER
19308      ,p_copy_rules IN NUMBER
19309      ,p_copy_uis IN NUMBER
19310      ,p_copy_root IN NUMBER
19311      ,x_return_status OUT NOCOPY VARCHAR2
19312      ,x_msg_count OUT NOCOPY NUMBER
19313      ,x_msg_data OUT NOCOPY VARCHAR2
19314      ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_TRUE
19315    )
19316    IS
19317       TYPE message_tbl_type IS TABLE OF VARCHAR2(2000)
19318          INDEX BY BINARY_INTEGER;
19319 
19320       l_model_id cz_devl_projects.devl_project_id%TYPE;
19321       l_run_id NUMBER;
19322       l_status VARCHAR2(2000);
19323       l_message_tbl message_tbl_type;
19324       l_instr NUMBER := 0;
19325    BEGIN
19326 
19327       --initialize the message stack depending on the input parameter
19328       IF (p_init_msg_list = FND_API.G_TRUE) THEN
19329          fnd_msg_pub.initialize;
19330       END IF;
19331 
19332       x_return_status := FND_API.G_RET_STS_SUCCESS;
19333       x_msg_count := 0;
19334       x_msg_data := '';
19335       deep_model_copy(p_model_id, p_server_id, p_folder, p_copy_rules, p_copy_uis, p_copy_root, l_model_id, l_run_id, l_status);
19336 
19337       IF (l_status = PUBLICATION_ERROR)
19338       THEN
19339          x_return_status := FND_API.G_RET_STS_ERROR;
19340          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19341       END IF;
19342    END deep_model_copy;
19343 
19344 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19345 ------------procedure to publish all models
19346    PROCEDURE publish_all_models
19347    AS
19348 
19349       l_publication_id_tbl   cz_pb_mgr.number_type_tbl;
19350       v_tobepublished cz_model_publications.publication_id%TYPE;
19351       v_run_id cz_db_logs.run_id%TYPE;
19352       v_pb_status cz_model_publications.export_status%TYPE;
19353    BEGIN
19354 
19355          SELECT   publication_id BULK COLLECT INTO l_publication_id_tbl
19356              FROM cz_model_publications
19357             WHERE cz_model_publications.deleted_flag = record_not_deleted
19358               AND cz_model_publications.export_status = publication_pending
19359               AND UPPER(object_type) = model_publication
19360          ORDER BY publication_id;
19361 
19362          IF l_publication_id_tbl.COUNT > 0 THEN
19363            FOR i IN l_publication_id_tbl.FIRST .. l_publication_id_tbl.LAST LOOP
19364              v_tobepublished  := l_publication_id_tbl(i);
19365              publish_model( v_tobepublished, v_run_id, v_pb_status);
19366            END LOOP;
19367          END IF;
19368 
19369    EXCEPTION
19370       WHEN OTHERS
19371       THEN
19372 
19373          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GEN_ERROR', 'TOBEPUBLISHED', v_tobepublished, 'SQLERRM', SQLERRM);
19374          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_ALL_MODELS', SQLCODE);
19375    END publish_all_models;
19376 
19377 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19378 -----initialize pb parameters
19379    PROCEDURE initialize_pb_parameters(p_publication_id IN cz_model_publications.publication_id%TYPE)
19380    AS
19381       l_log_pb_time cz_db_settings.VALUE%TYPE;
19382       l_pub_mode cz_model_publications.publication_mode%TYPE;
19383    BEGIN
19384       fnd_msg_pub.initialize;
19385       cz_pb_mgr.v_publication_id := p_publication_id;
19386       cz_pb_mgr.sequence_const := 0;
19387       cz_pb_mgr.v_ui_str := 'x';
19388       cz_pb_mgr.global_export_retcode := 0;
19389       cz_pb_mgr.v_pb_run_id := 0.0;
19390       cz_pb_mgr.bomsynch_flag := 'N';
19391       cz_pb_mgr.v_status_code := publication_ok;
19392       cz_pb_mgr.v_session_parameter := pub_model;
19393       cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
19394       cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
19395       cz_pb_mgr.v_cz_model_pub_old_id := p_publication_id;
19396       cz_pb_mgr.v_cz_model_pub_new_id := NULL;
19397       cz_pb_mgr.v_ui_name := NULL;
19398       cz_pb_mgr.v_sql_err_msg := 'Fatal error reported';
19399       v_refresh_rules := 'NO';
19400 
19401       SELECT publication_mode
19402         INTO l_pub_mode
19403         FROM cz_model_publications
19404        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted;
19405 
19406       IF (UPPER(l_pub_mode) = cz_model_migration_pvt.mode_migration)
19407       THEN
19408          cz_pb_mgr.v_session_parameter := cz_model_migration_pvt.migrate_model;
19409          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
19410          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
19411       END IF;
19412 
19413       ---------select run_id and user from dual
19414       BEGIN
19415          SELECT USER, cz_xfr_run_infos_s.NEXTVAL
19416            INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
19417            FROM DUAL;
19418       EXCEPTION
19419          WHEN OTHERS
19420          THEN
19421             RAISE run_id_error;
19422       END;
19423 
19424       -------select setting for logging
19425       BEGIN
19426          SELECT VALUE
19427            INTO cz_pb_mgr.v_pb_log_flag
19428            FROM cz_db_settings
19429           WHERE cz_db_settings.setting_id = publication_log;
19430       EXCEPTION
19431          WHEN OTHERS
19432          THEN
19433             cz_pb_mgr.v_pb_log_flag := 'NO';
19434       END;
19435 
19436       -------select setting for logging publication times
19437       BEGIN
19438          SELECT VALUE
19439            INTO l_log_pb_time
19440            FROM cz_db_settings
19441           WHERE cz_db_settings.setting_id = pb_timing_log;
19442 
19443          IF (l_log_pb_time = 'YES')
19444          THEN
19445             cz_pb_mgr.g_log_timing := publication_timing;
19446          END IF;
19447       EXCEPTION
19448          WHEN OTHERS
19449          THEN
19450             cz_pb_mgr.g_log_timing := 1;
19451       END;
19452    EXCEPTION
19453       WHEN run_id_error
19454       THEN
19455          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
19456          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
19457       WHEN OTHERS
19458       THEN
19459          RAISE;
19460    END initialize_pb_parameters;
19461 
19462 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19463    PROCEDURE check_ui_template_exist(p_template_id IN NUMBER, x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE)
19464    IS
19465       l_count NUMBER := 0;
19466    BEGIN
19467       SELECT 1
19468         INTO l_count
19469         FROM cz_ui_templates
19470        WHERE cz_ui_templates.template_id = p_template_id
19471          AND cz_ui_templates.ui_def_id = 0
19472          AND cz_ui_templates.deleted_flag = record_not_deleted
19473          AND ROWNUM < 2;
19474    EXCEPTION
19475       WHEN NO_DATA_FOUND
19476       THEN
19477          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_GLOBAL_TMPL', 'PUBID', cz_pb_mgr.v_publication_id);
19478          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19479          x_status := PUBLICATION_ERROR;
19480    END check_ui_template_exist;
19481 
19482 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19483 --------procedure that checks if model and ui specified in the request exist
19484 --------@p_publication_id : publication id of the request
19485 --------@p_model_id : model id of the pb request
19486 --------@p_ui_def_id : ui_def_id of the request
19487 --------@x_status : publication status parameter
19488    PROCEDURE check_model_ui_exist(
19489       p_publication_id IN cz_model_publications.publication_id%TYPE
19490      ,p_model_id IN cz_model_publications.model_id%TYPE
19491      ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
19492      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19493    )
19494    AS
19495       v_model_chk_count NUMBER := 0.0;
19496       v_ui_chk_count NUMBER := 0.0;
19497    BEGIN
19498       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
19499       THEN
19500          SELECT COUNT(*)
19501            INTO v_model_chk_count
19502            FROM cz_devl_projects
19503           WHERE cz_devl_projects.devl_project_id = p_model_id AND cz_devl_projects.deleted_flag = record_not_deleted;
19504 
19505          IF (v_model_chk_count = 0)
19506          THEN
19507             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL', 'PUBID', p_publication_id);
19508             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19509             x_status := PUBLICATION_ERROR;
19510          END IF;
19511 
19512          v_ui_chk_count := -1;
19513 
19514          IF ((p_ui_def_id IS NOT NULL) AND(p_ui_def_id > 0))
19515          THEN
19516             SELECT COUNT(*)
19517               INTO v_ui_chk_count
19518               FROM cz_ui_defs
19519              WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
19520 
19521             IF (v_ui_chk_count = 0)
19522             THEN
19523                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI', 'PUBID', p_publication_id);
19524                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19525                x_status := PUBLICATION_ERROR;
19526             END IF;
19527          END IF;
19528 
19529          IF ((v_model_chk_count = 0) OR(v_ui_chk_count = 0))
19530          THEN
19531             update_publication_status(p_publication_id, PUBLICATION_ERROR, empty_string);
19532          END IF;
19533       END IF;
19534    EXCEPTION
19535       WHEN OTHERS
19536       THEN
19537          x_status := PUBLICATION_ERROR;
19538          RAISE;
19539    END check_model_ui_exist;
19540 
19541 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19542 -------procedure that gets the target ui def id in case no new copy is made
19543    PROCEDURE get_tgt_ui_def(
19544       p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
19545      ,p_prev_rem_publication_id IN cz_model_publications.publication_id%TYPE
19546      ,x_rem_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
19547      ,x_rem_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
19548      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19549    )
19550    AS
19551       v_ui_name cz_ui_defs.NAME%TYPE;
19552       v_old_remote_model cz_model_publications.model_id%TYPE;
19553       ui_cv ref_cursor;
19554    BEGIN
19555       BEGIN
19556          SELECT NAME
19557            INTO v_ui_name
19558            FROM cz_ui_defs
19559           WHERE ui_def_id = p_ui_def_id;
19560       EXCEPTION
19561          WHEN OTHERS
19562          THEN
19563             v_ui_name := NULL;
19564       END;
19565 
19566       BEGIN
19567         get_remote_model_id(cz_pb_mgr.v_server_id,cz_pb_mgr.v_root_model_id,x_status,v_old_remote_model);
19568       EXCEPTION
19569          WHEN OTHERS
19570          THEN
19571             RAISE;
19572       END;
19573 
19574       x_rem_model_id := v_old_remote_model;
19575 
19576       IF (v_ui_name IS NOT NULL)
19577       THEN
19578          OPEN ui_cv FOR    'SELECT ui_def_id FROM cz_ui_defs'
19579                         || cz_pb_mgr.v_db_link
19580                         || ' '
19581                         || 'WHERE name = :1'
19582                         || ' '
19583                         || 'AND deleted_flag = ''0'' AND devl_project_id = :2' USING v_ui_name, v_old_remote_model;
19584 
19585          LOOP
19586             FETCH ui_cv
19587              INTO x_rem_ui_def_id;
19588 
19589             EXIT WHEN ui_cv%NOTFOUND;
19590          END LOOP;
19591 
19592          CLOSE ui_cv;
19593       END IF;
19594    EXCEPTION
19595       WHEN OTHERS
19596       THEN
19597          CLOSE ui_cv;
19598 
19599          cz_pb_mgr.v_err_message := 'Error in retrieving remote ui def id for source ui_def_id: ' || TO_CHAR(p_ui_def_id) || ' : ' || SQLERRM;
19600          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETTGTUIDEF', SQLCODE);
19601          x_status := PUBLICATION_ERROR;
19602          RAISE;
19603    END get_tgt_ui_def;
19604 
19605 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19606 -----procedure that checks the export status of the existing request
19607 -----Only requests with a status of PEN can be published
19608    PROCEDURE check_export_status(
19609       p_export_status IN cz_model_publications.export_status%TYPE
19610      ,p_pb_flag IN VARCHAR2
19611      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19612    )
19613    AS
19614    BEGIN
19615       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
19616       THEN
19617          IF (p_pb_flag = cz_publish)
19618          THEN
19619             IF ((p_export_status = 'PUP') OR(p_export_status = 'ERR') OR(p_export_status = 'PRC') OR(p_export_status = 'OK'))
19620             THEN
19621                cz_pb_mgr.v_err_message :=
19622                                    cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
19623                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19624                cz_pb_mgr.v_err_message := 'Publication with a status PRC/PUP/ERR may not be published';
19625                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19626                x_status := PUBLICATION_ERROR;
19627             END IF;
19628          ELSIF(p_pb_flag = cz_republish)
19629          THEN
19630             IF (p_export_status <> 'OK')
19631             THEN
19632                x_status := PUBLICATION_ERROR;
19633                cz_pb_mgr.v_err_message :=
19634                                cz_utils.get_text('CZ_REPUB_STATUS_CHK', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
19635                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISHMODEL', SQLCODE);
19636             END IF;
19637          END IF;
19638       END IF;
19639    EXCEPTION
19640       WHEN OTHERS
19641       THEN
19642          cz_pb_mgr.v_err_message := 'Error in check pb status: ' || SQLERRM;
19643          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19644          x_status := PUBLICATION_ERROR;
19645    END check_export_status;
19646 
19647 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19648    PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER, x_return_status OUT NOCOPY NUMBER, x_msg_data OUT NOCOPY VARCHAR2)
19649    IS
19650       l_model_name cz_devl_projects.NAME%TYPE;
19651    BEGIN
19652       IF p_ui_def_id IS NOT NULL
19653       THEN
19654          is_ui_upto_date(p_ui_def_id, 0, x_return_status, x_msg_data, l_model_name);
19655       END IF;
19656    END is_ui_upto_date;
19657 
19658    FUNCTION is_ui_upto_date(p_ui_def_id IN NUMBER)
19659       RETURN VARCHAR2
19660    IS
19661       l_return_status VARCHAR2(255);
19662       l_msg_data VARCHAR2(32000);
19663    BEGIN
19664       is_ui_upto_date(p_ui_def_id, l_return_status, l_msg_data);
19665 
19666       IF l_return_status = 2
19667       THEN
19668          RETURN '1';
19669       ELSE
19670          RETURN '0';
19671       END IF;
19672    END is_ui_upto_date;
19673 
19674 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19675 -- return status: 0 yes, 1 no
19676 -- directly called by developer
19677 PROCEDURE is_model_upto_date(p_model_id IN NUMBER, x_return_status IN OUT NOCOPY NUMBER, x_msg_data IN OUT NOCOPY VARCHAR2)
19678 IS
19679   l_component_id                cz_model_ref_expls.component_id%TYPE;
19680   l_model_name                  cz_devl_projects.NAME%TYPE;
19681   l_root_model_name             cz_devl_projects.NAME%TYPE;
19682   l_prj_last_logic_update       cz_devl_projects.last_logic_update%TYPE;
19683   l_prj_last_struct_update      cz_devl_projects.last_struct_update%TYPE;
19684   l_logic_last_update_date      cz_lce_headers.last_update_date%TYPE;
19685   l_root_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
19686   l_engine_type                 cz_devl_projects.config_engine_type%TYPE;
19687   l_is_solver_model             BOOLEAN;
19688 
19689   CURSOR model_cur(in_root_model NUMBER) IS
19690          SELECT DISTINCT component_id
19691          FROM cz_model_ref_expls
19692          WHERE deleted_flag = '0' AND model_id = in_root_model AND ps_node_type = 263;
19693 BEGIN
19694   fnd_msg_pub.initialize;
19695 
19696   IF p_model_id IS NOT NULL THEN
19697     x_return_status := 0;
19698     x_msg_data := '';
19699 
19700     BEGIN
19701       SELECT last_logic_update, config_engine_type, NAME
19702         INTO l_prj_last_logic_update, l_engine_type, l_root_model_name
19703       FROM cz_devl_projects
19704       WHERE devl_project_id = p_model_id AND deleted_flag = '0';
19705     EXCEPTION
19706       WHEN NO_DATA_FOUND THEN
19707         RAISE;
19708     END;
19709 
19710     l_is_solver_model := (l_engine_type IS NOT NULL AND l_engine_type = ENGINE_TYPE_FCE);
19711 
19712     IF l_is_solver_model THEN
19713       SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
19714       FROM cz_fce_files
19715       WHERE component_id = p_model_id AND deleted_flag = '0';
19716     ELSE
19717       SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
19718       FROM cz_lce_headers
19719       WHERE cz_lce_headers.component_id = p_model_id AND cz_lce_headers.deleted_flag = '0';
19720     END IF;
19721 
19722     IF l_root_logic_last_update_date IS NULL OR l_root_logic_last_update_date < l_prj_last_logic_update THEN
19723       x_return_status := 1;
19724       x_msg_data := l_root_model_name;
19725       RETURN;
19726     END IF;
19727 
19728     OPEN model_cur(p_model_id);
19729     LOOP
19730       FETCH model_cur INTO l_component_id;
19731       EXIT WHEN model_cur%NOTFOUND;
19732       --vsingava 30th Sep '08
19733       --bug6348111
19734       BEGIN
19735         SELECT last_logic_update, NAME, last_struct_update
19736 	INTO l_prj_last_logic_update, l_model_name, l_prj_last_struct_update
19737         FROM cz_devl_projects
19738         WHERE cz_devl_projects.devl_project_id = l_component_id AND deleted_flag = '0';
19739       EXCEPTION
19740         WHEN OTHERS THEN
19741           l_prj_last_logic_update := NULL;
19742       END;
19743 
19744       IF l_prj_last_logic_update IS NOT NULL THEN
19745         IF l_is_solver_model THEN
19746           SELECT MAX(last_update_date) INTO l_logic_last_update_date
19747           FROM cz_fce_files
19748           WHERE component_id = l_component_id AND deleted_flag = '0';
19749         ELSE
19750           SELECT MAX(last_update_date) INTO l_logic_last_update_date
19751           FROM cz_lce_headers
19752           WHERE cz_lce_headers.component_id = l_component_id AND cz_lce_headers.deleted_flag = '0';
19753         END IF;
19754       END IF;
19755 
19756       IF l_prj_last_logic_update IS NULL OR l_logic_last_update_date IS NULL OR
19757          l_logic_last_update_date < l_prj_last_logic_update THEN
19758         x_return_status := 1;
19759         x_msg_data := l_model_name;
19760         EXIT;
19761       ELSIF l_root_logic_last_update_date < l_prj_last_struct_update THEN
19762         x_return_status := 1;
19763         x_msg_data := l_root_model_name;
19764         EXIT;
19765       END IF;
19766     END LOOP;
19767 
19768     CLOSE model_cur;
19769   END IF;
19770 EXCEPTION
19771   WHEN OTHERS THEN
19772     x_return_status := 1;
19773     x_msg_data := SQLERRM;
19774 END is_model_upto_date;
19775 --------------------------------------------------------------------------------
19776 -- private, check all uis if input uidefid null, check the given ui tree otherwise
19777    PROCEDURE model_upto_date(modelid IN NUMBER, status IN OUT NOCOPY VARCHAR2, uidefid IN NUMBER DEFAULT NULL)
19778    AS
19779       l_model_name VARCHAR2(4000);
19780       l_ui_name cz_ui_defs.NAME%TYPE;
19781       l_ui_model_name VARCHAR2(4000);
19782       l_model_status NUMBER;
19783       l_ui_status NUMBER;
19784       l_folder_id NUMBER;
19785       l_folder_path VARCHAR2(4000);
19786       l_model_upto_date BOOLEAN;
19787       l_ui_upto_date BOOLEAN;
19788       l_uidef_tbl  t_ref;
19789    BEGIN
19790       l_model_upto_date := TRUE;
19791       is_model_upto_date(modelid, l_model_status, l_model_name);
19792 
19793       IF l_model_status IS NOT NULL AND l_model_status <> 0 THEN
19794          l_model_upto_date := FALSE;
19795       END IF;
19796 
19797       l_ui_upto_date := TRUE;
19798 
19799       IF uidefid IS NULL THEN
19800         IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19801           SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
19802 	  FROM cz_ui_defs
19803 	  WHERE deleted_flag='0' AND ui_style=g_ui_style_jrad AND devl_project_id IN
19804 	  (SELECT component_id FROM cz_model_ref_expls
19805            WHERE deleted_flag='0' AND model_id=modelid);
19806         ELSE
19807           SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
19808           FROM cz_ui_defs
19809           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
19810           (SELECT component_id FROM cz_model_ref_expls
19811            WHERE deleted_flag='0' AND model_id=modelid);
19812         END IF;
19813 
19814         IF l_uidef_tbl.COUNT > 0 THEN
19815           FOR i IN l_uidef_tbl.FIRST .. l_uidef_tbl.LAST LOOP
19816             is_ui_upto_date(p_ui_def_id         => l_uidef_tbl(i)
19817                            ,p_report_model_info => 1
19818                            ,x_return_status     => l_ui_status
19819                            ,x_msg_data          => l_ui_name
19820                            ,x_model_name        => l_ui_model_name
19821                            ,p_check_root_ui_only=> TRUE
19822                            );
19823             IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
19824               l_ui_upto_date := FALSE;
19825               EXIT;
19826             END IF;
19827           END LOOP;
19828         END IF;
19829       ELSE
19830         is_ui_upto_date(uidefid, 1, l_ui_status, l_ui_name, l_ui_model_name);
19831         IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
19832           l_ui_upto_date := FALSE;
19833         END IF;
19834       END IF;
19835 
19836       -- l_status := NVL(l_model_status,0) + NVL(l_ui_status,0);
19837       -- 0 ok, 1 model not up to date, 2 ui node up to date, 3 both model and ui not up to date
19838       IF NOT l_ui_upto_date OR NOT l_model_upto_date THEN
19839          BEGIN
19840             SELECT enclosing_folder
19841               INTO l_folder_id
19842               FROM cz_rp_entries
19843              WHERE object_id = modelid AND enclosing_folder <> 0 AND object_type = 'PRJ' AND deleted_flag = '0';
19844 
19845             FOR rp_rec IN (SELECT NAME
19846                            FROM cz_rp_entries
19847                            START WITH object_type = 'FLD' AND object_id = l_folder_id
19848                            CONNECT BY PRIOR enclosing_folder = object_id AND object_type = 'FLD' AND object_id <> 0 AND deleted_flag = '0')
19849             LOOP
19850                l_folder_path := rp_rec.NAME || '/' || l_folder_path;
19851             END LOOP;
19852          EXCEPTION
19853             WHEN OTHERS THEN
19854                l_folder_path := NULL;
19855          END;
19856       END IF;
19857 
19858       IF l_folder_path IS NOT NULL AND NOT l_model_upto_date THEN
19859          l_model_name := l_folder_path || l_model_name;
19860       END IF;
19861 
19862       IF l_folder_path IS NOT NULL AND NOT l_ui_upto_date THEN
19863          l_ui_model_name := l_folder_path || l_ui_model_name;
19864       END IF;
19865 
19866       IF NOT l_ui_upto_date AND l_model_upto_date THEN                                                     -- l_status = 2
19867          status :=
19868             cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', CZ_UTILS.GET_TEXT('CZ_UI_TEXT') || ' ''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
19869       ELSIF l_ui_upto_date AND NOT l_model_upto_date THEN                                                  -- l_status = 1
19870          status := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', CZ_UTILS.GET_TEXT('CZ_LOGIC_TEXT') , 'MODELID', '''' || l_model_name || '''');
19871       ELSIF NOT l_ui_upto_date AND NOT l_model_upto_date THEN                                              -- l_status = 3
19872          status :=
19873                   cz_utils.get_text('CZ_PB_UI_LOGIC_NOT_UP_TO_DATE', 'STRING', '''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
19874       ELSE
19875          status := '0';
19876       END IF;
19877    EXCEPTION
19878       WHEN OTHERS THEN
19879          log_pb_errors(SQLERRM, 1, 'cz_pb_mgr.MODEL_UPTO_DATE', SQLCODE);
19880          raise_application_error(-20010, SQLERRM);
19881    END model_upto_date;
19882 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19883 -- public
19884 PROCEDURE model_upto_date(modelid IN NUMBER, uidefid IN NUMBER, status IN OUT NOCOPY VARCHAR2)
19885 AS
19886 BEGIN
19887   model_upto_date(modelid, status, uidefid);
19888 END model_upto_date;
19889 ----------------------------------------------------------------------------------
19890    FUNCTION migrate_name(p_devl_project_id IN NUMBER)
19891       RETURN VARCHAR2
19892    IS
19893       original_name cz_devl_projects.NAME%TYPE;
19894       v_name cz_devl_projects.NAME%TYPE;
19895       v_instance_name cz_servers.instance_name%TYPE;
19896       v_null PLS_INTEGER;
19897       l_endBr varchar2(3):=NULL;
19898    BEGIN
19899       BEGIN
19900          SELECT instance_name
19901            INTO v_instance_name
19902            FROM cz_servers
19903           WHERE server_local_id = 0;
19904 
19905          SELECT NAME
19906            INTO original_name
19907            FROM cz_rp_entries
19908           WHERE object_id = p_devl_project_id AND object_type = 'PRJ' AND deleted_flag = '0';
19909       EXCEPTION
19910          WHEN NO_DATA_FOUND
19911          THEN
19912             original_name := NULL;
19913             RAISE;
19914          WHEN OTHERS
19915          THEN
19916             original_name := NULL;
19917             RAISE;
19918       END;
19919 
19920       IF (original_name IS NOT NULL)
19921       THEN
19922          IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19923          v_name := SUBSTR (original_name|| '-[FCE]', 1, 235);
19924 
19925 	 ELSE
19926          v_name :=
19927                SUBSTR (original_name
19928             || ' (Migrated from '
19929             || v_instance_name
19930             || ':'
19931             || REPLACE(cz_developer_utils_pvt.get_repository_path(p_devl_project_id, 'PRJ'), '/', '.'), 1, 235);
19932             -- Bug 5514199; 12-Sep-2006; kdande; Taking 235 chars only as other characters would be appended at runtime like copy x, rules etc
19933          END IF;
19934 
19935 	 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19936 	         l_endBr:='';
19937 	 ELSE
19938 		 l_endBr:=')';
19939 	 END IF;
19940          BEGIN
19941             EXECUTE IMMEDIATE    'SELECT NULL FROM cz_rp_entries'
19942                               || cz_pb_mgr.v_db_link
19943                               || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
19944                               || '       name = :1'
19945                          INTO v_null
19946                         USING v_name || l_endBr;
19947          EXCEPTION
19948             WHEN NO_DATA_FOUND
19949             THEN
19950                RETURN v_name || l_endBr;
19951          END;
19952 
19953          BEGIN
19954             EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_rp_entries'
19955                               || cz_pb_mgr.v_db_link
19956                               || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
19957                               || '       name LIKE :1'
19958                          INTO v_null
19959                         USING v_name || ' copy _%'||l_endBr;
19960 
19961             --This is copy v_null + 1.
19962             RETURN v_name || ' copy ' || TO_CHAR(v_null + 1) || l_endBr;
19963          EXCEPTION
19964             WHEN NO_DATA_FOUND
19965             THEN
19966                RETURN v_name || ' copy 1'||l_endBr;
19967          END;
19968       END IF;
19969    EXCEPTION
19970       WHEN OTHERS
19971       THEN
19972          log_report('cz_utils', 'migrate_name', 1, SQLERRM, fnd_log.level_unexpected);
19973          v_name := 'ERROR';
19974          RETURN v_name;
19975    END;
19976 
19977 ----------------------------------------------------------------------------------
19978 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19979 ---------procedure to publish a single model
19980 PROCEDURE publish_model(publicationid IN NUMBER, x_run_id IN OUT NOCOPY NUMBER, x_pb_status IN OUT NOCOPY VARCHAR2)
19981 AS
19982   l_publication_proc  CONSTANT  VARCHAR2(10) := 'CZ_PB_MGR';
19983   l_migration_proc    CONSTANT  VARCHAR2(20) := 'CZ_MODEL_MIGRATION';
19984   l_proc_name  v$session.module%TYPE;
19985   v_check_publication BOOLEAN;
19986   v_new_copy_pb_id cz_model_publications.publication_id%TYPE;
19987   v_new_model_id cz_model_publications.model_id%TYPE;
19988   v_prev_publication_id cz_model_publications.publication_id%TYPE;
19989   v_prev_export_status cz_model_publications.export_status%TYPE;
19990   v_cur_export_status cz_model_publications.export_status%TYPE;
19991   v_pb_mode cz_model_publications.publication_mode%TYPE;
19992   l_tgt_status VARCHAR2(1);
19993   l_tgt_msg VARCHAR2(2000);
19994   l_msg_data VARCHAR2(2000);
19995   l_msg_count NUMBER;
19996   l_lock_status VARCHAR2(1);
19997   v_rp_entries_name cz_rp_entries.NAME%TYPE;
19998   v_rp_entries_desc cz_rp_entries.description%TYPE;
19999   v_object_id cz_rp_entries.object_id%TYPE;
20000   v_rp_orig_sys_ref VARCHAR2(255);
20001   v_imp_ps_node_count PLS_INTEGER;
20002   l_locked_models cz_security_pvt.number_type_tbl;
20003   l_upto_date_status VARCHAR2(2000);
20004   l_msg_index NUMBER;
20005   v_max_rec_id NUMBER;
20006   l_message VARCHAR2(32000);
20007   l_srcroot VARCHAR2(32000);
20008   l_targrootpath VARCHAR2(32000);
20009   l_srcmodel VARCHAR2(32000);
20010   l_tgt_fld_path VARCHAR2(32000);
20011   v_org_id cz_xfr_project_bills.organization_id%TYPE;                            -- Bug9031588
20012   v_component_item_id cz_xfr_project_bills.component_item_id%TYPE;                -- Bug9031588
20013   v_top_item_id cz_xfr_project_bills.top_item_id%TYPE;                           -- Bug9031588
20014 
20015   v_import_server_on_remote cz_servers.server_local_id%TYPE;
20016   l_target_imp_server_on_local  cz_servers.server_local_id%TYPE;
20017   l_instance_nm cz_servers.instance_name%TYPE;
20018 
20019   has_no_priv_to_publish EXCEPTION;
20020   failed_to_lock_model EXCEPTION;
20021   priv_check_err EXCEPTION;
20022   not_global_template EXCEPTION;
20023   model_not_upto_date EXCEPTION;
20024   invalid_object_type EXCEPTION;
20025   user_not_initialized EXCEPTION;
20026   cz_pb_link_problem EXCEPTION;
20027 
20028 BEGIN
20029   pbdebug := 22001;
20030   delete_session_parameters;
20031   clear_all_tables(cz_pb_mgr.v_status_code);
20032   initialize_pb_parameters(publicationid);
20033   get_multi_server_pub_flg;                       -- bug #10417318
20034 
20035   IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20036          log_timing_message('After get_multi_server_pub_flg: Multi Server Pub Flag is : '||vMultiServerPub);
20037   END IF;
20038 
20039   IF (fnd_global.user_name IS NULL) THEN
20040     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', 'User is not initialized on session');
20041     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CHECKUSER', 21002);
20042     RAISE user_not_initialized;
20043   END IF;
20044 
20045   get_source_pb_info(publicationid
20046                     ,cz_pb_mgr.v_root_model_id
20047                     ,cz_pb_mgr.v_root_ui_def_id
20048                     ,cz_pb_mgr.v_server_id
20049                     ,v_cur_export_status
20050                     ,cz_pb_mgr.remote_publication_id
20051                     ,g_object_type
20052                     ,v_pb_mode
20053                     ,cz_pb_mgr.v_status_code
20054                     );
20055 
20056   -- check if there is another publishing or a pub sync or a migration process running
20057   -- bug #10417318. If multipublicaiton enabled then making sure to allow parallel CP requests
20058   IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
20059     BEGIN
20060       IF (vMultiServerPub = 'YES') THEN
20061     	dbms_application_info.set_client_info(cz_pb_mgr.v_server_id);
20062         log_timing_message('Entered into Multi Server publication ');
20063         SELECT module INTO l_proc_name FROM V$SESSION WHERE module=l_publication_proc
20064         AND client_info = TO_CHAR(cz_pb_mgr.v_server_id);
20065      ELSE
20066          l_proc_name := cz_pb_sync_util.check_process;
20067      END IF;
20068      EXCEPTION
20069       WHEN NO_DATA_FOUND THEN
20070       NULL;
20071    END;
20072   ELSE -- must be migration because no stand alone UIT publication
20073     BEGIN
20074       SELECT module INTO l_proc_name FROM V$SESSION WHERE module = l_migration_proc;
20075     EXCEPTION
20076       WHEN NO_DATA_FOUND THEN
20077         NULL;
20078     END;
20079   END IF;
20080 
20081   IF l_proc_name IS NOT NULL THEN
20082 
20083     IF l_proc_name = l_publication_proc THEN
20084      -- bug #10417318
20085       IF (vMultiServerPub = 'YES') THEN
20086        SELECT instance_name INTO l_instance_nm FROM CZ_SERVERS WHERE server_local_id = cz_pb_mgr.v_server_id;
20087         cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PARALLEL_PROCESS_EXISTS', 'PROC_TYPE', 'publication', 'TGT_NAME', l_instance_nm );
20088         cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 1;
20089       ELSE
20090         cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'publication');
20091         cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20092       END IF;
20093     ELSIF l_proc_name = l_migration_proc THEN
20094       cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'model migration');
20095       cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20096     ELSE
20097       cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_SYNC_PROCESS_EXISTS');
20098       cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20099     END IF;
20100     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,'cz_pb_mgr.CHKPROCESS',21001);
20101     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20102     x_pb_status := PUBLICATION_ERROR;
20103     log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
20104     RETURN;
20105   END IF;
20106 
20107   -- register application
20108   IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
20109     dbms_application_info.set_module(l_publication_proc, '');
20110   ELSE
20111     dbms_application_info.set_module(l_migration_proc, '');
20112   END IF;
20113 
20114   BEGIN
20115     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20116       log_timing_message('start publish model');
20117     END IF;
20118 
20119       ----check if model is up to date
20120     --  IF (g_object_type = MODEL_PUBLICATION) THEN
20121          model_upto_date(cz_pb_mgr.v_root_model_id, l_upto_date_status);
20122 
20123          IF (l_upto_date_status <> '0') THEN
20124             cz_pb_mgr.v_err_message := l_upto_date_status;
20125             RAISE model_not_upto_date;
20126          END IF;
20127     --  END IF;
20128 
20129       IF (g_object_type = template_publication) THEN
20130          check_ui_template_exist(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_status_code);
20131 
20132          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20133             RAISE not_global_template;
20134          END IF;
20135       ELSIF(g_object_type = MODEL_PUBLICATION) THEN
20136          check_model_ui_exist(publicationid, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_root_ui_def_id, cz_pb_mgr.v_status_code);
20137       ELSIF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20138          RAISE invalid_object_type;
20139       END IF;
20140 
20141       check_export_status(v_cur_export_status, cz_publish, cz_pb_mgr.v_status_code);
20142 
20143       IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20144          RAISE invalid_object_type;
20145       END IF;
20146 
20147       ------ retrieve_db_link
20148       cz_pb_mgr.v_db_link := retrieve_db_link(cz_pb_mgr.v_server_id);
20149 
20150       -----check for source server flag on the target instance
20151       IF (cz_pb_mgr.v_server_id <> 0) THEN
20152          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20153             cz_pb_sync_util.verify_mig_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
20154          ELSE
20155             cz_pb_sync_util.verify_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
20156          END IF;
20157 
20158          IF (l_tgt_status <> '0') THEN
20159 
20160             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', l_tgt_msg);
20161             RAISE cz_pb_link_problem;
20162          END IF;
20163       END IF;
20164 
20165       l_target_imp_server_on_local := cz_pb_mgr.v_server_id;
20166 
20167       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20168 
20169          ----check for remote publication id on the target instance
20170 
20171          remote_pb_check(cz_pb_mgr.remote_publication_id);
20172 
20173       ELSE
20174 
20175          /*
20176           * Bug 5516478
20177           * On migrating a model to a remote server, if there are BOM models involved,
20178           * CZ_XFR_PROJECT_BILLS are also migrated.  However, the column SOURCE_SERVER
20179           * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
20180           * migration target.  Currently it was being copied from the source to the
20181           * target.  In order to do this we need to query CZ_SERVERS in the migration
20182           * target to get the SERVER_LOCAL_ID.
20183           */
20184 
20185           v_import_server_on_remote := getRemoteImportServer(l_target_imp_server_on_local);
20186 
20187       END IF;
20188 
20189       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20190          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20191             log_timing_message('start has_tobe_published');
20192          END IF;
20193 
20194          ----check if the publication has to be published
20195          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20196             v_check_publication := has_tobe_published(publicationid);
20197          ELSE
20198             v_check_publication := TRUE;
20199             ---for publishing, rules related tables are cleared in get_oa_tmpls
20200             ---which is called from has_to_be_published.
20201             ---for model migration, get_oa_tmpls is called from upload_ui_schema
20202             ---at which point, tables cannot be cleared because rules of the model have
20203             ---already been collected in these tables from bulk_collect_rules.
20204             ---so, if model migration, the rules related tables will NOT be cleared
20205             ---get_oa_tmpls.
20206             clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
20207          END IF;
20208 
20209          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20210             log_timing_message('end has_tobe_published');
20211          END IF;
20212 
20213           -- bug #10417318
20214           IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20215    	     cz_security_pvt.lock_pub_model(1.0
20216                                           ,cz_pb_mgr.v_root_model_id
20217                                           ,fnd_api.g_true
20218                                           ,fnd_api.g_true
20219 				          ,fnd_api.g_false
20220 				          ,cz_pb_mgr.v_server_id
20221 				          ,cz_pb_mgr.v_publication_id
20222                                           ,l_locked_models
20223                                           ,l_lock_status
20224                                           ,l_msg_count
20225                                           ,l_msg_data
20226                                           );
20227           ELSE
20228             cz_security_pvt.lock_model(1.0
20229                                      ,cz_pb_mgr.v_root_model_id
20230                                      ,fnd_api.g_true
20231                                      ,fnd_api.g_true
20232                                      ,l_locked_models
20233                                      ,l_lock_status
20234                                      ,l_msg_count
20235                                      ,l_msg_data
20236                                      );
20237          END IF;
20238 
20239          IF (l_lock_status <> 'S') THEN
20240             l_msg_index := 1;
20241 
20242             WHILE l_msg_count > 0
20243             LOOP
20244                cz_pb_mgr.v_err_message :=
20245                                cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', fnd_msg_pub.get(l_msg_index, fnd_api.g_false));
20246                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
20247                l_msg_index := l_msg_index + 1;
20248                l_msg_count := l_msg_count - 1;
20249             END LOOP;
20250 
20251             RAISE failed_to_lock_model;
20252          END IF;
20253 
20254          UPDATE cz_model_publications
20255             SET export_status = publication_processing
20256           WHERE publication_id = cz_pb_mgr.v_publication_id;
20257 
20258          IF (v_check_publication) THEN
20259             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20260                log_timing_message('start verify_model_for_sync');
20261             END IF;
20262 
20263             IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20264                verify_model_for_sync(l_target_imp_server_on_local, cz_pb_mgr.v_root_model_id);
20265             END IF;
20266 
20267             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20268                log_timing_message('end verify_model_for_sync');
20269                log_timing_message('start proc_export');
20270             END IF;
20271 
20272             BEGIN
20273                proc_export(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, cz_pb_mgr.v_status_code);
20274 
20275                IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy) AND(cz_pb_mgr.v_models_to_be_exported.COUNT = 0)) THEN
20276                   cz_pb_mgr.v_err_message := 'model data up to date, no fresh data export required';
20277                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.publish_model', SQLCODE);
20278                END IF;
20279 
20280                insert_template_elements;
20281 
20282 --------------------------------------------------------------------------------------------
20283 --If this is Model Migration, insert into cz_rp_entries, calculate max_persistent_rec_id and
20284 --and insert into CZ_PERSISTENT_REC_IDS with its value, report the migrated and not migrated models.
20285 --------------------------------------------------------------------------------------------
20286 
20287              IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20288                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20289                   EXECUTE IMMEDIATE    'SELECT REPLACE(cz_developer_utils_pvt.get_repository_path'
20290                                     || cz_pb_mgr.v_db_link
20291                                     || '(:1, ''FLD''), ''/'', ''.'') FROM DUAL'
20292                                INTO l_tgt_fld_path
20293                               USING cz_pb_mgr.g_migration_tgt_folder_id;
20294 
20295                   IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
20296                      v_imp_ps_node_count := 0;
20297 
20298                      FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
20299                      LOOP
20300                         v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
20301                         cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
20302                         cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
20303 
20304                         BEGIN
20305                            SELECT remote_model_id
20306                              INTO v_object_id
20307                              FROM cz_pb_model_exports
20308                             WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
20309                               AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
20310                         EXCEPTION
20311                            WHEN OTHERS THEN
20312                               cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
20313                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20314                         END;
20315 
20316                         BEGIN
20317                            SELECT desc_text, orig_sys_ref
20318                              INTO v_rp_entries_desc, v_rp_orig_sys_ref
20319                              FROM cz_devl_projects
20320                             WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
20321                         EXCEPTION
20322                            WHEN NO_DATA_FOUND THEN
20323                               v_rp_orig_sys_ref := NULL;
20324                               cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
20325                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20326                            WHEN OTHERS THEN
20327                               v_rp_orig_sys_ref := NULL;
20328                               cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
20329                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20330                               cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20331                         END;
20332 
20333                         v_rp_entries_name := migrate_name(cz_pb_mgr.v_models_to_be_exported(i));
20334 
20335                         IF (v_rp_entries_name = 'ERROR') THEN
20336                            cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20337                         END IF;
20338 
20339                         IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20340                            cz_pb_mgr.v_new_object_id := v_object_id;
20341 
20342                            BEGIN
20343                               cz_pb_mgr.v_rp_folder_id := cz_pb_mgr.g_migration_tgt_folder_id;
20344                               cz_pb_mgr.v_rp_name := v_rp_entries_name;
20345                               cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
20346 
20347                               EXECUTE IMMEDIATE    'BEGIN'
20348                                                 || ' '
20349                                                 || 'insert into cz_rp_entries'
20350                                                 || cz_pb_mgr.v_db_link
20351                                                 || ' ( OBJECT_TYPE'
20352                                                 || ' '
20353                                                 || ',OBJECT_ID'
20354                                                 || ' '
20355                                                 || ',ENCLOSING_FOLDER'
20356                                                 || ' '
20357                                                 || ',NAME'
20358                                                 || ' '
20359                                                 || ',DESCRIPTION'
20360                                                 || ' '
20361                                                 || ',DELETED_FLAG'
20362                                                 || ' '
20363                                                 || ',SEEDED_FLAG'
20364                                                 || ' '
20365                                                 || ')'
20366                                                 || ' '
20367                                                 || 'VALUES ( ''PRJ'''
20368                                                 || ' '
20369                                                 || ',cz_pb_mgr.v_new_object_id'
20370                                                 || ' '
20371                                                 || ',cz_pb_mgr.v_rp_folder_id'
20372                                                 || ' '
20373                                                 || ',cz_pb_mgr.v_rp_name'
20374                                                 || ' '
20375                                                 || ',cz_pb_mgr.v_rp_desc'
20376                                                 || ' '
20377                                                 || ',''0'''
20378                                                 || ' '
20379                                                 || ',''0'');'
20380                                                 || ' '
20381                                                 || 'commit;'
20382                                                 || ' '
20383                                                 || 'END;';
20384                            EXCEPTION
20385                               WHEN OTHERS THEN
20386                                  cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
20387                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20388                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20389                            END;
20390 
20391                            BEGIN
20392                               IF (cz_pb_mgr.v_rp_name IS NOT NULL) THEN
20393 
20394 				 EXECUTE IMMEDIATE    'BEGIN'
20395                                                    || ' '
20396                                                    || 'UPDATE cz_devl_projects'
20397                                                    || cz_pb_mgr.v_db_link
20398                                                    || '  t'
20399                                                    || ' '
20400                                                    || 'SET t.name = cz_pb_mgr.v_rp_name'
20401                                                    || ', post_migr_change_flag = '''
20402                                                    || cz_model_migration_pvt.change_flag_unchanged
20403                                                    || ''' '
20404                                                    || 'WHERE  t.devl_project_id = '
20405                                                    || cz_pb_mgr.v_new_object_id
20406                                                    || ';'
20407                                                    || ' '
20408                                                    || 'END;';
20409 
20410                               END IF;
20411 
20412                               COMMIT;
20413                            EXCEPTION
20414                               WHEN OTHERS THEN
20415                                  cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
20416                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20417                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20418                            END;
20419 
20420                            --Calculate the max_persistent_rec_id for the model and insert into CZ_PERSISTENT_REC_IDS.
20421                            EXECUTE IMMEDIATE    'SELECT GREATEST(NVL((SELECT MAX(persistent_node_id) FROM cz_ps_nodes'
20422                                              || cz_pb_mgr.v_db_link
20423                                              || '                      WHERE deleted_flag = ''0'' AND devl_project_id = :1), 0),'
20424                                              || '                NVL((SELECT MAX(persistent_rule_id) FROM cz_rules'
20425                                              || cz_pb_mgr.v_db_link
20426                                              || '                      WHERE deleted_flag = ''0'' AND devl_project_id = :2), 0),'
20427                                              || '                NVL((SELECT MAX(persistent_intl_text_id) FROM cz_localized_texts'
20428                                              || cz_pb_mgr.v_db_link
20429                                              || '                      WHERE deleted_flag = ''0'' AND model_id = :3), 0)) FROM DUAL'
20430                                         INTO v_max_rec_id
20431                                        USING v_object_id, v_object_id, v_object_id;
20432 
20433 
20434                            BEGIN
20435 
20436 			      EXECUTE IMMEDIATE    'BEGIN'
20437                                                    || ' '
20438                                                    || 'INSERT INTO CZ_PERSISTENT_REC_IDS'
20439                                                    || cz_pb_mgr.v_db_link
20440                                                    || '(devl_project_id,max_persistent_rec_id,deleted_flag)'
20441                                                    || ' '
20442                                                    || 'values(:1,:2,0) '
20443                                                    || ';'
20444                                                    || ' '
20445                                                    || 'END;' USING cz_pb_mgr.v_new_object_id,v_max_rec_id;
20446 
20447 
20448                               COMMIT;
20449                            EXCEPTION
20450                               WHEN OTHERS THEN
20451                                  cz_pb_mgr.v_err_message := 'Error in inserting into CZ_PERSISTENT_REC_IDS' || SQLERRM;
20452                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20453                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20454                            END;
20455 
20456                            ------insert into cz_xfr_project_bills
20457                            IF (v_rp_orig_sys_ref IS NOT NULL) THEN
20458                               BEGIN
20459 -- Bug9031588
20460                            SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_orgId(organization_id), organization_id)
20461                                  ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_compItemId(component_item_id),component_item_id)
20462                                  ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_topItemId(top_item_id),top_item_id)
20463                              INTO v_org_id, v_component_item_id, v_top_item_id
20464                              FROM cz_xfr_project_bills
20465                             WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node
20466                               AND cz_xfr_project_bills.deleted_flag = '0';
20467 
20468                                  EXECUTE IMMEDIATE    'BEGIN'
20469                                                    || ' '
20470                                                    || 'insert into cz_xfr_project_bills'
20471                                                    || cz_pb_mgr.v_db_link
20472                                                    || ' ('
20473                                                    || ' '
20474                                                    || 'MODEL_PS_NODE_ID'
20475                                                    || ' '
20476                                                    || ',ORGANIZATION_ID'
20477                                                    || ' '
20478                                                    || ',COMPONENT_ITEM_ID'
20479                                                    || ' '
20480                                                    || ',DESCRIPTION'
20481                                                    || ' '
20482                                                    || ',LAST_IMPORT_RUN_ID'
20483                                                    || ' '
20484                                                    || ',LAST_IMPORT_DATE'
20485                                                    || ' '
20486                                                    || ',SOURCE_BILL_DELETED'
20487                                                    || ' '
20488                                                    || ',TOP_ITEM_ID'
20489                                                    || ' '
20490                                                    || ',DELETED_FLAG'
20491                                                    || ' '
20492                                                    || ',EXPLOSION_TYPE'
20493                                                    || ' '
20494                                                    || ',BILL_REVISION_DATE'
20495                                                    || ' '
20496                                                    || ',EFF_FROM'
20497                                                    || ' '
20498                                                    || ',EFF_TO'
20499                                                    || ' '
20500                                                    || ',SOURCE_SERVER'
20501                                                    || ' '
20502                                                    || ',COPY_ADDL_CHILD_MODELS'
20503                                                    || ' '
20504                                                    || ')'
20505                                                    || ' '
20506                                                    || 'SELECT  cz_pb_mgr.v_new_object_id'
20507                                                    || ' '
20508                                                    || ',:1'
20509                                                    || ' '
20510                                                    || ',:2'
20511                                                    || ' '
20512                                                    || ',DESCRIPTION'
20513                                                    || ' '
20514                                                    || ',LAST_IMPORT_RUN_ID'
20515                                                    || ' '
20516                                                    || ',LAST_IMPORT_DATE'
20517                                                    || ' '
20518                                                    || ',SOURCE_BILL_DELETED'
20519                                                    || ' '
20520                                                    || ',:3'
20521                                                    || ' '
20522                                                    || ',DELETED_FLAG'
20523                                                    || ' '
20524                                                    || ',EXPLOSION_TYPE'
20525                                                    || ' '
20526                                                    || ',BILL_REVISION_DATE'
20527                                                    || ' '
20528                                                    || ',EFF_FROM'
20529                                                    || ' '
20530                                                    || ',EFF_TO'
20531                                                    || ' '
20532                                                    || ',:4'
20533                                                    || ' '
20534                                                    || ',COPY_ADDL_CHILD_MODELS'
20535                                                    || ' '
20536                                                    || 'FROM   cz_xfr_project_bills'
20537                                                    || ' '
20538                                                    || 'WHERE  cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
20539                                                    || ' '
20540                                                    || 'AND   cz_xfr_project_bills.deleted_flag = ''0'';'
20541                                                    || ' '
20542                                                    || 'commit;'
20543                                                    || ' '
20544                                                    || 'END;'
20545                                                    USING v_org_id, v_component_item_id, v_top_item_id, v_import_server_on_remote;   -- Bug9031588
20546                               EXCEPTION
20547                                  WHEN NO_DATA_FOUND THEN
20548                                     cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
20549                                     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20550                                  WHEN OTHERS THEN
20551                                     cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
20552                                     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20553                                     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20554                               END;
20555                            END IF;
20556                         END IF;
20557 
20558                         IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
20559                            l_srcroot := REPLACE(cz_developer_utils_pvt.get_repository_path(cz_pb_mgr.v_root_model_id, 'PRJ'), '/', '.');
20560                            l_targrootpath := l_tgt_fld_path || '.' || v_rp_entries_name;
20561                         END IF;
20562 
20563                         v_remote_names_exported(i) := v_rp_entries_name;
20564                      END LOOP;
20565 
20566                      IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20567                         FOR i IN 1 .. v_models_to_be_exported.COUNT
20568                         LOOP
20569                            IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
20570 --Root Model %SRCROOT was migrated to instance %TARGET as %TARGROOTPATH.
20571                               l_message :=
20572                                  cz_utils.get_text('CZ_MM_ROOT_EXPORTED'
20573                                                   ,'SRCROOT'
20574                                                   ,l_srcroot
20575                                                   ,'TARGET'
20576                                                   ,cz_pb_mgr.v_server_local_name
20577                                                   ,'TARGROOTPATH'
20578                                                   ,l_targrootpath
20579                                                   );
20580                               log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20581                            ELSE
20582 --Referenced Model %SRCMODEL was migrated to instance %TARGET as %TARGREPOSPATH when migrating %SRCROOT to %TARGROOTPATH.
20583                               l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_to_be_exported(i), 'PRJ'), '/', '.');
20584                               l_message :=
20585                                  cz_utils.get_text('CZ_MM_MODEL_EXPORTED'
20586                                                   ,'SRCMODEL'
20587                                                   ,l_srcmodel
20588                                                   ,'TARGET'
20589                                                   ,cz_pb_mgr.v_server_local_name
20590                                                   ,'TARGREPOSPATH'
20591                                                   , l_tgt_fld_path || '.' || v_remote_names_exported(i)
20592                                                   ,'SRCROOT'
20593                                                   ,l_srcroot
20594                                                   ,'TARGROOTPATH'
20595                                                   ,l_targrootpath
20596                                                   );
20597                               log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20598                            END IF;
20599                         END LOOP;
20600                      END IF;
20601                   END IF;
20602 
20603                   IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20604                      FOR i IN 1 .. v_models_not_to_be_exported.COUNT
20605                      LOOP
20606 --Referenced Model %SRCMODEL is unchanged locally and on instance %TARGET since its prior migration as %TARGREPOSPATH.
20607 --It has been reused in migrating root Model %SRCROOT to %TARGROOTPATH.
20608                         l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_not_to_be_exported(i), 'PRJ'), '/', '.');
20609                         l_message :=
20610                            cz_utils.get_text('CZ_MM_MODEL_NOT_EXPORTED'
20611                                             ,'SRCMODEL'
20612                                             ,l_srcmodel
20613                                             ,'TARGET'
20614                                             ,cz_pb_mgr.v_server_local_name
20615                                             ,'TARGREPOSPATH'
20616                                             ,v_remote_names_not_exported(v_models_not_to_be_exported(i))
20617                                             ,'SRCROOT'
20618                                             ,l_srcroot
20619                                             ,'TARGROOTPATH'
20620                                             ,l_targrootpath
20621                                             );
20622                         log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20623                      END LOOP;
20624                   END IF;
20625                END IF;
20626             END IF;
20627 
20628 --------------------------------------------------------------------------------------------
20629 --End of Model Migration section.
20630 --------------------------------------------------------------------------------------------
20631 
20632                -------update source pb record
20633                update_pb_status(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
20634 
20635                IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20636                   cz_pb_mgr.v_err_message :=
20637                                           cz_utils.get_text('CZ_PB_SUCCESS', 'MODELID', cz_pb_mgr.v_root_model_id, 'SERVERID', cz_pb_mgr.v_server_id);
20638                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_MODEL', SQLCODE);
20639                ELSE
20640                   cz_pb_mgr.global_export_retcode := 2;
20641                   rollback_data(cz_pb_mgr.v_db_link);
20642                END IF;
20643 
20644                COMMIT;
20645             EXCEPTION
20646                WHEN OTHERS THEN
20647                   -----message already logged
20648                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20649                   update_publication_status(cz_pb_mgr.v_publication_id, PUBLICATION_ERROR, empty_string);
20650             END;
20651 
20652             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20653                log_timing_message('end proc_export');
20654             END IF;
20655          ELSE                                                                                              /* else of IF (v_check_publication) THEN */
20656             BEGIN
20657                IF (cz_pb_mgr.remote_publication_id IS NOT NULL) THEN
20658                   get_republish_pb_info(cz_pb_mgr.remote_publication_id
20659                                        ,'PUP'
20660                                        ,v_prev_publication_id
20661                                        ,v_prev_export_status
20662                                        ,cz_pb_mgr.v_prev_remote_publication_id
20663                                        ,cz_pb_mgr.v_status_code
20664                                        );
20665 
20666                   IF (v_prev_publication_id > 0) THEN
20667                      cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(publicationid);
20668                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZREPUB', SQLCODE);
20669                   END IF;
20670                ELSIF(cz_pb_mgr.remote_publication_id IS NULL) THEN
20671                   get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_new_copy_pb_id, cz_pb_mgr.v_status_code);
20672                   get_new_copy_pb_info(v_new_copy_pb_id
20673                                       ,v_prev_publication_id
20674                                       ,v_prev_export_status
20675                                       ,cz_pb_mgr.v_prev_remote_publication_id
20676                                       ,cz_pb_mgr.v_status_code
20677                                       );
20678 
20679                   IF (v_prev_publication_id > 0) THEN
20680                      cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(NVL(publicationid, 0));
20681                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZNCOPY', SQLCODE);
20682                   END IF;
20683                END IF;                                                                /* end if of IF (cz_pb_mgr.remote_publication_id IS NOT NULL) */
20684 
20685                -------------get new sequence_no for the target publication_id
20686                get_new_publication_id(cz_pb_mgr.v_publication_id
20687                                      ,cz_pb_mgr.v_cz_model_pub_old_id
20688                                      ,cz_pb_mgr.v_cz_model_pub_new_id
20689                                      ,cz_pb_mgr.remote_publication_id
20690                                      ,cz_pb_mgr.v_status_code
20691                                      );
20692                ------get new ui def id and model id
20693                get_tgt_ui_def(cz_pb_mgr.v_root_ui_def_id
20694                              ,cz_pb_mgr.v_prev_remote_publication_id
20695                              ,v_new_model_id
20696                              ,cz_pb_mgr.new_ui_def_id
20697                              ,cz_pb_mgr.v_status_code
20698                              );
20699                ------insert new target publication record
20700                insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
20701                                      ,cz_pb_mgr.v_cz_model_pub_old_id
20702                                      ,v_new_model_id
20703                                      ,cz_pb_mgr.new_ui_def_id
20704                                      ,cz_pb_mgr.v_db_link
20705                                      ,'REPUBLISH'
20706                                      ,cz_pb_mgr.v_status_code
20707                                      );
20708                ---------------insert applicability parameters for tgt publication
20709                insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
20710                                    ,cz_pb_mgr.v_cz_model_pub_old_id
20711                                    ,cz_pb_mgr.v_session_parameter
20712                                    ,cz_pb_mgr.v_db_link
20713                                    ,cz_pb_mgr.v_status_code
20714                                    );
20715             EXCEPTION
20716                WHEN OTHERS THEN
20717                   -----message already logged
20718                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20719             END;
20720 
20721             ------reset status to the original if a re-publish fails
20722             IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP') THEN
20723                IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20724                   UPDATE cz_model_publications
20725                      SET export_status = 'OK'
20726                    WHERE publication_id = v_prev_publication_id;
20727                ELSE
20728                   UPDATE cz_model_publications
20729                      SET deleted_flag = '1'
20730                    WHERE publication_id = v_prev_publication_id;
20731 
20732                   EXECUTE IMMEDIATE    'BEGIN'
20733                                     || ' '
20734                                     || 'UPDATE cz_model_publications'
20735                                     || cz_pb_mgr.v_db_link
20736                                     || ''
20737                                     || ' '
20738                                     || 'SET deleted_flag = ''1'''
20739                                     || ' '
20740                                     || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
20741                                     || ' '
20742                                     || 'END;';
20743                END IF;
20744             END IF;
20745 
20746             -------update source pb record
20747             update_pb_status(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
20748 
20749             IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20750                -----set status for concurrent manager
20751                cz_pb_mgr.global_export_retcode := 2;
20752                rollback_data(cz_pb_mgr.v_db_link);
20753             END IF;
20754          END IF;                                                                                         /* end if of IF (v_check_publication) THEN */
20755       END IF;                                                                           /* end if of (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) */
20756 
20757       l_msg_count := 0;
20758       l_msg_index := 0;
20759 
20760       -- bug #10417318
20761       IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20762         cz_security_pvt.unlock_pub_model(1.0, fnd_api.g_true, l_locked_models, fnd_api.g_false, cz_pb_mgr.v_publication_id, l_lock_status, l_msg_count, l_msg_data );
20763       ELSE
20764         cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
20765       END IF;
20766 
20767       IF (l_lock_status <> 'S') THEN
20768          l_msg_index := 1;
20769 
20770          WHILE l_msg_count > 0
20771          LOOP
20772             cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
20773             l_msg_index := l_msg_index + 1;
20774             l_msg_count := l_msg_count - 1;
20775          END LOOP;
20776       END IF;
20777 
20778       -----insert_template_elements;
20779       -----------log trace
20780       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR(cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
20781          log_pb_trace;
20782       END IF;
20783 
20784       x_run_id := cz_pb_mgr.v_pb_run_id;
20785       x_pb_status := cz_pb_mgr.v_status_code;
20786       /* cz_security_pvt.unlock_entity  (cz_pb_mgr.v_root_model_id,
20787               cz_security_pvt.PUBLISH_MODEL_FUNCTION,
20788               l_locked_models,
20789               l_lock_status,
20790               l_msg_count,
20791               l_msg_data); */
20792       delete_session_parameters;
20793       -----unregister application
20794       cz_pb_sync_util.reset_dbms_info;
20795       COMMIT;
20796 
20797       IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20798          log_timing_message('end publish model');
20799       END IF;
20800 
20801       COMMIT;
20802    EXCEPTION
20803       WHEN user_not_initialized THEN
20804          x_pb_status := PUBLICATION_ERROR;
20805          x_run_id := cz_pb_mgr.v_pb_run_id;
20806          cz_pb_mgr.global_export_retcode := 2;
20807          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20808          update_pup_status(publicationid);
20809          log_pb_trace;
20810          delete_session_parameters;
20811       WHEN priv_check_err THEN
20812          cz_pb_mgr.v_err_message := l_msg_data;
20813          x_pb_status := PUBLICATION_ERROR;
20814          x_run_id := cz_pb_mgr.v_pb_run_id;
20815          cz_pb_mgr.global_export_retcode := 2;
20816          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20817          delete_session_parameters;
20818       WHEN has_no_priv_to_publish THEN
20819          cz_pb_mgr.v_err_message := l_msg_data;
20820          x_pb_status := PUBLICATION_ERROR;
20821          x_run_id := cz_pb_mgr.v_pb_run_id;
20822          cz_pb_mgr.global_export_retcode := 2;
20823          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20824          delete_session_parameters;
20825       WHEN failed_to_lock_model THEN
20826          x_pb_status := PUBLICATION_ERROR;
20827          x_run_id := cz_pb_mgr.v_pb_run_id;
20828          cz_pb_mgr.global_export_retcode := 2;
20829          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20830          update_pup_status(publicationid);
20831          -- bug #10417318
20832          IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20833             cz_security_pvt.unlock_pub_model(1.0, fnd_api.g_true, l_locked_models, fnd_api.g_false, publicationid, l_lock_status, l_msg_count, l_msg_data );
20834          ELSE
20835             cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
20836          END IF;
20837          log_pb_trace;
20838          delete_session_parameters;
20839       WHEN not_global_template THEN
20840          x_pb_status := PUBLICATION_ERROR;
20841          x_run_id := cz_pb_mgr.v_pb_run_id;
20842          cz_pb_mgr.global_export_retcode := 2;
20843          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20844          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20845          delete_session_parameters;
20846       WHEN model_not_upto_date THEN
20847          x_pb_status := PUBLICATION_ERROR;
20848          x_run_id := cz_pb_mgr.v_pb_run_id;
20849          cz_pb_mgr.global_export_retcode := 2;
20850          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20851          update_pup_status(publicationid);
20852          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRUPTODATE', -1);
20853          delete_session_parameters;
20854       WHEN invalid_object_type THEN
20855          x_pb_status := PUBLICATION_ERROR;
20856          x_run_id := cz_pb_mgr.v_pb_run_id;
20857          cz_pb_mgr.global_export_retcode := 2;
20858          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGROBJTYP', -1);
20859          delete_session_parameters;
20860       WHEN cz_pb_link_problem THEN
20861          x_pb_status := PUBLICATION_ERROR;
20862          x_run_id := cz_pb_mgr.v_pb_run_id;
20863          cz_pb_mgr.global_export_retcode := 2;
20864          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20865          update_pup_status(publicationid);
20866          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRLNKPRBLM', -1);
20867          delete_session_parameters;
20868   END;
20869   -- bug #10417318. setting client_info to null
20870   dbms_application_info.set_client_info('');
20871   -- unregister application
20872   dbms_application_info.set_module('', '');
20873 
20874 EXCEPTION
20875   WHEN OTHERS THEN
20876     x_run_id := cz_pb_mgr.v_pb_run_id ;
20877     x_pb_status := PUBLICATION_ERROR;
20878     cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20879     log_pb_errors(SQLERRM,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
20880      -- bug #10417318. setting client_info to null
20881     dbms_application_info.set_client_info('');
20882     dbms_application_info.set_module('', '');
20883     RAISE;
20884 END publish_model;
20885 
20886 ----------------------------------------------
20887 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20888 ------------wrappers used by concurrent manager to publish models
20889    PROCEDURE publish_models_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER)
20890    AS
20891    BEGIN
20892       retcode := 0;
20893       publish_all_models;
20894       errbuf := NULL;
20895 
20896       IF (cz_pb_mgr.global_export_retcode = 1)
20897       THEN
20898          errbuf := cz_utils.get_text('CZ_PB_WARNING');
20899       END IF;
20900 
20901       IF (cz_pb_mgr.global_export_retcode = 2)
20902       THEN
20903          errbuf := cz_utils.get_text('CZ_PB_FAILURE');
20904       END IF;
20905 
20906       retcode := cz_pb_mgr.global_export_retcode;
20907    EXCEPTION
20908       WHEN OTHERS
20909       THEN
20910          retcode := 2;
20911          errbuf := cz_utils.get_text('CZ_PB_OTHERS');
20912    END;
20913 
20914    PROCEDURE publish_single_model_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_publication_id NUMBER)
20915    AS
20916       v_run_id NUMBER := 0.0;
20917       v_pb_status VARCHAR2(3);
20918    BEGIN
20919       retcode := 0;
20920       cz_pb_mgr.global_export_retcode := 0;
20921       publish_model(p_publication_id, v_run_id, v_pb_status);
20922       errbuf := NULL;
20923 
20924       IF (cz_pb_mgr.global_export_retcode = 1)
20925       THEN
20926          errbuf := cz_utils.get_text('CZ_PB_WARNING');
20927       END IF;
20928 
20929       IF (cz_pb_mgr.global_export_retcode = 2)
20930       THEN
20931          errbuf := cz_utils.get_text('CZ_PB_FAILURE');
20932       END IF;
20933 
20934       retcode := cz_pb_mgr.global_export_retcode;
20935    EXCEPTION
20936       WHEN OTHERS
20937       THEN
20938          retcode := 2;
20939          errbuf := cz_utils.get_text('CZ_PB_OTHERS');
20940    END;
20941 
20942 --------------------------------------
20943    PROCEDURE seed_fnd_application_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_application_name VARCHAR2)
20944    AS
20945       v_run_id NUMBER := 0.0;
20946       v_pb_status VARCHAR2(3);
20947       l_application_id NUMBER;
20948    BEGIN
20949       retcode := 0;
20950 
20951       SELECT application_id
20952         INTO l_application_id
20953         FROM fnd_application_tl
20954        WHERE fnd_application_tl.application_name = p_application_name AND fnd_application_tl.language = USERENV('LANG');
20955 
20956       INSERT INTO cz_ext_applications
20957                   (application_id, preferred_ui_style, seeded_flag, deleted_flag
20958                   )
20959            VALUES (l_application_id, 3, '1', '0'
20960                   );
20961 
20962       errbuf := NULL;
20963       COMMIT;
20964    EXCEPTION
20965       WHEN OTHERS
20966       THEN
20967          retcode := 2;
20968          errbuf := cz_utils.get_text('CZ_APP_OTHERS', 'SQLERRM', SQLERRM);
20969    END;
20970 
20971 ----------------------------------------
20972 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20973 ----------proc to delete a publication
20974 ----------
20975     PROCEDURE delete_publication(
20976       publicationid IN NUMBER
20977      ,x_return_status OUT NOCOPY VARCHAR2
20978      ,x_msg_count OUT NOCOPY NUMBER
20979      ,x_msg_data OUT NOCOPY VARCHAR2
20980    )
20981    AS
20982       v_server_id cz_model_publications.server_id%TYPE;
20983       v_cz_link_name cz_servers.cz_link_name%TYPE;
20984       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20985       v_export_status cz_model_publications.export_status%TYPE;
20986       l_tmp_publication NUMBER;
20987       l_object_type cz_model_publications.object_type%TYPE;
20988       l_reset_publication cz_model_publications.remote_publication_id%TYPE := 0;
20989       no_link_name EXCEPTION;
20990       invalid_object_type EXCEPTION;
20991       template_in_use EXCEPTION;
20992       cannot_del_pup EXCEPTION;
20993       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
20994    BEGIN
20995       fnd_msg_pub.initialize;
20996       x_return_status := FND_API.G_RET_STS_SUCCESS;
20997       x_msg_count := 0;
20998       x_msg_data := '';
20999       fnd_msg_pub.initialize;
21000 
21001       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
21002       THEN
21003          l_pub_mode := cz_model_migration_pvt.mode_migration;
21004       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
21005       THEN
21006          l_pub_mode := cz_model_migration_pvt.mode_copy;
21007       END IF;
21008 
21009       SELECT server_id, export_status, remote_publication_id, object_type
21010         INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
21011         FROM cz_model_publications
21012        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
21013 
21014 
21015       --execute the procedure that obsoletes the records
21016       --if the target has been converted into a development instance
21017 
21018       IF (v_export_status <> model_publication_obselete) THEN
21019 
21020          cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21021          --it is possible that the obsoleting process changed value of the publication record.
21022          --so requery
21023          SELECT server_id, export_status, remote_publication_id, object_type
21024            INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
21025            FROM cz_model_publications
21026          WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
21027       END IF;
21028 
21029       IF (v_export_status = 'PUP')
21030       THEN
21031          RAISE cannot_del_pup;
21032       END IF;
21033 
21034       ----check for reset cases
21035       BEGIN
21036          SELECT publication_id
21037            INTO l_reset_publication
21038            FROM cz_model_publications
21039           WHERE cz_model_publications.remote_publication_id = v_remote_publication_id
21040             AND cz_model_publications.server_id = v_server_id
21041             AND cz_model_publications.deleted_flag = record_not_deleted
21042             AND cz_model_publications.export_status = 'PUP';
21043              --SPUPPALA bug#7116052 7-AUG-2009.
21044  	     --AND cz_model_publications.publication_mode = l_pub_mode;
21045       EXCEPTION
21046          WHEN OTHERS
21047          THEN
21048             l_reset_publication := 0;
21049       END;
21050 
21051       -- if publications are obsolete, their target should not be deleted
21052       IF ((v_server_id = 0) OR(v_export_status = model_publication_obselete))
21053       THEN
21054          v_cz_link_name := ' ';
21055       ELSE
21056          BEGIN
21057             SELECT fndnam_link_name
21058               INTO v_cz_link_name
21059               FROM cz_servers
21060              WHERE cz_servers.server_local_id = v_server_id;
21061          EXCEPTION
21062             WHEN OTHERS
21063             THEN
21064                v_cz_link_name := NULL;
21065          END;
21066 
21067          IF (v_cz_link_name IS NULL)
21068          THEN
21069             RAISE no_link_name;
21070          END IF;
21071 
21072          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21073       END IF;
21074 
21075       IF (l_object_type = template_publication)
21076       THEN
21077          ----query to check if template is used
21078          l_tmp_publication := 1;
21079 
21080          IF (l_tmp_publication = 1)
21081          THEN
21082             RAISE template_in_use;
21083          END IF;
21084       END IF;
21085 
21086       UPDATE cz_model_publications
21087          SET deleted_flag = '1'
21088        WHERE publication_id = publicationid;
21089 
21090       DELETE FROM cz_pb_client_apps
21091             WHERE publication_id = publicationid;
21092 
21093       DELETE FROM cz_publication_usages
21094             WHERE publication_id = publicationid;
21095 
21096       IF (l_reset_publication > 0)
21097       THEN
21098          UPDATE cz_model_publications
21099             SET export_status = 'OK'
21100           WHERE publication_id = l_reset_publication;
21101       END IF;
21102 
21103       IF ((v_export_status <> 'PEN') AND(v_remote_publication_id IS NOT NULL))
21104       THEN
21105          EXECUTE IMMEDIATE    'BEGIN'
21106                            || ' '
21107                            || 'UPDATE cz_model_publications'
21108                            || v_cz_link_name
21109                            || ''
21110                            || ' '
21111                            || 'SET deleted_flag = ''1'''
21112                            || ' '
21113                            || 'WHERE publication_id = '
21114                            || v_remote_publication_id
21115                            || ';'
21116                            || ' '
21117                            || 'END;';
21118 
21119          EXECUTE IMMEDIATE    'BEGIN'
21120                            || ' '
21121                            || 'DELETE FROM cz_pb_client_apps'
21122                            || v_cz_link_name
21123                            || ''
21124                            || ' '
21125                            || 'WHERE publication_id = '
21126                            || v_remote_publication_id
21127                            || ';'
21128                            || ' '
21129                            || 'END;';
21130 
21131          EXECUTE IMMEDIATE    'BEGIN'
21132                            || ' '
21133                            || 'DELETE FROM cz_publication_usages'
21134                            || v_cz_link_name
21135                            || ''
21136                            || ' '
21137                            || 'WHERE  publication_id = '
21138                            || v_remote_publication_id
21139                            || ';'
21140                            || ' '
21141                            || 'END;';
21142       END IF;
21143    EXCEPTION
21144       WHEN no_link_name
21145       THEN
21146          x_return_status := FND_API.G_RET_STS_ERROR;
21147          fnd_message.set_name('CZ', 'CZ_NO_LINK_NAME');
21148          fnd_msg_pub.ADD;
21149          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21150       WHEN cannot_del_pup
21151       THEN
21152          x_return_status := FND_API.G_RET_STS_ERROR;
21153          fnd_message.set_name('CZ', 'CZ_PB_CANNOT_DELETE_PUP');
21154          fnd_message.set_token('PUBID', publicationid);
21155          fnd_msg_pub.ADD;
21156          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21157       WHEN invalid_object_type
21158       THEN
21159          x_return_status := FND_API.G_RET_STS_ERROR;
21160          fnd_message.set_name('CZ', 'CZ_INVALID_PUB_TYPE');
21161          fnd_msg_pub.ADD;
21162          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21163       WHEN template_in_use
21164       THEN
21165          x_msg_data := cz_utils.get_text('CZ_TEMPLATE_IN_USE');
21166          x_return_status := FND_API.G_RET_STS_ERROR;
21167          fnd_message.set_name('CZ', 'CZ_TEMPLATE_IN_USE');
21168          fnd_msg_pub.ADD;
21169          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21170       WHEN OTHERS
21171       THEN
21172          x_return_status := FND_API.G_RET_STS_ERROR;
21173          x_msg_data := SQLERRM;
21174    END delete_publication;
21175 
21176 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21177 ----------disable publication
21178    PROCEDURE disable_publication(
21179       publicationid IN NUMBER
21180      ,x_return_status OUT NOCOPY VARCHAR2
21181      ,x_msg_count OUT NOCOPY NUMBER
21182      ,x_msg_data OUT NOCOPY VARCHAR2
21183    )
21184    AS
21185       v_server_id cz_model_publications.server_id%TYPE;
21186       v_cz_link_name cz_servers.cz_link_name%TYPE;
21187       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21188       v_object_type cz_model_publications.object_type%TYPE;
21189       v_export_status cz_model_publications.export_status%TYPE;
21190       cannot_disable_template EXCEPTION;
21191       cannot_disable_publication EXCEPTION;
21192    BEGIN
21193       x_return_status := FND_API.G_RET_STS_SUCCESS;
21194       fnd_msg_pub.initialize;
21195       --execute the procedure that obsoletes the records
21196       --if the target has been converted into a development
21197       --instance
21198       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21199 
21200       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21201       THEN
21202          RAISE pub_maybe_obsoleted;
21203       END IF;
21204 
21205       SELECT object_type, server_id, remote_publication_id, export_status
21206         INTO v_object_type, v_server_id, v_remote_publication_id, v_export_status
21207         FROM cz_model_publications
21208        WHERE cz_model_publications.publication_id = publicationid;
21209 
21210       BEGIN
21211          SELECT fndnam_link_name
21212            INTO v_cz_link_name
21213            FROM cz_servers
21214           WHERE cz_servers.server_local_id = v_server_id;
21215       EXCEPTION
21216          WHEN OTHERS
21217          THEN
21218             v_cz_link_name := NULL;
21219       END;
21220 
21221       IF (v_export_status NOT IN('OK', 'PEN'))
21222       THEN
21223          RAISE cannot_disable_publication;
21224       END IF;
21225 
21226       IF (v_object_type = template_publication)
21227       THEN
21228          RAISE cannot_disable_template;
21229       END IF;
21230 
21231       IF (v_server_id = 0)
21232       THEN
21233          v_cz_link_name := '';
21234       ELSE
21235          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21236       END IF;
21237 
21238       cz_pb_mgr.remote_publication_id := v_remote_publication_id;
21239 
21240       UPDATE cz_model_publications
21241          SET disabled_flag = '1'
21242        WHERE publication_id = publicationid;
21243 
21244       EXECUTE IMMEDIATE    'BEGIN'
21245                         || ' '
21246                         || 'UPDATE cz_model_publications'
21247                         || v_cz_link_name
21248                         || ''
21249                         || ' '
21250                         || 'SET   disabled_flag   = ''1'''
21251                         || ' '
21252                         || 'WHERE  publication_id =  cz_pb_mgr.remote_publication_id ;'
21253                         || ' '
21254                         || 'END;';
21255 
21256       COMMIT;
21257    EXCEPTION
21258       WHEN cannot_disable_publication
21259       THEN
21260          ----x_msg_data := CZ_UTILS.GET_TEXT('CZ_CANT_DISABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationId);
21261          x_return_status := FND_API.G_RET_STS_ERROR;
21262          fnd_message.set_name('CZ', 'CZ_CANT_DISABLE_PUB');
21263          fnd_message.set_token('STATUS', v_export_status);
21264          fnd_message.set_token('PUBID', publicationid);
21265          fnd_msg_pub.ADD;
21266          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21267       WHEN pub_maybe_obsoleted
21268       THEN
21269          x_return_status := FND_API.G_RET_STS_ERROR;
21270       WHEN cannot_disable_template
21271       THEN
21272          x_msg_data := cz_utils.get_text('CZ_CANT_DISABLE_TEMPL', 'PUBID', publicationid);
21273          x_return_status := FND_API.G_RET_STS_ERROR;
21274       WHEN OTHERS
21275       THEN
21276          x_return_status := FND_API.G_RET_STS_ERROR;
21277          x_msg_data := SQLERRM;
21278    END disable_publication;
21279 
21280 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21281    PROCEDURE get_edit_info(
21282       publicationid IN cz_model_publications.publication_id%TYPE
21283      ,x_product_key IN OUT NOCOPY cz_model_publications.product_key%TYPE
21284      ,x_publication_mode IN OUT NOCOPY VARCHAR2
21285      ,x_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
21286      ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
21287      ,x_source_target_flag IN OUT NOCOPY cz_model_publications.source_target_flag%TYPE
21288      ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.remote_publication_id%TYPE
21289    )
21290    AS
21291    BEGIN
21292       SELECT product_key, publication_mode, server_id, export_status, source_target_flag, remote_publication_id
21293         INTO x_product_key, x_publication_mode, x_server_id, x_export_status, x_source_target_flag, x_remote_publication_id
21294         FROM cz_model_publications
21295        WHERE cz_model_publications.publication_id = publicationid;
21296    EXCEPTION
21297       WHEN OTHERS
21298       THEN
21299          NULL;
21300    END;
21301 
21302 -------->>>>>>>>>>>>>>
21303    PROCEDURE populate_app_tbl(p_application_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
21304    AS
21305       x NUMBER := 1;
21306       i NUMBER := 0;
21307       y NUMBER := 0;
21308       v_str VARCHAR2(200);
21309    BEGIN
21310       WHILE(x > 0)
21311       LOOP
21312          x := INSTR(p_application_id, ';');
21313 
21314          IF (x = 0)
21315          THEN
21316             i := i + 1;
21317             x_app_tbl(i) := p_application_id;
21318          ELSE
21319             x := x - 1;
21320             v_str := SUBSTR(p_application_id, 1, x);
21321             i := i + 1;
21322             x_app_tbl(i) := v_str;
21323             y := LENGTH(p_application_id) -(x + 1);
21324             x := x + 2;
21325             p_application_id := SUBSTR(p_application_id, x, y);
21326          END IF;
21327       END LOOP;
21328    EXCEPTION
21329       WHEN OTHERS
21330       THEN
21331          RAISE;
21332    END;
21333 
21334 ------->>>>>>>>>>>>>>>>>>>>>>>>
21335    PROCEDURE populate_lang_tbl(p_lang_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code)
21336    AS
21337       x NUMBER := 1;
21338       i NUMBER := 0;
21339       y NUMBER := 0;
21340       v_str VARCHAR2(200);
21341    BEGIN
21342       WHILE(x > 0)
21343       LOOP
21344          x := INSTR(p_lang_id, ';');
21345 
21346          IF (x = 0)
21347          THEN
21348             i := i + 1;
21349             x_app_tbl(i) := p_lang_id;
21350          ELSE
21351             x := x - 1;
21352             v_str := SUBSTR(p_lang_id, 1, x);
21353             i := i + 1;
21354             x_app_tbl(i) := v_str;
21355             y := LENGTH(p_lang_id) -(x + 1);
21356             x := x + 2;
21357             p_lang_id := SUBSTR(p_lang_id, x, y);
21358          END IF;
21359       END LOOP;
21360    EXCEPTION
21361       WHEN OTHERS
21362       THEN
21363          RAISE;
21364    END;
21365 
21366 -------->>>>>>>>>>>>>>>>>>
21367    PROCEDURE delete_src_pb_data(publicationid IN cz_model_publications.publication_id%TYPE)
21368    AS
21369    BEGIN
21370       DELETE FROM cz_publication_usages
21371             WHERE cz_publication_usages.publication_id = publicationid;
21372 
21373       DELETE FROM cz_pb_client_apps
21374             WHERE cz_pb_client_apps.publication_id = publicationid;
21375 
21376       DELETE FROM cz_pb_languages
21377             WHERE cz_pb_languages.publication_id = publicationid;
21378    EXCEPTION
21379       WHEN OTHERS
21380       THEN
21381          RAISE;
21382    END;
21383 
21384 ------->>>>>>>>>>>>>>>>>>>>>>
21385    PROCEDURE insert_src_pb_data(
21386       publicationid IN cz_model_publications.publication_id%TYPE
21387      ,p_application_id_tbl IN cz_pb_mgr.t_ref
21388      ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
21389      ,p_usage_id_tbl IN cz_pb_mgr.t_ref
21390      ,x_status IN OUT NOCOPY VARCHAR2
21391    )
21392    AS
21393       v_application_short_name VARCHAR2(50);
21394    BEGIN
21395       FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
21396       LOOP
21397          SELECT application_short_name
21398            INTO v_application_short_name
21399            FROM fnd_application
21400           WHERE application_id = p_application_id_tbl(i);
21401 
21402          INSERT INTO cz_pb_client_apps
21403                      (publication_id, fnd_application_id, application_short_name, notes
21404                      )
21405               VALUES (publicationid, p_application_id_tbl(i), v_application_short_name, NULL
21406                      );
21407       END LOOP;
21408 
21409       FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
21410       LOOP
21411          INSERT INTO cz_pb_languages
21412                      (publication_id, LANGUAGE
21413                      )
21414               VALUES (publicationid, p_language_id_tbl(i)
21415                      );
21416       END LOOP;
21417 
21418       FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
21419       LOOP
21420          INSERT INTO cz_publication_usages
21421                      (publication_id, usage_id
21422                      )
21423               VALUES (publicationid, p_usage_id_tbl(i)
21424                      );
21425       END LOOP;
21426    EXCEPTION
21427       WHEN OTHERS
21428       THEN
21429          x_status := '-1';
21430          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EDIT_SRC_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21431          log_pb_errors(v_err_message, 1, 'cz_pb_mgr.EDITPB', SQLCODE);
21432          RAISE;
21433    END;
21434 
21435 -------->>>>>>>>>>>>>>>>>>>>>
21436    PROCEDURE insert_tgt_pb_data(
21437       p_status_str IN OUT NOCOPY VARCHAR2
21438      ,p_export_status IN cz_model_publications.export_status%TYPE
21439      ,p_tgt_link IN cz_servers.fndnam_link_name%TYPE
21440      ,p_publication_mode IN VARCHAR2
21441      ,p_start_date IN DATE
21442      ,p_disable_date IN DATE
21443      ,p_remote_publication_id IN cz_model_publications.remote_publication_id%TYPE
21444      ,p_application_id_tbl IN cz_pb_mgr.t_ref
21445      ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
21446      ,p_usage_id_tbl IN cz_pb_mgr.t_ref
21447    )
21448    AS
21449       v_application_short_name VARCHAR2(50);
21450       v_edit_str VARCHAR2(2000);
21451       tgt_appl_id number;
21452    BEGIN
21453       IF ((p_status_str <> '-1') AND(p_export_status <> 'PEN'))
21454       THEN
21455          v_edit_str :=
21456                'UPDATE  cz_model_publications'
21457             || p_tgt_link
21458             || ' '
21459             || 'SET   publication_mode = :1,'
21460             || ' '
21461             || 'applicable_from  = :2,'
21462             || ' '
21463             || 'applicable_until = :3'
21464             || ' '
21465             || 'WHERE publication_id  = '
21466             || p_remote_publication_id;
21467 
21468          EXECUTE IMMEDIATE v_edit_str
21469                      USING p_publication_mode, p_start_date, p_disable_date;
21470 
21471          v_edit_str :='DELETE FROM cz_publication_usages'||p_tgt_link||' ' ||
21472 				   'WHERE cz_publication_usages.publication_id = :1';
21473 
21474 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21475 
21476 
21477          v_edit_str := 'DELETE FROM cz_pb_client_apps'||p_tgt_link||' ' ||
21478 				   'WHERE  cz_pb_client_apps.publication_id = :1';
21479 
21480 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21481 
21482          v_edit_str := 'DELETE FROM cz_pb_languages'||p_tgt_link||' ' ||
21483 				   'WHERE  cz_pb_languages.publication_id = :1';
21484 
21485 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21486 
21487 	 IF (p_application_id_tbl.COUNT > 0) THEN
21488          FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
21489          LOOP
21490 
21491             EXECUTE IMMEDIATE 'SELECT t.application_short_name,t.application_id'
21492 		||' FROM fnd_application s,fnd_application'||p_tgt_link
21493 		||' t WHERE  s.application_id =:1 and '
21494 		||' s.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME'
21495 		into v_application_short_name,tgt_appl_id using p_application_id_tbl(i);
21496 
21497             v_edit_str :='INSERT INTO cz_pb_client_apps'||p_tgt_link||' (publication_id,fnd_application_id,application_short_name)'
21498 	       || ' ' || ' values (:1,:2,:3)';
21499 
21500 	    EXECUTE IMMEDIATE v_edit_str USING p_remote_publication_id,tgt_appl_id,v_application_short_name;
21501 
21502          END LOOP;
21503 	 END IF;
21504 
21505 	 IF (p_language_id_tbl.COUNT > 0) THEN
21506          FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
21507          LOOP
21508             v_edit_str :='INSERT INTO cz_pb_languages'||p_tgt_link||' (publication_id,language)' || ' ' ||
21509 								'values(:1,:2)';
21510 	    EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_language_id_tbl(i);
21511 
21512          END LOOP;
21513 	 END IF;
21514 
21515 	 IF (p_usage_id_tbl.COUNT > 0) THEN
21516          FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
21517          LOOP
21518             v_edit_str :='INSERT INTO cz_publication_usages'||p_tgt_link||' (publication_id,usage_id)' || ' ' ||
21519 							'VALUES(:1,:2)';
21520 
21521 	    EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_usage_id_tbl(i);
21522          END LOOP;
21523 	 END IF;
21524       END IF;
21525    EXCEPTION
21526       WHEN OTHERS
21527       THEN
21528          p_status_str := '-1';
21529    END;
21530 
21531 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21532 ---------edit publication
21533    PROCEDURE edit_publication(
21534       publicationid IN NUMBER
21535      ,applicationid IN OUT NOCOPY VARCHAR2
21536      ,languageid IN OUT NOCOPY VARCHAR2
21537      ,usageid IN OUT NOCOPY VARCHAR2
21538      ,startdate IN DATE
21539      ,disabledate IN DATE
21540      ,publicationmode IN VARCHAR2
21541      ,x_return_status OUT NOCOPY VARCHAR2
21542      ,x_msg_count OUT NOCOPY NUMBER
21543      ,x_msg_data OUT NOCOPY VARCHAR2
21544    )
21545    AS
21546       v_product_key cz_model_publications.product_key%TYPE;
21547       v_publication_mode cz_model_publications.publication_mode%TYPE;
21548       v_server_id cz_model_publications.server_id%TYPE;
21549       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21550       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21551       v_export_status cz_model_publications.export_status%TYPE;
21552       v_count NUMBER;
21553       v_application_id VARCHAR2(2000);
21554       v_language_id VARCHAR2(2000);
21555       v_usage_id VARCHAR2(2000);
21556       v_tgt_link VARCHAR2(128);
21557       x NUMBER := 1;
21558       i NUMBER := 0;
21559       y NUMBER := 0;
21560       v_msg VARCHAR2(2000);
21561       status_str VARCHAR2(200) := '0';
21562       no_pub_found EXCEPTION;
21563       l_publication_id NUMBER;
21564    BEGIN
21565       x_return_status := FND_API.G_RET_STS_SUCCESS;
21566       fnd_msg_pub.initialize;
21567       v_application_id_tbl.DELETE;
21568       v_usage_id_tbl.DELETE;
21569       v_language_id_tbl.DELETE;
21570       --execute the procedure that obsoletes the records
21571       --if the target has been converted into a development
21572       --instance
21573       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21574 
21575       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21576       THEN
21577          RAISE pub_maybe_obsoleted;
21578       END IF;
21579 
21580       BEGIN
21581          SELECT publication_id
21582            INTO l_publication_id
21583            FROM cz_model_publications
21584           WHERE cz_model_publications.publication_id = publicationid;
21585       EXCEPTION
21586          WHEN NO_DATA_FOUND
21587          THEN
21588             RAISE no_pub_found;
21589       END;
21590 
21591       SELECT COUNT(*)
21592         INTO v_count
21593         FROM cz_model_publications
21594        WHERE cz_model_publications.publication_id = publicationid
21595          AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR', model_publication_obselete);
21596 
21597       IF (v_count = 0)
21598       THEN
21599          x_return_status := FND_API.G_RET_STS_ERROR;
21600          x_msg_count := 1;
21601          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP/' || model_publication_obselete;
21602       ELSE
21603          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21604 
21605          IF (v_server_id = 0)
21606          THEN
21607             v_tgt_link := '';
21608          ELSE
21609             v_tgt_link := retrieve_db_link(v_server_id);
21610          END IF;
21611 
21612          UPDATE cz_model_publications
21613             SET publication_mode = publicationmode
21614                ,applicable_from = startdate
21615                ,applicable_until = disabledate
21616           WHERE publication_id = publicationid;
21617 
21618          populate_app_tbl(applicationid, v_application_id_tbl);
21619          populate_app_tbl(usageid, v_usage_id_tbl);
21620          populate_lang_tbl(languageid, v_language_id_tbl);
21621          delete_src_pb_data(publicationid);
21622          insert_src_pb_data(publicationid, v_application_id_tbl, v_language_id_tbl, v_usage_id_tbl, status_str);
21623          insert_tgt_pb_data(status_str
21624                            ,v_export_status
21625                            ,v_tgt_link
21626                            ,publicationmode
21627                            ,startdate
21628                            ,disabledate
21629                            ,v_remote_publication_id
21630                            ,v_application_id_tbl
21631                            ,v_language_id_tbl
21632                            ,v_usage_id_tbl
21633                            );
21634 
21635          IF (status_str = '-1')
21636          THEN
21637             x_return_status := FND_API.G_RET_STS_ERROR;
21638             x_msg_count := 1;
21639             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21640          ELSE
21641             COMMIT;
21642          END IF;
21643       END IF;
21644    EXCEPTION
21645       WHEN pub_maybe_obsoleted
21646       THEN
21647          x_return_status := FND_API.G_RET_STS_SUCCESS;
21648       WHEN no_pub_found
21649       THEN
21650          x_return_status := FND_API.G_RET_STS_SUCCESS;
21651          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21652       WHEN OTHERS
21653       THEN
21654          x_return_status := FND_API.G_RET_STS_ERROR;
21655          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21656    END edit_publication;
21657 
21658 --------------------------------------------------------
21659    PROCEDURE edit_publication(
21660       publicationid IN NUMBER
21661      ,applicationid IN OUT NOCOPY cz_pb_mgr.t_ref
21662      ,languageid IN OUT NOCOPY cz_pb_mgr.t_lang_code
21663      ,usageid IN OUT NOCOPY cz_pb_mgr.t_ref
21664      ,startdate IN DATE
21665      ,disabledate IN DATE
21666      ,publicationmode IN VARCHAR2
21667      ,x_return_status OUT NOCOPY VARCHAR2
21668      ,x_msg_count OUT NOCOPY NUMBER
21669      ,x_msg_data OUT NOCOPY VARCHAR2
21670    )
21671    AS
21672       v_product_key cz_model_publications.product_key%TYPE;
21673       v_publication_mode cz_model_publications.publication_mode%TYPE;
21674       v_server_id cz_model_publications.server_id%TYPE;
21675       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21676       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21677       v_export_status cz_model_publications.export_status%TYPE;
21678       v_count NUMBER;
21679       v_application_id VARCHAR2(2000);
21680       v_language_id VARCHAR2(2000);
21681       v_usage_id VARCHAR2(2000);
21682       v_tgt_link VARCHAR2(128);
21683       x NUMBER := 1;
21684       i NUMBER := 0;
21685       y NUMBER := 0;
21686       v_msg VARCHAR2(2000);
21687       status_str VARCHAR2(200) := '0';
21688       no_pub_found EXCEPTION;
21689       l_publication_id NUMBER;
21690    BEGIN
21691       x_return_status := FND_API.G_RET_STS_SUCCESS;
21692       fnd_msg_pub.initialize;
21693       --execute the procedure that obsoletes the records
21694       --if the target has been converted into a development
21695       --instance
21696       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21697 
21698       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21699       THEN
21700          RAISE pub_maybe_obsoleted;
21701       END IF;
21702 
21703       BEGIN
21704          SELECT publication_id
21705            INTO l_publication_id
21706            FROM cz_model_publications
21707           WHERE cz_model_publications.publication_id = publicationid;
21708       EXCEPTION
21709          WHEN NO_DATA_FOUND
21710          THEN
21711             RAISE no_pub_found;
21712       END;
21713 
21714       SELECT COUNT(*)
21715         INTO v_count
21716         FROM cz_model_publications
21717        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
21718 
21719       IF (v_count = 0)
21720       THEN
21721          x_return_status := FND_API.G_RET_STS_ERROR;
21722          x_msg_count := 1;
21723          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
21724       ELSE
21725          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21726 
21727          IF (v_server_id = 0)
21728          THEN
21729             v_tgt_link := '';
21730          ELSE
21731             v_tgt_link := retrieve_db_link(v_server_id);
21732          END IF;
21733 
21734          UPDATE cz_model_publications
21735             SET publication_mode = publicationmode
21736                ,applicable_from = startdate
21737                ,applicable_until = disabledate
21738           WHERE publication_id = publicationid;
21739 
21740          delete_src_pb_data(publicationid);
21741          insert_src_pb_data(publicationid, applicationid, languageid, usageid, status_str);
21742          insert_tgt_pb_data(status_str
21743                            ,v_export_status
21744                            ,v_tgt_link
21745                            ,publicationmode
21746                            ,startdate
21747                            ,disabledate
21748                            ,v_remote_publication_id
21749                            ,applicationid
21750                            ,languageid
21751                            ,usageid
21752                            );
21753 
21754          IF (status_str = '-1')
21755          THEN
21756             x_return_status := FND_API.G_RET_STS_ERROR;
21757             x_msg_count := 1;
21758             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21759          END IF;
21760       END IF;
21761    EXCEPTION
21762       WHEN pub_maybe_obsoleted
21763       THEN
21764          x_return_status := FND_API.G_RET_STS_SUCCESS;
21765       WHEN no_pub_found
21766       THEN
21767          x_return_status := FND_API.G_RET_STS_SUCCESS;
21768          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21769       WHEN OTHERS
21770       THEN
21771          x_return_status := FND_API.G_RET_STS_ERROR;
21772          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21773    END edit_publication;
21774 
21775 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21776 ---------edit publication
21777    PROCEDURE edit_tgt_pub(
21778       publicationid IN NUMBER
21779      ,applicationid IN OUT NOCOPY VARCHAR2
21780      ,languageid IN OUT NOCOPY VARCHAR2
21781      ,usageid IN OUT NOCOPY VARCHAR2
21782      ,startdate IN DATE
21783      ,disabledate IN DATE
21784      ,publicationmode IN VARCHAR2
21785      ,x_return_status OUT NOCOPY VARCHAR2
21786      ,x_msg_count OUT NOCOPY NUMBER
21787      ,x_msg_data OUT NOCOPY VARCHAR2
21788    )
21789    AS
21790       v_product_key cz_model_publications.product_key%TYPE;
21791       v_publication_mode cz_model_publications.publication_mode%TYPE;
21792       v_server_id cz_model_publications.server_id%TYPE;
21793       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21794       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21795       v_export_status cz_model_publications.export_status%TYPE;
21796       v_count NUMBER;
21797       v_application_id VARCHAR2(2000);
21798       v_language_id VARCHAR2(2000);
21799       v_usage_id VARCHAR2(2000);
21800       v_tgt_link VARCHAR2(128);
21801       x NUMBER := 1;
21802       i NUMBER := 0;
21803       y NUMBER := 0;
21804       v_msg VARCHAR2(2000);
21805       status_str VARCHAR2(200) := '0';
21806       no_pub_found EXCEPTION;
21807       l_publication_id NUMBER;
21808    BEGIN
21809       x_return_status := FND_API.G_RET_STS_SUCCESS;
21810       fnd_msg_pub.initialize;
21811       v_application_id_tbl.DELETE;
21812       v_usage_id_tbl.DELETE;
21813       v_language_id_tbl.DELETE;
21814       --execute the procedure that obsoletes the records
21815       --if the target has been converted into a development
21816       --instance
21817       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21818 
21819       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21820       THEN
21821          RAISE pub_maybe_obsoleted;
21822       END IF;
21823 
21824       BEGIN
21825          SELECT publication_id
21826            INTO l_publication_id
21827            FROM cz_model_publications
21828           WHERE cz_model_publications.publication_id = publicationid;
21829       EXCEPTION
21830          WHEN NO_DATA_FOUND
21831          THEN
21832             RAISE no_pub_found;
21833       END;
21834 
21835       SELECT COUNT(*)
21836         INTO v_count
21837         FROM cz_model_publications
21838        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
21839 
21840       IF (v_count = 0)
21841       THEN
21842          x_return_status := FND_API.G_RET_STS_ERROR;
21843          x_msg_count := 1;
21844          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
21845       ELSE
21846          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21847 
21848          IF (v_server_id = 0)
21849          THEN
21850             v_tgt_link := '';
21851          ELSE
21852             v_tgt_link := retrieve_db_link(v_server_id);
21853          END IF;
21854 
21855             -----UPDATE  cz_model_publications
21856                -----SET  publication_mode        = publicationMode,
21857             -----applicable_from      = startDate,
21858          -----applicable_until     = disableDate
21859                -----WHERE   publication_id           = publicationId;
21860          populate_app_tbl(applicationid, v_application_id_tbl);
21861          populate_app_tbl(usageid, v_usage_id_tbl);
21862          populate_lang_tbl(languageid, v_language_id_tbl);
21863          -----delete_src_pb_data(publicationId);
21864          -----insert_src_pb_data(publicationId,
21865                     ----v_application_id_tbl,
21866                     ----v_language_id_tbl,
21867                     ----v_usage_id_tbl,
21868                     ----status_str);
21869          insert_tgt_pb_data(status_str
21870                            ,v_export_status
21871                            ,v_tgt_link
21872                            ,publicationmode
21873                            ,startdate
21874                            ,disabledate
21875                            ,v_remote_publication_id
21876                            ,v_application_id_tbl
21877                            ,v_language_id_tbl
21878                            ,v_usage_id_tbl
21879                            );
21880 
21881          IF (status_str = '-1')
21882          THEN
21883             x_return_status := FND_API.G_RET_STS_ERROR;
21884             x_msg_count := 1;
21885             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21886          END IF;
21887       END IF;
21888    EXCEPTION
21889       WHEN pub_maybe_obsoleted
21890       THEN
21891          x_return_status := FND_API.G_RET_STS_SUCCESS;
21892       WHEN no_pub_found
21893       THEN
21894          x_return_status := FND_API.G_RET_STS_SUCCESS;
21895       WHEN OTHERS
21896       THEN
21897          x_return_status := FND_API.G_RET_STS_ERROR;
21898          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21899    END edit_tgt_pub;
21900 
21901 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21902    PROCEDURE chk_pub_overlap_internal(
21903       productkey IN VARCHAR2
21904      ,publicationmode IN VARCHAR2
21905      ,applicationid_tbl IN cz_pb_mgr.t_ref
21906      ,languageid_tbl IN cz_pb_mgr.t_lang_code
21907      ,usageid_tbl IN cz_pb_mgr.t_ref
21908      ,serverid IN NUMBER
21909      ,startdate IN DATE
21910      ,disabledate IN DATE
21911      ,sourcetargetflag IN VARCHAR2   ---DEFAULT 'S'
21912      ,pubrecid IN NUMBER
21913      ,publicationidstring IN OUT NOCOPY VARCHAR2
21914    )
21915    AS
21916       x NUMBER := 1;
21917       i NUMBER := 0;
21918       y NUMBER := 0;
21919       k NUMBER := 0;
21920       v_pb_count NUMBER := 1;
21921       publicationid NUMBER;
21922       v_appl_id NUMBER;
21923       v_lang_id VARCHAR2(4);
21924       v_usg_id NUMBER;
21925       v_pub_tbl cz_pb_mgr.t_ref;
21926       v_ret_pb cz_pb_mgr.t_ref;
21927       l_str VARCHAR2(2000);
21928 
21929       -- jonatara:bug6375826
21930       -- these temporary tables are introduced to handle the request from CZ_MODELOPERATIONS_PUB.create_publication_request
21931       t_languageId_tbl		CZ_PB_MGR.t_lang_code;
21932       t_usageId_tbl     	CZ_PB_MGR.t_ref;
21933 
21934    BEGIN
21935 	-- jonatara:bug6375826
21936 	-- setting default value to usage_id table and language table if they are NULL
21937 
21938 	-- setting default usage value as 'Any Usage'
21939 	IF usageId_tbl.COUNT = 0 THEN
21940 	  t_usageId_tbl(0) := -1;
21941 	ELSE
21942 	  t_usageId_tbl := usageId_tbl;
21943 	END IF;
21944 
21945 	-- setting default language value as'US'
21946 	IF languageId_tbl.COUNT = 0 THEN
21947 	  t_languageId_tbl(0) := 'US';
21948 	ELSE
21949 	  t_languageId_tbl := languageId_tbl;
21950 	END IF;
21951 
21952       publicationid := -1;
21953 
21954       IF (applicationid_tbl.COUNT > 0) THEN
21955       FOR i IN applicationid_tbl.FIRST .. applicationid_tbl.LAST
21956       LOOP
21957          v_appl_id := applicationid_tbl(i);
21958          -- jonatara:bug6375826
21959          IF (t_usageid_tbl.COUNT > 0) THEN
21960          FOR j IN t_usageid_tbl.FIRST .. t_usageid_tbl.LAST
21961          LOOP
21962             v_usg_id := t_usageid_tbl(j);
21963             IF (t_languageid_tbl.COUNT > 0) THEN
21964             FOR k IN t_languageid_tbl.FIRST .. t_languageid_tbl.LAST
21965             LOOP
21966                v_lang_id := t_languageid_tbl(k);
21967 
21968                IF ((v_appl_id IS NOT NULL) AND(v_usg_id IS NOT NULL) AND(v_lang_id IS NOT NULL))
21969                THEN
21970                   BEGIN
21971                      l_str :=
21972                            'productKey : '
21973                         || productkey
21974                         || 'mode : '
21975                         || publicationmode
21976                         || 'serverId: '
21977                         || serverid
21978                         || '
21979 							   appl_id: '
21980                         || v_appl_id
21981                         || ' usage '
21982                         || v_usg_id
21983                         || 'langid: '
21984                         || v_lang_id
21985                         || '
21986 							   startdate : '
21987                         || TO_CHAR(startdate, 'mm-dd-yyyy')
21988                         || ' disableDate : '
21989                         || TO_CHAR(disabledate, 'mm-dd-yyyy');
21990 
21991                      SELECT DISTINCT publication_id
21992                                 INTO publicationid
21993                                 FROM cz_model_applicabilities_v
21994                                WHERE product_key = LTRIM(RTRIM(productkey))
21995                                  AND UPPER(publication_mode) = LTRIM(RTRIM(UPPER(publicationmode)))
21996                                  AND server_id = serverid
21997                                  AND fnd_application_id = v_appl_id
21998                                  AND usage_id = v_usg_id
21999                                  AND LANGUAGE = v_lang_id
22000                                  AND deleted_flag = '0'
22001                                  AND UPPER(source_target_flag) = LTRIM(RTRIM(UPPER(sourcetargetflag)))
22002                                  AND publication_id <> pubrecid
22003                                  AND (   (    (start_date >= startdate)
22004                                           AND (startdate IS NOT NULL)
22005                                           AND (disabledate IS NOT NULL)
22006                                           AND (start_date < disabledate)
22007                                          )
22008                                       OR (    (disable_date > startdate)
22009                                           AND (startdate IS NOT NULL)
22010                                           AND (disabledate IS NOT NULL)
22011                                           AND (disable_date <= disabledate)
22012                                          )
22013                                       OR (    (start_date <= startdate)
22014                                           AND (startdate IS NOT NULL)
22015                                           AND (disabledate IS NOT NULL)
22016                                           AND (disable_date >= disabledate)
22017                                          )
22018                                       OR ((start_date <= startdate) AND(startdate < disable_date) AND(disabledate IS NULL))
22019                                       OR ((disable_date >= disabledate) AND(disabledate > start_date) AND(startdate IS NULL))
22020                                      );
22021                   EXCEPTION
22022                      WHEN NO_DATA_FOUND
22023                      THEN
22024                         publicationid := -1;
22025                      WHEN OTHERS
22026                      THEN
22027                         publicationid := -666;
22028                   END;
22029 
22030                   IF publicationid > 0
22031                   THEN
22032                      v_pub_tbl(v_pb_count) := publicationid;
22033                      v_pb_count := v_pb_count + 1;
22034                   END IF;
22035                END IF;
22036             END LOOP;
22037 	   END IF;
22038          END LOOP;
22039 	END IF;
22040       END LOOP;
22041      END IF;
22042 
22043       v_ret_pb.DELETE;
22044 
22045       IF v_pub_tbl.COUNT > 0
22046       THEN
22047          FOR i IN v_pub_tbl.FIRST .. v_pub_tbl.LAST
22048          LOOP
22049             publicationid := v_pub_tbl(i);
22050 
22051             IF (v_ret_pb.COUNT = 0)
22052             THEN
22053                x := 1;
22054                v_ret_pb(x) := publicationid;
22055             ELSE
22056                k := 0;
22057 
22058                FOR j IN v_ret_pb.FIRST .. v_ret_pb.LAST
22059                LOOP
22060                   IF (v_ret_pb(j) = publicationid)
22061                   THEN
22062                      k := k + 1;
22063                   END IF;
22064                END LOOP;
22065 
22066                IF k = 0
22067                THEN
22068                   y := v_ret_pb.COUNT + 1;
22069                   v_ret_pb(y) := publicationid;
22070                END IF;
22071             END IF;
22072          END LOOP;
22073 
22074          IF v_ret_pb.COUNT > 0
22075          THEN
22076             FOR m IN v_ret_pb.FIRST .. v_ret_pb.LAST
22077             LOOP
22078                IF publicationidstring IS NULL
22079                THEN
22080                   publicationidstring := TO_CHAR(v_ret_pb(m));
22081                ELSE
22082                   publicationidstring := publicationidstring || ';' || TO_CHAR(v_ret_pb(m));
22083                END IF;
22084             END LOOP;
22085          END IF;
22086       ELSIF(publicationid = -666)
22087       THEN
22088          publicationidstring := 'Fatal Error: More than one overlapping publications found';
22089       ELSE
22090          publicationidstring := TO_CHAR(-1);
22091       END IF;
22092    EXCEPTION
22093       WHEN OTHERS
22094       THEN
22095          RAISE;
22096    END chk_pub_overlap_internal;
22097 
22098 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22099 ------wrapper for check overlap publication - procedure (to be call from the VB)
22100    PROCEDURE check_publication_overlap(
22101       productkey IN VARCHAR2
22102      ,publicationmode IN VARCHAR2
22103      ,applicationid IN VARCHAR2
22104      ,languageid IN VARCHAR2
22105      ,usageid IN VARCHAR2
22106      ,serverid IN NUMBER
22107      ,startdate IN DATE
22108      ,disabledate IN DATE
22109      ,sourcetargetflag IN VARCHAR2
22110      ,pubrecid IN NUMBER
22111      ,publicationidstring OUT NOCOPY VARCHAR2
22112    )
22113    AS
22114       v_app_id_tbl cz_pb_mgr.t_ref;
22115       v_usg_id_tbl cz_pb_mgr.t_ref;
22116       v_lang_id_tbl cz_pb_mgr.t_lang_code;
22117       v_in_appl_id VARCHAR2(2000);
22118       v_in_lang_id VARCHAR2(2000);
22119       v_in_usg_id VARCHAR2(2000);
22120       l_publicationidstring VARCHAR2(2000);
22121    BEGIN
22122       fnd_msg_pub.initialize;
22123       v_in_appl_id := applicationid;
22124       v_in_lang_id := languageid;
22125       v_in_usg_id := usageid;
22126       populate_app_tbl(v_in_appl_id, v_app_id_tbl);
22127       populate_app_tbl(v_in_usg_id, v_usg_id_tbl);
22128       populate_lang_tbl(v_in_lang_id, v_lang_id_tbl);
22129       chk_pub_overlap_internal(productkey
22130                               ,publicationmode
22131                               ,v_app_id_tbl
22132                               ,v_lang_id_tbl
22133                               ,v_usg_id_tbl
22134                               ,serverid
22135                               ,startdate
22136                               ,disabledate
22137                               ,sourcetargetflag
22138                               ,pubrecid
22139                               ,l_publicationidstring
22140                               );
22141       publicationidstring := l_publicationidstring;
22142    EXCEPTION
22143       WHEN OTHERS
22144       THEN
22145          RAISE;
22146    END check_publication_overlap;
22147 
22148 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22149    PROCEDURE reset_processing_pubs
22150    IS
22151       v_link_name cz_servers.fndnam_link_name%TYPE;
22152       v_db_link VARCHAR2(255);
22153       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
22154    BEGIN
22155       fnd_msg_pub.initialize;
22156 
22157       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
22158       THEN
22159          l_pub_mode := cz_model_migration_pvt.mode_migration;
22160       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
22161       THEN
22162          l_pub_mode := cz_model_migration_pvt.mode_copy;
22163       END IF;
22164 
22165       FOR i IN (SELECT publication_id, remote_publication_id, server_id
22166                   FROM cz_model_publications
22167                  WHERE UPPER(export_status) = publication_processing AND deleted_flag = '0')
22168       LOOP
22169          BEGIN
22170             SELECT fndnam_link_name
22171               INTO v_link_name
22172               FROM cz_servers
22173              WHERE server_local_id = i.server_id;
22174 
22175             v_db_link := '';
22176 
22177             IF v_link_name IS NOT NULL
22178             THEN
22179                v_db_link := '@' || v_link_name;
22180             END IF;
22181 
22182             --
22183             -- mark remote publication as deleted
22184             --
22185             EXECUTE IMMEDIATE 'UPDATE CZ_MODEL_PUBLICATIONS' || v_db_link || ' SET deleted_flag=:1' || ' WHERE publication_id = :2'
22186                         USING '1', i.remote_publication_id;
22187          EXCEPTION
22188             WHEN NO_DATA_FOUND
22189             THEN
22190                NULL;
22191             WHEN OTHERS
22192             THEN
22193                NULL;
22194          END;
22195       END LOOP;
22196 
22197       DELETE FROM cz_pb_model_exports
22198             WHERE publication_id IN(SELECT publication_id
22199                                       FROM cz_model_publications
22200                                      WHERE UPPER(export_status) = publication_processing);
22201 
22202       UPDATE cz_model_publications
22203          SET export_status = publication_pending
22204        WHERE UPPER(export_status) = publication_processing;
22205 
22206       COMMIT;
22207    END;
22208 
22209 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22210 -----procedure that validates input dates for republish
22211    PROCEDURE validate_pb_dates(p_start_date IN OUT NOCOPY DATE, p_end_date IN OUT NOCOPY DATE, x_status IN OUT NOCOPY VARCHAR2)
22212    AS
22213    BEGIN
22214       IF (p_start_date > p_end_date)
22215       THEN
22216          x_status := PUBLICATION_ERROR;
22217          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_VALIDATE_DATES', 'STARTDATE', TO_CHAR(p_start_date), 'ENDDATE', TO_CHAR(p_end_date));
22218          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22219       END IF;
22220    EXCEPTION
22221       WHEN OTHERS
22222       THEN
22223          x_status := PUBLICATION_ERROR;
22224          cz_pb_mgr.v_err_message := 'Error during input start and end dates comparison: ' || SQLERRM;
22225          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22226    END validate_pb_dates;
22227 
22228 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22229 ------procedure that gets applicability parameters for the
22230 ------publication to be republished
22231    PROCEDURE get_pb_parameters(
22232       p_publication_id IN cz_model_publications.publication_id%TYPE
22233      ,x_applicationid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
22234      ,x_usageid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
22235      ,x_languageid_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code
22236      ,x_status IN OUT NOCOPY VARCHAR2
22237    )
22238    AS
22239    BEGIN
22240       SELECT fnd_application_id
22241       BULK COLLECT INTO x_applicationid_tbl
22242         FROM cz_pb_client_apps
22243        WHERE publication_id = p_publication_id;
22244 
22245       SELECT usage_id
22246       BULK COLLECT INTO x_usageid_tbl
22247         FROM cz_publication_usages
22248        WHERE publication_id = p_publication_id;
22249 
22250       SELECT LANGUAGE
22251       BULK COLLECT INTO x_languageid_tbl
22252         FROM cz_pb_languages
22253        WHERE publication_id = p_publication_id;
22254 
22255       IF ((x_applicationid_tbl.COUNT = 0) OR(x_usageid_tbl.COUNT = 0) OR(x_languageid_tbl.COUNT = 0))
22256       THEN
22257          x_status := PUBLICATION_ERROR;
22258          cz_pb_mgr.v_err_message := 'Republish terminated: all applicability parameters are not found for publication: ' || TO_CHAR(p_publication_id);
22259          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22260       END IF;
22261    EXCEPTION
22262       WHEN OTHERS
22263       THEN
22264          x_status := PUBLICATION_ERROR;
22265          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_PARAM_ERROR', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22266          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22267    END get_pb_parameters;
22268 
22269 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22270 ------procedure that creates a new publication request
22271 ------for republish
22272    PROCEDURE create_republish_request(
22273       p_publication_id IN cz_model_publications.publication_id%TYPE
22274      ,p_start_date IN DATE
22275      ,p_end_date IN DATE
22276      ,x_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
22277      ,p_repub_str IN VARCHAR2
22278      ,x_status IN OUT NOCOPY VARCHAR2
22279    )
22280    AS
22281       v_new_publication_id cz_model_publications.publication_id%TYPE;
22282       v_old_publication_id cz_model_publications.publication_id%TYPE;
22283    BEGIN
22284       x_status := 'OK';
22285 
22286       SELECT cz_model_publications_s.NEXTVAL, p_publication_id
22287         INTO v_new_publication_id, v_old_publication_id
22288         FROM DUAL;
22289 
22290       INSERT INTO cz_model_publications
22291                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22292                   ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
22293                   ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
22294                   ,model_persistent_id, source_target_flag, remote_publication_id, disabled_flag, object_id, object_type)
22295          SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22296                ,p_start_date, p_end_date, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01, user_str02
22297                ,user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
22298                ,remote_publication_id, disabled_flag, object_id, object_type
22299            FROM cz_model_publications
22300           WHERE publication_id = p_publication_id;
22301 
22302       v_repub_parameter := pub_model;
22303       insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_status);
22304 
22305       IF (p_repub_str = new_copy_str)
22306       THEN
22307          UPDATE cz_model_publications
22308             SET remote_publication_id = NULL
22309           WHERE publication_id = v_new_publication_id;
22310       ELSIF(p_repub_str = repub_str)
22311       THEN
22312          UPDATE cz_model_publications
22313             SET export_status = 'PUP'
22314           WHERE publication_id = p_publication_id;
22315       END IF;
22316 
22317       x_new_publication_id := v_new_publication_id;
22318       COMMIT;
22319    EXCEPTION
22320       WHEN OTHERS
22321       THEN
22322          x_status := PUBLICATION_ERROR;
22323          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_CREATE_REQUEST_ERROR', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22324          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22325    END create_republish_request;
22326 
22327 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22328    PROCEDURE create_republish_publication(
22329       p_publication_id IN NUMBER
22330      ,x_new_publication_id OUT NOCOPY NUMBER
22331      ,x_return_status OUT NOCOPY VARCHAR2
22332      ,x_msg_count OUT NOCOPY NUMBER
22333      ,x_msg_data OUT NOCOPY VARCHAR2
22334    )
22335    AS
22336       v_new_publication_id cz_model_publications.publication_id%TYPE;
22337       v_old_publication_id cz_model_publications.publication_id%TYPE;
22338       v_source_pb_record cz_model_publications%ROWTYPE;
22339       l_application_id_tbl cz_pb_mgr.t_ref;
22340       l_language_id_tbl cz_pb_mgr.t_lang_code;
22341       l_usage_id_tbl cz_pb_mgr.t_ref;
22342       l_param_status VARCHAR2(2000);
22343       v_upto_date_status VARCHAR2(2000);
22344       v_publicationidstring VARCHAR2(2000);
22345       l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
22346       l_deleted_flag VARCHAR2(1);
22347       l_ui_name cz_ui_defs.NAME%TYPE;
22348       expstatus_exception EXCEPTION;
22349       get_params_exception EXCEPTION;
22350       model_not_upto_date EXCEPTION;
22351       pub_overlap EXCEPTION;
22352       ui_def_id_is_deleted EXCEPTION;
22353    BEGIN
22354       x_return_status := FND_API.G_RET_STS_SUCCESS;
22355       fnd_msg_pub.initialize;
22356       --execute the procedure that obsoletes the records
22357       --if the target has been converted into a development
22358       --instance
22359       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
22360 
22361       ----check status
22362       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
22363       THEN
22364          RAISE pub_maybe_obsoleted;
22365       END IF;
22366 
22367       ----get source pb info
22368       SELECT *
22369         INTO v_source_pb_record
22370         FROM cz_model_publications
22371        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = cz_model_migration_pvt.pub_source_flag;
22372 
22373       ----check status
22374       IF (v_source_pb_record.export_status <> 'OK')
22375       THEN
22376          RAISE expstatus_exception;
22377       END IF;
22378 
22379       ----get applicability parameters
22380       get_pb_parameters(p_publication_id, l_application_id_tbl, l_usage_id_tbl, l_language_id_tbl, l_param_status);
22381 
22382       IF (l_param_status = PUBLICATION_ERROR)
22383       THEN
22384          RAISE get_params_exception;
22385       END IF;
22386 
22387       ----check if UI exists
22388       IF (v_source_pb_record.ui_def_id IS NOT NULL)
22389       THEN
22390          BEGIN
22391             SELECT ui_def_id, deleted_flag, NAME
22392               INTO l_ui_def_id, l_deleted_flag, l_ui_name
22393               FROM cz_ui_defs
22394              WHERE cz_ui_defs.ui_def_id = v_source_pb_record.ui_def_id;
22395          EXCEPTION
22396             WHEN NO_DATA_FOUND
22397             THEN
22398                RAISE ui_def_id_is_deleted;
22399          END;
22400 
22401          IF (l_deleted_flag = '1')
22402          THEN
22403             RAISE ui_def_id_is_deleted;
22404          END IF;
22405       END IF;
22406 
22407       ----check model upto date
22408       model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
22409 
22410       IF (v_upto_date_status <> '0')
22411       THEN
22412          RAISE model_not_upto_date;
22413       END IF;
22414 
22415       ----check publication overlap
22416       chk_pub_overlap_internal(v_source_pb_record.product_key
22417                               ,v_source_pb_record.publication_mode
22418                               ,l_application_id_tbl
22419                               ,l_language_id_tbl
22420                               ,l_usage_id_tbl
22421                               ,v_source_pb_record.server_id
22422                               ,v_source_pb_record.applicable_from
22423                               ,v_source_pb_record.applicable_until
22424                               ,v_source_pb_record.source_target_flag
22425                               ,v_source_pb_record.publication_id
22426                               ,v_publicationidstring
22427                               );
22428 
22429       IF (v_publicationidstring <> '-1')
22430       THEN
22431          RAISE pub_overlap;
22432       END IF;
22433 
22434       SELECT cz_model_publications_s.NEXTVAL, p_publication_id
22435         INTO v_new_publication_id, v_old_publication_id
22436         FROM DUAL;
22437 
22438       INSERT INTO cz_model_publications
22439                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22440                   ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
22441                   ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
22442                   ,model_persistent_id, source_target_flag, remote_publication_id, object_id, object_type, disabled_flag)
22443          SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22444                ,applicable_from, applicable_until, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01
22445                ,user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
22446                ,remote_publication_id, object_id, object_type, disabled_flag
22447            FROM cz_model_publications
22448           WHERE publication_id = p_publication_id;
22449 
22450       v_repub_parameter := pub_model;
22451       insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_return_status);
22452 
22453       UPDATE cz_model_publications
22454          SET export_status = 'PUP'
22455        WHERE publication_id = p_publication_id;
22456 
22457       x_new_publication_id := v_new_publication_id;
22458       COMMIT;
22459    EXCEPTION
22460       WHEN pub_overlap
22461       THEN
22462          ROLLBACK;
22463          x_return_status := FND_API.G_RET_STS_ERROR;
22464          fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
22465          fnd_message.set_token('PUBID', p_publication_id);
22466          fnd_message.set_token('PUBSTR', v_publicationidstring);
22467          fnd_msg_pub.ADD;
22468          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22469       WHEN ui_def_id_is_deleted
22470       THEN
22471          x_return_status := FND_API.G_RET_STS_ERROR;
22472 
22473          IF (l_ui_name IS NOT NULL)
22474          THEN
22475             fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
22476             fnd_message.set_token('UIDEFID', l_ui_name);
22477             fnd_msg_pub.ADD;
22478          ELSE
22479             fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
22480             fnd_message.set_token('UIDEFID', v_source_pb_record.ui_def_id);
22481             fnd_msg_pub.ADD;
22482          END IF;
22483 
22484          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22485       WHEN model_not_upto_date
22486       THEN
22487          ROLLBACK;
22488          x_return_status := FND_API.G_RET_STS_ERROR;
22489          fnd_message.set_name('CZ', 'CZ_REPUB_MODEL_NOT_UP_TO_DATE');
22490          fnd_message.set_token('PUBID', p_publication_id);
22491          fnd_message.set_token('MODELUPTODATE', v_upto_date_status);
22492          fnd_msg_pub.ADD;
22493          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22494       WHEN get_params_exception
22495       THEN
22496          ROLLBACK;
22497          x_return_status := FND_API.G_RET_STS_ERROR;
22498          fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
22499          fnd_message.set_token('PUBID', p_publication_id);
22500          fnd_msg_pub.ADD;
22501          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22502       WHEN expstatus_exception
22503       THEN
22504          ROLLBACK;
22505          x_return_status := FND_API.G_RET_STS_ERROR;
22506          fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERR');
22507          fnd_message.set_token('PUBID', p_publication_id);
22508          fnd_message.set_token('EXPORT STATUS', v_source_pb_record.export_status);
22509          fnd_msg_pub.ADD;
22510          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22511          cz_pb_mgr.v_republish_model := no_mode;
22512       WHEN pub_maybe_obsoleted
22513       THEN
22514          x_return_status := fnd_api.g_ret_sts_unexp_error;
22515       WHEN OTHERS
22516       THEN
22517          ROLLBACK;
22518          x_return_status := fnd_api.g_ret_sts_unexp_error;
22519          fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERROR');
22520          fnd_message.set_token('PUBID', p_publication_id);
22521          fnd_message.set_token('SQLERRM', SQLERRM);
22522          fnd_msg_pub.ADD;
22523          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22524    END create_republish_publication;
22525 
22526 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22527 ------procedure that resets the start and end dates
22528 ------of the original publication
22529    PROCEDURE reset_pb_dates(
22530       p_publicationid IN cz_model_publications.publication_id%TYPE
22531      ,x_applicable_from IN OUT NOCOPY DATE
22532      ,x_applicable_until IN OUT NOCOPY DATE
22533      ,x_orig_start_date IN OUT NOCOPY DATE
22534      ,x_orig_end_date IN OUT NOCOPY DATE
22535      ,x_start_date IN OUT NOCOPY DATE
22536      ,x_end_date IN OUT NOCOPY DATE
22537      ,x_reset_str IN OUT NOCOPY VARCHAR2
22538      ,x_status IN OUT NOCOPY VARCHAR2
22539    )
22540    AS
22541       v_db_link cz_servers.fndnam_link_name%TYPE;
22542       v_server_id cz_model_publications.server_id%TYPE;
22543       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
22544       reset_date_error EXCEPTION;
22545    BEGIN
22546       SELECT applicable_from, applicable_until, server_id, remote_publication_id
22547         INTO v_repub_appl_from, v_repub_appl_until, v_server_id, v_remote_publication_id
22548         FROM cz_model_publications
22549        WHERE publication_id = p_publicationid;
22550 
22551       x_orig_start_date := v_repub_appl_from;
22552       x_orig_end_date := v_repub_appl_until;
22553 
22554       IF ((x_start_date = v_repub_appl_from) AND(x_end_date = v_repub_appl_until))
22555       THEN
22556          x_reset_str := repub_str;
22557       ELSIF(   ((x_start_date > v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
22558             OR ((x_start_date < v_repub_appl_from) AND(x_end_date < v_repub_appl_from))
22559            )
22560       THEN
22561          x_reset_str := new_copy_str;
22562       ELSIF((x_start_date > v_repub_appl_from) AND(x_start_date < v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
22563       THEN
22564          v_repub_appl_until := x_start_date;
22565          v_repub_appl_until := x_start_date;
22566          x_reset_str := new_copy_str;
22567          cz_pb_mgr.v_republish_model := new_copy_mode;
22568       ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date > v_repub_appl_until))
22569       THEN
22570          x_reset_str := repub_str;
22571       ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date < v_repub_appl_until))
22572       THEN
22573          v_repub_appl_from := x_end_date;
22574          x_reset_str := new_copy_str;
22575          cz_pb_mgr.v_republish_model := new_copy_mode;
22576       ELSIF(    (x_start_date < v_repub_appl_from)
22577             AND (x_start_date < v_repub_appl_until)
22578             AND (x_end_date > v_repub_appl_from)
22579             AND (x_end_date < v_repub_appl_until)
22580            )
22581       THEN
22582          v_repub_appl_from := x_end_date;
22583          x_reset_str := new_copy_str;
22584          cz_pb_mgr.v_republish_model := new_copy_mode;
22585       ELSIF(    (x_start_date < v_repub_appl_from)
22586             AND (x_start_date < v_repub_appl_until)
22587             AND (x_end_date > v_repub_appl_from)
22588             AND (x_end_date > v_repub_appl_until)
22589            )
22590       THEN
22591          x_reset_str := repub_str;
22592          v_repub_appl_from := x_start_date;
22593          v_repub_appl_until := x_end_date;
22594       ELSIF(    (x_start_date > v_repub_appl_from)
22595             AND (x_start_date < v_repub_appl_until)
22596             AND (x_end_date > v_repub_appl_from)
22597             AND (x_end_date < v_repub_appl_until)
22598            )
22599       THEN
22600          v_repub_appl_from := x_start_date;
22601          v_repub_appl_until := x_end_date;
22602          x_reset_str := repub_str;
22603       ELSE
22604          RAISE reset_date_error;
22605       END IF;
22606 
22607       UPDATE cz_model_publications
22608          SET applicable_from = v_repub_appl_from
22609             ,applicable_until = v_repub_appl_until
22610        WHERE publication_id = p_publicationid;
22611 
22612       x_applicable_from := v_repub_appl_from;
22613       x_applicable_until := v_repub_appl_until;
22614       COMMIT;
22615    EXCEPTION
22616       WHEN reset_date_error
22617       THEN
22618          x_status := PUBLICATION_ERROR;
22619          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PUBID', p_publicationid, 'SQLERRM', SQLERRM);
22620          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22621       WHEN OTHERS
22622       THEN
22623          x_status := PUBLICATION_ERROR;
22624          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PUBID', p_publicationid, 'SQLERRM', SQLERRM);
22625          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22626    END reset_pb_dates;
22627 
22628 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22629    PROCEDURE reset_repub_changes(
22630       p_publication_id IN cz_model_publications.publication_id%TYPE
22631      ,p_orig_start_date IN DATE
22632      ,p_orig_end_date IN DATE
22633      ,x_reset_status IN OUT NOCOPY VARCHAR2
22634    )
22635    AS
22636    BEGIN
22637       UPDATE cz_model_publications
22638          SET cz_model_publications.applicable_from = p_orig_start_date
22639             ,cz_model_publications.applicable_until = p_orig_end_date
22640             ,cz_model_publications.deleted_flag = '0'
22641             ,cz_model_publications.export_status = 'OK'
22642        WHERE cz_model_publications.publication_id = p_publication_id;
22643 
22644       COMMIT;
22645    EXCEPTION
22646       WHEN OTHERS
22647       THEN
22648          x_reset_status := PUBLICATION_ERROR;
22649          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_PB_CHANGES', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22650          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22651    END reset_repub_changes;
22652 
22653 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22654 ------procedure that republishes a model
22655    PROCEDURE republish_model(
22656       p_publication_id IN OUT NOCOPY NUMBER
22657      ,p_start_date IN OUT NOCOPY DATE
22658      ,p_end_date IN OUT NOCOPY DATE
22659      ,x_run_id OUT NOCOPY NUMBER
22660      ,x_status OUT NOCOPY cz_model_publications.export_status%TYPE
22661    )
22662    AS
22663       v_upto_date_status VARCHAR2(2000);
22664       v_source_pb_record cz_model_publications%ROWTYPE;
22665       v_new_publication_id cz_model_publications.publication_id%TYPE;
22666       v_publicationidstring VARCHAR2(2000);
22667       v_reset_str VARCHAR2(100);
22668       v_reset_status VARCHAR2(2000);
22669       v_repub_status VARCHAR2(2000);
22670       v_param_status VARCHAR2(2000);
22671       v_publication_status VARCHAR2(3);
22672       v_create_status VARCHAR2(3);
22673       common_exception EXCEPTION;
22674    BEGIN
22675       initialize_pb_parameters(p_publication_id);
22676       ----initialize global republish parameter to be used in publish model
22677       cz_pb_mgr.v_republish_model := no_mode;
22678       x_status := 'OK';
22679       v_repub_appl_from := NULL;
22680       v_repub_appl_until := NULL;
22681       v_repub_remote_pb_id := 0;
22682 
22683       ---get run id
22684       SELECT cz_xfr_run_infos_s.NEXTVAL
22685         INTO cz_pb_mgr.v_pb_run_id
22686         FROM DUAL;
22687 
22688       x_run_id := cz_pb_mgr.v_pb_run_id;
22689 
22690       ----get source pb info
22691       SELECT *
22692         INTO v_source_pb_record
22693         FROM cz_model_publications
22694        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = g_source_flag;
22695 
22696       ----capture original values
22697       v_repub_remote_pb_id := v_source_pb_record.remote_publication_id;
22698       v_orig_start_date := v_source_pb_record.applicable_from;
22699       v_orig_end_date := v_source_pb_record.applicable_until;
22700       ----check status
22701       check_export_status(v_source_pb_record.export_status, cz_republish, x_status);
22702 
22703       IF (x_status = PUBLICATION_ERROR)
22704       THEN
22705          RAISE common_exception;
22706       END IF;
22707 
22708       ----get applicability parameters
22709       get_pb_parameters(p_publication_id, v_application_id_tbl, v_usage_id_tbl, v_language_id_tbl, v_param_status);
22710 
22711       IF (v_param_status = PUBLICATION_ERROR)
22712       THEN
22713          RAISE common_exception;
22714       END IF;
22715 
22716       ----validate input start and end dates
22717       IF (p_start_date IS NULL)
22718       THEN
22719          p_start_date := v_source_pb_record.applicable_from;
22720       END IF;
22721 
22722       IF (p_end_date IS NULL)
22723       THEN
22724          p_end_date := v_source_pb_record.applicable_until;
22725       END IF;
22726 
22727       validate_pb_dates(p_start_date, p_end_date, x_status);
22728 
22729       IF (x_status = PUBLICATION_ERROR)
22730       THEN
22731          RAISE common_exception;
22732       END IF;
22733 
22734       ----check model upto date
22735       model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
22736 
22737       IF (v_upto_date_status <> '0')
22738       THEN
22739          cz_pb_mgr.v_err_message := v_upto_date_status;
22740          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22741          RAISE common_exception;
22742       END IF;
22743 
22744       ---reset pb dates
22745       reset_pb_dates(p_publication_id
22746                     ,v_repub_appl_from
22747                     ,v_repub_appl_until
22748                     ,v_orig_start_date
22749                     ,v_orig_end_date
22750                     ,p_start_date
22751                     ,p_end_date
22752                     ,v_reset_str
22753                     ,v_reset_status
22754                     );
22755 
22756       IF (v_reset_status = PUBLICATION_ERROR)
22757       THEN
22758          RAISE common_exception;
22759       END IF;
22760 
22761       ----check publication overlap
22762       chk_pub_overlap_internal(v_source_pb_record.product_key
22763                               ,v_source_pb_record.publication_mode
22764                               ,v_application_id_tbl
22765                               ,v_language_id_tbl
22766                               ,v_usage_id_tbl
22767                               ,v_source_pb_record.server_id
22768                               ,p_start_date
22769                               ,p_end_date
22770                               ,v_source_pb_record.source_target_flag
22771                               ,v_source_pb_record.publication_id
22772                               ,v_publicationidstring
22773                               );
22774 
22775       IF (v_publicationidstring <> '-1')
22776       THEN
22777          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_OVERLAP', 'PUBID', p_publication_id, 'PUBSTR', v_publicationidstring);
22778          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22779          RAISE common_exception;
22780       ELSE
22781          ----create new publication request
22782          create_republish_request(p_publication_id, p_start_date, p_end_date, v_new_publication_id, v_reset_str, v_create_status);
22783 
22784          IF (v_create_status = PUBLICATION_ERROR)
22785          THEN
22786             RAISE common_exception;
22787          END IF;
22788 
22789          -----publish model
22790          publish_model(v_new_publication_id, x_run_id, v_publication_status);
22791       END IF;
22792 
22793       IF (v_publication_status = PUBLICATION_ERROR)
22794       THEN
22795          reset_repub_changes(p_publication_id, v_orig_start_date, v_orig_end_date, v_repub_status);
22796          RAISE common_exception;
22797       ELSE
22798          cz_pb_mgr.v_msg_tbl.DELETE;
22799          cz_pb_mgr.v_pb_run_id := x_run_id;
22800          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_SUCCESS', 'PUBID', p_publication_id);
22801          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUB_MODEL', SQLCODE);
22802          log_pb_trace;
22803       END IF;
22804 
22805       x_status := v_publication_status;
22806       cz_pb_mgr.v_republish_model := no_mode;
22807    EXCEPTION
22808       WHEN common_exception
22809       THEN
22810          ROLLBACK;
22811          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PUBID', p_publication_id);
22812          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22813          x_status := PUBLICATION_ERROR;
22814          log_pb_trace;
22815          cz_pb_mgr.v_republish_model := no_mode;
22816       WHEN OTHERS
22817       THEN
22818          x_status := PUBLICATION_ERROR;
22819          cz_pb_mgr.v_republish_model := no_mode;
22820          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22821          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22822          log_pb_trace;
22823    END republish_model;
22824 
22825 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22826 ----------enable publication
22827    PROCEDURE enable_publication(
22828       publicationid IN NUMBER
22829      ,x_return_status OUT NOCOPY VARCHAR2
22830      ,x_msg_count OUT NOCOPY NUMBER
22831      ,x_msg_data OUT NOCOPY VARCHAR2
22832    )
22833    AS
22834       v_server_id cz_model_publications.server_id%TYPE;
22835       v_cz_link_name cz_servers.cz_link_name%TYPE;
22836       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
22837       v_app_id_tbl cz_pb_mgr.t_ref;
22838       v_usg_id_tbl cz_pb_mgr.t_ref;
22839       v_lang_id_tbl cz_pb_mgr.t_lang_code;
22840       v_object_type cz_model_publications.object_type%TYPE;
22841       l_status VARCHAR2(3);
22842       l_product_key cz_model_publications.product_key%TYPE;
22843       l_applicable_from cz_model_publications.applicable_from%TYPE;
22844       l_applicable_until cz_model_publications.applicable_until%TYPE;
22845       l_source_target_flag cz_model_publications.source_target_flag%TYPE;
22846       l_publication_mode cz_model_publications.publication_mode%TYPE;
22847       v_export_status cz_model_publications.export_status%TYPE;
22848       l_publicationidstring VARCHAR2(2000);
22849       cannot_enable_template EXCEPTION;
22850       get_params_exception EXCEPTION;
22851       pub_overlap EXCEPTION;
22852       cannot_enable_publication EXCEPTION;
22853    BEGIN
22854       x_return_status := FND_API.G_RET_STS_SUCCESS;
22855       fnd_msg_pub.initialize;
22856       --execute the procedure that obsoletes the records
22857       --if the target has been converted into a development
22858       --instance
22859       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
22860 
22861       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
22862       THEN
22863          RAISE pub_maybe_obsoleted;
22864       END IF;
22865 
22866       BEGIN
22867          SELECT export_status
22868            INTO v_export_status
22869            FROM cz_model_publications
22870           WHERE cz_model_publications.publication_id = publicationid;
22871       EXCEPTION
22872          WHEN OTHERS
22873          THEN
22874             v_export_status := NULL;
22875       END;
22876 
22877       IF (v_export_status = model_publication_obselete)
22878       THEN
22879          RAISE cannot_enable_template;
22880       END IF;
22881 
22882       SELECT object_type, server_id, remote_publication_id, product_key, applicable_from, applicable_until, source_target_flag
22883             ,publication_mode, v_export_status
22884         INTO v_object_type, v_server_id, v_remote_publication_id, l_product_key, l_applicable_from, l_applicable_until, l_source_target_flag
22885             ,l_publication_mode, v_export_status
22886         FROM cz_model_publications
22887        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.disabled_flag = '1';
22888 
22889       BEGIN
22890          SELECT fndnam_link_name
22891            INTO v_cz_link_name
22892            FROM cz_servers
22893           WHERE cz_servers.server_local_id = v_server_id;
22894       EXCEPTION
22895          WHEN OTHERS
22896          THEN
22897             v_cz_link_name := NULL;
22898       END;
22899 
22900       IF (v_object_type = template_publication)
22901       THEN
22902          RAISE cannot_enable_template;
22903       END IF;
22904 
22905       IF (v_export_status NOT IN('OK', 'PEN'))
22906       THEN
22907          RAISE cannot_enable_publication;
22908       END IF;
22909 
22910       get_pb_parameters(publicationid, v_app_id_tbl, v_usg_id_tbl, v_lang_id_tbl, l_status);
22911 
22912       IF (l_status = PUBLICATION_ERROR)
22913       THEN
22914          RAISE get_params_exception;
22915       END IF;
22916 
22917       chk_pub_overlap_internal(l_product_key
22918                               ,l_publication_mode
22919                               ,v_app_id_tbl
22920                               ,v_lang_id_tbl
22921                               ,v_usg_id_tbl
22922                               ,v_server_id
22923                               ,l_applicable_from
22924                               ,l_applicable_until
22925                               ,l_source_target_flag
22926                               ,publicationid
22927                               ,l_publicationidstring
22928                               );
22929 
22930       IF (l_publicationidstring <> '-1')
22931       THEN
22932          RAISE pub_overlap;
22933       END IF;
22934 
22935       IF (v_server_id = 0)
22936       THEN
22937          v_cz_link_name := '';
22938       ELSE
22939          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
22940       END IF;
22941 
22942       UPDATE cz_model_publications
22943          SET disabled_flag = '0'
22944        WHERE publication_id = publicationid;
22945 
22946       cz_pb_mgr.remote_publication_id := v_remote_publication_id;
22947 
22948       EXECUTE IMMEDIATE    'BEGIN'
22949                         || ' '
22950                         || 'UPDATE cz_model_publications'
22951                         || v_cz_link_name
22952                         || ' '
22953                         || 'SET   disabled_flag   = ''0'''
22954                         || ' '
22955                         || 'WHERE  publication_id =  cz_pb_mgr.remote_publication_id ;'
22956                         || ' '
22957                         || 'END;';
22958 
22959       COMMIT;
22960    EXCEPTION
22961       WHEN NO_DATA_FOUND
22962       THEN
22963          NULL;
22964       WHEN cannot_enable_publication
22965       THEN
22966          x_return_status := FND_API.G_RET_STS_ERROR;
22967          x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationid);
22968          fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_PUB');
22969          fnd_message.set_token('STATUS', v_export_status);
22970          fnd_message.set_token('PUBID', publicationid);
22971          fnd_msg_pub.ADD;
22972          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22973       WHEN cannot_enable_template
22974       THEN
22975          x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_TEMPL', 'PUBID', publicationid);
22976          x_return_status := FND_API.G_RET_STS_ERROR;
22977          fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_TEMPL');
22978          fnd_message.set_token('PUBID', publicationid);
22979          fnd_msg_pub.ADD;
22980          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22981       WHEN get_params_exception
22982       THEN
22983          ROLLBACK;
22984          x_return_status := FND_API.G_RET_STS_ERROR;
22985          fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
22986          fnd_message.set_token('PUBID', publicationid);
22987          fnd_msg_pub.ADD;
22988          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22989       WHEN pub_overlap
22990       THEN
22991          ROLLBACK;
22992          x_return_status := FND_API.G_RET_STS_ERROR;
22993          fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
22994          fnd_message.set_token('PUBID', publicationid);
22995          fnd_message.set_token('PUBSTR', l_publicationidstring);
22996          fnd_msg_pub.ADD;
22997          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22998       WHEN pub_maybe_obsoleted
22999       THEN
23000          x_return_status := FND_API.G_RET_STS_ERROR;
23001       WHEN OTHERS
23002       THEN
23003          x_return_status := FND_API.G_RET_STS_ERROR;
23004          x_msg_data := SQLERRM;
23005    END enable_publication;
23006 
23007 ---------------------------------
23008 --------function that returns the name of a project that is passed in as
23009 --------a parameter.  IF the name already exists, then the string "Copy of ()"
23010 --------is appended before the original name
23011 --------this function is used in deep_model_copy
23012 --------
23013 FUNCTION copy_name(p_devl_project_id IN	NUMBER)
23014 RETURN VARCHAR2
23015 
23016 AS
23017 
23018 original_name	cz_devl_projects.name%TYPE;
23019 copy_name		cz_devl_projects.name%TYPE;
23020 L 			PLS_INTEGER := 0;
23021 x_error		BOOLEAN := FALSE;
23022 
23023 BEGIN
23024 	BEGIN
23025 		SELECT	name
23026 		INTO		original_name
23027 		FROM		cz_rp_entries
23028 		WHERE		object_id  = p_devl_project_id
23029 		 AND        object_type = 'PRJ'
23030 		 AND		deleted_flag = '0';
23031 	EXCEPTION
23032 	WHEN NO_DATA_FOUND THEN
23033 		original_name := NULL;
23034 	WHEN OTHERS THEN
23035 		original_name := NULL;
23036 	END;
23037 
23038 	IF (original_name IS NOT NULL) THEN
23039 
23040 		BEGIN
23041 
23042 			SELECT	nvl(max(to_number(substr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),7,instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),')',7)-7))),0)
23043 			INTO		L
23044 						FROM		cz_rp_entries
23045 						WHERE	 name LIKE 'Copy (%) of '||original_name
23046 						and  instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),'Copy (',7)=0
23047 		                                and is_val_number(substr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),7,instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),')',7)-7))='TRUE'
23048 						AND     deleted_flag = '0' and object_type='PRJ';
23049 
23050 		--	L	 :=	to_number(substr(copy_name,7,instr(copy_name,')',7)-7));
23051 
23052 		EXCEPTION
23053 		WHEN	NO_DATA_FOUND THEN
23054 			L := 0;
23055 		END;
23056 	END IF;
23057 
23058 	L := L + 1;
23059 	copy_name := 'Copy ('||to_char(L)||') of '||original_name;
23060 	RETURN	copy_name ;
23061 EXCEPTION
23062   WHEN OTHERS THEN
23063     -- x_error:= CZ_UTILS.REPORT(SQLERRM,1,'CZ_UTILS.COPY_NAME',-222);
23064     log_report('cz_utils', 'copy_name', 1, SQLERRM, fnd_log.LEVEL_UNEXPECTED);
23065     copy_name := 'ERROR';
23066     RETURN copy_name ;
23067 END copy_name;
23068 
23069 ----------------------------------------------------------------------------------
23070    PROCEDURE create_publication_request(
23071       p_model_id IN NUMBER
23072      ,p_ui_def_id IN NUMBER
23073      ,p_publication_mode IN VARCHAR2
23074      ,p_server_id IN NUMBER
23075      ,p_appl_id_tbl IN cz_pb_mgr.t_ref
23076      ,p_usg_id_tbl IN cz_pb_mgr.t_ref
23077      ,p_lang_tbl IN cz_pb_mgr.t_lang_code
23078      ,p_start_date IN DATE
23079      ,p_end_date IN DATE
23080      ,x_publication_id OUT NOCOPY NUMBER
23081      ,x_return_status OUT NOCOPY VARCHAR2
23082      ,x_msg_count OUT NOCOPY NUMBER
23083      ,x_msg_data OUT NOCOPY VARCHAR2
23084    )
23085    IS
23086       l_model_id cz_rp_entries.object_id%TYPE;
23087       l_publication_mode cz_model_publications.publication_mode%TYPE;
23088       l_usg_id cz_publication_usages.usage_id%TYPE;
23089       l_lang_code cz_pb_languages.LANGUAGE%TYPE;
23090       l_start_date DATE;
23091       l_end_date DATE;
23092       l_last_struct_update DATE;
23093       l_last_logic_update DATE;
23094       l_last_updated DATE;
23095       l_persistent_project_id cz_devl_projects.persistent_project_id%TYPE;
23096       v_publicationidstring VARCHAR2(2000);
23097       v_upto_date_status VARCHAR2(2000);
23098       l_ui_style cz_ui_defs.ui_style%TYPE;
23099       v_new_publication_id cz_model_publications.publication_id%TYPE;
23100       l_inventory_item_id cz_devl_projects.inventory_item_id%TYPE;
23101       l_organization_id cz_devl_projects.organization_id%TYPE;
23102       l_product_key cz_devl_projects.product_key%TYPE;
23103       l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
23104       l_short_name cz_pb_client_apps.application_short_name%TYPE;
23105       pub_overlap EXCEPTION;
23106       no_model_id EXCEPTION;
23107       no_model_exists EXCEPTION;
23108       no_ui_exists EXCEPTION;
23109       invalid_pb_mode EXCEPTION;
23110       no_appl_id EXCEPTION;
23111       model_not_upto_date EXCEPTION;
23112       no_ui_id EXCEPTION;
23113       product_key_is_null EXCEPTION;
23114       PUB_SOURCE_FLAG CONSTANT VARCHAR2(1)  := 'S';
23115    BEGIN
23116       x_return_status := FND_API.G_RET_STS_SUCCESS;
23117       fnd_msg_pub.initialize;
23118 
23119       -----check if model id passed in is not null
23120       -----if not null then check if the model exists and is
23121       -----a source model
23122       IF (p_model_id IS NULL)
23123       THEN
23124          RAISE no_model_id;
23125       ELSE
23126          BEGIN
23127             SELECT devl_project_id, product_key, inventory_item_id, organization_id, last_struct_update, last_logic_update, last_update_date
23128                   ,persistent_project_id
23129               INTO l_model_id, l_product_key, l_inventory_item_id, l_organization_id, l_last_struct_update, l_last_logic_update, l_last_updated
23130                   ,l_persistent_project_id
23131               FROM cz_devl_projects
23132              WHERE cz_devl_projects.devl_project_id = p_model_id
23133                AND cz_devl_projects.deleted_flag = '0'
23134                AND cz_devl_projects.devl_project_id IN(SELECT object_id
23135                                                          FROM cz_rp_entries
23136                                                         WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0');
23137          EXCEPTION
23138             WHEN NO_DATA_FOUND
23139             THEN
23140                RAISE no_model_exists;
23141          END;
23142       END IF;
23143 
23144       IF (l_product_key IS NULL)
23145       THEN
23146          RAISE product_key_is_null;
23147       END IF;
23148 
23149       -----verify that the ui_def_id passed in is valid
23150       -----If a ui_def is passed in verify that it belongs to the
23151       ----- model that is being published.
23152       IF (p_ui_def_id < 0)
23153       THEN
23154          RAISE no_ui_id;
23155       ELSIF(p_ui_def_id IS NULL)
23156       THEN
23157          l_ui_def_id := NULL;
23158          l_ui_style := NULL;
23159       ELSE
23160          BEGIN
23161             SELECT ui_def_id, ui_style
23162               INTO l_ui_def_id, l_ui_style
23163               FROM cz_ui_defs
23164              WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.devl_project_id = p_model_id AND cz_ui_defs.deleted_flag = '0';
23165          EXCEPTION
23166             WHEN NO_DATA_FOUND
23167             THEN
23168                RAISE no_ui_exists;
23169          END;
23170       END IF;
23171 
23172       ----verify that the publication mode that is passed in
23173       ---- is a valid one.  If NULL is passed then
23174       ----- default the mode to 'P'
23175       l_publication_mode := p_publication_mode;
23176 
23177       IF (l_publication_mode IS NULL)
23178       THEN
23179          l_publication_mode := 'P';
23180       ELSIF(UPPER(l_publication_mode) NOT IN('P', 'T', cz_model_migration_pvt.mode_migration))
23181       THEN
23182          RAISE invalid_pb_mode;
23183       END IF;
23184 
23185       IF (UPPER(l_publication_mode) = cz_model_migration_pvt.mode_migration)
23186       THEN
23187          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
23188          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
23189       ELSE
23190          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
23191          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
23192       END IF;
23193 
23194       ----check that atleast one application id
23195       ----- is passed
23196       IF (p_appl_id_tbl.COUNT = 0)
23197       THEN
23198          RAISE no_appl_id;
23199       END IF;
23200 
23201       ----if no usage is passed the default to
23202       ---- any usage
23203       IF (p_usg_id_tbl.COUNT = 0)
23204       THEN
23205          l_usg_id := -1;
23206       END IF;
23207 
23208       ----- if no language is passed then default to
23209       ------AMERICAN ENGLISH
23210       IF (p_lang_tbl.COUNT = 0)
23211       THEN
23212          l_lang_code := 'US';
23213       END IF;
23214 
23215       -----if no start or end dates
23216       ---- are passed, then default to epoch begin and epoch end respectively
23217       IF (p_start_date IS NULL)
23218       THEN
23219          l_start_date := cz_utils.epoch_begin;
23220       ELSE
23221          l_start_date := p_start_date;
23222       END IF;
23223 
23224       IF (p_end_date IS NULL)
23225       THEN
23226          l_end_date := cz_utils.epoch_end;
23227       ELSE
23228          l_end_date := p_end_date;
23229       END IF;
23230 
23231       ----check model upto date
23232       cz_pb_mgr.model_upto_date(p_model_id, p_ui_def_id, v_upto_date_status);
23233 
23234       IF (v_upto_date_status <> '0')
23235       THEN
23236          RAISE model_not_upto_date;
23237       END IF;
23238 
23239       ----check for publication overlap
23240       chk_pub_overlap_internal(l_product_key
23241                               ,l_publication_mode
23242                               ,p_appl_id_tbl
23243                               ,p_lang_tbl
23244                               ,p_usg_id_tbl
23245                               ,p_server_id
23246                               ,l_start_date
23247                               ,l_end_date
23248                               ,PUB_SOURCE_FLAG
23249                               ,1
23250                               ,v_publicationidstring
23251                               );
23252 
23253       IF (v_publicationidstring <> '-1')
23254       THEN
23255          RAISE pub_overlap;
23256       END IF;
23257 
23258       SELECT cz_model_publications_s.NEXTVAL
23259         INTO v_new_publication_id
23260         FROM DUAL;
23261 
23262       INSERT INTO cz_model_publications
23263                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode
23264                   ,ui_def_id, ui_style, applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update
23265                   ,model_last_logic_update, model_last_updated, model_persistent_id, source_target_flag, remote_publication_id, object_id
23266                   ,object_type, disabled_flag
23267                   )
23268            VALUES (v_new_publication_id, p_model_id, p_server_id, l_organization_id, l_inventory_item_id, l_product_key, l_publication_mode
23269                   ,p_ui_def_id, l_ui_style, l_start_date, l_end_date, 'PEN', '0', l_last_struct_update
23270                   ,l_last_logic_update, l_last_updated, l_persistent_project_id, PUB_SOURCE_FLAG, NULL, p_model_id
23271                   ,'PRJ', '0'
23272                   );
23273 
23274       IF (p_appl_id_tbl.COUNT > 0)
23275       THEN
23276          FOR i IN p_appl_id_tbl.FIRST .. p_appl_id_tbl.LAST
23277          LOOP
23278             l_short_name := ' ';
23279 
23280             SELECT application_short_name
23281               INTO l_short_name
23282               FROM fnd_application
23283              WHERE application_id = p_appl_id_tbl(i);
23284 
23285             INSERT INTO cz_pb_client_apps
23286                         (publication_id, fnd_application_id, application_short_name
23287                         )
23288                  VALUES (v_new_publication_id, p_appl_id_tbl(i), l_short_name
23289                         );
23290          ---- short name must be retrieved from fnd_applications_tl
23291          END LOOP;
23292       END IF;
23293 
23294       IF (p_usg_id_tbl.COUNT > 0)
23295       THEN
23296          FOR i IN p_usg_id_tbl.FIRST .. p_usg_id_tbl.LAST
23297          LOOP
23298             INSERT INTO cz_publication_usages
23299                         (publication_id, usage_id
23300                         )
23301                  VALUES (v_new_publication_id, p_usg_id_tbl(i)
23302                         );
23303          END LOOP;
23304       ELSE
23305          INSERT INTO cz_publication_usages
23306                      (publication_id, usage_id
23307                      )
23308               VALUES (v_new_publication_id, l_usg_id
23309                      );
23310       END IF;
23311 
23312       IF (p_lang_tbl.COUNT > 0)
23313       THEN
23314          FOR i IN p_lang_tbl.FIRST .. p_lang_tbl.LAST
23315          LOOP
23316             INSERT INTO cz_pb_languages
23317                         (publication_id, LANGUAGE
23318                         )
23319                  VALUES (v_new_publication_id, p_lang_tbl(i)
23320                         );
23321          END LOOP;
23322       ELSE
23323          INSERT INTO cz_pb_languages
23324                      (publication_id, LANGUAGE
23325                      )
23326               VALUES (v_new_publication_id, l_lang_code
23327                      );
23328       END IF;
23329 
23330       x_publication_id := v_new_publication_id;
23331    EXCEPTION
23332       WHEN product_key_is_null
23333       THEN
23334          x_return_status := FND_API.G_RET_STS_ERROR;
23335          fnd_message.set_name('CZ', 'CZ_PRODUCT_KEY_IS_NULL');
23336          fnd_msg_pub.ADD;
23337          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23338       WHEN no_model_id
23339       THEN
23340          x_return_status := FND_API.G_RET_STS_ERROR;
23341          fnd_message.set_name('CZ', 'cz_pb_mgr_MODEL_ID_NULL');
23342          fnd_msg_pub.ADD;
23343          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23344       WHEN no_model_exists
23345       THEN
23346          x_return_status := FND_API.G_RET_STS_ERROR;
23347          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_MODEL_EXISTS');
23348          fnd_message.set_token('MODELID', p_model_id);
23349          fnd_msg_pub.ADD;
23350          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23351       WHEN no_ui_exists
23352       THEN
23353          x_return_status := FND_API.G_RET_STS_ERROR;
23354          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_UI_EXISTS');
23355          fnd_message.set_token('MODELID', p_model_id);
23356          fnd_msg_pub.ADD;
23357          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23358       WHEN invalid_pb_mode
23359       THEN
23360          x_return_status := FND_API.G_RET_STS_ERROR;
23361          fnd_message.set_name('CZ', 'cz_pb_mgr_IVALID_PB_MODE');
23362          fnd_message.set_token('PBMODE', l_publication_mode);
23363          fnd_msg_pub.ADD;
23364          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23365       WHEN no_appl_id
23366       THEN
23367          x_return_status := FND_API.G_RET_STS_ERROR;
23368          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_APPL_ID');
23369          fnd_msg_pub.ADD;
23370          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23371       WHEN pub_overlap
23372       THEN
23373          x_return_status := FND_API.G_RET_STS_ERROR;
23374          fnd_message.set_name('CZ', 'PUB_OVERLAP');
23375          fnd_message.set_token('PUB_OVERLAP', v_publicationidstring);
23376          fnd_msg_pub.ADD;
23377          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23378       WHEN model_not_upto_date
23379       THEN
23380          x_return_status := FND_API.G_RET_STS_ERROR;
23381          fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
23382          fnd_message.set_token('UPTODATESTR', v_upto_date_status);
23383          fnd_msg_pub.ADD;
23384          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23385       WHEN OTHERS
23386       THEN
23387          x_return_status := FND_API.G_RET_STS_ERROR;
23388          fnd_message.set_name('CZ', 'CZ_PB_CREATE_PB_REQUEST_ERR');
23389          fnd_message.set_token('ERROR', SQLERRM);
23390          fnd_msg_pub.ADD;
23391          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23392    END create_publication_request;
23393 
23394 ------------------------------------------------------------------------------------------------
23395 --Need to go through get_models_tobe_exported because it makes the decisions on shallow
23396 --migration.
23397    PROCEDURE mm_get_models_tobe_exported(rootmodelid_tbl IN cz_pb_mgr.t_ref)
23398    AS
23399    BEGIN
23400      IF (rootmodelid_tbl.COUNT > 0) THEN
23401       FOR i IN rootmodelid_tbl.FIRST .. rootmodelid_tbl.LAST
23402       LOOP
23403          get_models_tobe_exported(rootmodelid_tbl(i));
23404       END LOOP;
23405       END IF;
23406    END;
23407 
23408 ------------------------------------------------------------------------------------------------
23409    FUNCTION mm_chkifmodelselectedforexport(input_model NUMBER)
23410       RETURN NUMBER
23411    AS
23412       return_value NUMBER := 0;
23413    BEGIN
23414      IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
23415       FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23416       LOOP
23417          IF (cz_pb_mgr.v_models_to_be_exported(i) = input_model)
23418          THEN
23419             return_value := 1;
23420             EXIT;
23421          END IF;
23422       END LOOP;
23423      END IF;
23424 
23425       RETURN return_value;
23426    END mm_chkifmodelselectedforexport;
23427 
23428 ------------------------------------------------------------------------------------------------
23429 --The current design for model migration will run
23430 --the publication process for every model that has been selected
23431 --to be migrated.  The process of collecting the models is in
23432 --CZ_MODEL_MIGRATION_PVT.  Once the models are collected there, for every
23433 --CZ_MODEL_PUBLICATIONS record, publish model is called.  Given that,
23434 --this procedure gets the model for the current migration cz_model_publication
23435 --record.
23436 
23437    FUNCTION get_rootmodel_and_mig_tgt_fldr(p_publication_id NUMBER)
23438       RETURN t_ref
23439    AS
23440       mm_root_model t_ref;
23441    BEGIN
23442 
23443       --we load the global variable
23444       --holding the value of migration target folder
23445       SELECT migration_group_id, migration_tgt_folder
23446         INTO cz_pb_mgr.g_migration_group_id, cz_pb_mgr.g_migration_tgt_folder_id
23447         FROM cz_model_publications
23448        WHERE publication_id = p_publication_id;
23449 
23450       --get the model corresponding to this publication
23451       SELECT object_id
23452       BULK COLLECT INTO mm_root_model
23453         FROM cz_model_publications
23454        WHERE publication_id = p_publication_id;
23455 
23456       RETURN mm_root_model;
23457    END get_rootmodel_and_mig_tgt_fldr;
23458 
23459 ------------------------------------------------------------------------------------------------
23460    PROCEDURE mm_loadoldpsnodesforitems
23461    AS
23462       v_project_count PLS_INTEGER;
23463       rec_count PLS_INTEGER;
23464       l_ps_uits_add_tbl date_tbl_type;      -- cz_ps_nodes.UI_TIMESTAMP_ADD
23465       l_reverse_connector_tbl  t_ref;
23466    BEGIN
23467       clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
23468       cz_pb_mgr.sequence_const := 0;
23469 
23470       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
23471       THEN
23472          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23473          LOOP
23474             BEGIN
23475                clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
23476                l_ps_uits_add_tbl.DELETE;
23477                l_reverse_connector_tbl.DELETE;
23478 
23479                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ps_nodes_seq
23480                                                  , 'cz_ps_nodes_s.NEXTVAL' || cz_pb_mgr.v_db_link
23481                                                  ,cz_pb_mgr.v_oraclesequenceincr
23482                                                  )
23483                      ,ps_node_id, parent_id, reference_id, effectivity_set_id
23484                      ,intl_text_id, violation_text_id, displayname_capt_rule_id, component_id
23485                      ,effective_usage_mask, item_id, ps_node_type
23486                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_origsysref(orig_sys_ref), 'N', orig_sys_ref)
23487                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqpath(component_sequence_path), 'N', component_sequence_path)
23488                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqid(component_sequence_id), 'N', component_sequence_id)
23489                      ,NVL(ui_timestamp_add, creation_date), reverse_connector_id, src_application_id
23490                BULK COLLECT INTO cz_pb_mgr.v_cz_ps_nodes_new_ref
23491                      ,cz_pb_mgr.v_cz_ps_nodes_old_ref, cz_pb_mgr.v_ps_parent_id_ref, cz_pb_mgr.v_ps_ref_id_ref, cz_pb_mgr.v_ps_eff_set_id_ref
23492                      ,cz_pb_mgr.v_ps_intl_old_ref, cz_pb_mgr.v_ps_viol_old_ref, cz_pb_mgr.v_ps_capt_rule_ref, cz_pb_mgr.v_cz_ps_nodes_comp_ref
23493                      ,cz_pb_mgr.v_cz_effective_usage_mask_ref, cz_pb_mgr.v_ps_item_id_ref, cz_pb_mgr.v_ps_type_old_ref
23494                      ,cz_pb_mgr.v_ps_orig_sys_ref
23495                      ,cz_pb_mgr.v_ps_comp_seq_path_ref
23496                      ,cz_pb_mgr.v_ps_comp_seq_id_ref
23497                      ,l_ps_uits_add_tbl, l_reverse_connector_tbl
23498                      ,cz_pb_mgr.v_ps_src_appl_id_old_ref
23499                  FROM cz_ps_nodes
23500                 WHERE cz_ps_nodes.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND deleted_flag = record_not_deleted;
23501             EXCEPTION
23502                WHEN OTHERS
23503                THEN
23504                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
23505                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
23506                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23507                   RAISE;
23508             END;
23509 
23510             v_project_count := cz_pb_mgr.v_devl_project_tbl.COUNT;
23511             rec_count := cz_pb_mgr.v_cz_ps_nodes_new_tbl.COUNT;
23512 
23513             IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0)
23514             THEN
23515                FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
23516                LOOP
23517                   rec_count := rec_count + 1;
23518                   cz_pb_mgr.v_cz_ps_nodes_new_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23519                   cz_pb_mgr.v_cz_ps_nodes_old_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_old_ref(k);
23520                   cz_pb_mgr.v_cz_effective_usage_mask_tbl(rec_count) := cz_pb_mgr.v_cz_effective_usage_mask_ref(k);
23521                   cz_pb_mgr.v_cz_ps_nodes_idx_tbl(cz_pb_mgr.v_cz_ps_nodes_old_ref(k)):=cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23522                   cz_pb_mgr.v_ps_refid_old_tbl(rec_count) := cz_pb_mgr.v_ps_ref_id_ref(k);
23523 
23524                   IF (cz_pb_mgr.v_cz_ps_nodes_old_ref(k) = cz_pb_mgr.v_models_to_be_exported(i))
23525                   THEN
23526                      cz_pb_mgr.v_new_devl_id := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23527                   END IF;
23528 
23529                   ------------resolve parent ids
23530                   IF (cz_pb_mgr.v_ps_parent_id_ref(k) IS NOT NULL)
23531                   THEN
23532 		    IF (cz_pb_mgr.v_cz_ps_nodes_old_ref.COUNT > 0) THEN
23533                      FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_ref.LAST
23534                      LOOP
23535                         IF (cz_pb_mgr.v_ps_parent_id_ref(k) = cz_pb_mgr.v_cz_ps_nodes_old_ref(i))
23536                         THEN
23537                            cz_pb_mgr.v_ps_parent_id_ref(k) := cz_pb_mgr.v_cz_ps_nodes_new_ref(i);
23538                            EXIT;
23539                         END IF;
23540                      END LOOP;
23541 		   END IF;
23542                   END IF;
23543 
23544                   cz_pb_mgr.v_ps_parent_id_tbl(rec_count) := cz_pb_mgr.v_ps_parent_id_ref(k);
23545                   cz_pb_mgr.v_ps_eff_set_id_tbl(rec_count) := cz_pb_mgr.v_ps_eff_set_id_ref(k);
23546                   cz_pb_mgr.v_ps_intl_old_tbl(rec_count) := cz_pb_mgr.v_ps_intl_old_ref(k);
23547                   cz_pb_mgr.v_ps_viol_old_tbl(rec_count) := cz_pb_mgr.v_ps_viol_old_ref(k);
23548                   cz_pb_mgr.v_ps_capt_rule_tbl(rec_count) := cz_pb_mgr.v_ps_capt_rule_ref(k);
23549                   cz_pb_mgr.v_cz_ps_nodes_comp_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_comp_ref(k);
23550                   cz_pb_mgr.v_ps_orig_sys_tbl(rec_count) := cz_pb_mgr.v_ps_orig_sys_ref(k);
23551                   cz_pb_mgr.v_ps_comp_seq_path_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_path_ref(k);
23552                   cz_pb_mgr.v_ps_comp_seq_id_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_id_ref(k);
23553                   cz_pb_mgr.v_ps_item_id_tbl(rec_count) := cz_pb_mgr.v_ps_item_id_ref(k);
23554                   cz_pb_mgr.v_ps_type_old_tbl(rec_count) := cz_pb_mgr.v_ps_type_old_ref(k);
23555                   cz_pb_mgr.v_ps_src_appl_id_old_tbl(rec_count) := cz_pb_mgr.v_ps_src_appl_id_old_ref(k);
23556                   cz_pb_mgr.g_ps_uits_add_tbl(rec_count) := l_ps_uits_add_tbl(k);
23557                   cz_pb_mgr.g_ps_reverse_connector_tbl(rec_count) := l_reverse_connector_tbl(k);
23558                END LOOP;
23559             END IF;
23560 
23561             cz_pb_mgr.v_models_to_be_exported_new(i) := cz_pb_mgr.v_new_devl_id;
23562 
23563 	    IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0) THEN
23564             FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
23565             LOOP
23566                v_project_count := v_project_count + 1;
23567                cz_pb_mgr.v_devl_project_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
23568 --               cz_pb_mgr.v_intl_text_model_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
23569 --               cz_pb_mgr.v_intl_text_ui_tbl(v_project_count) := -1;
23570             END LOOP;
23571 	    END IF;
23572 
23573             insert_devl_projects(cz_pb_mgr.v_new_devl_id, cz_pb_mgr.v_models_to_be_exported(i), cz_pb_mgr.v_devl_orig_sys_ref
23574                                 ,cz_pb_mgr.v_status_code);
23575 
23576             ---------- update remote_model id in the source cz_pb_model_exports
23577             UPDATE cz_pb_model_exports t
23578                SET t.remote_model_id = cz_pb_mgr.v_models_to_be_exported_new(i)
23579              WHERE t.publication_id = cz_pb_mgr.v_publication_id
23580                AND t.server_id = cz_pb_mgr.v_server_id
23581                AND t.model_id = cz_pb_mgr.v_models_to_be_exported(i);
23582 
23583             COMMIT;
23584          END LOOP;                            /* end loop of FOR I IN p_models_for_export */
23585       END IF;                                 /* end if of p_models_for_export > 0 */
23586    END mm_loadoldpsnodesforitems;
23587 
23588 ---------------------------------------------------------------------------------------------------------
23589 PROCEDURE get_all_properties
23590    AS
23591       v_property_count PLS_INTEGER := 0;
23592       rec_count PLS_INTEGER := 0;
23593       v_remote_prop_tbl cz_pb_mgr.t_ref;
23594       l_data_type_tbl cz_pb_mgr.t_ref;
23595       l_def_num_value_tbl cz_pb_mgr.t_ref;
23596       l_prop_num_value_tbl cz_pb_mgr.t_ref;
23597       l_old_psnode_id NUMBER;
23598 
23599       l_devl_project_id_tbl cz_pb_mgr.t_ref;
23600       l_devl_project_id     NUMBER;
23601 
23602 -- model migration
23603       l_item_type_id_tbl cz_pb_mgr.t_ref;
23604       l_item_id_tbl cz_pb_mgr.t_ref;
23605       l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
23606       l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
23607    BEGIN
23608       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
23609       THEN
23610          IF (cz_pb_mgr.g_log_timing = publication_timing)
23611          THEN
23612             log_timing_message('start bulk collect from cz_psnode_propval_v');
23613          END IF;
23614 
23615 	 IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
23616          FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
23617          LOOP
23618             clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23619             l_data_type_tbl.DELETE;
23620             l_prop_num_value_tbl.DELETE;
23621             l_def_num_value_tbl.DELETE;
23622 
23623             BEGIN
23624                l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
23625                l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23626 
23627                IF (cz_pb_mgr.v_session_parameter <> model_copy)
23628                THEN
23629 
23630                   -- Bug 5570651: The view cz_psnode_propval_v returns records for
23631                   -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
23632                   -- containing references, properties defined on the root of the referred model
23633                   -- are retrieved more than once: once for the root node, and once for every node
23634                   -- of type 263 referring to it. This causes publishing to create a record in
23635                   -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
23636                   -- getting properties for a reference node, CIO always goes to actual root of the
23637                   -- referred model. In the case of this bug, the multiple records for the same property,
23638                   -- each with a different devl_project_id were causing a problem when publishing
23639                   -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
23640                   -- was populated with wrong devl_project_ids just causing the intl_text to be
23641                   -- written with a wrong model_id. We solve this problem by excluding records with
23642                   -- ps_node_type = 263 in the query below
23643 
23644                   SELECT ps_node_id, property_id, data_type, property_num_value
23645                        , property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id
23646                        , def_num_value
23647                   BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23648                        , cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl
23649                        , l_devl_project_id_tbl, l_def_num_value_tbl
23650                     FROM cz_psnode_propval_v t
23651                    WHERE t.ps_node_id = l_old_psnode_id
23652                      AND t.ps_node_type <> PS_NODE_REF_TYPE;
23653                -----ORDER BY ps_node_id;
23654                ELSE
23655                   SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
23656                        , a.data_value, l_devl_project_id
23657                   BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23658                        , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
23659                     FROM cz_ps_prop_vals a, cz_properties b
23660                    WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id AND a.deleted_flag = '0';
23661                -----ORDER BY a.ps_node_id;
23662                END IF;
23663             EXCEPTION
23664                WHEN NO_DATA_FOUND
23665                THEN
23666                   cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
23667                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23668                WHEN OTHERS
23669                THEN
23670                   cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
23671                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23672                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23673                   RAISE;
23674             END;
23675 
23676             IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
23677             THEN
23678                v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23679 
23680                FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23681                LOOP
23682                   v_property_count := v_property_count + 1;
23683 
23684                   cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23685                   cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23686                   cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23687                   cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23688                   cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23689 
23690 		  -- BUG11685105
23691                   cz_pb_mgr.v_psnode_propval_tbl(v_property_count).ps_node_id := cz_pb_mgr.v_prop_vals_node_tbl(j);
23692                   cz_pb_mgr.v_psnode_propval_tbl(v_property_count).data_type := l_data_type_tbl(j);
23693                   cz_pb_mgr.v_psnode_propval_tbl(v_property_count).property_num_value := l_prop_num_value_tbl(j);
23694                   cz_pb_mgr.v_psnode_propval_tbl(v_property_count).property_value := cz_pb_mgr.v_prop_vals_data_tbl(j);
23695 
23696                   IF(l_data_type_tbl(j) = 8)THEN
23697 
23698                       --Bug #5441580. This is the case of translatable properties, data_num_value contains
23699                       --intl_text_id of the property value. Hash the node's devl_project_id for later use
23700                       --inserting into cz_localized_texts.
23701 
23702                       cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23703                       -- BUG11685105
23704                       cz_pb_mgr.v_psnode_propval_tbl(v_property_count).devl_project_id  := l_devl_project_id_tbl(j);
23705                   END IF;
23706 
23707                   --model migration, maintain other columns
23708                   IF (cz_pb_mgr.v_session_parameter <> model_copy)
23709                   THEN
23710                      cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23711                      cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23712                      cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23713                      cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23714 
23715                      --There is no need to make this array public and define it in the spec as it is not used in
23716                      --any dynamic sql blocks.
23717 
23718                      v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23719 		     -- BUG11685105
23720                      cz_pb_mgr.v_psnode_propval_tbl(v_property_count).def_num_value := l_def_num_value_tbl(j);
23721                   END IF;
23722                END LOOP;
23723             END IF;                                                                           /* end if of cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0 */
23724          END LOOP;                                                                          /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
23725 	END IF;
23726       END IF;                                                                                          /* cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
23727    END get_all_properties;
23728 -----------------------------------------------------------------------------------------------
23729 --9812709 SriniK
23730 
23731    PROCEDURE remote_bulk_get_all_properties
23732    AS
23733       v_property_count PLS_INTEGER := 0;
23734       rec_count PLS_INTEGER := 0;
23735       v_remote_prop_tbl cz_pb_mgr.t_ref;
23736       l_data_type_tbl cz_pb_mgr.t_ref;
23737       l_def_num_value_tbl cz_pb_mgr.t_ref;
23738       l_prop_num_value_tbl cz_pb_mgr.t_ref;
23739       l_old_psnode_id NUMBER;
23740 
23741       l_devl_project_id_tbl cz_pb_mgr.t_ref;
23742       l_devl_project_id     NUMBER;
23743 
23744 -- model migration
23745       l_item_type_id_tbl cz_pb_mgr.t_ref;
23746       l_item_id_tbl cz_pb_mgr.t_ref;
23747       l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
23748       l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
23749 
23750       CURSOR prop_cur (cp_model_to_be_exported NUMBER) IS
23751       SELECT ps_node_id, property_id, data_type, property_num_value,
23752       property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id,
23753       def_num_value  FROM cz_psnode_propval_v t
23754       WHERE t.devl_project_id = cp_model_to_be_exported
23755       AND t.ps_node_type <> PS_NODE_REF_TYPE;
23756 
23757       TYPE b_cur IS TABLE OF prop_cur%ROWTYPE
23758       INDEX BY PLS_INTEGER;
23759       l_prop_cur b_cur;
23760 
23761    BEGIN
23762        IF (cz_pb_mgr.g_log_timing = publication_timing)THEN
23763             log_timing_message('start remote bulk collect');
23764        END IF;
23765 
23766       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
23767 
23768        IF (cz_pb_mgr.v_session_parameter <> model_copy) THEN
23769 
23770                 -- Bug 5570651: The view cz_psnode_propval_v returns records for
23771                   -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
23772                   -- containing references, properties defined on the root of the referred model
23773                   -- are retrieved more than once: once for the root node, and once for every node
23774                   -- of type 263 referring to it. This causes publishing to create a record in
23775                   -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
23776                   -- getting properties for a reference node, CIO always goes to actual root of the
23777                   -- referred model. In the case of this bug, the multiple records for the same property,
23778                   -- each with a different devl_project_id were causing a problem when publishing
23779                   -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
23780                   -- was populated with wrong devl_project_ids just causing the intl_text to be
23781                   -- written with a wrong model_id. We solve this problem by excluding records with
23782                   -- ps_node_type = 263 in the query below
23783 
23784          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
23785             log_timing_message('Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert');
23786          END IF;
23787 
23788          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23789 
23790          LOOP
23791             clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23792             l_data_type_tbl.DELETE;
23793             l_prop_num_value_tbl.DELETE;
23794             l_def_num_value_tbl.DELETE;
23795            -- t_rowid.DELETE;
23796 
23797             BEGIN
23798                l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23799 
23800                   OPEN  prop_cur(v_models_to_be_exported(i));
23801                   log_timing_message('one - Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert'||v_models_to_be_exported(i));
23802 
23803                 LOOP
23804                   FETCH prop_cur
23805                   BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl,
23806                         cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl,
23807                         l_devl_project_id_tbl, l_def_num_value_tbl LIMIT remote_bulk_size;
23808 
23809                         log_timing_message('two - Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert'||l_prop_cur.COUNT);
23810 
23811                   EXIT WHEN l_prop_cur.COUNT = 0;
23812                  END LOOP;
23813                 CLOSE prop_cur;
23814 
23815             EXCEPTION
23816                WHEN NO_DATA_FOUND
23817                THEN
23818                   cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
23819                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23820                WHEN OTHERS
23821                THEN
23822                   cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
23823                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23824                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23825                   RAISE;
23826              END;
23827                IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
23828             THEN
23829                v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23830 
23831                FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23832                LOOP
23833                   v_property_count := v_property_count + 1;
23834 
23835                   cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23836                   cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23837                   cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23838                   cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23839                   cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23840 
23841                   IF(l_data_type_tbl(j) = 8)THEN
23842 
23843                       --Bug #5441580. This is the case of translatable properties, data_num_value contains
23844                       --intl_text_id of the property value. Hash the node's devl_project_id for later use
23845                       --inserting into cz_localized_texts.
23846 
23847                       cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23848                   END IF;
23849 
23850                   --model migration, maintain other columns
23851                   IF (cz_pb_mgr.v_session_parameter <> model_copy)
23852                   THEN
23853                      cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23854                      cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23855                      cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23856                      cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23857 
23858                      --There is no need to make this array public and define it in the spec as it is not used in
23859                      --any dynamic sql blocks.
23860 
23861                      v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23862 
23863                   END IF;
23864                END LOOP;
23865             END IF;
23866            END LOOP;
23867           ELSE
23868              --IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
23869 
23870              IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
23871                  log_timing_message('Model copystart builk collect from cz_ps_prop_vals and cz_ps_prop_vals for remote builk selectInsert');
23872              END IF;
23873 
23874               FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
23875             LOOP
23876               clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23877               l_data_type_tbl.DELETE;
23878               l_prop_num_value_tbl.DELETE;
23879               l_def_num_value_tbl.DELETE;
23880 
23881              BEGIN
23882                l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
23883                l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23884 
23885                     SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
23886                        , a.data_value, l_devl_project_id
23887                     BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23888                        , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
23889                      FROM cz_ps_prop_vals a, cz_properties b
23890                     WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id
23891                     AND a.deleted_flag = '0';
23892 
23893                EXCEPTION
23894                WHEN NO_DATA_FOUND THEN
23895                   cz_pb_mgr.v_err_message := 'Model copy  No nodes were found in cz_ps_prop_vals and cz_properties';
23896                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23897                WHEN OTHERS THEN
23898                   cz_pb_mgr.v_err_message := 'Model copy Error in bulk collect from cz_ps_prop_vals and cz_properties: ' || SQLERRM;
23899                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23900                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23901                   RAISE;
23902                END;
23903 
23904             IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0) THEN
23905                v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23906 
23907                FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23908                LOOP
23909                   v_property_count := v_property_count + 1;
23910 
23911                   cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23912                   cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23913                   cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23914                   cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23915                   cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23916 
23917                   IF(l_data_type_tbl(j) = 8)THEN
23918 
23919                       --Bug #5441580. This is the case of translatable properties, data_num_value contains
23920                       --intl_text_id of the property value. Hash the node's devl_project_id for later use
23921                       --inserting into cz_localized_texts.
23922 
23923                       cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23924                   END IF;
23925 
23926                   --model migration, maintain other columns
23927                   IF (cz_pb_mgr.v_session_parameter <> model_copy)
23928                   THEN
23929                      cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23930                      cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23931                      cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23932                      cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23933 
23934                      --There is no need to make this array public and define it in the spec as it is not used in
23935                      --any dynamic sql blocks.
23936 
23937                      v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23938 
23939                   END IF;
23940                END LOOP;
23941               END IF;
23942 
23943              END LOOP;
23944            --END IF;
23945           END IF;
23946        END IF;
23947    END remote_bulk_get_all_properties;
23948 
23949    --9812709
23950 ----------------------------------------------------------------------------------------------------------------------
23951    PROCEDURE mm_sync_properties
23952    AS
23953       s_prop_id NUMBER;
23954       t_prop_id NUMBER;
23955       s_item_type_id NUMBER;
23956       t_item_type_id NUMBER;
23957       s_item_id NUMBER;
23958       t_item_id NUMBER;
23959       t_prop_val_num number;
23960       new_def_num_val number;
23961       l_exists_on_target_hash cz_pb_mgr.t_ref;
23962    BEGIN
23963 /*
23964  *  For all the properties collected in v_prop_vals_prop_ref
23965  */
23966       IF(cz_pb_mgr.v_prop_vals_prop_ref.COUNT > 0) THEN
23967          FOR j IN cz_pb_mgr.v_prop_vals_prop_ref.FIRST .. cz_pb_mgr.v_prop_vals_prop_ref.LAST LOOP
23968 
23969                /*
23970                  Get the property_id
23971                  handle properties  check if the property with the same name, src_application_id exists
23972                  Add either the existing prop or the new prop id to table mm_v_tbl_sync_prop(old);
23973                */
23974 
23975                s_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(j);
23976 
23977                --The table l_exists_on_target_hash records the fact that we called mm_get_ifexists_on_target on this s_prop_id
23978                --and therefore don't have to do it again. If the property does not exist on the target, the value stored will
23979                --be null.
23980 
23981                IF(NOT l_exists_on_target_hash.EXISTS(s_prop_id))THEN
23982 
23983                   mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
23984                   l_exists_on_target_hash(s_prop_id) := t_prop_id;
23985 
23986                ELSE
23987                   t_prop_id := l_exists_on_target_hash(s_prop_id);
23988                END IF;
23989 
23990                IF(t_prop_id IS NULL)THEN
23991 
23992                   t_prop_id := mm_get_newid('PROP');
23993                   mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
23994 
23995                   --Because the property does not exist on the target, we will be creating a new property and so we need both
23996                   --numeric value and numeric default value. These two values are special because of their use for translatable
23997                   --properties. All other property attributes are handled in a standard way and don't need any special tables.
23998 
23999                   IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
24000 
24001 --First for the numeric value of the translatable property.
24002 
24003                     t_prop_val_num := mm_get_newid('INTL_TEXT');
24004 
24005 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
24006 --mm_v_tbl_prop_vals_trans_old:contains all old inl text(old def num vals) for which data need to be inserted into cz_localized_texts
24007 
24008                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
24009                     mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24010 
24011                     mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := cz_pb_mgr.h_devl_prj_by_intl_text(cz_pb_mgr.v_prop_vals_data_num_ref(j));
24012 
24013 --Same for the default value of the translatable property.
24014 
24015                     new_def_num_val := mm_get_newid('INTL_TEXT');
24016 
24017                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
24018                     mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := v_prop_vals_def_num_value_ref(j);
24019 
24020                     mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
24021                   ELSE
24022 
24023                     t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j); /*Other properties dont need new intl_text_id*/
24024                     new_def_num_val := v_prop_vals_def_num_value_ref(j);
24025                   END IF;
24026 
24027 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
24028 
24029                   --Making mm_v_tbl_sync_prop_vals_num a hash table. Now it cannot be used directly in the only place where
24030                   --it is currently used - insert_item_schema. Will need to construct an array with the values from this
24031                   --hash table.
24032 
24033                   mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24034                   mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
24035 
24036                   --The following two arrays are not used.
24037 
24038                   --mm_v_tbl_sync_prop_type(s_prop_id) := 'PRP';
24039                   --mm_v_tbl_sync_prop_folder(s_prop_id) := cz_pb_mgr.g_migration_tgt_folder_id;
24040 
24041                ELSE /*get the def num values of properties on target*/
24042 
24043                  --The property exists on the target, so t_prop_id is not null. We should not assign a value here to
24044                  --mm_v_tbl_sync_prop(s_prop_id) because later this table will be used to resolve id(s) and build an
24045                  --array of all properties that need to be migrated to the target - in a call to
24046                  --mm_resolve_ids_w_rp_entries in insert_item_schema procedure. So, here the mm_v_tbl_sync_prop is
24047                  --supposed to have defined keys only for the properties that need to be created on the target.
24048 
24049                  --mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
24050 
24051                  --We need to find the value of the property t_prop_id for ps_node_id = cz_pb_mgr.v_prop_vals_node_ref(j).
24052                  --The ps_node_id value has been already resolved to the new id in upload_item_schema after get_all_properties.
24053                  --So we need to query for this value, or, if there's no such value, than the ps_node_id will be created and
24054                  --should inherit the property value.
24055 
24056                  --We do not need the default value, because here we prepare data to be inserted into cz_ps_prop_vals, and
24057                  --this table does not store default values. What we need is a value in mm_v_ht_sync_all_prop_val_num(j) for
24058                  --every pair of t_prop_id, v_prop_vals_node_ref(j).
24059 
24060                      IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
24061 
24062                        t_prop_val_num := mm_get_newid('INTL_TEXT');
24063 
24064                        mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
24065                        mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24066 
24067                        mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := cz_pb_mgr.h_devl_prj_by_intl_text(cz_pb_mgr.v_prop_vals_data_num_ref(j));
24068 
24069                      ELSE
24070 
24071                        t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24072                      END IF;
24073 
24074                      mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
24075                END IF;
24076 
24077             s_item_id := v_prop_vals_item_id_ref(j);
24078 
24079             --If s_item_id is not null, than the value is defined on the item, not on the ps node.
24080             --If the value exists on the source in cz_item_property_values, than the value is defined
24081             --on the item directly, not through item type.
24082 
24083             IF((s_item_id IS NOT NULL) AND (mm_get_ifexists_on_source(s_prop_id, 'ITPROPVAL') = '1'))THEN
24084 
24085                mm_v_ht_sync_it_propval(s_prop_id) := t_prop_id;
24086 
24087                IF(NOT mm_v_ht_sync_items.EXISTS(s_item_id))THEN
24088 
24089                  mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
24090 
24091                  IF(t_item_id IS NULL)THEN
24092 
24093                      t_item_id := mm_get_newid('ITEM');
24094                      mm_v_ht_sync_items(s_item_id) := t_item_id;
24095                  ELSE
24096 
24097                      mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
24098                  END IF;
24099                ELSE
24100 
24101                  t_item_id := mm_v_ht_sync_items(s_item_id);
24102                END IF;
24103 
24104                mm_v_ht_sync_it_propval_itm(s_item_id) := t_item_id;
24105             END IF;
24106 
24107             --This block selects from all the properties only those that come from cz_ps_prop_vals, as
24108             --mm_v_ht_sync_ps_propval is used in mm_migrate_into_ps_prop_vals as one of the criteria
24109             --whether to insert the value into cz_ps_prop_vals.
24110 
24111             IF(mm_get_ifexists_on_source(s_prop_id, 'PSPROPVAL') = '1')THEN
24112 
24113                mm_v_ht_sync_ps_propval(s_prop_id) := t_prop_id;
24114 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
24115                mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
24116             END IF;
24117          END LOOP;
24118       END IF;
24119 
24120 --Now we deal with properties associated with Item Types.
24121 
24122 --This is the same algorithm as above, but the sources of property_id and property_num_value are different arrays and
24123 --a different query must be used (against cz_item_property_values) when the property and the item exist on the target.
24124 --For item_id, the second part of the above block must be useful.
24125 
24126       IF(cz_pb_mgr.v_item_prop_type_tbl.COUNT > 0)THEN
24127 
24128 --This array contains all property_id(s) of properties that are involved in the migration because of their association
24129 --with item types. If a property is defined directly on a node, it has already been processes and stored in the hash
24130 --table mm_v_tbl_sync_prop, so it won't be processed here.
24131 
24132          FOR j IN cz_pb_mgr.v_item_prop_type_tbl.FIRST .. cz_pb_mgr.v_item_prop_type_tbl.LAST LOOP
24133 
24134             s_prop_id := cz_pb_mgr.v_item_prop_id_tbl(j);
24135 
24136             IF(NOT mm_v_tbl_sync_prop.EXISTS(s_prop_id))THEN
24137 
24138                mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
24139 
24140                IF(t_prop_id IS NULL)THEN
24141 
24142                   t_prop_id := mm_get_newid('PROP');
24143                   mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
24144 
24145                   --Because the property does not exist on the target, we will be creating a new property and so we need the
24146                   --default numeric value. Note that we should not populate array mm_v_ht_sync_all_prop_val_num in this block
24147                   --because it is used for insert into cz_ps_prop_vals. We do need to populate the table
24148                   --mm_v_tbl_sync_prop_vals_num with default numeric values of all properties that will be inserted on the
24149                   --target, just like in the previous block.
24150 
24151                   IF(cz_pb_mgr.v_item_prop_data_typ_tbl(j) = 8)THEN /*Tranlatable properties*/
24152 
24153                     new_def_num_val := mm_get_newid('INTL_TEXT');
24154 
24155 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
24156 --mm_v_tbl_prop_vals_trans_old:contains all old inl text(old def num vals) for which data need to be inserted into cz_localized_texts
24157 
24158                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
24159                     mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_item_prop_num_val_tbl(j);
24160 
24161                     --These properties are associated with item types, not ps nodes, therefore we can set 0 for model_id.
24162 
24163                     mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
24164                   ELSE /*Other properties dont need new def num ids*/
24165 
24166                     new_def_num_val := cz_pb_mgr.v_item_prop_num_val_tbl(j);
24167                   END IF;
24168 
24169 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
24170 
24171                   mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24172                ELSE  /*get the def num values of properties on target*/
24173 
24174                  --The property exists on the target, so t_prop_id is not null. Again, these are properties associated with item types,
24175                  --so we need only the default numeric value. This query cannot fail with NO_DATA_FOUND.
24176 
24177                  EXECUTE IMMEDIATE 'SELECT def_num_value FROM cz_properties' || cz_pb_mgr.v_db_link ||
24178                                    ' WHERE property_id = :1 AND deleted_flag = 0'
24179                     INTO new_def_num_val
24180                    USING t_prop_id;
24181 
24182                  mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24183                END IF;
24184             ELSE
24185 
24186               t_prop_id := mm_v_tbl_sync_prop(s_prop_id);
24187             END IF;
24188 
24189             s_item_type_id := v_item_prop_type_tbl(j);
24190 
24191             IF(NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))THEN
24192 
24193                mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
24194 
24195                IF(t_item_type_id IS NULL)THEN
24196 
24197                   t_item_type_id := mm_get_newid('ITEM_TYPE');
24198                   mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
24199                END IF;
24200             ELSE
24201                t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
24202             END IF;
24203 
24204             mm_v_ht_sync_itmtype_for_prop(s_item_type_id) := t_item_type_id;
24205             mm_v_ht_sync_item_type_prop(s_prop_id) := t_prop_id;
24206 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
24207             mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
24208          END LOOP;
24209       END IF;
24210    END mm_sync_properties;
24211 ------------------------------------------------------------------------------------------------
24212    PROCEDURE mm_sync_itemschema
24213    AS
24214       s_prop_id NUMBER;
24215       t_prop_id NUMBER;
24216       s_item_type_id NUMBER;
24217       t_item_type_id NUMBER;
24218       s_item_id NUMBER;
24219       t_item_id NUMBER;
24220 
24221    BEGIN
24222       IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
24223       THEN
24224          FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
24225          LOOP
24226             s_item_id := cz_pb_mgr.v_item_masters_tbl(i);
24227 
24228             IF (NOT mm_v_ht_sync_items.EXISTS(s_item_id))
24229             THEN
24230                 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
24231                 IF (t_item_id IS NULL)
24232                 THEN
24233                   t_item_id := mm_get_newid('ITEM');
24234                   mm_v_ht_sync_items(s_item_id) := t_item_id;
24235                 ELSE
24236                   mm_v_ht_sync_exist_items(s_item_id) := t_item_id;  --Bug9180063
24237                 END IF;
24238             ELSE
24239                 t_item_id := mm_v_ht_sync_items(s_item_id);
24240             END IF;
24241 
24242             s_item_type_id := v_item_types_tbl(i);
24243             IF (NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))
24244             THEN
24245                mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
24246                IF (t_item_type_id IS NULL)
24247                THEN
24248                   t_item_type_id := mm_get_newid('ITEM_TYPE');
24249                   mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
24250                END IF;
24251             ELSE
24252                t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
24253             END IF;
24254 
24255             IF (NOT mm_v_ht_sync_exist_items.EXISTS(s_item_id))
24256             THEN
24257                mm_v_ht_sync_item_type_items(s_item_id) := t_item_type_id;
24258             ELSE
24259                mm_v_ht_sync_exist_item_types(s_item_id) := t_item_type_id;
24260             END IF;
24261 
24262          END LOOP;
24263       END IF;
24264    END mm_sync_itemschema;
24265 
24266    FUNCTION mm_get_ifexists_on_source(source_id IN NUMBER, what_exists VARCHAR2)
24267       RETURN VARCHAR2
24268    AS
24269       record_exists VARCHAR2(1) := '0';
24270    BEGIN
24271       IF (what_exists = 'PSPROPVAL')
24272       THEN
24273          SELECT '1'
24274            INTO record_exists
24275            FROM DUAL
24276           WHERE EXISTS(SELECT property_id
24277                          FROM cz_ps_prop_vals
24278                         WHERE property_id = source_id);
24279       ELSIF(what_exists = 'ITPROPVAL')
24280       THEN
24281          SELECT '1'
24282            INTO record_exists
24283            FROM DUAL
24284           WHERE EXISTS(SELECT property_id
24285                          FROM cz_item_property_values
24286                         WHERE property_id = source_id);
24287       END IF;
24288 
24289       RETURN record_exists;
24290    EXCEPTION
24291       WHEN NO_DATA_FOUND
24292       THEN
24293          RETURN record_exists;
24294    END mm_get_ifexists_on_source;
24295 
24296    PROCEDURE mm_get_ifexists_on_target(source_id IN NUMBER, target_id IN OUT NOCOPY NUMBER, what_exists IN VARCHAR2)
24297    AS
24298       l_sql_str VARCHAR2(2000);
24299       l_sync_msg_object_type_tkn VARCHAR2(50);
24300       l_sync_msg_object_name_tkn VARCHAR2(50);
24301       cz_property_caption VARCHAR2(50) := 'Property';
24302       cz_item_caption VARCHAR2(50) := 'Item';
24303       cz_item_type_caption VARCHAR2(50) := 'Item Type';
24304       cz_archive_caption VARCHAR2(50) := 'Archive';
24305       cz_effset_caption VARCHAR2(50) := 'Effectivity Set';
24306    BEGIN
24307       IF (what_exists = 'PROP')
24308       THEN
24309          l_sql_str :=
24310             'SELECT t.property_id, t.NAME FROM cz_properties' || cz_pb_mgr.v_db_link || ' t' ||  ',' ||
24311                                            'cz_rp_entries' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
24312                                            'cz_properties s' || ' ' ||
24313             'WHERE t1.object_id = t.property_id AND t1.object_type = ''PRP'' ' || ' ' ||
24314              'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
24315              'AND t.NAME = s.NAME AND t1.NAME = s.NAME' || ' ' ||
24316              'AND t.data_type = s.data_type' || ' ' ||
24317              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)'  || ' ' ||
24318              'AND s.property_id = :1';
24319          l_sync_msg_object_type_tkn := cz_property_caption;
24320       ELSIF(what_exists = 'ITEM')
24321       THEN
24322 --- Bug9180063 Joined with cz_item_types to get the uniqueness of item as item
24323 -- with same name can be under two different item types. This is mostly for non-BOM items case.
24324          l_sql_str :=
24325             'SELECT t.item_id, t.ref_part_nbr FROM cz_item_masters' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24326                                                   'cz_item_types' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
24327                                                   'cz_item_masters s' || ',' ||
24328                                                   'cz_item_types s1' || ' ' ||
24329             'WHERE t.ref_part_nbr = s.ref_part_nbr' || ' ' ||
24330              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
24331              'AND NVL(t1.src_application_id,-1) = NVL(s1.src_application_id,-1)' || ' ' ||
24332              'AND t1.name = s1.name' || ' ' ||
24333              'AND s1.item_type_id = s.item_type_id' || ' ' ||
24334              'AND t1.item_type_id = t.item_type_id' || ' ' ||
24335              'AND NVL(t.orig_sys_ref, 0) = :1' || ' ' ||
24336              'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24337              'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
24338              'AND s.item_id = :2';
24339          l_sync_msg_object_type_tkn := cz_item_caption;
24340       ELSIF(what_exists = 'ITEM_TYPE')
24341       THEN
24342          l_sql_str :=
24343             'SELECT t.item_type_id, t.NAME FROM cz_item_types' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24344                                                'cz_item_types s' || ' ' ||
24345             'WHERE t.NAME = s.NAME' || ' ' ||
24346              'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24347              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
24348              'AND s.item_type_id = :1';
24349          l_sync_msg_object_type_tkn := cz_item_type_caption;
24350       ELSIF(what_exists = 'ARCHIVE')
24351       THEN
24352          l_sql_str :=
24353              'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24354                                              'cz_archives s' || ' ' ||
24355               'WHERE t.object_type = ''ARC'' AND t.NAME = s.NAME' || ' ' ||
24356                'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24357                'AND s.archive_id = :1';
24358          l_sync_msg_object_type_tkn := cz_archive_caption;
24359       ELSIF(what_exists = 'EFF_SETS')
24360       THEN
24361          l_sql_str :=
24362              'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || 't' || ',' ||
24363                                              'cz_effectivity_sets s' || ' ' ||
24364               'WHERE t.object_type = ''EFF'' AND t.NAME = s.NAME' || ' ' ||
24365                'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24366                'AND s.effectivity_set_id = :1';
24367          l_sync_msg_object_type_tkn := cz_effset_caption;
24368       END IF;
24369 
24370       IF(what_exists = 'ITEM')THEN
24371 
24372         EXECUTE IMMEDIATE l_sql_str
24373                      INTO target_id, l_sync_msg_object_name_tkn
24374                     USING NVL(mm_v_ht_items_orig_ref(source_id), 0)
24375                         , source_id;
24376 
24377       ELSE
24378 
24379         EXECUTE IMMEDIATE l_sql_str
24380                      INTO target_id, l_sync_msg_object_name_tkn
24381                     USING source_id;
24382       END IF;
24383 
24384       IF (target_id IS NOT NULL)
24385       THEN
24386          cz_pb_mgr.v_err_message :=
24387               cz_utils.get_text('CZ_MM_EXISTING_GLOBAL_DATA', 'GLOBAL_ENTITY', l_sync_msg_object_type_tkn, 'ENTITY_NAME', l_sync_msg_object_name_tkn);
24388          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_get_ifexists_on_target', -1);
24389       END IF;
24390    EXCEPTION
24391       WHEN NO_DATA_FOUND
24392       THEN
24393          target_id := NULL;
24394       WHEN TOO_MANY_ROWS
24395       THEN
24396            --this is an error condition where there are too many rows with the same
24397            --name, which is not likely to happen
24398             target_id := -1;
24399 
24400          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.mm_get_ifexists_on_target', SQLCODE);
24401    END mm_get_ifexists_on_target;
24402 
24403 ------------------------------------------------------------------------------------------------
24404    FUNCTION mm_get_newid(what_id IN VARCHAR2)
24405       RETURN NUMBER
24406    AS
24407       returnid NUMBER;
24408       l_sql_str VARCHAR2(2000);
24409       l_seq VARCHAR2(32);
24410 
24411    BEGIN
24412       IF (what_id = 'PROP')
24413       THEN
24414          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_PROPERTIES_SEQ
24415                                              , 'CZ_PROPERTIES_S.nextval' || cz_pb_mgr.v_db_link
24416                                              ,cz_pb_mgr.v_oraclesequenceincr
24417                                              );
24418 
24419       ELSIF(what_id = 'ITEM')
24420       THEN
24421          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_MASTERS_SEQ
24422                                              , 'CZ_ITEM_MASTERS_S.nextval' || cz_pb_mgr.v_db_link
24423                                              ,cz_pb_mgr.v_oraclesequenceincr
24424                                              );
24425       ELSIF(what_id = 'ITEM_TYPE')
24426       THEN
24427          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_TYPES_SEQ
24428                                              , 'CZ_ITEM_TYPES_S.nextval' || cz_pb_mgr.v_db_link
24429                                              ,cz_pb_mgr.v_oraclesequenceincr
24430                                              );
24431 
24432       ELSIF(what_id = 'ARCHIVE')
24433       THEN
24434          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ARCHIVES_SEQ
24435                                              , 'CZ_ARCHIVES_S.nextval' || cz_pb_mgr.v_db_link
24436                                              ,cz_pb_mgr.v_oraclesequenceincr
24437                                              );
24438       ELSIF(what_id = 'INTL_TEXT')
24439       THEN
24440          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
24441                                              , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
24442                                              ,cz_pb_mgr.v_oraclesequenceincr
24443                                              );
24444 
24445       END IF;
24446 
24447    END mm_get_newid;
24448 
24449 ------------------------------------------------------------------------------------------------
24450 -----procedure inserts data into cz_ps_prop_vals
24451    PROCEDURE mm_migrate_into_ps_prop_vals
24452    AS
24453       v_migrate_error NUMBER := 0;
24454       l_sql_str VARCHAR2(32000);
24455    BEGIN
24456       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
24457       THEN
24458          l_sql_str :=
24459                'BEGIN'
24460             || ' '
24461             || 'cz_pb_mgr.v_expr_count := 0;'
24462             || ' '
24463             || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
24464             || ' '
24465             || 'LOOP'
24466             || ' '
24467             ||
24468                ---only if a ps_prop_val needs to be inserted
24469                'IF ( '
24470             || 'cz_pb_mgr.mm_v_ht_sync_ps_propval.EXISTS(cz_pb_mgr.v_prop_vals_prop_ref(i))'
24471             || ' '
24472             || 'AND ( '
24473             || ' '
24474             || 'cz_pb_mgr.v_prop_vals_inherited_flag_ref(i) <> ''1'' '
24475             || ' '
24476             || 'OR'
24477             || ' '
24478             || 'cz_pb_mgr.v_prop_vals_valuesource_ref(i) = '
24479             || ''''
24480             || cz_pb_mgr.prop_valuesource_psvalue
24481             || ''''
24482             || ' '
24483             || ')'
24484             || ' '
24485             || ') THEN'
24486             || ' '
24487             ||
24488                -- we always recreate ps nodes, so there is no issue there
24489                'cz_pb_mgr.v_propval_node_id    := cz_pb_mgr.v_prop_vals_node_ref(i);'
24490             || ' '
24491             ||
24492                -- the key thing here is to ensure that the target property id gets in, they have already been synchronized earlier
24493                -- in mm_sync_properties
24494                'cz_pb_mgr.v_propval_prop_id    := cz_pb_mgr.mm_v_ht_sync_ps_propval(cz_pb_mgr.v_prop_vals_prop_ref(i));'
24495             || ' '
24496             || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
24497             || ' '
24498             || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.mm_v_ht_sync_all_prop_val_num(i);'
24499             || ' '
24500             || 'INSERT INTO cz_ps_prop_vals'
24501             || cz_pb_mgr.v_db_link
24502             || '('
24503             || ' '
24504             || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
24505             || ' '
24506             || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
24507             || ' '
24508             || ' ''0'',cz_pb_mgr.v_propval_data_num_value);'
24509             || ' '
24510             || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
24511             || ' '
24512             || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
24513             || ' '
24514             || 'END IF;'
24515             || ' '
24516             || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
24517             || ' '
24518             || 'END IF;'
24519             || ' '
24520             || 'END LOOP;'
24521             || ' '
24522             || 'END;';
24523 
24524          EXECUTE IMMEDIATE l_sql_str;
24525       END IF;
24526 
24527       COMMIT;
24528    EXCEPTION
24529       WHEN OTHERS
24530       THEN
24531          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
24532          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
24533          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24534          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24535          RAISE;
24536    END mm_migrate_into_ps_prop_vals;
24537 
24538 ------------------------------------------------------------------------------------------------
24539    FUNCTION mm_sync_eff_sets(old_eff_set_id NUMBER, new_eff_set_id NUMBER)
24540       RETURN NUMBER
24541    AS
24542       rec_count PLS_INTEGER := 0;
24543       s_effset_id NUMBER := NULL;
24544       t_effset_id NUMBER := NULL;
24545    BEGIN
24546 
24547       /* don't go to through the link everytime.  if you can get the
24548          effectivity set through memory, use it.  Only go to the link
24549          if it is not collected already */
24550 
24551       IF (NOT mm_v_ht_eff_set_tbl_s.EXISTS(old_eff_set_id)) THEN
24552         mm_get_ifexists_on_target(old_eff_set_id, t_effset_id, 'EFF_SETS');
24553         IF (t_effset_id IS NOT NULL) THEN
24554           mm_v_ht_eff_set_tbl_s(old_eff_set_id) := t_effset_id;
24555         END IF;
24556       ELSE
24557          t_effset_id := mm_v_ht_eff_set_tbl_s(old_eff_set_id);
24558       END IF;
24559 
24560 
24561       --we will maintain an array of old versus new effectivity set id
24562       --when we migrate the rule sequences, if a particular rule in a rule sequence has
24563       --an effectivity set id that already exists on the target, we will disable the
24564       --the rule sequence.
24565       IF (t_effset_id IS NOT NULL)
24566       THEN
24567          mm_v_ht_eff_set_tbl_t(t_effset_id) := t_effset_id;
24568          RETURN t_effset_id;
24569       END IF;
24570 
24571       RETURN NULL;
24572    END mm_sync_eff_sets;
24573 
24574 ------------------------------------------------------------------------------------------------
24575    PROCEDURE mm_sync_archives
24576    AS
24577       rec_count PLS_INTEGER := 0;
24578       s_archive_id NUMBER;
24579       t_archive_id NUMBER;
24580       t_new_archive_id NUMBER;
24581    BEGIN
24582 /*check if an Archive already exists with the same name,
24583 * if it does, add to the table mm_v_ht_archive_tbl(old)
24584 * else, create a new sequence number and add to mm_v_ht_archive_tbl(old)
24585 */
24586       cz_pb_mgr.g_archives_mig_idx_ref.DELETE;
24587       cz_pb_mgr.mm_v_ht_sync_archives.DELETE;
24588       cz_pb_mgr.g_archives_obj_type.DELETE;
24589       cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
24590       cz_pb_mgr.g_archives_old_tbl.DELETE;
24591 
24592     IF (cz_pb_mgr.g_archives_new_ref.COUNT > 0) THEN
24593      FOR i IN cz_pb_mgr.g_archives_new_ref.FIRST .. cz_pb_mgr.g_archives_new_ref.LAST
24594       LOOP
24595          s_archive_id := cz_pb_mgr.g_archives_old_ref(i);
24596          t_new_archive_id := cz_pb_mgr.g_archives_new_ref(i);
24597 
24598          IF (NOT g_archives_mig_idx_ref.EXISTS(s_archive_id)) THEN
24599            mm_get_ifexists_on_target(s_archive_id, t_archive_id, 'ARCHIVE');
24600            IF (t_archive_id IS NULL) THEN
24601               rec_count := rec_count + 1;
24602               cz_pb_mgr.mm_v_ht_sync_archives(rec_count) := t_new_archive_id;
24603               cz_pb_mgr.g_archives_obj_type(rec_count) := 'ARC';
24604               cz_pb_mgr.g_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
24605               cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_new_archive_id;
24606               cz_pb_mgr.g_archives_old_tbl(rec_count) := s_archive_id;
24607            ELSE
24608               cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_archive_id;
24609            END IF;
24610         END IF;
24611       END LOOP;
24612      END IF;
24613    END mm_sync_archives;
24614 
24615 ------------------------------------------------------------------------------------------------
24616 
24617 ------------------------------------------------------------------------------------------------
24618    PROCEDURE mm_insert_archives_for_pb
24619    IS
24620       rec_count PLS_INTEGER := 0;
24621       plsql_table_list cz_pb_mgr.col_plsql_table_list;
24622    BEGIN
24623       plsql_table_list.DELETE;
24624       rec_count := 1;
24625       plsql_table_list(rec_count).col_name := 'archive_id';
24626       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_new_ref';
24627 
24628       IF (cz_pb_mgr.g_log_timing = publication_timing)
24629       THEN
24630          log_timing_message('start insert_into_table cz_archives');
24631       END IF;
24632 
24633       insert_into_table('cz_archives'
24634                        ,'archive_id'
24635                        ,cz_pb_mgr.v_db_link
24636                        ,plsql_table_list
24637                        ,'cz_pb_mgr.g_archives_old_ref'
24638                        ,cz_pb_mgr.g_archives_old_ref
24639                        );
24640       resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
24641       plsql_table_list.DELETE;
24642       rec_count := 1;
24643       plsql_table_list(rec_count).col_name := 'archive_id';
24644       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
24645       rec_count := rec_count + 1;
24646       plsql_table_list(rec_count).col_name := 'devl_project_id';
24647       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
24648       insert_into_table('cz_archive_refs'
24649                        ,'archive_id'
24650                        ,'devl_project_id'
24651                        ,cz_pb_mgr.v_db_link
24652                        ,plsql_table_list
24653                        ,'cz_pb_mgr.g_archive_id_old_ref'
24654                        ,'cz_pb_mgr.g_devl_proj_old_ref'
24655                        ,cz_pb_mgr.g_archive_id_old_ref
24656                        ,cz_pb_mgr.g_devl_proj_old_ref
24657                        );
24658    END mm_insert_archives_for_pb;
24659 
24660 ------------------------------------------------------------------------------------------------
24661    PROCEDURE mm_insert_archives
24662    IS
24663       rec_count PLS_INTEGER := 0;
24664       plsql_table_list cz_pb_mgr.col_plsql_table_list;
24665       mm_source_table_list cz_pb_mgr.col_plsql_table_list;
24666       mm_rec_count NUMBER := 0;
24667    BEGIN
24668       IF (cz_pb_mgr.mm_v_ht_sync_archives.COUNT > 0)
24669       THEN
24670          plsql_table_list.DELETE;
24671          rec_count := 1;
24672          plsql_table_list(rec_count).col_name := 'archive_id';
24673          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
24674 
24675          IF (cz_pb_mgr.g_log_timing = publication_timing)
24676          THEN
24677             log_timing_message('start insert_into_table cz_archives');
24678          END IF;
24679 
24680          insert_into_table('cz_archives'
24681                           ,'archive_id'
24682                           ,cz_pb_mgr.v_db_link
24683                           ,plsql_table_list
24684                           ,'cz_pb_mgr.g_archives_old_tbl'
24685                           ,cz_pb_mgr.g_archives_old_tbl
24686                           );
24687          ----------begin insert into cz_rp_entries----------------
24688          plsql_table_list.DELETE;
24689          rec_count := 1;
24690          plsql_table_list(rec_count).col_name := 'object_id';
24691          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
24692          rec_count := rec_count + 1;
24693          plsql_table_list(rec_count).col_name := 'object_type';
24694          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_obj_type';
24695          rec_count := rec_count + 1;
24696          plsql_table_list(rec_count).col_name := 'enclosing_folder';
24697          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
24698          insert_into_rp_entries('cz_rp_entries'
24699                                ,'object_id'
24700                                ,'object_type'
24701                                ,cz_pb_mgr.v_db_link
24702                                ,plsql_table_list
24703                                ,'cz_pb_mgr.g_archives_old_tbl'
24704                                ,'cz_pb_mgr.g_archives_obj_type'
24705                                ,cz_pb_mgr.g_archives_old_tbl
24706                                ,cz_pb_mgr.g_archives_obj_type
24707                                );
24708       ----------end insert into cz_rp_entries----------------
24709       END IF;
24710 
24711       resolve_ids(cz_pb_mgr.g_archive_id_old_ref,cz_pb_mgr.g_archive_id_ref, cz_pb_mgr.g_archives_mig_idx_ref, 'rsolve archive ids for ref');
24712       -- Need to use the right array to resolve the devl project ids.
24713       resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
24714       plsql_table_list.DELETE;
24715       rec_count := 1;
24716       plsql_table_list(rec_count).col_name := 'archive_id';
24717       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
24718       rec_count := rec_count + 1;
24719       plsql_table_list(rec_count).col_name := 'devl_project_id';
24720       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
24721       insert_into_table('cz_archive_refs'
24722                        ,'archive_id'
24723                        ,'devl_project_id'
24724                        ,cz_pb_mgr.v_db_link
24725                        ,plsql_table_list
24726                        ,'cz_pb_mgr.g_archive_id_old_ref'
24727                        ,'cz_pb_mgr.g_devl_proj_old_ref'
24728                        ,cz_pb_mgr.g_archive_id_old_ref
24729                        ,cz_pb_mgr.g_devl_proj_old_ref
24730                        );
24731    END mm_insert_archives;
24732 
24733 ------------------------------------------------------------------------------------------------
24734 ------------------------------------------------------------------------------------------------
24735 --procedure to debug long strings
24736 --does nothing outside of break the long str into
24737 --smaller strings so it is visible in the debugger
24738    PROCEDURE mm_break_long_str(v_inp_str IN VARCHAR2)
24739    AS
24740       v_temp_str VARCHAR2(255);
24741    BEGIN
24742       v_temp_str := SUBSTR(v_inp_str, 1, 250);
24743       v_temp_str := SUBSTR(v_inp_str, 251, 250);
24744       v_temp_str := SUBSTR(v_inp_str, 501, 250);
24745       v_temp_str := SUBSTR(v_inp_str, 751, 250);
24746       v_temp_str := SUBSTR(v_inp_str, 1001, 250);
24747       v_temp_str := SUBSTR(v_inp_str, 1251, 250);
24748       v_temp_str := SUBSTR(v_inp_str, 1501, 250);
24749       v_temp_str := SUBSTR(v_inp_str, 1751, 250);
24750       v_temp_str := SUBSTR(v_inp_str, 2001, 250);
24751       v_temp_str := SUBSTR(v_inp_str, 2251, 250);
24752       v_temp_str := SUBSTR(v_inp_str, 2501, 250);
24753       v_temp_str := SUBSTR(v_inp_str, 2751, 250);
24754       v_temp_str := SUBSTR(v_inp_str, 3001, 250);
24755       v_temp_str := SUBSTR(v_inp_str, 3251, 250);
24756       v_temp_str := SUBSTR(v_inp_str, 3501, 250);
24757       v_temp_str := SUBSTR(v_inp_str, 3751, 250);
24758       v_temp_str := SUBSTR(v_inp_str, 4001, 250);
24759    END mm_break_long_str;
24760 ------------------------------------------------------------------------------------------------
24761    PROCEDURE mm_resync_ps_items
24762    AS
24763    BEGIN
24764       FOR i IN 1 .. v_ps_item_id_tbl.COUNT
24765       LOOP
24766          IF (mm_v_ht_sync_items.EXISTS(v_ps_item_id_tbl(i)))
24767          THEN
24768             mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_items(v_ps_item_id_tbl(i));
24769          ELSIF(mm_v_ht_sync_exist_items.EXISTS(v_ps_item_id_tbl(i)))
24770          THEN
24771             mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_exist_items(v_ps_item_id_tbl(i));
24772          ELSE
24773             mm_v_ps_item_id_tbl(i) := v_ps_item_id_tbl(i);
24774          END IF;
24775       END LOOP;
24776    END;
24777 
24778    ------------------------------------------------------------------------------------------------
24779    PROCEDURE mm_resync_ps_item_types
24780    AS
24781    BEGIN
24782       FOR i IN 1 .. v_ps_item_id_tbl.COUNT
24783        LOOP
24784          IF (mm_v_ht_sync_item_type_items.EXISTS(v_ps_item_id_tbl(i)))
24785          THEN
24786             mm_v_ps_item_type_id_tbl(i) := mm_v_ht_sync_item_type_items(v_ps_item_id_tbl(i));
24787          ELSIF(mm_v_ht_sync_exist_item_types.EXISTS(v_ps_item_id_tbl(i)))
24788          THEN
24789             mm_v_ps_item_type_id_tbl(i) := mm_v_ht_sync_exist_item_types(v_ps_item_id_tbl(i));
24790          ELSE
24791             mm_v_ps_item_type_id_tbl(i) := NULL;
24792          END IF;
24793        END LOOP;
24794    END;
24795 ------------------------------------------------------------------------------------------------
24796    PROCEDURE mm_resolve_ids(
24797       array_to_resolve IN cz_pb_mgr.t_ref
24798      ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
24799      ,resolving_id IN VARCHAR2
24800      ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
24801      ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
24802    )
24803    IS
24804       resolved_count NUMBER := 0;
24805    BEGIN
24806       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24807       THEN
24808          IF (array_to_resolve.COUNT > 0)
24809          THEN
24810             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24811             LOOP
24812                BEGIN
24813                   IF (array_to_resolve(j) IS NOT NULL AND TO_CHAR (array_to_resolve(j)) <> '0')  -- Bug9031588
24814                   THEN
24815                      resolved_count := resolved_count + 1;
24816                      resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24817                      source_array(resolved_count) := array_to_resolve(j);
24818                   END IF;
24819                EXCEPTION
24820                   WHEN NO_DATA_FOUND
24821                   THEN
24822                      resolved_count := resolved_count - 1;
24823                END;
24824             END LOOP;
24825          END IF;
24826       END IF;
24827    EXCEPTION
24828       WHEN OTHERS
24829       THEN
24830          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24831          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24832          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24833          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24834    END mm_resolve_ids;
24835 ------------------------------------------------------------------------------------------------
24836    PROCEDURE mm_resolve_orig_refs(
24837       array_to_resolve IN cz_pb_mgr.t_ref
24838      ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type
24839      ,resolving_id IN VARCHAR2
24840      ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24841      ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24842    )
24843    IS
24844       resolved_count NUMBER := 0;
24845    BEGIN
24846       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24847       THEN
24848          IF (array_to_resolve.COUNT > 0)
24849          THEN
24850             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24851             LOOP
24852                BEGIN
24853                   IF (array_to_resolve(j) IS NOT NULL AND TO_CHAR (array_to_resolve(j)) <> '0')    -- Bug9031588
24854                   THEN
24855                      resolved_count := resolved_count + 1;
24856                      resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24857                      source_array(resolved_count) := array_to_resolve(j);
24858                   END IF;
24859                EXCEPTION
24860                   WHEN NO_DATA_FOUND
24861                   THEN
24862                      resolved_count := resolved_count - 1;
24863                END;
24864             END LOOP;
24865          END IF;
24866       END IF;
24867    EXCEPTION
24868       WHEN OTHERS
24869       THEN
24870          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24871          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24872          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24873          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24874    END mm_resolve_orig_refs;
24875 ------------------------------------------------------------------------------------------------
24876    PROCEDURE mm_resolve_orig_refs(
24877       array_to_resolve IN cz_pb_mgr.orig_sys_ref_type
24878      ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type_vc2
24879      ,resolving_id IN VARCHAR2
24880      ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24881      ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24882    )
24883    IS
24884       resolved_count NUMBER := 0;
24885    BEGIN
24886       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24887       THEN
24888          IF (array_to_resolve.COUNT > 0)
24889          THEN
24890             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24891             LOOP
24892                BEGIN
24893                   IF (array_to_resolve(j) IS NOT NULL)
24894                   THEN
24895                      resolved_count := resolved_count + 1;
24896                      resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24897                      source_array(resolved_count) := array_to_resolve(j);
24898                   END IF;
24899                EXCEPTION
24900                   WHEN NO_DATA_FOUND
24901                   THEN
24902                      resolved_count := resolved_count - 1;
24903                END;
24904             END LOOP;
24905          END IF;
24906       END IF;
24907    EXCEPTION
24908       WHEN OTHERS
24909       THEN
24910          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24911          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24912          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24913          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24914    END mm_resolve_orig_refs;
24915 ------------------------------------------------------------------------------------------------
24916    PROCEDURE mm_resolve_ids_w_rp_entries(
24917       array_to_resolve IN cz_pb_mgr.t_ref
24918      ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
24919      ,object_type IN VARCHAR2
24920      ,target_folder IN NUMBER
24921      ,resolving_id IN VARCHAR2
24922      ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
24923      ,object_type_array IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
24924      ,tgt_folder_array IN OUT NOCOPY cz_pb_mgr.t_ref
24925      ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
24926    )
24927    IS
24928       resolved_count NUMBER := 0;
24929       resolved_array_idx cz_pb_mgr.t_ref_idx_vc2;
24930 
24931    BEGIN
24932       resolved_array_idx.DELETE;
24933       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24934       THEN
24935          IF (array_to_resolve.COUNT > 0)
24936          THEN
24937             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24938             LOOP
24939                BEGIN
24940                   IF (array_to_resolve(j) IS NOT NULL)
24941                   THEN
24942                      IF NOT (resolved_array_idx.EXISTS(array_to_resolve(j))) THEN
24943                          resolved_count := resolved_count + 1;
24944                          resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24945                          resolved_array_idx(array_to_resolve(j)) := array_of_new_keys(array_to_resolve(j));
24946                          object_type_array(resolved_count) := object_type;
24947                          tgt_folder_array(resolved_count) := target_folder;
24948                          source_array(resolved_count) := array_to_resolve(j);
24949                      END IF;
24950                   END IF;
24951                EXCEPTION
24952                   WHEN NO_DATA_FOUND
24953                   THEN
24954                      resolved_count := resolved_count - 1;
24955                END;
24956             END LOOP;
24957          END IF;
24958       END IF;
24959    EXCEPTION
24960       WHEN OTHERS
24961       THEN
24962          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24963          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24964          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24965          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24966    END mm_resolve_ids_w_rp_entries;
24967 ------------------------------------------------------------------------------------------------
24968 --if a rule_seq has a rule whose effectivity_set_id already
24969 --exists on the target, then set the rule effectivity to be
24970 --never effective for all the rules in that rule sequence
24971    PROCEDURE mm_resolve_rule_seq_effsetid
24972    AS
24973       b_update_rules BOOLEAN := FALSE;
24974       new_folder_id NUMBER;
24975       l_sql_string VARCHAR2(2000);
24976       remote_effs_cv ref_cursor;
24977       remote_rule_seq_name_cv ref_cursor;
24978       l_effecivity_set_id NUMBER;
24979       l_rule_folder_name cz_rule_folders.NAME%TYPE;
24980       l_rule_name cz_rules.NAME%TYPE;
24981    BEGIN
24982 --all the rule sequences have been accumulated here
24983      IF (mm_v_tbl_rule_seq.COUNT > 0) THEN
24984       FOR rule_seq IN mm_v_tbl_rule_seq.FIRST .. mm_v_tbl_rule_seq.LAST
24985       LOOP
24986          --get the new folder id from the hash table
24987          new_folder_id := v_cz_folders_id_idx_ref(mm_v_tbl_rule_seq(rule_seq));
24988          --get all the effectivity_set_ids for the rules in that rule sequence
24989          l_sql_string :=
24990                'SELECT effectivity_set_id, name'
24991             || ' '
24992             || 'FROM cz_rules'
24993             || cz_pb_mgr.v_db_link
24994             || ' '
24995             || 'WHERE rule_folder_id = :1'
24996             || ' '
24997             || '  AND effectivity_set_id is not null'
24998             || ' '
24999             || '  AND deleted_flag = ''0'' ';
25000          b_update_rules := FALSE;
25001 
25002          OPEN remote_effs_cv FOR l_sql_string USING new_folder_id;
25003 
25004          LOOP
25005             FETCH remote_effs_cv
25006              INTO l_effecivity_set_id, l_rule_name;
25007 
25008             EXIT WHEN remote_effs_cv%NOTFOUND;
25009 
25010             IF (mm_v_ht_eff_set_tbl_t.EXISTS(l_effecivity_set_id))
25011             THEN
25012                b_update_rules := TRUE;
25013                EXIT;
25014             END IF;
25015          END LOOP;
25016 
25017          CLOSE remote_effs_cv;
25018 
25019          --update the rules to be never effective
25020          IF b_update_rules
25021          THEN
25022             --log the event
25023             l_sql_string :=
25024                   'SELECT name'
25025                || ' '
25026                || 'FROM cz_rule_folders'
25027                || cz_pb_mgr.v_db_link
25028                || ' '
25029                || 'WHERE rule_folder_id = :1'
25030                || ' '
25031                || 'AND deleted_flag = ''0'' ';
25032 
25033             OPEN remote_rule_seq_name_cv FOR l_sql_string USING new_folder_id;
25034 
25035             FETCH remote_rule_seq_name_cv
25036              INTO l_rule_folder_name;
25037 
25038             CLOSE remote_rule_seq_name_cv;
25039 
25040             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_EFFSET_CORRUPT_RULSEQ', 'RULE_NAME', l_rule_name, 'RULE_SEQUENCE', l_rule_folder_name);
25041             log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_resolve_rule_seq_effsetid', -1);
25042             l_sql_string :=
25043                   'UPDATE cz_rules'
25044                || cz_pb_mgr.v_db_link
25045                || ' '
25046                || 'SET effective_from =  :1'
25047                || ', '
25048                || '    effective_until = :2'
25049                || ','
25050                || '    effectivity_set_id = NULL'
25051                || ' '
25052                || 'WHERE rule_folder_id ='
25053                || new_folder_id
25054                || ' '
25055                || '  AND deleted_flag = ''0'' ';
25056 
25057             EXECUTE IMMEDIATE l_sql_string
25058                         USING cz_utils.epoch_end, cz_utils.epoch_begin;
25059          END IF;
25060       END LOOP;
25061      END IF;
25062    END mm_resolve_rule_seq_effsetid;
25063 ------------------------------------------------------------------------------------------------
25064 /*
25065 * Bug 5516478
25066 * On migrating a model to a remote server, if there are BOM models involved,
25067 * CZ_XFR_PROJECT_BILLS are also migrated.  However, the column SOURCE_SERVER
25068 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
25069 * migration target.  Currently it was being copied from the source to the
25070 * target.  In order to do this we need to query CZ_SERVERS in the migration
25071 * target to get the SERVER_LOCAL_ID.
25072 */
25073 FUNCTION getRemoteImportServer(x_import_server_on_local IN OUT NOCOPY cz_servers.server_local_id%TYPE) RETURN NUMBER
25074    AS
25075 
25076      l_sql_string        VARCHAR2(2000);
25077      l_remote_server_id  cz_servers.server_local_id%TYPE;
25078      l_hostname          cz_servers.hostname%TYPE;
25079      l_db_listener_port  cz_servers.db_listener_port%TYPE;
25080      l_instance_name     cz_servers.instance_name%TYPE;
25081 
25082 BEGIN
25083 
25084      l_sql_string :=  'SELECT server_local_id, hostname, db_listener_port, instance_name' ||
25085                       '  FROM cz_servers' || cz_pb_mgr.v_db_link ||
25086                       ' WHERE import_enabled = 1';
25087 
25088      BEGIN
25089 
25090        EXECUTE IMMEDIATE l_sql_string INTO l_remote_server_id, l_hostname, l_db_listener_port, l_instance_name;
25091 
25092      EXCEPTION
25093        WHEN OTHERS THEN
25094          --'Unable to resolve the import source server ID for the migration target.'
25095           cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_IMPORT_SERVER ');
25096           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
25097           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
25098           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
25099          RAISE;
25100      END;
25101 
25102      --Now we need to identify a record in the local cz_servers that points to the target's import
25103      --source server. Per migration design, such record should exist.
25104      --We are not trying to detect the case when the target's import server is the migration source
25105      --itself - to do this we need to match the target's server record to the LOCAL record, but we
25106      --don't consistently populate instance parameters for the LOCAL record.
25107 
25108      l_db_listener_port := UPPER(LTRIM(RTRIM(l_db_listener_port)));
25109      l_hostname := UPPER(LTRIM(RTRIM(l_hostname)));
25110      l_instance_name := UPPER(LTRIM(RTRIM(l_instance_name)));
25111 
25112      x_import_server_on_local := NULL;
25113 
25114      IF(l_remote_server_id = 0)THEN
25115 
25116         --If the migration target import source is local, then it is the same as the target server.
25117 
25118         x_import_server_on_local := cz_pb_mgr.v_server_id;
25119      ELSE
25120 
25121        FOR c_server IN (SELECT server_local_id FROM cz_servers
25122                          WHERE UPPER(LTRIM(RTRIM(db_listener_port))) = l_db_listener_port
25123                            AND UPPER(LTRIM(RTRIM(hostname))) = l_hostname
25124                            AND UPPER(LTRIM(RTRIM(instance_name))) = l_instance_name)LOOP
25125 
25126          --The first matched instance will be used.
25127 
25128          x_import_server_on_local := c_server.server_local_id;
25129        END LOOP;
25130      END IF;
25131 
25132      IF(x_import_server_on_local IS NULL)THEN
25133 
25134           --The import source of the migration target instance is not defined as a remote server on the migration source instance.
25135           --Please create a link to hostname '%HOSTNAME', listener port %LISTENER, instance name '%INSTANCE' by running the
25136           --Define Remote Server and Enable Remote Server concurrent programs on the migration source instance.
25137 
25138           cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_TARGET_SERVER', 'HOSTNAME', l_hostname, 'LISTENER', l_db_listener_port, 'INSTANCE', l_instance_name);
25139           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
25140           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
25141           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
25142           RETURN -1;
25143      END IF;
25144 
25145      RETURN l_remote_server_id;
25146 END;
25147 ------------------------------------------------------------------------------------------------
25148 /*
25149 * Bug 5523268
25150 * THis function will check if there are any child models that
25151 * have changed.  At this point, we have considered only
25152 * UI Changes, but there may be a requirement to check
25153 * everything that happens in has_tobe_published.  We
25154 * need to revisit this at a later date.  We call
25155 * this for model migration in get_models_tobe_exported;
25156 */
25157 FUNCTION has_ui_inany_chld_mdl_changed(rootmodelid IN NUMBER) RETURN boolean IS
25158 
25159 v_models_tbl cz_pb_mgr.t_ref;
25160 v_last_update_date cz_ui_defs.last_update_date%TYPE;
25161 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
25162 curr_model_tbl cz_pb_mgr.t_ref;
25163 
25164 BEGIN
25165   get_source_models(rootmodelid,   v_models_tbl);
25166 
25167   /* do this only for child models
25168     * We iterate through the children and check if the UI has changed
25169     * for anything.  For model migration, the root will
25170     * ALWAYS be migrated.
25171     */
25172   FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
25173   LOOP
25174     curr_model_tbl(0) := v_models_tbl(i);
25175 
25176     IF(v_models_tbl(i) <> rootmodelid) THEN
25177 
25178       v_last_xfr_activity := get_mdl_last_xfr_activity(v_models_tbl(i),   cz_pb_mgr.v_server_id);
25179       IF cz_pb_mgr.v_server_id<>0 THEN
25180         get_source_uis(rootmodelid, curr_model_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
25181       END IF;
25182       get_oa_uis(curr_model_tbl,   cz_pb_mgr.v_cz_ui_defs_old_ref,   cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
25183 
25184       IF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
25185         FOR j IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
25186         LOOP
25187           get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(j),   v_last_update_date);
25188 
25189           IF(v_last_xfr_activity IS NULL) THEN
25190             RETURN TRUE;
25191             ELSIF((v_last_xfr_activity IS NOT NULL)
25192              AND(v_last_update_date > v_last_xfr_activity)) THEN
25193               RETURN TRUE;
25194             END IF;
25195 
25196           END LOOP;
25197         END IF;
25198 
25199       END IF;
25200 
25201     END LOOP;
25202 
25203     RETURN FALSE;
25204 
25205   EXCEPTION
25206   WHEN others THEN
25207     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR',   'SQLERRM',   sqlerrm);
25208     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,   'cz_pb_mgr.HAS_TOBE_PUBLISHED',   SQLCODE);
25209     cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message,   1,   2000)));
25210     RAISE;
25211   END has_ui_inany_chld_mdl_changed;
25212 ------------------------------------------------------------------------------------------------
25213 /* Bug 5523268
25214 * this routine will check for the last transfer activity.
25215 * There is already a routine 'get_last_xfr_activity', but
25216 * it does check the transfer activity of the ROOT MODEL and
25217 * NOT the current child model.  So we need to check if the
25218 * CHILD was transfered before during migration.
25219 */
25220   FUNCTION get_mdl_last_xfr_activity(
25221       p_model_id IN cz_model_publications.model_id%TYPE
25222      ,p_server_id IN cz_model_publications.server_id%TYPE
25223 
25224    ) RETURN DATE
25225    AS
25226    x_last_xfr_activity DATE := NULL;
25227    BEGIN
25228 
25229          SELECT last_xfr_activity
25230            INTO x_last_xfr_activity
25231            FROM cz_pb_model_exports
25232           WHERE cz_pb_model_exports.export_id =
25233                    (SELECT MAX(export_id)
25234                       FROM cz_pb_model_exports z
25235                      WHERE z.model_id = p_model_id
25236                        AND z.server_id = p_server_id
25237                        AND z.status = 'OK'
25238                        AND z.publication_id IN(
25239                               SELECT publication_id
25240                                 FROM cz_model_publications
25241                                WHERE export_status IN('OK', 'PUP')
25242                                  AND server_id = p_server_id
25243                                  AND UPPER(publication_mode) = cz_model_migration_pvt.mode_migration));
25244 				 --SPUPPALA bug#7116052 7-AUG-2009
25245          RETURN x_last_xfr_activity;
25246 
25247 
25248  EXCEPTION
25249       WHEN OTHERS
25250       THEN
25251 
25252          RETURN x_last_xfr_activity;
25253  END get_mdl_last_xfr_activity;
25254 ------------------------------------------------------------------------------------------------
25255 BEGIN
25256    get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
25257 END cz_pb_mgr;