DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZ_PB_MGR

Source


1 PACKAGE BODY cz_pb_mgr AS
2 /*  $Header: czpbmgrb.pls 120.229.12010000.6 2008/12/08 08:05:34 salapart 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    ENGINE_TYPE_FCE                  CONSTANT VARCHAR2(1) := 'F';
22 
23    ENTITY_TYPE_UCT         CONSTANT VARCHAR2(3) := 'UCT';
24    ENTITY_TYPE_UMT         CONSTANT VARCHAR2(3) := 'UMT';
25    ENTITY_TYPE_SIGNATURE   CONSTANT VARCHAR2(3) := 'SIG';
26    ENTITY_TYPE_RULE        CONSTANT VARCHAR2(3) := 'RUL';
27    ENTITY_TYPE_PROPERTY    CONSTANT VARCHAR2(3) := 'PRP';
28 
29    -- special fields in id resolution
30    -- cz_des_chart_cells.primary_opt_id, secondary_opt_id, secondary_feature_id
31    -- cz_des_chart_feature.feature_id, cz_rules.rule_folder_id,
32    -- cz_ps_nodes.reference_id, cz_ui_nodes.ui_node_ref_id
33    FLD_PSN_REFERENCE_ID    CONSTANT VARCHAR2(9) := 'PSNREFID';
34    FLD_RULE_COMPONENT_ID   CONSTANT VARCHAR2(9) := 'RULCOMID';
35    FLD_UI_NODE_REF_ID      CONSTANT VARCHAR2(9) := 'UINREFID';
36    FLD_IGNORE_NOW          CONSTANT VARCHAR2(9) := 'IGNOREID';
37 
38    NONSEED_UCT_MIN_ID      CONSTANT INTEGER := 2000;
39    NONSEED_UMT_MIN_ID      CONSTANT INTEGER := 1000;
40    NONSEED_SIGN_MIN_ID     CONSTANT INTEGER := 10000;
41    NONSEED_RULE_MIN_ID     CONSTANT INTEGER := 1000;
42    NONSEED_PROP_MIN_ID     CONSTANT INTEGER := 1000;
43 
44    RULE_TYPE_DISPLAY_CONDITION  CONSTANT INTEGER := 33;
45    RULE_TYPE_ENABLED_CONDITION  CONSTANT INTEGER := 34;
46    RULE_TYPE_CONFIG_EXTENSION   CONSTANT INTEGER := 300;
47    RULE_TYPE_POPULATOR          CONSTANT INTEGER := 502;
48    RULE_TYPE_CAPTION            CONSTANT INTEGER := 700;
49 
50    g_engine_type                    cz_devl_projects.config_engine_type%TYPE;
51 
52    --Bug #5186307 - deferred.
53    --v_item_synched_osr             t_item_origsysref_tbl;
54    --v_itemtype_synched_osr         t_itemtype_origsysref_tbl;
55 
56    v_prop_vals_def_num_value_ref    cz_pb_mgr.t_ref;
57 
58 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59 -------procedure that resolves remote reference nodes - forward declaration
60    PROCEDURE resolve_ref_ids_not_found(
61       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
62      ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
63      ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
64      ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
65      ,p_column_name IN VARCHAR2
66      ,x_status IN OUT NOCOPY VARCHAR2
67    );
68 
69    PROCEDURE rollback_data(p_db_link IN VARCHAR2);
70    PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE);
71 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
72 -----------delete session variables
73    PROCEDURE delete_session_parameters
74    AS
75    BEGIN
76       cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.delete;
77       cz_pb_mgr.g_ui_actns_ui_act_id_old_ref.delete;
78       cz_pb_mgr.v_models_to_be_exported.DELETE;
79       cz_pb_mgr.v_models_not_to_be_exported.DELETE;
80       cz_pb_mgr.v_models_to_be_exported_new.DELETE;
81       v_remote_names_not_exported.DELETE;
82       v_remote_names_exported.DELETE;
83       cz_pb_mgr.v_templates_tobe_exported.DELETE;
84       cz_pb_mgr.v_templates_not_exported.DELETE;
85       cz_pb_mgr.v_global_templs_ref.DELETE;
86       cz_pb_mgr.v_server_id := 0;
87       cz_pb_mgr.v_ui_def_id := 0;
88       cz_pb_mgr.v_export_id := 0;
89       cz_pb_mgr.v_publication_id := 0;
90       cz_pb_mgr.v_root_model_id := 0;
91       cz_pb_mgr.target_root_model_id := 0;
92       cz_pb_mgr.v_root_ui_def_id := 0;
93       cz_pb_mgr.v_status_code := NULL;
94       cz_pb_mgr.loguser := NULL;
95       cz_pb_mgr.v_err_message := NULL;
96       cz_pb_mgr.sequence_no := 0;
97       cz_pb_mgr.v_oraclesequenceincr := 0;
98       cz_pb_mgr.v_db_link := NULL;
99       cz_pb_mgr.v_insert_string := NULL;
100       cz_pb_mgr.v_new_devl_id := 0;
101       cz_pb_mgr.v_msg_tbl.DELETE;
102       cz_pb_mgr.v_pb_run_id := 0;
103       cz_pb_mgr.v_new_object_id := 0;
104       cz_pb_mgr.v_server_local_name := NULL;
105       cz_pb_mgr.copy_rules := 'YES';
106       cz_pb_mgr.copy_uis := 'YES';
107       cz_pb_mgr.copy_root_only := 'YES';
108       v_application_id_tbl.DELETE;
109       v_usage_id_tbl.DELETE;
110       v_language_id_tbl.DELETE;
111       cz_pb_mgr.g_item_type_id := 0;
112       cz_pb_mgr.g_item_id := 0;
113       g_object_type := ' ';
114       g_cz_ui_pages_ui_def_ref.DELETE;
115       g_cz_ui_pages_jrad_doc_ref.DELETE;
116       g_cz_ui_pages_capt_id_ref.DELETE;
117       cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
118       cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
119       g_cz_ui_pages_ui_def_tbl.DELETE;
120       g_cz_ui_pages_jrad_doc_tbl.DELETE;
121       g_cz_ui_pages_capt_id_tbl.DELETE;
122       g_page_sets_ui_old_ref.DELETE;
123       g_page_sets_ui_ref.DELETE;
124       g_page_sets_pg_tbl.DELETE;
125       cz_pb_mgr.v_ui_images_ui_ref.DELETE;
126       cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
127       cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
128       cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
129       g_page_refs_ui_def_old_ref.DELETE;
130       g_page_refs_ui_def_new_ref.DELETE;
131       g_page_refs_cond_id_ref.DELETE;
132       g_page_refs_capt_id_ref.DELETE;
133       g_page_refs_tgt_ui_ref.DELETE;
134       g_page_refs_tgt_expl_tbl.DELETE;
135       g_ui_refs_old_ui_def_ref.DELETE;
136       g_ui_refs_new_ui_def_ref.DELETE;
137       g_ui_refs_ref_ui_def_ref.DELETE;
138       g_ui_refs_expl_id_ref.DELETE;
139       g_ui_ps_maps_old_ui_def_ref.DELETE;
140       g_ui_ps_maps_new_ui_def_ref.DELETE;
141       g_ui_ps_maps_ctrl_tmp_ref.DELETE;
142       cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
143       cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
144       g_ui_templates_old_temp_id_ref.DELETE;
145       g_ui_templates_new_temp_id_ref.DELETE;
146       g_ui_templates_idx_temp_ref.DELETE;
147       g_ui_templates_ui_def_old_ref.DELETE;
148       g_ui_templates_ui_def_new_ref.DELETE;
149       g_ui_templates_jrad_new_ref.DELETE;
150       g_ui_templates_jrad_old_ref.DELETE;
151       g_tmpl_jrad_old_tbl.DELETE;
152       g_tmpl_jrad_new_tbl.DELETE;
153       g_cnt_typ_tmpls_old_uidef_ref.DELETE;
154       g_cnt_typ_tmpls_new_uidef_ref.DELETE;
155       g_cnt_typ_tmpls_tmpid_ref.DELETE;
156       g_cnt_typ_tmpls_tgtuidef_ref.DELETE;
157       g_cnt_typ_tmpls_cont_ref.DELETE;
158       g_ui_actns_ui_act_id_ref.DELETE;
159       g_ui_actns_ui_uidef_ref.DELETE;
160       g_ui_actns_ui_tgtui_ref.DELETE;
161       g_pages_ui_def_old_ref.DELETE;
162       cz_pb_mgr.v_sig_new_ref.DELETE;
163       cz_pb_mgr.v_sig_old_ref.DELETE;
164       cz_pb_mgr.v_sig_idx_ref.DELETE;
165       cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
166       cz_pb_mgr.v_arg_sig_tbl.DELETE;
167       cz_pb_mgr.v_data_sig_tbl.DELETE;
168       cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
169       cz_pb_mgr.v_cz_ui_nodes_idx_ref.DELETE;
170       cz_pb_mgr.l_cnt_typ_tmpls_cont_ref.DELETE;
171       cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.DELETE;
172       cz_pb_mgr.l_ui_images_ui_ref.DELETE;
173       cz_pb_mgr.l_ui_images_enty_tbl.DELETE;
174       cz_pb_mgr.l_ui_images_usg_tbl.DELETE;
175       cz_pb_mgr.h_devl_prj_by_intl_text.DELETE;
176       cz_pb_mgr.v_propval_node_id := NULL;
177       cz_pb_mgr.v_propval_prop_id := NULL;
178       cz_pb_mgr.v_propval_data_value := NULL;
179 
180       cz_pb_mgr.g_ps_reverse_connector_tbl.DELETE;
181       cz_pb_mgr.g_ui_actions_id_idx_ref.DELETE;
182       cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
183       cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
184       cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
185       cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
186       cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
187       cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
188       cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
189       cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
190       cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
191       cz_pb_mgr.g_fcefile_old_id_tbl.DELETE;
192       cz_pb_mgr.g_fcefile_new_id_tbl.DELETE;
193       cz_pb_mgr.g_fcefile_compid_tbl.DELETE;
194       g_migration_group_id := NULL;
195 
196       --Bug #5186307 - deferred.
197       --v_item_synched_osr.DELETE;
198       --v_itemtype_synched_osr.DELETE;
199 
200       --The sequence incrementor cannot be 0, therefore we need to re-read it.
201 
202       get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
203    EXCEPTION
204       WHEN OTHERS
205       THEN
206          NULL;
207    END delete_session_parameters;
208 
209 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
210 -----procedure that clears pl/sql tables for a table
211 -----@p_table_name : name of the table
212 -----@p_table_type : type of array
213 -----@x_status     : publication status parameter
214    PROCEDURE clear_tables(p_table_name IN VARCHAR2, p_table_type IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
215    AS
216    BEGIN
217       IF (p_table_name = 'cz_ps_nodes')
218       THEN
219          IF (p_table_type = 'tbl')
220          THEN
221             cz_pb_mgr.v_cz_ps_nodes_new_tbl.DELETE;
222             cz_pb_mgr.v_cz_ps_nodes_old_tbl.DELETE;
223             cz_pb_mgr.v_cz_ps_nodes_idx_tbl.DELETE;
224             cz_pb_mgr.v_ps_parent_id_tbl.DELETE;
225             cz_pb_mgr.v_ps_refid_old_tbl.DELETE;
226             cz_pb_mgr.v_devl_project_tbl.DELETE;
227             cz_pb_mgr.v_ps_eff_set_id_tbl.DELETE;
228             cz_pb_mgr.v_ps_intl_old_tbl.DELETE;
229             cz_pb_mgr.v_ps_viol_old_tbl.DELETE;
230             cz_pb_mgr.v_ps_orig_sys_tbl.DELETE;
231             cz_pb_mgr.v_ps_comp_seq_path_tbl.DELETE;
232             cz_pb_mgr.v_ps_comp_seq_id_tbl.DELETE;
233             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
234             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
235             cz_pb_mgr.v_ps_capt_rule_tbl.DELETE;
236             cz_pb_mgr.v_cz_ps_nodes_comp_tbl.DELETE;
237             cz_pb_mgr.v_ps_item_id_tbl.DELETE;
238             cz_pb_mgr.v_ps_type_old_tbl.DELETE;
239             cz_pb_mgr.g_ps_uits_add_tbl.DELETE;
240 		cz_pb_mgr.g_usg_name_processed.DELETE;
241          ELSIF(p_table_type = 'ref')
242          THEN
243             cz_pb_mgr.v_cz_ps_nodes_new_ref.DELETE;
244             cz_pb_mgr.v_cz_ps_nodes_old_ref.DELETE;
245             cz_pb_mgr.v_ps_parent_id_ref.DELETE;
246             cz_pb_mgr.v_ps_ref_id_ref.DELETE;
247             cz_pb_mgr.v_ps_eff_set_id_ref.DELETE;
248             cz_pb_mgr.v_ps_intl_old_ref.DELETE;
249             cz_pb_mgr.v_ps_viol_old_ref.DELETE;
250             cz_pb_mgr.v_ps_orig_sys_ref.DELETE;
251             cz_pb_mgr.v_ps_comp_seq_path_ref.DELETE;
252             cz_pb_mgr.v_ps_comp_seq_id_ref.DELETE;
253             cz_pb_mgr.v_ps_capt_rule_ref.DELETE;
254             cz_pb_mgr.v_cz_ps_nodes_comp_ref.DELETE;
255             cz_pb_mgr.v_ps_item_id_ref.DELETE;
256             cz_pb_mgr.v_ps_type_old_ref.DELETE;
257          END IF;
258       ELSIF(p_table_name = 'cz_model_ref_expls')
259       THEN
260          IF (p_table_type = 'tbl')
261          THEN
262             cz_pb_mgr.v_component_id_old_tbl.DELETE;
263             cz_pb_mgr.v_parent_expl_id_tbl.DELETE;
264             cz_pb_mgr.v_child_expl_id_tbl.DELETE;
265             cz_pb_mgr.v_referring_node_id_tbl.DELETE;
266          ELSIF(p_table_type = 'ref')
267          THEN
268             cz_pb_mgr.v_cz_model_ref_expls_idx_ref.DELETE;
269             cz_pb_mgr.v_cz_model_ref_expls_old_ref.DELETE;
270             cz_pb_mgr.v_cz_model_ref_expls_new_ref.DELETE;
271             cz_pb_mgr.v_component_id_old_ref.DELETE;
272             cz_pb_mgr.v_parent_expl_id_ref.DELETE;
273             cz_pb_mgr.v_child_expl_id_ref.DELETE;
274             cz_pb_mgr.v_referring_node_id_ref.DELETE;
275             cz_pb_mgr.v_ref_model_id_ref.DELETE;
276          END IF;
277       ELSIF(p_table_name = 'cz_func_comp_specs')
278       THEN
279          IF (p_table_type = 'tbl')
280          THEN
281             cz_pb_mgr.v_cz_func_comp_old_tbl.DELETE;
282             cz_pb_mgr.v_cz_func_comp_new_tbl.DELETE;
283          ELSIF(p_table_type = 'ref')
284          THEN
285             cz_pb_mgr.v_cz_func_comp_new_ref.DELETE;
286             cz_pb_mgr.v_cz_func_comp_old_ref.DELETE;
287             cz_pb_mgr.v_cz_func_comp_idx_ref.DELETE;
288             cz_pb_mgr.v_cz_func_devl_old_ref.DELETE;
289             cz_pb_mgr.v_cz_func_cid_old_ref.DELETE;
290             cz_pb_mgr.v_cz_func_expl_old_ref.DELETE;
291             cz_pb_mgr.v_cz_func_fld_old_ref.DELETE;
292             cz_pb_mgr.v_cz_func_obj_ref.DELETE;
293          END IF;
294       ELSIF(p_table_name = 'cz_ui_defs')
295       THEN
296          IF (p_table_type = 'tbl')
297          THEN
298             cz_pb_mgr.v_ui_devl_id_tbl.DELETE;
299             cz_pb_mgr.v_ui_comp_id_tbl.DELETE;
300          ELSIF(p_table_type = 'ref')
301          THEN
302             cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
303             cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
304             cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
305             cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
306             cz_pb_mgr.v_ui_devl_id_ref.DELETE;
307             cz_pb_mgr.v_ui_comp_id_ref.DELETE;
308             cz_pb_mgr.v_ui_defs_mcpt_rule_ref.DELETE;
309             cz_pb_mgr.v_ui_defs_pcpt_rule_ref.DELETE;
310             cz_pb_mgr.v_master_template_id_ref.DELETE;
311          END IF;
312       ELSIF(p_table_name = 'cz_ui_nodes')
313       THEN
314          IF (p_table_type = 'ref')
315          THEN
316             cz_pb_mgr.v_cz_ui_nodes_new_ref.DELETE;
317             cz_pb_mgr.v_cz_ui_nodes_old_ref.DELETE;
318             cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref.DELETE;
319             cz_pb_mgr.v_cz_ui_nodes_parent_id_ref.DELETE;
320             cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref.DELETE;
321             cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref.DELETE;
322             cz_pb_mgr.v_cz_ui_nodes_component_id_ref.DELETE;
323             cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref.DELETE;
324             cz_pb_mgr.v_cz_ui_nodes_expl_id_ref.DELETE;
325             cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref.DELETE;
326             cz_pb_mgr.v_cz_ui_nodes_capt_id_ref.DELETE;
327             cz_pb_mgr.v_cz_ui_nodes_tool_id_ref.DELETE;
328             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
329             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
330          END IF;
331       ELSIF(p_table_name = 'cz_ps_prop_vals')
332       THEN
333          IF (p_table_type = 'tbl')
334          THEN
335             cz_pb_mgr.v_prop_vals_node_tbl.DELETE;
336             cz_pb_mgr.v_prop_vals_prop_tbl.DELETE;
337             cz_pb_mgr.v_prop_vals_data_tbl.DELETE;
338             cz_pb_mgr.v_prop_vals_num_tbl.DELETE;
339             cz_pb_mgr.v_prop_vals_origsys_tbl.DELETE;
340             cz_pb_mgr.v_prop_vals_datanum_tbl.DELETE;
344             cz_pb_mgr.v_prop_vals_prop_ref.DELETE;
341          ELSIF(p_table_type = 'ref')
342          THEN
343             cz_pb_mgr.v_prop_vals_node_ref.DELETE;
345             cz_pb_mgr.v_prop_vals_data_ref.DELETE;
346             cz_pb_mgr.v_prop_vals_num_ref.DELETE;
347             cz_pb_mgr.v_prop_vals_origsys_ref.DELETE;
348             cz_pb_mgr.v_prop_vals_datanum_ref.DELETE;
349             cz_pb_mgr.v_prop_vals_data_typ_ref.DELETE;
350             cz_pb_mgr.v_prop_vals_data_num_ref.DELETE;
351             cz_pb_mgr.v_prop_vals_intl_text_ref.DELETE;
352             v_prop_vals_def_num_value_ref.DELETE;
353          END IF;
354       ELSIF(p_table_name = 'cz_item_masters')
355       THEN
356          IF (p_table_type = 'tbl')
357          THEN
358             cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
359             cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
360             cz_pb_mgr.v_item_masters_tbl.DELETE;
361             cz_pb_mgr.v_item_types_tbl.DELETE;
362             cz_pb_mgr.v_item_prop_id_tbl.DELETE;
363             cz_pb_mgr.v_item_prop_type_tbl.DELETE;
364             cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
365             cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
366             cz_pb_mgr.v_it_prop_value_tbl.DELETE;
367          ELSIF(p_table_type = 'ref')
368          THEN
369             cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
370             cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
371             cz_pb_mgr.v_item_masters_ref.DELETE;
372             cz_pb_mgr.v_item_types_ref.DELETE;
373             cz_pb_mgr.v_item_prop_id_ref.DELETE;
374             cz_pb_mgr.v_item_prop_type_ref.DELETE;
375             cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
376             cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
377             cz_pb_mgr.v_it_prop_value_ref.DELETE;
378             cz_pb_mgr.v_remote_prop_ref.DELETE;
379             cz_pb_mgr.v_property_record_ref.DELETE;
380             cz_pb_mgr.v_type_property_record_ref.DELETE;
381             cz_pb_mgr.v_type_record_ref.DELETE;
382          END IF;
383       ELSIF(p_table_name = 'cz_rule_folders')
384       THEN
385          IF (p_table_type = 'ref')
386          THEN
387             cz_pb_mgr.v_cz_folders_id_old_ref.DELETE;
388             cz_pb_mgr.v_cz_folders_id_new_ref.DELETE;
389             cz_pb_mgr.v_cz_folders_id_idx_ref.DELETE;
390             cz_pb_mgr.v_cz_folders_pf_id_ref.DELETE;
391             cz_pb_mgr.v_cz_folders_pj_id_ref.DELETE;
392             cz_pb_mgr.v_cz_folders_eff_ref.DELETE;
393             cz_pb_mgr.v_cz_folders_orig_ref.DELETE;
394             cz_pb_mgr.v_cz_folders_obj_ref.DELETE;
395          ELSIF(p_table_type = 'tbl')
396          THEN
397             cz_pb_mgr.v_cz_folders_id_old_tbl.DELETE;
398             cz_pb_mgr.v_cz_folders_id_new_tbl.DELETE;
399          END IF;
400       ELSIF(p_table_name = 'cz_expression_nodes')
401       THEN
402          IF (p_table_type = 'tbl')
403          THEN
404             cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.DELETE;
405             cz_pb_mgr.v_cz_enodes_enode_id_old_tbl.DELETE;
406             cz_pb_mgr.v_cz_enodes_expr_id_tbl.DELETE;
407             cz_pb_mgr.v_cz_enodes_psnode_id_tbl.DELETE;
408             cz_pb_mgr.v_cz_enodes_gcol_id_tbl.DELETE;
409             cz_pb_mgr.v_cz_enodes_pexpr_id_tbl.DELETE;
410             cz_pb_mgr.v_cz_enodes_mrefl_id_tbl.DELETE;
411             cz_pb_mgr.v_cz_enodes_rule_id_tbl.DELETE;
412             cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl.DELETE;
413             cz_pb_mgr.v_cz_enodes_par_sig_id_tbl.DELETE;
414             cz_pb_mgr.v_cz_enodes_prop_id_tbl.delete;
415          ELSIF(p_table_type = 'ref')
416          THEN
417             cz_pb_mgr.v_cz_enodes_enode_id_old_ref.DELETE;
418             cz_pb_mgr.v_cz_enodes_enode_id_idx_ref.DELETE;
419             cz_pb_mgr.v_cz_enodes_enode_id_new_ref.DELETE;
420             cz_pb_mgr.v_cz_enodes_psnode_id_ref.DELETE;
421             cz_pb_mgr.v_cz_enodes_gcol_id_ref.DELETE;
422             cz_pb_mgr.v_cz_enodes_pexpr_id_ref.DELETE;
423             cz_pb_mgr.v_cz_enodes_mrefl_id_ref.DELETE;
424             cz_pb_mgr.v_cz_enodes_rule_id_ref.DELETE;
425             cz_pb_mgr.v_cz_enodes_arg_sig_id_ref.DELETE;
426             cz_pb_mgr.v_cz_enodes_par_sig_id_ref.DELETE;
427             cz_pb_mgr.v_cz_expr_sig_ref.DELETE;
428             cz_pb_mgr.v_cz_enodes_prop_id_ref.delete;
429          END IF;
430       ELSIF(p_table_name = 'cz_rules') THEN
431          IF (p_table_type = 'ref') THEN
432             cz_pb_mgr.v_cz_rules_rule_id_old_ref.DELETE;
433             cz_pb_mgr.v_cz_rules_rule_id_new_ref.DELETE;
434             cz_pb_mgr.v_cz_rules_persistent_id_ref.DELETE;
435             cz_pb_mgr.v_cz_rules_rule_id_idx_ref.DELETE;
436             cz_pb_mgr.v_cz_rules_rf_id_ref.DELETE;
437             cz_pb_mgr.v_cz_rules_proj_id_ref.DELETE;
438             cz_pb_mgr.v_cz_rules_comp_id_ref.DELETE;
439             cz_pb_mgr.v_cz_rules_ant_id_ref.DELETE;
440             cz_pb_mgr.v_cz_rules_con_id_ref.DELETE;
441             cz_pb_mgr.v_cz_rules_rea_id_ref.DELETE;
442             cz_pb_mgr.v_cz_rules_eff_id_ref.DELETE;
443             cz_pb_mgr.v_cz_rules_unmsg_id_ref.DELETE;
444             cz_pb_mgr.v_cz_rules_expl_ref.DELETE;
445             cz_pb_mgr.v_cz_rules_sig_ref.DELETE;
446             cz_pb_mgr.v_intl_text_model_tbl.DELETE;
447             cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
448             cz_pb_mgr.v_cz_rules_obj_ref.DELETE;
449             cz_pb_mgr.v_cz_rules_sig_idx_ref.DELETE;
450             cz_pb_mgr.v_cz_rules_ui_ref.DELETE;
451          END IF;
452       ELSIF(p_table_name = 'cz_des_chart_features')
456             cz_pb_mgr.v_cz_des_feature_id_old_ref.DELETE;
453       THEN
454          IF (p_table_type = 'ref')
455          THEN
457             cz_pb_mgr.v_cz_des_feature_id_new_ref.DELETE;
458             cz_pb_mgr.v_cz_des_feature_rid_new_ref.DELETE;
459             cz_pb_mgr.v_cz_des_feature_rule_id_ref.DELETE;
460             cz_pb_mgr.v_cz_des_feature_mrefl_id_ref.DELETE;
461             cz_pb_mgr.v_cz_des_feature_ft_typ_ref.DELETE;
462          END IF;
463       ELSIF(p_table_name = 'cz_des_chart_cells')
464       THEN
465          IF (p_table_type = 'ref')
466          THEN
467             cz_pb_mgr.v_cz_des_cells_rule_id_new_ref.DELETE;
468             cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.DELETE;
469             cz_pb_mgr.v_cz_des_cells_sf_id_ref.DELETE;
470             cz_pb_mgr.v_cz_des_cells_sopt_id_ref.DELETE;
471             cz_pb_mgr.v_cz_des_cells_popt_id_ref.DELETE;
472             cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.DELETE;
473          END IF;
474       ELSIF(p_table_name = 'cz_lce_headers')
475       THEN
476          cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
477          cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
478          cz_pb_mgr.v_cz_intl_text_idx_ref.DELETE;
479          cz_pb_mgr.v_cz_intl_unmsg_idx_ref.DELETE;
480          cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
481          cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
482          cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
483          cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
484       ELSIF(p_table_name = 'cz_lce_load_specs')
485       THEN
486          cz_pb_mgr.v_specs_net_type_ref.DELETE;
487          cz_pb_mgr.v_specs_attach_expl_id_ref.DELETE;
488          cz_pb_mgr.v_specs_lce_header_id_ref.DELETE;
489          cz_pb_mgr.v_specs_required_expl_id_ref.DELETE;
490          cz_pb_mgr.v_specs_attach_comp_id_ref.DELETE;
491          cz_pb_mgr.v_specs_model_id_ref.DELETE;
492          cz_pb_mgr.v_specs_alias_name_ref.DELETE;
493       END IF;
494    EXCEPTION
495       WHEN OTHERS
496       THEN
497          x_status := PUBLICATION_ERROR;
498          RAISE;
499    END;
500 
501 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
502 ------error and log messages are trapped
503    PROCEDURE error_msg_populate(p_msg VARCHAR2, p_caller VARCHAR2, p_code NUMBER)
504    AS
505       record_count PLS_INTEGER := 0;
506    BEGIN
507       record_count := cz_pb_mgr.v_msg_tbl.COUNT + 1;
508       cz_pb_mgr.v_msg_tbl(record_count).msg_text := LTRIM(RTRIM(SUBSTR(p_msg, 1, 2000)));
509       cz_pb_mgr.v_msg_tbl(record_count).called_proc := p_caller;
510       cz_pb_mgr.v_msg_tbl(record_count).sql_code := pbdebug;
511    EXCEPTION
512       WHEN OTHERS
513       THEN
514          cz_pb_mgr.v_err_message := 'Error in populating messages: ' || SQLERRM;
515          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
516    END error_msg_populate;
517 
518 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
519 --------------sequence no generator function
520    FUNCTION sequence_generate(seq_const PLS_INTEGER, seq_name VARCHAR2, p_oraclesequenceincr NUMBER)
521       RETURN NUMBER
522    AS
523       seq_cv ref_cursor;
524       l_sequence_gen NUMBER;
525 
526       cz_pb_no_incrementor  EXCEPTION;
527    BEGIN
528 
529       IF(p_oraclesequenceincr = 0)THEN
530           cz_pb_mgr.v_err_message := 'The sequence incrementor cannot be 0.';
531           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', 70001);
532           RAISE cz_pb_no_incrementor;
533       END IF;
534 
535       IF (cz_pb_mgr.v_sequence_count.EXISTS(seq_const))
536       THEN
537          l_sequence_gen := cz_pb_mgr.v_sequence_count(seq_const) + 1;
538       ELSE
539          l_sequence_gen := 0;                                                                 -- Will fall into this statement only for a New session
540       END IF;
541 
542       -- We will grab a new sequence from the sequencer only in case of
543       -- 1. New session OR
544       -- 2. If the running sequence count has reached the last sequence in the block
545       IF (l_sequence_gen = 0 OR(l_sequence_gen = cz_pb_mgr.v_next_sequence_gen(seq_const)))
546       THEN
547          BEGIN
548             OPEN seq_cv FOR 'SELECT ' || seq_name || ' FROM  dual';
549 
550             LOOP
551                FETCH seq_cv
552                 INTO l_sequence_gen;
553 
554                EXIT WHEN seq_cv%NOTFOUND;
555             END LOOP;
556 
557             CLOSE seq_cv;
558          EXCEPTION
559             WHEN OTHERS
560             THEN
561                cz_pb_mgr.v_err_message := 'Error in getting the next sequence value : ' || SQLERRM;
562                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
563                RAISE;
564          END;
565 
566          cz_pb_mgr.v_next_sequence_gen(seq_const) := l_sequence_gen + p_oraclesequenceincr;
567       END IF;
568 
569       cz_pb_mgr.v_sequence_count(seq_const) := l_sequence_gen;
570       RETURN l_sequence_gen;
571    EXCEPTION
572      WHEN OTHERS THEN
573        cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
574        RAISE;
575    END sequence_generate;
576 
577 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
578 ----update orig_sys_ref of cz_localized_texts to NULL
579    PROCEDURE update_localized_texts
580    AS
581    BEGIN
582       IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
583       THEN
584          EXECUTE IMMEDIATE    'BEGIN'
588                            || 'LOOP'
585                            || ' '
586                            || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
587                            || ' '
589                            || ' '
590                            || 'UPDATE cz_localized_texts'
591                            || cz_pb_mgr.v_db_link
592                            || '  t'
593                            || ' '
594                            || 'SET   t.orig_sys_ref = NULL'
595                            || ' '
596                            || 'WHERE  t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
597                            || ' '
598                            || 'AND   t.orig_sys_ref IS NOT NULL;'
599                            || ' '
600                            || 'END LOOP;'
601                            || ' '
602                            || 'EXCEPTION'
603                            || ' '
604                            || 'WHEN OTHERS THEN'
605                            || ' '
606                            || 'ROLLBACK;'
607                            || ' '
608                            || 'END;';
609 
610          COMMIT;
611       END IF;
612    EXCEPTION
613       WHEN OTHERS
614       THEN
615          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
616          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
617          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
618          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
619          RAISE;
620    END;
621 
622 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
623 -- id_type: null means all input ids not seeded nor from special fields, so have
624 -- to be resolved; not null implies an id in the array may or may not be resolved,
625 -- depending on the id value and its type (e.g., seeded, special type/value).
626 -- ignore id mapping failure here for a. 'seeded' ids b. ui rules' rule_folder_id
627 -- because it is useless (and because it may have a non-zero value) c. explicit
628 -- compatability rule's primary opt id (not real fks) d. reference id and component_id
629 -- because there are updates on them after new record insertion e. expression nodes'
630 -- ps_node_id because node could be deleted f. ui node's ui_node_ref_id because they
631 -- are specially handled after insertion (or obsolete anyway)
632 PROCEDURE resolve_ids(array_to_resolve     IN OUT NOCOPY cz_pb_mgr.t_ref,
633                       resolved_array       IN OUT NOCOPY cz_pb_mgr.t_ref,
634                       array_of_new_keys    IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
635                       resolving_id         IN VARCHAR2,
636                       id_type              IN VARCHAR2 DEFAULT NULL
637                      )
638 IS
639   l_use_old_id  BOOLEAN;
640 BEGIN
641   IF cz_pb_mgr.v_status_code=PUBLICATION_ERROR OR array_to_resolve.COUNT=0 THEN RETURN; END IF;
642 
643   FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
644   LOOP
645     BEGIN
646       IF array_to_resolve(j) IS NOT NULL THEN
647         resolved_array(j) := array_of_new_keys(array_to_resolve(j));
648       END IF;
649     EXCEPTION
650       WHEN NO_DATA_FOUND THEN
651         IF array_to_resolve(j) = 0 THEN
652           IF cz_pb_mgr.v_session_parameter = pub_model THEN
653             resolved_array(j) := 1;
654           ELSE
655             resolved_array(j) := 0;
656           END IF;
657         ELSE
658           IF id_type IS NULL THEN
659             l_use_old_id := FALSE;
660           ELSE
661             l_use_old_id := (id_type=FLD_IGNORE_NOW                                       OR
662               id_type=ENTITY_TYPE_UCT        AND array_to_resolve(j)<NONSEED_UCT_MIN_ID   OR
663               id_type=ENTITY_TYPE_UMT        AND array_to_resolve(j)<NONSEED_UMT_MIN_ID   OR
664 	      id_type=ENTITY_TYPE_SIGNATURE  AND array_to_resolve(j)<NONSEED_SIGN_MIN_ID  OR
665 	      id_type=ENTITY_TYPE_RULE       AND array_to_resolve(j)<NONSEED_RULE_MIN_ID  OR
666 	      id_type=ENTITY_TYPE_PROPERTY   AND array_to_resolve(j)<NONSEED_PROP_MIN_ID  OR
667 	      id_type=FLD_PSN_REFERENCE_ID   AND
668 	         (cz_pb_mgr.v_models_not_to_be_exported.FIRST IS NOT NULL OR
669 	          cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES') OR
670 	      id_type=FLD_RULE_COMPONENT_ID AND cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES');
671           END IF;
672           IF l_use_old_id THEN
673             resolved_array(j) := array_to_resolve(j);
674           ELSE
675             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
676             cz_pb_mgr.v_err_message := 'Unable to resolve '||id_type||' id ('||resolving_id||'): '||to_char(array_to_resolve(j));
677             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
678             RAISE;
679           END IF;
680         END IF;
681     END;
682   END LOOP;
683 EXCEPTION
684   WHEN OTHERS THEN
685     cz_pb_mgr.v_err_message  := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
686     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
687     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
688     cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
689     RAISE;
690 END resolve_ids;
691 
692 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
696                       id_type  IN VARCHAR2 DEFAULT NULL)
693 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
694                       array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
695                       resolving_id IN VARCHAR2,
697 IS
698 BEGIN
699   resolve_ids(array_to_resolve,array_to_resolve,array_of_new_keys,resolving_id,id_type);
700 END resolve_ids;
701 
702 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
703 -------procedure that resolves ids via single index keys and one additional array
704 PROCEDURE resolve_tmpl_ui_defs(array_to_resolve               IN OUT NOCOPY cz_pb_mgr.t_ref,
705                                resolved_array                 IN OUT NOCOPY cz_pb_mgr.t_ref,
706                                ui_templ_id_tbl                IN OUT NOCOPY cz_pb_mgr.t_ref,
707                                array_of_new_keys              IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
708                                      resolving_id                     IN VARCHAR2
709                             )
710 IS
711 
712   l_seeded_flag VARCHAR2(1);
713 
714 BEGIN
715 
716   IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
717     IF (array_to_resolve.COUNT > 0) THEN
718       FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
719         LOOP
720           BEGIN
721             IF (array_to_resolve(j) IS NOT NULL) THEN
722               resolved_array(j) := array_of_new_keys(array_to_resolve(j));
723             END IF;
724           EXCEPTION
725             WHEN NO_DATA_FOUND THEN
726               IF (array_to_resolve(j) = 0 AND(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)) THEN
727 
728                IF NOT(ui_templ_id_tbl(j)=0 OR ui_templ_id_tbl(j) IS NULL) THEN
729 
730                  SELECT seeded_flag INTO l_seeded_flag FROM CZ_UI_TEMPLATES
731                   WHERE template_id=ui_templ_id_tbl(j) AND ui_def_id=0;
732 
733                  IF l_seeded_flag='1' THEN
734                      resolved_array(j) := 0;
735                  ELSE
736                    resolved_array(j) := 1;
737                  END IF;
738 
739                END IF;
740 
741             ELSE
742                resolved_array(j) := array_to_resolve(j);
743             END IF;
744         END;
745       END LOOP;
746     END IF;
747   END IF;
748 
749 EXCEPTION
750   WHEN OTHERS THEN
751     cz_pb_mgr.v_err_message  := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
752     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
753     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
754     cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
755 END resolve_tmpl_ui_defs;
756 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
757    PROCEDURE resolve_tmpl_ui_defs(
758       p_array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
759      ,p_templ_array IN OUT NOCOPY cz_pb_mgr.t_ref
760      ,p_table_name IN VARCHAR2
761    )
762    IS
763    BEGIN
764       IF (p_array_to_resolve.COUNT > 0)
765       THEN
766          FOR i IN p_array_to_resolve.FIRST .. p_array_to_resolve.LAST
767          LOOP
768             BEGIN
769                IF ((p_array_to_resolve(i) IS NOT NULL) AND(p_templ_array(i) IS NOT NULL))
770                THEN
771                   IF ((p_array_to_resolve(i) = 0))
772                   THEN
773                      IF (   (NOT cz_pb_mgr.g_ui_templates_idx_temp_ref.EXISTS(p_templ_array(i)))
774                          OR (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
775                         )
776                      THEN
777                         p_array_to_resolve(i) := 0;
778                      ELSE
779                         p_array_to_resolve(i) := 1;
780                      END IF;
781                   END IF;
782                ELSE
783                   BEGIN
784                      p_array_to_resolve(i) := cz_pb_mgr.v_cz_ui_defs_idx_ref(p_array_to_resolve(i));
785                   EXCEPTION
786                      WHEN OTHERS
787                      THEN
788                         NULL;
789                   END;
790                END IF;
791             EXCEPTION
792                WHEN NO_DATA_FOUND
793                THEN
794                   p_array_to_resolve(i) := 0;
795             END;
796          END LOOP;
797       END IF;
798    EXCEPTION
799       WHEN OTHERS
800       THEN
801          cz_pb_mgr.v_err_message := 'Error in resolving template ui def id of: ' || p_table_name || ' : ' || SQLERRM;
802          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'RESOLVETEMPLUIDEFS', SQLCODE);
803          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
804          RAISE;
805    END resolve_tmpl_ui_defs;
806 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
807    PROCEDURE resolve_intl_texts(
808       array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
809      ,array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
810      ,resolving_id IN VARCHAR2
811    )
812    IS
813    BEGIN
814       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
815       THEN
816          IF (array_to_resolve.COUNT > 0)
817          THEN
818             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
819             LOOP
820                BEGIN
821                   IF (array_to_resolve(j) IS NOT NULL)
822                   THEN
826                   WHEN NO_DATA_FOUND
823                      array_to_resolve(j) := array_of_new_keys(array_to_resolve(j));
824                   END IF;
825                EXCEPTION
827                   THEN
828                      IF (array_to_resolve(j) > 1000)
829                      THEN
830                         cz_pb_mgr.v_err_message :=
831                                                  'Resolution error for: ' || resolving_id || ' : ' || TO_CHAR(array_to_resolve(j)) || ' : '
832                                                  || SQLERRM;
833                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
834                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
835                         RAISE;
836                      END IF;
837                END;
838             END LOOP;
839          END IF;
840       END IF;
841    EXCEPTION
842       WHEN OTHERS
843       THEN
844          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
845          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
846          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
847          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
848    END resolve_intl_texts;
849 
850 ------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
851    PROCEDURE insert_into_item_tables(
852       table_name IN VARCHAR2
853      ,primary_key IN VARCHAR2
854      ,db_link IN VARCHAR2
855      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
856      ,plsql_table_name IN VARCHAR2
857      ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
858    )
859    AS
860       v_cursor NUMBER;
861       v_numrows NUMBER;
862       v_insertstring VARCHAR2(10000);
863       current_column VARCHAR2(128);
864       v_db_link VARCHAR2(128);
865       v_last NUMBER;
866       l_len NUMBER;
867 
868       CURSOR col_name_cur(par_table_name VARCHAR2)
869       IS
870          SELECT column_name
871                     FROM all_tab_columns
872                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
873 
874       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
875          INDEX BY BINARY_INTEGER;
876 
877       col_list col_name_table;
878       i BINARY_INTEGER := 1;
879       match_found BOOLEAN;
880    BEGIN
881       IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
882       THEN
883          v_db_link := db_link;
884          cz_pb_mgr.v_insert_table_name := table_name;
885 
886          BEGIN
887             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || '  LOOP ';
888             v_insertstring := v_insertstring || ' BEGIN  insert into ' || table_name || v_db_link || ' (';
889 
890             OPEN col_name_cur(table_name);
891 
892             LOOP
893                FETCH col_name_cur
894                 INTO current_column;
895 
896                EXIT WHEN col_name_cur%NOTFOUND;
897                col_list(i) := LTRIM(RTRIM(current_column));
898                i := i + 1;
899                v_insertstring := v_insertstring || current_column || ',';
900             END LOOP;
901 
902             CLOSE col_name_cur;
903 
904             v_insertstring := RTRIM(v_insertstring, ',');
905             v_insertstring := v_insertstring || ')';
906             v_insertstring := v_insertstring || '  select  ';
907 
908             IF (col_list.COUNT > 0)
909             THEN
910                FOR j IN col_list.FIRST .. col_list.LAST
911                LOOP
912                   match_found := FALSE;
913 
914                   IF (plsql_table_list.COUNT > 0)
915                   THEN
916                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
917                      LOOP
918                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
919                         THEN
920                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
921                            match_found := TRUE;
922                            EXIT;
923                         END IF;
924                      END LOOP;
925                   END IF;
926 
927                   IF (NOT match_found)
928                   THEN
929                      v_insertstring := v_insertstring || col_list(j) || ',';
930                   END IF;
931                END LOOP;
932             END IF;
933 
934             v_insertstring := RTRIM(v_insertstring, ',');
935             v_insertstring :=
936                       v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
937             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
938             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;   ';
939             v_insertstring := v_insertstring || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN  ';
940             v_insertstring := v_insertstring || '  IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_MASTERS'') THEN ';
941             v_insertstring := v_insertstring || '  UPDATE cz_item_masters' || cz_pb_mgr.v_db_link || ' t  ';
942             v_insertstring := v_insertstring || '  SET ( ITEM_TYPE_ID,DESC_TEXT,ORIG_SYS_REF,REF_PART_NBR,QUOTEABLE_FLAG,LEAD_TIME ';
946             v_insertstring := v_insertstring || '  FROM   cz_item_masters WHERE   cz_item_masters.item_id = ' || plsql_table_name || '(m) ';
943             v_insertstring := v_insertstring || ' ,ITEM_STATUS,PRIMARY_UOM_CODE,DELETED_FLAG,DECIMAL_QTY_FLAG) ';
944             v_insertstring := v_insertstring || '  = ( SELECT   ITEM_TYPE_ID,DESC_TEXT,orig_sys_ref,REF_PART_NBR, ';
945             v_insertstring := v_insertstring || '  QUOTEABLE_FLAG ,LEAD_TIME,ITEM_STATUS,PRIMARY_UOM_CODE, DELETED_FLAG,DECIMAL_QTY_FLAG  ';
947             v_insertstring := v_insertstring || '   AND   deleted_flag = ''0'') WHERE t.item_id = ' || plsql_table_name || '(m); ';
948             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPES'') THEN  ';
949             v_insertstring := v_insertstring || '  UPDATE cz_item_types' || cz_pb_mgr.v_db_link || ' t  ';
950             v_insertstring := v_insertstring || '  SET (DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
951             v_insertstring := v_insertstring || '  ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF) ';
952             v_insertstring := v_insertstring || '   = (SELECT DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
953             v_insertstring := v_insertstring || '	,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF ';
954             v_insertstring := v_insertstring || '   FROM   cz_item_types WHERE   cz_item_types.item_type_id = ' || plsql_table_name || '(m) ';
955             v_insertstring := v_insertstring || '   AND   deleted_flag = ''0'') WHERE t.item_type_id = ' || plsql_table_name || '(m); ';
956             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_PROPERTIES'') THEN  ';
957             v_insertstring := v_insertstring || '  UPDATE cz_properties' || cz_pb_mgr.v_db_link || ' t ';
958             v_insertstring := v_insertstring || '   SET ( PROPERTY_UNIT,DESC_TEXT,NAME,DATA_TYPE,DEF_VALUE,USER_NUM01 ';
959             v_insertstring := v_insertstring || '  ,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04 ';
960             v_insertstring := v_insertstring || '  ,DELETED_FLAG,EFF_FROM,EFF_TO,ORIG_SYS_REF) = (SELECT PROPERTY_UNIT,DESC_TEXT,';
961             v_insertstring := v_insertstring || '  NAME,DATA_TYPE,DEF_VALUE,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,';
962             v_insertstring := v_insertstring || '  USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,EFF_FROM,';
963             v_insertstring := v_insertstring || '  EFF_TO,ORIG_SYS_REF   FROM   cz_properties  ';
964             v_insertstring := v_insertstring || '  WHERE   cz_properties.property_id = ' || plsql_table_name || '(m) ';
965             v_insertstring := v_insertstring || '  AND   deleted_flag = ''0'') WHERE t.property_id = ' || plsql_table_name || '(m); ';
966             v_insertstring := v_insertstring || '  END IF; END; END LOOP; COMMIT; END; ';
967 
968             EXECUTE IMMEDIATE v_insertstring;
969 
970             COMMIT;
971          EXCEPTION
972             WHEN OTHERS
973             THEN
974                ROLLBACK;
975                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
976                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
977                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
978                cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
979                RAISE;
980          END;
981       END IF;
982    EXCEPTION
983       WHEN OTHERS
984       THEN
985          RAISE;
986    END insert_into_item_tables;
987 
988 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
989 ----generates new publication id for the target publication
990    PROCEDURE get_new_publication_id(
991       p_old_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
992      ,x_old_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
993      ,x_new_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
994      ,x_old_rem_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
995      ,x_status IN OUT NOCOPY VARCHAR2
996    )
997    AS
998    BEGIN
999       IF (x_status <> PUBLICATION_ERROR)
1000       THEN
1001          IF (cz_pb_mgr.v_server_id <> 0)
1002          THEN
1003             SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
1004                                               , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
1005                                               ,cz_pb_mgr.v_oraclesequenceincr
1006                                               )
1007                   ,publication_id, remote_publication_id
1008               INTO x_new_pub_id
1009                   ,x_old_pb_id, x_old_rem_pb_id
1010               FROM cz_model_publications
1011              WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1012          ELSE
1013             SELECT cz_model_publications_s.NEXTVAL, publication_id, remote_publication_id
1014               INTO x_new_pub_id, x_old_pb_id, x_old_rem_pb_id
1015               FROM cz_model_publications
1016              WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1017          END IF;
1018       END IF;
1019    EXCEPTION
1020       WHEN OTHERS
1021       THEN
1022          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
1023          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUB', SQLCODE);
1024          x_status := PUBLICATION_ERROR;
1025          RAISE;
1029    PROCEDURE insert_item_tables(
1026    END get_new_publication_id;
1027 
1028 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1030       table_name IN VARCHAR2
1031      ,primary_key1 IN VARCHAR2
1032      ,primary_key2 IN VARCHAR2
1033      ,db_link IN VARCHAR2
1034      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1035      ,plsql_table_name1 IN VARCHAR2
1036      ,plsql_table_name2 IN VARCHAR2
1037      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1038      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1039    )
1040    AS
1041       v_cursor NUMBER;
1042       v_numrows NUMBER;
1043       v_insertstring VARCHAR2(10000);
1044       current_column VARCHAR2(128);
1045       v_db_link VARCHAR2(128);
1046       v_last NUMBER;
1047 
1048       CURSOR col_name_cur(par_table_name VARCHAR2)
1049       IS
1050          SELECT column_name
1051                     FROM all_tab_columns
1052                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1053 
1054       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1055          INDEX BY BINARY_INTEGER;
1056 
1057       col_list col_name_table;
1058       i BINARY_INTEGER := 1;
1059       match_found BOOLEAN;
1060    BEGIN
1061       IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1062       THEN
1063          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1064          cz_pb_mgr.v_insert_table_name := table_name;
1065 
1066          BEGIN
1067             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP ';
1068             v_insertstring := v_insertstring || 'BEGIN  insert into ' || table_name || v_db_link || ' (';
1069 
1070             OPEN col_name_cur(table_name);
1071 
1072             LOOP
1073                FETCH col_name_cur
1074                 INTO current_column;
1075 
1076                EXIT WHEN col_name_cur%NOTFOUND;
1077                col_list(i) := LTRIM(RTRIM(current_column));
1078                i := i + 1;
1079                v_insertstring := v_insertstring || current_column || ',';
1080             END LOOP;
1081 
1082             CLOSE col_name_cur;
1083 
1084             v_insertstring := RTRIM(v_insertstring, ',');
1085             v_insertstring := v_insertstring || ')';
1086             v_insertstring := v_insertstring || '  select  ';
1087 
1088             IF (col_list.COUNT > 0)
1089             THEN
1090                FOR j IN col_list.FIRST .. col_list.LAST
1091                LOOP
1092                   match_found := FALSE;
1093 
1094                   IF (plsql_table_list.COUNT > 0)
1095                   THEN
1096                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1097                      LOOP
1098                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1099                         THEN
1100                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1101                            match_found := TRUE;
1102                            EXIT;
1103                         END IF;
1104                      END LOOP;
1105                   END IF;
1106 
1107                   IF (NOT match_found)
1108                   THEN
1109                      v_insertstring := v_insertstring || col_list(j) || ',';
1110                   END IF;
1111                END LOOP;
1112             END IF;
1113 
1114             v_insertstring := RTRIM(v_insertstring, ',');
1115             v_insertstring :=
1116                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1117             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1118             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1119             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
1120             v_insertstring := v_insertstring || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN  ';
1121             v_insertstring := v_insertstring || '  IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPE_PROPERTIES'') THEN ';
1122             v_insertstring := v_insertstring || '  UPDATE cz_item_type_properties' || cz_pb_mgr.v_db_link || ' SET  DELETED_FLAG = ''0'' ';
1123             v_insertstring := v_insertstring || '  WHERE ITEM_TYPE_ID = ' || plsql_table_name1 || '(m) ';
1124             v_insertstring := v_insertstring || '  AND  PROPERTY_ID  = ' || plsql_table_name2 || '(m);  ';
1125             v_insertstring := v_insertstring || '  ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_PROPERTY_VALUES'') THEN ';
1126             v_insertstring :=
1127                  v_insertstring || '  UPDATE cz_item_property_values' || cz_pb_mgr.v_db_link || ' t SET   ( PROPERTY_VALUE )= (SELECT PROPERTY_VALUE ';
1128             v_insertstring := v_insertstring || '  FROM  cz_item_property_values WHERE  PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1129             v_insertstring :=
1130                           v_insertstring || '  AND ITEM_ID = ' || plsql_table_name2 || '(m) ) WHERE  t.PROPERTY_ID =  ' || plsql_table_name1 || '(m) ';
1131             v_insertstring := v_insertstring || '  AND t.ITEM_ID  = ' || plsql_table_name2 || '(m); ';
1132             v_insertstring := v_insertstring || '  END IF; END; END LOOP; COMMIT; END; ';
1133 
1134             EXECUTE IMMEDIATE v_insertstring;
1135 
1136             COMMIT;
1137          EXCEPTION
1138             WHEN OTHERS
1139             THEN
1140                ROLLBACK;
1144                cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1141                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1142                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1143                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1145                RAISE;
1146          END;
1147       END IF;
1148 
1149       COMMIT;
1150    END insert_item_tables;
1151 
1152 /* Procedure to insert dev num val for translateable properties of CZ_PROPERTIES into localized texts*/
1153 
1154 PROCEDURE mm_ins_def_num_val_in_intl AS
1155  l_sql_str varchar2(4000);
1156  lang_count number;
1157  BEGIN
1158 
1159   select count(1) into lang_count from fnd_languages where installed_flag in('I','B');
1160 
1161       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.COUNT > 0))
1162       THEN
1163 
1164       --The mm_intl_text_model_id_ref table contains model_id of intl texts.
1165       -- mm_intl_text_model_id_ref already resolved in mm_sync_properties (put step) using h_devl_prj_by_intl_text map
1166 
1167       l_sql_str:='BEGIN'
1168                    || ' '
1169                    || 'cz_pb_mgr.v_expr_count := 0;'
1170                    || ' '
1171                    || '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'
1172                    || ' '
1173                    || 'LOOP'
1174                    || ' INSERT INTO cz_localized_texts'
1175                    || cz_pb_mgr.v_db_link
1176                    || '('
1177                    || ' '
1178                    || 'intl_text_id,localized_str,ui_def_id,ORIG_SYS_REF,model_id,source_lang,language)'
1179                    || ' '
1180                    || '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'
1181                    || ' '
1182                    || ' from cz_localized_texts where intl_text_id=cz_pb_mgr.mm_v_tbl_prop_vals_trans_old(i);'
1183                    || ' '
1184                    || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
1185                    || ' '
1186                    || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
1187                    || ' '
1188                    || 'END IF;'
1189                    || ' '
1190                    || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count +'||lang_count||';'
1191                    || ' '
1192                    || 'END LOOP;'
1193                    || ' '
1194                    || 'END;';
1195 
1196          EXECUTE IMMEDIATE    l_sql_str;
1197       END IF;
1198 
1199       COMMIT;
1200    EXCEPTION
1201       WHEN OTHERS
1202       THEN
1203          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'CZ_LOCALIZED_TEXTS', 'SQLERRM', SQLERRM);
1204          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_localized_texts', SQLCODE);
1205          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1206          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1207          RAISE;
1208  END;
1209 
1210 
1211 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1212    PROCEDURE insert_item_schema
1213    IS
1214       plsql_table_list cz_pb_mgr.col_plsql_table_list;
1215       rec_count NUMBER;
1216    BEGIN
1217 --All reading has been moved to load_data->read_item_schema.
1218 
1219       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1220       THEN
1221          mm_v_tbl_sync_prop_vals_num.DELETE;
1222          mm_v_tbl_prop_vals_trans_old.DELETE;
1223          mm_v_tbl_prop_vals_trans_new.DELETE;
1224          mm_v_ht_sync_all_prop_val_num.DELETE;
1225          mm_v_ht_sync_all_prop.DELETE;
1226          mm_v_tbl_sync_prop_type.DELETE;
1227          mm_v_tbl_sync_prop_folder.DELETE;
1228          mm_v_tbl_sync_prop.DELETE;
1229          mm_v_ht_sync_item_type.DELETE;
1230          mm_v_ht_sync_item_type_items.DELETE;
1231          mm_v_ht_sync_items.DELETE;
1232          mm_v_ht_sync_item_prop.DELETE;
1233          mm_v_ht_sync_item_type_prop.DELETE;
1234          mm_v_ht_sync_itmtype_for_prop.DELETE;
1235          mm_v_ht_sync_it_propval_itm.DELETE;
1236          mm_v_ht_sync_ps_propval.DELETE;
1237          mm_v_ht_sync_it_propval.DELETE;
1238          mm_v_ht_eff_set_tbl_t.DELETE;
1239          mm_v_ht_eff_set_tbl_s.DELETE;
1240          mm_v_ht_sync_exist_items.DELETE;
1241          mm_insert_array1.DELETE;
1242          mm_insert_array2.DELETE;
1243          mm_source_array1.DELETE;
1244          mm_source_array2.DELETE;
1245          mm_objtype_array.DELETE;
1246          mm_tgtfldr_array.DELETE;
1247 
1248          mm_intl_text_model_id_ref.DELETE;
1249 
1250          mm_sync_properties;
1251          mm_sync_itemschema;
1252          mm_migrate_into_ps_prop_vals;
1253       END IF;
1254 
1255       -- ITEM TYPES
1256       plsql_table_list.DELETE;
1257       rec_count := 1;
1258       plsql_table_list(rec_count).col_name := 'item_type_id';
1259 
1260       -- sure if we need to maintain a table for orig_sys_ref, if needed, we need to maintain a sync table
1261       -- for model migration and then resolve them before updating
1262       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1263       THEN
1264          cz_pb_mgr.mm_insert_array1.DELETE;
1265          cz_pb_mgr.mm_insert_array2.DELETE;
1266          cz_pb_mgr.mm_source_array1.DELETE;
1270                        ,cz_pb_mgr.mm_v_ht_sync_item_type
1267          cz_pb_mgr.mm_source_array2.DELETE;
1268          --get only those that need to be migrated
1269          mm_resolve_ids(cz_pb_mgr.v_item_types_new_ref
1271                        ,'ITEM TYPES'
1272                        ,cz_pb_mgr.mm_insert_array1
1273                        ,cz_pb_mgr.mm_source_array1
1274                        );
1275          mm_resolve_orig_refs(cz_pb_mgr.v_item_types_new_ref
1276                              ,cz_pb_mgr.mm_v_ht_item_types_orig_ref
1277                              ,'ITEM TYPES - ORIG SYS REF'
1278                              ,cz_pb_mgr.mm_insert_array3
1279                              ,cz_pb_mgr.mm_source_array3
1280                              );
1281          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1282          rec_count := rec_count + 1;
1283          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1284          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1285          insert_into_item_tables('cz_item_types'
1286                                 ,'item_type_id'
1287                                 ,cz_pb_mgr.v_db_link
1288                                 ,plsql_table_list
1289                                 ,'cz_pb_mgr.mm_source_array1'
1290                                 ,cz_pb_mgr.mm_source_array1
1291                                 );
1292       ELSE
1293          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_new_ref';
1294          rec_count := rec_count + 1;
1295          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1296          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_orig_ref';
1297          insert_into_item_tables('cz_item_types'
1298                                 ,'item_type_id'
1299                                 ,cz_pb_mgr.v_db_link
1300                                 ,plsql_table_list
1301                                 ,'cz_pb_mgr.v_item_types_new_ref'
1302                                 ,cz_pb_mgr.v_item_types_new_ref
1303                                 );
1304       END IF;
1305 
1306       --ITEMS
1307       plsql_table_list.DELETE;
1308       rec_count := 1;
1309 
1310       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1311       THEN
1312          cz_pb_mgr.mm_insert_array1.DELETE;
1313          cz_pb_mgr.mm_insert_array2.DELETE;
1314          cz_pb_mgr.mm_source_array1.DELETE;
1315          cz_pb_mgr.mm_source_array2.DELETE;
1316          mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1317                        ,cz_pb_mgr.mm_v_ht_sync_items
1318                        ,'ITEMS - ITEM ARRAY'
1319                        ,cz_pb_mgr.mm_insert_array1
1320                        ,mm_source_array1
1321                        );
1322          mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1323                        ,cz_pb_mgr.mm_v_ht_sync_item_type_items
1324                        ,'ITEMS - ITEM TYPE ARRAY'
1325                        ,cz_pb_mgr.mm_insert_array2
1326                        ,mm_source_array2
1327                        );
1328          mm_resolve_orig_refs(cz_pb_mgr.v_item_masters_tbl
1329                              ,cz_pb_mgr.mm_v_ht_items_orig_ref
1330                              ,'ITEM TYPES - ORIG SYS REF'
1331                              ,cz_pb_mgr.mm_insert_array3
1332                              ,mm_source_array3
1333                              );
1334          plsql_table_list(rec_count).col_name := 'item_id';
1335          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1336          rec_count := rec_count + 1;
1337          plsql_table_list(rec_count).col_name := 'item_type_id';
1338          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1339          rec_count := rec_count + 1;
1340          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1341          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1342          insert_into_item_tables('cz_item_masters'
1343                                 ,'item_id'
1344                                 ,cz_pb_mgr.v_db_link
1345                                 ,plsql_table_list
1346                                 ,'cz_pb_mgr.mm_source_array1'
1347                                 ,cz_pb_mgr.mm_source_array1
1348                                 );
1349       ELSE
1350          plsql_table_list(rec_count).col_name := 'item_id';
1351          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_masters_tbl';
1352          rec_count := rec_count + 1;
1353          plsql_table_list(rec_count).col_name := 'item_type_id';
1354          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_tbl';
1355          rec_count := rec_count + 1;
1356          plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1357          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_items_orig_ref';
1358          insert_into_item_tables('cz_item_masters'
1359                                 ,'item_id'
1360                                 ,cz_pb_mgr.v_db_link
1361                                 ,plsql_table_list
1362                                 ,'cz_pb_mgr.v_item_masters_tbl'
1363                                 ,cz_pb_mgr.v_item_masters_tbl
1364                                 );
1365       END IF;
1366 
1367       --PROPERTIES (with RP_ENTRIES if model migration)
1368       plsql_table_list.DELETE;
1369       rec_count := 1;
1370 
1371       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1372       THEN
1373          cz_pb_mgr.mm_insert_array1.DELETE;
1374          cz_pb_mgr.mm_insert_array2.DELETE;
1375          cz_pb_mgr.mm_objtype_array.DELETE;
1376          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1380 --insert into localized texts:ids which belong to  translateable props
1377          cz_pb_mgr.mm_source_array1.DELETE;
1378          cz_pb_mgr.mm_source_array2.DELETE;
1379 
1381          mm_ins_def_num_val_in_intl;
1382 
1383          mm_resolve_ids_w_rp_entries(cz_pb_mgr.v_remote_prop_ref
1384                                     ,cz_pb_mgr.mm_v_tbl_sync_prop
1385                                     ,'PRP'
1386                                     ,g_migration_tgt_folder_id
1387                                     ,'PROPERTIES - PROPERTIES AND RP ENTRIES'
1388                                     ,mm_insert_array1
1389                                     ,mm_objtype_array
1390                                     ,mm_tgtfldr_array
1391                                     ,mm_source_array1
1392                                     );
1393 
1394          --The array cz_pb_mgr.mm_v_tbl_sync_prop_vals_num is a hash table, containing numeric default values,
1395          --hashed by target property_id, so we cannot use it directly in the following block. We need to construct a
1396          --new array that will be in synch with mm_insert_array1. Also, it should be global to be used inside the
1397          --insert_into_item_tables procedure.
1398 
1399          FOR i IN 1..cz_pb_mgr.mm_insert_array1.COUNT LOOP
1400 
1401             cz_pb_mgr.mm_insert_array2(i) := cz_pb_mgr.mm_v_tbl_sync_prop_vals_num(cz_pb_mgr.mm_insert_array1(i));
1402          END LOOP;
1403 
1404          plsql_table_list(rec_count).col_name := 'property_id';
1405          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1406          rec_count:=rec_count+1;
1407 
1408          plsql_table_list(rec_count).col_name := 'def_num_value';
1409          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1410 
1411          insert_into_item_tables('cz_properties'
1412                                 ,'property_id'
1413                                 ,cz_pb_mgr.v_db_link
1414                                 ,plsql_table_list
1415                                 ,'cz_pb_mgr.mm_source_array1'
1416                                 ,cz_pb_mgr.mm_source_array1
1417                                 );
1418 
1419          --insert rp entries as well
1420          plsql_table_list.DELETE;
1421          rec_count := 1;
1422          plsql_table_list(rec_count).col_name := 'object_id';
1423          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1424          rec_count := rec_count + 1;
1425          plsql_table_list(rec_count).col_name := 'object_type';
1426          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_objtype_array';
1427          rec_count := rec_count + 1;
1428          plsql_table_list(rec_count).col_name := 'enclosing_folder';
1429          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_tgtfldr_array';
1430          insert_into_rp_entries('cz_rp_entries'
1431                                ,'object_id'
1432                                ,'object_type'
1433                                ,cz_pb_mgr.v_db_link
1434                                ,plsql_table_list
1435                                ,'cz_pb_mgr.mm_source_array1'
1436                                ,'cz_pb_mgr.mm_objtype_array'
1437                                ,cz_pb_mgr.mm_source_array1
1438                                ,cz_pb_mgr.mm_objtype_array
1439                                );
1440       ELSE
1441          plsql_table_list(rec_count).col_name := 'property_id';
1442          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_remote_prop_ref';
1443          insert_into_item_tables('cz_properties'
1444                                 ,'property_id'
1445                                 ,cz_pb_mgr.v_db_link
1446                                 ,plsql_table_list
1447                                 ,'cz_pb_mgr.v_remote_prop_ref'
1448                                 ,cz_pb_mgr.v_remote_prop_ref
1449                                 );
1450       END IF;
1451 
1452       --ITEM TYPE PROPERTIES
1453       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1454       THEN
1455          cz_pb_mgr.mm_insert_array1.DELETE;
1456          cz_pb_mgr.mm_insert_array2.DELETE;
1457          cz_pb_mgr.mm_objtype_array.DELETE;
1458          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1459          cz_pb_mgr.mm_source_array1.DELETE;
1460          cz_pb_mgr.mm_source_array2.DELETE;
1461          mm_resolve_ids(cz_pb_mgr.v_item_prop_id_tbl
1462                        ,cz_pb_mgr.mm_v_ht_sync_item_type_prop
1463                        ,'ITEM TYPE PROPERTIES - PROP'
1464                        ,cz_pb_mgr.mm_insert_array1
1465                        ,cz_pb_mgr.mm_source_array1
1466                        );
1467          mm_resolve_ids(cz_pb_mgr.v_item_prop_type_tbl
1468                        ,cz_pb_mgr.mm_v_ht_sync_itmtype_for_prop
1469                        ,'ITEM TYPE PROPERTIES - ITEM TYPE'
1470                        ,cz_pb_mgr.mm_insert_array2
1471                        ,cz_pb_mgr.mm_source_array2
1472                        );
1473          plsql_table_list.DELETE;
1474          rec_count := 1;
1475          plsql_table_list(rec_count).col_name := 'property_id';
1476          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1477          rec_count := rec_count + 1;
1478          plsql_table_list(rec_count).col_name := 'item_type_id';
1479          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1480          insert_item_tables('cz_item_type_properties'
1481                            ,'property_id'
1482                            ,'item_type_id'
1483                            ,cz_pb_mgr.v_db_link
1484                            ,plsql_table_list
1488                            ,cz_pb_mgr.mm_source_array2
1485                            ,'cz_pb_mgr.mm_source_array1'
1486                            ,'cz_pb_mgr.mm_source_array2'
1487                            ,cz_pb_mgr.mm_source_array1
1489                            );
1490       END IF;
1491 
1492       --ITEM  PROPERTY VALUES
1493       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1494       THEN
1495          cz_pb_mgr.mm_insert_array1.DELETE;
1496          cz_pb_mgr.mm_insert_array2.DELETE;
1497          cz_pb_mgr.mm_objtype_array.DELETE;
1498          cz_pb_mgr.mm_tgtfldr_array.DELETE;
1499          cz_pb_mgr.mm_source_array1.DELETE;
1500          cz_pb_mgr.mm_source_array2.DELETE;
1501          mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_id_tbl
1502                        ,cz_pb_mgr.mm_v_ht_sync_it_propval
1503                        ,'IT PROP VAL- PROPERTIES'
1504                        ,cz_pb_mgr.mm_insert_array1
1505                        ,cz_pb_mgr.mm_source_array1
1506                        );
1507          mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_item_tbl
1508                        ,cz_pb_mgr.mm_v_ht_sync_it_propval_itm
1509                        ,'IT PROP VALS - ITEMS'
1510                        ,cz_pb_mgr.mm_insert_array2
1511                        ,cz_pb_mgr.mm_source_array2
1512                        );
1513          plsql_table_list.DELETE;
1514          rec_count := 1;
1515          plsql_table_list(rec_count).col_name := 'property_id';
1516          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1517          rec_count := rec_count + 1;
1518          plsql_table_list(rec_count).col_name := 'item_id';
1519          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1520          insert_item_tables('cz_item_property_values'
1521                            ,'item_id'
1522                            ,'property_id'
1523                            ,cz_pb_mgr.v_db_link
1524                            ,plsql_table_list
1525                            ,'cz_pb_mgr.mm_source_array2'
1526                            ,'cz_pb_mgr.mm_source_array1'
1527                            ,cz_pb_mgr.mm_source_array1
1528                            ,cz_pb_mgr.mm_source_array2
1529                            );
1530       END IF;
1531    END insert_item_schema;
1532 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1533    PROCEDURE insert_into_rp_entries(
1534       table_name IN VARCHAR2
1535      ,primary_key1 IN VARCHAR2
1536      ,primary_key2 IN VARCHAR2
1537      ,db_link IN VARCHAR2
1538      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1539      ,plsql_table_name1 IN VARCHAR2
1540      ,plsql_table_name2 IN VARCHAR2
1541      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1542      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
1543    )
1544    AS
1545       v_cursor NUMBER;
1546       v_numrows NUMBER;
1547       v_insertstring VARCHAR2(10000);
1548       current_column VARCHAR2(128);
1549       v_db_link VARCHAR2(128);
1550       v_last NUMBER;
1551 
1552       CURSOR col_name_cur(par_table_name VARCHAR2)
1553       IS
1554          SELECT column_name
1555                     FROM all_tab_columns
1556                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1557 
1558       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1559          INDEX BY BINARY_INTEGER;
1560 
1561       col_list col_name_table;
1562       i BINARY_INTEGER := 1;
1563       match_found BOOLEAN;
1564    BEGIN
1565       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1566       THEN
1567          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1568          cz_pb_mgr.v_insert_table_name := table_name;
1569 
1570          BEGIN
1571             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP ';
1572             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1573 
1574             OPEN col_name_cur(table_name);
1575 
1576             LOOP
1577                FETCH col_name_cur
1578                 INTO current_column;
1579 
1580                EXIT WHEN col_name_cur%NOTFOUND;
1581                col_list(i) := LTRIM(RTRIM(current_column));
1582                i := i + 1;
1583                v_insertstring := v_insertstring || current_column || ',';
1584             END LOOP;
1585 
1586             CLOSE col_name_cur;
1587 
1588             v_insertstring := RTRIM(v_insertstring, ',');
1589             v_insertstring := v_insertstring || ')';
1590             v_insertstring := v_insertstring || '  select  ';
1591 
1592             IF (col_list.COUNT > 0)
1593             THEN
1594                FOR j IN col_list.FIRST .. col_list.LAST
1595                LOOP
1596                   match_found := FALSE;
1597 
1598                   IF (plsql_table_list.COUNT > 0)
1599                   THEN
1600                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1601                      LOOP
1602                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1603                         THEN
1604                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1605                            match_found := TRUE;
1606                            EXIT;
1607                         END IF;
1608                      END LOOP;
1609                   END IF;
1610 
1611                   IF (NOT match_found)
1615                END LOOP;
1612                   THEN
1613                      v_insertstring := v_insertstring || col_list(j) || ',';
1614                   END IF;
1616             END IF;
1617 
1618             v_insertstring := RTRIM(v_insertstring, ',');
1619             v_insertstring :=
1620                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1621             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1622             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1623             v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; ';
1624             v_insertstring :=
1625                   v_insertstring
1626                || '  EXCEPTION WHEN OTHERS THEN '
1627                || ' '
1628                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1629                || ' '
1630                || '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'');'
1631                || ' '
1632                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1633 
1634             EXECUTE IMMEDIATE v_insertstring;
1635 
1636             COMMIT;
1637          EXCEPTION
1638             WHEN OTHERS
1639             THEN
1640                ROLLBACK;
1641                RAISE;
1642          END;
1643       END IF;
1644 
1645       COMMIT;
1646    END;
1647 
1648 ----------------------------------------------------
1649 
1650    ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1651    PROCEDURE insert_into_table(
1652       table_name IN VARCHAR2
1653      ,primary_key1 IN VARCHAR2
1654      ,primary_key2 IN VARCHAR2
1655      ,primary_key3 IN VARCHAR2
1656      ,db_link IN VARCHAR2
1657      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1658      ,plsql_table_name1 IN VARCHAR2
1659      ,plsql_table_name2 IN VARCHAR2
1660      ,plsql_table_name3 IN VARCHAR2
1661      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1662      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1663      ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.varchar_type_tbl
1664    )
1665    AS
1666       v_cursor NUMBER;
1667       v_numrows NUMBER;
1668       v_insertstring VARCHAR2(10000);
1669       current_column VARCHAR2(128);
1670       v_db_link VARCHAR2(128);
1671       v_last NUMBER;
1672 
1673       CURSOR col_name_cur(par_table_name VARCHAR2)
1674       IS
1675          SELECT column_name
1676                     FROM all_tab_columns
1677                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1678 
1679       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1680          INDEX BY BINARY_INTEGER;
1681 
1682       col_list col_name_table;
1683       i BINARY_INTEGER := 1;
1684       match_found BOOLEAN;
1685    BEGIN
1686       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1687       THEN
1688          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1689          cz_pb_mgr.v_insert_table_name := table_name;
1690 
1691          BEGIN
1692             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
1693             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1694 
1695             OPEN col_name_cur(table_name);
1696 
1697             LOOP
1698                FETCH col_name_cur
1699                 INTO current_column;
1700 
1701                EXIT WHEN col_name_cur%NOTFOUND;
1702                col_list(i) := LTRIM(RTRIM(current_column));
1703                i := i + 1;
1704                v_insertstring := v_insertstring || current_column || ',';
1705             END LOOP;
1706 
1707             CLOSE col_name_cur;
1708 
1709             v_insertstring := RTRIM(v_insertstring, ',');
1710             v_insertstring := v_insertstring || ')';
1711             v_insertstring := v_insertstring || '  select  ';
1712 
1713             IF (col_list.COUNT > 0)
1714             THEN
1715                FOR j IN col_list.FIRST .. col_list.LAST
1716                LOOP
1717                   match_found := FALSE;
1718 
1719                   IF (plsql_table_list.COUNT > 0)
1720                   THEN
1721                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1722                      LOOP
1723                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1724                         THEN
1725                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1726                            match_found := TRUE;
1727                            EXIT;
1728                         END IF;
1729                      END LOOP;
1730                   END IF;
1731 
1732                   IF (NOT match_found)
1733                   THEN
1734                      v_insertstring := v_insertstring || col_list(j) || ',';
1735                   END IF;
1736                END LOOP;
1737             END IF;
1738 
1739             v_insertstring := RTRIM(v_insertstring, ',');
1740             v_insertstring :=
1744             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1741                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1742             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1743             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
1745             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; ';
1746             v_insertstring :=
1747                   v_insertstring
1748                || '  EXCEPTION WHEN OTHERS THEN'
1749                || ' '
1750                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1751                || ' '
1752                || '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'');'
1753                || ' '
1754                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1755 
1756             EXECUTE IMMEDIATE v_insertstring;
1757 
1758             COMMIT;
1759          EXCEPTION
1760             WHEN OTHERS
1761             THEN
1762                ROLLBACK;
1763                RAISE;
1764          END;
1765       END IF;
1766 
1767       COMMIT;
1768    END;
1769 
1770 -------------------------------------------------------------------------
1771    PROCEDURE insert_into_table(
1772       table_name IN VARCHAR2
1773      ,primary_key1 IN VARCHAR2
1774      ,primary_key2 IN VARCHAR2
1775      ,primary_key3 IN VARCHAR2
1776      ,db_link IN VARCHAR2
1777      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1778      ,plsql_table_name1 IN VARCHAR2
1779      ,plsql_table_name2 IN VARCHAR2
1780      ,plsql_table_name3 IN VARCHAR2
1781      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1782      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1783      ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.t_ref
1784    )
1785    AS
1786       v_cursor NUMBER;
1787       v_numrows NUMBER;
1788       v_insertstring VARCHAR2(10000);
1789       current_column VARCHAR2(128);
1790       v_db_link VARCHAR2(128);
1791       v_last NUMBER;
1792 
1793       CURSOR col_name_cur(par_table_name VARCHAR2)
1794       IS
1795          SELECT column_name
1796                     FROM all_tab_columns
1797                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1798 
1799       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1800          INDEX BY BINARY_INTEGER;
1801 
1802       col_list col_name_table;
1803       i BINARY_INTEGER := 1;
1804       match_found BOOLEAN;
1805    BEGIN
1806       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1807       THEN
1808          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1809          cz_pb_mgr.v_insert_table_name := table_name;
1810 
1811          BEGIN
1812             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
1813             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1814 
1815             OPEN col_name_cur(table_name);
1816 
1817             LOOP
1818                FETCH col_name_cur
1819                 INTO current_column;
1820 
1821                EXIT WHEN col_name_cur%NOTFOUND;
1822                col_list(i) := LTRIM(RTRIM(current_column));
1823                i := i + 1;
1824                v_insertstring := v_insertstring || current_column || ',';
1825             END LOOP;
1826 
1827             CLOSE col_name_cur;
1828 
1829             v_insertstring := RTRIM(v_insertstring, ',');
1830             v_insertstring := v_insertstring || ')';
1831             v_insertstring := v_insertstring || '  select  ';
1832 
1833             IF (col_list.COUNT > 0)
1834             THEN
1835                FOR j IN col_list.FIRST .. col_list.LAST
1836                LOOP
1837                   match_found := FALSE;
1838 
1839                   IF (plsql_table_list.COUNT > 0)
1840                   THEN
1841                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1842                      LOOP
1843                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1844                         THEN
1845                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1846                            match_found := TRUE;
1847                            EXIT;
1848                         END IF;
1849                      END LOOP;
1850                   END IF;
1851 
1852                   IF (NOT match_found)
1853                   THEN
1854                      v_insertstring := v_insertstring || col_list(j) || ',';
1855                   END IF;
1856                END LOOP;
1857             END IF;
1858 
1859             v_insertstring := RTRIM(v_insertstring, ',');
1860             v_insertstring :=
1861                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1865             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; ';
1862             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1863             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
1864             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1866             v_insertstring :=
1867                   v_insertstring
1868                || '  EXCEPTION WHEN OTHERS THEN'
1869                || ' '
1870                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1871                || ' '
1872                || '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'');'
1873                || ' '
1874                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1875 
1876             EXECUTE IMMEDIATE v_insertstring;
1877 
1878             COMMIT;
1879          EXCEPTION
1880             WHEN OTHERS
1881             THEN
1882                cz_pb_mgr.v_err_message := 'Insert into cz ui page refs: ' || SQLERRM;
1883                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZUIPAGEREFS', SQLCODE);
1884                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1885                RAISE;
1886          END;
1887       END IF;
1888 
1889       COMMIT;
1890    END;
1891 
1892 ------------------------------------------------------------
1893    PROCEDURE insert_into_table(
1894       table_name IN VARCHAR2
1895      ,primary_key1 IN VARCHAR2
1896      ,primary_key2 IN VARCHAR2
1897      ,db_link IN VARCHAR2
1898      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1899      ,plsql_table_name1 IN VARCHAR2
1900      ,plsql_table_name2 IN VARCHAR2
1901      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1902      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.objtype
1903    )
1904    AS
1905       v_cursor NUMBER;
1906       v_numrows NUMBER;
1907       v_insertstring VARCHAR2(10000);
1908       current_column VARCHAR2(128);
1909       v_db_link VARCHAR2(128);
1910       v_last NUMBER;
1911 
1912       CURSOR col_name_cur(par_table_name VARCHAR2)
1913       IS
1914          SELECT column_name
1915                     FROM all_tab_columns
1916                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1917 
1918       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1919          INDEX BY BINARY_INTEGER;
1920 
1921       col_list col_name_table;
1922       i BINARY_INTEGER := 1;
1923       match_found BOOLEAN;
1924    BEGIN
1925       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1926       THEN
1927          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1928          cz_pb_mgr.v_insert_table_name := table_name;
1929 
1930          BEGIN
1931             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
1932             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1933 
1934             OPEN col_name_cur(table_name);
1935 
1936             LOOP
1937                FETCH col_name_cur
1938                 INTO current_column;
1939 
1940                EXIT WHEN col_name_cur%NOTFOUND;
1941                col_list(i) := LTRIM(RTRIM(current_column));
1942                i := i + 1;
1943                v_insertstring := v_insertstring || current_column || ',';
1944             END LOOP;
1945 
1946             CLOSE col_name_cur;
1947 
1948             v_insertstring := RTRIM(v_insertstring, ',');
1949             v_insertstring := v_insertstring || ')';
1950             v_insertstring := v_insertstring || '  select  ';
1951 
1952             IF (col_list.COUNT > 0)
1953             THEN
1954                FOR j IN col_list.FIRST .. col_list.LAST
1955                LOOP
1956                   match_found := FALSE;
1957 
1958                   IF (plsql_table_list.COUNT > 0)
1959                   THEN
1960                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1961                      LOOP
1962                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1963                         THEN
1964                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1965                            match_found := TRUE;
1966                            EXIT;
1967                         END IF;
1968                      END LOOP;
1969                   END IF;
1970 
1971                   IF (NOT match_found)
1972                   THEN
1973                      v_insertstring := v_insertstring || col_list(j) || ',';
1974                   END IF;
1975                END LOOP;
1976             END IF;
1977 
1978             v_insertstring := RTRIM(v_insertstring, ',');
1979             v_insertstring :=
1980                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1981             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1985                   v_insertstring
1982             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1983             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; ';
1984             v_insertstring :=
1986                || '  EXCEPTION WHEN OTHERS THEN '
1987                || ' '
1988                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1989                || ' '
1990                || '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'');'
1991                || ' '
1992                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1993 
1994             EXECUTE IMMEDIATE v_insertstring;
1995 
1996             COMMIT;
1997          EXCEPTION
1998             WHEN OTHERS
1999             THEN
2000                ROLLBACK;
2001                RAISE;
2002          END;
2003       END IF;
2004 
2005       COMMIT;
2006    END;
2007 
2008 ---------------------------------------------------------------------------------
2009    PROCEDURE insert_into_table(
2010       table_name IN VARCHAR2
2011      ,primary_key1 IN VARCHAR2
2012      ,primary_key2 IN VARCHAR2
2013      ,db_link IN VARCHAR2
2014      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2015      ,plsql_table_name1 IN VARCHAR2
2016      ,plsql_table_name2 IN VARCHAR2
2017      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2018      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type
2019    )
2020    AS
2021       v_cursor NUMBER;
2022       v_numrows NUMBER;
2023       v_insertstring VARCHAR2(10000);
2024       current_column VARCHAR2(128);
2025       v_db_link VARCHAR2(128);
2026       v_last NUMBER;
2027 
2028       CURSOR col_name_cur(par_table_name VARCHAR2)
2029       IS
2030          SELECT column_name
2031                     FROM all_tab_columns
2032                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2033 
2034       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2035          INDEX BY BINARY_INTEGER;
2036 
2037       col_list col_name_table;
2038       i BINARY_INTEGER := 1;
2039       match_found BOOLEAN;
2040    BEGIN
2041       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2042       THEN
2043          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2044          cz_pb_mgr.v_insert_table_name := table_name;
2045 
2046          BEGIN
2047             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || '  LOOP BEGIN ';
2048             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2049 
2050             OPEN col_name_cur(table_name);
2051 
2052             LOOP
2053                FETCH col_name_cur
2054                 INTO current_column;
2055 
2056                EXIT WHEN col_name_cur%NOTFOUND;
2057                col_list(i) := LTRIM(RTRIM(current_column));
2058                i := i + 1;
2059                v_insertstring := v_insertstring || current_column || ',';
2060             END LOOP;
2061 
2062             CLOSE col_name_cur;
2063 
2064             v_insertstring := RTRIM(v_insertstring, ',');
2065             v_insertstring := v_insertstring || ')';
2066             v_insertstring := v_insertstring || '  select  ';
2067 
2068             IF (col_list.COUNT > 0)
2069             THEN
2070                FOR j IN col_list.FIRST .. col_list.LAST
2071                LOOP
2072                   match_found := FALSE;
2073 
2074                   IF (plsql_table_list.COUNT > 0)
2075                   THEN
2076                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2077                      LOOP
2078                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2079                         THEN
2080                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2081                            match_found := TRUE;
2082                            EXIT;
2083                         END IF;
2084                      END LOOP;
2085                   END IF;
2086 
2087                   IF (NOT match_found)
2088                   THEN
2089                      v_insertstring := v_insertstring || col_list(j) || ',';
2090                   END IF;
2091                END LOOP;
2092             END IF;
2093 
2094             v_insertstring := RTRIM(v_insertstring, ',');
2095             v_insertstring :=
2096                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2097             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2098             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2099             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; ';
2100             v_insertstring :=
2101                   v_insertstring
2102                || '  EXCEPTION WHEN OTHERS THEN '
2103                || ' '
2107                || ' '
2104                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2105                || ' '
2106                || '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'');'
2108                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2109 
2110             EXECUTE IMMEDIATE v_insertstring;
2111 
2112             COMMIT;
2113          EXCEPTION
2114             WHEN OTHERS
2115             THEN
2116                ROLLBACK;
2117                RAISE;
2118          END;
2119       END IF;
2120 
2121       COMMIT;
2122    END;
2123 
2124 ----------------------------------------------------
2125    PROCEDURE insert_into_table(
2126       table_name IN VARCHAR2
2127      ,primary_key1 IN VARCHAR2
2128      ,primary_key2 IN VARCHAR2
2129      ,db_link IN VARCHAR2
2130      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2131      ,plsql_table_name1 IN VARCHAR2
2132      ,plsql_table_name2 IN VARCHAR2
2133      ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2134      ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2135    )
2136    AS
2137       v_cursor NUMBER;
2138       v_numrows NUMBER;
2139       v_insertstring VARCHAR2(10000);
2140       current_column VARCHAR2(128);
2141       v_db_link VARCHAR2(128);
2142       v_last NUMBER;
2143 
2144       CURSOR col_name_cur(par_table_name VARCHAR2)
2145       IS
2146          SELECT column_name
2147                     FROM all_tab_columns
2148                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2149 
2150       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2151          INDEX BY BINARY_INTEGER;
2152 
2153       col_list col_name_table;
2154       i BINARY_INTEGER := 1;
2155       match_found BOOLEAN;
2156    BEGIN
2157       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2158       THEN
2159          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2160          cz_pb_mgr.v_insert_table_name := table_name;
2161 
2162          BEGIN
2163             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2164             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2165 
2166             OPEN col_name_cur(table_name);
2167 
2168             LOOP
2169                FETCH col_name_cur
2170                 INTO current_column;
2171 
2172                EXIT WHEN col_name_cur%NOTFOUND;
2173                col_list(i) := LTRIM(RTRIM(current_column));
2174                i := i + 1;
2175                v_insertstring := v_insertstring || current_column || ',';
2176             END LOOP;
2177 
2178             CLOSE col_name_cur;
2179 
2180             v_insertstring := RTRIM(v_insertstring, ',');
2181             v_insertstring := v_insertstring || ')';
2182             v_insertstring := v_insertstring || '  select  ';
2183 
2184             IF (col_list.COUNT > 0)
2185             THEN
2186                FOR j IN col_list.FIRST .. col_list.LAST
2187                LOOP
2188                   match_found := FALSE;
2189 
2190                   IF (plsql_table_list.COUNT > 0)
2191                   THEN
2192                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2193                      LOOP
2194                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2195                         THEN
2196                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2197                            match_found := TRUE;
2198                            EXIT;
2199                         END IF;
2200                      END LOOP;
2201                   END IF;
2202 
2203                   IF (NOT match_found)
2204                   THEN
2205                      v_insertstring := v_insertstring || col_list(j) || ',';
2206                   END IF;
2207                END LOOP;
2208             END IF;
2209 
2210             v_insertstring := RTRIM(v_insertstring, ',');
2211             v_insertstring :=
2212                     v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2213             v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2214             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2215             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; ';
2216             v_insertstring :=
2217                   v_insertstring
2218                || '  EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; WHEN OTHERS THEN'
2219                || ' '
2220                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2221                || ' '
2222                || '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'');'
2223                || ' '
2224                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2225 
2226             EXECUTE IMMEDIATE v_insertstring;
2230             WHEN OTHERS
2227 
2228             COMMIT;
2229          EXCEPTION
2231             THEN
2232                ROLLBACK;
2233                cz_pb_mgr.v_err_message := 'Insert into ' || table_name || ': ' || SQLERRM;
2234                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, table_name, SQLCODE);
2235                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2236                RAISE;
2237          END;
2238       END IF;
2239 
2240       COMMIT;
2241    END;
2242 
2243 -----------------------------------------------------
2244 -------procedure that inserts the records into target db
2245 -------of the table referred by the table_name
2246    PROCEDURE insert_into_table(
2247       table_name IN VARCHAR2
2248      ,primary_key IN VARCHAR2
2249      ,db_link IN VARCHAR2
2250      ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2251      ,plsql_table_name IN VARCHAR2
2252      ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
2253    )
2254    AS
2255       v_cursor NUMBER;
2256       v_numrows NUMBER;
2257       v_insertstring VARCHAR2(10000);
2258       current_column VARCHAR2(128);
2259       v_db_link VARCHAR2(128);
2260       v_last NUMBER;
2261 
2262       CURSOR col_name_cur(par_table_name VARCHAR2)
2263       IS
2264          SELECT column_name
2265                     FROM all_tab_columns
2266                    WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2267 
2268       TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2269          INDEX BY BINARY_INTEGER;
2270 
2271       col_list col_name_table;
2272       i BINARY_INTEGER := 1;
2273       match_found BOOLEAN;
2274    BEGIN
2275 
2276       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
2277       THEN
2278          v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2279          cz_pb_mgr.v_insert_table_name := table_name;
2280 
2281          BEGIN
2282             v_insertstring := 'BEGIN FOR  M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || '  LOOP BEGIN ';
2283             v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2284 
2285             OPEN col_name_cur(table_name);
2286 
2287             LOOP
2288                FETCH col_name_cur
2289                 INTO current_column;
2290 
2291                EXIT WHEN col_name_cur%NOTFOUND;
2292                col_list(i) := LTRIM(RTRIM(current_column));
2293                i := i + 1;
2294                v_insertstring := v_insertstring || current_column || ',';
2295             END LOOP;
2296 
2297             CLOSE col_name_cur;
2298 
2299             v_insertstring := RTRIM(v_insertstring, ',');
2300             v_insertstring := v_insertstring || ')';
2301             v_insertstring := v_insertstring || '  select  ';
2302 
2303             IF (col_list.COUNT > 0)
2304             THEN
2305                FOR j IN col_list.FIRST .. col_list.LAST
2306                LOOP
2307                   match_found := FALSE;
2308 
2309                   IF (plsql_table_list.COUNT > 0)
2310                   THEN
2311                      FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2312                      LOOP
2313                         IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2314                         THEN
2315                            v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2316                            match_found := TRUE;
2317                            EXIT;
2318                         END IF;
2319                      END LOOP;
2320                   END IF;
2321 
2322                   IF (NOT match_found)
2323                   THEN
2324                      v_insertstring := v_insertstring || col_list(j) || ',';
2325                   END IF;
2326                END LOOP;
2327             END IF;
2328 
2329             v_insertstring := RTRIM(v_insertstring, ',');
2330             v_insertstring :=
2331                       v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
2332             v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2333             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; ';
2334             v_insertstring :=
2335                   v_insertstring
2336                || '  EXCEPTION WHEN OTHERS THEN '
2337                || ' '
2338                || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2339                || ' '
2340                || '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'');'
2341                || ' '
2342                || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2343 
2344             EXECUTE IMMEDIATE v_insertstring;
2345             COMMIT;
2346          EXCEPTION
2347             WHEN OTHERS
2348             THEN
2349                ROLLBACK;
2350                RAISE;
2351          END;
2352       END IF;
2353       COMMIT;
2354    END;
2355 
2356 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2357 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2361 -- conversion) does not copy any template
2358 -----procedure that insert intl texts into cz_localized_texts
2359 -- set persistent_intl_text_id with new intl_text_id if texts are from templates
2360 -- and if the session is model migration. Note local model migration (via model
2362    PROCEDURE insert_intl_texts(p_intl_text_id_ref IN cz_pb_mgr.t_ref, p_intl_text IN VARCHAR2,
2363                                p_from_template IN BOOLEAN DEFAULT FALSE)
2364    IS
2365       plsql_table_list cz_pb_mgr.col_plsql_table_list;
2366       v_cz_intl_text_new_tbl cz_pb_mgr.t_ref;
2367       v_cz_intl_text_old_tbl cz_pb_mgr.t_ref;
2368       l_ui_def_id_tbl cz_pb_mgr.t_ref;
2369       l_model_id_tbl cz_pb_mgr.t_ref;
2370       rec_count PLS_INTEGER := 0;
2371    BEGIN
2372       IF (p_intl_text_id_ref.COUNT > 0)
2373       THEN
2374          cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2375          cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2376          cz_pb_mgr.v_intl_text_model_tbl.DELETE;
2377          cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
2378 
2379          FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST
2380          LOOP
2381             IF (p_intl_text_id_ref(c) IS NOT NULL)
2382             THEN
2383                v_cz_intl_text_new_tbl.DELETE;
2384                v_cz_intl_text_old_tbl.DELETE;
2385                l_ui_def_id_tbl.DELETE;
2386                l_model_id_tbl.DELETE;
2387 
2388                BEGIN
2389                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2390                                                     , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2391                                                     ,cz_pb_mgr.v_oraclesequenceincr
2392                                                     )
2393                         ,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2394                   BULK COLLECT INTO v_cz_intl_text_new_tbl
2395                         ,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2396                     FROM cz_intl_texts
2397                    WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2398                EXCEPTION
2399                   WHEN NO_DATA_FOUND
2400                   THEN
2401                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
2402                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2403                   WHEN OTHERS
2404                   THEN
2405                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
2406                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2407                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2408                END;
2409 
2410                rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
2411 
2412                IF (v_cz_intl_text_new_tbl.COUNT > 0)
2413                THEN
2414                   FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
2415                   LOOP
2416 
2417                      --Bug #5441580. This is the case of translatable properties, the original values will
2418                      --have model_id = 0, we need to redefine them to the target model's model_id.
2419 
2420                      IF(p_intl_text = 'prop num value of cz prop vals')THEN
2421 
2422                        l_model_id_tbl(k) := cz_pb_mgr.h_devl_prj_by_intl_text(v_cz_intl_text_old_tbl(k));
2423                      END IF;
2424 
2425                      IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
2426                      THEN
2427                         rec_count := rec_count + 1;
2428                         cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
2429                         cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
2430                         cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
2431                         cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
2432                         cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
2433                      END IF;
2434                   END LOOP;
2435                END IF;
2436             END IF;
2437          END LOOP;
2438 
2439          IF p_intl_text <> 'prop num value of cz prop vals' THEN
2440            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');
2441          END IF;
2442          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');
2443 
2444          IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
2445          THEN
2446             --------populate plsql_table_list for intl texts
2447             plsql_table_list.DELETE;
2448             rec_count := 1;
2449             plsql_table_list(rec_count).col_name := 'intl_text_id';
2450             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_intl_text_new_ref';
2451             rec_count := rec_count + 1;
2452 
2453             IF (p_from_template AND CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
2454               plsql_table_list(rec_count).col_name   := 'persistent_intl_text_id';
2455               plsql_table_list(rec_count).table_name := 'CZ_PB_MGR.v_cz_intl_text_new_ref';
2456               rec_count := rec_count + 1;
2457             END IF;
2458 
2459             plsql_table_list(rec_count).col_name := 'model_id';
2460             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_model_tbl';
2464             -----------insert into cz_localized_texts
2461             rec_count := rec_count + 1;
2462             plsql_table_list(rec_count).col_name := 'ui_def_id';
2463             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_ui_tbl';
2465             insert_into_table('cz_localized_texts'
2466                              ,'intl_text_id'
2467                              ,cz_pb_mgr.v_db_link
2468                              ,plsql_table_list
2469                              ,'cz_pb_mgr.v_cz_intl_text_old_ref'
2470                              ,cz_pb_mgr.v_cz_intl_text_old_ref
2471                              );
2472             update_localized_texts;
2473             cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2474             cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2475             v_cz_intl_text_new_tbl.DELETE;
2476             v_cz_intl_text_old_tbl.DELETE;
2477          END IF;
2478       END IF;
2479    EXCEPTION
2480       WHEN OTHERS
2481       THEN
2482          cz_pb_mgr.v_err_message := 'Insert into intl texts for: ' || p_intl_text || ' : ' || SQLERRM;
2483          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLTEXTS', SQLCODE);
2484          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2485          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
2486          RAISE;
2487    END insert_intl_texts;
2488 
2489 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2490    PROCEDURE refresh_ui_actions(p_global_tmpl_tbl cz_pb_mgr.t_ref)
2491    IS
2492       l_update_str VARCHAR2(2000);
2493    BEGIN
2494       IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.COUNT > 0)
2495       THEN
2496          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
2497          LOOP
2498             IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(i) = 0)
2499             THEN
2500                l_update_str :=
2501                      'UPDATE cz_ui_actions'
2502                   || cz_pb_mgr.v_db_link
2503                   || '  t'
2504                   || ' '
2505                   || 'SET    (CONTEXT_COMPONENT_ID,RENDER_CONDITION_ID,UI_ACTION_TYPE,'
2506                   || ' '
2507                   || 'TARGET_UI_DEF_ID,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
2508                   || ' '
2509                   || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,TARGET_EXPL_NODE_ID,'
2510                   || ' '
2511                   || 'URL_PROPERTY_ID,TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
2512                   || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
2513                   || 'PROCESSING_PAGE_TEMPL_ID,PROC_PAGE_TEMPL_UI_DEF_ID,'
2514                   || 'PROCESSING_CAPTION_TEXT_ID,PAGE_TITLE_TEXT_ID,MAIN_MESSAGE_TEXT_ID) '
2515                   || '='
2516                   || ' '
2517                   || '( SELECT :1,:2,UI_ACTION_TYPE,:3,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
2518                   || ' '
2519                   || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,:4,URL_PROPERTY_ID,'
2520                   || 'TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
2521                   || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
2522                   || ':5,:6,:7,:8,:9 '
2523                   || 'FROM cz_ui_actions WHERE  ui_def_id = 0'
2524                   || ' '
2525                   || 'AND ui_action_id = :10 )'
2526                   || ' '
2527                   || 'WHERE t.ui_def_id = 1'
2528                   || ' '
2529                   || 'AND t.ui_action_id = :11';
2530 
2531                EXECUTE IMMEDIATE l_update_str
2532                            USING cz_pb_mgr.g_ui_actns_ctx_comp_tbl(i)
2533                                 ,cz_pb_mgr.g_ui_actns_ren_cond_tbl(i)
2534                                 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref(i)
2535                                 ,cz_pb_mgr.g_ui_actns_tgtexpl_ref(i)
2536                                 ,cz_pb_mgr.g_uiact_prcpg_templ_tbl(i)
2537                                 ,cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(i)
2538                                 ,cz_pb_mgr.g_uiact_prc_caption_tbl(i)
2539                                 ,cz_pb_mgr.g_uiact_pg_title_tbl(i)
2540                                 ,cz_pb_mgr.g_uiact_main_msg_tbl(i)
2541                                 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(i)
2542                                 ,cz_pb_mgr.g_ui_actns_ui_act_id_ref(i);
2543             END IF;
2544          END LOOP;
2545       END IF;
2546 
2547       COMMIT;
2548    EXCEPTION
2549       WHEN OTHERS
2550       THEN
2551          RAISE;
2552    END refresh_ui_actions;
2553 
2554 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2555    PROCEDURE refresh_global_templates(p_global_tmpl_tbl cz_pb_mgr.t_ref)
2556    IS
2557       l_update_str VARCHAR2(2000);
2558    BEGIN
2559       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
2560       THEN
2561          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
2562          LOOP
2563             IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
2564             THEN
2565                l_update_str :=
2566                      'UPDATE cz_ui_templates'
2567                   || cz_pb_mgr.v_db_link
2568                   || '  t'
2569                   || ' '
2570                   || 'SET    (TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,BUTTON_BAR_TEMPLATE_ID'
2571                   || ' '
2572                   || ',MESSAGE_TYPE,MAIN_MESSAGE_ID,TITLE_ID,LAYOUT_UI_STYLE,ROOT_REGION_TYPE'
2573                   || ' '
2574                   || ',BUTTON_BAR_TEMPL_UIDEF_ID,ROOT_ELEMENT_SIGNATURE_ID,TEMPLATE_USAGE'
2578                   || '( SELECT TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,:1,MESSAGE_TYPE,'
2575                   || ' '
2576                   || ') ='
2577                   || ' '
2579                   || ' '
2580                   || ':2,:3,LAYOUT_UI_STYLE,ROOT_REGION_TYPE,:4,ROOT_ELEMENT_SIGNATURE_ID,'
2581                   || ' '
2582                   || 'TEMPLATE_USAGE FROM cz_ui_templates WHERE  ui_def_id = 0'
2583                   || ' '
2584                   || 'AND template_id = :5 )'
2585                   || ' '
2586                   || 'WHERE t.ui_def_id = 1'
2587                   || ' '
2588                   || 'AND t.template_id = :6';
2589 
2590                EXECUTE IMMEDIATE l_update_str
2591                            USING cz_pb_mgr.g_ui_templates_button_tbl(i)
2592                                 ,cz_pb_mgr.g_ui_templates_msg_id_ref(i)
2593                                 ,cz_pb_mgr.g_ui_templates_title_ref(i)
2594                                 ,cz_pb_mgr.g_ui_templates_but_uidef_id(i)
2595                                 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
2596                                 ,cz_pb_mgr.g_ui_templates_new_temp_id_ref(i);
2597             END IF;
2598          END LOOP;
2599       END IF;
2600 
2601       COMMIT;
2602    EXCEPTION
2603       WHEN OTHERS
2604       THEN
2605          RAISE;
2606    END refresh_global_templates;
2607 
2608 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2609 ----collect all os style UI(s)
2610    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)
2611    AS
2612       v_ui_def_count NUMBER := 0;
2613       rec_count NUMBER := 0;
2614       v_src_uis_tbl cz_pb_mgr.t_ref;
2615       l_export_model_id cz_devl_projects.devl_project_id%TYPE;
2616       l_menu_caption_rule_tbl cz_pb_mgr.t_ref;
2617       l_page_caption_rule_tbl cz_pb_mgr.t_ref;
2618       l_from_mt_id_tbl cz_pb_mgr.t_ref;
2619    BEGIN
2620       IF (p_src_models.COUNT > 0)
2621       THEN
2622          x_oa_ui_def_tbl.DELETE;
2623          l_menu_caption_rule_tbl.DELETE;
2624          l_page_caption_rule_tbl.DELETE;
2625 
2626          FOR i IN p_src_models.FIRST .. p_src_models.LAST
2627          LOOP
2628             l_export_model_id := p_src_models(i);
2629             v_src_uis_tbl.DELETE;
2630 
2631             BEGIN
2632                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
2633                BULK COLLECT INTO v_src_uis_tbl, l_menu_caption_rule_tbl, l_page_caption_rule_tbl, l_from_mt_id_tbl
2634                  FROM cz_ui_defs
2635                 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';
2636             EXCEPTION
2637                WHEN NO_DATA_FOUND
2638                THEN
2639                   -----if there are no UI do not care
2640                   NULL;
2641                WHEN OTHERS
2642                THEN
2643                   RAISE;
2644             END;
2645 
2646             IF (v_src_uis_tbl.COUNT > 0)
2647             THEN
2648                FOR i IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
2649                LOOP
2650                   v_ui_def_count := x_oa_ui_def_ref.COUNT + 1;
2651                   rec_count := x_oa_ui_def_tbl.COUNT + 1;
2652                   v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(i);
2653                   x_oa_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(i);
2654                   x_oa_ui_def_tbl(rec_count) := v_src_uis_tbl(i);
2655                   cz_pb_mgr.v_ui_defs_mcpt_rule_ref(v_ui_def_count) := l_menu_caption_rule_tbl(i);
2656                   cz_pb_mgr.v_ui_defs_pcpt_rule_ref(v_ui_def_count) := l_page_caption_rule_tbl(i);
2657                END LOOP;
2658             END IF;
2659          END LOOP;                                     /* end loop of FOR I IN p_src_models.FIRST */
2660       END IF;                                          /* end if of (p_src_models.COUNT > 0) */
2661    EXCEPTION
2662       WHEN OTHERS
2663       THEN
2664          RAISE;
2665    END get_oa_uis;
2666 
2667 -------------------
2668    FUNCTION createelement(p_namespace IN OUT NOCOPY VARCHAR2, p_tagname IN VARCHAR2)
2669       RETURN jdr_docbuilder.ELEMENT
2670    IS
2671       l_child_element jdr_docbuilder.ELEMENT;
2672    BEGIN
2673       IF (p_namespace IS NULL)
2674       THEN
2675          p_namespace := 'jrad:';
2676       END IF;
2677 
2678       l_child_element := jdr_docbuilder.createelement(p_namespace, p_tagname);
2679       RETURN l_child_element;
2680    EXCEPTION
2681       WHEN OTHERS
2682       THEN
2683          RAISE;
2684    END;
2685 
2686 ----------------------------------------------
2690       l_temp_attr3_name VARCHAR2(250);
2687    PROCEDURE synch_user_attribute(attrval IN OUT NOCOPY VARCHAR2)
2688    AS
2689       l_new_persistentid NUMBER;
2691       l_attr3_name VARCHAR2(250);
2692       l_attr3_name_value_new VARCHAR2(250);
2693       l_attr3_name_value_old VARCHAR2(250);
2694       l_equal_pos NUMBER;
2695       l_pipe_pos NUMBER;
2696       l_cnt NUMBER;
2697       l_pipe VARCHAR2(1);
2698       l_old_id VARCHAR2(250);
2699       l_last_count NUMBER;
2700    BEGIN
2701 -- Check for user:attribute1 or user:attribute2 or user:attribute3
2702 --1. loop till all the name-value pairs are replaced with the new persistent ids values.
2703 --2. get the value, check if there is any entry into the global array
2704 --3. replace the value with the new one.
2705       l_temp_attr3_name := attrval;
2706       l_cnt := 0;
2707 
2708       WHILE(l_temp_attr3_name IS NOT NULL)
2709       LOOP                                                                                    -- check if there are '|' at the begining of the string
2710          IF (LENGTH(l_temp_attr3_name) = l_last_count)
2711          THEN
2712             EXIT;
2713          ELSE
2714             l_last_count := LENGTH(l_temp_attr3_name);
2715          END IF;
2716 
2717          l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
2718 
2719          WHILE(l_pipe = '|')
2720          LOOP
2721             l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
2722             --if ( l_pipe = '|' ) then
2723             -- trim  to remove '|' from the start till no '|' are found
2724             l_temp_attr3_name := SUBSTR(l_temp_attr3_name, 2, LENGTH(l_temp_attr3_name));
2725          --continue;
2726          END LOOP;
2727 
2728          l_equal_pos := INSTR(l_temp_attr3_name, '=');
2729          l_attr3_name := SUBSTR(l_temp_attr3_name, l_cnt, l_equal_pos - 1);
2730          l_pipe_pos := INSTR(l_temp_attr3_name, '|');
2731 
2732          IF (l_pipe_pos = 0)
2733          THEN
2734             l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1);
2735          ELSE
2736             l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1,(l_pipe_pos - l_equal_pos) - 1);
2737             l_attr3_name_value_old := SUBSTR(l_temp_attr3_name, 0, l_pipe_pos - 1);
2738          END IF;
2739 
2740          BEGIN
2741             IF (l_attr3_name = 'actionId')
2742             THEN
2743                IF (cz_pb_mgr.g_ui_actions_id_idx_ref.EXISTS(l_old_id))
2744                THEN
2745                   l_new_persistentid := cz_pb_mgr.g_ui_actions_id_idx_ref(l_old_id);
2746                END IF;
2747             ELSIF(l_attr3_name IN
2748                      ('displayCondnId'
2749                      ,'enabledCondnId'
2750                      ,'captionRuleId'
2751                      ,'colDisplayCondnId'
2752                      ,'liDisplayCondnId'
2753                      ,'rowDisplayCondnId'
2754                      ,'rowEnabledCondnId'
2755                      ,'rolloverRuleId'
2756                      ,'tableSummaryRuleId'
2757                      ,'switcherCondnId'
2758                      )
2759                  )
2760             THEN
2761                IF (cz_pb_mgr.v_cz_rules_rule_id_idx_ref.EXISTS(l_old_id))
2762                THEN
2763                   l_new_persistentid := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_id);
2764                END IF;
2765             ELSIF(l_attr3_name IN
2766                      ('urlIntlTextId', 'captionIntlTextId', 'rolloverIntlTextId', 'tableSummaryIntlTextId', 'cellIntlTextId', 'imageSourceIntlTextId')
2767                  )
2768             THEN
2769                IF (cz_pb_mgr.v_cz_intl_text_idx_ref.EXISTS(l_old_id))
2770                THEN
2771                   l_new_persistentid := cz_pb_mgr.v_cz_intl_text_idx_ref(l_old_id);
2772                END IF;
2773             END IF;
2774 
2775             IF (l_new_persistentid IS NOT NULL)
2776             THEN
2780             END IF;
2777                l_attr3_name_value_new := REPLACE(l_attr3_name_value_old, l_old_id, l_new_persistentid);
2778                attrval := REPLACE(attrval, l_attr3_name_value_old, l_attr3_name_value_new);
2779                l_new_persistentid := NULL;
2781          EXCEPTION
2782             WHEN NO_DATA_FOUND
2783             THEN
2784                -- do nothing
2785                -- since , all the ref tables will hold only non-seeded ids,
2786                -- the only time we will fall in this exception is when we try to look up seeded ids
2787                l_new_persistentid := NULL;
2788             WHEN OTHERS
2789             THEN
2790                RAISE;
2791          END;
2792 
2793          IF (l_pipe_pos = 0)
2794          THEN
2795             l_temp_attr3_name := NULL;
2796          ELSE
2797             l_temp_attr3_name := SUBSTR(l_temp_attr3_name, l_pipe_pos + 1, LENGTH(l_temp_attr3_name));
2798          END IF;
2799       END LOOP;
2800    END;
2801 
2802 -----------------------------------------------------
2803    PROCEDURE exploretree(
2804       p_jrad_parent_element IN jdr_docbuilder.ELEMENT
2805      ,p_dom_parent_element IN xmldom.domnode
2806      ,p_grouping_tag IN VARCHAR2
2807      ,p_link_name IN VARCHAR2
2808    )
2809    IS
2810       l_child_nodes xmldom.domnodelist;
2811       l_child_node xmldom.domnode;
2812       l_parent_xml_node xmldom.domnode;
2813       l_child_count NUMBER := 0;
2814       l_namespace VARCHAR2(255);
2815       l_tagname VARCHAR2(255);
2816       l_tag_name VARCHAR2(255);
2817       l_attributes xmldom.domnamednodemap;
2818       l_attrib_node xmldom.domnode;
2819       l_attrib_count NUMBER := 0;
2820       attrname VARCHAR2(255);
2821       attrval VARCHAR2(4000);
2822       l_groupingns VARCHAR2(255);
2823       l_groupingtagname VARCHAR2(255);
2824       l_grouping_tag VARCHAR2(255);
2825       l_parent_element jdr_docbuilder.ELEMENT;
2826       l_child_element jdr_docbuilder.ELEMENT;
2827       l_ampers VARCHAR2(1) := fnd_global.local_chr(38);
2828       l_parent_tag_name VARCHAR2(255);
2829    BEGIN
2830       l_child_nodes := xmldom.getchildnodes(p_dom_parent_element);
2831       l_child_count := xmldom.getlength(l_child_nodes);
2832       l_parent_element := p_jrad_parent_element;
2833 
2834       IF (l_child_count > 0)
2835       THEN
2836          FOR childcount IN 0 .. l_child_count - 1
2837          LOOP
2838             l_child_node := xmldom.item(l_child_nodes, childcount);
2839             l_grouping_tag := '';
2840             l_attributes := xmldom.getattributes(l_child_node);
2841             l_attrib_count := xmldom.getlength(l_attributes);
2842             l_tag_name := xmldom.getnodename(l_child_node);
2843             l_parent_xml_node := xmldom.getparentnode(l_child_node);
2844 
2845             IF NOT(xmldom.isnull(l_parent_xml_node))
2846             THEN
2847                l_parent_tag_name := xmldom.getnodename(l_parent_xml_node);
2848             END IF;
2849 
2850             IF ((l_attrib_count = 0) AND(l_tag_name NOT IN('ui:firePartialAction')))
2851             THEN
2852                l_grouping_tag := l_tag_name;
2853             END IF;
2854 
2855             IF (p_grouping_tag IS NOT NULL)
2856             THEN
2857                l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
2858                l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
2859                l_child_element := createelement(l_namespace, l_tagname);
2860                l_attributes := xmldom.getattributes(l_child_node);
2861 
2862                IF (l_attrib_count > 0)
2863                THEN
2864                   FOR attrcount IN 0 .. l_attrib_count - 1
2865                   LOOP
2866                      l_attrib_node := xmldom.item(l_attributes, attrcount);
2867                      attrname := xmldom.getnodename(l_attrib_node);
2868                      attrval := xmldom.getnodevalue(l_attrib_node);
2869                      attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
2873                      attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
2870                      attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
2871                      attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
2872                      attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
2874                      jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
2875                   END LOOP;
2876                END IF;
2877 
2878                l_groupingns := SUBSTR(p_grouping_tag, 1, INSTR(p_grouping_tag, ':'));
2879                l_groupingtagname := SUBSTR(p_grouping_tag, INSTR(p_grouping_tag, ':') + 1);
2880 
2881                IF (l_groupingns IS NULL)
2882                THEN
2883                   l_groupingns := 'jrad:';
2884                END IF;
2885 
2886                jdr_docbuilder.addchild(p_jrad_parent_element, l_groupingns, l_groupingtagname, l_child_element);
2887                exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
2888             ELSE
2889                l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
2890                l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
2891                l_child_element := createelement(l_namespace, l_tagname);
2892 
2893                IF (l_attrib_count > 0)
2894                THEN
2895                   FOR attrcount IN 0 .. l_attrib_count - 1
2896                   LOOP
2897                      l_attrib_node := xmldom.item(l_attributes, attrcount);
2898                      attrname := xmldom.getnodename(l_attrib_node);
2899                      attrval := xmldom.getnodevalue(l_attrib_node);
2900                      attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
2901                      attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
2902                      attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
2903                      attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
2904                      attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
2905                      jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
2906                   END LOOP;
2907                END IF;
2908 
2909                IF (l_grouping_tag IS NULL)
2910                THEN
2911                   jdr_docbuilder.addchild(p_jrad_parent_element, l_child_element);
2912                   exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
2913                ELSE
2914                   exploretree(p_jrad_parent_element, l_child_node, l_grouping_tag, p_link_name);
2915                END IF;
2916             END IF;
2917          END LOOP;
2918       END IF;
2919    EXCEPTION
2920       WHEN OTHERS
2921       THEN
2922          RAISE;
2923    END exploretree;
2924 
2925 ----------------------------------------------------
2926 -- ancestorNode="docname.ancestorid", where docname normally pointing to itself,
2927 --                               ancestor being immediate parent or higher level's
2928 -- e.g. /oracle/apps/cz/runtime/oa/webui/templates/summary/28501_170._czc233440-xxx
2929 --      /oracle/apps/cz/runtime/oa/webui/regions/ui44563/Page_44563_1.16496045-yyy
2930 PROCEDURE handle_ancestorNode(p_old_doc_name IN VARCHAR2, p_new_doc_name IN VARCHAR2, p_chunk IN OUT NOCOPY LONG)
2931 IS
2932 BEGIN
2933   IF instr(p_chunk, 'ancestorNode="' || p_old_doc_name || '.') > 0 THEN
2934     p_chunk := replace(p_chunk, 'ancestorNode="' || p_old_doc_name || '.',
2935                                 'ancestorNode="' || p_new_doc_name || '.');
2936   END IF;
2937 END handle_ancestorNode;
2938 
2939 ----------------------------------------------------
2940 --There are some issues with having the p_chunk
2941 --parameter on replace_extends as a CLOB.  For some reason, the getLength on a CLOB for certain
2942 --JRAD documents was returning a 0, and UI copy procedure was failing.
2946 PROCEDURE replace_extends(p_chunk IN OUT NOCOPY LONG)
2943 --Retaining this parameter as LONG and changing the places where we were
2944 --calling the procedure to LONG so we be consistent everywhere
2945 --See Bug 4930937 for symptoms of the bug.
2947 IS
2948 BEGIN
2949   IF (cz_pb_mgr.g_ui_templates_jrad_old_ref.COUNT > 0) THEN
2950     FOR i IN cz_pb_mgr.g_ui_templates_jrad_old_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_old_ref.LAST
2951     LOOP
2952       IF (INSTR(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"') > 0) THEN
2953         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) || '"');
2954       END IF;
2955     END LOOP;
2956   END IF;
2957 
2958   IF cz_pb_mgr.g_tmpl_jrad_old_tbl.COUNT > 0 THEN
2959     FOR i IN cz_pb_mgr.g_tmpl_jrad_old_tbl.FIRST .. cz_pb_mgr.g_tmpl_jrad_old_tbl.LAST LOOP
2960       IF INSTR(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"') > 0 THEN
2961         p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"', cz_pb_mgr.g_tmpl_jrad_new_tbl(i) || '"');
2962       END IF;
2963     END LOOP;
2964   END IF;
2965 END replace_extends;
2966 
2967 ----------------------------------------------------
2968    PROCEDURE collect_chunks(
2969       p_document_name IN VARCHAR2
2970      ,p_link_name IN VARCHAR2
2971      ,x_return_status OUT NOCOPY VARCHAR2
2972      ,x_msg_count OUT NOCOPY NUMBER
2973      ,x_msg_data OUT NOCOPY VARCHAR2
2974    )
2975    IS
2976       l_length BINARY_INTEGER;
2977       l_buffer VARCHAR2(32767);
2978       firstchunk VARCHAR2(32767);
2979       document_is_null EXCEPTION;
2980       l_seq_nbr NUMBER := 0;
2981 
2982       TYPE chunk_record IS RECORD(
2983          jrad_doc VARCHAR2(255)
2984         ,seq_nbr NUMBER
2985         ,xml_chunk VARCHAR2(32767)
2986       );
2987 
2988       TYPE chunk_record_tbl IS TABLE OF chunk_record
2989          INDEX BY BINARY_INTEGER;
2990 
2991       l_chunk_tbl chunk_record_tbl;
2992       l_exportfinished BOOLEAN;
2993    BEGIN
2994       pbdebug := 22021;
2995       x_return_status := FND_API.G_RET_STS_SUCCESS;
2996       x_msg_count := 0;
2997       x_msg_data := '';
2998       jdr_docbuilder.REFRESH;
2999 
3000       IF (p_document_name IS NULL) THEN
3001          RAISE document_is_null;
3002       END IF;
3003 
3004       firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3005 
3006       IF (firstchunk IS NULL) THEN
3007          RAISE document_is_null;
3008       END IF;
3009 
3010       l_buffer := LTRIM(RTRIM(firstchunk));
3011 
3012       IF (l_buffer IS NOT NULL) THEN
3013          l_seq_nbr := l_seq_nbr + 1;
3014          l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3015          l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3016          l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3017       END IF;
3018 
3019       LOOP
3020          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3021          l_buffer := LTRIM(RTRIM(l_buffer));
3022          EXIT WHEN l_buffer IS NULL;
3023 
3024          IF (l_buffer IS NOT NULL) THEN
3025             l_seq_nbr := l_seq_nbr + 1;
3026             l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3027             l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3028             l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3029          END IF;
3030       END LOOP;
3031 
3032       IF (l_chunk_tbl.COUNT > 0) THEN
3033          FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3034          LOOP
3035             EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values (:1,:2,:3)'
3036                         USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3037          END LOOP;
3038       END IF;
3039 
3040       COMMIT;
3041       jdr_docbuilder.REFRESH;
3042    EXCEPTION
3043       WHEN document_is_null THEN
3044          x_return_status := FND_API.G_RET_STS_ERROR;
3045          x_msg_count := 1;
3046          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3047          RAISE;
3048       WHEN OTHERS THEN
3049          x_return_status := FND_API.G_RET_STS_ERROR;
3050          x_msg_count := 1;
3051          x_msg_data := SQLERRM;
3052          RAISE;
3053    END collect_chunks;
3054 
3055 ----------------------------------------------------
3056    -- NOTE: p_document_type of NULL (default) represents a UI content template document.
3057    --       To collect JRAD chunks for UI pages, UI_PAGE should be passed as input value.
3058    PROCEDURE collect_chunks(
3059       p_document_name IN VARCHAR2
3060      ,p_new_document_name IN VARCHAR2
3061      ,p_link_name IN VARCHAR2
3062      ,x_return_status OUT NOCOPY VARCHAR2
3063      ,x_msg_count OUT NOCOPY NUMBER
3064      ,x_msg_data OUT NOCOPY VARCHAR2
3065      ,p_document_type IN VARCHAR2 DEFAULT NULL
3066    )
3067    IS
3068       amt BINARY_INTEGER := 32767;
3069       l_length BINARY_INTEGER;
3070       l_offset BINARY_INTEGER := 1;
3071       l_buffer VARCHAR2(32767);
3072       firstchunk VARCHAR2(32767);
3073       document_is_null EXCEPTION;
3074       l_seq_nbr NUMBER := 0;
3075       l_old_ui_def VARCHAR2(200);
3076       l_new_ui_def VARCHAR2(300);
3077       l_lob CLOB;
3078       l_lob_temp CLOB;
3079       p xmlparser.parser;
3080       doc xmldom.domdocument;
3081       nl xmldom.domnodelist;
3082       one_node xmldom.domnode;
3086       n xmldom.DOMNode;
3083       one_element xmldom.domelement;
3084       l_value VARCHAR2(32767);
3085       nodeMap xmldom.DOMNamedNodeMap;
3087       attrname varchar2(100);
3088       len2 NUMBER;
3089 
3090       TYPE chunk_record IS RECORD(
3091          jrad_doc VARCHAR2(255)
3092         ,seq_nbr NUMBER
3093         ,xml_chunk VARCHAR2(32767)
3094       );
3095 
3096       TYPE chunk_record_tbl IS TABLE OF chunk_record
3097          INDEX BY BINARY_INTEGER;
3098 
3099       l_chunk_tbl chunk_record_tbl;
3100       l_exportfinished BOOLEAN;
3101    BEGIN
3102       pbdebug := 22022;
3103       x_return_status := FND_API.G_RET_STS_SUCCESS;
3104       x_msg_count := 0;
3105       x_msg_data := '';
3106       jdr_docbuilder.REFRESH;
3107 
3108       IF (p_document_name IS NULL) THEN
3109          RAISE document_is_null;
3110       END IF;
3111 
3112       firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3113 
3114       IF (firstchunk IS NULL) THEN
3115          RAISE document_is_null;
3116       END IF;
3117 
3118       l_buffer := LTRIM(RTRIM(firstchunk));
3119 
3120       IF (l_buffer IS NOT NULL) THEN
3121          l_seq_nbr := l_seq_nbr + 1;
3122          l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3123          l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3124          l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3125       END IF;
3126 
3127       LOOP
3128          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3129          l_buffer := LTRIM(RTRIM(l_buffer));
3130          EXIT WHEN l_buffer IS NULL;
3131 
3132          IF (l_buffer IS NOT NULL) THEN
3133             l_seq_nbr := l_seq_nbr + 1;
3134             l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3135             l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3136             l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3137          END IF;
3138       END LOOP;
3139 
3140       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3141          IF (l_chunk_tbl.COUNT > 0) THEN
3142             SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3143             SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3144 
3145             FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3146             LOOP
3147                -- collect the entire document in the CLOB
3148                l_length := LENGTH(l_chunk_tbl(i).xml_chunk);
3149                SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk_tbl(i).xml_chunk);
3150             END LOOP;
3151 
3152             -- parse the document for user:attribute3
3153             -- call synch_user_attribute
3154             l_length := SYS.DBMS_LOB.getlength(l_lob);
3155             p := xmlparser.newparser;
3156             xmlparser.parseclob(p, l_lob);
3157             SYS.DBMS_LOB.CLOSE(l_lob);
3158             SYS.DBMS_LOB.freetemporary(l_lob);
3159             doc := xmlparser.getdocument(p);
3160             nl := xmldom.getelementsbytagname(doc, '*');
3161 
3162             IF (p_document_type IS  NULL )THEN
3163 		    FOR node_index IN 0 .. xmldom.getlength(nl) - 1
3164 		    LOOP
3165 		       one_node := xmldom.item(nl, node_index);
3166 		       one_element := xmldom.makeelement(one_node);
3167 		       --node_attr := xmldom.getattributenode(one_element, 'user:attribute3');
3168 		       -- This is a workaround for bug 5211850 till the API xmldom.getattributenode is fixed
3169 		       -- get all attributes of element
3170 		       nodeMap := xmldom.getAttributes(one_node);
3171 
3172 		       IF (xmldom.isNull(nodeMap) = FALSE) THEN
3173 			  len2 := xmldom.getLength(nodeMap);
3174 			  -- loop through attributes
3175 			  FOR i IN 0..len2-1 LOOP
3176 			      n := xmldom.item(nodeMap, i);
3177 			      attrname := xmldom.getNodeName(n);
3178 			      IF(attrname='user:attribute3' ) THEN
3179 				 l_value := xmldom.getNodeValue(n);
3180 				 EXIT;
3181 			      END IF;
3182 			  END LOOP;
3183 		       END IF;
3184 
3185 		       IF (l_value IS NOT NULL) THEN
3186 			     synch_user_attribute(l_value);
3187 			     xmldom.setattribute(one_element, 'user:attribute3', l_value);
3188 			     l_value:=NULL;
3189 		       END IF;
3190 		    END LOOP;
3191             END IF;
3192             -- Break the document to insert into the  cz_jrad_chunks
3193             SYS.DBMS_LOB.createtemporary(l_lob_temp, TRUE, DBMS_LOB.SESSION);
3194             SYS.DBMS_LOB.OPEN(l_lob_temp, DBMS_LOB.lob_readwrite);
3195             xmldom.writetoclob(doc, l_lob_temp);
3196 
3197             FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3198             LOOP
3199                SYS.DBMS_LOB.READ(l_lob_temp, amt, l_offset, l_buffer);
3200                l_chunk_tbl(i).xml_chunk := l_buffer;
3201                l_offset := l_offset + amt;
3202                l_buffer := NULL;
3203             END LOOP;
3204 
3205             SYS.DBMS_LOB.CLOSE(l_lob_temp);
3206             SYS.DBMS_LOB.freetemporary(l_lob_temp);
3207             xmlparser.freeparser(p);
3208             xmldom.freeDocument(doc);
3209          END IF;
3210       END IF;
3211 
3212       IF (l_chunk_tbl.COUNT > 0) THEN
3213          FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3214          LOOP
3215             replace_extends(l_chunk_tbl(i).xml_chunk);
3216             handle_ancestorNode(p_document_name, p_new_document_name, l_chunk_tbl(i).xml_chunk);
3220       END IF;
3217             EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values (:1,:2,:3)'
3218                         USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3219          END LOOP;
3221 
3222       COMMIT;
3223       jdr_docbuilder.REFRESH;
3224    EXCEPTION
3225       WHEN document_is_null THEN
3226          x_return_status := FND_API.G_RET_STS_ERROR;
3227          x_msg_count := 1;
3228          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3229          RAISE;
3230       WHEN OTHERS THEN
3231          x_return_status := FND_API.G_RET_STS_ERROR;
3232          x_msg_count := 1;
3233          x_msg_data := SQLERRM;
3234          RAISE;
3235    END collect_chunks;
3236 
3237 ------------------------------------
3238    PROCEDURE insert_jrad_docs
3239    IS
3240       PRAGMA AUTONOMOUS_TRANSACTION;
3241 
3242       CURSOR jrad_docs_cur
3243       IS
3244          SELECT DISTINCT jrad_doc
3245                     FROM cz_jrad_chunks;
3246 
3247       CURSOR jrad_chunks_cur(p_jrad_doc VARCHAR2)
3248       IS
3249          SELECT   xml_chunk
3250              FROM cz_jrad_chunks
3251             WHERE jrad_doc = p_jrad_doc
3252          ORDER BY seq_nbr;
3253 
3254       l_jrad_doc VARCHAR2(255);
3255       l_chunk VARCHAR2(32767);
3256       l_lob CLOB;
3257       l_offset PLS_INTEGER := 1;
3258       l_length BINARY_INTEGER;
3259       l_doc_id NUMBER;
3260       p xmlparser.parser;
3261       doc xmldom.domdocument;
3262       nl xmldom.domnodelist;
3263       len NUMBER;
3264       n xmldom.domnode;
3265       top_node xmldom.domnode;
3266       l_parent_node xmldom.domnode;
3267       v_ns VARCHAR2(255);
3268       v_el VARCHAR2(255);
3269       len1 NUMBER;
3270       len2 NUMBER;
3271       nnm xmldom.domnamednodemap;
3272       attrname VARCHAR2(255);
3273       attrval VARCHAR2(255);
3274       newattrname VARCHAR2(255);
3275       name_space VARCHAR2(255);
3276       tag_name VARCHAR2(255);
3277       l_doc jdr_docbuilder.document;
3278       top_element jdr_docbuilder.ELEMENT;
3279       g_document jdr_docbuilder.document;
3280       l_new_document jdr_docbuilder.document;
3281       jrad_save_status PLS_INTEGER;
3282       document_is_null EXCEPTION;
3283       l_msg VARCHAR2(2000);
3284 
3285       TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3286 
3287       g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3288    BEGIN
3289       pbdebug := 22024;
3290 
3291       OPEN jrad_docs_cur;
3292 
3293       LOOP
3294          jdr_docbuilder.REFRESH;
3295 
3296          FETCH jrad_docs_cur
3297           INTO l_jrad_doc;
3298 
3299          EXIT WHEN jrad_docs_cur%NOTFOUND;
3300          SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3301          SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3302 
3303          OPEN jrad_chunks_cur(l_jrad_doc);
3304 
3305          LOOP
3306             FETCH jrad_chunks_cur
3307              INTO l_chunk;
3308 
3309             EXIT WHEN jrad_chunks_cur%NOTFOUND;
3310 
3311              --There are some issues with having the p_chunk
3312              --parameter on replace extends as a CLOB.  For some reason, the getLength on a CLOB for certain
3313              --JRAD documents was returning a 0, and UI copy procedure was failing.
3314              --Retaining this parameter as LONG and changing the places where we were
3315              --calling the procedure to LONG so we be consistent everywhere
3316              --See Bug 4930937 for symptoms of the bug.
3317             IF (l_chunk IS NOT NULL)
3318             THEN
3319                -- for schema migration, no need to do any replacement; for remote publishing (or migration),
3320                -- the replacement is done before this gets called (e.g., when collect_chunks)
3321                -- and the two templ arrays are empty anyway
3322                -- replace_extends(l_chunk);
3323                l_length := LENGTH(l_chunk);
3324                SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk);
3325             END IF;
3326          END LOOP;
3327 
3328          CLOSE jrad_chunks_cur;
3329 
3330          l_length := SYS.DBMS_LOB.getlength(l_lob);
3331          p := xmlparser.newparser;
3332          xmlparser.parseclob(p, l_lob);
3333          doc := xmlparser.getdocument(p);
3334          SYS.DBMS_LOB.CLOSE(l_lob);
3335          SYS.DBMS_LOB.freetemporary(l_lob);
3336          l_doc := jdr_docbuilder.createdocument(l_jrad_doc);
3337          top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3338 
3339          IF (g_toplevel_attr_tbl.COUNT > 0)
3340          THEN
3341             FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3342             LOOP
3343                BEGIN
3344                   xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3345                EXCEPTION
3346                   WHEN OTHERS
3347                   THEN
3348                      NULL;
3349                END;
3350             END LOOP;
3351          END IF;
3352 
3353          name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3354          tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3358          IF (xmldom.isnull(nnm) = FALSE)
3355          top_element := createelement(name_space, tag_name);
3356          nnm := xmldom.getattributes(top_node);
3357 
3359          THEN
3360             len2 := xmldom.getlength(nnm);
3361 
3362             FOR i IN 0 .. len2 - 1
3363             LOOP
3364                n := xmldom.item(nnm, i);
3365                attrname := xmldom.getnodename(n);
3366                attrval := xmldom.getnodevalue(n);
3367                jdr_docbuilder.setattribute(top_element, attrname, attrval);
3368             END LOOP;
3369          END IF;
3370 
3371          jdr_docbuilder.settoplevelelement(l_doc, top_element);
3372 
3373          BEGIN
3374             exploretree(top_element, top_node, '', ' ');
3375          EXCEPTION
3376             WHEN OTHERS
3377             THEN
3378                RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
3379          END;
3380 
3381          jrad_save_status := jdr_docbuilder.SAVE;
3382          xmlparser.freeparser(p);
3383          xmldom.freeDocument(doc);
3384          COMMIT;
3385          jdr_docbuilder.REFRESH;
3386       END LOOP;
3387 
3388       CLOSE jrad_docs_cur;
3389 
3390       COMMIT;
3391    EXCEPTION
3392       WHEN OTHERS
3393       THEN
3394          ROLLBACK;
3395          jdr_docbuilder.REFRESH;
3396          IF l_jrad_doc is not null THEN
3397              l_msg := l_jrad_doc || '-'  || SQLERRM;
3398          ELSE
3399              l_msg := SQLERRM;
3400          END IF;
3401 
3402          INSERT INTO cz_db_logs
3403                      (logtime, caller, MESSAGE
3404                      )
3405               VALUES (SYSDATE, 'CZJRADLOAD', l_msg
3406                      );
3407 
3408          COMMIT;
3409          RAISE;
3410    END;
3411 
3412 --------------------------------------------------
3413    PROCEDURE export_jrad_docs(
3414       p_document_name IN VARCHAR2
3415      ,p_link_name IN VARCHAR2
3416      ,x_return_status OUT NOCOPY VARCHAR2
3417      ,x_msg_count OUT NOCOPY NUMBER
3418      ,x_msg_data OUT NOCOPY VARCHAR2
3419    )
3420    IS
3421    BEGIN
3422       pbdebug := 22025;
3423 
3424       EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3425 
3426       collect_chunks(p_document_name, p_link_name, x_return_status, x_msg_count, x_msg_data);
3427 
3428       EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3429 
3430       EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3431    EXCEPTION
3432       WHEN NO_DATA_FOUND
3433       THEN
3434          x_return_status := FND_API.G_RET_STS_ERROR;
3435          x_msg_count := 1;
3436          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3437       WHEN OTHERS
3438       THEN
3439          x_return_status := fnd_api.g_ret_sts_unexp_error;
3440          x_msg_count := 1;
3441          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3442    END export_jrad_docs;
3443 
3444 ----------------------------------------------------
3445    PROCEDURE export_jrad_docs(
3446       p_ui_def_id IN NUMBER
3447      ,p_link_name IN VARCHAR2
3448      ,x_return_status OUT NOCOPY VARCHAR2
3449      ,x_msg_count OUT NOCOPY NUMBER
3450      ,x_msg_data OUT NOCOPY VARCHAR2
3451    )
3452    IS
3453       l_jrad_doc_tbl jraddoc_type_tbl;
3454       l_link_name cz_servers.fndnam_link_name%TYPE;
3455       link_name_is_null EXCEPTION;
3456    BEGIN
3457       pbdebug := 22026;
3458 
3459       IF (p_link_name IS NULL)
3460       THEN
3461          RAISE link_name_is_null;
3462       ELSE
3463          l_link_name := '@' || p_link_name;
3464       END IF;
3465 
3466       SELECT jrad_doc
3467       BULK COLLECT INTO l_jrad_doc_tbl
3468         FROM cz_ui_pages
3469        WHERE cz_ui_pages.ui_def_id = p_ui_def_id AND cz_ui_pages.deleted_flag = '0';
3470 
3471       IF (l_jrad_doc_tbl.COUNT > 0)
3472       THEN
3473          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || l_link_name || '; commit; end; ';
3474 
3475          FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
3476          LOOP
3477             collect_chunks(l_jrad_doc_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
3478          END LOOP;
3479 
3480          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || l_link_name || '; end; ';
3481 
3482          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || l_link_name || '; commit; end; ';
3483       END IF;
3484    EXCEPTION
3485       WHEN link_name_is_null
3486       THEN
3487          x_return_status := FND_API.G_RET_STS_ERROR;
3488          x_msg_data := 'Db Link Name is Null';
3489          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3490       WHEN NO_DATA_FOUND
3491       THEN
3492          x_return_status := FND_API.G_RET_STS_ERROR;
3493          x_msg_count := 1;
3494          x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_ui_def_id);
3495       WHEN OTHERS
3496       THEN
3497          x_return_status := fnd_api.g_ret_sts_unexp_error;
3498          x_msg_count := 1;
3499          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3500    END export_jrad_docs;
3501 
3502 ------>>>>>>>>>>>>>>>>>>>>>>>>>>
3503    PROCEDURE export_template_jrad_docs(
3507      ,x_return_status OUT NOCOPY VARCHAR2
3504       p_ui_def_id IN NUMBER
3505      ,p_template_id IN NUMBER
3506      ,p_link_name IN VARCHAR2
3508      ,x_msg_count OUT NOCOPY NUMBER
3509      ,x_msg_data OUT NOCOPY VARCHAR2
3510    )
3511    IS
3512       l_jrad_doc_tbl jraddoc_type_tbl;
3513    BEGIN
3514       pbdebug := 22026;
3515 
3516       SELECT jrad_doc
3517       BULK COLLECT INTO l_jrad_doc_tbl
3518         FROM cz_ui_templates
3519        WHERE cz_ui_templates.ui_def_id = p_ui_def_id
3520          AND cz_ui_templates.template_id = p_template_id
3521          AND cz_ui_templates.seeded_flag = '0'
3522          AND cz_ui_templates.deleted_flag = '0';
3523 
3524       IF (l_jrad_doc_tbl.COUNT > 0)
3525       THEN
3526          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3527 
3528          FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
3529          LOOP
3530             collect_chunks(l_jrad_doc_tbl(i), p_link_name, x_return_status, x_msg_count, x_msg_data);
3531          END LOOP;
3532 
3533          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3534 
3535          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3536       END IF;
3537    EXCEPTION
3538       WHEN OTHERS
3539       THEN
3540          x_return_status := FND_API.G_RET_STS_ERROR;
3541          x_msg_count := 1;
3542          x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3543    END export_template_jrad_docs;
3544 
3545 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>
3546    PROCEDURE export_template_jrad_docs(
3547       p_link_name IN VARCHAR2
3548      ,x_return_status OUT NOCOPY VARCHAR2
3549      ,x_msg_count OUT NOCOPY NUMBER
3550      ,x_msg_data OUT NOCOPY VARCHAR2
3551    )
3552    IS
3553       l_ui_def_id_tbl cz_pb_mgr.t_ref;
3554       l_template_id_tbl cz_pb_mgr.t_ref;
3555       l_link_name cz_servers.fndnam_link_name%TYPE;
3556       link_name_is_null EXCEPTION;
3557    BEGIN
3558       IF (p_link_name IS NULL)
3559       THEN
3560          RAISE link_name_is_null;
3561       ELSE
3562          l_link_name := '@' || p_link_name;
3563       END IF;
3564 
3565       SELECT ui_def_id, template_id
3566       BULK COLLECT INTO l_ui_def_id_tbl, l_template_id_tbl
3567         FROM cz_ui_templates
3568        WHERE cz_ui_templates.deleted_flag = '0'
3569          AND cz_ui_templates.seeded_flag = '0'
3570          AND (   cz_ui_templates.ui_def_id = 0
3571               OR cz_ui_templates.ui_def_id IN(
3572                     SELECT ui_def_id
3573                       FROM cz_ui_defs
3574                      WHERE cz_ui_defs.deleted_flag = '0'
3575                        AND cz_ui_defs.devl_project_id IN(SELECT object_id
3576                                                            FROM cz_rp_entries
3577                                                           WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0'))
3578              );
3579 
3580       IF (l_ui_def_id_tbl.COUNT > 0)
3581       THEN
3582          FOR i IN l_ui_def_id_tbl.FIRST .. l_ui_def_id_tbl.LAST
3583          LOOP
3584             x_return_status := FND_API.G_RET_STS_SUCCESS;
3585             x_msg_data := '';
3586             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);
3587 
3588             IF (x_return_status = FND_API.G_RET_STS_ERROR)
3589             THEN
3590                log_pb_errors(x_msg_data, '0', 'EXPORTJRADDOCS', SQLCODE);
3591             END IF;
3592          END LOOP;
3593       END IF;
3594    EXCEPTION
3595       WHEN link_name_is_null
3596       THEN
3597          x_return_status := FND_API.G_RET_STS_ERROR;
3598          x_msg_data := 'Db Link Name is Null';
3599          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3600       WHEN OTHERS
3601       THEN
3602          x_return_status := FND_API.G_RET_STS_ERROR;
3603          x_msg_data := SQLERRM;
3604          log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3605    END export_template_jrad_docs;
3606 
3607 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3608    PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2)
3609    IS
3610       l_lob CLOB;
3611       l_offset PLS_INTEGER := 1;
3612       l_length BINARY_INTEGER;
3613       l_doc_id NUMBER;
3614       l_buffer LONG;
3615       firstchunk LONG;
3616       p xmlparser.parser;
3617       doc xmldom.domdocument;
3618       nl xmldom.domnodelist;
3619       len NUMBER;
3620       n xmldom.domnode;
3621       top_node xmldom.domnode;
3622       l_parent_node xmldom.domnode;
3623       v_ns VARCHAR2(255);
3624       v_el VARCHAR2(255);
3625       len1 NUMBER;
3626       len2 NUMBER;
3627       nnm xmldom.domnamednodemap;
3628       attrname VARCHAR2(255);
3629       attrval VARCHAR2(255);
3630       newattrname VARCHAR2(255);
3631       name_space VARCHAR2(255);
3632       tag_name VARCHAR2(255);
3633       l_doc jdr_docbuilder.document;
3634       top_element jdr_docbuilder.ELEMENT;
3635       g_document jdr_docbuilder.document;
3636       l_new_document jdr_docbuilder.document;
3637       jrad_save_status PLS_INTEGER;
3638       document_is_null EXCEPTION;
3639 
3640       TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3641 
3645       pbdebug := 22027;
3642       g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3643       l_exportfinished BOOLEAN;
3644    BEGIN
3646       jdr_docbuilder.REFRESH;
3647 
3648       IF (p_old_document_name IS NULL)
3649       THEN
3650          RAISE document_is_null;
3651       END IF;
3652 
3653       --There are some issues with having the p_chunk
3654       --parameter as a CLOB.  For some reason, the getLength on a CLOB for certain
3655       --JRAD documents was returning a 0, and UI copy procedure was failing.
3656       --Retaining this parameter as LONG and changing the places where we were
3657       --calling the procedure to LONG so we be consistent everywhere
3658       --See Bug 4930937 for symptoms of the bug.
3659       SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3660       SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3661       firstchunk := jdr_utils.exportdocument(p_old_document_name, l_exportfinished);
3662       replace_extends(firstchunk);
3663       handle_ancestorNode(p_old_document_name, p_new_document_name, firstchunk);
3664 
3665       IF (firstchunk IS NULL)
3666       THEN
3667          RAISE document_is_null;
3668       END IF;
3669 
3670       BEGIN
3671          SYS.DBMS_LOB.writeappend(l_lob, LENGTH(firstchunk), firstchunk);
3672       EXCEPTION
3673          WHEN OTHERS
3674          THEN
3675             NULL; ---- for negative index to be ignored
3676       END;
3677 
3678       --There are some issues with having the p_chunk
3679       --parameter on replace_extends as a CLOB.  For some reason, the getLength on a CLOB for certain
3680       --JRAD documents was returning a 0, and UI copy procedure was failing.
3681       --Retaining this parameter as LONG and changing the places where we were
3682       --calling the procedure to LONG so we be consistent everywhere
3683       --See Bug 4930937 for symptoms of the bug.
3684       LOOP
3685          l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3686          EXIT WHEN l_buffer IS NULL;
3687          replace_extends(l_buffer);
3688          handle_ancestorNode(p_old_document_name, p_new_document_name, l_buffer);
3689          l_length := LENGTH(l_buffer);
3690          SYS.DBMS_LOB.writeappend(l_lob, l_length, l_buffer);
3691       END LOOP;
3692 
3693       l_length := SYS.DBMS_LOB.getlength(l_lob);
3694       p := xmlparser.newparser;
3695       xmlparser.parseclob(p, l_lob);
3696       doc := xmlparser.getdocument(p);
3697       SYS.DBMS_LOB.CLOSE(l_lob);
3698       SYS.DBMS_LOB.freetemporary(l_lob);
3699       l_doc := jdr_docbuilder.createdocument(p_new_document_name);
3700       top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3701 
3702       IF (g_toplevel_attr_tbl.COUNT > 0)
3703       THEN
3704          FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3705          LOOP
3706             BEGIN
3707                xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3708             EXCEPTION
3709                WHEN OTHERS
3710                THEN
3711                   NULL;
3712             END;
3713          END LOOP;
3714       END IF;
3715 
3716       name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3717       tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3718       top_element := createelement(name_space, tag_name);
3719       nnm := xmldom.getattributes(top_node);
3720 
3721       IF (xmldom.isnull(nnm) = FALSE)
3722       THEN
3723          len2 := xmldom.getlength(nnm);
3724 
3725          FOR i IN 0 .. len2 - 1
3726          LOOP
3727             n := xmldom.item(nnm, i);
3728             attrname := xmldom.getnodename(n);
3729             attrval := xmldom.getnodevalue(n);
3730             jdr_docbuilder.setattribute(top_element, attrname, attrval);
3731          END LOOP;
3732       END IF;
3733 
3734       jdr_docbuilder.settoplevelelement(l_doc, top_element);
3735 
3736       BEGIN
3737          exploretree(top_element, top_node, '', ' ');
3738       EXCEPTION
3739          WHEN OTHERS
3740          THEN
3741             RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
3742       END;
3743 
3744       jrad_save_status := jdr_docbuilder.SAVE;
3745       xmlparser.freeparser(p);
3746       COMMIT;
3747       cz_pb_mgr.g_jrad_trans_list := jdr_utils.translationlist();
3748       cz_pb_mgr.g_jrad_trans_list := jdr_utils.gettranslations(p_old_document_name);
3749 
3750       IF (cz_pb_mgr.g_jrad_trans_list IS NOT NULL)
3751       THEN
3752          jdr_utils.savetranslations(p_new_document_name, cz_pb_mgr.g_jrad_trans_list);
3753       END IF;
3754 
3755       jdr_docbuilder.REFRESH;
3756       COMMIT;
3757    EXCEPTION
3758       WHEN document_is_null
3759       THEN
3760          NULL;
3761       WHEN OTHERS
3762       THEN
3763          EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
3764 
3765          RAISE;
3766    END insert_into_repository;
3767 
3768 -------------------------------------------------------
3769 -- p_document_type is used to decide if id replacement on xml doc is needed in a remote model migration session:
3770 -- if it is null (template jrad docs), replacement will be done via collect_chunks -> synch_user_attribute,
3771 -- otherwise (page xml docs), no replacement will be performed.
3775       l_return_status VARCHAR2(1);
3772    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)
3773    IS
3774       document_is_null EXCEPTION;
3776       l_msg_count NUMBER := 0;
3777       l_msg_data VARCHAR2(2000);
3778    BEGIN
3779       pbdebug := 22028;
3780 
3781       IF (cz_pb_mgr.v_server_id <> 0)
3782       THEN
3783          jdr_docbuilder.REFRESH;
3784 
3785          IF (p_old_document_name IS NULL)
3786          THEN
3787             RAISE document_is_null;
3788          END IF;
3789 
3790          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' commit; end; ';
3791 
3792          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);
3793 
3794          EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3795 
3796          EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3797       ELSE
3798          insert_into_repository(p_old_document_name, p_new_document_name);
3799       END IF;
3800    EXCEPTION
3801       WHEN document_is_null
3802       THEN
3803          NULL;
3804       WHEN EXPLORETREE_ERROR THEN
3805          fnd_message.set_name('FND', 'FND_AS_UNEXPECTED_ERROR');
3806          fnd_message.set_token('ERROR_TEXT', SQLERRM);
3807          fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
3808          fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
3809          cz_pb_mgr.v_err_message := fnd_message.get;
3810          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
3811          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3812 
3813          RAISE;
3814       WHEN OTHERS
3815       THEN
3816          EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
3817 
3818          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_JRAD_DOC_ERR', 'JRADDOC', p_old_document_name, 'SQLERRM', SQLERRM);
3819          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTOJRADREPOS', SQLCODE);
3820          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3821 
3822          RAISE;
3823    END insert_into_repository;
3824 
3825 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3826 -----collect from cz_ui_pages
3827    PROCEDURE bulk_collect_ui_pages
3828    IS
3829       l_cz_ui_pages_ui_def_tbl cz_pb_mgr.t_ref;
3830       l_cz_ui_pages_jrad_doc_tbl varchar_tbl_type;
3831       l_cz_ui_pages_capt_id_tbl cz_pb_mgr.t_ref;
3832       l_cz_page_stat_templ_tbl cz_pb_mgr.t_ref;
3833       l_cz_page_stat_uidef_tbl cz_pb_mgr.t_ref;
3834       l_cz_ui_pages_pgtmplid_tbl cz_pb_mgr.t_ref;
3835       l_cz_ui_pages_pgtmplui_tbl cz_pb_mgr.t_ref;
3836       l_cz_ui_pages_dis_cond_tbl cz_pb_mgr.t_ref;
3837       l_cz_ui_pages_enb_cond_tbl cz_pb_mgr.t_ref;
3838       l_cz_ui_pages_expl_node_tbl cz_pb_mgr.t_ref;
3839       l_rec_count NUMBER;
3840    BEGIN
3841       pbdebug := 22029;
3842 
3843       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
3844       THEN
3845          cz_pb_mgr.g_cz_ui_pages_ui_def_ref.DELETE;
3846          cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.DELETE;
3847          cz_pb_mgr.g_cz_ui_pages_capt_id_ref.DELETE;
3848          cz_pb_mgr.g_pages_ui_def_old_ref.DELETE;
3849          cz_pb_mgr.g_cz_ui_old_jrad_doc_ref.DELETE;
3850          -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
3851          -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
3852          cz_pb_mgr.g_cz_ui_pages_stat_templ.DELETE;
3853          cz_pb_mgr.g_cz_ui_pages_stat_ui.DELETE;
3854          cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
3855          cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
3856          cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl.DELETE;
3857          cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl.DELETE;
3858          cz_pb_mgr.g_cz_ui_pages_expl_tbl.DELETE;
3859 
3860          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
3861          LOOP
3862             l_cz_ui_pages_ui_def_tbl.DELETE;
3863             l_cz_ui_pages_jrad_doc_tbl.DELETE;
3864             l_cz_ui_pages_capt_id_tbl.DELETE;
3865             l_cz_page_stat_templ_tbl.DELETE;
3866             l_cz_page_stat_uidef_tbl.DELETE;
3867             l_cz_ui_pages_pgtmplid_tbl.DELETE;
3868             l_cz_ui_pages_pgtmplui_tbl.DELETE;
3869             l_cz_ui_pages_dis_cond_tbl.DELETE;
3870             l_cz_ui_pages_enb_cond_tbl.DELETE;
3871             l_cz_ui_pages_expl_node_tbl.DELETE;
3872 
3873             SELECT ui_def_id, jrad_doc, caption_text_id, page_status_template_id
3874                   ,page_status_templ_uidef_id, outer_page_template_id, outer_page_templ_uidef_id, display_condition_id
3875                   ,enabled_condition_id, pagebase_expl_node_id
3876             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
3877                   ,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
3878                   ,l_cz_ui_pages_enb_cond_tbl, l_cz_ui_pages_expl_node_tbl
3879               FROM cz_ui_pages
3880              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;
3881 
3882             IF (l_cz_ui_pages_ui_def_tbl.COUNT > 0)
3883             THEN
3884                l_rec_count := cz_pb_mgr.g_pages_ui_def_old_ref.COUNT;
3885 
3889                  -- cz_pb_mgr.g_cz_ui_pages_ui_def_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3886                FOR uidefref IN l_cz_ui_pages_ui_def_tbl.FIRST .. l_cz_ui_pages_ui_def_tbl.LAST
3887                LOOP
3888                   l_rec_count := l_rec_count + 1;
3890                   -- cz_pb_mgr.v_intl_text_ui_tbl(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3891                   cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
3892                   cz_pb_mgr.g_cz_ui_pages_capt_id_ref(l_rec_count) := l_cz_ui_pages_capt_id_tbl(uidefref);
3893                   cz_pb_mgr.g_pages_ui_def_old_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3894                   cz_pb_mgr.g_cz_ui_old_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
3895                   cz_pb_mgr.g_cz_ui_pages_stat_templ(l_rec_count) := l_cz_page_stat_templ_tbl(uidefref);
3896                   cz_pb_mgr.g_cz_ui_pages_stat_ui(l_rec_count) := l_cz_page_stat_uidef_tbl(uidefref);
3897                   -- cz_pb_mgr.v_intl_text_model_tbl(l_rec_count) := -1;
3898                   cz_pb_mgr.g_cz_uipg_tmplid_tbl(l_rec_count) := l_cz_ui_pages_pgtmplid_tbl(uidefref);
3899                   cz_pb_mgr.g_cz_uipg_tmplui_tbl(l_rec_count) := l_cz_ui_pages_pgtmplui_tbl(uidefref);
3900                   cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl(l_rec_count) := l_cz_ui_pages_dis_cond_tbl(uidefref);
3901                   cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl(l_rec_count) := l_cz_ui_pages_enb_cond_tbl(uidefref);
3902                   cz_pb_mgr.g_cz_ui_pages_expl_tbl(l_rec_count) := l_cz_ui_pages_expl_node_tbl(uidefref);
3903                END LOOP;
3904             END IF;
3905          END LOOP;
3906       END IF;
3907    EXCEPTION
3908       WHEN NO_DATA_FOUND
3909       THEN
3910          NULL;
3911       WHEN OTHERS
3912       THEN
3913          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_pages', 'SQLERRM', SQLERRM);
3914          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGES', SQLCODE);
3915          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3916          RAISE;
3917    END bulk_collect_ui_pages;
3918 
3919 -------------------------------------------------------------------------
3920 -------insert into cz_ui_pages
3921    PROCEDURE insert_into_ui_pages
3922    IS
3923       rec_count NUMBER := 0;
3924       plsql_table_list cz_pb_mgr.col_plsql_table_list;
3925    BEGIN
3926       pbdebug := 22030;
3927 
3928       IF (cz_pb_mgr.g_pages_ui_def_old_ref.COUNT > 0)
3929       THEN
3930          ----resolve  ui_def_id of ui pages
3931          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');
3932 
3933          -- resolve page status and outer page templates
3934          IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
3935            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');
3936            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);
3937            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');
3938            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);
3939          END IF;
3940 
3941          ----caption ids of ui pages
3942          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');
3943 
3944          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');
3945          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');
3946          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');
3947          plsql_table_list.DELETE;
3948          rec_count := 1;
3949          plsql_table_list(rec_count).col_name := 'ui_def_id';
3950          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_ui_def_ref';
3951          rec_count := rec_count + 1;
3952          plsql_table_list(rec_count).col_name := 'jrad_doc';
3953          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref';
3954          rec_count := rec_count + 1;
3955          plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPLATE_ID';
3956          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_templ';
3957          rec_count := rec_count + 1;
3958          plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPL_UIDEF_ID';
3959          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_ui';
3960          rec_count := rec_count + 1;
3961          plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPLATE_ID';
3962          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplid_tbl';
3963          rec_count := rec_count + 1;
3964          plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPL_UIDEF_ID';
3965          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplui_tbl';
3966          rec_count := rec_count + 1;
3967          plsql_table_list(rec_count).col_name := 'DISPLAY_CONDITION_ID';
3968          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl';
3969          rec_count := rec_count + 1;
3970          plsql_table_list(rec_count).col_name := 'ENABLED_CONDITION_ID';
3974          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_expl_tbl';
3971          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl';
3972          rec_count := rec_count + 1;
3973          plsql_table_list(rec_count).col_name := 'PAGEBASE_EXPL_NODE_ID';
3975          rec_count := rec_count + 1;
3976          plsql_table_list(rec_count).col_name := 'CAPTION_TEXT_ID';
3977          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_capt_id_ref';
3978          insert_into_table('cz_ui_pages'
3979                           ,'ui_def_id'
3980                           ,'jrad_doc'
3981                           ,cz_pb_mgr.v_db_link
3982                           ,plsql_table_list
3983                           ,'cz_pb_mgr.g_pages_ui_def_old_ref'
3984                           ,'cz_pb_mgr.g_cz_ui_old_jrad_doc_ref'
3985                           ,cz_pb_mgr.g_pages_ui_def_old_ref
3986                           ,cz_pb_mgr.g_cz_ui_old_jrad_doc_ref
3987                           );
3988       END IF;
3989    END insert_into_ui_pages;
3990 
3991 ----------------------------------------------------------
3992 ---------bulk collect ui page sets
3993    PROCEDURE bulk_collect_page_sets
3994    IS
3995       l_rec_count NUMBER := 0;
3996       l_page_sets_ui_tbl cz_pb_mgr.t_ref;
3997       l_page_sets_pg_tbl cz_pb_mgr.t_ref;
3998       l_pagebase_expl_tbl cz_pb_mgr.t_ref;
3999       l_train_jrad_doc_tbl varchar_type_tbl;
4000    BEGIN
4001       pbdebug := 22031;
4002 
4003       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4004       THEN
4005          cz_pb_mgr.g_page_sets_ui_old_ref.DELETE;
4006          cz_pb_mgr.g_page_sets_ui_ref.DELETE;
4007          cz_pb_mgr.g_page_sets_pg_tbl.DELETE;
4008          cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
4009          cz_pb_mgr.g_page_sets_expl_tbl.DELETE;
4010 
4011          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
4012          LOOP
4013             SELECT ui_def_id, page_set_id, train_jrad_doc, pagebase_expl_node_id
4014             BULK COLLECT INTO l_page_sets_ui_tbl, l_page_sets_pg_tbl, l_train_jrad_doc_tbl, l_pagebase_expl_tbl
4015               FROM cz_ui_page_sets
4016              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);
4017 
4018             IF (l_page_sets_ui_tbl.COUNT > 0)
4019             THEN
4020                l_rec_count := cz_pb_mgr.g_page_sets_ui_old_ref.COUNT;
4021 
4022                FOR pageset IN l_page_sets_ui_tbl.FIRST .. l_page_sets_ui_tbl.LAST
4023                LOOP
4024                   l_rec_count := l_rec_count + 1;
4025                   cz_pb_mgr.g_page_sets_ui_old_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4026                   --cz_pb_mgr.g_page_sets_ui_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4027                   cz_pb_mgr.g_page_sets_pg_tbl(l_rec_count) := l_page_sets_pg_tbl(pageset);
4028                   cz_pb_mgr.g_page_sets_jrad_doc_ref(l_rec_count) := l_train_jrad_doc_tbl(pageset);
4029                   cz_pb_mgr.g_page_sets_expl_tbl(l_rec_count) := l_pagebase_expl_tbl(pageset);
4030                END LOOP;
4031             END IF;
4032          END LOOP;
4033       END IF;
4034    EXCEPTION
4035       WHEN NO_DATA_FOUND
4036       THEN
4037          NULL;
4038       WHEN OTHERS
4039       THEN
4040          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4041          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGESETS', SQLCODE);
4042          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4043          RAISE;
4044    END bulk_collect_page_sets;
4045 
4046 ---------------------------------------------------------------
4047 ----insert into cz_ui_page_sets
4048    PROCEDURE insert_into_ui_page_sets
4049    IS
4050       rec_count NUMBER := 0;
4051       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4052    BEGIN
4053       IF (cz_pb_mgr.g_page_sets_ui_old_ref.COUNT > 0)
4054       THEN
4055          pbdebug := 22032;
4056          ----resolve  ui_def_id of page sets
4057          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');
4058          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');
4059          plsql_table_list.DELETE;
4060          rec_count := 1;
4061          plsql_table_list(rec_count).col_name := 'ui_def_id';
4062          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_ui_ref';
4063          rec_count := rec_count + 1;
4064          plsql_table_list(rec_count).col_name := 'train_jrad_doc';
4065          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_jrad_doc_ref';
4066          rec_count := rec_count + 1;
4067          plsql_table_list(rec_count).col_name := 'pagebase_expl_node_id';
4068          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_expl_tbl';
4069          insert_into_table('cz_ui_page_sets'
4070                           ,'ui_def_id'
4071                           ,'page_set_id'
4072                           ,cz_pb_mgr.v_db_link
4073                           ,plsql_table_list
4074                           ,'cz_pb_mgr.g_page_sets_ui_old_ref'
4075                           ,'cz_pb_mgr.g_page_sets_pg_tbl'
4076                           ,cz_pb_mgr.g_page_sets_ui_old_ref
4077                           ,cz_pb_mgr.g_page_sets_pg_tbl
4078                           );
4079       END IF;
4080    EXCEPTION
4084          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGESETS', SQLCODE);
4081       WHEN OTHERS
4082       THEN
4083          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4085          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4086          RAISE;
4087    END insert_into_ui_page_sets;
4088 
4089 ------------------------------------------------------------------------
4090 -----bulk collect from page refs
4091    PROCEDURE bulk_collect_page_refs
4092    IS
4093       l_page_refs_set_id_tbl cz_pb_mgr.t_ref;
4094       l_page_refs_ui_def_tbl cz_pb_mgr.t_ref;
4095       l_page_refs_pg_ref_id_tbl cz_pb_mgr.t_ref;
4096       l_page_refs_cond_id_tbl cz_pb_mgr.t_ref;
4097       l_page_refs_capt_id_tbl cz_pb_mgr.t_ref;
4098       l_page_refs_prop_id_tbl cz_pb_mgr.t_ref;
4099       l_page_refs_tgt_ui_tbl cz_pb_mgr.t_ref;
4100       l_page_refs_tgt_pg_set_tbl cz_pb_mgr.t_ref;
4101       l_page_refs_tgt_pg_id_tbl cz_pb_mgr.t_ref;
4102       l_page_refs_pg_set_tbl cz_pb_mgr.t_ref;
4103       l_page_refs_pg_ref_tbl cz_pb_mgr.t_ref;
4104       l_page_refs_tgt_expl_tbl cz_pb_mgr.t_ref;
4105       l_page_refs_cpt_rule_tbl cz_pb_mgr.t_ref;
4106       rec_count NUMBER := 0;
4107    BEGIN
4108       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4109       THEN
4110          cz_pb_mgr.g_page_refs_ui_def_old_ref.DELETE;
4111          cz_pb_mgr.g_page_refs_ui_def_new_ref.DELETE;
4112          cz_pb_mgr.g_page_refs_cond_id_ref.DELETE;
4113          cz_pb_mgr.g_page_refs_capt_id_ref.DELETE;
4114          cz_pb_mgr.g_page_refs_tgt_ui_ref.DELETE;
4115          cz_pb_mgr.g_page_refs_pg_set_ref.DELETE;
4116          cz_pb_mgr.g_page_refs_pg_ref_ref.DELETE;
4117          -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4118          -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4119          cz_pb_mgr.g_page_refs_tgt_expl_tbl.DELETE;
4120          cz_pb_mgr.g_page_refs_cpt_rule_tbl.DELETE;
4121          pbdebug := 22033;
4122 
4123          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
4124          LOOP
4125             l_page_refs_ui_def_tbl.DELETE;
4126             l_page_refs_cond_id_tbl.DELETE;
4127             l_page_refs_capt_id_tbl.DELETE;
4128             l_page_refs_tgt_ui_tbl.DELETE;
4129             l_page_refs_tgt_expl_tbl.DELETE;
4130             l_page_refs_cpt_rule_tbl.DELETE;
4131 
4132             SELECT ui_def_id, page_set_id, page_ref_id, condition_id, caption_text_id
4133                   ,target_ui_def_id, target_expl_node_id, caption_rule_id
4134             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
4135                   ,l_page_refs_tgt_ui_tbl, l_page_refs_tgt_expl_tbl, l_page_refs_cpt_rule_tbl
4136               FROM cz_ui_page_refs
4137              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;
4138 
4139             IF (l_page_refs_ui_def_tbl.COUNT > 0)
4140             THEN
4141                rec_count := cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT;
4142 
4143                FOR pageref IN l_page_refs_ui_def_tbl.FIRST .. l_page_refs_ui_def_tbl.LAST
4144                LOOP
4145                   rec_count := rec_count + 1;
4146                  -- cz_pb_mgr.g_page_refs_ui_def_new_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4147                   cz_pb_mgr.g_page_refs_ui_def_old_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4148                   -- cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_page_refs_ui_def_tbl(pageref);
4149                   -- cz_pb_mgr.v_intl_text_model_tbl(rec_count) := -1;
4150                   cz_pb_mgr.g_page_refs_pg_set_ref(rec_count) := l_page_refs_pg_set_tbl(pageref);
4151                   cz_pb_mgr.g_page_refs_pg_ref_ref(rec_count) := l_page_refs_pg_ref_tbl(pageref);
4152                   cz_pb_mgr.g_page_refs_cond_id_ref(rec_count) := l_page_refs_cond_id_tbl(pageref);
4153                   cz_pb_mgr.g_page_refs_capt_id_ref(rec_count) := l_page_refs_capt_id_tbl(pageref);
4154                   cz_pb_mgr.g_page_refs_tgt_ui_ref(rec_count) := l_page_refs_tgt_ui_tbl(pageref);
4155                   cz_pb_mgr.g_page_refs_tgt_expl_tbl(rec_count) := l_page_refs_tgt_expl_tbl(pageref);
4156                   cz_pb_mgr.g_page_refs_cpt_rule_tbl(rec_count) := l_page_refs_cpt_rule_tbl(pageref);
4157                END LOOP;
4158             END IF;
4159          END LOOP;
4160       END IF;
4161    EXCEPTION
4162       WHEN NO_DATA_FOUND
4163       THEN
4164          NULL;
4165       WHEN OTHERS
4166       THEN
4167          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4168          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGEREFS', SQLCODE);
4169          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4170          RAISE;
4171    END bulk_collect_page_refs;
4172 
4173 -------------------------------------------------
4174 ------insert into page refs
4175    PROCEDURE insert_into_ui_page_refs
4176    IS
4177       rec_count NUMBER := 0;
4178       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4179    BEGIN
4180       IF (cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT > 0)
4181       THEN
4182          pbdebug := 22034;
4183          ----resolve  ui_def_id
4184          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 sets');
4185          ---create rules for g_page_refs_cond_id_ref
4186          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 sets');
4190          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');
4187          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 sets');
4188          ----caption ids of ui pages
4189          -----insert_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref,'caption ids of cz ui page refs');
4191          ----resolve expl id
4192          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');
4193          plsql_table_list.DELETE;
4194          rec_count := 1;
4195          plsql_table_list(rec_count).col_name := 'ui_def_id';
4196          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_ui_def_new_ref';
4197          rec_count := rec_count + 1;
4198          plsql_table_list(rec_count).col_name := 'caption_text_id';
4199          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_capt_id_ref';
4200          rec_count := rec_count + 1;
4201          plsql_table_list(rec_count).col_name := 'target_ui_def_id';
4202          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_ui_ref';
4203          rec_count := rec_count + 1;
4204          plsql_table_list(rec_count).col_name := 'target_expl_node_id';
4205          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_expl_tbl';
4206          rec_count := rec_count + 1;
4207          plsql_table_list(rec_count).col_name := 'caption_rule_id';
4208          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cpt_rule_tbl';
4209          rec_count := rec_count + 1;
4210          plsql_table_list(rec_count).col_name := 'condition_id';
4211          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cond_id_ref';
4212          -- should call resolve_ids instead
4213          resolve_ref_ids_not_found(cz_pb_mgr.g_page_refs_ui_def_new_ref
4214                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
4215                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4216                                   ,cz_pb_mgr.g_page_refs_tgt_ui_ref
4217                                   ,'cz_ui_page_refs.target_ui_def_id'
4218                                   ,cz_pb_mgr.v_status_code
4219                                   );
4220          insert_into_table('cz_ui_page_refs'
4221                           ,'ui_def_id'
4222                           ,'page_set_id'
4223                           ,'page_ref_id'
4224                           ,cz_pb_mgr.v_db_link
4225                           ,plsql_table_list
4226                           ,'cz_pb_mgr.g_page_refs_ui_def_old_ref'
4227                           ,'cz_pb_mgr.g_page_refs_pg_set_ref'
4228                           ,'cz_pb_mgr.g_page_refs_pg_ref_ref'
4229                           ,cz_pb_mgr.g_page_refs_ui_def_old_ref
4230                           ,cz_pb_mgr.g_page_refs_pg_set_ref
4231                           ,cz_pb_mgr.g_page_refs_pg_ref_ref
4232                           );
4233       END IF;
4234    EXCEPTION
4235       WHEN OTHERS
4236       THEN
4237          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4238          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGEREFS', SQLCODE);
4239          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4240          RAISE;
4241    END insert_into_ui_page_refs;
4242 
4243 --------------------------------------------------
4244 -----bulk collect from ui refs
4245    PROCEDURE bulk_collect_ui_refs
4246    IS
4247       l_ui_refs_ui_def_tbl cz_pb_mgr.t_ref;
4248       l_ui_refs_ref_ui_def_tbl cz_pb_mgr.t_ref;
4249       l_ui_refs_expl_id_tbl cz_pb_mgr.t_ref;
4250       rec_count NUMBER := 0;
4251    BEGIN
4252       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4253       THEN
4254          cz_pb_mgr.g_ui_refs_old_ui_def_ref.DELETE;
4255          cz_pb_mgr.g_ui_refs_new_ui_def_ref.DELETE;
4256          cz_pb_mgr.g_ui_refs_ref_ui_def_ref.DELETE;
4257          cz_pb_mgr.g_ui_refs_expl_id_ref.DELETE;
4258          cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref.DELETE;
4259          cz_pb_mgr.g_ui_refs_expl_id_old_ref.DELETE;
4260 
4261          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
4262          LOOP
4263             l_ui_refs_ui_def_tbl.DELETE;
4264             l_ui_refs_ref_ui_def_tbl.DELETE;
4265             l_ui_refs_expl_id_tbl.DELETE;
4266 
4267             SELECT ui_def_id, ref_ui_def_id, model_ref_expl_id
4268             BULK COLLECT INTO l_ui_refs_ui_def_tbl, l_ui_refs_ref_ui_def_tbl, l_ui_refs_expl_id_tbl
4269               FROM cz_ui_refs
4270              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;
4271 
4272             IF (l_ui_refs_ui_def_tbl.COUNT > 0)
4273             THEN
4274                rec_count := cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT;
4275 
4276                FOR uiref IN l_ui_refs_ui_def_tbl.FIRST .. l_ui_refs_ui_def_tbl.LAST
4277                LOOP
4278                   rec_count := rec_count + 1;
4279                   cz_pb_mgr.g_ui_refs_old_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4280                  -- cz_pb_mgr.g_ui_refs_new_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4281                   cz_pb_mgr.g_ui_refs_ref_ui_def_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4282                   cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4283                   cz_pb_mgr.g_ui_refs_expl_id_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4284                   cz_pb_mgr.g_ui_refs_expl_id_old_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4285                END LOOP;
4286             END IF;
4287          END LOOP;
4291       THEN
4288       END IF;
4289    EXCEPTION
4290       WHEN NO_DATA_FOUND
4292          NULL;
4293       WHEN OTHERS
4294       THEN
4295          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4296          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIREFS', SQLCODE);
4297          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4298          RAISE;
4299    END bulk_collect_ui_refs;
4300 
4301 -----------------------------------------------------------------
4302 ------insert into cz_ui_refs
4303    PROCEDURE insert_into_ui_refs
4304    IS
4305       rec_count NUMBER := 0;
4306       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4307    BEGIN
4308       IF (cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT > 0)
4309       THEN
4310          ----resolve  ui_def_id
4311          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');
4312          ----resolve  model ref expl id
4313          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');
4314          plsql_table_list.DELETE;
4315          rec_count := 1;
4316          plsql_table_list(rec_count).col_name := 'ui_def_id';
4317          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_new_ui_def_ref';
4318          rec_count := rec_count + 1;
4319          plsql_table_list(rec_count).col_name := 'ref_ui_def_id';
4320          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_ref_ui_def_ref';
4321          rec_count := rec_count + 1;
4322          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4323          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_expl_id_ref';
4324          -- should call resolve_ids instead
4325          resolve_ref_ids_not_found(cz_pb_mgr.g_ui_refs_new_ui_def_ref
4326                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
4327                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4328                                   ,cz_pb_mgr.g_ui_refs_ref_ui_def_ref
4329                                   ,'cz_ui_refs.ref_ui_def_id'
4330                                   ,cz_pb_mgr.v_status_code
4331                                   );
4332          insert_into_table('cz_ui_refs'
4333                           ,'ui_def_id'
4334                           ,'ref_ui_def_id'
4335                           ,'model_ref_expl_id'
4336                           ,cz_pb_mgr.v_db_link
4337                           ,plsql_table_list
4338                           ,'cz_pb_mgr.g_ui_refs_old_ui_def_ref'
4339                           ,'cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref'
4340                           ,'cz_pb_mgr.g_ui_refs_expl_id_old_ref'
4341                           ,cz_pb_mgr.g_ui_refs_old_ui_def_ref
4342                           ,cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref
4343                           ,cz_pb_mgr.g_ui_refs_expl_id_old_ref
4344                           );
4345       END IF;
4346 
4347       COMMIT;
4348    EXCEPTION
4349       WHEN OTHERS
4350       THEN
4351          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4352          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIREFS', SQLCODE);
4353          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4354          RAISE;
4355    END;
4356 
4357 ------------------------------------------------------------
4358 -----bulk collect from ui ps maps
4359    PROCEDURE bulk_collect_ui_ps_maps
4360    IS
4361       l_ui_ps_maps_ui_def_tbl cz_pb_mgr.t_ref;
4362       l_ui_ps_maps_ctrl_tmp_tbl cz_pb_mgr.t_ref;
4363       l_ui_ps_maps_page_id_tbl cz_pb_mgr.t_ref;
4364       l_ui_ps_maps_expl_id_tbl cz_pb_mgr.t_ref;
4365       l_ui_ps_maps_elem_sig_tbl cz_pb_mgr.t_ref;
4366       l_ui_ps_maps_ctrl_temp_ui_tbl cz_pb_mgr.t_ref;
4367       l_ui_ps_maps_element_tbl varchar_type_tbl;
4368       l_ui_ps_maps_tgt_pg_ui_def_tbl cz_pb_mgr.t_ref;
4369       rec_count NUMBER := 0;
4370    BEGIN
4371       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4372       THEN
4373          cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.DELETE;
4374          cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref.DELETE;
4375          cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref.DELETE;
4376          cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
4377          cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
4378          cz_pb_mgr.g_ui_ps_maps_expl_id_tbl.DELETE;
4379          cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl.DELETE;
4380          cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl.DELETE;
4381          cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
4382 
4383          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
4384          LOOP
4385             l_ui_ps_maps_ui_def_tbl.DELETE;
4386             l_ui_ps_maps_ctrl_tmp_tbl.DELETE;
4387             l_ui_ps_maps_page_id_tbl.DELETE;
4388             l_ui_ps_maps_element_tbl.DELETE;
4389             l_ui_ps_maps_expl_id_tbl.DELETE;
4390             l_ui_ps_maps_ctrl_temp_ui_tbl.DELETE;
4391             l_ui_ps_maps_elem_sig_tbl.DELETE;
4392             l_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
4393 
4394             BEGIN
4395                SELECT ui_def_id, ctrl_template_id, page_id, element_id
4396                      ,model_ref_expl_id, ctrl_template_ui_def_id, element_signature_id, target_page_ui_def_id
4397                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
4398                      ,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
4399                  FROM cz_ui_page_elements
4403                WHEN NO_DATA_FOUND
4400                 WHERE cz_ui_page_elements.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef)
4401                   AND cz_ui_page_elements.deleted_flag = record_not_deleted;
4402             EXCEPTION
4404                THEN
4405                   NULL;
4406             END;
4407 
4408             IF (l_ui_ps_maps_ui_def_tbl.COUNT > 0)
4409             THEN
4410                rec_count := cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT;
4411 
4412                FOR uimap IN l_ui_ps_maps_ui_def_tbl.FIRST .. l_ui_ps_maps_ui_def_tbl.LAST
4413                LOOP
4414                   rec_count := rec_count + 1;
4415                   cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
4416                  -- cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
4417                   cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref(rec_count) := l_ui_ps_maps_ctrl_tmp_tbl(uimap);
4418                   cz_pb_mgr.g_ui_ps_maps_page_id_tbl(rec_count) := l_ui_ps_maps_page_id_tbl(uimap);
4419                   cz_pb_mgr.g_ui_ps_maps_element_tbl(rec_count) := l_ui_ps_maps_element_tbl(uimap);
4420                   cz_pb_mgr.g_ui_ps_maps_expl_id_tbl(rec_count) := l_ui_ps_maps_expl_id_tbl(uimap);
4421                   cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl(rec_count) := l_ui_ps_maps_ctrl_temp_ui_tbl(uimap);
4422                   cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl(rec_count) := l_ui_ps_maps_elem_sig_tbl(uimap);
4423                   cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl(rec_count) := l_ui_ps_maps_tgt_pg_ui_def_tbl(uimap);
4424                END LOOP;
4425             END IF;
4426          END LOOP;
4427       END IF;
4428    EXCEPTION
4429       WHEN OTHERS
4430       THEN
4431          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_ps_maps', 'SQLERRM', SQLERRM);
4432          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPSMAPS', SQLCODE);
4433          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4434          RAISE;
4435    END bulk_collect_ui_ps_maps;
4436 
4437 ------------------------------------------------------------------------
4438 ----insert into ui_ps_maps
4439    PROCEDURE insert_ui_ps_maps
4440    IS
4441       rec_count NUMBER := 0;
4442       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4443    BEGIN
4444       IF (cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT > 0)
4445       THEN
4446          ----resolve  ui_def_id
4447          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');
4448 
4449          IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
4450            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');
4451            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);
4452          END IF;
4453 
4454          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');
4455          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);
4456 
4457          plsql_table_list.DELETE;
4458          rec_count := 1;
4459          plsql_table_list(rec_count).col_name := 'ui_def_id';
4460          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref';
4461          rec_count := rec_count + 1;
4462          plsql_table_list(rec_count).col_name := 'ctrl_template_id';
4463          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref';
4464          rec_count := rec_count + 1;
4465          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4466          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_expl_id_tbl';
4467          rec_count := rec_count + 1;
4468          plsql_table_list(rec_count).col_name := 'ctrl_template_ui_def_id';
4469          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl';
4470          rec_count := rec_count + 1;
4471          plsql_table_list(rec_count).col_name := 'element_signature_id';
4472          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl';
4473          rec_count := rec_count + 1;
4474          plsql_table_list(rec_count).col_name := 'TARGET_PAGE_UI_DEF_ID';
4475          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl';
4476          -- should call resolve_ids instead
4477          resolve_ref_ids_not_found(cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref
4478                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
4479                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4480                                   ,cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl
4481                                   ,'cz_ui_page_elements.target_page_ui_def_id'
4482                                   ,cz_pb_mgr.v_status_code
4483                                   );
4484          insert_into_table('cz_ui_page_elements'
4485                           ,'ui_def_id'
4486                           ,'page_id'
4487                           ,'element_id'
4488                           ,cz_pb_mgr.v_db_link
4489                           ,plsql_table_list
4490                           ,'cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref'
4491                           ,'cz_pb_mgr.g_ui_ps_maps_page_id_tbl'
4492                           ,'cz_pb_mgr.g_ui_ps_maps_element_tbl'
4493                           ,cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref
4494                           ,cz_pb_mgr.g_ui_ps_maps_page_id_tbl
4495                           ,cz_pb_mgr.g_ui_ps_maps_element_tbl
4496                           );
4497       END IF;
4501          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_elements', 'SQLERRM', SQLERRM);
4498    EXCEPTION
4499       WHEN OTHERS
4500       THEN
4502          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPSMAPS', SQLCODE);
4503          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4504          RAISE;
4505    END insert_ui_ps_maps;
4506 ------------------------------------------------------------
4507    PROCEDURE insert_template_elements(
4508       p_template_id IN NUMBER
4509      ,p_ui_def_id IN NUMBER
4510      ,p_element_type IN NUMBER
4511      ,p_element_id IN NUMBER
4512      ,p_persistent_element_id IN NUMBER
4513      ,p_link_name IN VARCHAR2
4514    )
4515    IS
4516       l_str VARCHAR2(2000);
4517 
4518    --Bug 5525718 - In case of migration the ui_def_id should be 0
4519 
4520      l_ui_def_id              NUMBER := 1;
4521      l_persistent_element_id  CZ_UI_TEMPLATE_ELEMENTS.persistent_element_id%TYPE := p_persistent_element_id;
4522 
4523    BEGIN
4524 
4525       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
4526        l_ui_def_id := 0;
4527        l_persistent_element_id := p_element_id;
4528       END IF;
4529 
4530       l_str :=
4531             'insert into cz_ui_template_elements'
4532          || p_link_name
4533          || '  (TEMPLATE_ID,UI_DEF_ID,'
4534          || ' '
4535          || 'ELEMENT_TYPE,ELEMENT_ID,PERSISTENT_ELEMENT_ID,DELETED_FLAG,seeded_flag)'
4536          || ' '
4537          || 'VALUES (:1,:2,:3,:4,:5,''0'',''0'') ';
4538 
4539       EXECUTE IMMEDIATE l_str
4540                   USING p_template_id,l_ui_def_id, p_element_type, p_element_id, l_persistent_element_id;
4541    EXCEPTION
4542       WHEN OTHERS
4543       THEN
4544          RAISE;
4545    END insert_template_elements;
4546 
4547 -----------------------------------------
4548    PROCEDURE update_template_elements(p_template_id IN NUMBER, p_ui_def_id IN NUMBER, p_link_name IN VARCHAR2)
4549    IS
4550       l_str VARCHAR2(2000);
4551    BEGIN
4552       l_str :=
4553            'DELETE FROM cz_ui_template_elements' || p_link_name || '  t' || ' ' || 'WHERE t.template_id =  :1' || ' ' || 'AND t.ui_def_id   = :2' ;
4554 
4555       EXECUTE IMMEDIATE l_str
4556                   USING p_template_id, p_ui_def_id;
4557    EXCEPTION
4558       WHEN OTHERS
4559       THEN
4560          RAISE;
4561    END update_template_elements;
4562 
4563 -------------------------------------------
4564    PROCEDURE create_uit_publication(
4565       p_template_id IN NUMBER
4566      ,p_old_templ_id IN NUMBER
4567      ,p_source_tgt_flag IN VARCHAR2
4568      ,p_link_name IN VARCHAR2
4569      ,p_server_id IN NUMBER
4570      ,p_src_id IN NUMBER
4571      ,p_tgt_id IN NUMBER
4572    )
4573    IS
4574       l_inst_str VARCHAR2(2000);
4575       l_uit_date DATE;
4576       l_applicable_from DATE := cz_utils.epoch_begin;
4577       l_applicable_until DATE := cz_utils.epoch_end;
4578       l_status NUMBER := 0;
4579       l_ref_cursor ref_cursor;
4580       l_src_pb_id cz_model_publications.publication_id%TYPE;
4581       l_tgt_pb_id cz_model_publications.publication_id%TYPE;
4582       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
4583    BEGIN
4584       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
4585       THEN
4586          l_inst_str :=
4587                'UPDATE cz_model_publications'
4588             || p_link_name
4589             || ' t'
4590             || ' '
4591             || 'SET   t.last_update_date = sysdate'
4592             || ' '
4593             || 'WHERE t.object_id = :1'
4594             || ' '
4595             || 'AND  t.object_type = ''UIT'''
4596             || ' '
4597             || 'AND  t.server_id = :2'
4598             || ' '
4599             || 'AND  t.source_target_flag = :3'
4600             || ' '
4601             || 'AND  t.deleted_flag = ''0'' ';
4602 
4603          EXECUTE IMMEDIATE l_inst_str
4604                      USING p_template_id, cz_pb_mgr.v_server_id, p_source_tgt_flag;
4605 
4606          IF (SQL%ROWCOUNT = 0)
4607          THEN
4608             IF (p_source_tgt_flag = g_source_flag)
4609             THEN
4610                l_src_pb_id := p_src_id;
4611                l_tgt_pb_id := p_tgt_id;
4612             ELSIF(p_source_tgt_flag = g_target_flag)
4613             THEN
4614                l_src_pb_id := p_tgt_id;
4615                l_tgt_pb_id := p_src_id;
4616             END IF;
4617 
4618             l_inst_str :=
4619                   'INSERT INTO cz_model_publications'
4620                || p_link_name
4621                || ' '
4622                || '(PUBLICATION_ID,'
4623                || ' '
4624                || 'MODEL_ID,'
4625                || ' '
4626                || 'OBJECT_ID,'
4627                || ' '
4628                || 'OBJECT_TYPE,'
4629                || ' '
4630                || 'SERVER_ID,'
4631                || ' '
4632                || 'PUBLICATION_MODE,'
4633                || ' '
4634                || 'UI_DEF_ID,'
4635                || ' '
4636                || 'UI_STYLE,'
4637                || ' '
4638                || 'APPLICABLE_FROM,'
4639                || ' '
4640                || 'APPLICABLE_UNTIL,'
4641                || ' '
4642                || 'EXPORT_STATUS,'
4643                || ' '
4644                || 'DELETED_FLAG,'
4645                || ' '
4646                || 'MODEL_LAST_STRUCT_UPDATE,'
4650                || 'MODEL_LAST_UPDATED,'
4647                || ' '
4648                || 'MODEL_LAST_LOGIC_UPDATE,'
4649                || ' '
4651                || ' '
4652                || 'SOURCE_TARGET_FLAG,'
4653                || ' '
4654                || 'SOURCE_MODEL_ID,'
4655                || ' '
4656                || 'disabled_flag,'
4657                || ' '
4658                || 'remote_publication_id )'
4659                || ' '
4660                || 'SELECT :1,:2,:3,''UIT'',:4,'''
4661                || l_pub_mode
4662                || ''',1,7,:5,:6,''OK'',''0'',sysdate,sysdate,sysdate,:7,:8, 0,:9 FROM  dual';
4663 
4664             EXECUTE IMMEDIATE l_inst_str
4665                         USING l_src_pb_id
4666                              ,p_template_id
4667                              ,p_template_id
4668                              ,p_server_id
4669                              ,l_applicable_from
4670                              ,l_applicable_until
4671                              ,p_source_tgt_flag
4672                              ,p_old_templ_id
4673                              ,l_tgt_pb_id;
4674          END IF;
4675       END IF;
4676 
4677       COMMIT;
4678    EXCEPTION
4679       WHEN OTHERS
4680       THEN
4681          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4682          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
4683          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
4684          RAISE;
4685    END create_uit_publication;
4686 
4687 --------------------------------
4688    PROCEDURE insert_template_elements
4689    IS
4690       l_src_pb_id NUMBER;
4691       l_tgt_pb_id NUMBER;
4692       rec_count NUMBER := 0;
4693 
4694       l_upd_template_ids_tbl t_ref;
4695       l_str                  VARCHAR2(4000);
4696       l_ui_def_id            NUMBER;
4697 
4698    BEGIN
4699       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))
4700       THEN
4701 
4702          IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model)
4703          THEN
4704            l_ui_def_id := 0;
4705          ELSE
4706            l_ui_def_id := 1;
4707          END IF;
4708 
4709          l_str := 'update cz_ui_templates'|| CZ_PB_MGR.v_db_link || '  set template_rev_nbr=template_rev_nbr+1 '
4710                    || ' where template_id=:1 and ui_def_id=:2';
4711 
4712          FOR i IN l_template_id_ref.FIRST..l_template_id_ref.LAST
4713          LOOP
4714            IF NOT(l_upd_template_ids_tbl.EXISTS(l_template_id_ref(i))) THEN
4715              update_template_elements(l_template_id_ref(i), l_ui_def_id, CZ_PB_MGR.v_db_link);
4716 
4717              IF l_ui_def_id = 0 THEN -- bump up template_rev_nvr only in case of Migration --
4718                 EXECUTE IMMEDIATE l_str
4719                   USING CZ_PB_MGR.l_template_id_ref(i), l_ui_def_id;
4720              END IF;
4721 
4722              l_upd_template_ids_tbl(l_template_id_ref(i)) := i;
4723            END IF;
4724          END LOOP;
4725 
4726          --Removing a call to resolve_ids here. The problem with this call is that l_element_id_ref table contains elements of all
4727          --types (rules, texts and actions), while the resolution was made against g_ui_actions_id_idx_ref, which contains only
4728          --actions. So, there was a possibility that some other element type id will get overriden. The resolution is moved to the
4729          --collect_global_actions procedure.
4730          FOR i IN CZ_PB_MGR.l_template_id_ref.FIRST .. CZ_PB_MGR.l_template_id_ref.LAST
4731          LOOP
4732             -----insert into cz_ui_template_elements
4733             insert_template_elements(CZ_PB_MGR.l_template_id_ref(i)
4734                                     ,l_ui_def_id
4735                                     ,CZ_PB_MGR.l_element_type_ref(i)
4736                                     ,CZ_PB_MGR.l_element_id_ref(i)
4737                                     ,CZ_PB_MGR.l_pers_elem_ref(i)
4738                                     ,CZ_PB_MGR.v_db_link
4739                                     );
4740          END LOOP;
4741 
4742       END IF;
4743 
4744       COMMIT;
4745 
4746       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)
4747       THEN
4748          -- array already has the new ids
4749          -- resolve_ids(cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve global templates');
4750 
4751          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
4752          LOOP
4753             IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
4754             THEN
4755                SELECT cz_model_publications_s.NEXTVAL
4756                  INTO l_src_pb_id
4757                  FROM DUAL;
4758 
4759                l_tgt_pb_id :=
4760                   cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
4761                                              , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
4762                                              ,cz_pb_mgr.v_oraclesequenceincr
4763                                              );
4764 
4765           --     IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
4766                   create_uit_publication(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4767                                         ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4771                                         ,l_src_pb_id
4768                                         ,g_source_flag
4769                                         ,' '
4770                                         ,cz_pb_mgr.v_server_id
4772                                         ,l_tgt_pb_id
4773                                         );
4774                   create_uit_publication(cz_pb_mgr.g_ui_templates_new_temp_id_ref(i)
4775                                         ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4776                                         ,g_target_flag
4777                                         ,cz_pb_mgr.v_db_link
4778                                         ,cz_pb_mgr.v_server_id
4779                                         ,l_src_pb_id
4780                                         ,l_tgt_pb_id
4781                                         );
4782           --     END IF;
4783             END IF;
4784          END LOOP;
4785       END IF;
4786 
4787       COMMIT;
4788    EXCEPTION
4789       WHEN OTHERS
4790       THEN
4791         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4792         cz_pb_mgr.v_err_message  := SQLERRM;
4793         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERT_TEMPLATE_ELEMENTS', SQLCODE);
4794         cz_pb_mgr.global_export_retcode := 2;
4795         rollback_data(cz_pb_mgr.v_db_link);
4796         RAISE;
4797    END insert_template_elements;
4798 
4799 ------------------------------------------------------------
4800 ----insert into cz_ui_templates
4801    PROCEDURE insert_ui_templates
4802    IS
4803       rec_count NUMBER := 0;
4804       plsql_table_list cz_pb_mgr.col_plsql_table_list;
4805       failed_to_lock_template EXCEPTION;
4806       failed_to_unlock_template EXCEPTION;
4807       l_locked_templates cz_security_pvt.number_type_tbl;
4808       l_templates_to_lock cz_security_pvt.number_type_tbl;
4809       l_return_status VARCHAR2(1);
4810       l_msg_count NUMBER;
4811       l_msg_data VARCHAR2(2000);
4812       l_msg_index NUMBER;
4813    BEGIN
4814       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT = 0) THEN RETURN; END IF;
4815 
4816          ----lock content templates to be moved
4817          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
4818          LOOP
4819             l_templates_to_lock(l_templates_to_lock.COUNT + 1) := cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
4820          END LOOP;
4821 
4822          cz_security_pvt.lock_template(1.0
4823                                       ,l_templates_to_lock
4824                                       ,fnd_api.g_true
4825                                       ,fnd_api.g_true
4826                                       ,l_locked_templates
4827                                       ,l_return_status
4828                                       ,l_msg_count
4829                                       ,l_msg_data
4830                                       );
4831 
4832          IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
4833          THEN
4834             RAISE failed_to_lock_template;
4835          END IF;
4836 
4837          -----resplve templates
4838          --bug 5191745
4839          --before the fix, even for model migration, the ui_def_ids were being populated
4840          --with a value of '1' for CZ_UI_TEMPLATES record.
4841          --The ideal fix would have been to call 'resolve_tmpl_ui_defs' on its own, because
4842          --'resolve_tmpl_ui_defs' already checks for model migration condition
4843          --and assigns the ui_def_id correctly.
4844          --But there is a possibility that it would introduce regression in publishing
4845          --and taking the safer route here.
4846          IF (cz_pb_mgr.v_session_parameter = pub_model)
4847          THEN
4848             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');
4849          ELSE
4850             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');
4851          END IF;
4852          -----resolve button bar templates
4853          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');
4854          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);
4855 
4856          ----copy xml doc
4857          -- IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0) THEN
4858             FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
4859             LOOP
4860                IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
4861                THEN
4862                   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);
4863                END IF;
4864             END LOOP;
4865          -- END IF;
4866 
4867          -- main msg and title intl text records handled in insert_jrad_ui_intl_texts
4868          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');
4869          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');
4870 
4871          plsql_table_list.DELETE;
4872          rec_count := 1;
4873          plsql_table_list(rec_count).col_name := 'template_id';
4874          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
4875 
4876          rec_count := rec_count + 1;
4880          plsql_table_list(rec_count).col_name := 'title_id';
4877          plsql_table_list(rec_count).col_name := 'main_message_id';
4878          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_msg_id_ref';
4879          rec_count := rec_count + 1;
4881          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_title_ref';
4882          rec_count := rec_count + 1;
4883          plsql_table_list(rec_count).col_name := 'ui_def_id';
4884          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_ui_def_new_ref';
4885          rec_count := rec_count + 1;
4886          plsql_table_list(rec_count).col_name := 'jrad_doc';
4887          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_jrad_new_ref';
4888          rec_count := rec_count + 1;
4889          plsql_table_list(rec_count).col_name := 'button_bar_template_id';
4890          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_button_tbl';
4891          rec_count := rec_count + 1;
4892          plsql_table_list(rec_count).col_name := 'button_bar_templ_uidef_id';
4893          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_but_uidef_id';
4894 
4895          insert_into_table('CZ_UI_TEMPLATES'
4896                              ,'template_id'
4897                              ,'ui_def_id'
4898                              ,cz_pb_mgr.v_db_link
4899                              ,plsql_table_list
4900                              ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
4901                              ,'cz_pb_mgr.g_ui_templates_ui_def_old_ref'
4902                              ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
4903                              ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
4904                              );
4905          IF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
4906             refresh_global_templates(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
4907          END IF;
4908 
4909          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
4910             ----------begin insert into cz_rp_entries----------------
4911             plsql_table_list.DELETE;
4912             rec_count := 1;
4913             plsql_table_list(rec_count).col_name := 'object_id';
4914             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
4915             rec_count := rec_count + 1;
4916             plsql_table_list(rec_count).col_name := 'object_type';
4917             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_obj_type';
4918             rec_count := rec_count + 1;
4919             plsql_table_list(rec_count).col_name := 'enclosing_folder';
4920             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
4921             insert_into_rp_entries('cz_rp_entries'
4922                                   ,'object_id'
4923                                   ,'object_type'
4924                                   ,cz_pb_mgr.v_db_link
4925                                   ,plsql_table_list
4926                                   ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
4927                                   ,'cz_pb_mgr.g_ui_templates_obj_type'
4928                                   ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
4929                                   ,cz_pb_mgr.g_ui_templates_obj_type
4930                                   );
4931          ----------end insert into cz_rp_entries----------------
4932          END IF;
4933       -- END IF;
4934 
4935       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);
4936 
4937       IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
4938       THEN
4939          RAISE failed_to_unlock_template;
4940       END IF;
4941    EXCEPTION
4942       WHEN failed_to_lock_template
4943       THEN
4944          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4945          l_msg_index := 1;
4946 
4947          WHILE l_msg_count > 0
4948          LOOP
4949             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
4950             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
4951             l_msg_index := l_msg_index + 1;
4952             l_msg_count := l_msg_count - 1;
4953          END LOOP;
4954 
4955          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);
4956          raise_application_error('-20020', 'FAILED_TO_LOCK_TEMPLATE');
4957       WHEN failed_to_unlock_template
4958       THEN
4959          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4960          l_msg_index := 1;
4961 
4962          WHILE l_msg_count > 0
4963          LOOP
4964             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
4965             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
4966             l_msg_index := l_msg_index + 1;
4967             l_msg_count := l_msg_count - 1;
4968          END LOOP;
4969 
4970          raise_application_error('-20030', 'FAILED_TO_UNLOCK_TEMPLATE');
4971       WHEN OTHERS
4972       THEN
4973          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);
4974          RAISE;
4975    END insert_ui_templates;
4976 
4977 --------------------------------------------------------------
4978 ----bulk collect from cz_ui_cont_type_templs
4979    PROCEDURE bulk_collect_cont_type_templs(p_cz_ui_defs_old_oa_ref cz_pb_mgr.t_ref)
4980    IS
4981       l_cnt_typ_tmpls_tmpid_tbl cz_pb_mgr.t_ref;
4985       rec_count NUMBER := 0;
4982       l_cnt_typ_tmpls_uidef_tbl cz_pb_mgr.t_ref;
4983       l_cnt_typ_tmpls_tgtuidef_tbl cz_pb_mgr.t_ref;
4984       l_cnt_typ_tmpls_cont_tbl cz_pb_mgr.t_ref;
4986    BEGIN
4987       IF (p_cz_ui_defs_old_oa_ref.COUNT > 0)
4988       THEN
4989          cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref.DELETE;
4990          cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.DELETE;
4991          cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.DELETE;
4992 
4993          FOR uidef IN p_cz_ui_defs_old_oa_ref.FIRST .. p_cz_ui_defs_old_oa_ref.LAST
4994          LOOP
4995             l_cnt_typ_tmpls_tmpid_tbl.DELETE;
4996             l_cnt_typ_tmpls_uidef_tbl.DELETE;
4997             l_cnt_typ_tmpls_cont_tbl.DELETE;
4998             l_cnt_typ_tmpls_tgtuidef_tbl.DELETE;
4999 
5000             IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
5001             THEN
5002                SELECT ui_def_id, template_id, template_ui_def_id, content_type
5003                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
5004                  FROM cz_ui_cont_type_templs
5005                 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;
5006             ELSE
5007                SELECT ui_def_id, template_id, template_ui_def_id, content_type
5008                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
5009                  FROM cz_ui_cont_type_templs
5010                 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef)
5011                   AND cz_ui_cont_type_templs.seeded_flag <> seed_data
5012                   AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted
5013                   AND cz_ui_cont_type_templs.master_template_flag <> '1';
5014             END IF;
5015 
5016             IF (l_cnt_typ_tmpls_uidef_tbl.COUNT > 0)
5017             THEN
5018                rec_count := cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.COUNT;
5019 
5020                FOR uitmp IN l_cnt_typ_tmpls_uidef_tbl.FIRST .. l_cnt_typ_tmpls_uidef_tbl.LAST
5021                LOOP
5022                   rec_count := rec_count + 1;
5023                   cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref(rec_count) := l_cnt_typ_tmpls_tmpid_tbl(uitmp);
5024                   cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5025                  -- cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5026                   cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref(rec_count) := l_cnt_typ_tmpls_tgtuidef_tbl(uitmp);
5027                   cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(rec_count) := l_cnt_typ_tmpls_cont_tbl(uitmp);
5028                END LOOP;
5029             END IF;
5030          END LOOP;
5031       END IF;
5032    EXCEPTION
5033       WHEN NO_DATA_FOUND
5034       THEN
5035          NULL;
5036       WHEN OTHERS
5037       THEN
5038          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_cont_templates', 'SQLERRM', SQLERRM);
5039          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UICONTTEMPLATES', SQLCODE);
5040          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5041          RAISE;
5042    END bulk_collect_cont_type_templs;
5043 
5044 --------------------------------------------------------------------------
5045 ----bulk collect from cz_ui_cont_type_templs
5046    PROCEDURE bulk_collect_ui_actions(p_old_ui_def_tbl IN cz_pb_mgr.t_ref)
5047    IS
5048       l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
5049       l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
5050       l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
5051       l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
5052       l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
5053       l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
5054       l_prcpg_templ_tbl cz_pb_mgr.t_ref;
5055       l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
5056       l_prc_caption_tbl cz_pb_mgr.t_ref;
5057       l_pg_title_tbl    cz_pb_mgr.t_ref;
5058       l_main_msg_tbl    cz_pb_mgr.t_ref;
5059       rec_count NUMBER;
5060    BEGIN
5061       IF (p_old_ui_def_tbl.COUNT > 0) THEN
5062          rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
5063 
5064          FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5065          LOOP
5066             l_ui_actns_ui_act_id_tbl.DELETE;
5067             l_ui_actns_ui_uidef_tbl.DELETE;
5068             l_ui_actns_ui_tgtui_tbl.DELETE;
5069             l_ui_actns_tgtexpl_tbl.DELETE;
5070             l_ui_actns_ctx_comp_tbl.DELETE;
5071             l_ui_actns_ren_cond_tbl.DELETE;
5072             l_prcpg_templ_tbl.DELETE;
5073 	    l_prcpg_tmpui_tbl.DELETE;
5074 	    l_prc_caption_tbl.DELETE;
5075 	    l_pg_title_tbl.DELETE;
5076             l_main_msg_tbl.DELETE;
5077 
5078             SELECT ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
5079                   ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
5080                   ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
5081             BULK COLLECT INTO l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
5082                   ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
5083                   ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
5084               FROM cz_ui_actions
5085              WHERE cz_ui_actions.ui_def_id = p_old_ui_def_tbl(uidef)
5086                AND cz_ui_actions.deleted_flag = record_not_deleted
5090                FOR uitmp IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
5087                AND cz_ui_actions.seeded_flag <> seed_data;
5088 
5089             IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
5091                LOOP
5092                   rec_count := rec_count + 1;
5093                   cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5094                   cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5095                   cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(uitmp);
5096                   cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(uitmp);
5097                   cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(uitmp);
5098                   cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(uitmp);
5099                   cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(uitmp);
5100                   cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(uitmp);
5101                   cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(uitmp);
5102                   cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(uitmp);
5103                   cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(uitmp);
5104                   cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(uitmp);
5105                END LOOP;
5106             END IF;
5107          END LOOP;
5108       END IF;
5109    EXCEPTION
5110       WHEN NO_DATA_FOUND
5111       THEN
5112          NULL;
5113       WHEN OTHERS
5114       THEN
5115          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
5116          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
5117          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5118          RAISE;
5119    END bulk_collect_ui_actions;
5120 
5121 ----------------------------------------------------------
5122 ----bulk collect from cz_ui_cont_type_templs
5123    PROCEDURE bulk_collect_ui_images(p_old_ui_def_tbl cz_pb_mgr.t_ref)
5124    IS
5125       l_ui_images_ui_tbl cz_pb_mgr.t_ref;
5126       l_ui_images_usg_tbl cz_pb_mgr.t_ref;
5127       l_ui_images_enty_tbl cz_pb_mgr.t_ref;
5128       rec_count NUMBER := 0;
5129    BEGIN
5130       IF (p_old_ui_def_tbl.COUNT > 0)
5131       THEN
5132          cz_pb_mgr.v_ui_images_ui_ref.DELETE;
5133          cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
5134          cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
5135          cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
5136 
5137          FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5138          LOOP
5139             l_ui_images_ui_tbl.DELETE;
5140 
5141             SELECT ui_def_id, image_usage_code, entity_code
5142             BULK COLLECT INTO l_ui_images_ui_tbl, l_ui_images_usg_tbl, l_ui_images_enty_tbl
5143               FROM cz_ui_images
5144              WHERE cz_ui_images.ui_def_id = p_old_ui_def_tbl(uidef)
5145                AND cz_ui_images.deleted_flag = record_not_deleted
5146                AND cz_ui_images.seeded_flag <> seed_data;
5147 
5148             IF (l_ui_images_ui_tbl.COUNT > 0)
5149             THEN
5150                rec_count := cz_pb_mgr.v_ui_images_ui_tbl.COUNT;
5151 
5152                FOR uitmp IN l_ui_images_ui_tbl.FIRST .. l_ui_images_ui_tbl.LAST
5153                LOOP
5154                   rec_count := rec_count + 1;
5155                  -- cz_pb_mgr.v_ui_images_ui_ref(rec_count) := l_ui_images_ui_tbl(uitmp);
5156                   cz_pb_mgr.v_ui_images_ui_tbl(rec_count) := l_ui_images_ui_tbl(uitmp);
5157                   cz_pb_mgr.v_ui_images_usg_tbl(rec_count) := l_ui_images_usg_tbl(uitmp);
5158                   cz_pb_mgr.v_ui_images_enty_tbl(rec_count) := l_ui_images_enty_tbl(uitmp);
5159                END LOOP;
5160             END IF;
5161          END LOOP;
5162       END IF;
5163    EXCEPTION
5164       WHEN NO_DATA_FOUND
5165       THEN
5166          NULL;
5167       WHEN OTHERS
5168       THEN
5169          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_images', 'SQLERRM', SQLERRM);
5170          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIIMAGES', SQLCODE);
5171          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5172          RAISE;
5173    END bulk_collect_ui_images;
5174 
5175 ----------------------------------------------------------
5176 ----procedure that returns global templates
5177    PROCEDURE get_global_templates(
5178       p_templates_tbl IN cz_pb_mgr.t_ref
5179      ,x_global_templates_tbl OUT NOCOPY cz_pb_mgr.t_ref
5180      ,x_not_global_templ_tbl OUT NOCOPY cz_pb_mgr.t_ref
5181    )
5182    IS
5183       rec_count NUMBER := 0;
5184       l_tmp_id NUMBER := 0;
5185    BEGIN
5186       IF (p_templates_tbl.COUNT > 0)
5187       THEN
5188          FOR tempid IN p_templates_tbl.FIRST .. p_templates_tbl.LAST
5189          LOOP
5190             BEGIN
5191                SELECT 1
5192                  INTO l_tmp_id
5193                  FROM cz_ui_templates
5194                 WHERE cz_ui_templates.ui_def_id IS NULL AND cz_ui_templates.template_id = p_templates_tbl(tempid);
5195             EXCEPTION
5196                WHEN NO_DATA_FOUND
5197                THEN
5198                   l_tmp_id := 0;
5199             END;
5200 
5201             IF (l_tmp_id = 1)
5202             THEN
5206                rec_count := x_global_templates_tbl.COUNT + 1;
5203                rec_count := x_global_templates_tbl.COUNT + 1;
5204                x_global_templates_tbl(rec_count) := p_templates_tbl(tempid);
5205             ELSE
5207                x_not_global_templ_tbl(rec_count) := p_templates_tbl(tempid);
5208             END IF;
5209          END LOOP;
5210       END IF;
5211    EXCEPTION
5212       WHEN OTHERS
5213       THEN
5214          RAISE;
5215    END get_global_templates;
5216 
5217 -----------------------------------------------------------------------------
5218    PROCEDURE copy_jrad_docs
5219    IS
5220       l_new_document VARCHAR2(255);
5221    BEGIN
5222       pbdebug := 22035;
5223 
5224       IF (cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.COUNT > 0)
5225       THEN
5226          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
5227          LOOP
5228             l_new_document :=
5229                REPLACE(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc)
5230                       ,TO_CHAR(cz_pb_mgr.g_pages_ui_def_old_ref(doc))
5231                       ,TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_pages_ui_def_old_ref(doc)))
5232                       );
5233             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');
5234             cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc) := l_new_document;
5235          END LOOP;
5236       END IF;
5237    EXCEPTION
5238       WHEN OTHERS
5239       THEN
5240          RAISE;
5241    END copy_jrad_docs;
5242 
5243 ---------------------------------------------------------------------
5244    PROCEDURE copy_train_docs
5245    IS
5246       l_new_document VARCHAR2(255);
5247    BEGIN
5248       IF (cz_pb_mgr.g_page_sets_jrad_doc_ref.COUNT > 0)
5249       THEN
5250          FOR doc IN cz_pb_mgr.g_page_sets_jrad_doc_ref.FIRST .. cz_pb_mgr.g_page_sets_jrad_doc_ref.LAST
5251          LOOP
5252             l_new_document :=
5253                REPLACE(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc)
5254                       ,'ui' || TO_CHAR(cz_pb_mgr.g_page_sets_ui_old_ref(doc))
5255                       ,'ui' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_page_sets_ui_old_ref(doc)))
5256                       );
5257             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');
5258             cz_pb_mgr.g_page_sets_jrad_doc_ref(doc) := l_new_document;
5259          END LOOP;
5260       END IF;
5261    EXCEPTION
5262       WHEN OTHERS
5263       THEN
5264          RAISE;
5265    END copy_train_docs;
5266 
5267 ---------------------------------------------
5268    PROCEDURE insert_ref_templates
5269    IS
5270       l_template_id_tbl cz_pb_mgr.t_ref;
5271       l_ref_template_id_tbl cz_pb_mgr.t_ref;
5272       l_template_ui_tbl cz_pb_mgr.t_ref;
5273       l_ref_templ_ui_tbl cz_pb_mgr.t_ref;
5274       rec_count NUMBER := 0;
5275       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5276    BEGIN
5277       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
5278       THEN
5279          cz_pb_mgr.g_template_id_ref.DELETE;
5280          cz_pb_mgr.g_ref_template_id_ref.DELETE;
5281          cz_pb_mgr.g_template_ui_ref.DELETE;
5282          cz_pb_mgr.g_ref_templ_ui_ref.DELETE;
5283          cz_pb_mgr.g_template_id_old_ref.DELETE;
5284          cz_pb_mgr.g_ref_template_id_old_ref.DELETE;
5285 
5286          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
5287          LOOP
5288             l_template_id_tbl.DELETE;
5289             l_ref_template_id_tbl.DELETE;
5290             l_template_ui_tbl.DELETE;
5291             l_ref_templ_ui_tbl.DELETE;
5292 
5293             BEGIN
5294                SELECT template_id, ref_template_id, template_ui_def_id, ref_template_ui_def_id
5295                BULK COLLECT INTO l_template_id_tbl, l_ref_template_id_tbl, l_template_ui_tbl, l_ref_templ_ui_tbl
5296                  FROM cz_ui_ref_templates
5297                 WHERE cz_ui_ref_templates.template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i) AND cz_ui_ref_templates.deleted_flag = '0';
5298             EXCEPTION
5299                WHEN NO_DATA_FOUND
5300                THEN
5301                   NULL;
5302             END;
5303 
5304             IF (l_template_id_tbl.COUNT > 0)
5305             THEN
5306                rec_count := cz_pb_mgr.g_TEMPLATE_ID_old_ref.COUNT;
5307 
5308                FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
5309                LOOP
5310                   rec_count := rec_count + 1;
5311                  -- cz_pb_mgr.g_template_id_ref(rec_count) := l_template_id_tbl(j);
5312                   cz_pb_mgr.g_ref_template_id_ref(rec_count) := l_ref_template_id_tbl(j);
5313                   cz_pb_mgr.g_ref_template_id_old_ref(rec_count) := l_ref_template_id_tbl(j);
5314                   cz_pb_mgr.g_template_ui_ref(rec_count) := l_template_ui_tbl(j);
5315                   cz_pb_mgr.g_ref_templ_ui_ref(rec_count) := l_ref_templ_ui_tbl(j);
5316                   cz_pb_mgr.g_template_id_old_ref(rec_count) := l_template_id_tbl(j);
5317                END LOOP;
5318             END IF;
5319          END LOOP;
5320 
5321          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');
5325          plsql_table_list.DELETE;
5322          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);
5323          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');
5324          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');
5326          rec_count := 1;
5327          plsql_table_list(rec_count).col_name := 'template_id';
5328          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_ID_ref';
5329          rec_count := rec_count + 1;
5330          plsql_table_list(rec_count).col_name := 'ref_template_id';
5331          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref';
5332          rec_count := rec_count + 1;
5333          plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5334          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_UI_ref';
5335          rec_count := rec_count + 1;
5336          plsql_table_list(rec_count).col_name := 'ref_template_ui_def_id';
5337          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPL_UI_ref';
5338          insert_into_table('CZ_UI_REF_TEMPLATES'
5339                           ,'template_id'
5340                           ,'ref_template_id'
5341                           ,cz_pb_mgr.v_db_link
5342                           ,plsql_table_list
5343                           ,'cz_pb_mgr.g_TEMPLATE_ID_old_ref'
5344                           ,'cz_pb_mgr.g_REF_TEMPLATE_ID_old_ref'
5345                           ,cz_pb_mgr.g_template_id_old_ref
5346                           ,cz_pb_mgr.g_ref_template_id_old_ref
5347                           );
5348       END IF;
5349    EXCEPTION
5350       WHEN OTHERS
5351       THEN
5352          RAISE;
5353    END insert_ref_templates;
5354 
5355 ------------------------------------------------------
5356    PROCEDURE export_signatures(p_sig_array IN t_ref)
5357    IS
5358       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5359       l_signature_new_tbl cz_pb_mgr.t_ref;
5360       l_signature_old_tbl cz_pb_mgr.t_ref;
5361       l_arg_sig_tbl cz_pb_mgr.t_ref;
5362       l_data_sig_tbl cz_pb_mgr.t_ref;
5363       l_sig_count NUMBER := 0;
5364       rec_count NUMBER := 0;
5365       l_arg_ind_tbl cz_pb_mgr.t_ref;
5366    BEGIN
5367       IF (p_sig_array.COUNT > 0)
5368       THEN
5369          cz_pb_mgr.v_sig_new_ref.DELETE;
5370          cz_pb_mgr.v_sig_old_ref.DELETE;
5371          cz_pb_mgr.v_sig_idx_ref.DELETE;
5372          cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
5373          cz_pb_mgr.v_arg_sig_tbl.DELETE;
5374          cz_pb_mgr.v_data_sig_tbl.DELETE;
5375 
5376          FOR sigid IN p_sig_array.FIRST .. p_sig_array.LAST
5377          LOOP
5378             l_signature_old_tbl.DELETE;
5379             l_signature_new_tbl.DELETE;
5380 
5381             BEGIN
5382                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_signatures_seq
5383                                                  , 'cz_signatures_s.nextval' || cz_pb_mgr.v_db_link
5384                                                  ,cz_pb_mgr.v_oraclesequenceincr
5385                                                  )
5386                      ,signature_id
5387                BULK COLLECT INTO l_signature_new_tbl
5388                      ,l_signature_old_tbl
5389                  FROM cz_signatures
5390                 WHERE cz_signatures.signature_id = p_sig_array(sigid)
5391                   AND cz_signatures.deleted_flag = record_not_deleted
5392                   AND cz_signatures.seeded_flag <> seed_data;
5393             EXCEPTION
5394                WHEN NO_DATA_FOUND
5395                THEN
5396                   NULL;
5397             END;
5398 
5399             IF (l_signature_old_tbl.COUNT > 0)
5400             THEN
5401                FOR i IN l_signature_old_tbl.FIRST .. l_signature_old_tbl.LAST
5402                LOOP
5403                   IF (NOT cz_pb_mgr.v_sig_idx_ref.EXISTS(l_signature_old_tbl(i)))
5404                   THEN
5405                      l_sig_count := cz_pb_mgr.v_sig_new_ref.COUNT + 1;
5406                      cz_pb_mgr.v_sig_new_ref(l_sig_count) := l_signature_new_tbl(i);
5407                      cz_pb_mgr.v_sig_old_ref(l_sig_count) := l_signature_old_tbl(i);
5408                      cz_pb_mgr.v_sig_idx_ref(l_signature_old_tbl(i)):=l_signature_new_tbl(i);
5409                   END IF;
5410                END LOOP;
5411             END IF;
5412          END LOOP;
5413 
5414          plsql_table_list.DELETE;
5415          rec_count := 1;
5416          plsql_table_list(rec_count).col_name := 'signature_id';
5417          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_sig_new_ref';
5418          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);
5419       END IF;
5420 
5421       IF (cz_pb_mgr.v_sig_old_ref.COUNT > 0)
5422       THEN
5423          FOR j IN cz_pb_mgr.v_sig_old_ref.FIRST .. cz_pb_mgr.v_sig_old_ref.LAST
5424          LOOP
5425             SELECT argument_signature_id, datatype_signature_id, argument_index
5426             BULK COLLECT INTO l_arg_sig_tbl, l_data_sig_tbl, l_arg_ind_tbl
5427               FROM cz_signature_arguments
5428              WHERE cz_signature_arguments.argument_signature_id = cz_pb_mgr.v_sig_old_ref(j)
5429                AND cz_signature_arguments.deleted_flag = record_not_deleted
5430                AND cz_signature_arguments.seeded_flag <> seed_data;
5431 
5435                LOOP
5432             IF (l_arg_sig_tbl.COUNT > 0)
5433             THEN
5434                FOR k IN l_arg_sig_tbl.FIRST .. l_arg_sig_tbl.LAST
5436                   l_sig_count := cz_pb_mgr.v_arg_sig_old_tbl.COUNT + 1;
5437                   cz_pb_mgr.v_arg_sig_old_tbl(l_sig_count) := l_arg_sig_tbl(k);
5438                  -- cz_pb_mgr.v_arg_sig_tbl(l_sig_count) := l_arg_sig_tbl(k);
5439                   cz_pb_mgr.v_data_sig_tbl(l_sig_count) := l_data_sig_tbl(k);
5440                   cz_pb_mgr.v_arg_ind_old_tbl(l_sig_count) := l_arg_ind_tbl(k);
5441                END LOOP;
5442             END IF;
5443          END LOOP;
5444 
5445          ----resolve ids
5446          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');
5447          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);
5448          plsql_table_list.DELETE;
5449          rec_count := 1;
5450          plsql_table_list(rec_count).col_name := 'argument_signature_id';
5451          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_sig_tbl';
5452          rec_count := rec_count + 1;
5453          plsql_table_list(rec_count).col_name := 'datatype_signature_id';
5454          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_data_sig_tbl';
5455          rec_count := rec_count + 1;
5456          plsql_table_list(rec_count).col_name := 'argument_index';
5457          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_ind_old_tbl';
5458          insert_into_table('cz_signature_arguments'
5459                           ,'argument_signature_id'
5460                           ,'argument_index'
5461                           ,cz_pb_mgr.v_db_link
5462                           ,plsql_table_list
5463                           ,'cz_pb_mgr.v_arg_sig_old_tbl'
5464                           ,'cz_pb_mgr.v_arg_ind_old_tbl'
5465                           ,cz_pb_mgr.v_arg_sig_old_tbl
5466                           ,cz_pb_mgr.v_arg_ind_old_tbl
5467                           );
5468          l_signature_new_tbl.DELETE;
5469          l_signature_old_tbl.DELETE;
5470          l_arg_sig_tbl.DELETE;
5471          l_data_sig_tbl.DELETE;
5472       END IF;
5473    EXCEPTION
5474       WHEN OTHERS
5475       THEN
5476          cz_pb_mgr.v_err_message := 'Insert into signature sets for: ' || SQLERRM;
5477          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SIGNATURESETS', SQLCODE);
5478          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5479          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
5480          RAISE;
5481    END export_signatures;
5482 
5483 -------------------------------------------------------------------------------
5484    PROCEDURE insert_jrad_ui_intl_texts
5485    IS
5486       l_intl_text_id_tbl cz_pb_mgr.t_ref;
5487       rec_count NUMBER := 0;
5488    BEGIN
5489       cz_pb_mgr.g_intl_text_id_ref.DELETE;
5490 
5491       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
5492          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
5493          LOOP
5494             l_intl_text_id_tbl.DELETE;
5495 
5496             BEGIN
5497                SELECT intl_text_id
5498                BULK COLLECT INTO l_intl_text_id_tbl
5499                  FROM cz_intl_texts txt, cz_ui_defs ui
5500                 WHERE txt.model_id = cz_pb_mgr.v_models_to_be_exported(i)
5501                   AND txt.deleted_flag = '0'
5502                   AND NVL(txt.seeded_flag, '0') = '0'
5503                   AND NVL(txt.ui_def_id, -1) = ui.ui_def_id
5504                   AND txt.model_id = ui.devl_project_id
5505                   AND ui.deleted_flag = '0' AND ui_style = g_ui_style_jrad;
5506             EXCEPTION
5507                WHEN NO_DATA_FOUND THEN
5508                   NULL;
5509             END;
5510 
5511             IF (l_intl_text_id_tbl.COUNT > 0) THEN
5512                FOR j IN l_intl_text_id_tbl.FIRST .. l_intl_text_id_tbl.LAST
5513                LOOP
5514                   rec_count := rec_count + 1;
5515                   cz_pb_mgr.g_intl_text_id_ref(rec_count) := l_intl_text_id_tbl(j);
5516                END LOOP;
5517             END IF;
5518          END LOOP;
5519 
5520         IF (rec_count > 0) THEN
5521           insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'caption texts of JRAD UI');
5522         END IF;
5523       END IF;
5524 
5525       -- main msg and title ids collected in get_oa_tmpls
5526       IF cz_pb_mgr.g_ui_templates_msg_id_ref.COUNT > 0 THEN
5527         rec_count := 0;
5528         CZ_PB_MGR.g_intl_text_id_ref.DELETE;
5529 
5530         FOR i IN cz_pb_mgr.g_ui_templates_msg_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_msg_id_ref.LAST LOOP
5531           IF cz_pb_mgr.g_ui_templates_msg_id_ref(i) IS NOT NULL THEN
5532             rec_count := rec_count + 1;
5533             cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_msg_id_ref(i);
5534           END IF;
5535           IF cz_pb_mgr.g_ui_templates_title_ref(i) IS NOT NULL THEN
5536             rec_count := rec_count + 1;
5537             cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_title_ref(i);
5538           END IF;
5539         END LOOP;
5540 
5541         IF (rec_count > 0) THEN
5542           insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'template msg and title texts', TRUE);
5543         END IF;
5544       END IF;
5545 
5546    EXCEPTION
5547       WHEN OTHERS THEN
5551          RAISE;
5548          cz_pb_mgr.v_err_message := 'Bulk Collect of intl texts of JRAD UI: ' || SQLERRM;
5549          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERTJRADUIINTLTEXTS', SQLCODE);
5550          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5552    END insert_jrad_ui_intl_texts;
5553 
5554 -------------------------------------------------------------------------------
5555 ------copying OA style UI(s)
5556    PROCEDURE export_oa_uis
5557    IS
5558       rec_count NUMBER := 0;
5559       row_count NUMBER := 0;
5560       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5561       l_new_document VARCHAR2(255);
5562    BEGIN
5563       ----insert intl texts of JRAD UI(s)
5564       insert_jrad_ui_intl_texts;
5565       ----insert into cz_ui_templates
5566       insert_ui_templates;
5567       -----insert ref templates
5568       insert_ref_templates;
5569       ----collect ui pages
5570       bulk_collect_ui_pages;
5571       ----copy jrad docs
5572       copy_jrad_docs;
5573       ------insert into ui pages
5574       insert_into_ui_pages;
5575       ----collect page sets
5576       bulk_collect_page_sets;
5577       copy_train_docs;
5578       insert_into_ui_page_sets;
5579       -----bulk collect from page refs
5580       bulk_collect_page_refs;
5581       ----insert into cz_ui_page_refs
5582       insert_into_ui_page_refs;
5583       -----bulk collect from ui refs
5584       bulk_collect_ui_refs;
5585       ----insert into cz_ui_refs
5586       insert_into_ui_refs;
5587       -----bulk collect from ui ps maps
5588       bulk_collect_ui_ps_maps;
5589       ----insert into cz_ui_page_elements
5590       export_signatures(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl);
5591       insert_ui_ps_maps;
5592 
5593       -- A master template carries its own set of content templates
5594       -- need to resolved everything and insert separately for master templates
5595       -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
5596       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
5597       THEN
5598          --collect content templates
5599          bulk_collect_cont_type_templs(cz_pb_mgr.v_mt_old_id_tbl);
5600          --resolve template ids
5601          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);
5602          --resolve ui def ids
5603          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');
5604          plsql_table_list.DELETE;
5605          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_cnt_typ_tmpls_new_uidef_ref';
5608          rec_count := rec_count + 1;
5609          plsql_table_list(rec_count).col_name := 'template_id';
5610          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
5611          rec_count := rec_count + 1;
5612          plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5613          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
5614          rec_count := rec_count + 1;
5615          plsql_table_list(rec_count).col_name := 'content_type';
5616          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
5617          insert_into_table('cz_ui_cont_type_templs'
5618                           ,'content_type'
5619                           ,'ui_def_id'
5620                           ,cz_pb_mgr.v_db_link
5621                           ,plsql_table_list
5622                           ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
5623                           ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
5624                           ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
5625                           ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
5626                           );
5627         row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
5628         IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT >0) THEN
5629            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
5630            LOOP
5631              row_count:=row_count+1;
5632              cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
5633              cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
5634           END LOOP;
5635         END IF;
5636       END IF;
5637 
5638       ----resolve  ui_def_id
5639       bulk_collect_cont_type_templs(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
5640 
5641       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');
5642 
5643       ----resolve tmp ui_def_id, template id
5644       IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5645         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');
5646         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);
5647       END IF;
5648 
5649       plsql_table_list.DELETE;
5650       rec_count := 1;
5651       plsql_table_list(rec_count).col_name := 'ui_def_id';
5652       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
5653       rec_count := rec_count + 1;
5654       plsql_table_list(rec_count).col_name := 'template_id';
5658       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
5655       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
5656       rec_count := rec_count + 1;
5657       plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5659       rec_count := rec_count + 1;
5660       plsql_table_list(rec_count).col_name := 'content_type';
5661       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
5662       insert_into_table('cz_ui_cont_type_templs'
5663                        ,'content_type'
5664                        ,'ui_def_id'
5665                        ,cz_pb_mgr.v_db_link
5666                        ,plsql_table_list
5667                        ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
5668                        ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
5669                        ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
5670                        ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
5671                        );
5672       row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
5673       IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT > 0) THEN
5674          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
5675          LOOP
5676               row_count:=row_count+1;
5677               cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
5678               cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
5679          END LOOP;
5680       END IF;
5681 
5682       ----bulk collect ui actions
5683       bulk_collect_ui_actions(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
5684 
5685       -- Note g_ui_actns_ui_act_id_ref contains both local ui actions (bulk_collect_ui_actions)
5686       -- and global ones (collect_global_actions). The 'new' ids in this array are the same old
5687       -- ids as the ones in g_ui_actns_ui_act_id_old_ref. They are real new ids only when the
5688       -- session is remote migration and the actions are globals.
5689 
5690       ----resolve  ui_def_id
5691       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');
5692       -- ignore expl id resolution failure because of a ui refresh issue (see 6817586)
5693       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);
5694       -- context_component_id, obsolete
5695       -- 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');
5696       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');
5697 
5698       IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5699         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');
5700         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);
5701       END IF;
5702 
5703       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');
5704       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');
5705       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');
5706 
5707       plsql_table_list.DELETE;
5708       rec_count := 1;
5709       plsql_table_list(rec_count).col_name := 'ui_def_id';
5710       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_uidef_ref';
5711       rec_count := rec_count + 1;
5712       plsql_table_list(rec_count).col_name := 'ui_action_id';
5713       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_act_id_ref';
5714       rec_count := rec_count + 1;
5715       plsql_table_list(rec_count).col_name := 'target_ui_def_id';
5716       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_tgtui_ref';
5717       rec_count := rec_count + 1;
5718       plsql_table_list(rec_count).col_name := 'target_expl_node_id';
5719       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_tgtexpl_ref';
5720       rec_count := rec_count + 1;
5721       plsql_table_list(rec_count).col_name := 'context_component_id';
5722       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ctx_comp_tbl';
5723       rec_count := rec_count + 1;
5724       plsql_table_list(rec_count).col_name := 'render_condition_id';
5725       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ren_cond_tbl';
5726       rec_count := rec_count + 1;
5727       plsql_table_list(rec_count).col_name := 'processing_page_templ_id';
5728       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_templ_tbl';
5729       rec_count := rec_count + 1;
5730       plsql_table_list(rec_count).col_name := 'proc_page_templ_ui_def_id';
5731       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_tmpui_tbl';
5732       rec_count := rec_count + 1;
5733       plsql_table_list(rec_count).col_name := 'processing_caption_text_id';
5734       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prc_caption_tbl';
5735       rec_count := rec_count + 1;
5736       plsql_table_list(rec_count).col_name := 'page_title_text_id';
5737       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_pg_title_tbl';
5738       rec_count := rec_count + 1;
5739       plsql_table_list(rec_count).col_name := 'main_message_text_id';
5740       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_main_msg_tbl';
5741       -- should call resolve_ids instead
5742       resolve_ref_ids_not_found(cz_pb_mgr.g_ui_actns_ui_uidef_ref
5746                                ,'cz_ui_actions.target_ui_def_id'
5743                                ,cz_pb_mgr.v_cz_ui_defs_old_ref
5744                                ,cz_pb_mgr.v_cz_ui_defs_idx_ref
5745                                ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref
5747                                ,cz_pb_mgr.v_status_code
5748                                );
5749       insert_into_table('cz_ui_actions'
5750                        ,'ui_action_id'
5751                        ,'ui_def_id'
5752                        ,cz_pb_mgr.v_db_link
5753                        ,plsql_table_list
5754                        ,'cz_pb_mgr.g_ui_actns_ui_act_id_old_ref'
5755                        ,'cz_pb_mgr.g_ui_actns_ui_uidef_old_ref'
5756                        ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref
5757                        ,cz_pb_mgr.g_ui_actns_ui_uidef_old_ref
5758                        );
5759 
5760       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
5761       THEN
5762          refresh_ui_actions(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref);
5763       END IF;
5764 
5765       ------bulk collect ui images for Master templates
5766       -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
5767       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
5768       THEN
5769          bulk_collect_ui_images(cz_pb_mgr.v_mt_old_id_tbl);
5770          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');
5771          plsql_table_list.DELETE;
5772          rec_count := 1;
5773          plsql_table_list(rec_count).col_name := 'ui_def_id';
5774          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
5775          rec_count := rec_count + 1;
5776          plsql_table_list(rec_count).col_name := 'image_usage_code';
5777          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
5778          rec_count := rec_count + 1;
5779          plsql_table_list(rec_count).col_name := 'entity_code';
5780          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
5781          insert_into_table('cz_ui_images'
5782                           ,'ui_def_id'
5783                           ,'image_usage_code'
5784                           ,'entity_code'
5785                           ,cz_pb_mgr.v_db_link
5786                           ,plsql_table_list
5787                           ,'cz_pb_mgr.v_ui_images_ui_tbl'
5788                           ,'cz_pb_mgr.v_ui_images_usg_tbl'
5789                           ,'cz_pb_mgr.v_ui_images_enty_tbl'
5790                           ,cz_pb_mgr.v_ui_images_ui_tbl
5791                           ,cz_pb_mgr.v_ui_images_usg_tbl
5792                           ,cz_pb_mgr.v_ui_images_enty_tbl
5793                           );
5794 	 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
5795          IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT >0)THEN
5796            FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
5797            LOOP
5798              row_count:=row_count+1;
5799              cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
5800              cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
5801              cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
5802            END LOOP;
5803          END IF;
5804       END IF;
5805 
5806       ----resolve  ui_def_id
5807       bulk_collect_ui_images(cz_pb_mgr.v_cz_ui_defs_old_ref);
5808       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');
5809       -----insert into ui images
5810       plsql_table_list.DELETE;
5811       rec_count := 1;
5812       plsql_table_list(rec_count).col_name := 'ui_def_id';
5813       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
5814       rec_count := rec_count + 1;
5815       plsql_table_list(rec_count).col_name := 'image_usage_code';
5816       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
5817       rec_count := rec_count + 1;
5818       plsql_table_list(rec_count).col_name := 'entity_code';
5819       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
5820       insert_into_table('cz_ui_images'
5821                        ,'ui_def_id'
5822                        ,'image_usage_code'
5823                        ,'entity_code'
5824                        ,cz_pb_mgr.v_db_link
5825                        ,plsql_table_list
5826                        ,'cz_pb_mgr.v_ui_images_ui_tbl'
5827                        ,'cz_pb_mgr.v_ui_images_usg_tbl'
5828                        ,'cz_pb_mgr.v_ui_images_enty_tbl'
5829                        ,cz_pb_mgr.v_ui_images_ui_tbl
5830                        ,cz_pb_mgr.v_ui_images_usg_tbl
5831                        ,cz_pb_mgr.v_ui_images_enty_tbl
5832                        );
5833       row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
5834       IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT > 0) THEN
5835         FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
5836         LOOP
5837           row_count:=row_count+1;
5838           cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
5839           cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
5840           cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
5841         END LOOP;
5842       END IF;
5843 
5844       COMMIT;
5845    EXCEPTION
5846       WHEN OTHERS
5847       THEN
5848          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_OA_UI_ERR', 'SQLERRM', SQLERRM);
5852    END export_oa_uis;
5849          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_EXPORTOAUI', SQLCODE);
5850          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5851          RAISE;
5853 
5854 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5855 ------makes a copy of a UI and its children
5856    PROCEDURE export_single_oa_ui(
5857       p_ui_def_id IN NUMBER
5858      ,x_ui_def_id OUT NOCOPY NUMBER
5859      ,x_return_status OUT NOCOPY VARCHAR2
5860      ,x_msg_count OUT NOCOPY NUMBER
5861      ,x_msg_data OUT NOCOPY VARCHAR2
5862    )
5863    IS
5864       ui_def_id_is_null EXCEPTION;
5865       ui_def_id_not_found EXCEPTION;
5866       not_oa_style_ui EXCEPTION;
5867       l_ui_def_id NUMBER;
5868       l_ui_style VARCHAR2(3);
5869       l_child_ui_tbl cz_pb_mgr.t_ref;
5870       rec_count NUMBER := 0;
5871       plsql_table_list cz_pb_mgr.col_plsql_table_list;
5872    BEGIN
5873       x_return_status := FND_API.G_RET_STS_SUCCESS;
5874       cz_pb_mgr.v_status_code := 'OK';
5875 
5876       IF (p_ui_def_id IS NULL)
5877       THEN
5878          RAISE ui_def_id_is_null;
5879       END IF;
5880 
5881       BEGIN
5882          SELECT ui_def_id, ui_style
5883            INTO l_ui_def_id, l_ui_style
5884            FROM cz_ui_defs
5885           WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
5886       EXCEPTION
5887          WHEN NO_DATA_FOUND
5888          THEN
5889             RAISE ui_def_id_not_found;
5890       END;
5891 
5892       IF (l_ui_style <> oa_ui_style)
5893       THEN
5894          RAISE not_oa_style_ui;
5895       END IF;
5896 
5897       cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
5898       cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
5899       cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
5900       cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5901       rec_count := cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT + 1;
5902       cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_ui_def_id;
5903       cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_ui_def_id;
5904       l_child_ui_tbl.DELETE;
5905 
5906       BEGIN
5907          SELECT ref_ui_def_id
5908          BULK COLLECT INTO l_child_ui_tbl
5909            FROM cz_ui_refs
5910           WHERE cz_ui_refs.ui_def_id = l_ui_def_id AND cz_ui_refs.deleted_flag = record_not_deleted;
5911       EXCEPTION
5912          WHEN NO_DATA_FOUND
5913          THEN
5914             NULL;                                                                                                       ---if no children then ignore
5915       END;
5916 
5917       IF (l_child_ui_tbl.COUNT > 0)
5918       THEN
5919          rec_count := cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT + 1;
5920 
5921          FOR i IN l_child_ui_tbl.FIRST .. l_child_ui_tbl.LAST
5922          LOOP
5923             rec_count := rec_count + 1;
5924             cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_child_ui_tbl(i);
5925             cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_child_ui_tbl(i);
5926          END LOOP;
5927       END IF;
5928 
5929       IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
5930       THEN
5931          cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5932          rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
5933          IF (v_cz_ui_defs_old_ref.COUNT > 0) THEN
5934           FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
5935           LOOP
5936             rec_count := rec_count + 1;
5937             cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
5938                  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);
5939 
5940             IF (cz_pb_mgr.v_cz_ui_defs_old_ref(k) = p_ui_def_id)
5941             THEN
5942                x_ui_def_id := cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
5943             END IF;
5944 
5945             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);
5946           END LOOP;
5947 	 END IF;
5948 
5949          --------populate plsql_table_list for ui_defs
5950          plsql_table_list.DELETE;
5951          rec_count := 1;
5952          plsql_table_list(rec_count).col_name := 'ui_def_id';
5953          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
5954          insert_into_table('cz_ui_defs'
5955                           ,'ui_def_id'
5956                           ,cz_pb_mgr.v_db_link
5957                           ,plsql_table_list
5958                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
5959                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
5960                           );
5961          ------export oa uis
5962          export_oa_uis;
5963          cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
5964          cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
5965          cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
5966          cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5967       END IF;
5968    EXCEPTION
5969       WHEN ui_def_id_is_null
5970       THEN
5971          x_return_status := FND_API.G_RET_STS_ERROR;
5972          x_msg_data := cz_utils.get_text('UI_DEF_ID_IS_NULL');
5973          x_msg_count := 1;
5974       WHEN ui_def_id_not_found
5975       THEN
5976          x_return_status := FND_API.G_RET_STS_ERROR;
5977          x_msg_data := cz_utils.get_text('UI_DEF_ID_NOT_FOUND', 'UIDEFID', p_ui_def_id);
5978          x_msg_count := 1;
5979       WHEN not_oa_style_ui
5980       THEN
5981          x_return_status := FND_API.G_RET_STS_ERROR;
5985       THEN
5982          x_msg_data := cz_utils.get_text('NOT_OA_STYLE_UI', 'UIDEFID', p_ui_def_id);
5983          x_msg_count := 1;
5984       WHEN OTHERS
5986          x_return_status := FND_API.G_RET_STS_ERROR;
5987          x_msg_data := cz_utils.get_text('FATAL_ERROR', 'UIDEFID', p_ui_def_id, 'ERROR', SQLERRM);
5988          x_msg_count := 1;
5989    END export_single_oa_ui;
5990 
5991 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5992    PROCEDURE log_report(p_pkg_name VARCHAR2, p_routine VARCHAR2, p_ndebug NUMBER, p_msg VARCHAR2, p_log_level NUMBER)
5993    IS
5994       PRAGMA AUTONOMOUS_TRANSACTION;
5995       l_module_name VARCHAR2(2000);
5996    BEGIN
5997       IF (p_log_level >= fnd_log.g_current_runtime_level)
5998       THEN
5999          l_module_name := 'cz.plsql.' || p_pkg_name || '.' || p_routine || '.' || p_ndebug;
6000          fnd_log.STRING(p_log_level, l_module_name, p_msg);
6001          COMMIT;
6002       END IF;
6003    EXCEPTION
6004       WHEN OTHERS
6005       THEN
6006          ROLLBACK;
6007    END log_report;
6008 
6009 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6010 --------------------procedure to log errors during the publication process
6011    PROCEDURE log_pb_errors(p_message IN VARCHAR2, p_urgency IN VARCHAR2, p_caller IN VARCHAR2, p_statuscode IN PLS_INTEGER)
6012    AS
6013       v_message VARCHAR2(2000) := NULL;
6014    BEGIN
6015       IF (p_message IS NOT NULL)
6016       THEN
6017          v_message := LTRIM(RTRIM(SUBSTR(p_message, 1, 2000)));
6018       ELSE
6019          v_message := 'Check SQLCODE in statuscode field. ';
6020       END IF;
6021 
6022       IF fnd_global.conc_request_id > 0
6023       THEN
6024          fnd_file.put_line(fnd_file.LOG, v_message);
6025       END IF;
6026 
6027       INSERT INTO cz_db_logs
6028                   (logtime, loguser, urgency, caller, statuscode, MESSAGE, message_id, run_id
6029                   )
6030            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
6031                   );
6032 
6033       COMMIT;
6034    EXCEPTION
6035       WHEN OTHERS
6036       THEN
6037          cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
6038          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
6039    END log_pb_errors;
6040 
6041 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6042 ------procedure that logs timing message
6043    PROCEDURE log_timing_message(p_msg IN VARCHAR2)
6044    IS
6045    BEGIN
6046       log_pb_errors(p_msg, 2, 'cz_pb_mgr_TIMING', 55);
6047    END;
6048 
6049 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6050    PROCEDURE log_pb_trace
6051    AS
6052       l_msg VARCHAR2(2000);
6053    BEGIN
6054       -----------log trace
6055       IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
6056       THEN
6057          cz_pb_mgr.v_err_message := 'Parent model in publication (migration) request : ' || TO_CHAR(cz_pb_mgr.v_root_model_id);
6058          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
6059          cz_pb_mgr.v_err_message :=
6060                             'Source publication : ' || cz_pb_mgr.v_cz_model_pub_old_id || '  target publication: ' || cz_pb_mgr.v_cz_model_pub_new_id;
6061          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
6062       END IF;
6063 
6064       IF (cz_pb_mgr.v_msg_tbl.COUNT > 0)
6065       THEN
6066          FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
6067          LOOP
6068             IF fnd_global.conc_request_id > 0
6069             THEN
6070                fnd_file.put_line(fnd_file.LOG, cz_pb_mgr.v_msg_tbl(i).msg_text);
6071             END IF;
6072 
6073             BEGIN
6074                INSERT INTO cz_db_logs
6075                            (logtime, caller, statuscode, MESSAGE
6076                            ,message_id, creation_date, run_id
6077                            )
6078                     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
6079                            ,cz_pb_mgr.v_publication_id, SYSDATE, cz_pb_mgr.v_pb_run_id
6080                            );
6081             EXCEPTION
6082                WHEN OTHERS
6083                THEN
6084                   RAISE;
6085             END;
6086 
6087             log_report('cz_pb_mgr'
6088                       ,cz_pb_mgr.v_msg_tbl(i).called_proc
6089                       ,cz_pb_mgr.v_msg_tbl(i).sql_code
6090                       ,cz_pb_mgr.v_msg_tbl(i).msg_text
6091                       ,fnd_log.level_error
6092                       );
6093          END LOOP;
6094 
6095          COMMIT;
6096       END IF;
6097 
6098       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))
6099       THEN
6100          fnd_msg_pub.initialize;
6101 
6102          FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
6103          LOOP
6104             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%'))
6105             THEN
6106                fnd_message.set_name('CZ', 'CZ_MODEL_COPY_ERR');
6107                fnd_message.set_token('ERRORMSG', cz_pb_mgr.v_msg_tbl(i).msg_text);
6108                fnd_msg_pub.ADD;
6109             END IF;
6110          END LOOP;
6111       END IF;
6112 
6116       THEN
6113       cz_pb_mgr.v_msg_tbl.DELETE;
6114    EXCEPTION
6115       WHEN OTHERS
6117          cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
6118          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
6119          cz_pb_mgr.v_msg_tbl.DELETE;
6120    END log_pb_trace;
6121 
6122 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6123 ----update pup status
6124    PROCEDURE update_pup_status(p_publication_id cz_model_publications.publication_id%TYPE)
6125    IS
6126       l_remote_publication_id NUMBER;
6127    BEGIN
6128       UPDATE cz_model_publications
6129          SET export_status = 'OK'
6130        WHERE remote_publication_id = (SELECT remote_publication_id
6131                                         FROM cz_model_publications
6132                                        WHERE deleted_flag = '0' AND publication_id = p_publication_id AND export_status = 'ERR')
6133          AND export_status = 'PUP'
6134          AND deleted_flag = '0';
6135    END;
6136 
6137 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6138 ------updates export status in cZ_model_publications
6139    PROCEDURE update_publication_status(p_publication_id IN NUMBER, p_pb_status IN VARCHAR2, p_db_link IN VARCHAR2)
6140    IS
6141    BEGIN
6142       IF ((p_publication_id > 0) AND(p_pb_status IS NOT NULL))
6143       THEN
6144          cz_pb_mgr.v_insert_string :=
6145                'UPDATE cz_model_publications'
6146             || p_db_link
6147             || ' '
6148             || 'SET  export_status = :1,'
6149             || ' '
6150             || 'published = sysdate'
6151             || ' '
6152             || 'WHERE  cz_model_publications.publication_id = :2';
6153 
6154          EXECUTE IMMEDIATE cz_pb_mgr.v_insert_string
6155                      USING p_pb_status, p_publication_id;
6156       END IF;
6157    EXCEPTION
6158       WHEN OTHERS
6159       THEN
6160          cz_pb_mgr.v_err_message := 'ERROR : updation of publication status ' || SQLERRM;
6161          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPPBSTATUS', SQLCODE);
6162          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6163          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6164          RAISE;
6165    END update_publication_status;
6166 
6167 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6168 ------------ to retrieve the db link
6169    FUNCTION retrieve_db_link(p_server_id PLS_INTEGER)
6170       RETURN VARCHAR2
6171    IS
6172       v_source_id cz_servers.server_local_id%TYPE;
6173       v_source_instance cz_servers.instance_name%TYPE;
6174       v_source_host cz_servers.hostname%TYPE;
6175       v_source_port cz_servers.db_listener_port%TYPE;
6176       v_source_owner cz_servers.cz_owner%TYPE;
6177       v_target_id cz_servers.server_local_id%TYPE;
6178       v_target_instance cz_servers.instance_name%TYPE;
6179       v_target_host cz_servers.hostname%TYPE;
6180       v_target_port cz_servers.db_listener_port%TYPE;
6181       v_target_owner cz_servers.cz_owner%TYPE;
6182       v_db_link cz_servers.cz_link_name%TYPE;
6183 
6184       CURSOR db_compare_cur(p_server_id PLS_INTEGER)
6185       IS
6186          SELECT   server_local_id, instance_name, hostname, db_listener_port, cz_owner, fndnam_link_name
6187              FROM cz_servers
6188             WHERE server_local_id = p_server_id OR server_local_id = 0
6189          ORDER BY server_local_id;
6190 
6191       v_compare_record db_compare_cur%ROWTYPE;
6192    BEGIN
6193       BEGIN
6194          OPEN db_compare_cur(p_server_id);
6195 
6196          LOOP
6197             FETCH db_compare_cur
6198              INTO v_compare_record;
6199 
6200             EXIT WHEN db_compare_cur%NOTFOUND;
6201 
6202             IF (v_compare_record.server_local_id = 0)
6203             THEN
6204                v_source_instance := v_compare_record.instance_name;
6205                v_source_host := v_compare_record.hostname;
6206                v_source_port := v_compare_record.db_listener_port;
6207                v_source_owner := v_compare_record.cz_owner;
6208                v_target_instance := v_compare_record.instance_name;
6209                v_target_host := v_compare_record.hostname;
6210                v_target_port := v_compare_record.db_listener_port;
6211                v_target_owner := v_compare_record.cz_owner;
6212                v_db_link := v_compare_record.fndnam_link_name;
6213             ELSE
6214                v_target_instance := v_compare_record.instance_name;
6215                v_target_host := v_compare_record.hostname;
6216                v_target_port := v_compare_record.db_listener_port;
6217                v_target_owner := v_compare_record.cz_owner;
6218                v_db_link := v_compare_record.fndnam_link_name;
6219             END IF;
6220          END LOOP;
6221 
6222          CLOSE db_compare_cur;
6223       EXCEPTION
6224          WHEN OTHERS
6225          THEN
6226             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6227             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6228       END;
6229 
6230       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))
6231       THEN
6232          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6233          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6237       IF (   (    (LTRIM(RTRIM(UPPER(v_source_instance))) = LTRIM(RTRIM(UPPER(v_target_instance))))
6234          cz_pb_mgr.v_status_code := 'ERR';
6235       END IF;
6236 
6238               AND (LTRIM(RTRIM(UPPER(v_source_host))) = LTRIM(RTRIM(UPPER(v_target_host))))
6239               AND (LTRIM(RTRIM(UPPER(v_source_port))) = LTRIM(RTRIM(UPPER(v_target_port))))
6240              )
6241           OR (p_server_id = 0)
6242          )
6243       THEN
6244          cz_pb_mgr.v_db_link := ' ';
6245       ELSE
6246          cz_pb_mgr.v_db_link := '@' || v_db_link || ' ';
6247       END IF;
6248 
6249       RETURN cz_pb_mgr.v_db_link;
6250    EXCEPTION
6251       WHEN OTHERS
6252       THEN
6253          RETURN cz_pb_mgr.v_db_link;
6254    END retrieve_db_link;
6255 
6256 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6257 ----------------------procedure called from rollback data that deletes the rows
6258 ----------------------inserted into a table during publication process
6259 PROCEDURE	delete_from_table(table_name			IN	VARCHAR2 ,
6260 					primary_key			IN	VARCHAR2 ,
6261 					db_link			IN	VARCHAR2 ,
6262 					plsql_table_name		IN	VARCHAR2,
6263 					primary_key_plsql_table	IN	cz_pb_mgr.t_ref
6264 					)
6265 AS
6266 
6267 v_DeleteString  VARCHAR2(2000);
6268 v_db_link       VARCHAR2(128);
6269 
6270 BEGIN
6271       IF ( primary_key_plsql_table.COUNT > 0 ) THEN
6272 			v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6273 			BEGIN
6274 				v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table.FIRST||'..'||primary_key_plsql_table.LAST||'  LOOP ';
6275 				v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link||' tgt ';
6276       	      	v_DeleteString  := v_DeleteString||' WHERE  tgt.'||primary_key||' = '||plsql_table_name||'(m) ';
6277 				v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
6278 		 		EXECUTE IMMEDIATE v_DeleteString;
6279 			EXCEPTION
6280 			WHEN OTHERS THEN
6281 				RAISE;
6282 			END;
6283       END	IF;
6284 COMMIT;
6285 EXCEPTION
6286 WHEN OTHERS THEN
6287 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6288 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6289 END	delete_from_table;
6290 
6291 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6292 ----------------------procedure called from rollback data that deletes the rows
6293 ----------------------inserted into a table during publication process
6294 
6295 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6296                             primary_key1   IN	VARCHAR2 ,
6297                             primary_key2   IN	VARCHAR2 ,
6298 			    primary_key3   IN	VARCHAR2 ,
6299                             db_link	       IN	VARCHAR2 ,
6300                             plsql_table_name1 IN VARCHAR2,
6301 			    	    plsql_table_name2 IN VARCHAR2,
6302 				    plsql_table_name3 IN VARCHAR2,
6303 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6304 
6305 AS
6306 v_cursor          NUMBER;
6307 v_NumRows         NUMBER;
6308 v_DeleteString 	VARCHAR2(10000);
6309 v_db_link         VARCHAR2(128);
6310 
6311 BEGIN
6312      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6313 
6314  BEGIN
6315   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6316 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
6317 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
6318 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6319 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6320 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
6321 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
6322 	EXECUTE IMMEDIATE v_DeleteString;
6323   END	IF;
6324  EXCEPTION
6325  WHEN OTHERS THEN
6326 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6327 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6328  END;
6329 COMMIT;
6330 END;
6331 
6332 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6333 ----------------------procedure called from rollback data that deletes the rows
6334 ----------------------inserted into a table during publication process
6335 
6336 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6337                             primary_key1   IN	VARCHAR2 ,
6338                             primary_key2   IN	VARCHAR2 ,
6339                             db_link	       IN	VARCHAR2 ,
6340                             plsql_table_name1 IN VARCHAR2,
6341 			    	    plsql_table_name2 IN VARCHAR2,
6342 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6343 
6344 AS
6345 v_cursor          NUMBER;
6346 v_NumRows         NUMBER;
6347 v_DeleteString 	VARCHAR2(10000);
6348 v_db_link         VARCHAR2(128);
6349 
6350 BEGIN
6351      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6352 
6353  BEGIN
6354   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6355 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
6356 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
6360 	EXECUTE IMMEDIATE v_DeleteString;
6357 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6358 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6359 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
6361   END	IF;
6362  EXCEPTION
6363  WHEN OTHERS THEN
6364 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6365 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6366  END;
6367 COMMIT;
6368 END;
6369 
6370 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6371 ----------------------procedure called from rollback data that deletes the rows
6372 ----------------------inserted into a table during publication process
6373 
6374 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6375                             primary_key1   IN	VARCHAR2 ,
6376                             primary_key2   IN	VARCHAR2 ,
6377 			    primary_key3   IN	VARCHAR2 ,
6378 			    primary_key4   IN	VARCHAR2 ,
6379                             db_link	       IN	VARCHAR2 ,
6380                             plsql_table_name1 IN VARCHAR2,
6381 			    	    plsql_table_name2 IN VARCHAR2,
6382 				    plsql_table_name3 IN VARCHAR2,
6383 				    plsql_table_name4 IN VARCHAR2,
6384 			    	    primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6385 
6386 AS
6387 v_cursor          NUMBER;
6388 v_NumRows         NUMBER;
6389 v_DeleteString 	VARCHAR2(10000);
6390 v_db_link         VARCHAR2(128);
6391 
6392 BEGIN
6393      v_db_link  := UPPER(LTRIM(RTRIM(db_link)));
6394 
6395  BEGIN
6396   IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6397 	v_DeleteString  := 'BEGIN FOR  M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||'  LOOP ';
6398 	v_DeleteString  := v_DeleteString||' delete from '||table_name||v_db_link;
6399 	v_DeleteString  := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6400 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6401 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
6402 	v_DeleteString  := v_DeleteString||' AND '||table_name||'.'||primary_key4||'='||plsql_table_name4||'(m) ';
6403 	v_DeleteString  := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF;  END LOOP; COMMIT; END; ';
6404 	EXECUTE IMMEDIATE v_DeleteString;
6405   END	IF;
6406  EXCEPTION
6407  WHEN OTHERS THEN
6408 	cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6409 	cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6410  END;
6411 COMMIT;
6412 END;
6413 
6414 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6415 ---------procedure that deletes data of single index arrays
6416    PROCEDURE delete_from_idx_tables(
6417       p_table_name IN VARCHAR2
6418      ,p_primary_key IN VARCHAR2
6419      ,p_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
6420      ,p_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
6421    )
6422    AS
6423       v_deletestring VARCHAR2(2000);
6424       v_idx_id NUMBER;
6425    BEGIN
6426       IF (p_old_array.COUNT > 0)
6427       THEN
6428          FOR i IN p_old_array.FIRST .. p_old_array.LAST
6429          LOOP
6430             v_idx_id := p_idx_array(p_old_array(i));
6431             v_deletestring := ' delete from ' || p_table_name || v_db_link || ' tgt ';
6432             v_deletestring := v_deletestring || ' WHERE  tgt.' || p_primary_key || ' = :1';
6433 
6434             EXECUTE IMMEDIATE v_deletestring
6435                         USING v_idx_id;
6436 
6437             IF (MOD(i, cz_pb_mgr.record_commit_size) = 0)
6438             THEN
6439                COMMIT;
6440             END IF;
6441          END LOOP;
6442       END IF;
6443 
6444       COMMIT;
6445    EXCEPTION
6446       WHEN OTHERS
6447       THEN
6448          cz_pb_mgr.v_err_message := 'Error during rollback of  ' || p_table_name || ' : ' || SQLERRM;
6449          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
6450    END;
6451 
6452 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6453 --------in the model publication process
6454 --------a model is published in its entirety
6455 --------if an error occurs during the publishing
6456 --------process the data that has been committed
6457 --------on the target server is rolled back
6458    PROCEDURE rollback_data(p_db_link IN VARCHAR2)
6459    AS
6460       v_insert_string VARCHAR2(2000) := '';
6461       v_database_link VARCHAR2(128);
6462    BEGIN
6463       v_database_link := LTRIM(RTRIM(p_db_link));
6464 
6465       IF ((cz_pb_mgr.v_server_id IS NULL) OR(v_database_link = '@'))
6466       THEN
6467          v_database_link := NULL;
6468       END IF;
6469 
6470       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);
6471       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);
6472       delete_from_table('cz_devl_projects'
6473                        ,'devl_project_id'
6474                        ,v_database_link
6475                        ,'cz_pb_mgr.v_models_to_be_exported_new'
6476                        ,cz_pb_mgr.v_models_to_be_exported_new
6477                        );
6481       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);
6478       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);
6479       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);
6480       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);
6482       delete_from_table('cz_model_ref_expls'
6483                        ,'model_ref_expl_id'
6484                        ,v_database_link
6485                        ,'cz_pb_mgr.v_cz_model_ref_expls_new_ref'
6486                        ,cz_pb_mgr.v_cz_model_ref_expls_new_ref
6487                        );
6488       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);
6489       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);
6490       delete_from_table('cz_des_chart_features'
6491                        ,'rule_id'
6492                        ,v_database_link
6493                        ,'cz_pb_mgr.v_cz_des_feature_rid_new_ref'
6494                        ,cz_pb_mgr.v_cz_des_feature_rid_new_ref
6495                        );
6496       delete_from_table('cz_des_chart_cells'
6497                        ,'rule_id'
6498                        ,v_database_link
6499                        ,'cz_pb_mgr.v_cz_des_cells_rule_id_new_ref'
6500                        ,cz_pb_mgr.v_cz_des_cells_rule_id_new_ref
6501                        );
6502 
6503    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);
6504    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);
6505    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);
6506    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);
6507    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);
6508    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);
6509    delete_from_table('cz_ui_ref_templates','template_id','template_ui_def_id',
6510 		     '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',
6511 		     'cz_pb_mgr.g_REF_TEMPLATE_ID_ref','cz_pb_mgr.g_REF_TEMPL_UI_ref',cz_pb_mgr.g_TEMPLATE_ID_ref);
6512    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);
6513    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);
6514    delete_from_table('cz_signatures','signature_id',v_database_link,'cz_pb_mgr.v_sig_new_ref',cz_pb_mgr.v_sig_new_ref);
6515    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);
6516    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);
6517    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);
6518    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);
6519    delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.g_archives_new_ref',cz_pb_mgr.g_archives_new_ref);
6520 
6521    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);
6522 
6523    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);
6524    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);
6525 
6526       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);
6527       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);
6528 
6529       DELETE FROM cz_pb_model_exports
6530             WHERE publication_id = cz_pb_mgr.v_publication_id;
6531 
6532       COMMIT;
6533       cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6534       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);
6535       cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ROLLBACKDATA', SQLCODE);
6536    EXCEPTION
6537       WHEN OTHERS
6538       THEN
6539          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6540          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_ROLLBACK_ERR', 'SQLERRM', SQLERRM);
6544 
6541          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
6542          RAISE;
6543    END rollback_data;
6545 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6546 -----------procedure updates the status in cz_model_publications and cz_pb_model_exports
6547 -----------@p_publication_id : source publication id
6548 -----------@p_status : publication status
6549 -----------@p_link : database link name
6550 -----------@p_models_exported : source models that have entries in model exports
6551 -----------@x_status : publication status parameter
6552    PROCEDURE update_pb_status(
6553       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
6554      ,p_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
6555      ,p_models_exported IN OUT NOCOPY cz_pb_mgr.t_ref
6556      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
6557    )
6558    AS
6559    BEGIN
6560       -----update status on the source. p_link is null
6561       update_publication_status(p_publication_id, p_status, ' ');
6562 
6563       IF (p_models_exported.COUNT > 0)
6564       THEN
6565          FOR i IN p_models_exported.FIRST .. p_models_exported.LAST
6566          LOOP
6567             UPDATE cz_pb_model_exports t
6568                SET t.status = p_status
6569              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;
6570          END LOOP;
6571 
6572          COMMIT;
6573       END IF;
6574 
6575       -----set status for concurrent manager
6576       IF (x_status = PUBLICATION_ERROR)
6577       THEN
6578          cz_pb_mgr.global_export_retcode := 2;
6579       END IF;
6580    EXCEPTION
6581       WHEN OTHERS
6582       THEN
6583          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
6584          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDPBSTATUS', SQLCODE);
6585          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6586          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6587          RAISE;
6588    END update_pb_status;
6589 
6590 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6591 --------function to validate the source and target schemas.
6592 --------a source model can be published on a target server
6593 --------having the same major and minor schema versions
6594 --------v_count when 0 is a failure else 1 indicates success
6595    FUNCTION validate_schema(target_server_id PLS_INTEGER)
6596       RETURN NUMBER
6597    IS
6598       v_source_major_version cz_db_settings.VALUE%TYPE;
6599       v_source_minor_version cz_db_settings.VALUE%TYPE;
6600       v_target_major_version cz_db_settings.VALUE%TYPE;
6601       v_target_minor_version cz_db_settings.VALUE%TYPE;
6602 
6603       CURSOR db_link_cur(p_server_id PLS_INTEGER)
6604       IS
6605          SELECT local_name, fndnam_link_name
6606            FROM cz_servers
6607           WHERE server_local_id = p_server_id;
6608 
6609       v_link_record db_link_cur%ROWTYPE;
6610       v_str VARCHAR2(4000);
6611       db_schema_compare_cur ref_cursor;
6612       v_count PLS_INTEGER := 0;
6613       v_db_link cz_servers.fndnam_link_name%TYPE;
6614    BEGIN
6615       OPEN db_link_cur(target_server_id);
6616 
6617       LOOP
6618          FETCH db_link_cur
6619           INTO v_link_record;
6620 
6621          EXIT WHEN db_link_cur%NOTFOUND;
6622          v_db_link := '@' || v_link_record.fndnam_link_name;
6623          cz_pb_mgr.v_server_local_name := v_link_record.local_name;
6624       END LOOP;
6625 
6626       CLOSE db_link_cur;
6627 
6628       IF LTRIM(RTRIM(v_db_link)) = '@'
6629       THEN
6630          v_count := 1;
6631       ELSE
6632          OPEN db_schema_compare_cur FOR    '	select count(*)'
6633                                         || ' '
6634                                         || 'from	cz_db_settings,'
6635                                         || ' '
6636                                         || 'cz_db_settings'
6637                                         || v_db_link
6638                                         || ' tgt'
6639                                         || ' '
6640                                         || 'where	cz_db_settings.setting_id = tgt.setting_id'
6641                                         || ' '
6642                                         || 'and	cz_db_settings.value = tgt.value'
6643                                         || ' '
6644                                         || 'and	cz_db_settings.setting_id = ''MAJOR_VERSION'''
6645                                         || ' '
6646                                         || 'INTERSECT'
6647                                         || ' '
6648                                         || 'select count(*)'
6649                                         || ' '
6650                                         || 'from	cz_db_settings,'
6651                                         || ' '
6652                                         || 'cz_db_settings'
6653                                         || v_db_link
6654                                         || ' tgt'
6655                                         || ' '
6656                                         || 'where	cz_db_settings.setting_id = tgt.setting_id'
6657                                         || ' '
6658                                         || 'and	cz_db_settings.value = tgt.value'
6659                                         || ' '
6660                                         || 'and	cz_db_settings.setting_id = ''MINOR_VERSION'' ';
6661 
6665 
6662          LOOP
6663             FETCH db_schema_compare_cur
6664              INTO v_count;
6666             EXIT WHEN db_schema_compare_cur%NOTFOUND;
6667          END LOOP;
6668 
6669          CLOSE db_schema_compare_cur;
6670       END IF;
6671 
6672       --------set commit size variable
6673       BEGIN
6674          SELECT VALUE
6675            INTO cz_pb_mgr.record_commit_size
6676            FROM cz_db_settings
6677           WHERE cz_db_settings.setting_id = record_commit_str;
6678       EXCEPTION
6679          WHEN OTHERS
6680          THEN
6681             cz_pb_mgr.record_commit_size := 500;
6682       END;
6683 
6684       RETURN v_count;
6685    EXCEPTION
6686       WHEN NO_DATA_FOUND
6687       THEN
6688          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_LINK_NAME');
6689          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
6690          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6691          RETURN v_count;
6692       WHEN OTHERS
6693       THEN
6694          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_VALIDATION_ERR');
6695          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
6696          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6697          RETURN v_count;
6698    END validate_schema;
6699 
6700 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6701 ------------ procedures for refreshing item sub-schema
6702    PROCEDURE load_usages
6703    AS
6704       l_sql_string VARCHAR2(32000);
6705    BEGIN
6706       cz_pb_mgr.v_model_usages_tbl.DELETE;
6707       cz_pb_mgr.v_usages_lang_tbl.DELETE;
6708 
6709       BEGIN
6710          SELECT model_usage_id
6711          BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl
6712            FROM cz_model_usages;
6713       EXCEPTION
6714          WHEN NO_DATA_FOUND
6715          THEN
6716             cz_pb_mgr.v_err_message := 'No model usages found';
6717             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6718          WHEN OTHERS
6719          THEN
6720             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
6721             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6722             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6723             RAISE;
6724       END;
6725 
6726       IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
6727       THEN
6728          l_sql_string :=
6729                'BEGIN '
6730             || ' DELETE FROM CZ_MODEL_USAGES'
6731             || cz_pb_mgr.v_db_link
6732             || '; '
6733             || ' '
6734             || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
6735             || ' '
6736             || 'LOOP'
6737             || ' '
6738             || 'INSERT INTO cz_model_usages'
6739             || cz_pb_mgr.v_db_link
6740             || ' '
6741             || '(MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE)'
6742             || ' '
6743             || 'SELECT MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE FROM cz_model_usages t'
6744             || ' '
6745             || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i);'
6746             || ' '
6747             || 'END LOOP;'
6748             || ' '
6749             || 'END;';
6750 
6751          EXECUTE IMMEDIATE l_sql_string;
6752       END IF;
6753 
6754       cz_pb_mgr.v_model_usages_tbl.DELETE;
6755       cz_pb_mgr.v_usages_lang_tbl.DELETE;
6756 
6757       BEGIN
6758          SELECT model_usage_id, LANGUAGE
6759          BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl, v_usages_lang_tbl
6760            FROM cz_model_usages_tl;
6761       EXCEPTION
6762          WHEN NO_DATA_FOUND
6763          THEN
6764             cz_pb_mgr.v_err_message := 'No model usages translations found';
6765             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6766          WHEN OTHERS
6767          THEN
6768             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages_tl', 'SQLERRM', SQLERRM);
6769             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6770             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6771             RAISE;
6772       END;
6773 
6774       IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
6775       THEN
6776          EXECUTE IMMEDIATE    'BEGIN'
6777                            || ' '
6778                            || 'DELETE FROM CZ_MODEL_USAGES_TL'
6779                            || cz_pb_mgr.v_db_link
6780                            || ';'
6781                            || ' '
6782                            || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
6783                            || ' '
6784                            || 'LOOP'
6785                            || ' '
6786                            || 'BEGIN'
6787                            || ' '
6788                            || 'INSERT INTO cz_model_usages_tl'
6789                            || cz_pb_mgr.v_db_link
6790                            || ' '
6791                            || '(MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION)'
6792                            || ' '
6793                            || 'SELECT MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION FROM cz_model_usages_tl t'
6794                            || ' '
6798                            || ' '
6795                            || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i)'
6796                            || ' '
6797                            || 'and t.language=cz_pb_mgr.v_usages_lang_tbl(i);'
6799                            || 'END;'
6800                            || ' '
6801                            || 'END LOOP;'
6802                            || ' '
6803                            || 'END;';
6804       END IF;
6805 
6806       cz_pb_mgr.v_model_usages_tbl.DELETE;
6807       cz_pb_mgr.v_usages_lang_tbl.DELETE;
6808    EXCEPTION
6809       WHEN OTHERS
6810       THEN
6811          ROLLBACK;
6812          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
6813          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USAGES', SQLCODE);
6814          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6815          RAISE;
6816    END load_usages;
6817 
6818 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6819 ----procedure that checks if a model has been published earlier
6820 ----@p_publication_id : publication_id of the publication request
6821 ----x_record_count : returns count of earlier publications
6822    PROCEDURE chk_if_aleady_published(p_publication_id IN cz_model_publications.publication_id%TYPE, x_record_count IN OUT NOCOPY NUMBER)
6823    AS
6824    BEGIN
6825       IF (g_object_type = MODEL_PUBLICATION)
6826       THEN
6827          SELECT COUNT(*)
6828            INTO x_record_count
6829            FROM cz_model_publications z
6830           WHERE z.object_id = (SELECT object_id
6831                                  FROM cz_model_publications
6832                                 WHERE cz_model_publications.publication_id = p_publication_id)
6833             AND z.server_id = (SELECT server_id
6834                                  FROM cz_model_publications
6835                                 WHERE cz_model_publications.publication_id = p_publication_id)
6836             AND z.model_last_struct_update =
6837                    (SELECT last_struct_update
6838                       FROM cz_devl_projects
6839                      WHERE cz_devl_projects.devl_project_id =
6840                                           (SELECT object_id
6841                                              FROM cz_model_publications
6842                                             WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = '0'))
6843             AND z.export_status IN('OK', 'PUP')
6844             AND z.source_target_flag = g_source_flag
6845             AND z.deleted_flag = record_not_deleted;
6846       ELSIF(g_object_type = template_publication)
6847       THEN
6848          SELECT COUNT(*)
6849            INTO x_record_count
6850            FROM cz_model_publications z
6851           WHERE z.object_id = (SELECT object_id
6852                                  FROM cz_model_publications
6853                                 WHERE cz_model_publications.publication_id = p_publication_id)
6854             AND z.server_id = (SELECT server_id
6855                                  FROM cz_model_publications
6856                                 WHERE cz_model_publications.publication_id = p_publication_id)
6857             AND z.export_status IN('OK', 'PUP')
6858             AND z.source_target_flag = g_source_flag
6859             AND z.deleted_flag = record_not_deleted;
6860       END IF;
6861    EXCEPTION
6862       WHEN OTHERS
6863       THEN
6864          RAISE;
6865    END chk_if_aleady_published;
6866 
6867 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6868 -----procedure that gets the date on which the model was last published
6869 -----@p_model_id: model_id on the publication request
6870 -----@p_server_id : server_id on the publication request
6871 -----x_last_xfr_activity : last published date
6872    PROCEDURE get_last_xfr_activity(
6873       p_model_id IN cz_model_publications.model_id%TYPE
6874      ,p_server_id IN cz_model_publications.server_id%TYPE
6875      ,x_last_xfr_activity IN OUT NOCOPY DATE
6876    )
6877    AS
6878    BEGIN
6879       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
6880       THEN
6881          SELECT last_xfr_activity
6882            INTO x_last_xfr_activity
6883            FROM cz_pb_model_exports
6884           WHERE cz_pb_model_exports.export_id =
6885                    (SELECT MAX(export_id)
6886                       FROM cz_pb_model_exports z
6887                      WHERE z.root_model_id = p_model_id
6888                        AND z.server_id = p_server_id
6889                        AND z.status = 'OK'
6890                        AND z.publication_id IN(
6891                               SELECT publication_id
6892                                 FROM cz_model_publications
6893                                WHERE export_status IN('OK', 'PUP')
6894                                  AND server_id = p_server_id
6895                                  AND publication_mode = cz_model_migration_pvt.mode_migration));
6896       ELSE
6897          SELECT last_xfr_activity
6898            INTO x_last_xfr_activity
6899            FROM cz_pb_model_exports
6900           WHERE cz_pb_model_exports.export_id =
6901                    (SELECT MAX(export_id)
6902                       FROM cz_pb_model_exports z
6903                      WHERE z.root_model_id = p_model_id
6904                        AND z.server_id = p_server_id
6905                        AND z.status = 'OK'
6906                        AND z.publication_id IN(
6910                                  AND server_id = p_server_id
6907                               SELECT publication_id
6908                                 FROM cz_model_publications
6909                                WHERE export_status IN('OK', 'PUP')
6911                                  AND publication_mode <> cz_model_migration_pvt.mode_migration));
6912       END IF;
6913    EXCEPTION
6914       WHEN OTHERS
6915       THEN
6916          x_last_xfr_activity := NULL;
6917    END get_last_xfr_activity;
6918 
6919 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6920 -----procedure that retrieves the last update date from cz_expression nodes
6921 -----required to check if rules have been changed since it was last published
6922    PROCEDURE get_max_expr_date(p_model_id cz_model_publications.model_id%TYPE, x_expr_node_date IN OUT NOCOPY DATE)
6923    AS
6924    BEGIN
6925       SELECT MAX(last_update_date)
6926         INTO x_expr_node_date
6927         FROM cz_expression_nodes t
6928        WHERE t.deleted_flag = record_not_deleted
6929          AND t.expr_type <> 208
6930          AND EXISTS(SELECT 1
6931                       FROM cz_rules
6932                      WHERE rule_id = t.rule_id AND devl_project_id = p_model_id AND deleted_flag = record_not_deleted)
6933          AND t.deleted_flag = record_not_deleted
6934          AND t.expr_type <> 208;
6935    EXCEPTION
6936       WHEN OTHERS
6937       THEN
6938          x_expr_node_date := cz_utils.epoch_begin;
6939    END get_max_expr_date;
6940 
6941 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6942 -----procedure that retrieves the last_struct_update date
6943 -----required to check if ps structure been changed since model was last published
6944    PROCEDURE get_last_struct_date(p_model_id cz_model_publications.model_id%TYPE, x_last_struct_date IN OUT NOCOPY DATE)
6945    AS
6946    BEGIN
6947       SELECT last_struct_update
6948         INTO x_last_struct_date
6949         FROM cz_devl_projects t
6950        WHERE t.deleted_flag = record_not_deleted AND t.devl_project_id = p_model_id;
6951    EXCEPTION
6952       WHEN OTHERS
6953       THEN
6954          x_last_struct_date := cz_utils.epoch_begin;
6955    END get_last_struct_date;
6956 
6957 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6958 -----procedure that returns the source ui_defs for export
6959 -----@p_model_id   : model that is exported
6960 -----@p_src_models : source models array
6961 -----x_ui_def_ref  : output of source ui defs
6962    PROCEDURE get_source_uis(
6963       p_model_id IN cz_model_publications.model_id%TYPE
6964      ,p_src_models IN cz_pb_mgr.t_ref
6965      ,x_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref
6966    )
6967    AS
6968       v_ui_def_count NUMBER := 0;
6969       v_src_uis_tbl cz_pb_mgr.t_ref;
6970       v_cz_ui_defs_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
6971       l_export_model_id cz_devl_projects.devl_project_id%TYPE;
6972    BEGIN
6973       IF (p_src_models.COUNT > 0)
6974       THEN
6975          x_ui_def_ref.DELETE;
6976 
6977          FOR i IN p_src_models.FIRST .. p_src_models.LAST
6978          LOOP
6979             l_export_model_id := p_src_models(i);
6980             v_src_uis_tbl.DELETE;
6981 
6982             BEGIN
6983                SELECT cz_ui_defs.ui_def_id
6984                BULK COLLECT INTO v_src_uis_tbl
6985                  FROM cz_ui_defs
6986                 WHERE cz_ui_defs.devl_project_id = l_export_model_id
6987                   AND cz_ui_defs.deleted_flag = '0'
6988                   AND cz_ui_defs.ui_style <> 7
6989                   AND cz_ui_defs.NAME <> 'MUID';
6990             EXCEPTION
6991                WHEN OTHERS
6992                THEN
6993                   cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
6994                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
6995             END;
6996 
6997             IF (v_src_uis_tbl.COUNT > 0)
6998             THEN
6999                v_ui_def_count := x_ui_def_ref.COUNT;
7000 
7001                FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7002                LOOP
7003                   IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7004                   THEN
7005                      v_ui_def_count := v_ui_def_count + 1;
7006                      x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7007                      v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7008                   END IF;
7009                END LOOP;
7010             END IF;
7011 
7012             v_src_uis_tbl.DELETE;
7013 
7014             BEGIN
7015                SELECT DISTINCT ui_def_ref_id
7016                BULK COLLECT INTO v_src_uis_tbl
7017                           FROM cz_ui_nodes
7018                          WHERE cz_ui_nodes.ui_def_id IN(
7019                                   SELECT cz_ui_defs.ui_def_id
7020                                     FROM cz_ui_defs
7021                                    WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7022                                          AND cz_ui_defs.NAME <> 'MUID')
7023                            AND cz_ui_nodes.ui_def_ref_id IN(
7024                                   SELECT cz_ui_defs.ui_def_id
7025                                     FROM cz_ui_defs
7026                                    WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7027                                          AND cz_ui_defs.NAME <> 'MUID')
7031                WHEN OTHERS
7028                            AND cz_ui_nodes.deleted_flag = '0'
7029                            AND cz_ui_nodes.ui_def_ref_id IS NOT NULL;
7030             EXCEPTION
7032                THEN
7033                   cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7034                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7035             END;
7036 
7037             IF (v_src_uis_tbl.COUNT > 0)
7038             THEN
7039                v_ui_def_count := x_ui_def_ref.COUNT;
7040 
7041                FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7042                LOOP
7043                   IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7044                   THEN
7045                      v_ui_def_count := v_ui_def_count + 1;
7046                      x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7047                      v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7048                   END IF;
7049                END LOOP;
7050             END IF;
7051          END LOOP;                                                                                       /* end loop of FOR I IN p_src_models.FIRST */
7052       END IF;                                                                                                 /* end if of (p_src_models.COUNT > 0) */
7053    EXCEPTION
7054       WHEN OTHERS
7055       THEN
7056          RAISE;
7057    END get_source_uis;
7058 
7059 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7060 ----procedure that returns the max last_update_date of ui schema
7061    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)
7062    AS
7063       v_ui_def_id_date cz_ui_defs.last_update_date%TYPE;
7064       v_ui_node_id_date cz_ui_nodes.last_update_date%TYPE;
7065       v_ui_props_date cz_ui_nodes.last_update_date%TYPE;
7066       v_ui_node_props_date cz_ui_nodes.last_update_date%TYPE;
7067       v_ui_node_intl_date cz_ui_nodes.last_update_date%TYPE;
7068       v_initialized_date DATE;
7069       v_ui_pages_date DATE;
7070       v_ui_pages_capt_date DATE;
7071       v_ui_page_sets_date DATE;
7072       v_ui_page_refs_date DATE;
7073       v_ui_pg_ref_capt_date DATE;
7074       v_ui_refs_date DATE;
7075       v_ui_templs_date DATE;
7076       v_ui_cont_templs_date DATE;
7077       v_ui_actions_date DATE;
7078       v_ui_images_date DATE;
7079       v_page_elements_date DATE;
7080 
7081       CURSOR ui_def_cur(ui_ui_def_id NUMBER)
7082       IS
7083          SELECT   last_update_date
7084              FROM cz_ui_defs
7085             WHERE cz_ui_defs.ui_def_id = ui_ui_def_id AND cz_ui_defs.deleted_flag = '0'
7086          ORDER BY last_update_date DESC;
7087 
7088       CURSOR ui_nodes_cur(node_ui_def_id NUMBER)
7089       IS
7090          SELECT   last_update_date
7091              FROM cz_ui_nodes
7092             WHERE cz_ui_nodes.ui_def_id = node_ui_def_id AND cz_ui_nodes.deleted_flag = '0'
7093          ORDER BY last_update_date DESC;
7094 
7095       CURSOR ui_properties_cur(prop_ui_def_id NUMBER)
7096       IS
7097          SELECT   last_update_date
7098              FROM cz_ui_properties
7099             WHERE cz_ui_properties.ui_def_id = prop_ui_def_id AND cz_ui_properties.deleted_flag = '0'
7100          ORDER BY last_update_date DESC;
7101 
7102       CURSOR ui_node_props_cur(nodeprops_ui_def_id NUMBER)
7103       IS
7104          SELECT   last_update_date
7105              FROM cz_ui_node_props
7106             WHERE cz_ui_node_props.ui_def_id = nodeprops_ui_def_id AND cz_ui_node_props.deleted_flag = '0'
7107          ORDER BY last_update_date DESC;
7108 
7109       CURSOR ui_intl_texts_cur(p_ui_def_id NUMBER)
7110       IS
7111          SELECT   last_update_date
7112              FROM cz_intl_texts
7113             WHERE intl_text_id IN(SELECT f.tool_tip_id
7114                                     FROM cz_ui_nodes f
7115                                    WHERE f.ui_def_id = p_ui_def_id AND f.deleted_flag = '0'
7116                                   UNION
7117                                   SELECT g.caption_id
7118                                     FROM cz_ui_nodes g
7119                                    WHERE g.ui_def_id = p_ui_def_id AND g.deleted_flag = '0')
7120          ORDER BY last_update_date DESC;
7121 
7122       CURSOR ui_pages_cur(ui_pages_def_id NUMBER)
7123       IS
7124          SELECT   last_update_date
7125              FROM cz_ui_pages
7126             WHERE cz_ui_pages.ui_def_id = ui_pages_def_id
7127          ORDER BY last_update_date DESC;
7128 
7129       CURSOR ui_pages_capt_cur(p_ui_def_id NUMBER)
7130       IS
7131          SELECT   last_update_date
7132              FROM cz_intl_texts
7133             WHERE intl_text_id IN(SELECT caption_text_id
7134                                     FROM cz_ui_pages
7135                                    WHERE cz_ui_pages.ui_def_id = p_ui_def_id)
7136          ORDER BY last_update_date DESC;
7137 
7138       CURSOR ui_page_sets_cur(p_ui_def_id NUMBER)
7139       IS
7140          SELECT   last_update_date
7141              FROM cz_ui_page_sets
7142             WHERE cz_ui_page_sets.ui_def_id = p_ui_def_id AND cz_ui_page_sets.deleted_flag = '0'
7143          ORDER BY last_update_date DESC;
7144 
7145       CURSOR ui_page_refs_cur(p_ui_def_id NUMBER)
7146       IS
7147          SELECT   last_update_date
7148              FROM cz_ui_page_refs
7149             WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id AND cz_ui_page_refs.deleted_flag = '0'
7150          ORDER BY last_update_date DESC;
7154          SELECT   last_update_date
7151 
7152       CURSOR ui_page_refs_capt_cur(p_ui_def_id NUMBER)
7153       IS
7155              FROM cz_intl_texts
7156             WHERE intl_text_id IN(SELECT caption_text_id
7157                                     FROM cz_ui_page_refs
7158                                    WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id)
7159          ORDER BY last_update_date DESC;
7160 
7161       CURSOR ui_refs_cur(p_ui_def_id NUMBER)
7162       IS
7163          SELECT   last_update_date
7164              FROM cz_ui_refs
7165             WHERE cz_ui_refs.ui_def_id = p_ui_def_id AND cz_ui_refs.deleted_flag = '0'
7166          ORDER BY last_update_date DESC;
7167 
7168       CURSOR ui_templs_cur(p_ui_def_id NUMBER)
7169       IS
7170          SELECT   last_update_date
7171              FROM cz_ui_templates
7172             WHERE cz_ui_templates.ui_def_id = p_ui_def_id AND cz_ui_templates.deleted_flag = '0'
7173          ORDER BY last_update_date DESC;
7174 
7175       CURSOR ui_cont_templs_cur(p_ui_def_id NUMBER)
7176       IS
7177          SELECT   last_update_date
7178              FROM cz_ui_cont_type_templs
7179             WHERE cz_ui_cont_type_templs.ui_def_id = p_ui_def_id AND cz_ui_cont_type_templs.deleted_flag = '0'
7180          ORDER BY last_update_date DESC;
7181 
7182       CURSOR ui_actions_cur(p_ui_def_id NUMBER)
7183       IS
7184          SELECT   last_update_date
7185              FROM cz_ui_actions
7186             WHERE cz_ui_actions.ui_def_id = p_ui_def_id
7187          ORDER BY last_update_date DESC;
7188 
7189       CURSOR ui_images_cur(p_ui_def_id NUMBER)
7190       IS
7191          SELECT   last_update_date
7192              FROM cz_ui_images
7193             WHERE cz_ui_images.ui_def_id = p_ui_def_id
7194          ORDER BY last_update_date DESC;
7195       CURSOR ui_page_elements(p_ui_def_id NUMBER)
7196       IS
7197          SELECT   last_update_date
7198              FROM cz_ui_page_elements
7199             WHERE cz_ui_page_elements.ui_def_id = p_ui_def_id
7200          ORDER BY last_update_date DESC;
7201    BEGIN
7202       v_initialized_date := cz_utils.epoch_begin;
7203       v_ui_def_id_date := v_initialized_date;
7204       v_ui_node_id_date := v_initialized_date;
7205       v_ui_props_date := v_initialized_date;
7206       v_ui_node_props_date := v_initialized_date;
7207       v_ui_node_intl_date := v_initialized_date;
7208       v_ui_pages_date := v_initialized_date;
7209       v_ui_pages_capt_date := v_initialized_date;
7210       v_ui_page_sets_date := v_initialized_date;
7211       v_ui_page_refs_date := v_initialized_date;
7212       v_ui_pg_ref_capt_date := v_initialized_date;
7213       v_ui_refs_date := v_initialized_date;
7214       v_ui_templs_date := v_initialized_date;
7215       v_ui_cont_templs_date := v_initialized_date;
7216       v_ui_actions_date := v_initialized_date;
7217       v_ui_images_date := v_initialized_date;
7218 
7219       BEGIN
7220          OPEN ui_def_cur(p_ui_def_id);
7221 
7222          LOOP
7223             FETCH ui_def_cur
7224              INTO v_ui_def_id_date;
7225 
7226             EXIT WHEN ui_def_cur%NOTFOUND;
7227             EXIT WHEN ui_def_cur%ROWCOUNT = 1;
7228          END LOOP;
7229 
7230          CLOSE ui_def_cur;
7231       EXCEPTION
7232          WHEN OTHERS
7233          THEN
7234             v_ui_def_id_date := cz_utils.epoch_begin;
7235 
7236             CLOSE ui_def_cur;
7237       END;
7238 
7239       BEGIN
7240          OPEN ui_nodes_cur(p_ui_def_id);
7241 
7242          LOOP
7243             FETCH ui_nodes_cur
7244              INTO v_ui_node_id_date;
7245 
7246             EXIT WHEN ui_nodes_cur%NOTFOUND;
7247             EXIT WHEN ui_nodes_cur%ROWCOUNT = 1;
7248          END LOOP;
7249 
7250          CLOSE ui_nodes_cur;
7251       EXCEPTION
7252          WHEN OTHERS
7253          THEN
7254             v_ui_node_id_date := cz_utils.epoch_begin;
7255 
7256             CLOSE ui_nodes_cur;
7257       END;
7258 
7259       BEGIN
7260          OPEN ui_properties_cur(p_ui_def_id);
7261 
7262          LOOP
7263             FETCH ui_properties_cur
7264              INTO v_ui_props_date;
7265 
7266             EXIT WHEN ui_properties_cur%NOTFOUND;
7267             EXIT WHEN ui_properties_cur%ROWCOUNT = 1;
7268          END LOOP;
7269 
7270          CLOSE ui_properties_cur;
7271       EXCEPTION
7272          WHEN OTHERS
7273          THEN
7274             v_ui_props_date := cz_utils.epoch_begin;
7275 
7276             CLOSE ui_properties_cur;
7277       END;
7278 
7279       BEGIN
7280          OPEN ui_node_props_cur(p_ui_def_id);
7281 
7282          LOOP
7283             FETCH ui_node_props_cur
7284              INTO v_ui_node_props_date;
7285 
7286             EXIT WHEN ui_node_props_cur%NOTFOUND;
7287             EXIT WHEN ui_node_props_cur%ROWCOUNT = 1;
7288          END LOOP;
7289 
7290          CLOSE ui_node_props_cur;
7291       EXCEPTION
7292          WHEN OTHERS
7293          THEN
7294             v_ui_node_props_date := cz_utils.epoch_begin;
7295 
7296             CLOSE ui_node_props_cur;
7297       END;
7298 
7299       BEGIN
7300          OPEN ui_intl_texts_cur(p_ui_def_id);
7301 
7302          LOOP
7303             FETCH ui_intl_texts_cur
7304              INTO v_ui_node_intl_date;
7305 
7306             EXIT WHEN ui_intl_texts_cur%NOTFOUND;
7307             EXIT WHEN ui_intl_texts_cur%ROWCOUNT = 1;
7308          END LOOP;
7309 
7313          THEN
7310          CLOSE ui_intl_texts_cur;
7311       EXCEPTION
7312          WHEN OTHERS
7314             v_ui_node_intl_date := cz_utils.epoch_begin;
7315 
7316             CLOSE ui_intl_texts_cur;
7317       END;
7318 
7319       BEGIN
7320          OPEN ui_pages_cur(p_ui_def_id);
7321 
7322          LOOP
7323             FETCH ui_pages_cur
7324              INTO v_ui_pages_date;
7325 
7326             EXIT WHEN ui_pages_cur%NOTFOUND;
7327             EXIT WHEN ui_pages_cur%ROWCOUNT = 1;
7328          END LOOP;
7329 
7330          CLOSE ui_pages_cur;
7331       EXCEPTION
7332          WHEN OTHERS
7333          THEN
7334             v_ui_pages_date := cz_utils.epoch_begin;
7335 
7336             CLOSE ui_pages_cur;
7337       END;
7338 
7339       BEGIN
7340          OPEN ui_pages_capt_cur(p_ui_def_id);
7341 
7342          LOOP
7343             FETCH ui_pages_capt_cur
7344              INTO v_ui_pages_capt_date;
7345 
7346             EXIT WHEN ui_pages_capt_cur%NOTFOUND;
7347             EXIT WHEN ui_pages_capt_cur%ROWCOUNT = 1;
7348          END LOOP;
7349 
7350          CLOSE ui_pages_capt_cur;
7351       EXCEPTION
7352          WHEN OTHERS
7353          THEN
7354             v_ui_pages_capt_date := cz_utils.epoch_begin;
7355 
7356             CLOSE ui_pages_capt_cur;
7357       END;
7358 
7359       BEGIN
7360          OPEN ui_page_sets_cur(p_ui_def_id);
7361 
7362          LOOP
7363             FETCH ui_page_sets_cur
7364              INTO v_ui_page_sets_date;
7365 
7366             EXIT WHEN ui_page_sets_cur%NOTFOUND;
7367             EXIT WHEN ui_page_sets_cur%ROWCOUNT = 1;
7368          END LOOP;
7369 
7370          CLOSE ui_page_sets_cur;
7371       EXCEPTION
7372          WHEN OTHERS
7373          THEN
7374             v_ui_page_sets_date := cz_utils.epoch_begin;
7375 
7376             CLOSE ui_page_sets_cur;
7377       END;
7378 
7379       BEGIN
7380          OPEN ui_page_refs_cur(p_ui_def_id);
7381 
7382          LOOP
7383             FETCH ui_page_refs_cur
7384              INTO v_ui_page_refs_date;
7385 
7386             EXIT WHEN ui_page_refs_cur%NOTFOUND;
7387             EXIT WHEN ui_page_refs_cur%ROWCOUNT = 1;
7388          END LOOP;
7389 
7390          CLOSE ui_page_refs_cur;
7391       EXCEPTION
7392          WHEN OTHERS
7393          THEN
7394             v_ui_page_refs_date := cz_utils.epoch_begin;
7395 
7396             CLOSE ui_page_refs_cur;
7397       END;
7398 
7399       BEGIN
7400          OPEN ui_page_refs_capt_cur(p_ui_def_id);
7401 
7402          LOOP
7403             FETCH ui_page_refs_capt_cur
7404              INTO v_ui_pg_ref_capt_date;
7405 
7406             EXIT WHEN ui_page_refs_capt_cur%NOTFOUND;
7407             EXIT WHEN ui_page_refs_capt_cur%ROWCOUNT = 1;
7408          END LOOP;
7409 
7410          CLOSE ui_page_refs_capt_cur;
7411       EXCEPTION
7412          WHEN OTHERS
7413          THEN
7414             v_ui_pg_ref_capt_date := cz_utils.epoch_begin;
7415 
7416             CLOSE ui_page_refs_capt_cur;
7417       END;
7418 
7419       BEGIN
7420          OPEN ui_refs_cur(p_ui_def_id);
7421 
7422          LOOP
7423             FETCH ui_refs_cur
7424              INTO v_ui_refs_date;
7425 
7426             EXIT WHEN ui_refs_cur%NOTFOUND;
7427             EXIT WHEN ui_refs_cur%ROWCOUNT = 1;
7428          END LOOP;
7429 
7430          CLOSE ui_refs_cur;
7431       EXCEPTION
7432          WHEN OTHERS
7433          THEN
7434             v_ui_refs_date := cz_utils.epoch_begin;
7435 
7436             CLOSE ui_refs_cur;
7437       END;
7438 
7439       BEGIN
7440          OPEN ui_templs_cur(p_ui_def_id);
7441 
7442          LOOP
7443             FETCH ui_templs_cur
7444              INTO v_ui_templs_date;
7445 
7446             EXIT WHEN ui_templs_cur%NOTFOUND;
7447             EXIT WHEN ui_templs_cur%ROWCOUNT = 1;
7448          END LOOP;
7449 
7450          CLOSE ui_templs_cur;
7451       EXCEPTION
7452          WHEN OTHERS
7453          THEN
7454             v_ui_templs_date := cz_utils.epoch_begin;
7455 
7456             CLOSE ui_templs_cur;
7457       END;
7458 
7459       BEGIN
7460          OPEN ui_cont_templs_cur(p_ui_def_id);
7461 
7462          LOOP
7463             FETCH ui_cont_templs_cur
7464              INTO v_ui_cont_templs_date;
7465 
7466             EXIT WHEN ui_cont_templs_cur%NOTFOUND;
7467             EXIT WHEN ui_cont_templs_cur%ROWCOUNT = 1;
7468          END LOOP;
7469 
7470          CLOSE ui_cont_templs_cur;
7471       EXCEPTION
7472          WHEN OTHERS
7473          THEN
7474             v_ui_cont_templs_date := cz_utils.epoch_begin;
7475 
7476             CLOSE ui_cont_templs_cur;
7477       END;
7478 
7479       BEGIN
7480          OPEN ui_actions_cur(p_ui_def_id);
7481 
7482          LOOP
7483             FETCH ui_actions_cur
7484              INTO v_ui_actions_date;
7485 
7486             EXIT WHEN ui_actions_cur%NOTFOUND;
7487             EXIT WHEN ui_actions_cur%ROWCOUNT = 1;
7488          END LOOP;
7489 
7490          CLOSE ui_actions_cur;
7491       EXCEPTION
7492          WHEN OTHERS
7493          THEN
7494             v_ui_actions_date := cz_utils.epoch_begin;
7498 
7495 
7496             CLOSE ui_actions_cur;
7497       END;
7499       BEGIN
7500          OPEN ui_images_cur(p_ui_def_id);
7501 
7502          LOOP
7503             FETCH ui_images_cur
7504              INTO v_ui_images_date;
7505 
7506             EXIT WHEN ui_images_cur%NOTFOUND;
7507             EXIT WHEN ui_images_cur%ROWCOUNT = 1;
7508          END LOOP;
7509 
7510          CLOSE ui_images_cur;
7511       EXCEPTION
7512          WHEN OTHERS
7513          THEN
7514             v_ui_images_date := cz_utils.epoch_begin;
7515 
7516             CLOSE ui_images_cur;
7517       END;
7518 
7519       BEGIN
7520          OPEN ui_page_elements(p_ui_def_id);
7521 
7522          LOOP
7523             FETCH ui_page_elements
7524              INTO v_page_elements_date;
7525 
7526             EXIT WHEN ui_page_elements%NOTFOUND;
7527             EXIT WHEN ui_page_elements%ROWCOUNT = 1;
7528          END LOOP;
7529 
7530          CLOSE ui_page_elements;
7531       EXCEPTION
7532          WHEN OTHERS
7533          THEN
7534             v_page_elements_date := cz_utils.epoch_begin;
7535             CLOSE ui_page_elements;
7536       END;
7537       BEGIN
7538          SELECT MAX(GREATEST(v_ui_def_id_date
7539                             ,v_ui_node_id_date
7540                             ,v_ui_props_date
7541                             ,v_ui_node_props_date
7542                             ,v_ui_node_intl_date
7543                             ,v_ui_pages_date
7544                             ,v_ui_pages_capt_date
7545                             ,v_ui_page_sets_date
7546                             ,v_ui_page_refs_date
7547                             ,v_ui_page_refs_date
7548                             ,v_ui_pg_ref_capt_date
7549                             ,v_ui_refs_date
7550                             ,v_ui_templs_date
7551                             ,v_ui_cont_templs_date
7552                             ,v_ui_actions_date
7553                             ,v_ui_images_date
7554                             ,v_page_elements_date
7555                             )
7556                    )
7557            INTO x_max_update_date
7558            FROM DUAL;
7559       EXCEPTION
7560          WHEN OTHERS
7561          THEN
7562             x_max_update_date := cz_utils.epoch_begin;
7563       END;
7564    EXCEPTION
7565       WHEN OTHERS
7566       THEN
7567          RAISE;
7568    END get_max_ui_date;
7569 
7570 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7571 -------procedure that retrieves all source models
7572    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)
7573    AS
7574       v_count PLS_INTEGER := 0;
7575       v_component_id cz_model_ref_expls.component_id%TYPE;
7576 
7577       CURSOR models_cur(in_root_model NUMBER)
7578       IS
7579          SELECT DISTINCT component_id
7580                     FROM cz_model_ref_expls x
7581                    WHERE x.model_id = in_root_model AND x.ps_node_type IN(263, 264) AND x.deleted_flag = '0';
7582    BEGIN
7583       x_models_tbl.DELETE;
7584       v_count := 0;
7585 
7586       OPEN models_cur(p_model_id);
7587 
7588       LOOP
7589          FETCH models_cur
7590           INTO v_component_id;
7591 
7592          EXIT WHEN models_cur%NOTFOUND;
7593          v_count := v_count + 1;
7594          x_models_tbl(v_count) := v_component_id;
7595       END LOOP;
7596 
7597       CLOSE models_cur;
7598 
7599       v_count := v_count + 1;
7600       x_models_tbl(v_count) := p_model_id;
7601    EXCEPTION
7602       WHEN OTHERS
7603       THEN
7604          RAISE;
7605    END get_source_models;
7606 
7607 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7608 --------procedure that checks if logic has changed since the model was last published
7609    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)
7610    AS
7611       v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
7612       v_expr_node_date cz_ui_nodes.last_update_date%TYPE;
7613    BEGIN
7614       IF (p_model_array.COUNT > 0)
7615       THEN
7616          FOR i IN p_model_array.FIRST .. p_model_array.LAST
7617          LOOP
7618             get_max_expr_date(p_model_array(i), v_expr_node_date);
7619 
7620             IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_expr_node_date))
7621             THEN
7622                x_record_count := refresh_rules_count;
7623                EXIT;
7624             END IF;
7625 
7626             BEGIN
7627                SELECT last_logic_update
7628                  INTO v_last_logic_update
7629                  FROM cz_devl_projects
7630                 WHERE cz_devl_projects.devl_project_id = p_model_array(i) AND cz_devl_projects.deleted_flag = '0';
7631             EXCEPTION
7632                WHEN OTHERS
7633                THEN
7634                   v_last_logic_update := NULL;
7635             END;
7636 
7637             IF ((v_last_logic_update IS NOT NULL) AND(p_last_xfr_date < v_last_logic_update))
7638             THEN
7639                x_record_count := refresh_rules_count;
7640                EXIT;
7641             END IF;
7642          END LOOP;
7643       END IF;
7644    EXCEPTION
7645       WHEN OTHERS
7646       THEN
7647          RAISE;
7648    END chk_if_logic_changed;
7649 
7650 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7654       v_last_archive_update cz_archives.last_update_date%TYPE;
7651 --------procedure that checks if archives have changed since the model was last published
7652    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)
7653    AS
7655    BEGIN
7656       IF (p_model_array.COUNT > 0)
7657       THEN
7658          FOR i IN p_model_array.FIRST .. p_model_array.LAST
7659          LOOP
7660             BEGIN
7661                SELECT GREATEST(MAX(arch.last_update_date), MAX(refs.last_update_date))
7662                  INTO v_last_archive_update
7663                  FROM cz_archives arch, cz_archive_refs refs
7664                 WHERE refs.devl_project_id = p_model_array(i) AND arch.archive_id = refs.archive_id AND arch.deleted_flag = '0'
7665                       AND refs.deleted_flag = 0;
7666             EXCEPTION
7667                WHEN NO_DATA_FOUND
7668                THEN
7669                   v_last_archive_update := NULL;
7670             END;
7671 
7672             IF ((v_last_archive_update IS NOT NULL) AND(p_last_xfr_date < v_last_archive_update))
7673             THEN
7674                x_record_count := refresh_rules_count;
7675                EXIT;
7676             END IF;
7677          END LOOP;
7678       END IF;
7679    EXCEPTION
7680       WHEN OTHERS
7681       THEN
7682          RAISE;
7683    END chk_if_archives_changed;
7684 
7685 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7686 -------procedure checks if model structure has changed since it was last published
7687    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)
7688    AS
7689       v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
7690       v_last_struct_date cz_devl_projects.last_struct_update%TYPE;
7691    BEGIN
7692       IF (p_model_array.COUNT > 0)
7693       THEN
7694          FOR i IN p_model_array.FIRST .. p_model_array.LAST
7695          LOOP
7696             get_last_struct_date(p_model_array(i), v_last_struct_date);
7697 
7698             IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_last_struct_date))
7699             THEN
7700                x_record_count := -777;
7701                EXIT;
7702             END IF;
7703          END LOOP;
7704       END IF;
7705    EXCEPTION
7706       WHEN OTHERS
7707       THEN
7708          RAISE;
7709    END;
7710 
7711 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7712 ----get last update date for FC
7713    PROCEDURE get_fc_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7714    AS
7715       v_update_date cz_func_comp_specs.last_update_date%TYPE;
7716    BEGIN
7717       IF (p_model_array.COUNT > 0)
7718       THEN
7719          x_max_update_date := cz_utils.epoch_begin;
7720 
7721          FOR i IN p_model_array.FIRST .. p_model_array.LAST
7722          LOOP
7723             BEGIN
7724                SELECT MAX(last_update_date)
7725                  INTO v_update_date
7726                  FROM cz_func_comp_specs
7727                 WHERE cz_func_comp_specs.devl_project_id = p_model_array(i) AND cz_func_comp_specs.deleted_flag = record_not_deleted;
7728             EXCEPTION
7729                WHEN OTHERS
7730                THEN
7731                   v_update_date := NULL;
7732             END;
7733 
7734             IF (v_update_date IS NOT NULL)
7735             THEN
7736                IF (v_update_date > x_max_update_date)
7737                THEN
7738                   x_max_update_date := v_update_date;
7739                END IF;
7740             END IF;
7741          END LOOP;
7742       END IF;
7743    END get_fc_date;
7744 
7745 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7746 ------procedure that retrieves the max last update date
7747 ------for ps nodes on the model
7748    PROCEDURE get_psnode_last_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE) AS
7749    BEGIN
7750      SELECT MAX(last_update_date)
7751        INTO x_last_update_date
7752        FROM cz_ps_nodes
7753       WHERE devl_project_id = p_model_id;
7754    EXCEPTION
7755      WHEN OTHERS THEN
7756        x_last_update_date := cz_utils.epoch_begin;
7757    END;
7758 
7759 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7760 ------procedure that retrieves the max last update date
7761 ------for the description on the model
7762    PROCEDURE get_intl_text_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
7763    AS
7764    BEGIN
7765       SELECT MAX(last_update_date)
7766         INTO x_last_update_date
7767         FROM cz_localized_texts
7768        WHERE model_id = p_model_id;
7769    EXCEPTION
7770       WHEN OTHERS
7771       THEN
7772          x_last_update_date := cz_utils.epoch_begin;
7773    END;
7774 
7775 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7776    PROCEDURE get_max_template_date(p_template_id IN NUMBER, x_max_date OUT NOCOPY DATE)
7777    IS
7778    BEGIN
7779       SELECT last_update_date
7780         INTO x_max_date
7781         FROM cz_ui_templates
7782        WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.deleted_flag = record_not_deleted;
7783    EXCEPTION
7784       WHEN OTHERS
7785       THEN
7786          x_max_date := cz_utils.epoch_begin;
7787    END get_max_template_date;
7788 
7789 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7793       l_prev_date DATE := cz_utils.epoch_begin;
7790    PROCEDURE get_template_date(p_global_templs_ref IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7791    IS
7792       l_last_update_date DATE;
7794    BEGIN
7795       x_max_update_date := cz_utils.epoch_begin;
7796 
7797       IF (p_global_templs_ref.COUNT > 0)
7798       THEN
7799          FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
7800          LOOP
7801             SELECT last_update_date
7802               INTO l_last_update_date
7803               FROM cz_ui_templates
7804              WHERE cz_ui_templates.template_id = p_global_templs_ref(i)
7805                AND cz_ui_templates.deleted_flag = record_not_deleted
7806                AND cz_ui_templates.ui_def_id = 0;
7807 
7808             IF (l_last_update_date > l_prev_date)
7809             THEN
7810                x_max_update_date := l_last_update_date;
7811             END IF;
7812 
7813             l_prev_date := x_max_update_date;
7814          END LOOP;
7815       END IF;
7816    EXCEPTION
7817       WHEN NO_DATA_FOUND
7818       THEN
7819          x_max_update_date := cz_utils.epoch_begin;
7820    END get_template_date;
7821 
7822 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7823    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)
7824    IS
7825       l_last_update_date DATE;
7826       l_prev_date DATE := cz_utils.epoch_begin;
7827       rec_count NUMBER := 0;
7828       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
7829    BEGIN
7830       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
7831       THEN
7832          l_pub_mode := cz_model_migration_pvt.mode_migration;
7833       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
7834       THEN
7835          l_pub_mode := cz_model_migration_pvt.mode_copy;
7836       END IF;
7837 
7838       x_last_xfr_activity := cz_utils.epoch_begin;
7839 
7840       IF (p_global_templs_ref.COUNT > 0)
7841       THEN
7842          FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
7843          LOOP
7844             BEGIN
7845                SELECT MAX(published)
7846                  INTO l_last_update_date
7847                  FROM cz_model_publications
7848                 WHERE cz_model_publications.object_id = p_global_templs_ref(i)
7849                   AND cz_model_publications.deleted_flag = record_not_deleted
7850                   AND cz_model_publications.object_type = template_publication
7851                   AND cz_model_publications.publication_mode = l_pub_mode;
7852             EXCEPTION
7853                WHEN NO_DATA_FOUND
7854                THEN
7855                   NULL;
7856             END;
7857 
7858             IF (l_last_update_date >= l_prev_date)
7859             THEN
7860                x_last_xfr_activity := l_last_update_date;
7861             END IF;
7862          END LOOP;
7863       END IF;
7864    EXCEPTION
7865       WHEN OTHERS
7866       THEN
7867          x_last_xfr_activity := cz_utils.epoch_begin;
7868    END get_last_templ_activity;
7869 
7870 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7871    PROCEDURE get_effectivity_set_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
7872    IS
7873    BEGIN
7874       SELECT MAX(last_update_date)
7875         INTO x_last_update_date
7876         FROM cz_effectivity_sets
7877        WHERE cz_effectivity_sets.effectivity_set_id IN(
7878                 SELECT DISTINCT effectivity_set_id
7879                            FROM cz_ps_nodes
7880                           WHERE cz_ps_nodes.devl_project_id = p_model_id
7881                             AND cz_ps_nodes.deleted_flag = record_not_deleted
7882                             AND cz_ps_nodes.effectivity_set_id IS NOT NULL);
7883    EXCEPTION
7884       WHEN NO_DATA_FOUND
7885       THEN
7886          x_last_update_date := cz_utils.epoch_begin;
7887    END get_effectivity_set_date;
7888 
7889 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7890 ------get last update date for effectivity
7891    PROCEDURE get_eff_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7892    AS
7893       v_update_date cz_effectivity_sets.last_update_date%TYPE;
7894    BEGIN
7895       IF (p_model_array.COUNT > 0)
7896       THEN
7897          x_max_update_date := cz_utils.epoch_begin;
7898 
7899          FOR i IN p_model_array.FIRST .. p_model_array.LAST
7900          LOOP
7901             get_effectivity_set_date(p_model_array(i), v_update_date);
7902 
7903             IF (v_update_date > x_max_update_date)
7904             THEN
7905                x_max_update_date := v_update_date;
7906             END IF;
7907          END LOOP;
7908       END IF;
7909    END get_eff_date;
7910 
7911 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7912    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)
7913    IS
7914       l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
7915       l_ui_actns_ui_act_new_id_tbl cz_pb_mgr.t_ref;
7916       l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
7917       l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
7918       l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
7919       l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
7920       l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
7921       l_prcpg_templ_tbl cz_pb_mgr.t_ref;
7922       l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
7923       l_prc_caption_tbl cz_pb_mgr.t_ref;
7924       l_pg_title_tbl    cz_pb_mgr.t_ref;
7928       rec_count         NUMBER;
7925       l_main_msg_tbl    cz_pb_mgr.t_ref;
7926       l_text_tbl        t_ref;
7927       l_text_count      PLS_INTEGER := 0;
7929    BEGIN
7930       IF (p_elem_id_tbl.COUNT > 0) THEN
7931          rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
7932 
7933          FOR i IN p_elem_id_tbl.FIRST .. p_elem_id_tbl.LAST
7934          LOOP
7935             l_ui_actns_ui_act_id_tbl.DELETE;
7936             l_ui_actns_ui_uidef_tbl.DELETE;
7937             l_ui_actns_ui_tgtui_tbl.DELETE;
7938             l_ui_actns_tgtexpl_tbl.DELETE;
7939             l_ui_actns_ctx_comp_tbl.DELETE;
7940             l_ui_actns_ren_cond_tbl.DELETE;
7941             l_prcpg_templ_tbl.DELETE;
7942 	    l_prcpg_tmpui_tbl.DELETE;
7943 	    l_prc_caption_tbl.DELETE;
7944 	    l_pg_title_tbl.DELETE;
7945             l_main_msg_tbl.DELETE;
7946 
7947             IF (p_elem_type_ref(i) = 552) THEN
7948                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_actions_seq
7949                                                  , 'cz_ui_actions_s.nextval' || cz_pb_mgr.v_db_link
7950                                                  ,cz_pb_mgr.v_oraclesequenceincr
7951                                                  )
7952                      ,ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
7953                      ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
7954                      ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
7955                BULK COLLECT INTO l_ui_actns_ui_act_new_id_tbl
7956                      ,l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
7957                      ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
7958                      ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
7959                  FROM cz_ui_actions
7960                 WHERE cz_ui_actions.ui_action_id = p_elem_id_tbl(i)
7961                   AND cz_ui_actions.ui_def_id = 0
7962                   AND cz_ui_actions.deleted_flag = record_not_deleted
7963                   AND cz_ui_actions.seeded_flag <> seed_data;
7964             END IF;
7965 
7966             IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
7967                FOR j IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
7968                LOOP
7969                   rec_count := rec_count + 1;
7970 
7971                   IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0) THEN
7972                      cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_new_id_tbl(j);
7973                      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);
7974                   ELSE
7975                     cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
7976                   END IF;
7977 
7978                   cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
7979                   cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(j);
7980                   cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(j);
7981                   cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(j);
7982                   cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(j);
7983                   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
7984                   cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(j);
7985                   cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(j);
7986                   cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(j);
7987                   cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(j);
7988                   cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(j);
7989 
7990                   -- no template element records for page title text, main msg, prc caption text
7991                   -- so we need to collect them here
7992                   IF l_prc_caption_tbl(j) IS NOT NULL THEN
7993                     l_text_count := l_text_count + 1;
7994                     l_text_tbl(l_text_count) := l_prc_caption_tbl(j);
7995                   END IF;
7996                   IF l_pg_title_tbl(j) IS NOT NULL THEN
7997                     l_text_count := l_text_count + 1;
7998                     l_text_tbl(l_text_count) := l_pg_title_tbl(j);
7999                   END IF;
8000                   IF l_main_msg_tbl(j) IS NOT NULL THEN
8001                     l_text_count := l_text_count + 1;
8002                     l_text_tbl(l_text_count) := l_main_msg_tbl(j);
8003                   END IF;
8004                END LOOP;
8005 
8006                IF l_text_count > 0 THEN
8007                  insert_intl_texts(l_text_tbl, 'global texts from ui actions', TRUE);
8008                END IF;
8009 
8010                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
8011 
8012                  --The resolution moved here from insert_template_elements.
8013                  BEGIN
8014                     p_elem_id_tbl(i) := cz_pb_mgr.g_ui_actions_id_idx_ref(p_elem_id_tbl(i));
8015                  EXCEPTION
8016                    WHEN OTHERS THEN
8017                      cz_pb_mgr.v_err_message := 'Error during resolution of ui_action id = ' || p_elem_id_tbl(i) || ': ' || SQLERRM;
8018                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8019                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8020                      RAISE;
8021                  END;
8022                END IF;
8026    EXCEPTION
8023             END IF;
8024          END LOOP;
8025       END IF;
8027       WHEN NO_DATA_FOUND THEN
8028          NULL;
8029       WHEN OTHERS THEN
8030          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
8031          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8032          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8033          RAISE;
8034    END collect_global_actions;
8035 --------------------------------
8036    PROCEDURE collect_global_texts(
8037       p_template_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8038      ,p_element_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8039      ,x_status_code IN OUT NOCOPY VARCHAR2
8040    )
8041    IS
8042       l_elem_text_tbl cz_pb_mgr.t_ref;
8043       rec_count NUMBER := 0;
8044    BEGIN
8045       IF (p_template_id_ref.COUNT > 0)
8046       THEN
8047          FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8048          LOOP
8049             IF (p_element_type_ref(i) = 8)
8050             THEN
8051                rec_count := l_elem_text_tbl.COUNT + 1;
8052                l_elem_text_tbl(rec_count) := p_template_id_ref(i);
8053             END IF;
8054          END LOOP;
8055 
8056          insert_intl_texts(l_elem_text_tbl, 'global texts', TRUE);
8057 
8058          FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8059          LOOP
8060             IF (p_element_type_ref(i) = 8)
8061             THEN
8062                p_template_id_ref(i) := cz_pb_mgr.v_cz_intl_text_idx_ref(p_template_id_ref(i));
8063             END IF;
8064          END LOOP;
8065       END IF;
8066    EXCEPTION
8067       WHEN OTHERS
8068       THEN
8069          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_COLLECT_GL_TEXTS', 'SQLERRM', SQLERRM);
8070          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_GLTEXTS', SQLCODE);
8071          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8072          RAISE;
8073    END collect_global_texts;
8074 
8075 ---------------------------------------------------------------
8076 PROCEDURE collect_global_rules(
8077       p_rule_id_array IN OUT NOCOPY cz_pb_mgr.t_ref
8078      ,p_rule_type_array IN OUT NOCOPY cz_pb_mgr.t_ref
8079      ,x_status IN OUT NOCOPY VARCHAR2
8080     )
8081 AS
8082   l_new_rule_id        NUMBER;
8083   l_old_rule_id        NUMBER;
8084   v_cz_rules_rf_id     NUMBER;
8085   v_cz_rules_proj_id   NUMBER;
8086   v_cz_rules_comp_id   NUMBER;
8087   v_cz_rules_rea_id    NUMBER;
8088   v_cz_rules_eff_id    NUMBER;
8089   v_cz_rules_unmsg_id  NUMBER;
8090   v_cz_rules_expl_id   NUMBER;
8091   v_cz_rules_sig       NUMBER;
8092   v_cz_rules_ui        NUMBER;
8093   v_cz_eff_usage_mask  cz_rules.effective_usage_mask%TYPE;
8094 
8095   rec_count            NUMBER;
8096 BEGIN
8097   IF (x_status = PUBLICATION_ERROR OR p_rule_id_array.COUNT = 0) THEN
8098     RETURN;
8099   END IF;
8100 
8101   rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT;
8102 
8103   FOR i IN p_rule_id_array.FIRST .. p_rule_id_array.LAST
8104   LOOP
8105     IF (p_rule_type_array(i) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)) THEN
8106       BEGIN
8107         SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
8108                                          ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link
8109                                           ,cz_pb_mgr.v_oraclesequenceincr
8110                                           )
8111               ,rule_id, rule_folder_id, devl_project_id, component_id
8112               ,reason_id, unsatisfied_msg_id, effectivity_set_id
8113               ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
8114          INTO l_new_rule_id
8115               ,l_old_rule_id, v_cz_rules_rf_id, v_cz_rules_proj_id, v_cz_rules_comp_id
8116               ,v_cz_rules_rea_id, v_cz_rules_unmsg_id, v_cz_rules_eff_id
8117               ,v_cz_rules_expl_id, v_cz_rules_sig, v_cz_rules_ui, v_cz_eff_usage_mask
8118         FROM cz_rules
8119         WHERE rule_id = p_rule_id_array(i) AND deleted_flag = '0' AND seeded_flag = '0';
8120 
8121         rec_count := rec_count + 1;
8122         cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_rule_id):=l_new_rule_id;
8123         cz_pb_mgr.v_cz_rules_rule_id_new_ref(rec_count) := l_new_rule_id;
8124         cz_pb_mgr.v_cz_rules_rule_id_old_ref(rec_count) := l_old_rule_id;
8125         cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := v_cz_rules_proj_id;
8126         cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := v_cz_rules_comp_id;
8127         cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
8128         cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := v_cz_rules_expl_id;
8129         cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := v_cz_rules_rea_id;
8130         cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := v_cz_rules_unmsg_id;
8131         cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := v_cz_rules_eff_id;
8132         cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := v_cz_rules_sig;
8133         cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
8134         cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := v_cz_rules_ui;
8135         cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_cz_eff_usage_mask;
8136         cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_new_rule_id;
8137 
8138       EXCEPTION
8139         WHEN NO_DATA_FOUND THEN
8140           cz_pb_mgr.v_err_message := 'No rules found: ' || p_rule_id_array(i);
8141           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
8142       END;
8143 
8144       BEGIN
8145         p_rule_id_array(i) := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(p_rule_id_array(i));
8146       EXCEPTION
8150     END IF;
8147         WHEN OTHERS THEN
8148           NULL;
8149       END;
8151   END LOOP;
8152 EXCEPTION
8153   WHEN OTHERS THEN
8154     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
8155     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
8156     x_status := PUBLICATION_ERROR;
8157     RAISE;
8158 END collect_global_rules;
8159 
8160 ------------------------------------------------
8161    PROCEDURE collect_template_elements(p_template_ref IN cz_pb_mgr.t_ref)
8162    IS
8163       l_template_id_tbl cz_pb_mgr.t_ref;
8164       l_ui_def_id_tbl cz_pb_mgr.t_ref;
8165       l_element_type_tbl cz_pb_mgr.t_ref;
8166       l_element_id_tbl cz_pb_mgr.t_ref;
8167       l_pers_elem_tbl cz_pb_mgr.t_ref;
8168       l_src_pb_id NUMBER;
8169       l_tgt_pb_id NUMBER;
8170       rec_count NUMBER := 0;
8171    BEGIN
8172       l_template_id_ref.DELETE;
8173       l_ui_def_id_ref.DELETE;
8174       l_element_type_ref.DELETE;
8175       l_element_id_ref.DELETE;
8176       l_pers_elem_ref.DELETE;
8177       cz_pb_mgr.l_template_id_ref.DELETE;
8178       cz_pb_mgr.l_ui_def_id_ref.DELETE;
8179       cz_pb_mgr.l_element_type_ref.DELETE;
8180       cz_pb_mgr.l_element_id_ref.DELETE;
8181       cz_pb_mgr.l_pers_elem_ref.DELETE;
8182       cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
8183       cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE;
8184       cz_pb_mgr.g_ui_actns_ui_tgtui_ref.DELETE;
8185       cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
8186       cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
8187       cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
8188       cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
8189       cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
8190       cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
8191       cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
8192       cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
8193 
8194       IF (p_template_ref.COUNT > 0)
8195       THEN
8196          FOR i IN p_template_ref.FIRST .. p_template_ref.LAST
8197          LOOP
8198             l_template_id_tbl.DELETE;
8199             l_ui_def_id_tbl.DELETE;
8200             l_element_type_tbl.DELETE;
8201             l_element_id_tbl.DELETE;
8202             l_pers_elem_tbl.DELETE;
8203 
8204             SELECT template_id, ui_def_id, element_type, element_id, persistent_element_id
8205             BULK COLLECT INTO l_template_id_tbl, l_ui_def_id_tbl, l_element_type_tbl, l_element_id_tbl, l_pers_elem_tbl
8206               FROM cz_ui_template_elements
8207              WHERE cz_ui_template_elements.template_id = p_template_ref(i)
8208                AND cz_ui_template_elements.ui_def_id = 0
8209                AND cz_ui_template_elements.deleted_flag = '0'
8210                AND cz_ui_template_elements.seeded_flag <> seed_data;
8211 
8212             IF (l_template_id_tbl.COUNT > 0)
8213             THEN
8214                rec_count := cz_pb_mgr.l_template_id_ref.COUNT;
8215 
8216                FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
8217                LOOP
8218                   rec_count := rec_count + 1;
8219                   cz_pb_mgr.l_template_id_ref(rec_count) := l_template_id_tbl(j);
8220                   cz_pb_mgr.l_ui_def_id_ref(rec_count) := l_ui_def_id_tbl(j);
8221                   cz_pb_mgr.l_element_type_ref(rec_count) := l_element_type_tbl(j);
8222                   cz_pb_mgr.l_element_id_ref(rec_count) := l_element_id_tbl(j);
8223                   cz_pb_mgr.l_pers_elem_ref(rec_count) := l_pers_elem_tbl(j);
8224                END LOOP;
8225             END IF;
8226          END LOOP;
8227 
8228          IF (l_template_id_ref.COUNT > 0)
8229          THEN
8230             collect_global_actions(cz_pb_mgr.l_element_id_ref, l_element_type_ref);
8231             collect_global_rules(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8232             collect_global_texts(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8233             resolve_ids(cz_pb_mgr.l_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'template ids of template elements');
8234          END IF;
8235       END IF;
8236    EXCEPTION
8237       WHEN NO_DATA_FOUND
8238       THEN
8239          NULL;
8240       WHEN OTHERS
8241       THEN
8242          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_template_elements', 'SQLERRM', SQLERRM);
8243          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_TMPLELEM', SQLCODE);
8244          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8245          RAISE;
8246    END collect_template_elements;
8247 
8248 --------------------------------------------------------------------------------
8249 FUNCTION get_target_template(p_src_template_id IN NUMBER) RETURN NUMBER
8250 IS
8251   l_template_id NUMBER := -1;
8252   l_ref_cursor ref_cursor;
8253  BEGIN
8254    -- using binding vars
8255    -- check existing in ui template table (esp for mig)?
8256    OPEN l_ref_cursor FOR 'SELECT object_id'
8257                       || ' FROM cz_model_publications'
8258                       || cz_pb_mgr.v_db_link
8259                       || ' t'
8260                       || ' WHERE t.source_model_id = '
8261                       || p_src_template_id
8262                       || ' AND t.object_type = ''UIT'' AND t.deleted_flag=0'
8263                       || ' AND t.source_target_flag = '''
8264                       || g_target_flag
8265                       || '''';
8266 
8267   LOOP
8268     FETCH l_ref_cursor INTO l_template_id;
8269     EXIT WHEN l_ref_cursor%NOTFOUND;
8270   END LOOP;
8271 
8272   CLOSE l_ref_cursor;
8273 
8277 --returns the template at target server if it ever got published
8274   RETURN l_template_id;
8275 END get_target_template;
8276 
8278 --(populates cz_pb_mgr.g_ui_templates_new_temp_id_ref)
8279 -- or generates a new id for the target.
8280 
8281    FUNCTION get_new_template(p_template_id IN NUMBER)
8282       RETURN NUMBER
8283    IS
8284       l_template_id NUMBER;
8285    BEGIN
8286       l_template_id := get_target_template(p_template_id);
8287       IF (l_template_id = -1) THEN
8288          l_template_id := cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates,
8289               'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
8290       END IF;
8291 
8292       RETURN l_template_id;
8293    EXCEPTION
8294       WHEN OTHERS THEN
8295          RAISE;
8296    END get_new_template;
8297 
8298 --------------------------------------------------------------------------
8299 -- returns 0 when a template is either never published
8300 -- or is modified after last publication else returns 1.
8301    PROCEDURE has_uit_changed(p_template_id IN NUMBER, p_server_id IN NUMBER, x_status IN OUT NOCOPY NUMBER)
8302    IS
8303       l_uit_update_date DATE;
8304       l_last_update_date DATE;
8305       l_template_id NUMBER;
8306    BEGIN
8307       x_status := 0;
8308 
8309       SELECT last_update_date
8310         INTO l_last_update_date
8311         FROM cz_model_publications
8312        WHERE cz_model_publications.object_id = p_template_id
8313          AND cz_model_publications.object_type = 'UIT'
8314          AND cz_model_publications.source_target_flag = g_source_flag
8315          AND cz_model_publications.server_id = p_server_id
8316          AND cz_model_publications.export_status IN('OK', 'PUP')
8317          AND cz_model_publications.deleted_flag = '0';
8318 
8319       SELECT last_update_date
8320         INTO l_uit_update_date
8321         FROM cz_ui_templates
8322        WHERE ui_def_id = 0 AND template_id = p_template_id AND deleted_flag = '0';
8323 
8324   -- if template changed since last publication
8325       IF (l_uit_update_date > l_last_update_date) THEN
8326          x_status := 0;
8327       ELSE
8328   -- get the target tempalte id for the last publication and
8329   -- add it to the index, such that its not processed further.
8330          l_template_id := get_target_template(p_template_id);
8331          IF l_template_id = -1 THEN
8332            x_status := 0;
8333          ELSE
8334            cz_pb_mgr.g_ui_templates_idx_temp_ref(p_template_id):=l_template_id;
8335            x_status := 1;
8336          END IF;
8337       END IF;
8338    -- if template never got published
8339    EXCEPTION
8340       WHEN NO_DATA_FOUND THEN
8341          x_status := 0;
8342    END has_uit_changed;
8343 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8344 PROCEDURE get_oa_tmpls
8345 IS
8346   l_new_tmpl_tbl  cz_pb_mgr.t_ref;  -- new or changed templs
8347   l_old_tmpl_tbl  cz_pb_mgr.t_ref;  -- exported already, no change
8348   l_all_tmpl_map  cz_pb_mgr.t_ref_idx_vc2;
8349   l_temp_tbl      cz_pb_mgr.t_ref;
8350   l_rec_count     PLS_INTEGER;
8351   l_template_id   NUMBER;
8352   l_jrad_doc      VARCHAR2(255); -- cz_ui_templates.jrad_doc%TYPE;
8353 
8354   -- used for synch operation and insert operation resp
8355   l_parent_container_type NUMBER;
8356   l_root_element_signature_id NUMBER;
8357   l_template_name    VARCHAR2(255); -- cz_ui_templates.TEMPLATE_NAME%TYPE;
8358   l_root_region_type VARCHAR2(255); -- cz_ui_templates.ROOT_REGION_TYPE%TYPE;
8359 
8360   remote_uct ref_cursor;
8361 
8362   document_synch EXCEPTION;
8363 
8364   -- check if templates published previously or if changed since publication
8365   -- add to the new tbl if never published or exported before but changed after publication
8366   -- put to the old tbl, and put src:tgt ids into g_ui_templates_idx_temp_ref map otherwise
8367   -- may be better to separate the new ones with the changed and then just use the
8368   -- new ones for insert proc while the changed for updating?
8369   PROCEDURE check_template_status(p_tmpl_tbl IN t_ref)
8370   IS
8371     l_status     INTEGER;
8372     l_old_count  PLS_INTEGER;
8373     l_new_count  PLS_INTEGER;
8374   BEGIN
8375     IF p_tmpl_tbl.COUNT > 0 THEN
8376       l_old_count := l_old_tmpl_tbl.COUNT;
8377       l_new_count := l_new_tmpl_tbl.COUNT;
8378       FOR i IN p_tmpl_tbl.FIRST .. p_tmpl_tbl.LAST LOOP
8379         IF NOT l_all_tmpl_map.EXISTS(p_tmpl_tbl(i)) THEN
8380           l_status := 0;
8381           has_uit_changed(p_tmpl_tbl(i), cz_pb_mgr.v_server_id, l_status);
8382           IF l_status = 0 THEN -- not pub'd or chg'd since pub
8383             l_new_count := l_new_count + 1;
8384             l_new_tmpl_tbl(l_new_count) := p_tmpl_tbl(i);
8385           ELSE
8386             l_old_count := l_old_count + 1;
8387             l_old_tmpl_tbl(l_old_count) := p_tmpl_tbl(i);
8388           END IF;
8389 
8390           l_all_tmpl_map(p_tmpl_tbl(i)) := NULL;
8391         END IF;
8392       END LOOP;
8393     END IF;
8394   END check_template_status;
8395 
8396 BEGIN
8397   --For model migration, the rules related tables will be loaded in bulk_collect_rules
8398   --and they should not be cleared here.  Rules related tables are collected in 'collect_global_rules',
8399   --which is called from here.
8400   --For publishing, this code gets executed right in the beginning(when all the tables are empty
8401   --anyway), and seems redundant.  But for the risk of introducing regressions, we
8402   --will execute this only for publishing.
8406 
8403   IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
8404     clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
8405   END IF;
8407   cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
8408   cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
8409   cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
8410   cz_pb_mgr.g_ui_templates_ui_def_old_ref.DELETE;
8411   cz_pb_mgr.g_ui_templates_ui_def_new_ref.DELETE;
8412   cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
8413   cz_pb_mgr.g_ui_templates_title_ref.DELETE;
8414   cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
8415   cz_pb_mgr.g_ui_templates_jrad_old_ref.DELETE;
8416   cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
8417   cz_pb_mgr.g_ui_templates_but_uidef_id.DELETE;
8418 
8419   -- templates already exported and no change since, used only in replacing extends
8420   cz_pb_mgr.g_tmpl_jrad_old_tbl.DELETE;
8421   cz_pb_mgr.g_tmpl_jrad_new_tbl.DELETE;
8422 
8423   cz_pb_mgr.g_ui_templates_obj_type.DELETE;
8424   cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
8425 
8426   -- templs directly referred by the UIs: not published before or changed since publication
8427   IF cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 AND cz_pb_mgr.v_session_parameter <> model_copy THEN
8428     FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST LOOP
8429       l_temp_tbl.DELETE;
8430       SELECT template_id BULK COLLECT INTO l_temp_tbl
8431       FROM cz_ui_collect_tmpls_v
8432       WHERE cz_ui_collect_tmpls_v.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
8433       AND cz_ui_collect_tmpls_v.template_id IN
8434            (SELECT template_id
8435             FROM cz_ui_templates
8436             WHERE cz_ui_templates.deleted_flag = '0' AND cz_ui_templates.seeded_flag = '0'
8437             AND cz_ui_templates.ui_def_id = 0);
8438 
8439       check_template_status(l_temp_tbl);
8440     END LOOP;
8441   END IF;
8442 
8443   -- append changed or not published ref templs to l_new_tmpl_tbl
8444   l_rec_count := l_new_tmpl_tbl.COUNT;
8445   IF l_rec_count > 0 THEN
8446     FOR i IN 1 .. l_rec_count LOOP
8447       l_temp_tbl.DELETE;
8448       SELECT ref_template_id BULK COLLECT INTO l_temp_tbl
8449       FROM cz_ui_ref_templates
8450       WHERE cz_ui_ref_templates.deleted_flag = '0'
8451       AND cz_ui_ref_templates.seeded_flag = '0'
8452       AND cz_ui_ref_templates.ref_template_id IN
8453          (SELECT template_id
8454           FROM cz_ui_templates t
8455           WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0)
8456       START WITH cz_ui_ref_templates.template_id = l_new_tmpl_tbl(i)
8457       CONNECT BY PRIOR ref_template_id = cz_ui_ref_templates.template_id
8458              AND PRIOR cz_ui_ref_templates.deleted_flag = '0';
8459 
8460       check_template_status(l_temp_tbl);
8461     END LOOP;
8462   END IF;
8463 
8464   -- add button bar templs (bbt) referred by the templates to the array
8465   -- assume bbts have no ref tmpl, otherwise we have an issue here
8466   l_rec_count := l_new_tmpl_tbl.COUNT;
8467   IF l_rec_count > 0 THEN
8468     FOR i IN 1 .. l_rec_count LOOP
8469       l_temp_tbl.DELETE;
8470       SELECT button_bar_template_id BULK COLLECT INTO l_temp_tbl
8471       FROM cz_ui_templates
8472       WHERE cz_ui_templates.deleted_flag = '0'
8473       AND cz_ui_templates.seeded_flag = '0'
8474       AND cz_ui_templates.ui_def_id = 0
8475       AND cz_ui_templates.button_bar_template_id IS NOT NULL
8476       AND cz_ui_templates.template_id = l_new_tmpl_tbl(i)
8477       AND cz_ui_templates.button_bar_template_id IN
8478           (SELECT template_id
8479            FROM cz_ui_templates t
8480            WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0);
8481 
8482       check_template_status(l_temp_tbl);
8483     END LOOP;
8484   END IF;
8485 
8486   -- processing page tmpls (ppt) referred by ui actions
8487   -- assume ppts have no ref tmpl, no further ppt ref from the action elements (if any) of the ppts
8488   l_rec_count := l_new_tmpl_tbl.COUNT;
8489   IF l_rec_count > 0 THEN
8490     FOR i IN 1 .. l_rec_count LOOP
8491       l_temp_tbl.DELETE;
8492       SELECT processing_page_templ_id BULK COLLECT INTO l_temp_tbl
8493       FROM cz_ui_actions act
8494       WHERE deleted_flag = '0' AND ui_def_id = 0 AND ui_action_id IN
8495          (SELECT element_id FROM cz_ui_template_elements
8496           WHERE deleted_flag = '0' AND element_type = 552
8497           AND template_id = l_new_tmpl_tbl(i)
8498           AND ui_def_id = 0 and seeded_flag = '0')
8499       AND EXISTS (SELECT NULL FROM cz_ui_templates
8500                   WHERE deleted_flag = '0' AND ui_def_id = 0
8501                   AND template_id = act.processing_page_templ_id AND seeded_flag = '0');
8502 
8503       check_template_status(l_temp_tbl);
8504     END LOOP;
8505   END IF;
8506 
8507   IF (l_new_tmpl_tbl.COUNT > 0) THEN
8508     l_rec_count := 0;
8509 
8510     FOR i IN l_new_tmpl_tbl.FIRST .. l_new_tmpl_tbl.LAST LOOP
8511       FOR j IN (SELECT * FROM cz_ui_templates
8512                 WHERE template_id = l_new_tmpl_tbl(i) AND ui_def_id = '0' AND deleted_flag = '0') LOOP
8513         IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model THEN
8514           -- The synch check will be performed here
8515           -- The template name will be checked over the link
8516           -- If the the template does not exists, then we will be using the new template that is created
8517           l_template_name := NULL;
8518           l_template_id := NULL;
8519           l_parent_container_type := NULL;
8520           l_root_region_type := NULL;
8521           l_root_element_signature_id := NULL;
8522 
8526             || 'where t.ui_def_id = ''0'' and t.template_usage = ''0'' and '
8523           OPEN remote_uct FOR 'Select template_name,template_id,parent_container_type,root_region_type,'
8524             || 'root_element_signature_id from cz_ui_templates'
8525             || cz_pb_mgr.v_db_link || 't '
8527             || 't.deleted_flag = ''0'' and t.seeded_flag = ''0'' and '
8528             || 't.template_name = :1 and t.template_type = :2 and nvl(t.message_type,-1) = nvl(:3,-1)'
8529           USING j.template_name, j.template_type, j.message_type;
8530           FETCH remote_uct
8531             INTO l_template_name, l_template_id, l_parent_container_type,
8532                  l_root_region_type, l_root_element_signature_id;
8533 
8534           IF l_template_name IS NOT NULL AND
8535                (   l_parent_container_type <> j.parent_container_type
8536                 OR l_root_region_type <> j.root_region_type
8537                 OR l_root_element_signature_id <> j.root_element_signature_id ) THEN
8538             cz_pb_mgr.v_err_message := cz_utils.get_text('UCT synch error', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
8539             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
8540             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8541             RAISE document_synch;
8542           END IF;
8543         END IF;
8544 
8545         -- pub: populate all the new or changed templs to the arrays
8546         -- mig: only add the new templs (l_template_name IS NULL) ??
8547         IF cz_pb_mgr.v_session_parameter = pub_model OR l_template_name IS NULL THEN
8548           l_rec_count := l_rec_count + 1;
8549           l_template_id := get_new_template(j.template_id);
8550           cz_pb_mgr.g_ui_templates_new_temp_id_ref(l_rec_count) := l_template_id;
8551           cz_pb_mgr.g_ui_templates_old_temp_id_ref(l_rec_count) := j.template_id;
8552           cz_pb_mgr.g_ui_templates_ui_def_old_ref(l_rec_count) := j.ui_def_id; -- '0'
8553           cz_pb_mgr.g_ui_templates_ui_def_new_ref(l_rec_count) := j.ui_def_id;
8554           cz_pb_mgr.g_ui_templates_msg_id_ref(l_rec_count) := j.main_message_id;
8555           cz_pb_mgr.g_ui_templates_title_ref(l_rec_count) := j.title_id;
8556           cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
8557           cz_pb_mgr.g_ui_templates_button_tbl(l_rec_count) := j.button_bar_template_id;
8558           cz_pb_mgr.g_ui_templates_but_uidef_id(l_rec_count) := j.button_bar_templ_uidef_id;
8559 
8560           IF cz_pb_mgr.v_session_parameter = pub_model THEN
8561             cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := j.jrad_doc || '_p';
8562           ELSE
8563             cz_pb_mgr.g_ui_templates_obj_type(l_rec_count) := 'UCT';
8564             cz_pb_mgr.g_enclosing_fld_rp_entry(l_rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
8565             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));
8566           END IF;
8567         END IF;
8568 
8569         -- fix for bug 7047145
8570         -- even if UI CT is already exists on target instance we need to replace
8571         -- old template_ids to new ones in XML attribute "extends"
8572         -- To do that g_ui_templates_jrad_old_ref/g_ui_templates_jrad_new_ref must be populated
8573         -- these two arrays are used in replace_extends()
8574         -- This part shoul be executed in the loop for already published/migrated templates
8575         --  but current code has a mny problems in this area ( checking for ui templates
8576         -- which need to be published/migrated
8577         IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND l_template_name IS NOT NULL THEN
8578             l_rec_count := l_rec_count + 1;
8579             cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
8580             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));
8581         END IF;
8582 
8583         cz_pb_mgr.g_ui_templates_idx_temp_ref(j.template_id):=l_template_id;
8584       END LOOP;
8585     END LOOP;
8586 
8587     collect_template_elements(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
8588   END IF;
8589 
8590   -- get jard_doc for the tmpls published before and not changed since for replacing extends
8591   IF l_old_tmpl_tbl.COUNT > 0 THEN
8592     l_rec_count := 0;
8593     FOR i IN l_old_tmpl_tbl.FIRST..l_old_tmpl_tbl.LAST LOOP
8594       SELECT jrad_doc INTO l_jrad_doc
8595       FROM  cz_ui_templates
8596       WHERE template_id  = l_old_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
8597 
8598       l_rec_count := l_rec_count + 1;
8599       CZ_PB_MGR.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
8600       IF cz_pb_mgr.v_session_parameter = pub_model THEN
8601          cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
8602       ELSE
8603         cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
8604           REPLACE(l_jrad_doc, TO_CHAR(l_old_tmpl_tbl(i)),
8605                               TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_old_tmpl_tbl(i))));
8606       END IF;
8607     END LOOP;
8608   END IF;
8609 
8610 EXCEPTION
8611   WHEN OTHERS THEN
8612     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
8613     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
8614     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8615     RAISE;
8616 END get_oa_tmpls;
8617 
8618 ---------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8619 ------------procedure checks if the model has been changed since it was last published
8620    FUNCTION has_tobe_published(publicationid IN NUMBER)
8621       RETURN BOOLEAN
8622    IS
8626       v_last_update_date cz_ui_defs.last_update_date%TYPE;
8623       v_last_struct_update cz_devl_projects.last_struct_update%TYPE;
8624       v_models_tbl cz_pb_mgr.t_ref;
8625       record_count PLS_INTEGER := 0;
8627       v_fc_update_date cz_func_comp_specs.last_update_date%TYPE;
8628       v_eff_update_date DATE;
8629       v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
8630       l_max_template_date cz_pb_model_exports.last_xfr_activity%TYPE;
8631       l_capt_update_date DATE;
8632       l_ps_node_update_date DATE;
8633       v_descr_date DATE;
8634    BEGIN
8635       chk_if_aleady_published(publicationid, record_count);
8636       get_source_models(cz_pb_mgr.v_root_model_id, v_models_tbl);
8637       get_source_uis(cz_pb_mgr.v_root_model_id, v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
8638       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);
8639       get_oa_tmpls;
8640 
8641       IF (record_count > 0)
8642       THEN
8643          get_last_xfr_activity(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_last_xfr_activity);
8644 
8645          IF (g_object_type = MODEL_PUBLICATION)
8646          THEN
8647             ----check if logic has changed
8648             chk_if_logic_changed(v_models_tbl, v_last_xfr_activity, record_count);
8649             ----check if ARCHIVES got reloaded/changed
8650             chk_if_archives_changed(v_models_tbl, v_last_xfr_activity, record_count);
8651             ----check if structure has changed
8652             chk_if_struct_changed(v_models_tbl, v_last_xfr_activity, record_count);
8653 
8654             -----check if model descripton has changed
8655             IF (v_models_tbl.COUNT > 0)
8656             THEN
8657                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8658                LOOP
8659                   get_intl_text_date(v_models_tbl(i), v_descr_date);
8660 
8661                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_descr_date))
8662                   THEN
8663                      record_count := 0;
8664                      EXIT;
8665                   END IF;
8666                END LOOP;
8667             END IF;
8668 
8669             ----check if fc has changed
8670             get_fc_date(v_models_tbl, v_fc_update_date);
8671 
8672             IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_fc_update_date))
8673             THEN
8674                record_count := 0;
8675             END IF;
8676 
8677             -----check if eff has changed
8678             get_eff_date(v_models_tbl, v_eff_update_date);
8679 
8680             IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_eff_update_date))
8681             THEN
8682                record_count := 0;
8683             END IF;
8684 
8685             ----check if ps node names has changed
8686             IF (v_models_tbl.COUNT > 0)
8687             THEN
8688                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8689                LOOP
8690                   get_psnode_last_date(v_models_tbl(i), l_ps_node_update_date);
8691 
8692                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_ps_node_update_date)) THEN
8693                      record_count := 0;
8694                      EXIT;
8695                   END IF;
8696                END LOOP;
8697             END IF;
8698 
8699             ----check if captions text has changed
8700             IF (v_models_tbl.COUNT > 0)
8701             THEN
8702                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8703                LOOP
8704                   BEGIN
8705                      SELECT MAX(last_update_date)
8706                        INTO l_capt_update_date
8707                        FROM cz_intl_texts
8708                       WHERE model_id = v_models_tbl(i);
8709                   EXCEPTION
8710                      WHEN OTHERS
8711                      THEN
8712                         l_capt_update_date := cz_utils.epoch_begin;
8713                   END;
8714 
8715                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8716                   THEN
8717                      record_count := 0;
8718                      EXIT;
8719                   END IF;
8720                END LOOP;
8721             END IF;
8722 
8723             -----check if capt rules have changed
8724             IF (v_models_tbl.COUNT > 0)
8725             THEN
8726                l_capt_update_date := cz_utils.epoch_begin;
8727 
8728                FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8729                LOOP
8730                   BEGIN
8731                      SELECT last_update_date
8732                        INTO l_capt_update_date
8733                        FROM cz_devl_projects
8734                       WHERE devl_project_id = v_models_tbl(i);
8735                   EXCEPTION
8736                      WHEN OTHERS
8737                      THEN
8738                         l_capt_update_date := cz_utils.epoch_begin;
8739                   END;
8740 
8741                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8742                   THEN
8743                      record_count := 0;
8744                      EXIT;
8745                   END IF;
8746                END LOOP;
8747             END IF;
8748 
8749             -----check if template elements have changed
8750             -- but actually these templs are new or changed ones!
8751             IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
8755                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
8752             THEN
8753                l_capt_update_date := cz_utils.epoch_begin;
8754 
8756                LOOP
8757                   BEGIN
8758                      SELECT MAX(last_update_date)
8759                        INTO l_capt_update_date
8760                        FROM cz_ui_template_elements
8761                       WHERE template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
8762                   EXCEPTION
8763                      WHEN OTHERS
8764                      THEN
8765                         l_capt_update_date := cz_utils.epoch_begin;
8766                   END;
8767 
8768                   IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8769                   THEN
8770                      record_count := 0;
8771                      EXIT;
8772                   END IF;
8773                END LOOP;
8774             END IF;
8775 
8776             ----check if uis have changed
8777             cz_pb_mgr.v_ui_str := 'x';
8778 
8779             IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
8780             THEN
8781                FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
8782                LOOP
8783                   get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(i), v_last_update_date);
8784 
8785                   IF (v_last_xfr_activity IS NULL)
8786                   THEN
8787                      cz_pb_mgr.v_ui_str := 'UI';
8788                      EXIT;
8789                   ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
8790                   THEN
8791                      cz_pb_mgr.v_ui_str := 'UI';
8792                      EXIT;
8793                   END IF;
8794                END LOOP;
8795             END IF;
8796 
8797             IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
8798             THEN
8799                get_template_date(cz_pb_mgr.g_ui_templates_old_temp_id_ref, v_last_update_date);
8800 
8801                IF (v_last_xfr_activity IS NULL)
8802                THEN
8803                   cz_pb_mgr.v_ui_str := 'UI';
8804                ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
8805                THEN
8806                   cz_pb_mgr.v_ui_str := 'UI';
8807                END IF;
8808             END IF;
8809          ELSIF(g_object_type = template_publication)
8810          THEN
8811             get_max_template_date(cz_pb_mgr.v_root_model_id, l_max_template_date);
8812          END IF;
8813       END IF;                                                                                                       /* end if of (record_count > 0) */
8814 
8815       IF (g_object_type = MODEL_PUBLICATION)
8816       THEN
8817          IF ((record_count > 0) AND(cz_pb_mgr.v_ui_str <> 'UI'))
8818          THEN
8819             RETURN FALSE;
8820          ELSIF((record_count = refresh_rules_count) AND(cz_pb_mgr.v_ui_str <> 'UI'))
8821          THEN
8822             v_refresh_rules := 'YES';
8823             RETURN TRUE;                                                                                                            ----refresh rules
8824          ELSIF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT = 0)
8825          THEN
8826             cz_pb_mgr.v_ui_str := 'x';
8827             RETURN TRUE;
8828          ELSE
8829             RETURN TRUE;
8830          END IF;
8831       ELSIF(g_object_type = template_publication)
8832       THEN
8833          IF (v_last_xfr_activity IS NULL)
8834          THEN
8835             RETURN TRUE;
8836          ELSIF(v_last_xfr_activity > l_max_template_date)
8837          THEN
8838             RETURN FALSE;
8839          ELSE
8840             RETURN TRUE;
8841          END IF;
8842       END IF;
8843    EXCEPTION
8844       WHEN OTHERS
8845       THEN
8846          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', SQLERRM);
8847          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
8848          cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
8849          RAISE;
8850    END has_tobe_published;
8851 
8852 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8853 ----procedure that removes duplicate values in models array
8854 ----
8855    PROCEDURE add_root_model(p_root_model_id IN NUMBER, p_models_array IN OUT NOCOPY cz_pb_mgr.t_ref)
8856    AS
8857       model_idx NUMBER := 0;
8858       root_model_found VARCHAR2(1) := 'F';
8859    BEGIN
8860       IF (p_models_array.COUNT > 0)
8861       THEN
8862          FOR i IN p_models_array.FIRST .. p_models_array.LAST
8863          LOOP
8864             IF (p_models_array(i) = p_root_model_id)
8865             THEN
8866                root_model_found := 'T';
8867             END IF;
8868          END LOOP;
8869       END IF;
8870 
8871       IF (root_model_found <> 'T')
8872       THEN
8873          model_idx := p_models_array.COUNT + 1;
8874          p_models_array(model_idx) := p_root_model_id;
8875       END IF;
8876    EXCEPTION
8877       WHEN OTHERS
8878       THEN
8879          RAISE;
8880    END add_root_model;
8881 
8882 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8883 ----procedure that returns the max node depth for a given child model
8884 ----if max node depth is greater than 1 then we need to determine the
8885 ----parent of this child (p_model_id) is exported or not.
8886    PROCEDURE get_max_node_depth(
8890    )
8887       p_model_id IN cz_model_ref_expls.model_id%TYPE
8888      ,p_root_model_id IN cz_model_ref_expls.model_id%TYPE
8889      ,x_node_depth OUT NOCOPY cz_model_ref_expls.node_depth%TYPE
8891    IS
8892    BEGIN
8893       SELECT MAX(node_depth)
8894         INTO x_node_depth
8895         FROM cz_model_ref_expls
8896        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;
8897    END get_max_node_depth;
8898 
8899 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8900 -------procedure that adds a parent of a child that is being exported
8901 -------to the export array.
8902 -------The first step is collect all models (exported and not exported) into
8903 ------l_all_models_array.  Loop over each child model in l_all_models_array
8904 ------and check if the child model node_depth is greater than 1.  If greater than 1
8905 ------then get all the parents at all levels for that child model
8906 ------check if the parent is being exported, if not add it to the export array.
8907 ------The root model is not part of any of the arrays here.  We check for
8908 ------child models only if greater than one level below.
8909    PROCEDURE add_parent_models(
8910       p_root_model_id IN cz_model_ref_expls.model_id%TYPE
8911      ,p_models_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
8912      ,p_models_not_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
8913    )
8914    IS
8915       l_component_id cz_model_ref_expls.component_id%TYPE;
8916       l_node_depth cz_model_ref_expls.node_depth%TYPE;
8917       rec_count NUMBER := 0;
8918       l_models_exported cz_pb_mgr.t_ref_idx_vc2;
8919       l_models_not_exported cz_pb_mgr.t_ref_idx_vc2;
8920       l_all_models_array cz_pb_mgr.t_ref;
8921 
8922       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)
8923       IS
8924          SELECT component_id
8925            FROM cz_model_ref_expls
8926           WHERE cz_model_ref_expls.deleted_flag = '0'
8927             AND cz_model_ref_expls.ps_node_type IN(263, 264)
8928             AND cz_model_ref_expls.model_ref_expl_id IN(
8929                                                         SELECT parent_expl_node_id
8930                                                           FROM cz_model_ref_expls x
8931                                                          WHERE x.deleted_flag = '0' AND x.component_id = p_component_id
8932                                                                AND x.model_id = p_top_model_id);
8933    BEGIN
8934       IF (p_models_not_to_be_exported.COUNT > 0)
8935       THEN
8936          ----ALL child models both exported and non exported
8937          ----are collected into l_all_models_array
8938          l_all_models_array.DELETE;
8939 
8940          SELECT   x.component_id
8941          BULK COLLECT INTO l_all_models_array
8942              FROM cz_model_ref_expls x
8943             WHERE x.deleted_flag = '0'
8944               AND x.model_id = p_root_model_id
8945               AND (x.ps_node_type = 263 OR x.ps_node_type = 264)
8946               AND x.node_depth = (SELECT MAX(b.node_depth)
8947                                     FROM cz_model_ref_expls b
8948                                    WHERE x.component_id = b.component_id AND b.model_id = p_root_model_id AND b.deleted_flag = '0')
8949          ORDER BY node_depth DESC;
8950 
8951          IF (p_models_to_be_exported.COUNT > 0)
8952          THEN
8953             FOR j IN p_models_to_be_exported.FIRST .. p_models_to_be_exported.LAST
8954             LOOP
8955                l_models_exported(p_models_to_be_exported(j)) := p_models_to_be_exported(j);
8956             END LOOP;
8957          END IF;
8958 
8959          FOR k IN p_models_not_to_be_exported.FIRST .. p_models_not_to_be_exported.LAST
8960          LOOP
8961             l_models_not_exported(p_models_not_to_be_exported(k)) := p_models_not_to_be_exported(k);
8962          END LOOP;
8963         IF (l_all_models_array.COUNT > 0) THEN
8964          FOR i IN l_all_models_array.FIRST .. l_all_models_array.LAST
8965          LOOP
8966             IF (l_models_exported.EXISTS(l_all_models_array(i)))
8967             THEN
8968                ---get max node_depth from cz_model_ref_expls for the child model
8969                get_max_node_depth(l_all_models_array(i), p_root_model_id, l_node_depth);
8970 
8971                -----check if node depth > 1, we are interested only if the child model
8972                -----is at a level greater than 1 in the tree.
8973                IF (l_node_depth > 1)
8974                THEN
8975                   -----the cursor is required because, there can be multiple
8976                               -----occurrences of the same component at different levels
8977                   -----in the model tree.  In such a case all the parents of the child
8978                   ----- are exported
8979                   OPEN c_parent_models(l_all_models_array(i), p_root_model_id);
8980 
8981                   LOOP
8982                      FETCH c_parent_models
8983                       INTO l_component_id;
8984 
8985                      EXIT WHEN c_parent_models%NOTFOUND;
8986 
8987                      IF (NOT l_models_exported.EXISTS(l_component_id))
8988                      THEN
8989                         l_models_exported(l_component_id) := l_component_id;
8990                         rec_count := p_models_to_be_exported.COUNT + 1;
8991                         p_models_to_be_exported(rec_count) := l_component_id;
8992                         l_models_not_exported.DELETE(l_component_id);
8993                      END IF;
8994                   END LOOP;
8995 
8999          END LOOP;                                                                                          /* end loop of l_all_models_array.FIRST */
8996                   CLOSE c_parent_models;
8997                END IF;
8998             END IF;
9000         END IF;
9001          -----we do not want to loop over single idx arrays
9002          -----because we would be looping more number of times if the array is sparse
9003          p_models_not_to_be_exported.DELETE;
9004          rec_count := 0;
9005         IF (l_all_models_array.COUNT > 0) THEN
9006          FOR notexpmodel IN l_all_models_array.FIRST .. l_all_models_array.LAST
9007          LOOP
9008             IF (NOT l_models_exported.EXISTS(l_all_models_array(notexpmodel)))
9009             THEN
9010                rec_count := p_models_not_to_be_exported.COUNT + 1;
9011                p_models_not_to_be_exported(rec_count) := l_all_models_array(notexpmodel);
9012             END IF;
9013          END LOOP;
9014 	END IF;
9015       END IF;
9016    EXCEPTION
9017       WHEN OTHERS
9018       THEN
9019          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9020          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9021 
9022          IF (c_parent_models%ISOPEN)
9023          THEN
9024             CLOSE c_parent_models;
9025          END IF;
9026 
9027          RAISE;
9028    END add_parent_models;
9029 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9030 ------Procedure that retrieves the remote model id of the target model
9031 ------@p_server_id --- server local id of target instance
9032 ------@x_status --- publication status
9033 ------@p_model_id --- source model id
9034 ------@x_remote_model_id -- retrieved remote model id
9035    PROCEDURE get_remote_model_id(
9036       p_server_id IN cz_servers.server_local_id%TYPE
9037      ,p_model_id IN cz_pb_model_exports.model_id%TYPE
9038      ,x_status IN OUT NOCOPY VARCHAR2
9039      ,x_remote_model_id IN OUT NOCOPY cz_pb_model_exports.model_id%TYPE
9040    )
9041    AS
9042    BEGIN
9043      IF ((x_status <> PUBLICATION_ERROR) AND (cz_pb_mgr.v_session_parameter <> model_copy)) THEN
9044        IF cz_pb_mgr.v_cz_ps_nodes_idx_tbl.EXISTS(p_model_id) THEN
9045          x_remote_model_id := cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id);
9046        ELSE
9047          IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model THEN
9048            IF p_server_id=0 THEN
9049              SELECT remote_model_id INTO x_remote_model_id
9050              FROM cz_pb_model_exports
9051              WHERE export_id=(SELECT max(export_id)
9052                               FROM cz_pb_model_exports
9053                               WHERE model_id=p_model_id AND server_id=0
9054                               AND status='OK' AND migration_group_id=g_migration_group_id);
9055            ELSE
9056             EXECUTE IMMEDIATE    'SELECT remote_model_id '
9057                               || ' '
9058                               || 'FROM cz_pb_model_exports'
9059                               || ' '
9060                               || 'WHERE cz_pb_model_exports.server_id = :1'
9061                               || ' '
9062                               || 'AND cz_pb_model_exports.export_id = '
9063                               || ' '
9064                               || '(SELECT MIN(export_id)'
9065                               || ' '
9066                               || 'FROM cz_pb_model_exports x, cz_devl_projects'
9067                               || cz_pb_mgr.v_db_link
9068                               || ' farprj'
9069                               || ' '
9070                               || 'WHERE x.server_id = :2'
9071                               || ' '
9072                               || 'AND x.model_id = :3'
9073                               || ' '
9074                               || 'AND x.status = ''OK'''
9075                               || ' '
9076                               || 'AND x.remote_model_id = farprj.devl_project_id'
9077                               || ' '
9078                               || 'AND farprj.deleted_flag = ''0'''
9079                               || ' '
9080                               || 'AND farprj.post_migr_change_flag = :4'
9081                               || ' '
9082                               || 'AND x.migration_group_id IS NOT NULL)'
9083                               || ' '
9084                               || 'AND cz_pb_model_exports.model_id  = :5'
9085                               || ' '
9086                               || 'AND cz_pb_model_exports.status = ''OK'''
9087                          INTO x_remote_model_id
9088                         USING p_server_id, p_server_id, p_model_id, cz_model_migration_pvt.change_flag_unchanged, p_model_id;
9089            END IF;
9090          ELSE
9091             SELECT cz_pb_model_exports.remote_model_id
9092               INTO x_remote_model_id
9093               FROM cz_pb_model_exports
9094              WHERE cz_pb_model_exports.server_id = p_server_id
9095                AND cz_pb_model_exports.export_id =
9096                       (SELECT MAX(export_id)
9097                          FROM cz_pb_model_exports
9098                         WHERE cz_pb_model_exports.server_id = p_server_id
9099                           AND cz_pb_model_exports.model_id = p_model_id
9100                           AND cz_pb_model_exports.status = 'OK'
9101                           AND migration_group_id IS NULL)
9102                AND cz_pb_model_exports.model_id = p_model_id
9103                AND cz_pb_model_exports.status = 'OK';
9104          END IF;
9105 
9106          cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id) := x_remote_model_id;
9107        END IF;
9111      END IF;
9108 
9109      ELSE
9110        x_remote_model_id := p_model_id;
9112    EXCEPTION
9113       WHEN OTHERS THEN
9114          cz_pb_mgr.v_err_message :=
9115                      'Error in retrieving remote model id from model exports for model : ' || p_model_id || ' on ' || p_server_id || ' : ' || SQLERRM;
9116          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMMODELID', SQLCODE);
9117          x_status := PUBLICATION_ERROR;
9118          RAISE;
9119    END get_remote_model_id;
9120 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9121 ------ get_models_tobe_exported gets all models to be exported and those
9122 ------ that are not to be exported to the production database
9123 ------ v_models_to_be_exported
9124 ------ v_models_not_to_be_exported
9125 -----  call to add_root_model add the root model if it does not exist
9126    PROCEDURE get_models_tobe_exported(rootmodelid IN NUMBER)
9127    AS
9128       CURSOR model_cur(in_root_model NUMBER)
9129       IS
9130          SELECT DISTINCT component_id
9131                     FROM cz_model_ref_expls x
9132                    WHERE x.model_id = in_root_model AND x.deleted_flag = '0' AND(x.ps_node_type = 263 OR x.ps_node_type = 264);
9133 
9134       v_count PLS_INTEGER := 0;
9135       v_models model_id_table;
9136       record_index NUMBER := 0;
9137       not_exported_record_index NUMBER := 0;
9138       v_model_id cz_model_publications.model_id%TYPE;
9139       v_expr_last_update cz_expression_nodes.last_update_date%TYPE;
9140       l_exp_models_idx_ref cz_pb_mgr.t_ref_idx_vc2;
9141       l_intl_text_date DATE;
9142       l_eff_set_date DATE;
9143       l_max_arc_date DATE;
9144       l_max_ui_date DATE;
9145       l_ps_node_update_date DATE;
9146       l_remote_model_cur ref_cursor;
9147       l_remote_model cz_pb_model_exports.model_id%TYPE;
9148       l_remote_proj cz_pb_model_exports.model_id%TYPE;
9149       l_remote_name VARCHAR2(32000);
9150       child_model_ui_has_changed BOOLEAN := FALSE;
9151    BEGIN
9152       cz_pb_mgr.v_models_to_be_exported.DELETE;
9153       cz_pb_mgr.v_models_not_to_be_exported.DELETE;
9154 
9155       IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
9156       THEN
9157          OPEN model_cur(rootmodelid);
9158 
9159             /* Bug 5523268
9160              * Check the changes to the UI in Source as well
9161              * Check for the change in the entire reference structure.  I
9162              * if there is a change in the UI of child models, pick that up
9163              * as well;
9164              */
9165 
9166          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9167          THEN
9168             child_model_ui_has_changed :=has_ui_inany_chld_mdl_changed(rootmodelid);
9169          END IF;
9170 
9171          IF (cz_pb_mgr.v_ui_str = 'UI' or child_model_ui_has_changed )
9172          THEN
9173             LOOP
9174                FETCH model_cur
9175                 INTO v_model_id;
9176 
9177                EXIT WHEN model_cur%NOTFOUND;
9178                record_index := record_index + 1;
9179                cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9180             END LOOP;
9181 
9182             add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9183          ELSE
9184             LOOP
9185                FETCH model_cur
9186                 INTO v_model_id;
9187 
9188                EXIT WHEN model_cur%NOTFOUND;
9189                v_count := 0;
9190 
9191                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9192                  IF cz_pb_mgr.v_server_id = 0 THEN
9193                    SELECT COUNT(*) INTO v_count
9194 		   FROM cz_pb_model_exports
9195                    WHERE model_id=v_model_id AND status=publication_ok AND server_id=0
9196                    AND migration_group_id=g_migration_group_id;
9197                  ELSE
9198                   EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_pb_model_exports x, cz_devl_projects'
9199                                     || cz_pb_mgr.v_db_link
9200                                     || ' farprj'
9201                                     || ' '
9202                                     || 'WHERE x.model_id = :1'
9203                                     || ' '
9204                                     || 'AND x.status = :2'
9205                                     || ' '
9206                                     || 'AND x.server_id = :3'
9207                                     || ' '
9208                                     || 'AND x.remote_model_id = farprj.devl_project_id'
9209                                     || ' '
9210                                     || 'AND farprj.deleted_flag = ''0'''
9211                                     || ' '
9212                                     || 'AND farprj.post_migr_change_flag = :4'
9213                                     || ' '
9214                                     || 'AND x.migration_group_id IS NOT NULL'
9215                                INTO v_count
9216                               USING v_model_id, publication_ok, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged;
9217                  END IF;
9218                ELSE
9219                   SELECT COUNT(*)
9220                     INTO v_count
9221                     FROM cz_pb_model_exports x
9222                    WHERE x.model_id = v_model_id AND x.status = publication_ok AND x.server_id = cz_pb_mgr.v_server_id
9223                    AND migration_group_id IS NULL;
9224                END IF;
9225 
9226                IF (v_count = 0)
9227                THEN
9228                   record_index := record_index + 1;
9232 
9229                   cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9230                ELSE
9231                   v_count := 0;
9233                   -------check if expr nodes have changed since the model was last published
9234                   SELECT MAX(last_update_date)
9235                     INTO v_expr_last_update
9236                     FROM cz_expression_nodes t
9237                    WHERE t.deleted_flag = '0'
9238                      AND t.expr_type <> 208
9239                      AND EXISTS(SELECT 1
9240                                   FROM cz_rules
9241                                  WHERE rule_id = t.rule_id AND devl_project_id = v_model_id AND deleted_flag = '0')
9242                      AND t.deleted_flag = '0'
9243                      AND t.expr_type <> 208;
9244 
9245                   IF (v_expr_last_update IS NULL)
9246                   THEN
9247                      v_expr_last_update := cz_utils.epoch_begin;
9248                   END IF;
9249 
9250                   -----effectivitity set check
9251                   get_effectivity_set_date(v_model_id, l_eff_set_date);
9252 
9253                   IF (l_eff_set_date > v_expr_last_update)
9254                   THEN
9255                      v_expr_last_update := l_eff_set_date;
9256                   END IF;
9257 
9258                   ------check if intl text has changed
9259                   get_intl_text_date(v_model_id, l_intl_text_date);
9260 
9261                   IF (l_intl_text_date > v_expr_last_update)
9262                   THEN
9263                      v_expr_last_update := l_intl_text_date;
9264                   END IF;
9265 
9266                   get_psnode_last_date(v_model_id, l_ps_node_update_date);
9267                   IF (l_ps_node_update_date > v_expr_last_update)
9268                   THEN
9269                      v_expr_last_update := l_ps_node_update_date;
9270                   END IF;
9271 
9272 
9273                   -----------end expr nodes check
9274                   SELECT GREATEST(MAX(arc.last_update_date), MAX(REF.last_update_date))
9275                     INTO l_max_arc_date
9276                     FROM cz_archives arc, cz_archive_refs REF
9277                    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';
9278 
9279                   IF l_max_arc_date IS NOT NULL AND l_max_arc_date > v_expr_last_update
9280                   THEN
9281                      v_expr_last_update := l_max_arc_date;
9282                   END IF;
9283 
9284                   -- check if any new ui created after last xfr activity
9285                   -- call get_max_ui_date if this check still not enough
9286                   SELECT MAX(creation_date) INTO l_max_ui_date
9287                   FROM cz_ui_defs
9288                   WHERE deleted_flag = '0' AND devl_project_id = v_model_id AND ui_style <> '-1';
9289                   IF l_max_ui_date IS NOT NULL AND l_max_ui_date > v_expr_last_update THEN
9290                     v_expr_last_update := l_max_ui_date;
9291                   END IF;
9292 
9293                   IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9294                     IF cz_pb_mgr.v_server_id = 0 THEN
9295                       SELECT COUNT(*) INTO v_count
9296 		        FROM cz_devl_projects x, cz_pb_model_exports y
9297 		       WHERE x.devl_project_id = y.model_id
9298 		         AND x.last_update_date < y.last_xfr_activity
9299 		         AND y.last_xfr_activity > v_expr_last_update
9300 		         AND y.model_id = v_model_id AND y.server_id = 0
9301                          AND y.status = 'OK' AND y.migration_group_id = g_migration_group_id;
9302                     ELSE
9303                      EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_devl_projects x, cz_pb_model_exports y, cz_devl_projects'
9304                                        || cz_pb_mgr.v_db_link
9305                                        || ' farprj'
9306                                        || ' '
9307                                        || 'WHERE x.devl_project_id = y.model_id'
9308                                        || ' '
9309                                        || 'AND x.last_update_date < y.last_xfr_activity'
9310                                        || ' '
9311                                        || 'AND y.last_xfr_activity > :1'
9312                                        || ' '
9313                                        || 'AND y.model_id = :2'
9314                                        || ' '
9315                                        || 'AND y.server_id = :3'
9316                                        || ' '
9317                                        || 'AND y.remote_model_id = farprj.devl_project_id'
9318                                        || ' '
9319                                        || 'AND farprj.deleted_flag = ''0'''
9320                                        || ' '
9321                                        || 'AND farprj.post_migr_change_flag = :4'
9322                                        || ' '
9323                                        || 'AND y.migration_group_id IS NOT NULL AND y.status = :5'
9324                                   INTO v_count
9325                                  USING v_expr_last_update, v_model_id, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged, publication_ok;
9326                     END IF;
9327                   ELSE
9328                      SELECT COUNT(*)
9329                        INTO v_count
9330                        FROM cz_devl_projects x, cz_pb_model_exports y
9331                       WHERE x.devl_project_id = y.model_id
9335                         AND y.server_id = cz_pb_mgr.v_server_id
9332                         AND x.last_update_date < y.last_xfr_activity
9333                         AND y.last_xfr_activity > v_expr_last_update
9334                         AND y.model_id = v_model_id
9336                         AND y.status = 'OK' AND y.migration_group_id IS NULL;
9337                   END IF;
9338 
9339                   IF (v_count = 0)
9340                   THEN
9341                      record_index := record_index + 1;
9342                      cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9343                   ELSE
9344                      -----check if the model exists and is not deleted
9345                      l_remote_model := 0;
9346                      l_remote_proj := 0;
9347 
9348                      BEGIN
9349                        get_remote_model_id(cz_pb_mgr.v_server_id, v_model_id, cz_pb_mgr.v_status_code, l_remote_model);
9350                      EXCEPTION
9351                         WHEN NO_DATA_FOUND THEN
9352                            record_index := record_index + 1;
9353                            cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9354                      END;
9355 
9356                      IF (l_remote_model > 0)
9357                      THEN
9358                         OPEN l_remote_model_cur FOR    'SELECT devl_project_id,'
9359                                                     || ' '
9360                                                     || 'REPLACE(cz_developer_utils_pvt.get_repository_path'
9361                                                     || cz_pb_mgr.v_db_link
9362                                                     || ' '
9363                                                     || '(devl_project_id, ''PRJ''), ''/'', ''.'')'
9364                                                     || ' '
9365                                                     || 'FROM cz_devl_projects'
9366                                                     || cz_pb_mgr.v_db_link
9367                                                     || '   t'
9368                                                     || ' '
9369                                                     || 'WHERE t.devl_project_id = :1'
9370                                                     || ' '
9371                                                     || 'AND t.deleted_flag = ''0''' USING l_remote_model;
9372 
9373                         LOOP
9374                            FETCH l_remote_model_cur
9375                             INTO l_remote_proj, l_remote_name;
9376 
9377                            EXIT WHEN l_remote_model_cur%NOTFOUND;
9378                         END LOOP;
9379 
9380                         CLOSE l_remote_model_cur;
9381 
9382                         IF (l_remote_proj > 0)
9383                         THEN
9384                            not_exported_record_index := not_exported_record_index + 1;
9385                            cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id;
9386                            v_remote_names_not_exported(v_model_id) := l_remote_name;
9387                         ELSE
9388                            record_index := record_index + 1;
9389                            cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9390                         END IF;
9391                      END IF;
9392                   END IF;
9393                END IF;
9394             END LOOP;
9395 
9396             add_parent_models(rootmodelid, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_models_not_to_be_exported);
9397             add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9398          END IF;
9399 
9400          CLOSE model_cur;
9401       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
9402       THEN
9403          l_exp_models_idx_ref.DELETE;
9404 
9405          OPEN model_cur(rootmodelid);
9406 
9407          LOOP
9408             FETCH model_cur
9409              INTO v_model_id;
9410 
9411             EXIT WHEN model_cur%NOTFOUND;
9412 
9413             IF (cz_pb_mgr.copy_root_only = 'NO')
9414             THEN
9415                record_index := record_index + 1;
9416                cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9417                l_exp_models_idx_ref(v_model_id) := v_model_id;
9418             ELSIF(cz_pb_mgr.copy_root_only = 'YES')
9419             THEN
9420                NULL;
9421                ----not_exported_record_index := not_exported_record_index + 1;
9422             ----cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id ;
9423             END IF;
9424          END LOOP;
9425 
9426          CLOSE model_cur;
9427 
9428          IF (NOT l_exp_models_idx_ref.EXISTS(rootmodelid))
9429          THEN
9430             record_index := record_index + 1;
9431             cz_pb_mgr.v_models_to_be_exported(record_index) := rootmodelid;
9432          END IF;
9433       END IF;
9434    EXCEPTION
9435       WHEN OTHERS
9436       THEN
9437          CLOSE model_cur;
9438 
9439          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9440          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9441          RAISE;
9442    END get_models_tobe_exported;
9443 
9444 ---->>>>>>>>>>>>>>>>>>>>>>>>>
9445 ---------Creates an export request for each model in the PL/SQL table cz_pb_mgr.v_models_to_be_exported
9446    PROCEDURE create_export_request(rootmodelid IN NUMBER, modelid IN NUMBER, publicationid IN NUMBER, serverid IN NUMBER)
9447    AS
9448       v_node_depth cz_model_ref_expls.node_depth%TYPE;
9452         FROM cz_model_ref_expls
9449    BEGIN
9450       SELECT NVL(MAX(node_depth), 0)
9451         INTO v_node_depth
9453        WHERE model_id = rootmodelid AND component_id = modelid AND deleted_flag = '0';
9454 
9455       INSERT INTO cz_pb_model_exports
9456                   (export_id, export_seq, model_id, root_model_id, server_id, publication_id, export_reverse_seq
9457                   ,superseded_flag, last_xfr_activity, creation_date, last_update_date, created_by, last_updated_by, migration_group_id
9458                   )
9459            VALUES (cz_pb_model_exports_s.NEXTVAL, cz_pb_model_exports_s.CURRVAL, modelid, rootmodelid, serverid, publicationid, NVL(v_node_depth, 0)
9460                   ,'N', SYSDATE, SYSDATE, SYSDATE, 1, 1, cz_pb_mgr.g_migration_group_id
9461                   );
9462 
9463       SELECT cz_pb_model_exports_s.CURRVAL
9464         INTO cz_pb_mgr.v_export_id
9465         FROM DUAL;
9466 
9467       COMMIT;
9468    EXCEPTION
9469       WHEN OTHERS
9470       THEN
9471          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXP_REQUEST_ERR', 'MODELID', modelid);
9472          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CREATE_EXPORT_REQUEST', SQLCODE);
9473          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9474          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9475          RAISE;
9476    END create_export_request;
9477 
9478 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9479 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9480    PROCEDURE create_copy_requests
9481    IS
9482    BEGIN
9483       IF ((cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_models_not_to_be_exported.COUNT > 0))
9484       THEN
9485          FOR copyid IN cz_pb_mgr.v_models_not_to_be_exported.FIRST .. cz_pb_mgr.v_models_not_to_be_exported.LAST
9486          LOOP
9487             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);
9488 
9489             UPDATE cz_pb_model_exports
9490                SET remote_model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid)
9491                   ,status = publication_ok
9492              WHERE cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id
9493                AND cz_pb_model_exports.model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid);
9494          END LOOP;
9495       END IF;
9496 
9497       COMMIT;
9498    EXCEPTION
9499       WHEN OTHERS
9500       THEN
9501          RAISE;
9502    END create_copy_requests;
9503 
9504 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9505 -------------procedure to check publications on target instance
9506    PROCEDURE remote_pb_check(p_publication_id NUMBER)
9507    IS
9508       remote_pb_cv ref_cursor;
9509       v_publication_id NUMBER := 0;
9510       v_remote_link cz_servers.fndnam_link_name%TYPE;
9511    BEGIN
9512       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
9513       THEN
9514          IF ((p_publication_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
9515          THEN
9516             v_remote_link := retrieve_db_link(cz_pb_mgr.v_server_id);
9517             cz_pb_mgr.v_insert_string :=
9518                'SELECT  publication_id FROM cz_model_publications' || v_remote_link || ' t' || ' ' || 'WHERE t.publication_id =  '
9519                || p_publication_id;
9520 
9521             OPEN remote_pb_cv FOR cz_pb_mgr.v_insert_string;
9522 
9523             LOOP
9524                FETCH remote_pb_cv
9525                 INTO v_publication_id;
9526 
9527                EXIT WHEN remote_pb_cv%NOTFOUND;
9528             END LOOP;
9529 
9530             CLOSE remote_pb_cv;
9531 
9532             IF (v_publication_id = 0)
9533             THEN
9534                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'PUBID', p_publication_id);
9535                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
9536                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9537             END IF;
9538          END IF;
9539       END IF;
9540    EXCEPTION
9541       WHEN OTHERS
9542       THEN
9543          CLOSE remote_pb_cv;
9544 
9545          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'SQLERRM', SQLERRM);
9546          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
9547          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9548          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9549          RAISE;
9550    END remote_pb_check;
9551 
9552 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9553 ------insert into effectivity sets table
9554    PROCEDURE insert_eff_sets(
9555       p_eff_set_id_ref IN cz_pb_mgr.t_ref
9556      ,p_eff_sets_old_key IN OUT NOCOPY cz_pb_mgr.t_ref
9557      ,p_eff_sets_new_key IN OUT NOCOPY cz_pb_mgr.t_ref
9558      ,p_eff_single_idx_key IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
9559      ,p_old_key_name IN VARCHAR2
9560      ,p_new_key_name IN VARCHAR2
9561      ,p_eff_text IN VARCHAR2
9562    )
9563    IS
9564       plsql_table_list cz_pb_mgr.col_plsql_table_list;
9565       v_cz_eff_sets_old_ref cz_pb_mgr.t_ref;
9566       v_cz_eff_sets_new_ref cz_pb_mgr.t_ref;
9567       check_all_null BOOLEAN := FALSE;
9568       v_eff_count PLS_INTEGER := 0;
9569       rec_count PLS_INTEGER := 0;
9570       l_eff_set_new_id NUMBER := NULL;
9571       l_eff_sets_exist_key cz_pb_mgr.t_ref;
9572    BEGIN
9573       IF (p_eff_set_id_ref.COUNT > 0)
9574       THEN
9575          p_eff_sets_old_key.DELETE;
9576          p_eff_sets_new_key.DELETE;
9580          cz_pb_mgr.g_eff_set_obj_type.DELETE;
9577          l_eff_sets_exist_key.DELETE;
9578          p_eff_single_idx_key.DELETE;
9579          cz_pb_mgr.v_cz_eff_sets_idx_tbl.DELETE;
9581          cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
9582          cz_pb_mgr.v_cz_eff_sets_new_tbl.DELETE;
9583          check_all_null := TRUE;
9584 
9585          FOR p IN p_eff_set_id_ref.FIRST .. p_eff_set_id_ref.LAST
9586          LOOP
9587             IF (p_eff_set_id_ref(p) IS NOT NULL)
9588             THEN
9589                BEGIN
9590                   check_all_null := FALSE;
9591                   v_cz_eff_sets_old_ref.DELETE;
9592                   v_cz_eff_sets_new_ref.DELETE;
9593 
9594                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_effectivity_sets_seq
9595                                                     , 'cz_effectivity_sets_s.nextval' || cz_pb_mgr.v_db_link
9596                                                     ,cz_pb_mgr.v_oraclesequenceincr
9597                                                     )
9598                         ,effectivity_set_id
9599                   BULK COLLECT INTO v_cz_eff_sets_new_ref
9600                         ,v_cz_eff_sets_old_ref
9601                     FROM cz_effectivity_sets
9602                    WHERE cz_effectivity_sets.effectivity_set_id = p_eff_set_id_ref(p) AND cz_effectivity_sets.deleted_flag = '0';
9603                EXCEPTION
9604                   WHEN NO_DATA_FOUND
9605                   THEN
9606                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
9607                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EFFSETS', SQLCODE);
9608                   WHEN OTHERS
9609                   THEN
9610                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_effectivity_sets', 'SQLERRM', SQLERRM);
9611                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
9612                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9613                END;
9614 
9615                IF (v_cz_eff_sets_new_ref.COUNT > 0)
9616                THEN
9617                   v_eff_count := cz_pb_mgr.v_cz_eff_sets_new_tbl.COUNT;
9618 
9619                   FOR r IN v_cz_eff_sets_new_ref.FIRST .. v_cz_eff_sets_new_ref.LAST
9620                   LOOP
9621                      IF (v_cz_eff_sets_new_ref(r) IS NOT NULL)
9622                      THEN
9623                         IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9624                         THEN
9625                            l_eff_set_new_id := mm_sync_eff_sets(v_cz_eff_sets_old_ref(r), v_cz_eff_sets_new_ref(r));
9626 
9627                            IF ((l_eff_set_new_id IS NULL) AND(NOT v_cz_eff_sets_idx_tbl.EXISTS(v_cz_eff_sets_old_ref(r))))
9628                            THEN
9629                               l_eff_set_new_id := v_cz_eff_sets_new_ref(r);
9630                               v_eff_count := v_eff_count + 1;
9631                               p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
9632                               p_eff_sets_new_key(v_eff_count) := l_eff_set_new_id;
9633                               cz_pb_mgr.g_eff_set_obj_type(v_eff_count) := 'EFF';
9634                               cz_pb_mgr.g_enclosing_fld_rp_entry(v_eff_count) := cz_pb_mgr.g_migration_tgt_folder_id;
9635                               cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=p_eff_sets_new_key(v_eff_count);
9636                            ELSE
9637                               cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=l_eff_set_new_id;
9638                            END IF;
9639                         ELSE
9640                            v_eff_count := v_eff_count + 1;
9641                            p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
9642                            p_eff_sets_new_key(v_eff_count) := v_cz_eff_sets_new_ref(r);
9643                            cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=v_cz_eff_sets_new_ref(r);
9644                         END IF;
9645                      END IF;
9646                   END LOOP;
9647                END IF;
9648             END IF;
9649          END LOOP;
9650 
9651          ------------------insert into cz effectivity sets
9652          plsql_table_list.DELETE;
9653          rec_count := 1;
9654          plsql_table_list(rec_count).col_name := 'effectivity_set_id';
9655          plsql_table_list(rec_count).table_name := p_new_key_name;
9656 
9657          IF (NOT check_all_null)
9658          THEN
9659             BEGIN
9660                insert_into_table('cz_effectivity_sets'
9661                                 ,'effectivity_set_id'
9662                                 ,cz_pb_mgr.v_db_link
9663                                 ,plsql_table_list
9664                                 ,p_old_key_name
9665                                 ,p_eff_sets_old_key
9666                                 );
9667 
9668                IF (p_eff_sets_new_key.COUNT > 0 AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9669                THEN
9670                   ----------begin insert into cz_rp_entries----------------
9671                   plsql_table_list.DELETE;
9672                   rec_count := 1;
9673                   plsql_table_list(rec_count).col_name := 'object_id';
9674                   plsql_table_list(rec_count).table_name := p_new_key_name;
9675                   rec_count := rec_count + 1;
9676                   plsql_table_list(rec_count).col_name := 'object_type';
9677                   plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_eff_set_obj_type';
9678                   rec_count := rec_count + 1;
9682                                         ,'object_id'
9679                   plsql_table_list(rec_count).col_name := 'enclosing_folder';
9680                   plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
9681                   insert_into_rp_entries('cz_rp_entries'
9683                                         ,'object_type'
9684                                         ,cz_pb_mgr.v_db_link
9685                                         ,plsql_table_list
9686                                         ,p_old_key_name
9687                                         ,'cz_pb_mgr.g_eff_set_obj_type'
9688                                         ,p_eff_sets_old_key
9689                                         ,cz_pb_mgr.g_eff_set_obj_type
9690                                         );
9691                ----------end insert into cz_rp_entries----------------
9692                END IF;
9693 
9694                COMMIT;
9695             EXCEPTION
9696                WHEN OTHERS
9697                THEN
9698                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9699             END;
9700          END IF;
9701 
9702          p_eff_sets_old_key.DELETE;
9703          p_eff_sets_new_key.DELETE;
9704       END IF;
9705    EXCEPTION
9706       WHEN OTHERS
9707       THEN
9708          cz_pb_mgr.v_err_message := 'Insert into cz eff sets for: ' || p_eff_text;
9709          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
9710          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9711          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9712          RAISE;
9713    END insert_eff_sets;
9714 
9715 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9716 -----procedure that verifies if the model being published is a BOM model
9717 -----and is being published to a different instance different from the one
9718 -----it has been imported from.
9719 -----@p_server_id is the target_server_id
9720 -----@p_model_id is the devl_project_id of the model being published
9721 -----@cz_pb_mgr.bom_flag is the out parameter: 'Y' indicates the model is to be
9722 -----synchronized.  'N' indicates that no sync is necessary.
9723    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)
9724    AS
9725       v_source_server NUMBER;
9726       v_bom_persistent_node_id NUMBER;
9727       v_bom_ps_node_id NUMBER;
9728       v_bom_err_flag VARCHAR2(1);
9729       v_bom_err_msg VARCHAR2(2000);
9730       v_verify_model_run_id NUMBER;
9731       v_bomsynch_err_flag VARCHAR2(2000);
9732       v_model_name cz_devl_projects.NAME%TYPE;
9733 
9734       TYPE verify_model_message_list IS TABLE OF cz_db_logs.MESSAGE%TYPE
9735          INDEX BY BINARY_INTEGER;
9736 
9737       v_verify_model_msg_ref verify_model_message_list;
9738    BEGIN
9739       -------no synchronization required if published locally
9740       IF ((p_server_id <> 0) AND(g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9741          )
9742       THEN
9743          -----call to this procedure made to determine if the model being published
9744          -----contains a BOM
9745          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);
9746 
9747          --------v_bom_err_flag = 0 indicates that the model contains a single BOM
9748          --------if it contains a single BOM identify the server from where the model
9749             --------was imported
9750          IF (v_bom_err_flag = '0')
9751          THEN
9752             SELECT source_server
9753               INTO v_source_server
9754               FROM cz_xfr_project_bills
9755              WHERE model_ps_node_id = (SELECT devl_project_id
9756                                          FROM cz_ps_nodes
9757                                         WHERE cz_ps_nodes.ps_node_id = v_bom_ps_node_id AND cz_ps_nodes.deleted_flag = '0');
9758 
9759             ------if the server from where it was imported is different from the target
9760             ------to which it is being published then call the bom sync procedure
9761                         ------else no sync required
9762             IF (v_source_server <> p_server_id)
9763             THEN
9764                BEGIN
9765                   SELECT local_name
9766                     INTO cz_pb_mgr.v_server_local_name
9767                     FROM cz_servers
9768                    WHERE cz_servers.server_local_id = p_server_id;
9769                EXCEPTION
9770                   WHEN NO_DATA_FOUND
9771                   THEN
9772                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_NO_SERVER_NAME_FOUND', 'SERVERID', p_server_id);
9773                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9774                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9775                   WHEN OTHERS
9776                   THEN
9777                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SERVER_NAME_ERR', 'SERVERID', p_server_id);
9778                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9779                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9780                END;
9781 
9782                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);
9783 
9784                ----- if v_bomsynch_err_flag is not success then set publication status to ERROR
9785                IF (v_bomsynch_err_flag <> cz_bom_synch.error_flag_success)
9786                THEN
9787                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9788 
9792                        FROM cz_devl_projects
9789                   BEGIN
9790                      SELECT NAME
9791                        INTO v_model_name
9793                       WHERE devl_project_id = cz_pb_mgr.v_root_model_id AND deleted_flag = '0';
9794                   EXCEPTION
9795                      WHEN OTHERS
9796                      THEN
9797                         v_model_name := 'Model name not found for model_id: ' || cz_pb_mgr.v_root_model_id;
9798                   END;
9799 
9800                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_VERIFY_ERR', 'MODELNAME', v_model_name);
9801                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROC', SQLCODE);
9802 
9803                   ----trap errors from verify model to populate cz_db_logs
9804                   BEGIN
9805                      SELECT MESSAGE
9806                      BULK COLLECT INTO v_verify_model_msg_ref
9807                        FROM cz_db_logs
9808                       WHERE cz_db_logs.run_id = v_verify_model_run_id;
9809                   EXCEPTION
9810                      WHEN NO_DATA_FOUND
9811                      THEN
9812                         cz_pb_mgr.v_err_message := 'No messages from verify model procedure';
9813                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9814                      WHEN OTHERS
9815                      THEN
9816                         cz_pb_mgr.v_err_message := 'ERROR in bulk collect of messages for verify_model_procedure: ' || SQLERRM;
9817                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9818                   END;
9819 
9820                   IF (v_verify_model_msg_ref.COUNT > 0)
9821                   THEN
9822                      FOR j IN v_verify_model_msg_ref.FIRST .. v_verify_model_msg_ref.LAST
9823                      LOOP
9824                         IF (v_verify_model_msg_ref(j) IS NOT NULL)
9825                         THEN
9826                            cz_pb_mgr.v_err_message := v_verify_model_msg_ref(j);
9827                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9828                         END IF;
9829                      END LOOP;
9830                   END IF;
9831                ELSE
9832                   cz_pb_mgr.bomsynch_flag := 'Y';
9833                END IF;
9834             ELSE
9835                cz_pb_mgr.bomsynch_flag := 'N';
9836             END IF;
9837          ----- v_bom_err_flag = 2 then NO BOM SYNC to be done
9838          ELSIF(v_bom_err_flag = '2')
9839          THEN
9840             cz_pb_mgr.bomsynch_flag := 'N';
9841             cz_pb_mgr.v_err_message := 'No BOM component found in model: ' || TO_CHAR(p_model_id);
9842             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
9843          -----v_bom_err_flag is not 0 or 2 set the publication status to ERROR
9844          ELSE
9845             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9846             cz_pb_mgr.v_err_message := 'Error: two bom models exist in model: ' || TO_CHAR(p_model_id);
9847             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
9848          END IF;
9849       ELSE
9850          cz_pb_mgr.bomsynch_flag := 'N';
9851       END IF;
9852    EXCEPTION
9853       WHEN OTHERS
9854       THEN
9855          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_PROC_ERR', 'SQLERRM', SQLERRM);
9856          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9857          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9858          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9859          RAISE;
9860    END verify_model_for_sync;
9861 
9862 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9863 ------procedure to get synchronized values for organization_id,
9864 ------top_item_id and product_key of cz_model_publications
9865 ------If no bom synch required, then default values are returned
9866    PROCEDURE get_synchronized_pb_values(p_publication_id IN NUMBER)
9867    IS
9868    BEGIN
9869       IF (p_publication_id > 0)
9870       THEN
9871          SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_orgid(organization_id), 'N', organization_id)
9872                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_topitemid(top_item_id), 'N', top_item_id)
9873                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_productkey(product_key), 'N', product_key)
9874            INTO cz_pb_mgr.v_bomsynch_org_id
9875                ,cz_pb_mgr.v_bomsynch_item_id
9876                ,cz_pb_mgr.v_bomsynch_product_key
9877            FROM cz_model_publications
9878           WHERE cz_model_publications.publication_id = p_publication_id;
9879       END IF;
9880    EXCEPTION
9881       WHEN OTHERS
9882       THEN
9883          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GET_SYNC_ERR', 'SQLERRM', SQLERRM);
9884          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETSYNCVALUES', SQLCODE);
9885          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9886          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9887          RAISE;
9888    END get_synchronized_pb_values;
9889 
9890 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9891 ------function returns true when p_str is a number
9892 ------used in replace_lce_texts
9893    FUNCTION is_number(p_str IN VARCHAR2)
9894       RETURN BOOLEAN
9895    IS
9896       v_numval NUMBER;
9897    BEGIN
9898       IF (p_str IS NOT NULL)
9899       THEN
9903          RETURN FALSE;
9900          v_numval := TO_NUMBER(p_str);
9901          RETURN TRUE;
9902       ELSE
9904       END IF;
9905    EXCEPTION
9906       WHEN OTHERS
9907       THEN
9908          RETURN FALSE;
9909    END is_number;
9910 
9911   FUNCTION is_val_number (p_str IN VARCHAR2)
9912   RETURN VARCHAR2 IS
9913 
9914   BEGIN
9915 
9916      IF(is_number(p_str))
9917      THEN
9918        RETURN 'TRUE';
9919 
9920      ELSE
9921 
9922        RETURN 'FALSE';
9923      END IF;
9924 
9925   END is_val_number;
9926 
9927 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9928 -------procedure to replace reason ids and unsatisfied message
9929 -------ids in logic text.
9930 -------p_logic_text: is the lce text
9931 -------p_pattern : pattern to search for like '... ' for reason ids
9932 -------p_column : name of the column like reason_id
9933 -------x_logic_text: out parameter contains replaced text
9934 PROCEDURE replace_intl_texts(p_logic_text IN VARCHAR2, p_pattern IN VARCHAR2, p_column IN VARCHAR2, x_logic_text IN OUT NOCOPY VARCHAR2)
9935 IS
9936   v_search_str VARCHAR2(200);
9937   v_replace_str VARCHAR2(200);
9938   v_idx_number NUMBER;
9939   v_rep_idx_no NUMBER;
9940   v_instr PLS_INTEGER;
9941   v_lce_text VARCHAR2(4000);
9942   v_complete_str NUMBER;
9943   v_complete_str1 NUMBER;
9944   v_complete_str2 NUMBER;
9945   v_pattern VARCHAR2(200);
9946   v_lce_text_str VARCHAR2(4000);
9947   v_end_delim_str varchar2(25);
9948 
9949 BEGIN
9950   IF (p_logic_text IS NOT NULL) THEN
9951     v_lce_text := p_logic_text;
9952     v_lce_text_str := p_logic_text;
9953     v_instr := INSTR(v_lce_text, p_pattern);
9954     WHILE (v_instr > 0)
9955     LOOP
9956       IF (p_pattern LIKE reasonid) THEN
9957         v_instr := v_instr + 4;
9958         v_pattern := p_pattern;
9959         v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
9960       ELSE -- IF (p_pattern LIKE unmsgid) THEN
9961         v_pattern := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr, 5)));
9962         v_pattern := v_pattern || ' ';
9963         v_instr := v_instr + 5;
9964         v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
9965       END IF;
9966 
9967       v_complete_str1 := INSTR(v_lce_text, ' ');
9968       v_complete_str2 := INSTR(v_lce_text, pbnewline);
9969 
9970       IF v_complete_str2 > 0 AND v_complete_str1 > 0 THEN
9971         v_complete_str := LEAST(v_complete_str1, v_complete_str2) - 1;
9972         IF v_complete_str1 > v_complete_str2 THEN
9973           v_end_delim_str := pbnewline;
9974         ELSE
9975           v_end_delim_str := ' ';
9976         END IF;
9977       ELSIF v_complete_str2 > 0 AND v_complete_str1 = 0 THEN
9978         v_complete_str := v_complete_str2 - 1;
9979         v_end_delim_str:= pbnewline;
9980       ELSIF v_complete_str2 = 0 AND v_complete_str1 > 0 THEN
9981         v_complete_str := v_complete_str1 - 1;
9982         v_end_delim_str:= ' ';
9983       ELSE -- v_complete_str2 = 0) AND(v_complete_str1 = 0
9984         v_complete_str := LENGTH(v_lce_text);
9985         v_end_delim_str := NULL;
9986       END IF;
9987 
9988       v_search_str := NULL;
9989       v_search_str := LTRIM(RTRIM(SUBSTR(v_lce_text, 1, v_complete_str)));
9990 
9991       IF (is_number(v_search_str)) THEN
9992         v_idx_number := TO_NUMBER(v_search_str);
9993         BEGIN
9994           v_rep_idx_no := cz_pb_mgr.v_cz_intl_text_idx_ref(v_idx_number);
9995         EXCEPTION
9996           WHEN NO_DATA_FOUND THEN
9997             CZ_PB_MGR.v_err_message := 'Failure in resolving '||p_column||': '||v_search_str;
9998             CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LCETEXTS',SQLCODE);
9999             RAISE;
10000         END;
10001 
10002         IF v_end_delim_str IS NULL THEN
10003           v_lce_text_str := substr(v_lce_text_str, 1, length(v_lce_text_str)-v_complete_str) || to_char(v_rep_idx_no);
10004         ELSE
10005           v_search_str  := v_pattern || TO_CHAR(v_idx_number) || v_end_delim_str;
10006           v_replace_str := v_pattern || TO_CHAR(v_rep_idx_no) || v_end_delim_str;
10007           v_lce_text_str := REPLACE(v_lce_text_str, v_search_str, v_replace_str);
10008         END IF;
10009       END IF;
10010 
10011       v_instr := INSTR(v_lce_text, p_pattern);
10012     END LOOP;
10013   END IF;
10014 
10015   x_logic_text := v_lce_text_str;
10016 EXCEPTION
10017   WHEN OTHERS THEN
10018     cz_pb_mgr.v_err_message := 'Error during replacing ' || p_column || ' : ' || SQLERRM;
10019     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10020     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10021     RAISE;
10022 END replace_intl_texts;
10023 
10024 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
10025    PROCEDURE insert_lce_load_specs(
10026       p_specs_attach_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10027      ,p_specs_lce_header_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10028      ,p_specs_required_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10029      ,p_specs_attach_comp_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10030      ,p_specs_model_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10031      ,p_specs_net_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10032      ,p_alias_name_ref IN OUT NOCOPY cz_pb_mgr.t_alias_name
10033      ,x_status IN OUT NOCOPY VARCHAR2
10034    )
10035    AS
10036    BEGIN
10037       IF (x_status <> PUBLICATION_ERROR)
10038       THEN
10039          IF (p_specs_model_id_ref.COUNT > 0)
10040          THEN
10041             EXECUTE IMMEDIATE    'BEGIN'
10042                               || ' '
10046                               || 'LOOP'
10043                               || 'IF (cz_pb_mgr.v_specs_attach_expl_id_ref.COUNT > 0) THEN '
10044                               || 'FOR I IN cz_pb_mgr.v_specs_attach_expl_id_ref.FIRST..cz_pb_mgr.v_specs_attach_expl_id_ref.LAST'
10045                               || ' '
10047                               || ' '
10048                               || 'INSERT INTO cz_lce_load_specs'
10049                               || cz_pb_mgr.v_db_link
10050                               || '(ATTACHMENT_EXPL_ID'
10051                               || ' '
10052                               || ',LCE_HEADER_ID'
10053                               || ' '
10054                               || ',REQUIRED_EXPL_ID'
10055                               || ' '
10056                               || ',ATTACHMENT_COMP_ID'
10057                               || ' '
10058                               || ',MODEL_ID'
10059                               || ' '
10060                               || ',NET_TYPE'
10061                               || ' '
10062                               || ',alias_name'
10063                               || ' '
10064                               || ',DELETED_FLAG)'
10065                               || ' '
10066                               || 'values (cz_pb_mgr.v_specs_attach_expl_id_ref(i)'
10067                               || ' '
10068                               || ',cz_pb_mgr.v_specs_lce_header_id_ref(i)'
10069                               || ' '
10070                               || ',cz_pb_mgr.v_specs_required_expl_id_ref(i)'
10071                               || ' '
10072                               || ',cz_pb_mgr.v_specs_attach_comp_id_ref(i)'
10073                               || ' '
10074                               || ',cz_pb_mgr.v_specs_model_id_ref(i)'
10075                               || ' '
10076                               || ',cz_pb_mgr.v_specs_net_type_ref(i)'
10077                               || ' '
10078                               || ',cz_pb_mgr.v_specs_alias_name_ref(i)'
10079                               || ' '
10080                               || ',''0'''
10081                               || ' '
10082                               || ');'
10083                               || ' '
10084                               || 'END LOOP;'
10085                               || 'END IF; '
10086                               || ' '
10087                               || 'END;';
10088 
10089             COMMIT;
10090          END IF;
10091       END IF;
10092    EXCEPTION
10093       WHEN OTHERS
10094       THEN
10095          x_status := PUBLICATION_ERROR;
10096          cz_pb_mgr.v_err_message := 'Error during insert of lce_load_specs: ' || SQLERRM;
10097          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10098          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10099          RAISE;
10100    END insert_lce_load_specs;
10101 
10102 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10103 --------copy data into cz_lce_headers
10104    PROCEDURE copy_lce_headers
10105    IS
10106       v_cz_lce_comp_id_tbl cz_pb_mgr.t_ref;
10107       v_cz_lce_expl_id_tbl cz_pb_mgr.t_ref;
10108       v_cz_lce_headers_new_tbl cz_pb_mgr.t_ref;
10109       v_cz_lce_headers_old_tbl cz_pb_mgr.t_ref;
10110       v_cz_lce_headers_comp_tbl cz_pb_mgr.t_ref;
10111       v_cz_lce_headers_expl_tbl cz_pb_mgr.t_ref;
10112       v_cz_lce_devl_id_tbl cz_pb_mgr.t_ref;
10113       v_specs_attach_expl_id_tbl cz_pb_mgr.t_ref;
10114       v_specs_lce_header_id_tbl cz_pb_mgr.t_ref;
10115       v_specs_required_expl_id_tbl cz_pb_mgr.t_ref;
10116       v_specs_attach_comp_id_tbl cz_pb_mgr.t_ref;
10117       v_specs_model_id_tbl cz_pb_mgr.t_ref;
10118       v_specs_net_type_tbl cz_pb_mgr.t_ref;
10119       plsql_table_list cz_pb_mgr.col_plsql_table_list;
10120       v_specs_alias_name_tbl cz_pb_mgr.t_alias_name;
10121       rec_count NUMBER := 0;
10122       resolution_status VARCHAR2(200);
10123    BEGIN
10124       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10125       THEN
10126          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
10127          THEN
10128             cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
10129             cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
10130             cz_pb_mgr.v_cz_lce_headers_idx_ref.DELETE;
10131             cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
10132             cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
10133             cz_pb_mgr.v_cz_lce_devl_id_ref.DELETE;
10134 
10135             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10136             LOOP
10137                cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
10138                cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
10139                v_cz_lce_comp_id_tbl.DELETE;
10140                v_cz_lce_expl_id_tbl.DELETE;
10141 
10142                BEGIN
10143                   SELECT cz_pb_mgr.sequence_generate(cz_lce_headers_seq
10144                                                     , 'cz_lce_headers_s.nextval' || cz_pb_mgr.v_db_link
10145                                                     ,cz_pb_mgr.v_oraclesequenceincr
10146                                                     )
10147                         ,lce_header_id, component_id, model_ref_expl_id, devl_project_id
10148                   BULK COLLECT INTO cz_pb_mgr.v_cz_lce_headers_new_tbl
10149                         ,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
10150                     FROM cz_lce_headers
10151                    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;
10155                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10152                EXCEPTION
10153                   WHEN NO_DATA_FOUND
10154                   THEN
10156                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10157                   WHEN OTHERS
10158                   THEN
10159                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10160                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10161                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10162                END;
10163 
10164                rec_count := cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT;
10165 
10166                IF (cz_pb_mgr.v_cz_lce_headers_new_tbl.COUNT > 0)
10167                THEN
10168                   FOR k IN cz_pb_mgr.v_cz_lce_headers_new_tbl.FIRST .. cz_pb_mgr.v_cz_lce_headers_new_tbl.LAST
10169                   LOOP
10170                      rec_count := rec_count + 1;
10171                      cz_pb_mgr.v_cz_lce_headers_new_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10172                      cz_pb_mgr.v_cz_lce_headers_old_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_old_tbl(k);
10173                      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);
10174                      cz_pb_mgr.v_cz_lce_comp_id_ref(rec_count) := v_cz_lce_comp_id_tbl(k);
10175                      cz_pb_mgr.v_cz_lce_expl_id_ref(rec_count) := v_cz_lce_expl_id_tbl(k);
10176                      cz_pb_mgr.v_cz_lce_devl_id_ref(rec_count) := v_cz_lce_devl_id_tbl(k);
10177                   END LOOP;
10178                END IF;
10179             END LOOP;
10180          END IF;
10181 
10182          IF (cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT > 0)
10183          THEN
10184             ------resolve component ids of cz lce headers
10185             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');
10186             -------resolve model ref expl id
10187             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');
10188             -------resolve model ref expl id
10189             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');
10190             ------------insert into cz lce headers
10191             plsql_table_list.DELETE;
10192             rec_count := 1;
10193             plsql_table_list(rec_count).col_name := 'lce_header_id';
10194             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_headers_new_ref';
10195             rec_count := rec_count + 1;
10196             plsql_table_list(rec_count).col_name := 'component_id';
10197             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_comp_id_ref';
10198             rec_count := rec_count + 1;
10199             plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
10200             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_expl_id_ref';
10201             rec_count := rec_count + 1;
10202             plsql_table_list(rec_count).col_name := 'devl_project_id';
10203             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_devl_id_ref';
10204             insert_into_table('cz_lce_headers'
10205                              ,'lce_header_id'
10206                              ,cz_pb_mgr.v_db_link
10207                              ,plsql_table_list
10208                              ,'cz_pb_mgr.v_cz_lce_headers_old_ref'
10209                              ,cz_pb_mgr.v_cz_lce_headers_old_ref
10210                              );
10211             ------insert data into cz_lce_load_specs
10212             clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
10213             IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
10214             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10215             LOOP
10216                BEGIN
10217                   v_specs_attach_expl_id_tbl.DELETE;
10218                   v_specs_lce_header_id_tbl.DELETE;
10219                   v_specs_required_expl_id_tbl.DELETE;
10220                   v_specs_attach_comp_id_tbl.DELETE;
10221                   v_specs_model_id_tbl.DELETE;
10222                   v_specs_net_type_tbl.DELETE;
10223                   v_specs_alias_name_tbl.DELETE;
10224 
10225                   SELECT attachment_expl_id, lce_header_id, required_expl_id, attachment_comp_id
10226                         ,model_id, net_type, alias_name
10227                   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
10228                         ,v_specs_model_id_tbl, v_specs_net_type_tbl, v_specs_alias_name_tbl
10229                     FROM cz_lce_load_specs
10230                    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;
10231                EXCEPTION
10232                   WHEN NO_DATA_FOUND
10233                   THEN
10234                      NULL;
10235                   WHEN OTHERS
10236                   THEN
10237                      RAISE no_load_specs_data;
10238                END;
10239 
10240                rec_count := cz_pb_mgr.v_specs_model_id_ref.COUNT;
10241 
10242                IF (v_specs_model_id_tbl.COUNT > 0)
10243                THEN
10244                   FOR loadspeccount IN v_specs_model_id_tbl.FIRST .. v_specs_model_id_tbl.LAST
10245                   LOOP
10246                      rec_count := rec_count + 1;
10250                      cz_pb_mgr.v_specs_attach_comp_id_ref(rec_count) := v_specs_attach_comp_id_tbl(loadspeccount);
10247                      cz_pb_mgr.v_specs_attach_expl_id_ref(rec_count) := v_specs_attach_expl_id_tbl(loadspeccount);
10248                      cz_pb_mgr.v_specs_lce_header_id_ref(rec_count) := v_specs_lce_header_id_tbl(loadspeccount);
10249                      cz_pb_mgr.v_specs_required_expl_id_ref(rec_count) := v_specs_required_expl_id_tbl(loadspeccount);
10251                      cz_pb_mgr.v_specs_model_id_ref(rec_count) := v_specs_model_id_tbl(loadspeccount);
10252                      cz_pb_mgr.v_specs_net_type_ref(rec_count) := v_specs_net_type_tbl(loadspeccount);
10253                      cz_pb_mgr.v_specs_alias_name_ref(rec_count) := v_specs_alias_name_tbl(loadspeccount);
10254                   END LOOP;
10255                END IF;
10256             END LOOP;
10257             END IF;
10258 
10259             --------resolve attachment expl id
10260             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');
10261             --------resolve lce_header id
10262             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');
10263             --------resolve required expl id
10264             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');
10265             --------resolve attachment comp id
10266             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');
10267             --------resolve model id
10268             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');
10269             insert_lce_load_specs(cz_pb_mgr.v_specs_attach_expl_id_ref
10270                                  ,cz_pb_mgr.v_specs_lce_header_id_ref
10271                                  ,cz_pb_mgr.v_specs_required_expl_id_ref
10272                                  ,cz_pb_mgr.v_specs_attach_comp_id_ref
10273                                  ,cz_pb_mgr.v_specs_model_id_ref
10274                                  ,cz_pb_mgr.v_specs_net_type_ref
10275                                  ,cz_pb_mgr.v_specs_alias_name_ref
10276                                  ,cz_pb_mgr.v_status_code
10277                                  );
10278             v_cz_lce_comp_id_tbl.DELETE;
10279             v_cz_lce_expl_id_tbl.DELETE;
10280             v_cz_lce_devl_id_tbl.DELETE;
10281             v_specs_attach_expl_id_tbl.DELETE;
10282             v_specs_lce_header_id_tbl.DELETE;
10283             v_specs_required_expl_id_tbl.DELETE;
10284             v_specs_attach_comp_id_tbl.DELETE;
10285             v_specs_model_id_tbl.DELETE;
10286          END IF;
10287       END IF;                                                                             /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
10288    EXCEPTION
10289       WHEN no_load_specs_data
10290       THEN
10291          cz_pb_mgr.v_err_message := 'Error in retrieving data from cz_load_specs';
10292          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCELOADSPECS', SQLCODE);
10293          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10294          RAISE;
10295       WHEN OTHERS
10296       THEN
10297          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10298          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCEHDRS', SQLCODE);
10299          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10300          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10301          RAISE;
10302    END copy_lce_headers;
10303 
10304 -- used only when rules not copied in publication
10305 PROCEDURE get_rule_intl_text_ids(x_text_id_tbl OUT NOCOPY CZ_PB_MGR.t_ref)
10306 IS
10307   l_text_id_tbl  CZ_PB_MGR.t_ref;
10308   l_counter      PLS_INTEGER := 0;
10309 BEGIN
10310   FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
10311     l_text_id_tbl.DELETE;
10312     SELECT intl_text_id BULK COLLECT INTO l_text_id_tbl
10313     FROM cz_intl_texts
10314     WHERE model_id = cz_pb_mgr.v_models_to_be_exported(i)
10315     AND deleted_flag = '0' AND (seeded_flag IS NULL OR seeded_flag = '0')
10316     AND intl_text_id IN (SELECT reason_id
10317                          FROM cz_rules
10318                          WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
10319                          AND deleted_flag = '0' AND reason_id IS NOT NULL
10320                          UNION ALL
10321                          SELECT unsatisfied_msg_id
10322                          FROM cz_rules
10323                          WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
10324                          AND deleted_flag = '0' AND unsatisfied_msg_id IS NOT NULL);
10325     IF l_text_id_tbl.COUNT > 0 THEN
10326       FOR j IN l_text_id_tbl.FIRST .. l_text_id_tbl.LAST LOOP
10327         l_counter := l_counter + 1;
10328         x_text_id_tbl(l_counter) := l_text_id_tbl(j);
10329       END LOOP;
10330     END IF;
10331   END LOOP;
10332 END get_rule_intl_text_ids;
10333 
10334 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10335 ---------procedure to copy data into cz_lce_texts
10336 ---------reason ids and unsatisfied message ids of cz rules
10337 ---------are copied and resolved in this procedure
10338 ---------
10339    PROCEDURE copy_lce_texts(p_copy_rules_flag IN VARCHAR2)
10340    IS
10341       TYPE lce_text_ref IS TABLE OF VARCHAR2(4000)
10342          INDEX BY BINARY_INTEGER;
10343 
10347       v_text_hdr_tbl cz_pb_mgr.t_ref;
10344       v_text_hdr_ref cz_pb_mgr.t_ref;
10345       v_text_seq_ref cz_pb_mgr.t_ref;
10346       v_lce_text_ref lce_text_ref;
10348       v_text_seq_tbl cz_pb_mgr.t_ref;
10349       v_lce_text_tbl cz_pb_mgr.lcetexttype;
10350       v_text_hdr_new_ref cz_pb_mgr.t_ref;
10351       v_text_seq_new_ref cz_pb_mgr.t_ref;
10352       v_lce_text_new_ref cz_pb_mgr.lcetexttype;
10353       record_count PLS_INTEGER;
10354       seq_nbr PLS_INTEGER;
10355       return_position PLS_INTEGER;
10356       rec_count NUMBER;
10357       l_text_id_tbl CZ_PB_MGR.t_ref;
10358    BEGIN
10359       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10360       THEN
10361          IF (cz_pb_mgr.v_cz_lce_headers_old_ref.COUNT > 0)
10362          THEN
10363             v_text_hdr_ref.DELETE;
10364             v_text_seq_ref.DELETE;
10365             v_lce_text_ref.DELETE;
10366 
10367             FOR i IN cz_pb_mgr.v_cz_lce_headers_old_ref.FIRST .. cz_pb_mgr.v_cz_lce_headers_old_ref.LAST
10368             LOOP
10369                BEGIN
10370                   v_text_hdr_tbl.DELETE;
10371                   v_text_seq_tbl.DELETE;
10372                   v_lce_text_tbl.DELETE;
10373 
10374                   SELECT   lce_header_id, seq_nbr, lce_text
10375                   BULK COLLECT INTO v_text_hdr_tbl, v_text_seq_tbl, v_lce_text_tbl
10376                       FROM cz_lce_texts
10377                      WHERE cz_lce_texts.lce_header_id = cz_pb_mgr.v_cz_lce_headers_old_ref(i)
10378                   ORDER BY lce_header_id, seq_nbr;
10379                EXCEPTION
10380                   WHEN NO_DATA_FOUND
10381                   THEN
10382                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10383                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
10384                   WHEN OTHERS
10385                   THEN
10386                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10387                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
10388                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10389                END;
10390 
10391                rec_count := v_text_hdr_ref.COUNT;
10392 
10393                IF (v_text_hdr_tbl.COUNT > 0)
10394                THEN
10395                   FOR j IN v_text_hdr_tbl.FIRST .. v_text_hdr_tbl.LAST
10396                   LOOP
10397                      rec_count := rec_count + 1;
10398                      v_text_hdr_ref(rec_count) := v_text_hdr_tbl(j);
10399                      v_text_seq_ref(rec_count) := v_text_seq_tbl(j);
10400                      v_lce_text_ref(rec_count) := v_lce_text_tbl(j);
10401                   END LOOP;
10402                END IF;
10403             END LOOP;
10404          END IF;
10405 
10406          IF (v_text_hdr_ref.COUNT > 0)
10407          THEN
10408             -------------Resolving lce header id
10409             resolve_ids(v_text_hdr_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce header id of cz lce texts');
10410          END IF;
10411 
10412          -------replace reason ids in lce text
10413          IF (v_lce_text_ref.COUNT > 0) THEN
10414            -- insert intl text records and populate text id lookup map if rules are not copied in publication
10415            IF UPPER(NVL(p_copy_rules_flag, 'YES')) <> 'YES' THEN
10416              get_rule_intl_text_ids(l_text_id_tbl);
10417              insert_intl_texts(l_text_id_tbl,'Reason and unsatisfied msg ids of rules');
10418            END IF;
10419 
10420            FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
10421            LOOP
10422              replace_intl_texts(v_lce_text_ref(j), reasonid, 'REASONID', v_lce_text_ref(j));
10423            END LOOP;
10424          END IF;
10425 
10426          ----replace unsatisfied message ids
10427          IF (v_lce_text_ref.COUNT > 0)
10428          THEN
10429             FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
10430             LOOP
10431                replace_intl_texts(v_lce_text_ref(j), unmsgid, 'UNSATMSGID', v_lce_text_ref(j));
10432             END LOOP;
10433          END IF;
10434 
10435          IF (v_text_hdr_ref.COUNT > 0)
10436          THEN
10437             record_count := 0;
10438             seq_nbr := 0;
10439 
10440             FOR i IN v_text_hdr_ref.FIRST .. v_text_hdr_ref.LAST
10441             LOOP
10442                record_count := record_count + 1;
10443                seq_nbr := seq_nbr + 1;
10444 
10445                IF (v_text_seq_ref(i) = 1)
10446                THEN
10447                   seq_nbr := 1;
10448                END IF;
10449 
10450                IF (LENGTH(v_lce_text_ref(i)) > 2000)
10451                THEN
10452                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10453                   v_text_seq_new_ref(record_count) := seq_nbr;
10454                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, 2000);
10455                   return_position := INSTR(v_lce_text_new_ref(record_count), pbnewline, -1);
10456                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, return_position);
10457                   record_count := record_count + 1;
10458                   seq_nbr := seq_nbr + 1;
10459                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10460                   v_text_seq_new_ref(record_count) := seq_nbr;
10461                   v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), return_position + 1);
10465                   v_lce_text_new_ref(record_count) := v_lce_text_ref(i);
10462                ELSE
10463                   v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10464                   v_text_seq_new_ref(record_count) := seq_nbr;
10466                END IF;
10467             END LOOP;
10468          END IF;
10469 
10470          IF (v_text_hdr_new_ref.COUNT > 0)
10471          THEN
10472             FOR i IN v_text_hdr_new_ref.FIRST .. v_text_hdr_new_ref.LAST
10473             LOOP
10474                BEGIN
10475                   EXECUTE IMMEDIATE    'INSERT INTO cz_lce_texts'
10476                                     || cz_pb_mgr.v_db_link
10477                                     || '( LCE_HEADER_ID'
10478                                     || ' '
10479                                     || ',SEQ_NBR'
10480                                     || ' '
10481                                     || ',LCE_TEXT'
10482                                     || ' '
10483                                     || ')'
10484                                     || ' '
10485                                     || 'VALUES (:1,:2,:3)'
10486                               USING v_text_hdr_new_ref(i), v_text_seq_new_ref(i), v_lce_text_new_ref(i);
10487 
10488                   COMMIT;
10489                EXCEPTION
10490                   WHEN OTHERS
10491                   THEN
10492                      ROLLBACK;
10493                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10494                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10495                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10496                END;
10497             END LOOP;
10498 
10499             COMMIT;
10500          END IF;
10501 
10502          v_text_hdr_ref.DELETE;
10503          v_text_seq_ref.DELETE;
10504          v_lce_text_ref.DELETE;
10505          v_text_hdr_tbl.DELETE;
10506          v_text_seq_tbl.DELETE;
10507          v_lce_text_tbl.DELETE;
10508       END IF;                                                                             /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
10509    EXCEPTION
10510       WHEN OTHERS
10511       THEN
10512          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10513          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCETEXTS', SQLCODE);
10514          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10515          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10516          RAISE;
10517    END;
10518 
10519 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10520 ---------the installed or base languages on the source and the target instance
10521 ---------must be the same.
10522    PROCEDURE pb_language_check
10523    IS
10524       lang_cv ref_cursor;
10525       lang_index NUMBER := 0.0;
10526    BEGIN
10527       cz_pb_mgr.v_src_lang_code_tbl.DELETE;
10528 
10529       BEGIN
10530          SELECT   UPPER(language_code)
10531          BULK COLLECT INTO cz_pb_mgr.v_src_lang_code_tbl
10532              FROM fnd_languages
10533             WHERE fnd_languages.installed_flag IN('B', 'I')
10534          ORDER BY UPPER(language_code);
10535       EXCEPTION
10536          WHEN OTHERS
10537          THEN
10538             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10539             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10540             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10541             cz_pb_mgr.global_export_retcode := 2;
10542       END;
10543 
10544       cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
10545 
10546       BEGIN
10547          OPEN lang_cv FOR    'SELECT UPPER(language_code)'
10548                           || ' '
10549                           || 'FROM 	 fnd_languages'
10550                           || cz_pb_mgr.v_db_link
10551                           || ' '
10552                           || 'WHERE  fnd_languages.installed_flag IN (''B'', ''I'')'
10553                           || ' '
10554                           || 'ORDER  BY UPPER(language_code)';
10555 
10556          lang_index := 1;
10557 
10558          LOOP
10559             FETCH lang_cv
10560              INTO cz_pb_mgr.v_tgt_lang_code_tbl(lang_index);
10561 
10562             EXIT WHEN lang_cv%NOTFOUND;
10563             lang_index := lang_index + 1;
10564          END LOOP;
10565       EXCEPTION
10566          WHEN OTHERS
10567          THEN
10568             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10569             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10570             cz_pb_mgr.v_status_code := 'ERR';
10571             cz_pb_mgr.global_export_retcode := 2;
10572       END;
10573 
10574       IF (    (cz_pb_mgr.v_src_lang_code_tbl.COUNT > 0)
10575           AND (cz_pb_mgr.v_tgt_lang_code_tbl.COUNT > 0)
10576           AND (cz_pb_mgr.v_src_lang_code_tbl.COUNT = cz_pb_mgr.v_tgt_lang_code_tbl.COUNT)
10577          )
10578       THEN
10579          FOR l IN cz_pb_mgr.v_src_lang_code_tbl.FIRST .. cz_pb_mgr.v_src_lang_code_tbl.LAST
10580          LOOP
10581             IF (cz_pb_mgr.v_src_lang_code_tbl(l) <> cz_pb_mgr.v_tgt_lang_code_tbl(l))
10582             THEN
10583                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SRC_TGT_LANG', 'LANGUAGE', cz_pb_mgr.v_tgt_lang_code_tbl(l));
10584                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10588          END LOOP;
10585                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10586                cz_pb_mgr.global_export_retcode := 2;
10587             END IF;
10589       ELSE
10590          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10591          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10592          cz_pb_mgr.v_status_code := 'ERR';
10593          cz_pb_mgr.global_export_retcode := 2;
10594       END IF;
10595 
10596       cz_pb_mgr.v_src_lang_code_tbl.DELETE;
10597       cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
10598    END pb_language_check;
10599 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10600 -----procedure to fix bug# 2759486  When copies of models exist
10601 -----there could be many projects with the same persistent_node_id
10602 -----So we need persistent_node_id and its associated project for resolving child_model_expl_id
10603 -----of model ref expls.
10604    PROCEDURE get_pers_prj_id(
10605       p_ref_node IN cz_ps_nodes.ps_node_id%TYPE
10606      ,x_pers_node_id OUT NOCOPY cz_ps_nodes.ps_node_id%TYPE
10607      ,x_prj_id OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
10608    )
10609    IS
10610    BEGIN
10611       SELECT persistent_node_id, devl_project_id
10612         INTO x_pers_node_id, x_prj_id
10613         FROM cz_ps_nodes t
10614        WHERE t.ps_node_id = p_ref_node AND t.deleted_flag = '0';
10615    EXCEPTION
10616       WHEN OTHERS
10617       THEN
10618          cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ref_node;
10619          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.get_pers_prj_id', SQLCODE);
10620          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10621          RAISE;
10622    END;
10623 
10624 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10625 -------procedure retrieves the project id of a ps node
10626    PROCEDURE get_devl_project_id(
10627       p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
10628      ,x_devl_project_id IN OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
10629      ,x_status IN OUT NOCOPY VARCHAR2
10630    )
10631    AS
10632    BEGIN
10633       IF (x_status <> PUBLICATION_ERROR)
10634       THEN
10635          SELECT devl_project_id
10636            INTO x_devl_project_id
10637            FROM cz_ps_nodes
10638           WHERE cz_ps_nodes.ps_node_id = p_ps_node_id AND cz_ps_nodes.deleted_flag = '0';
10639       END IF;
10640    EXCEPTION
10641       WHEN OTHERS
10642       THEN
10643          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;
10644          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10645          x_status := PUBLICATION_ERROR;
10646          RAISE;
10647    END;
10648 
10649 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10650 -------procedure that retrieves persistent node id
10651    PROCEDURE get_persistent_node_id(
10652       p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
10653      ,x_persistent_id IN OUT NOCOPY cz_ps_nodes.persistent_node_id%TYPE
10654      ,x_status IN OUT NOCOPY VARCHAR2
10655    )
10656    AS
10657    BEGIN
10658       IF (x_status <> PUBLICATION_ERROR)
10659       THEN
10660          SELECT persistent_node_id
10661            INTO x_persistent_id
10662            FROM cz_ps_nodes t
10663           WHERE t.ps_node_id = p_ps_node_id AND t.deleted_flag = '0';
10664       END IF;
10665    EXCEPTION
10666       WHEN OTHERS
10667       THEN
10668          cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ps_node_id;
10669          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10670          x_status := PUBLICATION_ERROR;
10671          RAISE;
10672    END;
10673 
10674 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10675 -------procedure retrieves the component id
10676    PROCEDURE remote_component_id(
10677       p_resolved_key_value IN OUT NOCOPY NUMBER
10678      ,p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
10679      ,p_server_id IN cz_servers.server_local_id%TYPE
10680      ,x_status IN OUT NOCOPY VARCHAR2
10681    )
10682    AS
10683    BEGIN
10684       IF (x_status <> PUBLICATION_ERROR)
10685       THEN
10686          IF (p_model_not_exported_array.COUNT > 0)
10687          THEN
10688             FOR j IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
10689             LOOP
10690                IF (p_resolved_key_value = p_model_not_exported_array(j)) THEN
10691                  get_remote_model_id(p_server_id, p_resolved_key_value, x_status, p_resolved_key_value);
10692                  EXIT;
10693                END IF;
10694             END LOOP;
10695          END IF;
10696       END IF;
10697    EXCEPTION
10698       WHEN OTHERS
10699       THEN
10700          cz_pb_mgr.v_err_message := 'Error in retrieving remote component from pb model exports: ' || SQLERRM;
10701          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10702          x_status := PUBLICATION_ERROR;
10703          RAISE;
10704    END;
10705 
10706 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10707 -------procedure that resolves remote reference nodes
10708    PROCEDURE resolve_ref_ids_not_found(
10709       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
10710      ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
10711      ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
10715    )
10712      ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
10713      ,p_column_name IN VARCHAR2
10714      ,x_status IN OUT NOCOPY VARCHAR2
10716    AS
10717       ref_node_found BOOLEAN := FALSE;
10718       v_node_id NUMBER := 0.0;
10719       child_ref_id_cv ref_cursor;
10720       v_ref_project cz_devl_projects.devl_project_id%TYPE;
10721       v_ref_remote_model cz_devl_projects.devl_project_id%TYPE;
10722       v_child_expl_id cz_model_ref_expls.model_ref_expl_id%TYPE;
10723       v_persistent_node_id cz_ps_nodes.persistent_node_id%TYPE;
10724       v_source_child_model cz_model_ref_expls.model_id%TYPE;
10725       v_child_ref_node cz_ps_nodes.ps_node_id%TYPE;
10726       v_ref_model_id cz_model_ref_expls.model_id%TYPE;
10727    BEGIN
10728       IF (x_status <> PUBLICATION_ERROR)
10729       THEN
10730          IF (p_master_keys_array.COUNT > 0)
10731          THEN
10732             FOR i IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
10733             LOOP
10734                ref_node_found := FALSE;
10735 
10736                IF (p_resolved_key_array(i) IS NOT NULL)
10737                THEN
10738                   BEGIN
10739                      p_resolved_key_array(i) := p_resolving_key_new_idx_array(p_resolved_key_array(i));
10740                      ref_node_found := TRUE;
10741                   EXCEPTION
10742                      WHEN NO_DATA_FOUND
10743                      THEN
10744                         ref_node_found := FALSE;
10745                      WHEN OTHERS
10746                      THEN
10747                         RAISE;
10748                   END;
10749 
10750                   v_node_id := p_resolved_key_array(i);
10751                   v_ref_project := 0;
10752                   v_source_child_model := 0;
10753                   v_child_ref_node := 0;
10754                   v_persistent_node_id := 0;
10755                   v_ref_model_id := 0;
10756 
10757                   IF (NOT ref_node_found)
10758                   THEN
10759                      IF (p_column_name = 'cz_model_ref_expl.referring_node_id')
10760                      THEN
10761                         get_devl_project_id(p_resolved_key_array(i), v_ref_project, cz_pb_mgr.v_status_code);
10762                         get_remote_model_id(cz_pb_mgr.v_server_id, v_ref_project, cz_pb_mgr.v_status_code, v_ref_remote_model);
10763 
10764                         IF ((v_ref_project IS NOT NULL) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
10765                         THEN
10766                            OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id FROM cz_model_ref_expls'
10767                                                     || cz_pb_mgr.v_db_link
10768                                                     || '  t'
10769                                                     || ' '
10770                                                     || 'WHERE  t.model_id = '
10771                                                     || TO_CHAR(v_ref_remote_model)
10772                                                     || ' '
10773                                                     || 'AND    node_depth = 0 ';
10774 
10775                            LOOP
10776                               FETCH child_ref_id_cv
10777                                INTO v_child_expl_id;
10778 
10779                               EXIT WHEN child_ref_id_cv%NOTFOUND;
10780                            END LOOP;
10781 
10782                            CLOSE child_ref_id_cv;
10783 
10784                            OPEN child_ref_id_cv FOR    'SELECT model_id'
10785                                                     || ' '
10786                                                     || 'FROM   cz_model_ref_expls'
10787                                                     || cz_pb_mgr.v_db_link
10788                                                     || '  t'
10789                                                     || ' '
10790                                                     || 'WHERE  t.model_ref_expl_id = '
10791                                                     || TO_CHAR(v_child_expl_id)
10792                                                     || ' '
10793                                                     || 'AND   t.deleted_flag = ''0'' ';
10794 
10795                            LOOP
10796                               FETCH child_ref_id_cv
10797                                INTO v_ref_model_id;
10798 
10799                               EXIT WHEN child_ref_id_cv%NOTFOUND;
10800                            END LOOP;
10801 
10802                            CLOSE child_ref_id_cv;
10803 
10804                            get_persistent_node_id(p_resolved_key_array(i), v_persistent_node_id, cz_pb_mgr.v_status_code);
10805 
10806                            OPEN child_ref_id_cv FOR    'SELECT ps_node_id FROM cz_ps_nodes'
10807                                                     || cz_pb_mgr.v_db_link
10808                                                     || '  t'
10809                                                     || ' '
10810                                                     || 'WHERE  t.persistent_node_id = '
10811                                                     || TO_CHAR(v_persistent_node_id)
10812                                                     || ' '
10813                                                     || 'AND   t.devl_project_id = '
10814                                                     || TO_CHAR(v_ref_model_id)
10815                                                     || ' '
10816                                                     || 'AND   t.deleted_flag = ''0'' ';
10817 
10818                            LOOP
10819                               FETCH child_ref_id_cv
10823                            END LOOP;
10820                                INTO p_resolved_key_array(i);
10821 
10822                               EXIT WHEN child_ref_id_cv%NOTFOUND;
10824 
10825                            CLOSE child_ref_id_cv;
10826                         END IF;
10827                      ELSIF(p_column_name = 'cz_model_ref_expl.child_expl_id')
10828                      THEN
10829                       IF cz_pb_mgr.v_session_parameter<>model_copy THEN
10830                         BEGIN
10831                            SELECT model_id, referring_node_id
10832                              INTO v_source_child_model, v_child_ref_node
10833                              FROM cz_model_ref_expls
10834                             WHERE cz_model_ref_expls.model_ref_expl_id = p_resolved_key_array(i) AND cz_model_ref_expls.deleted_flag = '0';
10835                         EXCEPTION
10836                            WHEN OTHERS
10837                            THEN
10838                               v_child_ref_node := NULL;
10839                         END;
10840 
10841                         IF (v_child_ref_node IS NOT NULL)
10842                         THEN
10843                            get_pers_prj_id(v_child_ref_node, v_persistent_node_id, v_source_child_model);
10844                            get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
10845 
10846                            BEGIN
10847                               OPEN child_ref_id_cv FOR    'SELECT ps_node_id'
10848                                                        || ' '
10849                                                        || 'FROM   cz_ps_nodes'
10850                                                        || cz_pb_mgr.v_db_link
10851                                                        || '  t'
10852                                                        || ' '
10853                                                        || 'WHERE  t.persistent_node_id = '
10854                                                        || TO_CHAR(v_persistent_node_id)
10855                                                        || ' '
10856                                                        || 'AND   t.devl_project_id = '
10857                                                        || TO_CHAR(v_ref_remote_model)
10858                                                        || ' '
10859                                                        || 'AND   t.deleted_flag = ''0'' ';
10860 
10861                               LOOP
10862                                  FETCH child_ref_id_cv
10863                                   INTO v_child_ref_node;
10864 
10865                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
10866                               END LOOP;
10867 
10868                               CLOSE child_ref_id_cv;
10869                            EXCEPTION
10870                               WHEN NO_DATA_FOUND
10871                               THEN
10872                                  cz_pb_mgr.v_err_message :=
10873                                     'NO remote referring node id found for model :' || v_ref_remote_model || ' on server : ' || cz_pb_mgr.v_server_id;
10874                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODREF', SQLCODE);
10875 
10876                                  CLOSE child_ref_id_cv;
10877                               WHEN OTHERS
10878                               THEN
10879                                  CLOSE child_ref_id_cv;
10880                            END;
10881                         ELSE
10882                            get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
10883                         END IF;
10884 
10885                         IF ((v_child_ref_node > 0) AND(v_source_child_model > 0) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
10886                         THEN
10887                            BEGIN
10888                               OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id'
10889                                                        || ' '
10890                                                        || 'FROM  cz_model_ref_expls'
10891                                                        || cz_pb_mgr.v_db_link
10892                                                        || ' t'
10893                                                        || ' '
10894                                                        || 'WHERE  t.model_id = '
10895                                                        || TO_CHAR(v_ref_remote_model)
10896                                                        || ' '
10897                                                        || 'AND    t.referring_node_id = '
10898                                                        || TO_CHAR(v_child_ref_node);
10899 
10900                               LOOP
10901                                  FETCH child_ref_id_cv
10902                                   INTO p_resolved_key_array(i);
10903 
10904                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
10905                               END LOOP;
10906 
10907                               CLOSE child_ref_id_cv;
10908                            EXCEPTION
10909                               WHEN OTHERS
10910                               THEN
10911                                  CLOSE child_ref_id_cv;
10912                            END;
10913                         ELSE
10914                            BEGIN
10915                               OPEN child_ref_id_cv FOR    'SELECT model_ref_expl_id'
10916                                                        || ' '
10917                                                        || 'FROM  cz_model_ref_expls'
10921                                                        || 'WHERE  t.model_id = '
10918                                                        || cz_pb_mgr.v_db_link
10919                                                        || ' t'
10920                                                        || ' '
10922                                                        || TO_CHAR(v_ref_remote_model)
10923                                                        || ' '
10924                                                        || 'AND    t.node_depth = 0';
10925 
10926                               LOOP
10927                                  FETCH child_ref_id_cv
10928                                   INTO p_resolved_key_array(i);
10929 
10930                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
10931                               END LOOP;
10932 
10933                               CLOSE child_ref_id_cv;
10934                            EXCEPTION
10935                               WHEN OTHERS
10936                               THEN
10937                                  CLOSE child_ref_id_cv;
10938                            END;
10939                         END IF;
10940                       END IF;
10941                      ELSIF(p_column_name = 'cz_model_ref_expl.component_id')
10942                      THEN
10943                         remote_component_id(p_resolved_key_array(i)
10944                                            ,cz_pb_mgr.v_models_not_to_be_exported
10945                                            ,cz_pb_mgr.v_server_id
10946                                            ,cz_pb_mgr.v_status_code
10947                                            );
10948                      ELSIF(p_column_name IN
10949                               ('cz_ui_nodes.ui_def_ref_id'
10950                               ,'cz_ui_refs.ref_ui_def_id'
10951                               ,'cz_ui_page_refs.target_ui_def_id'
10952                               ,'cz_ui_page_elements.target_page_ui_def_id'
10953                               ,'cz_ui_ref_templates.ref_template_ui_def_id'
10954                               ,'cz_ui_actions.target_ui_def_id'
10955                               )
10956                           )
10957                      THEN
10958                         BEGIN
10959                            IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10960                            THEN
10961                               OPEN child_ref_id_cv FOR    'SELECT ui_def_id FROM cz_ui_defs'
10962                                                        || cz_pb_mgr.v_db_link
10963                                                        || ' '
10964                                                        || 'WHERE name = (SELECT name FROM cz_ui_defs t'
10965                                                        || ' '
10966                                                        || 'WHERE t.ui_def_id = '
10967                                                        || p_resolved_key_array(i)
10968                                                        || ')'
10969                                                        || ' '
10970                                                        || 'AND devl_project_id = :1'
10971                               USING v_ref_remote_model;
10972                               LOOP
10973                                  FETCH child_ref_id_cv
10974                                   INTO p_resolved_key_array(i);
10975 
10976                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
10977                               END LOOP;
10978 
10979                               CLOSE child_ref_id_cv;
10980                            ELSE
10981                               OPEN child_ref_id_cv FOR    'SELECT	ui_def_id FROM cz_ui_defs'
10982                                                        || cz_pb_mgr.v_db_link
10983                                                        || ' '
10984                                                        || 'WHERE		name	= ( SELECT name FROM	  cz_ui_defs t'
10985                                                        || ' '
10986                                                        || 'WHERE  t.ui_def_id = '
10987                                                        || p_resolved_key_array(i)
10988                                                        || ' )'
10989                                                        || ' '
10990                                                        || 'AND devl_project_id = :1'
10991                               USING v_ref_remote_model;
10992                               LOOP
10993                                  FETCH child_ref_id_cv
10994                                   INTO p_resolved_key_array(i);
10995 
10996                                  EXIT WHEN child_ref_id_cv%NOTFOUND;
10997                               END LOOP;
10998 
10999                               CLOSE child_ref_id_cv;
11000                            END IF;
11001                         EXCEPTION
11002                            WHEN OTHERS
11003                            THEN
11004                               CLOSE child_ref_id_cv;
11005 
11006                               RAISE;
11007                         END;
11008                      END IF;                                                                                             /* end if of p_column name */
11009                   END IF;                                                                                                /* end if of ref_not_found */
11010                END IF;                                                                                            /* end if of p_resolved_key_array */
11014    EXCEPTION
11011             END LOOP;                                                                                            /* end loop of p_master_keys_array */
11012          END IF;                                                                                                    /*end if of p_master_keys_array */
11013       END IF;                                                                                                                 /* end if of x_status */
11015       WHEN OTHERS
11016       THEN
11017          cz_pb_mgr.v_err_message := 'Error in resolving : ' || p_column_name || ' for id ' || v_node_id || ' : ' || SQLERRM;
11018          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREFIDS', SQLCODE);
11019          x_status := PUBLICATION_ERROR;
11020          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11021          RAISE;
11022    END;
11023 
11024 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11025 ------update reference ids of cz ps nodes of the remote model
11026 ------@p_models_exported -- root model and all its children
11027 ------@x_status --- publication status
11028 ------@p_server_id --- server local is of the target instance
11029 ------@p_new_ps_node_array --- ps node array that contains new values
11030 -- Note: do get_rem_nodes_of_models early, then we can remove this ugly method as well as some other bad ones
11031    PROCEDURE update_remote_reference_ids(
11032       p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11033      ,p_new_ps_node_array IN OUT NOCOPY cz_pb_mgr.t_ref
11034      ,p_server_id IN cz_servers.server_local_id%TYPE
11035      ,x_status IN OUT NOCOPY VARCHAR2
11036    )
11037    AS
11038       l_sql_string VARCHAR2(32000);
11039       l_remote_mode_id NUMBER;
11040    BEGIN
11041       IF (x_status <> PUBLICATION_ERROR)
11042       THEN
11043          IF (p_models_not_exported.COUNT > 0)
11044          THEN
11045             FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11046             LOOP
11047 	       IF (p_new_ps_node_array.COUNT > 0) THEN
11048                FOR j IN p_new_ps_node_array.FIRST .. p_new_ps_node_array.LAST
11049                LOOP
11050                   IF (cz_pb_mgr.v_ps_refid_old_tbl(j) IS NOT NULL)
11051                   THEN
11052                     get_remote_model_id(p_server_id, p_models_not_exported(i), x_status, l_remote_mode_id);
11053                     l_sql_string := 'UPDATE cz_ps_nodes'
11054                            ||   cz_pb_mgr.v_db_link
11055                            || ' SET reference_id=:1,component_id=:2'
11056                            || ' WHERE deleted_flag=:3 AND ps_node_id=:4 AND reference_id=:5';
11057                     EXECUTE IMMEDIATE l_sql_string
11058                       USING l_remote_mode_id,l_remote_mode_id,record_not_deleted,p_new_ps_node_array(j),p_models_not_exported(i);
11059                   END IF;
11060                END LOOP;
11061 	       END IF;
11062             END LOOP;
11063 
11064             COMMIT WORK;
11065          END IF;
11066       END IF;
11067    EXCEPTION
11068       WHEN OTHERS
11069       THEN
11070          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REF_ID_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
11071          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11072          x_status := PUBLICATION_ERROR;
11073          RAISE;
11074    END;
11075 
11076 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11077 --------procedure that resolves the virtual components of explosion records
11078 --------@p_model_ref_expls_ref :explosion array
11079 --------@p_models_not_exported :source models that are not exported
11080 --------@p_server_id           :server local id of cz servers of the target instance
11081 --------@x_status              :publication_status
11082    PROCEDURE resolve_virtual_components(
11083       p_model_ref_expls_ref IN OUT NOCOPY cz_pb_mgr.t_ref
11084      ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11085      ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11086      ,x_status IN OUT NOCOPY VARCHAR2
11087    )
11088    AS
11089       rec_count PLS_INTEGER := 0;
11090       v_vrt_comp_id_tbl cz_pb_mgr.t_ref;
11091       v_vrt_comp_id_ref cz_pb_mgr.t_ref;
11092       virt_ref_id_cv ref_cursor;
11093       virt_model_id_cv ref_cursor;
11094       v_vir_remote_model_id NUMBER := 0.0;
11095       v_vir_devl_id NUMBER := 0.0;
11096       v_remote_comp_id NUMBER := 0.0;
11097       v_child_expl_id NUMBER := 0.0;
11098       v_vir_persistent_id cz_ps_nodes.persistent_node_id%TYPE;
11099       v_errored_model_id cz_devl_projects.devl_project_id%TYPE;
11100    BEGIN
11101       IF (x_status <> PUBLICATION_ERROR)
11102       THEN
11103          IF (p_models_not_exported.COUNT > 0)
11104          THEN
11105             v_vrt_comp_id_tbl.DELETE;
11106 
11107             FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11108             LOOP
11109                v_errored_model_id := p_models_not_exported(i);
11110 
11111                BEGIN
11112                   SELECT component_id
11113                   BULK COLLECT INTO v_vrt_comp_id_tbl
11114                     FROM cz_model_ref_expls
11115                    WHERE cz_model_ref_expls.model_id = p_models_not_exported(i)
11116                      AND cz_model_ref_expls.virtual_flag = 0
11117                      AND (cz_model_ref_expls.ps_node_type = non_virtual_component OR cz_model_ref_expls.ps_node_type = model_connector)
11118                      AND cz_model_ref_expls.deleted_flag = record_not_deleted;
11119                EXCEPTION
11120                   WHEN NO_DATA_FOUND
11121                   THEN
11125                   THEN
11122                      cz_pb_mgr.v_err_message := 'No virtual components in the model : ' || TO_CHAR(p_models_not_exported(i));
11123                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11124                   WHEN OTHERS
11126                      cz_pb_mgr.v_err_message :=
11127                                 'Error in bulk collect of virtual components in the model : ' || TO_CHAR(p_models_not_exported(i)) || ' : '
11128                                 || SQLERRM;
11129                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11130                      RAISE;
11131                END;
11132 
11133                IF (v_vrt_comp_id_tbl.COUNT > 0)
11134                THEN
11135                   rec_count := v_vrt_comp_id_ref.COUNT;
11136 
11137                   FOR j IN v_vrt_comp_id_tbl.FIRST .. v_vrt_comp_id_tbl.LAST
11138                   LOOP
11139                      rec_count := rec_count + 1;
11140                      v_vrt_comp_id_ref(rec_count) := v_vrt_comp_id_tbl(j);
11141                   END LOOP;
11142                END IF;
11143             END LOOP;
11144          END IF;
11145 
11146          v_vir_persistent_id := 0;
11147          v_vir_devl_id := 0;
11148 
11149          IF (v_vrt_comp_id_ref.COUNT > 0)
11150          THEN
11151             FOR i IN v_vrt_comp_id_ref.FIRST .. v_vrt_comp_id_ref.LAST
11152             LOOP
11153                BEGIN
11154                   SELECT devl_project_id, persistent_node_id
11155                     INTO v_vir_devl_id, v_vir_persistent_id
11156                     FROM cz_ps_nodes
11157                    WHERE ps_node_id = v_vrt_comp_id_ref(i);
11158                EXCEPTION
11159                   WHEN OTHERS
11160                   THEN
11161                      v_vir_devl_id := 0;
11162                      v_vir_persistent_id := 0;
11163                END;
11164 
11165                v_vir_remote_model_id := 0;
11166 
11167                IF (v_vir_devl_id > 0)
11168                THEN
11169                   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);
11170                END IF;
11171 
11172                cz_pb_mgr.v_remote_comp_id := 0;
11173 
11174                IF (v_vir_remote_model_id > 0)
11175                THEN
11176                   BEGIN
11177                      OPEN virt_ref_id_cv FOR    'SELECT ps_node_id FROM cz_ps_nodes'
11178                                              || cz_pb_mgr.v_db_link
11179                                              || '  t'
11180                                              || ' '
11181                                              || 'WHERE  t.devl_project_id = '
11182                                              || v_vir_remote_model_id
11183                                              || ' '
11184                                              || 'AND    t.persistent_node_id  = '
11185                                              || v_vir_persistent_id
11186                                              || ' '
11187                                              || 'AND   t.deleted_flag = ''0'' ';
11188 
11189                      LOOP
11190                         FETCH virt_ref_id_cv
11191                          INTO v_remote_comp_id;
11192 
11193                         EXIT WHEN virt_ref_id_cv%NOTFOUND;
11194                      END LOOP;
11195 
11196                      CLOSE virt_ref_id_cv;
11197                   EXCEPTION
11198                      WHEN OTHERS
11199                      THEN
11200                         CLOSE virt_ref_id_cv;
11201 
11202                         RAISE;
11203                   END;
11204 
11205                   cz_pb_mgr.v_child_expl_id := NULL;
11206 
11207                   IF (v_remote_comp_id > 0)
11208                   THEN
11209                      BEGIN
11210                         OPEN virt_model_id_cv FOR    'SELECT model_ref_expl_id'
11211                                                   || ' '
11212                                                   || 'FROM  cz_model_ref_expls'
11213                                                   || cz_pb_mgr.v_db_link
11214                                                   || '  t'
11215                                                   || ' '
11216                                                   || 'WHERE t.model_id = '
11217                                                   || v_vir_remote_model_id
11218                                                   || ' '
11219                                                   || 'AND  t.component_id = '
11220                                                   || v_remote_comp_id
11221                                                   || ' '
11222                                                   || 'AND  t.deleted_flag = ''0'' ';
11223 
11224                         LOOP
11225                            FETCH virt_model_id_cv
11226                             INTO v_child_expl_id;
11227 
11228                            EXIT WHEN virt_model_id_cv%NOTFOUND;
11229                         END LOOP;
11230 
11231                         CLOSE virt_model_id_cv;
11232                      EXCEPTION
11233                         WHEN OTHERS
11234                         THEN
11235                            CLOSE virt_model_id_cv;
11236 
11237                            RAISE;
11238                      END;
11239 
11240 		     IF (p_model_ref_expls_ref.COUNT > 0) THEN
11241                      FOR z IN p_model_ref_expls_ref.FIRST .. p_model_ref_expls_ref.LAST
11245                                           || 'UPDATE cz_model_ref_expls'
11242                      LOOP
11243                         EXECUTE IMMEDIATE    'BEGIN '
11244                                           || ' '
11246                                           || cz_pb_mgr.v_db_link
11247                                           || '  t'
11248                                           || ' '
11249                                           || 'SET    t.component_id = '
11250                                           || v_remote_comp_id
11251                                           || ' ,'
11252                                           || ' '
11253                                           || 't.child_model_expl_id = '
11254                                           || v_child_expl_id
11255                                           || ''
11256                                           || ' '
11257                                           || 'WHERE  t.model_ref_expl_id = '
11258                                           || p_model_ref_expls_ref(z)
11259                                           || ''
11260                                           || ' '
11261                                           || 'AND    t.component_id = '
11262                                           || v_vrt_comp_id_ref(i)
11263                                           || ''
11264                                           || ' '
11265                                           || 'AND    t.deleted_flag = ''0'';'
11266                                           || ' '
11267                                           || 'COMMIT;'
11268                                           || ' '
11269                                           || 'END;';
11270                      END LOOP;
11271 		     END IF;
11272                   END IF;                                                                               /* end if of cz_pb_mgr.v_remote_comp_id > 0 */
11273                END IF;                                                                                       /* end if of v_vir_remote_model_id > 0 */
11274             END LOOP;
11275 
11276             v_vrt_comp_id_tbl.DELETE;
11277             v_vrt_comp_id_ref.DELETE;
11278          END IF;                                                                                           /* end if of v_vrt_comp_id_ref.COUNT > 0 */
11279       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
11280    EXCEPTION
11281       WHEN OTHERS
11282       THEN
11283          cz_pb_mgr.v_err_message := 'Error during resolution of non virtual component of source model : ' || v_errored_model_id || ' : ' || SQLERRM;
11284          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEVIRTCOMP', SQLCODE);
11285          x_status := PUBLICATION_ERROR;
11286          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11287          RAISE;
11288    END;
11289 
11290 
11291 -- Models with no change since the last successful export are not exported. Therefore their UIs
11292 -- are not exported as well. In such a case if a referring UI is exported, then the ids of referred UIs
11293 -- need to be resolved in these referring UIs. For that we need to map all referred UI Id from the
11294 -- source to corresponding remote Ids. This is exactly what this procedure does i.e. tt maps the
11295 -- source ui_def_ids to remote ui_def_ids in the table x_cz_ui_defs_idx_ref
11296 PROCEDURE get_uis_of_mdls_not_exported(p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref,
11297                                        x_cz_ui_defs_idx_ref IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
11298                                        p_server_id  IN OUT NOCOPY cz_servers.server_local_id%TYPE,
11299                                        x_status IN OUT NOCOPY VARCHAR2)
11300 AS
11301 
11302 v_ui_defs_tbl               cz_pb_mgr.t_ref;
11303 
11304 ui_ref_id_cv               REF_CURSOR;
11305 v_devl_project_id          cz_devl_projects.devl_project_id%TYPE;
11306 v_remote_devl_project_id   cz_devl_projects.devl_project_id%TYPE;
11307 v_remote_ui_def_id         cz_ui_defs.ui_def_id%TYPE;
11308 v_name                     cz_ui_defs.name%TYPE;
11309 CANNOT_FIND_REMOTE_UI      EXCEPTION;
11310 
11311 BEGIN
11312 
11313   IF (x_status <> PUBLICATION_ERROR) THEN
11314     IF (p_models_not_exported.COUNT > 0) THEN
11315       -- loop through all model that are not exported during this publishing session
11316       FOR I IN p_models_not_exported.FIRST..p_models_not_exported.LAST
11317       LOOP
11318         v_ui_defs_tbl.DELETE;
11319         v_devl_project_id := p_models_not_exported(i);
11320         get_remote_model_id(p_server_id,v_devl_project_id,x_status,v_remote_devl_project_id);
11321 
11322         -- For each of these source models, get all the UIs
11323        IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0) THEN
11324          SELECT ui_def_id BULK COLLECT INTO v_ui_defs_tbl
11325          FROM cz_ui_defs
11326          WHERE deleted_flag='0' AND devl_project_id=v_devl_project_id AND ui_style=g_ui_style_jrad;
11327        ELSE
11328         BEGIN
11329           SELECT ui_def_id
11330           BULK
11331           COLLECT
11332           INTO   v_ui_defs_tbl
11333           FROM   cz_ui_defs
11334           WHERE  cz_ui_defs.devl_project_id = v_devl_project_id
11335           AND    cz_ui_defs.deleted_flag = RECORD_NOT_DELETED
11336           AND    cz_ui_defs.ui_style <> '-1';
11337 
11338         EXCEPTION
11339         WHEN NO_DATA_FOUND THEN
11340           cz_pb_mgr.v_err_message := 'No ui_def_ids found for : '||to_char(v_devl_project_id);
11344         END;
11341           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED', SQLCODE);
11342         WHEN OTHERS THEN
11343           RAISE;
11345        END IF;
11346 
11347         IF (v_ui_defs_tbl.COUNT > 0) THEN
11348           -- For each source UI, find the corresponding remote UI. We find the corresponding remote
11349           -- UI using the remote devl_project_id and name of the UI
11350           FOR K IN v_ui_defs_tbl.FIRST..v_ui_defs_tbl.LAST
11351           LOOP
11352             BEGIN
11353               SELECT name into v_name
11354               from cz_ui_defs
11355               where ui_def_Id = v_ui_defs_tbl(k)
11356               AND deleted_flag = RECORD_NOT_DELETED;
11357 
11358               v_remote_ui_def_id := NULL;
11359               OPEN ui_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'||CZ_PB_MGR.v_db_link ||
11360                                     ' WHERE name = :1 AND devl_project_id = :2' ||
11361                                     ' AND deleted_flag = :3'
11362                    USING v_name, v_remote_devl_project_id, RECORD_NOT_DELETED;
11363               LOOP
11364                 -- There is one problem here. If there is an extra UI on the source model
11365                 -- then we wont find it on the remote model. This issue needs to be addressed.
11366                 -- For now we just raise a CANNOT_FIND_REMOTE_UI exception in such a case
11367                 FETCH  ui_ref_id_cv INTO v_remote_ui_def_id;
11368                 EXIT WHEN ui_ref_id_cv%NOTFOUND;
11369               END LOOP;
11370 
11371               IF ( v_remote_ui_def_id IS NULL ) THEN
11372                 cz_pb_mgr.v_err_message := 'Cannot find UI ' || v_name || ' for remote model ' || to_char(v_devl_project_id);
11373                 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED',SQLCODE);
11374                 RAISE CANNOT_FIND_REMOTE_UI;
11375               END IF;
11376 
11377               CLOSE  ui_ref_id_cv;
11378 
11379               x_cz_ui_defs_idx_ref(v_ui_defs_tbl(k)) := v_remote_ui_def_id;
11380 
11381             EXCEPTION
11382               WHEN OTHERS THEN
11383                 CLOSE  ui_ref_id_cv;
11384                 RAISE;
11385             END;
11386           END LOOP;
11387         END IF;
11388       END LOOP; /* end loop of p_models_not_exported */
11389     END IF; /* end if of p_models_not_exported */
11390   END IF;
11391 END get_uis_of_mdls_not_exported;
11392 
11393 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11394 --------Procedure to resolve remote ui nodes of cz_ui_nodes
11395 -- Note for model conversion, v_cz_ui_nodes_new_ref should be empty, otherwise there would be a problem here
11396    PROCEDURE resolve_remote_ui_nodes(
11397       p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref    -- v_cz_ui_nodes_new_ref
11398      ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11399      ,p_resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref       -- v_cz_ui_nodes_ui_ref_id_ref
11400      ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11401      ,x_status IN OUT NOCOPY VARCHAR2
11402    )
11403    AS
11404       v_remote_ui_defs_ref cz_pb_mgr.t_ref;
11405       v_remote_ui_defs_tbl cz_pb_mgr.t_ref;
11406       v_remote_ui_nodes_ref cz_pb_mgr.t_ref;
11407       v_remote_ui_nod_ui_def_ref cz_pb_mgr.t_ref;
11408       v_remote_ui_nodes_tbl cz_pb_mgr.t_ref;
11409       v_remote_ui_nod_ui_def_tbl cz_pb_mgr.t_ref;
11410       v_remote_pers_ui_node_tbl cz_pb_mgr.t_ref;
11411       v_remote_pers_ui_node_ref cz_pb_mgr.t_ref;
11412       ui_def_ref_id_cv ref_cursor;
11413       v_node_ref_proj_id cz_devl_projects.devl_project_id%TYPE;
11414       v_node_ref_export_id cz_pb_model_exports.export_id%TYPE;
11415       v_node_ref_remote_model cz_pb_model_exports.remote_model_id%TYPE;
11416       rec_count NUMBER;
11417 
11418       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;
11419       l_ui_def_name cz_ui_defs.name%TYPE;
11420 
11421    BEGIN
11422       IF (x_status <> PUBLICATION_ERROR)
11423       THEN
11424          IF (p_master_keys_array.COUNT > 0)
11425          THEN
11426             -- same thing already done in get_uis_of_mdls_not_exported!
11427             IF (p_models_not_exported.COUNT > 0)
11428             THEN
11429                v_remote_ui_defs_ref.DELETE;
11430 
11431                FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11432                LOOP
11433                   v_remote_ui_defs_tbl.DELETE;
11434 
11435                   BEGIN
11436                      SELECT ui_def_id
11437                      BULK COLLECT INTO v_remote_ui_defs_tbl
11438                        FROM cz_ui_defs
11439                       WHERE cz_ui_defs.devl_project_id = p_models_not_exported(i) AND cz_ui_defs.deleted_flag = record_not_deleted
11440                       AND ui_style IN (g_ui_style_dhtml,g_ui_style_applet);
11441                   EXCEPTION
11442                      WHEN NO_DATA_FOUND
11443                      THEN
11444                         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));
11445                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREMOTEUINODES', SQLCODE);
11446                      WHEN OTHERS
11447                      THEN
11448                         RAISE;
11449                   END;
11450 
11451                   rec_count := v_remote_ui_defs_ref.COUNT;
11452 
11456                      LOOP
11453                   IF (v_remote_ui_defs_tbl.COUNT > 0)
11454                   THEN
11455                      FOR k IN v_remote_ui_defs_tbl.FIRST .. v_remote_ui_defs_tbl.LAST
11457                         rec_count := rec_count + 1;
11458                         v_remote_ui_defs_ref(rec_count) := v_remote_ui_defs_tbl(k);
11459                      END LOOP;
11460                   END IF;
11461                END LOOP;                                                                       /* end loop of cz_pb_mgr.v_models_not_to_be_exported */
11462             END IF;                                                                                              /* end if of p_models_not_exported */
11463 
11464             IF (v_remote_ui_defs_ref.COUNT > 0)
11465             THEN
11466                v_remote_ui_defs_tbl.DELETE;
11467                v_remote_ui_nodes_ref.DELETE;
11468                v_remote_ui_nod_ui_def_ref.DELETE;
11469 
11470                FOR i IN v_remote_ui_defs_ref.FIRST .. v_remote_ui_defs_ref.LAST
11471                LOOP
11472                   v_remote_ui_nodes_tbl.DELETE;
11473                   v_remote_ui_nod_ui_def_tbl.DELETE;
11474 
11475                   BEGIN
11476                      SELECT   ui_node_id, ui_def_id, persistent_ui_node_id
11477                      BULK COLLECT INTO v_remote_ui_nodes_tbl, v_remote_ui_nod_ui_def_tbl, v_remote_pers_ui_node_tbl
11478                          FROM cz_ui_nodes
11479                         WHERE cz_ui_nodes.ui_def_id = v_remote_ui_defs_ref(i) AND cz_ui_nodes.deleted_flag = '0'
11480                      ORDER BY cz_ui_nodes.ui_node_id;
11481                   EXCEPTION
11482                      WHEN NO_DATA_FOUND
11483                      THEN
11484                         cz_pb_mgr.v_err_message := 'No ui_node_ids found ';
11485                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11486                      WHEN OTHERS
11487                      THEN
11488                         cz_pb_mgr.v_err_message := 'Error in retrieving ui_node_ids for remote ui_node_refs ';
11489                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11490                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11491                   END;
11492 
11493                   IF (v_remote_ui_nodes_tbl.COUNT > 0)
11494                   THEN
11495                      FOR j IN v_remote_ui_nodes_tbl.FIRST .. v_remote_ui_nodes_tbl.LAST
11496                      LOOP
11497                         rec_count := v_remote_ui_nodes_ref.COUNT + 1;
11498                         v_remote_ui_nodes_ref(rec_count) := v_remote_ui_nodes_tbl(j);
11499                         v_remote_ui_nod_ui_def_ref(rec_count) := v_remote_ui_nod_ui_def_tbl(j);
11500                         v_remote_pers_ui_node_ref(rec_count) := v_remote_pers_ui_node_tbl(j);
11501                      END LOOP;
11502                   END IF;                                                                                        /* end if of v_remote_ui_nodes_tbl */
11503                END LOOP;                                                                                        /* end loop of v_remote_ui_defs_ref */
11504             END IF;                                                                                               /* end if of v_remote_ui_defs_ref */
11505 
11506             IF (v_remote_ui_nodes_ref.COUNT > 0)
11507             THEN
11508 	       IF (p_master_keys_array.COUNT > 0) THEN
11509                FOR j IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
11510                LOOP
11511                   IF (p_resolved_array(j) IS NOT NULL)
11512                   THEN
11513                      FOR i IN v_remote_ui_nodes_ref.FIRST .. v_remote_ui_nodes_ref.LAST
11514                      LOOP
11515                         IF (p_resolved_array(j) = v_remote_ui_nodes_ref(i))
11516                         THEN
11517                            ---------get devl_project_id
11518                            SELECT devl_project_id
11519                              INTO v_node_ref_proj_id
11520                              FROM cz_ui_defs
11521                             WHERE ui_def_id = v_remote_ui_nod_ui_def_ref(i) AND cz_ui_defs.deleted_flag = '0';
11522 
11523                            get_remote_model_id(p_server_id,v_node_ref_proj_id,x_status,v_node_ref_remote_model);
11524 
11525                            OPEN l_ui_def_cur(v_remote_ui_nod_ui_def_ref(i));
11526                            FETCH l_ui_def_cur INTO l_ui_def_name;
11527                            CLOSE l_ui_def_cur;
11528 
11529                            OPEN ui_def_ref_id_cv FOR    'SELECT ui_node_id'
11530                                                      || ' '
11531                                                      || 'FROM	 cz_ui_nodes'
11532                                                      || cz_pb_mgr.v_db_link
11533                                                      || '  t'
11534                                                      || ' '
11535                                                      || 'WHERE  t.persistent_ui_node_id = :pers_ui_node_id'
11536                                                      || ' '
11537                                                      || 'AND    t.ui_def_id  = (SELECT ui_def_id'
11538                                                      || ' '
11539                                                      || 'FROM   cz_ui_defs'
11540                                                      || cz_pb_mgr.v_db_link
11541                                                      || ' a'
11542                                                      || ' '
11543                                                      || 'WHERE  a.name = :ui_def_name'
11547                                                      || 'AND 	t.deleted_flag = ''0'''
11544                                                      || ' '
11545                                                      || 'AND   a.devl_project_id = :devl_project_id)'
11546                                                      || ' '
11548                                                      || ' '
11549                                                      || 'AND  	ROWNUM < 2 '
11550                                                      USING v_remote_pers_ui_node_ref(i), l_ui_def_name, v_node_ref_remote_model;
11551                            LOOP
11552                               FETCH ui_def_ref_id_cv
11553                                INTO p_resolved_array(j);
11554 
11555                               EXIT WHEN ui_def_ref_id_cv%NOTFOUND;
11556                            END LOOP;
11557 
11558                            CLOSE ui_def_ref_id_cv;
11559                         END IF;                                                         /* end if of p_resolved_array(j) = v_remote_ui_nodes_ref(i) */
11560                      END LOOP;                                                                       /* end loop of FOR  I IN v_remote_ui_nodes_ref */
11561                   END IF;                                                                              /* end if of p_resolved_array(j) IS NOT NULL */
11562                END LOOP;                                                                                /* end loop of FOR J IN p_master_keys_array */
11563 	       END IF;
11564             END IF;                                                                                    /* end if of v_remote_ui_nodes_ref.COUNT > 0 */
11565          END IF;                                                                                       /* end if of (p_master_keys_array.COUNT > 0) */
11566       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
11567    EXCEPTION
11568       WHEN NO_DATA_FOUND
11569       THEN
11570          cz_pb_mgr.v_err_message := 'No ui_node_ref_ids found ';
11571          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11572 
11573          CLOSE ui_def_ref_id_cv;
11574       WHEN OTHERS
11575       THEN
11576          cz_pb_mgr.v_err_message := 'Error in retrieving ui_nod_ref_ids ';
11577          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11578 
11579          CLOSE ui_def_ref_id_cv;
11580 
11581          x_status := PUBLICATION_ERROR;
11582          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11583          RAISE;
11584    END resolve_remote_ui_nodes;
11585 
11586 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11587 --------------populate ps nodes pl/sql table with ps node ids from remote server
11588 --------------@p_model_not_exported_array: source models not exported
11589 --------------@p_ps_nodes_single_array   : ps nodes single index array
11590 --------------@x_status            : publication status parameter
11591    PROCEDURE get_rem_nodes_of_models(
11592       p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
11593      ,p_ps_nodes_single_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
11594      ,x_status IN OUT NOCOPY VARCHAR2
11595    )
11596    AS
11597       remote_ps_count NUMBER;
11598       v_remote_models_tbl cz_pb_mgr.t_ref;
11599       v_rem_ps_nodes_ref cz_pb_mgr.t_ref;
11600       v_rem_pers_nodes_ref cz_pb_mgr.t_ref;
11601       v_src_ps_nodes_ref cz_pb_mgr.t_ref;
11602       remote_node_cv ref_cursor;
11603       v_remote_ps_node_id cz_ps_nodes.ps_node_id%TYPE;
11604       v_remote_pers_node_id cz_ps_nodes.persistent_node_id%TYPE;
11605       l_remote_model_id  NUMBER;
11606    BEGIN
11607       IF (x_status <> PUBLICATION_ERROR) THEN
11608          IF (p_model_not_exported_array.COUNT > 0) THEN
11609             FOR k IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
11610             LOOP
11611                BEGIN
11612                  get_remote_model_id(cz_pb_mgr.v_server_id,p_model_not_exported_array(k),x_status,l_remote_model_id);
11613                  v_remote_models_tbl(k):=l_remote_model_id;
11614                EXCEPTION
11615                   WHEN OTHERS THEN
11616                      cz_pb_mgr.v_err_message :=
11617                                      'No remote model found for source model: ' || p_model_not_exported_array(k)
11618                                      || ' on the remote server';
11619                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTENODES', SQLCODE);
11620                      x_status := PUBLICATION_ERROR;
11621                      RAISE;
11622                END;
11623 
11624                IF (v_remote_models_tbl(k) > 0) THEN
11625                   OPEN remote_node_cv FOR 'SELECT ps_node_id,persistent_node_id'
11626                                           || ' '
11627                                           || 'FROM  cz_ps_nodes'
11628                                           || cz_pb_mgr.v_db_link
11629                                           || '  t'
11630                                           || ' '
11631                                           || 'WHERE t.devl_project_id = '
11632                                           || v_remote_models_tbl(k)
11633                                           || ' '
11634                                           || 'AND t.deleted_flag = ''0'' ';
11635 
11636                   LOOP
11637                      FETCH remote_node_cv
11638                       INTO v_remote_ps_node_id, v_remote_pers_node_id;
11639 
11640                      EXIT WHEN remote_node_cv%NOTFOUND;
11641                      remote_ps_count := v_rem_ps_nodes_ref.COUNT + 1;
11645                      SELECT ps_node_id
11642                      v_rem_ps_nodes_ref(remote_ps_count) := v_remote_ps_node_id;
11643                      v_rem_pers_nodes_ref(remote_ps_count) := v_remote_pers_node_id;
11644 
11646                        INTO v_src_ps_nodes_ref(remote_ps_count)
11647                        FROM cz_ps_nodes
11648                       WHERE cz_ps_nodes.devl_project_id = p_model_not_exported_array(k)
11649                         AND cz_ps_nodes.persistent_node_id = v_remote_pers_node_id
11650                         AND cz_ps_nodes.deleted_flag = record_not_deleted;
11651                   END LOOP;
11652 
11653                   CLOSE remote_node_cv;
11654                END IF;                               /* end if of (v_remote_models_tbl(k) > 0) */
11655             END LOOP;                                /* end loop of FOR k IN p_model_not_exported_array */
11656 
11657             IF (v_rem_ps_nodes_ref.COUNT > 0)
11658             THEN
11659                FOR m IN v_rem_ps_nodes_ref.FIRST .. v_rem_ps_nodes_ref.LAST
11660                LOOP
11661                   cz_pb_mgr.v_cz_ps_nodes_idx_tbl(v_src_ps_nodes_ref(m)):=v_rem_ps_nodes_ref(m);
11662                END LOOP;
11663             END IF;                                                                                     /* end if of (v_rem_ps_nodes_ref.COUNT > 0) */
11664          END IF;                                                                                /* end if of (p_model_not_exported_array.COUNT > 0) */
11665       END IF;                                                                                            /* end if of x_status <> PUBLICATION_ERROR */
11666    EXCEPTION
11667       WHEN OTHERS
11668       THEN
11669          cz_pb_mgr.v_err_message := 'Error in retrieving remote ps node ids for source models not exported: ' || SQLERRM;
11670          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMNODES', SQLCODE);
11671 
11672          CLOSE remote_node_cv;
11673 
11674          x_status := PUBLICATION_ERROR;
11675          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11676          RAISE;
11677    END get_rem_nodes_of_models;
11678 
11679 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11680 -----procedure inserts data into cz_ps_prop_vals for non-migration session
11681 -----@p_prop_vals_array: table of ps nodes
11682 -----@p_property_array  : table of property ids
11683 -----@p_data_val_array  : table of data values
11684 -----@x_status : publication status parameter
11685    PROCEDURE insert_into_ps_prop_vals
11686    AS
11687    BEGIN
11688       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
11689       THEN
11690          EXECUTE IMMEDIATE    'BEGIN'
11691                            || ' '
11692                            || 'cz_pb_mgr.v_expr_count := 0;'
11693                            || ' '
11694                            || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
11695                            || ' '
11696                            || 'LOOP'
11697                            || ' '
11698                            || 'cz_pb_mgr.v_propval_node_id    := cz_pb_mgr.v_prop_vals_node_ref(i);'
11699                            || ' '
11700                            || 'cz_pb_mgr.v_propval_prop_id    := cz_pb_mgr.v_prop_vals_prop_ref(i);'
11701                            || ' '
11702                            || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
11703                            || ' '
11704                            || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.v_prop_vals_data_num_ref(i);'
11705                            || ' '
11706                            || 'INSERT INTO cz_ps_prop_vals'
11707                            || cz_pb_mgr.v_db_link
11708                            || '('
11709                            || ' '
11710                            || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
11711                            || ' '
11712                            || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
11713                            || ' '
11714                            || '''0'',cz_pb_mgr.v_propval_data_num_value);'
11715                            || ' '
11716                            || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11717                            || ' '
11718                            || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
11719                            || ' '
11720                            || 'END IF;'
11721                            || ' '
11722                            || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11723                            || ' '
11724                            || 'END LOOP;'
11725                            || ' '
11726                            || 'END;';
11727       END IF;
11728 
11729       COMMIT;
11730    EXCEPTION
11731       WHEN OTHERS
11732       THEN
11733          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
11734          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
11735          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11736          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11737          RAISE;
11738    END insert_into_ps_prop_vals;
11739 
11740 --------------------------------------------------------------------------------
11741   -- used for model conversion
11742   -- ps node ids in v_prop_vals_node_ref and translatable text ids in v_prop_vals_data_num_ref
11743   -- are already resolved in upload_item_schema
11747 
11744   PROCEDURE mc_insert_pspropvals IS
11745   BEGIN
11746     IF cz_pb_mgr.v_prop_vals_node_ref.COUNT=0 THEN RETURN; END IF;
11748     FOR i IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST LOOP
11749       IF cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsValue' OR cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsDflt' THEN
11750         INSERT INTO cz_ps_prop_vals(ps_node_id, property_id, data_value, data_num_value, deleted_flag)
11751         VALUES(cz_pb_mgr.v_prop_vals_node_ref(i), cz_pb_mgr.v_prop_vals_prop_ref(i),
11752                cz_pb_mgr.v_prop_vals_data_ref(i), cz_pb_mgr.v_prop_vals_data_num_ref(i), '0');
11753       END IF;
11754     END LOOP;
11755     COMMIT;
11756   EXCEPTION
11757     WHEN OTHERS THEN
11758       cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
11759       cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
11760       cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11761       cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11762       RAISE;
11763   END mc_insert_pspropvals;
11764 
11765 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11766    PROCEDURE insert_des_chart_features(x_status IN OUT NOCOPY VARCHAR2)
11767    AS
11768    BEGIN
11769       IF (x_status <> PUBLICATION_ERROR)
11770       THEN
11771          IF (cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT > 0)
11772          THEN
11773             cz_pb_mgr.v_expr_count := 0;
11774 
11775             EXECUTE IMMEDIATE    'BEGIN'
11776                               || ' '
11777                               || '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'
11778                               || ' '
11779                               || 'LOOP'
11780                               || ' '
11781                               || 'INSERT INTO cz_des_chart_features'
11782                               || cz_pb_mgr.v_db_link
11783                               || '('
11784                               || ' '
11785                               || 'RULE_ID'
11786                               || ' '
11787                               || ',FEATURE_ID'
11788                               || ' '
11789                               || ',FEATURE_TYPE'
11790                               || ' '
11791                               || ',DELETED_FLAG'
11792                               || ' '
11793                               || ',MODEL_REF_EXPL_ID)'
11794                               || ' '
11795                               || 'VALUES (cz_pb_mgr.v_cz_des_feature_rid_new_ref(i)'
11796                               || ' '
11797                               || ',cz_pb_mgr.v_cz_des_feature_id_old_ref(i)'
11798                               || ' '
11799                               || ',cz_pb_mgr.v_cz_des_feature_ft_typ_ref(i)'
11800                               || ' '
11801                               || ',''0'''
11802                               || ' '
11803                               || ',cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(i)'
11804                               || ' '
11805                               || ');'
11806                               || ' '
11807                               || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11808                               || ' '
11809                               || 'COMMIT;'
11810                               || ' '
11811                               || 'cz_pb_mgr.v_expr_count := 0;'
11812                               || ' '
11813                               || 'END IF;'
11814                               || ' '
11815                               || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11816                               || ' '
11817                               || 'END LOOP;'
11818                               || ' '
11819                               || 'END;';
11820          END IF;
11821       END IF;
11822 
11823       COMMIT;
11824    EXCEPTION
11825       WHEN OTHERS
11826       THEN
11827          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
11828          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_FEATURES', SQLCODE);
11829          x_status := PUBLICATION_ERROR;
11830          RAISE;
11831    END;
11832 
11833 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11834 ------the new ids from v_cz_des_cells_rule_id_new_ref
11835    PROCEDURE insert_des_chart_cells(x_status IN OUT NOCOPY VARCHAR2)
11836    AS
11837    BEGIN
11838       IF (x_status <> PUBLICATION_ERROR)
11839       THEN
11840          IF (cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.COUNT > 0)
11841          THEN
11842             cz_pb_mgr.v_expr_count := 0;
11843 
11844             EXECUTE IMMEDIATE    'BEGIN'
11845                               || ' '
11846                               || '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'
11847                               || ' '
11848                               || 'LOOP'
11849                               || ' '
11850                               || 'INSERT INTO cz_des_chart_cells'
11851                               || cz_pb_mgr.v_db_link
11852                               || '('
11853                               || ' '
11854                               || 'RULE_ID'
11855                               || ' '
11856                               || ',PRIMARY_OPT_ID'
11857                               || ' '
11861                               || ' '
11858                               || ',SECONDARY_OPT_ID'
11859                               || ' '
11860                               || ',MARK_CHAR'
11862                               || ',DELETED_FLAG'
11863                               || ' '
11864                               || ',SECONDARY_FEAT_EXPL_ID'
11865                               || ' '
11866                               || ',SECONDARY_FEATURE_ID'
11867                               || ' '
11868                               || ')'
11869                               || ' '
11870                               || 'values   (	cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(i)'
11871                               || ' '
11872                               || ',cz_pb_mgr.v_cz_des_cells_popt_id_ref(i)'
11873                               || ' '
11874                               || ',cz_pb_mgr.v_cz_des_cells_sopt_id_ref(i)'
11875                               || ' '
11876                               || ',cz_pb_mgr.v_cz_des_cells_mark_char_ref(i)'
11877                               || ' '
11878                               || ',''0'''
11879                               || ' '
11880                               || ',cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(i)'
11881                               || ' '
11882                               || ',cz_pb_mgr.v_cz_des_cells_sf_id_ref(i)'
11883                               || ' '
11884                               || ');'
11885                               || ' '
11886                               || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11887                               || ' '
11888                               || 'COMMIT;'
11889                               || ' '
11890                               || 'cz_pb_mgr.v_expr_count := 0;'
11891                               || ' '
11892                               || 'END IF;'
11893                               || ' '
11894                               || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11895                               || ' '
11896                               || 'END LOOP;'
11897                               || ' '
11898                               || 'END;';
11899          END IF;
11900       END IF;
11901 
11902       COMMIT;
11903    EXCEPTION
11904       WHEN OTHERS
11905       THEN
11906          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
11907          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_CELLS', SQLCODE);
11908          x_status := PUBLICATION_ERROR;
11909          RAISE;
11910    END;
11911 
11912 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11913    PROCEDURE collect_func_comp_specs
11914    IS
11915       v_cz_func_devl_old_tbl cz_pb_mgr.t_ref;
11916       v_cz_func_cid_old_tbl cz_pb_mgr.t_ref;
11917       v_cz_func_expl_old_tbl cz_pb_mgr.t_ref;
11918       v_cz_func_fld_old_tbl cz_pb_mgr.t_ref;
11919       v_object_type_tbl cz_pb_mgr.objtype;
11920       rec_count NUMBER := 0;
11921    BEGIN
11922       IF (cz_pb_mgr.g_log_timing = publication_timing)
11923       THEN
11924          log_timing_message('start bulk collect of func comp specs');
11925       END IF;
11926 
11927       clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
11928 
11929       IF (cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0)
11930       THEN
11931          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
11932          LOOP
11933             clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
11934             v_cz_func_devl_old_tbl.DELETE;
11935             v_cz_func_cid_old_tbl.DELETE;
11936             v_cz_func_expl_old_tbl.DELETE;
11937             v_cz_func_fld_old_tbl.DELETE;
11938             v_object_type_tbl.DELETE;
11939 
11940             BEGIN
11941                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_func_comp_specs_seq
11942                                                  , 'cz_func_comp_specs_s.nextval' || cz_pb_mgr.v_db_link
11943                                                  ,cz_pb_mgr.v_oraclesequenceincr
11944                                                  )
11945                      ,func_comp_id, devl_project_id, component_id, model_ref_expl_id
11946                      ,rule_folder_id, 'FNC'
11947                BULK COLLECT INTO cz_pb_mgr.v_cz_func_comp_new_tbl
11948                      ,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
11949                      ,v_cz_func_fld_old_tbl, v_object_type_tbl
11950                  FROM cz_func_comp_specs t
11951                 WHERE t.model_ref_expl_id = cz_pb_mgr.v_cz_model_ref_expls_old_ref(i) AND t.deleted_flag = '0';
11952             EXCEPTION
11953                WHEN NO_DATA_FOUND
11954                THEN
11955                   cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
11956                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FUNCCOMP', SQLCODE);
11957                WHEN OTHERS
11958                THEN
11959                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_func_comp_specs', 'SQLERRM', SQLERRM);
11960                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11961                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11962                   RAISE;
11963             END;
11964 
11965             rec_count := cz_pb_mgr.v_cz_func_comp_new_ref.COUNT;
11966 
11967             IF (cz_pb_mgr.v_cz_func_comp_new_tbl.COUNT > 0)
11968             THEN
11972                   cz_pb_mgr.v_cz_func_comp_new_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_new_tbl(k);
11969                FOR k IN cz_pb_mgr.v_cz_func_comp_new_tbl.FIRST .. cz_pb_mgr.v_cz_func_comp_new_tbl.LAST
11970                LOOP
11971                   rec_count := rec_count + 1;
11973                   cz_pb_mgr.v_cz_func_comp_old_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_old_tbl(k);
11974                   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);
11975                   cz_pb_mgr.v_cz_func_devl_old_ref(rec_count) := v_cz_func_devl_old_tbl(k);
11976                   cz_pb_mgr.v_cz_func_cid_old_ref(rec_count) := v_cz_func_cid_old_tbl(k);
11977                   cz_pb_mgr.v_cz_func_expl_old_ref(rec_count) := v_cz_func_expl_old_tbl(k);
11978                   cz_pb_mgr.v_cz_func_fld_old_ref(rec_count) := v_cz_func_fld_old_tbl(k);
11979                   cz_pb_mgr.v_cz_func_obj_ref(rec_count) := v_object_type_tbl(k);
11980                END LOOP;
11981             END IF;
11982          END LOOP;  /* end loop of FOR  I IN cz_pb_mgr.v_cz_model_ref_expls_old_ref */
11983       END IF;       /* end if of cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0 */
11984 
11985       IF (cz_pb_mgr.g_log_timing = publication_timing)
11986       THEN
11987          log_timing_message('end bulk collect of func comp specs');
11988       END IF;
11989    EXCEPTION
11990       WHEN OTHERS
11991       THEN
11992          RAISE;
11993    END collect_func_comp_specs;
11994 
11995 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11996 -----procedure that bulk collects rules of projects
11997 ----@p_rules_flag : indicates if rules have to be copied while publishing
11998 ----@p_model_array : models to be copied
11999 ----@p_rules_old_array : tbl containing old rule ids
12000 ----@p_rules_new_array : tbl for new rules
12001 ----@p_rules_sng_array : table for single index implementation
12002 ----@x_status : publication status parameter
12003 PROCEDURE bulk_collect_rules(
12004       p_rules_flag IN VARCHAR2
12005      ,p_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12006      ,p_rules_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
12007      ,p_rules_new_array IN OUT NOCOPY cz_pb_mgr.t_ref
12008      ,p_rules_sng_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12009      ,x_status IN OUT NOCOPY VARCHAR2
12010    )
12011 AS
12012   l_cz_rules_new_id_tbl   cz_pb_mgr.t_ref;
12013   l_cz_rules_old_id_tbl   cz_pb_mgr.t_ref;
12014   l_cz_rules_rf_id_tbl    cz_pb_mgr.t_ref;
12015   l_cz_rules_proj_id_tbl  cz_pb_mgr.t_ref;
12016   l_cz_rules_comp_id_tbl  cz_pb_mgr.t_ref;
12017   l_cz_rules_rea_id_tbl   cz_pb_mgr.t_ref;
12018   l_cz_rules_eff_id_tbl   cz_pb_mgr.t_ref;
12019   l_cz_rules_unmsg_id_tbl cz_pb_mgr.t_ref;
12020   l_cz_rules_expl_id_tbl  cz_pb_mgr.t_ref;
12021   l_cz_rules_sig_tbl      cz_pb_mgr.t_ref;
12022   l_cz_rules_ui_tbl       cz_pb_mgr.t_ref;
12023   l_cz_rules_perst_id_tbl cz_pb_mgr.t_ref;
12024   l_eff_usg_mask_tbl      cz_pb_mgr.t_eff_usage_mask;
12025   l_object_type           cz_rule_folders.object_type%TYPE;
12026   l_rule_type_tbl         cz_pb_mgr.t_ref;
12027 
12028   rec_count PLS_INTEGER;
12029 
12030 BEGIN
12031   IF (x_status = PUBLICATION_ERROR OR p_model_array.COUNT = 0) THEN
12032     RETURN;
12033   END IF;
12034   rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT; -- ? 0
12035 
12036   FOR i IN p_model_array.FIRST .. p_model_array.LAST
12037   LOOP
12038     l_cz_rules_new_id_tbl.DELETE;
12039     l_cz_rules_old_id_tbl.DELETE;
12040     l_cz_rules_rf_id_tbl.DELETE;
12041     l_cz_rules_proj_id_tbl.DELETE;
12042     l_cz_rules_comp_id_tbl.DELETE;
12043     l_cz_rules_rea_id_tbl.DELETE;
12044     l_cz_rules_eff_id_tbl.DELETE;
12045     l_cz_rules_unmsg_id_tbl.DELETE;
12046     l_cz_rules_expl_id_tbl.DELETE;
12047     l_cz_rules_sig_tbl.DELETE;
12048     l_cz_rules_ui_tbl.DELETE;
12049     l_eff_usg_mask_tbl.DELETE;
12050     l_cz_rules_perst_id_tbl.DELETE;
12051     l_rule_type_tbl.DELETE;
12052 
12053     BEGIN
12054       IF (cz_pb_mgr.v_session_parameter = MODEL_COPY) THEN
12055         IF (COPY_RULES = 'YES') THEN
12056           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12057                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12058              ,rule_id, rule_folder_id, devl_project_id, component_id
12059              ,reason_id, unsatisfied_msg_id, effectivity_set_id
12060              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12061              ,persistent_rule_id, rule_type
12062           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12063              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12064              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12065              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12066              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12067           FROM cz_rules t
12068           WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
12069                AND t.seeded_flag <> SEED_DATA
12070 		AND ((CZ_PB_MGR.COPY_UIS='YES')
12071 		       OR
12072 		    (rule_type NOT IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION))
12073 		    )
12074                AND (
12075                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12076                      (t.ui_def_id>1 AND
12077                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12078                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12079                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12083 
12080                                WHERE p.page_id=t.ui_page_id AND
12081                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12082                    );
12084         END IF;
12085       ELSE
12086         IF (p_rules_flag = 'YES') THEN
12087           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12088                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12089              ,rule_id, rule_folder_id, devl_project_id, component_id
12090              ,reason_id, unsatisfied_msg_id, effectivity_set_id
12091              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12092              ,persistent_rule_id, rule_type
12093           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12094              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12095              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12096              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12097              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12098           FROM cz_rules t
12099           WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
12100                 AND t.seeded_flag <> SEED_DATA
12101                 AND (
12102                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12103                      (t.ui_def_id>1 AND
12104                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12105                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12106                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12107                                WHERE p.page_id=t.ui_page_id AND
12108                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12109                     );
12110 
12111         ELSE
12112           SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12113                    ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12114              ,rule_id, rule_folder_id, devl_project_id, component_id
12115              ,reason_id, unsatisfied_msg_id, effectivity_set_id
12116              ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12117              ,persistent_rule_id, rule_type
12118           BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12119              ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12120              ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12121              ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12122              ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12123           FROM cz_rules t
12124           WHERE t.devl_project_id = p_model_array(i)
12125            AND  t.rule_type IN (RULE_TYPE_CONFIG_EXTENSION, RULE_TYPE_DISPLAY_CONDITION,
12126                                 RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)
12127            AND  t.deleted_flag = '0'  AND t.seeded_flag <> SEED_DATA
12128            AND (
12129                      (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12130                      (t.ui_def_id>1 AND
12131                        EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12132                                WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12133                        EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12134                                WHERE p.page_id=t.ui_page_id AND
12135                                      p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12136                    );
12137 
12138         END IF;
12139       END IF;
12140     EXCEPTION
12141       WHEN NO_DATA_FOUND THEN
12142         cz_pb_mgr.v_err_message := 'No rules found for model: ' || p_model_array(i);
12143         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
12144       WHEN OTHERS THEN
12145         RAISE;
12146     END;
12147 
12148     IF l_cz_rules_new_id_tbl.COUNT > 0 THEN
12149       FOR k IN l_cz_rules_new_id_tbl.FIRST .. l_cz_rules_new_id_tbl.LAST
12150       LOOP
12151         rec_count := rec_count + 1;
12152         cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_cz_rules_old_id_tbl(k)):=l_cz_rules_new_id_tbl(k);
12153         cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := l_cz_rules_proj_id_tbl(k);
12154         cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := l_cz_rules_comp_id_tbl(k);
12155         cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := l_cz_rules_expl_id_tbl(k);
12156         p_rules_new_array(rec_count) := l_cz_rules_new_id_tbl(k);
12157         p_rules_old_array(rec_count) := l_cz_rules_old_id_tbl(k);
12158         cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := l_cz_rules_rea_id_tbl(k);
12159         cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := l_cz_rules_unmsg_id_tbl(k);
12160         cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := l_cz_rules_eff_id_tbl(k);
12161         cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := l_cz_rules_sig_tbl(k);
12162         cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := l_cz_rules_ui_tbl(k);
12163         cz_pb_mgr.v_cz_rule_usage_mask_tbl(rec_count) := l_eff_usg_mask_tbl(k);
12164         cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
12165         cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_cz_rules_perst_id_tbl(k);
12166 
12167         IF l_rule_type_tbl(k) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION,
12168                                   RULE_TYPE_CAPTION, RULE_TYPE_POPULATOR) THEN
12169           cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
12170         ELSE
12171           cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := l_cz_rules_rf_id_tbl(k);
12172         END IF;
12173       END LOOP;
12174     END IF;
12175   END LOOP;
12176 
12177   IF (rec_count > 0 AND (cz_pb_mgr.v_session_parameter = MODEL_COPY OR
12181       BEGIN
12178                          cz_pb_mgr.v_session_parameter = CZ_MODEL_MIGRATION_PVT.MIGRATE_MODEL)) THEN
12179     FOR j IN p_rules_old_array.FIRST .. p_rules_old_array.LAST
12180     LOOP
12182         SELECT object_type  INTO l_object_type
12183         FROM cz_rule_folders
12184         WHERE rule_folder_id = p_rules_old_array(j) AND object_type NOT IN ('FNC', 'RFL', 'RSQ');
12185         cz_pb_mgr.v_cz_rules_obj_ref(j) := l_object_type;
12186       EXCEPTION
12187         WHEN NO_DATA_FOUND THEN
12188           NULL;
12189       END;
12190     END LOOP;
12191   END IF;
12192 EXCEPTION
12193   WHEN OTHERS THEN
12194     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
12195     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
12196     x_status := PUBLICATION_ERROR;
12197     RAISE;
12198 END bulk_collect_rules;
12199 
12200 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12201 ----procedure that clears all global pl/sql tables
12202    PROCEDURE clear_all_tables(x_status IN OUT NOCOPY VARCHAR2)
12203    AS
12204    BEGIN
12205       clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
12206       clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
12207       clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
12208       clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
12209       clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
12210       clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
12211       clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
12212       clear_tables('cz_ui_defs', 'tbl', cz_pb_mgr.v_status_code);
12213       clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
12214       clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
12215       clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
12216       clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
12217       clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
12218       clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
12219       clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
12220       clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
12221       clear_tables('cz_expression_nodes', 'ref', cz_pb_mgr.v_status_code);
12222       clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
12223       clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
12224       clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
12225       clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
12226       clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
12227    EXCEPTION
12228       WHEN OTHERS
12229       THEN
12230          cz_pb_mgr.v_err_message := 'Error in clearing all tables : ' || SQLERRM;
12231          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CLEARALLTABLES', SQLCODE);
12232          x_status := PUBLICATION_ERROR;
12233          RAISE;
12234    END clear_all_tables;
12235 
12236 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12237 -----procedure to get the new ui_def_id that would be in the target publication
12238 -----@p_publication_id : source publication_id
12239 -----@p_old_ui_array : array containing old ui_def_ids
12240 -----@p_new_ui_array : array containing new ui_def_ids
12241 -----@x_new_ui_def_id  : new ui_def_id
12242 -----@x_status : publication status parameter
12243    PROCEDURE get_new_ui_def_id(
12244       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12245      ,p_old_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
12246      ,p_new_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
12247      ,x_new_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
12248      ,x_status IN OUT NOCOPY VARCHAR2
12249    )
12250    AS
12251       v_old_ui_def_id cz_model_publications.model_id%TYPE;
12252    BEGIN
12253       IF (x_status <> PUBLICATION_ERROR)
12254       THEN
12255          SELECT ui_def_id
12256            INTO v_old_ui_def_id
12257            FROM cz_model_publications
12258           WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
12259 
12260          IF ((v_old_ui_def_id > 0) AND(p_new_ui_array.COUNT > 0))
12261          THEN
12262 	  IF (p_old_ui_array.COUNT > 0) THEN
12263             FOR i IN p_old_ui_array.FIRST .. p_old_ui_array.LAST
12264             LOOP
12265                IF (v_old_ui_def_id = p_old_ui_array(i))
12266                THEN
12267                   x_new_ui_def_id := p_new_ui_array(i);
12268                   EXIT;
12269                END IF;
12270             END LOOP;
12271 	   END IF;
12272          ELSE
12273             x_new_ui_def_id := NULL;
12274          END IF;
12275       END IF;
12276    EXCEPTION
12277       WHEN OTHERS
12278       THEN
12279          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_DATA_FOUND', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
12280          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:UIDEFID', SQLCODE);
12281          x_status := PUBLICATION_ERROR;
12282          RAISE;
12283    END get_new_ui_def_id;
12284 
12285 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12286 ----procedure gets model id for target publication
12287    PROCEDURE get_new_model_id(
12288       p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12289      ,p_new_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12290      ,x_new_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
12294    BEGIN
12291      ,x_status IN OUT NOCOPY VARCHAR2
12292    )
12293    AS
12295       IF (x_status <> PUBLICATION_ERROR)
12296       THEN
12297          IF (p_new_model_array.COUNT > 0)
12298          THEN
12299             SELECT remote_model_id
12300               INTO x_new_model_id
12301               FROM cz_pb_model_exports
12302              WHERE cz_pb_model_exports.publication_id = p_publication_id
12303                AND cz_pb_model_exports.model_id = cz_pb_model_exports.root_model_id
12304                ---AND     cz_pb_model_exports.export_reverse_seq = 0
12305                AND cz_pb_model_exports.superseded_flag = 'N';
12306          END IF;
12307 
12308          ---the above query has been changed to hold good for circular connectors
12309                ---In circular references the root may not have an export rev seq of 0
12310          UPDATE cz_pb_model_exports
12311             SET superseded_flag = 'Y'
12312           WHERE publication_id = p_publication_id AND superseded_flag = 'N';
12313       END IF;
12314    EXCEPTION
12315       WHEN OTHERS
12316       THEN
12317          cz_pb_mgr.v_err_message := 'Error in retrieving new model id for publication id: ' || p_publication_id || ' : ' || SQLERRM;
12318          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETNEWMODELID', SQLCODE);
12319          x_status := PUBLICATION_ERROR;
12320          RAISE;
12321    END get_new_model_id;
12322 
12323 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12324 ------procedure that retrieves the source publication_id, export_status, server_id, remote_publication_id
12325 ------from cz_model_publications table
12326 ------@p_publication_id : publication id whose info is required
12327 ------@p_status : publication_status
12328 ------@x_model_id : model that is to be published
12329 ------@x_ui_def_id : ui_def_id
12330 ------@x_export_status  : prev publication status
12331 ------@x_remote_publication_id : prev remote publication id
12332 ------@x_status : publication status parameter
12333    PROCEDURE get_source_pb_info(
12334       p_publication_id IN cz_model_publications.publication_id%TYPE
12335      ,x_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
12336      ,x_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
12337      ,x_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
12338      ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12339      ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12340      ,x_object_type IN OUT NOCOPY cz_model_publications.object_type%TYPE
12341      ,x_pb_mode IN OUT NOCOPY cz_model_publications.publication_mode%TYPE
12342      ,x_status IN OUT NOCOPY VARCHAR2
12343    )
12344    AS
12345    BEGIN
12346       IF (x_status <> PUBLICATION_ERROR)
12347       THEN
12348          SELECT object_id, ui_def_id, server_id, export_status, remote_publication_id, object_type, publication_mode, NVL(config_engine_type, 'L')
12349            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
12350            FROM cz_model_publications, cz_devl_projects
12351           WHERE cz_model_publications.publication_id = p_publication_id
12352             AND cz_model_publications.deleted_flag = record_not_deleted
12353             AND cz_model_publications.object_id = cz_devl_projects.devl_project_id
12354             AND cz_devl_projects.deleted_flag = '0';
12355 	    -- Bug 5507300; 06-Sep-2006; kdande; Removed the following condition as user should be able to Republish disabled publications.
12356             -- AND cz_model_publications.disabled_flag = '0';
12357 
12358          ----if x_ui_def_id is null
12359          IF (x_ui_def_id IS NULL)
12360          THEN
12361             BEGIN
12362                SELECT ui_def_id
12363                  INTO x_ui_def_id
12364                  FROM cz_ui_defs
12365                 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;
12366             EXCEPTION
12367                WHEN NO_DATA_FOUND
12368                THEN
12369                   x_ui_def_id := NULL;
12370                WHEN OTHERS
12371                THEN
12372                   x_ui_def_id := 0;
12373             END;
12374          END IF;
12375       END IF;
12376    EXCEPTION
12377       WHEN OTHERS
12378       THEN
12379          cz_pb_mgr.v_err_message :=
12380                                   'Error in retrieving source publication info for publication id : ' || TO_CHAR(p_publication_id) || ' : '
12381                                   || SQLERRM;
12382          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12383          x_status := PUBLICATION_ERROR;
12384          RAISE;
12385    END get_source_pb_info;
12386 
12387 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12388 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
12389 ------from cz_model_publications table
12390 ------@p_publication_id : publication id whose info is required
12391 ------@p_status : publication_status
12392 ------@x_prev publication id : prev publication id
12393 ------@x_prev_export_status  : prev publication status
12394 ------@x_prev_remote_publication_id : prev remote publication id
12395 ------@x_status : publication status parameter
12396    PROCEDURE get_new_copy_pb_info(
12397       p_publication_id IN cz_model_publications.publication_id%TYPE
12398      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12399      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12403    AS
12400      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12401      ,x_status IN OUT NOCOPY VARCHAR2
12402    )
12404    BEGIN
12405       IF (p_publication_id IS NOT NULL)
12406       THEN
12407          SELECT publication_id, export_status, remote_publication_id
12408            INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
12409            FROM cz_model_publications
12410           WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
12411       END IF;
12412    EXCEPTION
12413       WHEN OTHERS
12414       THEN
12415          cz_pb_mgr.v_err_message :=
12416                                'Error in retrieving publication info (newcopy) for publication id : ' || TO_CHAR(p_publication_id) || ' : '
12417                                || SQLERRM;
12418          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12419          x_status := PUBLICATION_ERROR;
12420          RAISE;
12421    END get_new_copy_pb_info;
12422 
12423 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12424 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
12425 ------from cz_model_publications table
12426 ------@p_publication_id : publication id whose info is required
12427 ------@p_status : publication_status
12428 ------@x_prev publication id : prev publication id
12429 ------@x_prev_export_status  : prev publication status
12430 ------@x_prev_remote_publication_id : prev remote publication id
12431 ------@x_status : publication status parameter
12432    PROCEDURE get_republish_pb_info(
12433       p_publication_id IN cz_model_publications.publication_id%TYPE
12434      ,p_status IN cz_model_publications.export_status%TYPE
12435      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12436      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12437      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12438      ,x_status IN OUT NOCOPY VARCHAR2
12439    )
12440    AS
12441    BEGIN
12442       SELECT publication_id, export_status, remote_publication_id
12443         INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
12444         FROM cz_model_publications
12445        WHERE cz_model_publications.remote_publication_id = p_publication_id
12446          AND cz_model_publications.export_status = p_status
12447          AND cz_model_publications.deleted_flag = record_not_deleted;
12448    EXCEPTION
12449       WHEN OTHERS
12450       THEN
12451          cz_pb_mgr.v_err_message := 'Error in retrieving publication info (republish) for publication id : ' || p_publication_id || ' : ' || SQLERRM;
12452          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12453          x_status := PUBLICATION_ERROR;
12454          RAISE;
12455    END get_republish_pb_info;
12456 
12457 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12458 ----------procedure to get the max publication id for a model
12459 ----------@p_model_id  : devl_project_id of the model
12460 ----------@p_server_id : server_id of the publication request
12461 ----------@x_publication_id : retrieved max publication id
12462 ----------@x_status: publication status parameter
12463    PROCEDURE get_max_pub_id(
12464       p_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12465      ,p_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
12466      ,x_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12467      ,x_status IN OUT NOCOPY VARCHAR2
12468    )
12469    AS
12470    BEGIN
12471       SELECT MAX(publication_id)
12472         INTO x_publication_id
12473         FROM cz_model_publications t
12474        WHERE t.model_id = p_model_id
12475          AND t.server_id = p_server_id
12476          AND t.model_last_struct_update = (SELECT last_struct_update
12477                                              FROM cz_devl_projects
12478                                             WHERE cz_devl_projects.devl_project_id = p_model_id)
12479          AND t.export_status IN('PUP', 'OK')
12480          AND t.source_target_flag = g_source_flag
12481          AND t.publication_id <> cz_pb_mgr.v_publication_id
12482          AND t.deleted_flag = record_not_deleted;
12483    EXCEPTION
12484       WHEN NO_DATA_FOUND
12485       THEN
12486          NULL;
12487       WHEN OTHERS
12488       THEN
12489          cz_pb_mgr.v_err_message := 'Error in retrieving max publication id for model id : ' || p_model_id || ' : ' || SQLERRM;
12490          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12491          x_status := PUBLICATION_ERROR;
12492          RAISE;
12493    END get_max_pub_id;
12494 
12495 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12496 -----procedure that retrieves previous publication
12497 -----if an existing publication is re-published.  This is again based on if all UIs are exported
12498 -----or no UI is exported i.e., only a publication request is created and no data is exported
12499 -----@p_ui_str : values are 'UI' or 'x' that indicates if UIs are exported
12500 -----@p_session_parameter : differentiates between a publishing process and deep copy
12501 -----@p_rem_publication_id : remote publication id of the existing publication
12502 -----@x_prev publication id : prev publication id
12503 -----@x_prev_export_status  : prev publication status
12504 -----@x_prev_remote_publication_id : prev remote publication id
12505 -----@x_status : publication status parameter
12506    PROCEDURE get_prev_publication(
12507       p_ui_str IN OUT NOCOPY VARCHAR2
12511      ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12508      ,p_session_parameter IN OUT NOCOPY VARCHAR2
12509      ,p_rem_publication_id IN cz_model_publications.publication_id%TYPE
12510      ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12512      ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12513      ,x_status IN OUT NOCOPY VARCHAR2
12514    )
12515    AS
12516       v_pr_pub_id cz_model_publications.publication_id%TYPE;
12517    BEGIN
12518       IF ((p_ui_str = 'UI') AND(p_session_parameter <> model_copy))
12519       THEN
12520          IF (p_rem_publication_id IS NOT NULL)
12521          THEN
12522             get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12523 
12524             IF (x_prev_publication_id > 0)
12525             THEN
12526                cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
12527                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12528             END IF;
12529          ELSE
12530             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);
12531             get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12532 
12533             IF (x_prev_publication_id > 0)
12534             THEN
12535                cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(x_prev_publication_id);
12536                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12537             END IF;
12538          END IF;                                                                                   /* end if of ( p_rem_publication_id IS NOT NULL) */
12539       ELSIF((cz_pb_mgr.v_ui_str = 'x') AND(cz_pb_mgr.v_session_parameter <> model_copy))
12540       THEN
12541          IF (p_rem_publication_id IS NOT NULL)
12542          THEN
12543             get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12544 
12545             IF (x_prev_publication_id > 0)
12546             THEN
12547                cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
12548                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12549             END IF;
12550          ELSE
12551             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);
12552             get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12553          END IF;
12554       END IF;                                                                /* end if of (p_ui_str = 'UI') AND (p_session_parameter <> MODEL_COPY) */
12555    EXCEPTION
12556       WHEN OTHERS
12557       THEN
12558          cz_pb_mgr.v_err_message :=
12559                               'Error in retrieving previous publication info for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
12560          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPREVPUB', SQLCODE);
12561          RAISE;
12562    END get_prev_publication;
12563 
12564 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12565 ------procedure inserts target publication record
12566 ------@p_new_publication_id : new publication id
12567 ------@p_old_publication_id : old publication id
12568 ------@p_link IN OUT NOCOPY : db link
12569 ------@x_status publication status parameter
12570    PROCEDURE insert_tgt_publication(
12571       p_new_publication_id IN cz_model_publications.publication_id%TYPE
12572      ,p_old_publication_id IN cz_model_publications.publication_id%TYPE
12573      ,p_model_id IN cz_model_publications.model_id%TYPE
12574      ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
12575      ,p_link IN OUT NOCOPY VARCHAR2
12576      ,p_insert_flag IN VARCHAR2
12577      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12578    )
12579    AS
12580       v_ui_def VARCHAR2(2000);
12581       v_inst_str VARCHAR2(8000);
12582       v_src_ui_def_id VARCHAR2(2000);
12583    BEGIN
12584       IF ((p_new_publication_id > 0) AND(x_status <> PUBLICATION_ERROR))
12585       THEN
12586          get_synchronized_pb_values(p_old_publication_id);
12587 
12588          IF (p_ui_def_id IS NULL)
12589          THEN
12590             v_ui_def := 'NULL';
12591             v_src_ui_def_id := 'NULL';
12592          ELSE
12593             v_ui_def := TO_CHAR(p_ui_def_id);
12594             v_src_ui_def_id := TO_CHAR(cz_pb_mgr.v_root_ui_def_id);
12595          END IF;
12596 
12597          v_inst_str :=
12598                'INSERT INTO cz_model_publications'
12599             || p_link
12600             || ''
12601             || ' '
12602             || '(PUBLICATION_ID'
12603             || ' '
12604             || ',MODEL_ID'
12605             || ' '
12606             || ',OBJECT_ID'
12607             || ' '
12608             || ',OBJECT_TYPE'
12609             || ' '
12610             || ',SERVER_ID'
12611             || ' '
12612             || ',ORGANIZATION_ID'
12613             || ' '
12614             || ',TOP_ITEM_ID'
12615             || ' '
12616             || ',PRODUCT_KEY'
12617             || ' '
12618             || ',PUBLICATION_MODE'
12619             || ' '
12620             || ',UI_DEF_ID'
12621             || ' '
12622             || ',UI_STYLE'
12623             || ' '
12624             || ',APPLICABLE_FROM'
12625             || ' '
12629             || ' '
12626             || ',APPLICABLE_UNTIL'
12627             || ' '
12628             || ',EXPORT_STATUS'
12630             || ',MODEL_PERSISTENT_ID'
12631             || ' '
12632             || ',DELETED_FLAG'
12633             || ' '
12634             || ',MODEL_LAST_STRUCT_UPDATE'
12635             || ' '
12636             || ',MODEL_LAST_LOGIC_UPDATE'
12637             || ' '
12638             || ',MODEL_LAST_UPDATED'
12639             || ' '
12640             || ',SOURCE_TARGET_FLAG'
12641             || ' '
12642             || ',REMOTE_PUBLICATION_ID'
12643             || ' '
12644             || ',SOURCE_UI_DEF_ID'
12645             || ' '
12646             || ',SOURCE_MODEL_ID'
12647             || ' '
12648             || ',CONTAINER'
12649             || ' '
12650             || ',PAGE_LAYOUT'
12651             || ' '
12652             || ',disabled_flag'
12653             || ' '
12654             || ')'
12655             || ' '
12656             || 'SELECT 	:1'
12657             || ' '
12658             || ',:2'
12659             || ' '
12660             || ',:3'
12661             || ' '
12662             || ',OBJECT_TYPE'
12663             || ' '
12664             || ',SERVER_ID'
12665             || ' '
12666             || ',:4'
12667             || ' '
12668             || ',:5'
12669             || ' '
12670             || ',:6'
12671             || ' '
12672             || ',PUBLICATION_MODE'
12673             || ' '
12674             || ',:7'
12675             || ' '
12676             || ',UI_STYLE'
12677             || ' '
12678             || ',APPLICABLE_FROM'
12679             || ' '
12680             || ',APPLICABLE_UNTIL'
12681             || ' '
12682             || ',''OK'''
12683             || ' '
12684             || ',MODEL_PERSISTENT_ID'
12685             || ' '
12686             || ',DELETED_FLAG'
12687             || ' '
12688             || ',MODEL_LAST_STRUCT_UPDATE'
12689             || ' '
12690             || ',MODEL_LAST_LOGIC_UPDATE'
12691             || ' '
12692             || ',MODEL_LAST_UPDATED'
12693             || ' '
12694             || ','''
12695             || g_target_flag
12696             || ''''
12697             || ' '
12698             || ',:8'
12699             || ' '
12700             || ',:9'
12701             || ' '
12702             || ',:10'
12703             || ' '
12704             || ',CONTAINER'
12705             || ' '
12706             || ',PAGE_LAYOUT'
12707             || ' '
12708             || ',disabled_flag'
12709             || ' '
12710             || 'FROM  cz_model_publications'
12711             || ' '
12712             || 'WHERE publication_id = :11 ';
12713 
12714          EXECUTE IMMEDIATE v_inst_str
12715                      USING p_new_publication_id
12716                           ,p_model_id
12717                           ,p_model_id
12718                           ,cz_pb_mgr.v_bomsynch_org_id
12719                           ,cz_pb_mgr.v_bomsynch_item_id
12720                           ,cz_pb_mgr.v_bomsynch_product_key
12721                           ,p_ui_def_id
12722                           ,p_old_publication_id
12723                           ,cz_pb_mgr.v_root_ui_def_id
12724                           ,cz_pb_mgr.v_root_model_id
12725                           ,p_old_publication_id;
12726 
12727          ---------update remote_publication on the source
12728          IF (p_insert_flag = 'REPUBLISH')
12729          THEN
12730             UPDATE cz_model_publications
12731                SET remote_publication_id = p_new_publication_id
12732              WHERE publication_id = cz_pb_mgr.v_cz_model_pub_old_id;
12733          ELSIF(p_insert_flag = 'NEW')
12734          THEN
12735             UPDATE cz_model_publications
12736                SET remote_publication_id = p_new_publication_id
12737              WHERE publication_id = p_old_publication_id;
12738          END IF;
12739 
12740          ------update for republish_model api
12741          IF (cz_pb_mgr.v_republish_model = new_copy_mode)
12742          THEN
12743             EXECUTE IMMEDIATE    'UPDATE cz_model_publications'
12744                               || p_link
12745                               || '   t '
12746                               || ' '
12747                               || 'SET    t.applicable_from  = :1,'
12748                               || ' '
12749                               || 't.applicable_until = :2'
12750                               || ' '
12751                               || 'WHERE   t.publication_id   = :3 '
12752                         USING v_repub_appl_from, v_repub_appl_until, v_repub_remote_pb_id;
12753          END IF;
12754 
12755          EXECUTE IMMEDIATE 'UPDATE cz_devl_projects set checkout_user = NULL ' || ' ' || 'WHERE  devl_project_id = ' || NVL(p_model_id, 0);
12756       END IF;
12757 
12758       COMMIT;
12759    EXCEPTION
12760       WHEN OTHERS
12761       THEN
12762          cz_pb_mgr.v_err_message := 'Error in inserting target publication for source publication id: ' || p_old_publication_id || ' : ' || SQLERRM;
12763          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
12764          x_status := PUBLICATION_ERROR;
12765          RAISE;
12766    END insert_tgt_publication;
12767 
12768 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12769 -----procedure that inserts publication applicability parameters on the target instance
12770    PROCEDURE insert_pb_parameters(
12774      ,p_db_link IN VARCHAR2
12771       p_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12772      ,p_old_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12773      ,p_session_parameter IN OUT NOCOPY VARCHAR2
12775      ,x_status IN OUT NOCOPY VARCHAR2
12776    )
12777    AS
12778    BEGIN
12779       IF (x_status <> PUBLICATION_ERROR) AND(p_session_parameter <> model_copy)
12780       THEN
12781          ---------------- insert the fields of cz_pb_client_apps
12782          cz_pb_mgr.v_insert_string :='INSERT INTO cz_pb_client_apps'||p_db_link  || ' ' ||
12783 						'(PUBLICATION_ID,FND_APPLICATION_ID,APPLICATION_SHORT_NAME,NOTES)' || ' ' ||
12784 					  'SELECT '||p_new_publication_id||',t.APPLICATION_ID,t.APPLICATION_SHORT_NAME,NOTES' || ' ' ||
12785 					  'FROM  cz_pb_client_apps,fnd_application' ||p_db_link|| ' ' ||
12786 	 				  't WHERE cz_pb_client_apps.publication_id = :1'  || ' ' ||
12787 	 				  'and cz_pb_client_apps.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME';
12788 		EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12789 
12790          COMMIT;
12791          ----------insert the fields of cz_publication_usages
12792          cz_pb_mgr.v_insert_string :=
12793                'INSERT INTO cz_publication_usages'
12794             || p_db_link
12795             || ' '
12796             || '(PUBLICATION_ID,USAGE_ID)'
12797             || ' '
12798             || 'SELECT  '
12799             || p_new_publication_id
12800             || ',USAGE_ID'
12801             || ' '
12802             || 'FROM  cz_publication_usages'
12803             || ' '
12804 	    || 'WHERE publication_id = :1';
12805 
12806 	 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12807 
12808 
12809          COMMIT;
12810          ---------------- insert the fields of cz_pb_languages
12811          cz_pb_mgr.v_insert_string :=
12812                'INSERT INTO cz_pb_languages'
12813             || p_db_link
12814             || ' '
12815             || '(PUBLICATION_ID,LANGUAGE)'
12816             || ' '
12817             || 'SELECT '
12818             || p_new_publication_id
12819             || ',LANGUAGE'
12820             || ' '
12821             || 'FROM  cz_pb_languages'
12822             || ' '
12823 	    ||	'WHERE cz_pb_languages.publication_id = :1';
12824 
12825 	 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12826 
12827          COMMIT;
12828       END IF;                                                    /* end if of x_status <> PUBLICATION_ERROR) AND (p_session_parameter <> MODEL_COPY */
12829    EXCEPTION
12830       WHEN OTHERS
12831       THEN
12832          cz_pb_mgr.v_err_message :=
12833             'Error in inserting publication parameters on the target instance for source publication id: ' || p_old_publication_id || ' : '
12834             || SQLERRM;
12835          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
12836          x_status := PUBLICATION_ERROR;
12837          RAISE;
12838    END insert_pb_parameters;
12839 
12840 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12841    PROCEDURE insert_devl_projects(
12842       p_new_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12843      ,p_old_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12844      ,p_orig_sys_ref IN OUT NOCOPY cz_devl_projects.orig_sys_ref%TYPE
12845      ,x_status IN OUT NOCOPY VARCHAR2
12846    )
12847    AS
12848       l_sql_query VARCHAR2(32000);
12849    BEGIN
12850       IF (x_status <> PUBLICATION_ERROR)
12851       THEN
12852          cz_pb_mgr.v_devl_orig_sys_ref := NULL;
12853          cz_pb_mgr.l_intl_text_id_tbl.DELETE;
12854          cz_pb_mgr.l_bom_caption_rule_tbl.DELETE;
12855          cz_pb_mgr.l_nonbom_caption_rule_tbl.DELETE;
12856          cz_pb_mgr.l_bom_caption_rule := 0;
12857          cz_pb_mgr.l_nonbom_capt_rule_id := 0;
12858          l_devl_proj_inv_id := NULL;
12859          l_devl_proj_org_id := NULL;
12860          l_devl_proj_product_key := NULL;
12861          l_bom_caption_text_id := 0;
12862          l_nonbom_caption_text_id := 0;
12863 
12864          SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_origsysref(orig_sys_ref), orig_sys_ref), bom_caption_rule_id
12865                ,nonbom_caption_rule_id, DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_invid(inventory_item_id), inventory_item_id)
12866                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_orgid(organization_id), organization_id)
12867                ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_productkey(product_key), product_key), bom_caption_text_id
12868                ,nonbom_caption_text_id
12869            INTO cz_pb_mgr.v_devl_orig_sys_ref, cz_pb_mgr.l_bom_caption_rule
12870                ,cz_pb_mgr.l_nonbom_capt_rule_id, cz_pb_mgr.l_devl_proj_inv_id
12871                ,cz_pb_mgr.l_devl_proj_org_id
12872                ,cz_pb_mgr.l_devl_proj_product_key, cz_pb_mgr.l_bom_caption_text_id
12873                ,cz_pb_mgr.l_nonbom_caption_text_id
12874            FROM cz_devl_projects
12875           WHERE cz_devl_projects.devl_project_id = p_old_model_id;
12876 
12877          IF (cz_pb_mgr.l_bom_caption_text_id <> 0)
12878          THEN
12879             cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_bom_caption_text_id;
12880             insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'bom capt text of cz_devl_projects');
12881             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');
12882             cz_pb_mgr.l_bom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
12883          ELSE
12884             cz_pb_mgr.l_bom_caption_text_id := NULL;
12888          THEN
12885          END IF;
12886 
12887          IF (cz_pb_mgr.l_nonbom_caption_text_id <> 0)
12889             cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_nonbom_caption_text_id;
12890             insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'non bom capt text of cz_devl_projects');
12891             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');
12892             cz_pb_mgr.l_nonbom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
12893          ELSE
12894             cz_pb_mgr.l_nonbom_caption_text_id := NULL;
12895          END IF;
12896 
12897          IF (cz_pb_mgr.l_bom_caption_rule <> 0)
12898          THEN
12899             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);
12900          ELSE
12901             cz_pb_mgr.l_bom_caption_rule := NULL;
12902          END IF;
12903 
12904          IF (cz_pb_mgr.l_nonbom_capt_rule_id <> 0)
12905          THEN
12906             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);
12907          ELSE
12908             cz_pb_mgr.l_nonbom_capt_rule_id := NULL;
12909          END IF;
12910 
12911          l_sql_query :=
12912                'BEGIN  INSERT INTO cz_devl_projects'
12913             || cz_pb_mgr.v_db_link
12914             || '(DEVL_PROJECT_ID'
12915             || ' '
12916             || ',NAME,VERSION,DESC_TEXT,ORIG_SYS_REF,PUBLISHED,LAST_STRUCT_UPDATE'
12917             || ' '
12918             || ',UI_TIMESTAMP_STRUCT_UPDATE'
12919             || ' '
12920             || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
12921             || ' '
12922             || ',MODEL_TYPE,bom_caption_rule_id,nonbom_caption_rule_id'
12923             || ' '
12924             || ',organization_id,inventory_item_id,product_key'
12925             || ' '
12926             || ',bom_caption_text_id,nonbom_caption_text_id,POST_MIGR_CHANGE_FLAG,config_engine_type)'
12927             || ' '
12928             || 'SELECT :1'
12929             || ' '
12930             || ',NAME,VERSION,DESC_TEXT,:2,PUBLISHED,LAST_STRUCT_UPDATE'
12931             || ' '
12932             || ',UI_TIMESTAMP_STRUCT_UPDATE'
12933             || ' '
12934             || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
12935             || ' '
12936             || ',MODEL_TYPE,:3,:4'
12937             || ' '
12938             || ',:5,:6,:7'
12939             || ' '
12940             || ',:8,:9,POST_MIGR_CHANGE_FLAG,config_engine_type'
12941             || ' '
12942             || 'FROM cz_devl_projects'
12943             || ' '
12944             || 'WHERE cz_devl_projects.devl_project_id = '
12945             || TO_CHAR(p_old_model_id)
12946             || '; END; ';
12947 
12948          EXECUTE IMMEDIATE l_sql_query
12949                      USING p_new_model_id
12950                           ,cz_pb_mgr.v_devl_orig_sys_ref
12951                           ,cz_pb_mgr.l_bom_caption_rule
12952                           ,cz_pb_mgr.l_nonbom_capt_rule_id
12953                           ,cz_pb_mgr.l_devl_proj_org_id
12954                           ,cz_pb_mgr.l_devl_proj_inv_id
12955                           ,cz_pb_mgr.l_devl_proj_product_key
12956                           ,cz_pb_mgr.l_bom_caption_text_id
12957                           ,cz_pb_mgr.l_nonbom_caption_text_id;
12958       END IF;
12959 
12960       COMMIT;
12961    EXCEPTION
12962       WHEN OTHERS
12963       THEN
12964          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_devl_projects', 'SQLERRM', SQLERRM);
12965          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
12966          x_status := PUBLICATION_ERROR;
12967          RAISE;
12968    END insert_devl_projects;
12969 
12970 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12971 ---------procedure retrieves the value of sequence incrementor
12972    PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE)
12973    AS
12974    BEGIN
12975       SELECT VALUE
12976         INTO x_oraclesequenceincr
12977         FROM cz_db_settings
12978        WHERE cz_db_settings.setting_id = sequence_incr_str;
12979    EXCEPTION
12980       WHEN OTHERS
12981       THEN
12982          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_INCR');
12983          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SEQINCR', SQLCODE);
12984          x_oraclesequenceincr := 20;
12985    END;
12986 
12987 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12988 -----procedure retrieves copy rules flag
12989    PROCEDURE get_copy_rules_flg(x_copyrules IN OUT NOCOPY VARCHAR2)
12990    AS
12991    BEGIN
12992       IF (cz_pb_mgr.v_session_parameter = pub_model)
12993       THEN
12994          SELECT VALUE
12995            INTO x_copyrules
12996            FROM cz_db_settings
12997           WHERE cz_db_settings.setting_id = rule_copy;
12998       ELSE
12999          x_copyrules := copy_rules;
13000       END IF;
13001    EXCEPTION
13002       WHEN OTHERS
13003       THEN
13004          x_copyrules := 'YES';
13005    END;
13006 
13007 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13008 -----procedure that uploads publication data
13009 ----@p_publication_id : publication request id on the source database
13010    PROCEDURE upload_publication_data(p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE)
13011    AS
13015       v_prev_export_status cz_model_publications.export_status%TYPE;
13012       v_new_ui_def_id cz_model_publications.ui_def_id%TYPE;
13013       v_remote_model cz_model_publications.model_id%TYPE;
13014       v_prev_publication_id cz_model_publications.publication_id%TYPE;
13016    BEGIN
13017       pbdebug := 22036;
13018       -------------update the status in cz_model_publications and model exports
13019       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);
13020       ------------get new publication id for the target publication
13021       get_new_publication_id(p_publication_id
13022                             ,cz_pb_mgr.v_cz_model_pub_old_id
13023                             ,cz_pb_mgr.v_cz_model_pub_new_id
13024                             ,cz_pb_mgr.remote_publication_id
13025                             ,cz_pb_mgr.v_status_code
13026                             );
13027       ------get new ui_def_id for the target publication
13028       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);
13029 
13030       -------get model id for target publication
13031       IF (g_object_type = MODEL_PUBLICATION) THEN
13032          get_new_model_id(p_publication_id, v_models_to_be_exported_new, v_remote_model, cz_pb_mgr.v_status_code);
13033       ELSE -- not supported
13034         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);
13035       END IF;
13036 
13037       -----------get previous publication id and status
13038       get_prev_publication(cz_pb_mgr.v_ui_str
13039                           ,cz_pb_mgr.v_session_parameter
13040                           ,cz_pb_mgr.remote_publication_id
13041                           ,v_prev_publication_id
13042                           ,v_prev_export_status
13043                           ,cz_pb_mgr.v_prev_remote_publication_id
13044                           ,cz_pb_mgr.v_status_code
13045                           );
13046       --------insert the new publication into cz_model_publications table of the target db
13047       insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
13048                             ,cz_pb_mgr.v_cz_model_pub_old_id
13049                             ,v_remote_model
13050                             ,v_new_ui_def_id
13051                             ,cz_pb_mgr.v_db_link
13052                             ,'NEW'
13053                             ,cz_pb_mgr.v_status_code
13054                             );
13055 
13056       ---------------- insert applicability parameters for tgt publication
13057       IF (g_object_type = MODEL_PUBLICATION)
13058       THEN
13059          insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
13060                              ,cz_pb_mgr.v_cz_model_pub_old_id
13061                              ,cz_pb_mgr.v_session_parameter
13062                              ,cz_pb_mgr.v_db_link
13063                              ,cz_pb_mgr.v_status_code
13064                              );
13065       END IF;
13066 
13067       ------reset status to the original if a re-publish fails
13068       IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP')
13069       THEN
13070          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
13071          THEN
13072             UPDATE cz_model_publications
13073                SET export_status = 'OK'
13074              WHERE publication_id = v_prev_publication_id;
13075          ELSE
13076             UPDATE cz_model_publications
13077                SET deleted_flag = '1'
13078                   ,export_status = 'OK'
13079              WHERE publication_id = v_prev_publication_id;
13080 
13081             EXECUTE IMMEDIATE    'BEGIN'
13082                               || ' '
13083                               || 'UPDATE cz_model_publications'
13084                               || cz_pb_mgr.v_db_link
13085                               || ' '
13086                               || ' '
13087                               || 'SET deleted_flag = ''1'','
13088                               || ' '
13089                               || 'export_status = ''OK'''
13090                               || ' '
13091                               || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
13092                               || ' '
13093                               || 'END;';
13094          END IF;
13095       END IF;
13096    EXCEPTION
13097       WHEN OTHERS
13098       THEN
13099          cz_pb_mgr.v_err_message := 'Error in upload of PUBLICATION schema for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
13100          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
13101          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13102          RAISE;
13103    END;                                                                                                      /* end of upload of publication schema */
13104 
13105 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13106 --Functions used for resolving effectuve usage mask
13107    FUNCTION hextodec(hexnum IN CHAR)
13108       RETURN NUMBER
13109    IS
13110       x NUMBER;
13111       digits NUMBER;
13112       RESULT NUMBER := 0;
13113       current_digit CHAR(1);
13114       current_digit_dec NUMBER;
13115    BEGIN
13116       digits := LENGTH(hexnum);
13117 
13118       FOR x IN 1 .. digits
13119       LOOP
13120          current_digit := SUBSTR(hexnum, x, 1);
13121 
13122          IF current_digit IN('A', 'B', 'C', 'D', 'E', 'F')
13123          THEN
13127          END IF;
13124             current_digit_dec := ASCII(current_digit) - ASCII('A') + 10;
13125          ELSE
13126             current_digit_dec := TO_NUMBER(current_digit);
13128 
13129          RESULT := (RESULT * 16) + current_digit_dec;
13130       END LOOP;
13131 
13132       RETURN RESULT;
13133    END hextodec;
13134 
13135 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13136    FUNCTION hextobinary(hexnum IN CHAR)
13137       RETURN VARCHAR2
13138    IS
13139       RESULT VARCHAR2(4) := '';
13140       current_digit_dec NUMBER;
13141    BEGIN
13142       IF hexnum IN('A', 'B', 'C', 'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f')
13143       THEN
13144          current_digit_dec := ASCII(UPPER(hexnum)) - ASCII('A') + 10;
13145       ELSE
13146          current_digit_dec := TO_NUMBER(hexnum);
13147       END IF;
13148 
13149       LOOP
13150          RESULT := TO_CHAR(MOD(current_digit_dec, 2)) || RESULT;
13151          current_digit_dec := TRUNC(current_digit_dec / 2);
13152          EXIT WHEN(current_digit_dec < 1);
13153       END LOOP;
13154 
13155       RESULT := LPAD(RESULT, 4, '0');
13156       RETURN RESULT;
13157    END hextobinary;
13158 
13159 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13160    FUNCTION power_func(p_power IN NUMBER)
13161       RETURN NUMBER
13162    IS
13163       RESULT NUMBER := 1;
13164    BEGIN
13165       FOR x IN 1 .. p_power
13166       LOOP
13167          RESULT := RESULT * 2;
13168       END LOOP;
13169 
13170       RETURN RESULT;
13171    END;
13172 
13173 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13174    PROCEDURE getUsgNameArray(usagemap VARCHAR2, p_old_usage_name_to_id_map IN OUT NOCOPY cz_pb_mgr.t_usage_name)
13175    AS
13176       l_str VARCHAR2(1) := '';
13177       l_length NUMBER;
13178       l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
13179       l_bits VARCHAR2(64) := '';
13180       current_digit VARCHAR2(1);
13181       l_length1 NUMBER;
13182       l_cnt NUMBER := 0;
13183       l_name VARCHAR2(2000);
13184       l_id NUMBER;
13185    BEGIN
13186       l_length := LENGTH(usagemap);
13187 
13188       FOR i IN 1 .. l_length
13189       LOOP
13190          current_digit := SUBSTR(usagemap, i, 1);
13191          l_length1 := LENGTH(l_bits);
13192          l_bits := l_bits || hextobinary(current_digit);
13193       END LOOP;
13194 
13195       l_length := LENGTH(l_bits);
13196 
13197       FOR i IN 1 .. l_length
13198       LOOP
13199          l_str := SUBSTR(l_bits, -i, 1);
13200 
13201          IF (TO_NUMBER(l_str) = 1)
13202          THEN
13203             SELECT NAME, model_usage_id
13204               INTO l_name, l_id
13205               FROM cz_model_usages
13206              WHERE model_usage_id = l_cnt;
13207 
13208             p_old_usage_name_to_id_map(l_cnt) := l_name;
13209          END IF;
13210 
13211          l_cnt := l_cnt + 1;
13212       END LOOP;
13213    END getUsgNameArray;
13214 
13215 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13216    PROCEDURE buildusagemask(usageid IN NUMBER, usagemask IN OUT NOCOPY VARCHAR2)
13217    AS
13218       l_str VARCHAR2(255) DEFAULT NULL;
13219       l_num NUMBER;
13220       l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
13221    BEGIN
13222       l_num := hextodec(usagemask) + power_func(usageid);
13223 
13224       LOOP
13225          l_str := SUBSTR(l_hex, MOD(l_num, 16) + 1, 1) || l_str;
13226          l_num := TRUNC(l_num / 16);
13227          EXIT WHEN(l_num = 0);
13228       END LOOP;
13229 
13230       usagemask := LPAD(l_str, 16, '0');
13231    END buildusagemask;
13232 
13233 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13234 --procedure to resolve effective usage mask for ps nodes and rules.
13235 --Bug #5485126 - p_rules_flag should be 1 when the procedure is called for rules.
13236 
13237    PROCEDURE resolve_effective_usage_mask(p_id_to_eff_usg_msk IN t_ref, p_rules_flag IN PLS_INTEGER)
13238    AS
13239       remote_usage ref_cursor;
13240       avail_usage_cur ref_cursor;
13241       -- We start with default mask.
13242       l_previous_mask VARCHAR2(16) := v_default_eff_usg_mask;
13243       l_avail_usage_id NUMBER;
13244       l_effective_usage VARCHAR2(2000);
13245       usageid NUMBER;
13246       l_usage_id cz_model_usages.model_usage_id%TYPE;
13247       l_usage_name cz_model_usages.NAME%TYPE;
13248       l_usage_desc cz_model_usages.description%TYPE;
13249       l_index_ps_to_eff NUMBER;
13250       l_index_usage_name_to_id NUMBER;
13251       l_count NUMBER;
13252       rec_count NUMBER := 0;
13253       l_str VARCHAR2(2000);
13254    BEGIN
13255       IF(p_rules_flag = 1)THEN
13256         cz_pb_mgr.v_new_rul_usg_msk_tbl.DELETE;
13257       ELSE
13258         cz_pb_mgr.v_new_eff_usg_msk_tbl.DELETE;
13259       END IF;
13260 
13261       IF (p_id_to_eff_usg_msk.COUNT > 0)
13262       THEN
13263          FOR eff IN p_id_to_eff_usg_msk.FIRST .. p_id_to_eff_usg_msk.LAST
13264          LOOP
13265             rec_count := rec_count + 1;
13266 
13267             --Bug #5485126 - if the p_rules_flag is set, use the rule usage mask array.
13268 
13269             IF(p_rules_flag = 1)THEN
13270 
13271                l_effective_usage := cz_pb_mgr.v_cz_rule_usage_mask_tbl(eff);
13272             ELSE
13273 
13274                l_effective_usage := cz_pb_mgr.v_cz_effective_usage_mask_tbl(eff);
13275             END IF;
13276 
13277             IF (l_effective_usage <> v_default_eff_usg_mask)
13278             THEN
13282                WHILE(l_index_usage_name_to_id IS NOT NULL)
13279                getUsgNameArray(l_effective_usage, cz_pb_mgr.v_old_usage_name_to_id_map);
13280                l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.FIRST;
13281 
13283                LOOP
13284                   l_usage_name := cz_pb_mgr.v_old_usage_name_to_id_map(l_index_usage_name_to_id);
13285                   l_usage_id := NULL;
13286                   l_usage_desc := NULL;
13287                   -- At this point we will check if the usage is already been processed
13288 				  -- we will maintain two arrays
13289 				  -- 1. having list of all the usage name processed
13290 				  -- 2. usage name to new remote usage id that is commited.
13291 		          IF (cz_pb_mgr.g_usg_name_processed.COUNT = 0 OR (NOT cz_pb_mgr.g_usg_name_processed.EXISTS(l_usage_name))) THEN
13292                     OPEN remote_usage FOR    'Select model_usage_id, name, description '
13293                                           || ' '
13294                                           || 'from cz_model_usages'
13295                                           || cz_pb_mgr.v_db_link
13296                                           || ' t'
13297                                           || ' '
13298                                           || 'where t.name = :1' USING l_usage_name;
13299 
13300                     FETCH remote_usage
13301                      INTO l_usage_id, l_usage_name, l_usage_desc;
13302 
13303                     IF (l_usage_id IS NULL)
13304                     THEN
13305                        OPEN avail_usage_cur FOR 'select min(model_usage_id) from cz_model_usages' || cz_pb_mgr.v_db_link || 'where in_use=''X''';
13306 
13307                        FETCH avail_usage_cur
13308                         INTO l_avail_usage_id;
13309 
13310                        IF (l_avail_usage_id is null)
13311                        THEN
13312                           --Raise migration failure.
13313                           --Proposed: Usage Limit maxed out during the migration process.
13314                           cz_pb_mgr.v_err_message :=
13315                                                   cz_utils.get_text('CZDEV_MAX_USAGES_CREATED_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
13316                           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.resolve_effective_usage_mask', SQLCODE);
13317                           cz_pb_mgr.v_status_code := 0;                                                                             -- MIGRATION_ERROR;
13318                           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
13319                           RAISE NO_DATA_FOUND;
13320                        ELSE
13321                           l_usage_id := l_avail_usage_id;
13322                           --Insert into cz_model_usages, use execute immediate
13323                           l_str :=
13324                                 'update cz_model_usages'
13325                              || cz_pb_mgr.v_db_link
13326                              || ' '
13327                              || 'set name = :1,'
13328                              || ' '
13329                              || 'description = :2,'
13330                              || ' '
13331                              || 'in_use = ''1'' '
13332                              || ' '
13333                              || 'where model_usage_id = :3';
13334 
13335                           EXECUTE IMMEDIATE l_str
13336                                       USING l_usage_name, l_usage_desc, l_avail_usage_id;
13337 
13338                           ----------insert into cz_rp_entries
13339                           l_str :=
13340                                 'BEGIN
13341                         	insert into cz_rp_entries'
13342                              || cz_pb_mgr.v_db_link
13343                              || ' ( OBJECT_TYPE'
13344                              || ' '
13345                              || ',OBJECT_ID'
13346                              || ' '
13347                              || ',ENCLOSING_FOLDER'
13348                              || ' '
13349                              || ',NAME'
13350                              || ' '
13351                              || ',DESCRIPTION'
13352                              || ' '
13353                              || ',DELETED_FLAG'
13354                              || ' '
13355                              || ',SEEDED_FLAG'
13356                              || ' '
13357                              || ')'
13358                              || ' '
13359                              || 'VALUES ( ''USG'' '
13360                              || ' '
13361                              || ',:1'
13362                              || ' '
13363                              || ',:2'
13364                              || ' '
13365                              || ',:3'
13366                              || ' '
13367                              || ',:4'
13368                              || ' '
13369                              || ',''0'' '
13370                              || ' '
13371                              || ',''0'');'
13372                              || ' '
13373                              || 'commit;'
13374                              || ' '
13375                              || 'EXCEPTION'
13376                              || ' '
13377                              || 'WHEN OTHERS THEN'
13378                              || ' '
13379                              || 'update cz_rp_entries set deleted_flag = ''0'' where object_id = :1;'
13380                              || ' '
13381                              || 'END;';
13382 
13383                           EXECUTE IMMEDIATE l_str
13387                        END IF;
13384                                       USING l_avail_usage_id, cz_pb_mgr.g_migration_tgt_folder_id, l_usage_name, l_usage_desc;
13385 
13386                           COMMIT;
13388                      END IF;
13389 		     cz_pb_mgr.g_usg_name_processed(l_usage_name) := l_usage_id;
13390 		  END IF;
13391                   l_usage_id := cz_pb_mgr.g_usg_name_processed(l_usage_name);
13392                   buildusagemask(l_usage_id, l_previous_mask);
13393                   l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.NEXT(l_index_usage_name_to_id);
13394                END LOOP;
13395 
13396                IF(p_rules_flag = 1)THEN
13397                   cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := l_previous_mask;
13398                ELSE
13399                   cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := l_previous_mask;
13400                END IF;
13401 
13402                --Add the new usage mask to the array_of_resolved_mask  against the new ps_node_ids.
13403                l_previous_mask := v_default_eff_usg_mask;
13404                cz_pb_mgr.v_old_usage_name_to_id_map.DELETE;
13405             ELSE
13406                IF(p_rules_flag = 1)THEN
13407                  cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
13408                ELSE
13409                  cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
13410                END IF;
13411             END IF;
13412          END LOOP;
13413       END IF;
13414    END resolve_effective_usage_mask;
13415 
13416 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13417 ------procedure to upload ps structure tree
13418    PROCEDURE upload_ps_structure(
13419       p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref
13420      ,p_export_flag IN OUT NOCOPY VARCHAR2
13421      ,x_status IN OUT NOCOPY VARCHAR2
13422    )
13423    AS
13424       v_project_count PLS_INTEGER := 0;
13425       rec_count PLS_INTEGER := 0;
13426       v_cz_model_ref_expls_new_tbl cz_pb_mgr.t_ref;
13427       v_cz_model_ref_expls_old_tbl cz_pb_mgr.t_ref;
13428       plsql_table_list cz_pb_mgr.col_plsql_table_list;
13429    BEGIN
13430       pbdebug := 22037;
13431 
13432       ----logging process times
13433       IF (cz_pb_mgr.g_log_timing = publication_timing)
13434       THEN
13435          log_timing_message('start bulk collect of psnodes');
13436       END IF;
13437 
13438       -- if model migration, the collection of ps_nodes related stuff has already happened
13439       -- before, so don't redo this.
13440       -- IF (p_models_for_export.COUNT > 0) THEN
13441       --   bulk collect of psnodes moved to mm_loadoldpsnodesforitems() ...
13442       -- END IF; -- end if of p_models_for_export > 0
13443       IF (cz_pb_mgr.g_log_timing = publication_timing)
13444       THEN
13445          log_timing_message('end bulk collect of psnodes');
13446          log_timing_message('start insert_eff_sets');
13447       END IF;
13448 
13449       -------------populate effectivity sets table
13450       insert_eff_sets(cz_pb_mgr.v_ps_eff_set_id_tbl
13451                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
13452                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
13453                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
13454                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
13455                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
13456                      ,'Eff sets of ps nodes'
13457                      );
13458       ------clear_tables('cz_rules','ref',cz_pb_mgr.v_status_code);
13459       -----bulk collect old and new rule ids
13460       bulk_collect_rules(p_export_flag
13461                         ,cz_pb_mgr.v_models_to_be_exported
13462                         ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
13463                         ,cz_pb_mgr.v_cz_rules_rule_id_new_ref
13464                         ,cz_pb_mgr.v_cz_rules_rule_id_idx_ref
13465                         ,cz_pb_mgr.v_status_code
13466                         );
13467 
13468       IF (cz_pb_mgr.g_log_timing = publication_timing)
13469       THEN
13470          log_timing_message('end insert_eff_sets');
13471          log_timing_message('start eff sets of ps nodes');
13472       END IF;
13473 
13474       -- resolve effective usage mask for rules
13475       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13476       THEN
13477          resolve_effective_usage_mask(cz_pb_mgr.v_cz_rules_rule_id_old_ref, 1);
13478       END IF;
13479 
13480       ---------resolve eff sets
13481       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');
13482 
13483       IF (cz_pb_mgr.g_log_timing = publication_timing)
13484       THEN
13485          log_timing_message('end eff sets of ps nodes');
13486       END IF;
13487 
13488       -------------insert intl texts for cz_ps_nodes
13489       IF (cz_pb_mgr.g_log_timing = publication_timing)
13490       THEN
13491          log_timing_message('start insert_intl_texts Intl Text of ps nodes');
13492       END IF;
13493 
13494       insert_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, 'Intl Text of ps nodes');
13495 
13496       IF (cz_pb_mgr.g_log_timing = publication_timing)
13497       THEN
13498          log_timing_message('end insert_intl_texts Intl Text of ps nodes');
13499       END IF;
13500 
13501       IF (cz_pb_mgr.g_log_timing = publication_timing)
13502       THEN
13503          log_timing_message('start Intl Text of ps nodes');
13504       END IF;
13505 
13506       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');
13507 
13511       END IF;
13508       IF (cz_pb_mgr.g_log_timing = publication_timing)
13509       THEN
13510          log_timing_message('end Intl Text of ps nodes');
13512 
13513       -----insert violation text ids
13514       IF (cz_pb_mgr.g_log_timing = publication_timing)
13515       THEN
13516          log_timing_message('start insert_intl_texts Violation text of ps nodes');
13517       END IF;
13518 
13519       insert_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, 'Violation text of ps nodes');
13520 
13521       IF (cz_pb_mgr.g_log_timing = publication_timing)
13522       THEN
13523          log_timing_message('end insert_intl_texts Violation text of ps nodes');
13524       END IF;
13525 
13526       -------resolve violation text ids
13527       IF (cz_pb_mgr.g_log_timing = publication_timing)
13528       THEN
13529          log_timing_message('start resolve_intl_texts Violation text of ps nodes');
13530       END IF;
13531 
13532       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');
13533 
13534       IF (cz_pb_mgr.g_log_timing = publication_timing)
13535       THEN
13536          log_timing_message('end resolve_intl_texts Violation text of ps nodes');
13537       END IF;
13538 
13539       -------resolve rule ids
13540       IF (cz_pb_mgr.g_log_timing = publication_timing)
13541       THEN
13542          log_timing_message('start resolve caption rule ids in ps nodes');
13543       END IF;
13544 
13545       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');
13546 
13547       IF (cz_pb_mgr.g_log_timing = publication_timing)
13548       THEN
13549          log_timing_message('end resolve resolve caption rule ids in ps nodes');
13550       END IF;
13551 
13552       ------------Resolving ps_ref_id of cz ps nodes
13553       IF (cz_pb_mgr.g_log_timing = publication_timing)
13554       THEN
13555          log_timing_message('start resolve_ids ps_ref_id of cz ps nodes');
13556       END IF;
13557 
13558       -- non-exported psnodes actually loaded and put into the map too, so it would be better to load them early too
13559       -- then no special treatment needed for reference_id, component_id, etc
13560       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);
13561 
13562       IF (cz_pb_mgr.g_log_timing = publication_timing)
13563       THEN
13564          log_timing_message('end resolve_ids ps_ref_id of cz ps nodes');
13565       END IF;
13566 
13567       ------------Resolving component -ids of ps_nodes
13568       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);
13569 
13570       -- resolve effective usage mask for ps nodes.
13571       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13572       THEN
13573          resolve_effective_usage_mask(cz_pb_mgr.v_cz_ps_nodes_old_tbl, 0);
13574       END IF;
13575 
13576       -- to verify: the model referred by reverse connector id would always be reexported regardless of having any
13577       -- change or not, if the model having the reverse connector is exported?
13578       -- otherwise, we need to implement resolver_ref_ids_not_found for this column and call that instead
13579       resolve_ids(cz_pb_mgr.g_ps_reverse_connector_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'psn reverse_connector_id');
13580 
13581       plsql_table_list.DELETE;
13582       rec_count := 1;
13583       plsql_table_list(rec_count).col_name := 'ps_node_id';
13584       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_new_tbl';
13585       rec_count := rec_count + 1;
13586       plsql_table_list(rec_count).col_name := 'devl_project_id';
13587       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_devl_project_tbl';
13588       rec_count := rec_count + 1;
13589       plsql_table_list(rec_count).col_name := 'parent_id';
13590       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_parent_id_tbl';
13591       rec_count := rec_count + 1;
13592       plsql_table_list(rec_count).col_name := 'reference_id';
13593       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_refId_old_tbl';
13594       rec_count := rec_count + 1;
13595       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_eff_set_id_tbl';
13596       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
13597       rec_count := rec_count + 1;
13598       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_intl_old_tbl';
13599       plsql_table_list(rec_count).col_name := 'intl_text_id';
13600       rec_count := rec_count + 1;
13601       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_viol_old_tbl';
13602       plsql_table_list(rec_count).col_name := 'violation_text_id';
13603       rec_count := rec_count + 1;
13604       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_orig_sys_tbl';
13605       plsql_table_list(rec_count).col_name := 'orig_sys_ref';
13606       rec_count := rec_count + 1;
13607       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_path_tbl';
13608       plsql_table_list(rec_count).col_name := 'component_sequence_path';
13609       rec_count := rec_count + 1;
13610       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_id_tbl';
13611       plsql_table_list(rec_count).col_name := 'component_sequence_id';
13612       rec_count := rec_count + 1;
13613       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_capt_rule_tbl';
13614       plsql_table_list(rec_count).col_name := 'displayname_capt_rule_id';
13615       rec_count := rec_count + 1;
13619       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_uits_add_tbl';
13616       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_comp_tbl';
13617       plsql_table_list(rec_count).col_name := 'component_id';
13618       rec_count := rec_count + 1;
13620       plsql_table_list(rec_count).col_name := 'UI_TIMESTAMP_ADD';
13621 
13622       rec_count := rec_count + 1;
13623       plsql_table_list(rec_count).col_name := 'reverse_connector_id';
13624       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_reverse_connector_tbl';
13625 
13626       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13627       THEN
13628          rec_count := rec_count + 1;
13629          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_eff_usg_msk_tbl';
13630          plsql_table_list(rec_count).col_name := 'effective_usage_mask';
13631          mm_resync_ps_items;
13632          rec_count := rec_count + 1;
13633          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_id_tbl';
13634          plsql_table_list(rec_count).col_name := 'item_id';
13635       END IF;
13636 
13637       IF (cz_pb_mgr.g_log_timing = publication_timing)
13638       THEN
13639          log_timing_message('start insert_into_table of cz ps nodes');
13640       END IF;
13641 
13642       insert_into_table('cz_ps_nodes'
13643                        ,'ps_node_id'
13644                        ,cz_pb_mgr.v_db_link
13645                        ,plsql_table_list
13646                        ,'cz_pb_mgr.v_cz_ps_nodes_old_tbl'
13647                        ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13648                        );
13649 
13650       IF (cz_pb_mgr.g_log_timing = publication_timing)
13651       THEN
13652          log_timing_message('end insert_into_table of cz ps nodes');
13653       END IF;
13654 
13655       -----------update reference id of cz_ps_nodes of the target server for the models not exported
13656       IF (cz_pb_mgr.g_log_timing = publication_timing)
13657       THEN
13658          log_timing_message('start update_remote_reference_ids');
13659       END IF;
13660 
13661       update_remote_reference_ids(cz_pb_mgr.v_models_not_to_be_exported
13662                                  ,cz_pb_mgr.v_cz_ps_nodes_new_tbl
13663                                  ,cz_pb_mgr.v_server_id
13664                                  ,cz_pb_mgr.v_status_code
13665                                  );
13666 
13667       IF (cz_pb_mgr.g_log_timing = publication_timing)
13668       THEN
13669          log_timing_message('end update_remote_reference_ids');
13670       END IF;
13671 
13672       --------------Populating cz_model_ref_expls table of the target database
13673       clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
13674 
13675       IF (p_models_for_export.COUNT > 0)
13676       THEN
13677          IF (cz_pb_mgr.g_log_timing = publication_timing)
13678          THEN
13679             log_timing_message('start bulk collect of model_ref_expls');
13680          END IF;
13681 
13682          FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
13683          LOOP
13684             v_cz_model_ref_expls_new_tbl.DELETE;
13685             v_cz_model_ref_expls_old_tbl.DELETE;
13686             clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
13687 
13688             BEGIN
13689                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_ref_expls_seq
13690                                                  , 'cz_model_ref_expls_s.nextval' || cz_pb_mgr.v_db_link
13691                                                  ,cz_pb_mgr.v_oraclesequenceincr
13692                                                  )
13693                      ,model_ref_expl_id, component_id, parent_expl_node_id, child_model_expl_id
13694                      ,referring_node_id, model_id
13695                BULK COLLECT INTO v_cz_model_ref_expls_new_tbl
13696                      ,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
13697                      ,cz_pb_mgr.v_referring_node_id_tbl, cz_pb_mgr.v_ref_model_id_tbl
13698                  FROM cz_model_ref_expls t
13699                 WHERE t.model_id = p_models_for_export(i) AND t.deleted_flag = '0';
13700             EXCEPTION
13701                WHEN OTHERS
13702                THEN
13703                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_ref_expls', 'SQLERRM', SQLERRM);
13704                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
13705                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13706                   RAISE;
13707             END;
13708 
13709             rec_count := cz_pb_mgr.v_cz_model_ref_expls_new_ref.COUNT;
13710 
13711             IF (v_cz_model_ref_expls_new_tbl.COUNT > 0)
13712             THEN
13713                FOR k IN v_cz_model_ref_expls_new_tbl.FIRST .. v_cz_model_ref_expls_new_tbl.LAST
13714                LOOP
13715                   rec_count := rec_count + 1;
13716                   cz_pb_mgr.v_cz_model_ref_expls_new_ref(rec_count) := v_cz_model_ref_expls_new_tbl(k);
13717                   cz_pb_mgr.v_cz_model_ref_expls_old_ref(rec_count) := v_cz_model_ref_expls_old_tbl(k);
13718                   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);
13719                   cz_pb_mgr.v_component_id_old_ref(rec_count) := cz_pb_mgr.v_component_id_old_tbl(k);
13720                   cz_pb_mgr.v_parent_expl_id_ref(rec_count) := cz_pb_mgr.v_parent_expl_id_tbl(k);
13724                END LOOP;
13721                   cz_pb_mgr.v_child_expl_id_ref(rec_count) := cz_pb_mgr.v_child_expl_id_tbl(k);
13722                   cz_pb_mgr.v_referring_node_id_ref(rec_count) := cz_pb_mgr.v_referring_node_id_tbl(k);
13723                   cz_pb_mgr.v_ref_model_id_ref(rec_count) := cz_pb_mgr.v_ref_model_id_tbl(k);
13725             END IF;
13726          END LOOP;                                     /* end loop of FOR I IN p_models_for_export */
13727       END IF;                                          /* end if of p_models_for_export.COUNT > 0 */
13728 
13729       IF (cz_pb_mgr.g_log_timing = publication_timing)
13730       THEN
13731          log_timing_message('end bulk collect of model_ref_expls');
13732       END IF;
13733 
13734       ------------Resolve parent expl ids of model_ref_expls
13735       IF (cz_pb_mgr.g_log_timing = publication_timing)
13736       THEN
13737          log_timing_message('start resolve_ids parent ids of cz_model_ref_expls');
13738       END IF;
13739 
13740       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');
13741 
13742       IF (cz_pb_mgr.g_log_timing = publication_timing)
13743       THEN
13744          log_timing_message('end resolve_ids parent ids of cz_model_ref_expls');
13745       END IF;
13746 
13747       -------------resolve model id of model_ref_expls
13748       IF (cz_pb_mgr.g_log_timing = publication_timing)
13749       THEN
13750          log_timing_message('start resolve_ids model id of cz_model_ref_expls');
13751       END IF;
13752 
13753       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');
13754 
13755       IF (cz_pb_mgr.g_log_timing = publication_timing)
13756       THEN
13757          log_timing_message('end resolve_ids model id of cz_model_ref_expls');
13758       END IF;
13759 
13760       ----------resolving referring node ids of model ref expls
13761       IF (cz_pb_mgr.g_log_timing = publication_timing)
13762       THEN
13763          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
13764       END IF;
13765 
13766       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13767                                ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13768                                ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
13769                                ,cz_pb_mgr.v_referring_node_id_ref
13770                                ,'cz_model_ref_expl.referring_node_id'
13771                                ,cz_pb_mgr.v_status_code
13772                                );
13773 
13774       IF (cz_pb_mgr.g_log_timing = publication_timing)
13775       THEN
13776          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
13777       END IF;
13778 
13779       -----------resolve child expl ids
13780       IF (cz_pb_mgr.g_log_timing = publication_timing)
13781       THEN
13782          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
13783       END IF;
13784 
13785       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13786                                ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
13787                                ,cz_pb_mgr.v_cz_model_ref_expls_idx_ref
13788                                ,cz_pb_mgr.v_child_expl_id_ref
13789                                ,'cz_model_ref_expl.child_expl_id'
13790                                ,cz_pb_mgr.v_status_code
13791                                );
13792 
13793       IF (cz_pb_mgr.g_log_timing = publication_timing)
13794       THEN
13795          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
13796       END IF;
13797 
13798       ----------resolving component_id of model ref expls
13799       IF (cz_pb_mgr.g_log_timing = publication_timing)
13800       THEN
13801          log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.component_id');
13802       END IF;
13803 
13804       resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13805                                ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13806                                ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
13807                                ,cz_pb_mgr.v_component_id_old_ref
13808                                ,'cz_model_ref_expl.component_id'
13809                                ,cz_pb_mgr.v_status_code
13810                                );
13811 
13812       IF (cz_pb_mgr.g_log_timing = publication_timing)
13813       THEN
13814          log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.component_id');
13815       END IF;
13816 
13817       ----------populate target root model id
13818       IF (p_models_for_export.COUNT > 0)
13819       THEN
13820          FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
13821          LOOP
13822             IF (p_models_for_export(i) = cz_pb_mgr.v_root_model_id)
13823             THEN
13824                cz_pb_mgr.target_root_model_id := cz_pb_mgr.v_models_to_be_exported_new(i);
13825                EXIT;
13826             END IF;
13827          END LOOP;
13828       END IF;
13829 
13830       --------populate plsql_table_list for model_ref_expls
13831       plsql_table_list.DELETE;
13832       rec_count := 1;
13833       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
13834       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_model_ref_expls_new_ref';
13835       rec_count := rec_count + 1;
13836       plsql_table_list(rec_count).col_name := 'parent_expl_node_id';
13840       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_component_id_old_ref';
13837       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_parent_expl_id_ref';
13838       rec_count := rec_count + 1;
13839       plsql_table_list(rec_count).col_name := 'component_id';
13841       rec_count := rec_count + 1;
13842       plsql_table_list(rec_count).col_name := 'model_id';
13843       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ref_model_id_ref';
13844       rec_count := rec_count + 1;
13845       plsql_table_list(rec_count).col_name := 'referring_node_id';
13846       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_referring_node_id_ref';
13847       rec_count := rec_count + 1;
13848       plsql_table_list(rec_count).col_name := 'child_model_expl_id';
13849       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_child_expl_id_ref';
13850 
13851       IF (cz_pb_mgr.g_log_timing = publication_timing)
13852       THEN
13853          log_timing_message('start insert_into_table cz_model_ref_expls');
13854       END IF;
13855 
13856       insert_into_table('cz_model_ref_expls'
13857                        ,'model_ref_expl_id'
13858                        ,cz_pb_mgr.v_db_link
13859                        ,plsql_table_list
13860                        ,'cz_pb_mgr.v_cz_model_ref_expls_old_ref'
13861                        ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
13862                        );
13863 
13864       IF (cz_pb_mgr.g_log_timing = publication_timing)
13865       THEN
13866          log_timing_message('end insert_into_table cz_model_ref_expls');
13867       END IF;
13868 
13869       -----------------------resolution of non virtual components
13870       IF (cz_pb_mgr.g_log_timing = publication_timing)
13871       THEN
13872          log_timing_message('start resolve_virtual_components');
13873       END IF;
13874 
13875       resolve_virtual_components(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13876                                 ,cz_pb_mgr.v_models_not_to_be_exported
13877                                 ,cz_pb_mgr.v_server_id
13878                                 ,cz_pb_mgr.v_status_code
13879                                 );
13880 
13881       IF (cz_pb_mgr.g_log_timing = publication_timing)
13882       THEN
13883          log_timing_message('end resolve_virtual_components');
13884       END IF;
13885 
13886       -------get func comp spec by expl id
13887       IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
13888       THEN
13889          collect_func_comp_specs;
13890       ELSIF(cz_pb_mgr.v_session_parameter = model_copy)
13891       THEN
13892          IF (cz_pb_mgr.copy_rules = 'YES')
13893          THEN
13894             collect_func_comp_specs;
13895          END IF;
13896       END IF;
13897 
13898       ---------release local pl/sql tables
13899       v_cz_model_ref_expls_new_tbl.DELETE;
13900       v_cz_model_ref_expls_old_tbl.DELETE;
13901    EXCEPTION
13902       WHEN OTHERS
13903       THEN
13904          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
13905          x_status := PUBLICATION_ERROR;
13906          RAISE pb_upload_ps_schema;
13907    END upload_ps_structure;                                       /* end of export of product structure */
13908 
13909 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13910    PROCEDURE insert_ui_node_props(p_ui_def_id_tbl IN cz_pb_mgr.t_ref)
13911    AS
13912       l_prop_node_tbl cz_pb_mgr.t_ref;
13913       l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
13914       l_rec_count NUMBER := 0;
13915    BEGIN
13916       IF p_ui_def_id_tbl.COUNT > 0
13917       THEN
13918          cz_pb_mgr.g_ui_node_prop_new_node_tbl.DELETE;
13919          cz_pb_mgr.g_ui_node_prop_old_node_tbl.DELETE;
13920          cz_pb_mgr.g_ui_node_prop_new_uidf_tbl.DELETE;
13921          cz_pb_mgr.g_ui_node_prop_old_uidf_tbl.DELETE;
13922 
13923 	 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
13924          FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
13925          LOOP
13926             l_prop_node_tbl.DELETE;
13927 
13928             SELECT DISTINCT prop.ui_node_id
13929             BULK COLLECT INTO l_prop_node_tbl
13930                        FROM cz_ui_node_props prop, cz_ui_nodes node
13931                       WHERE prop.ui_def_id = node.ui_def_id
13932                         AND prop.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
13933                         AND node.ui_node_id = prop.ui_node_id
13934                         AND node.deleted_flag = record_not_deleted
13935                         AND prop.deleted_flag = record_not_deleted;
13936 
13937             IF l_prop_node_tbl.COUNT > 0
13938             THEN
13939                l_rec_count := cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT;
13940 
13941                FOR j IN l_prop_node_tbl.FIRST .. l_prop_node_tbl.LAST
13942                LOOP
13943                   l_rec_count := l_rec_count + 1;
13944                   cz_pb_mgr.g_ui_node_prop_new_node_tbl(l_rec_count) := l_prop_node_tbl(j);
13945                   cz_pb_mgr.g_ui_node_prop_old_node_tbl(l_rec_count) := l_prop_node_tbl(j);
13946                   cz_pb_mgr.g_ui_node_prop_new_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
13947                   cz_pb_mgr.g_ui_node_prop_old_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
13948                END LOOP;
13949             END IF;
13950          END LOOP;
13951 	 END IF;
13952 
13953          IF cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT > 0
13954          THEN
13955             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');
13959             l_plsql_table_list(2).col_name := 'ui_def_id';
13956             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');
13957             l_plsql_table_list(1).col_name := 'ui_node_id';
13958             l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_ui_node_prop_new_node_tbl';
13960             l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_ui_node_prop_new_uidf_tbl';
13961             insert_into_table('cz_ui_node_props'
13962                              ,'ui_node_id'
13963                              ,'ui_def_id'
13964                              ,cz_pb_mgr.v_db_link
13965                              ,l_plsql_table_list
13966                              ,'cz_pb_mgr.g_ui_node_prop_old_node_tbl'
13967                              ,'cz_pb_mgr.g_ui_node_prop_old_uidf_tbl'
13968                              ,cz_pb_mgr.g_ui_node_prop_old_node_tbl
13969                              ,cz_pb_mgr.g_ui_node_prop_old_uidf_tbl
13970                              );
13971          END IF;
13972       END IF;
13973 
13974       COMMIT;
13975    EXCEPTION
13976       WHEN OTHERS
13977       THEN
13978          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_node_props', 'ERR', SQLERRM);
13979          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.NODEPROPS', SQLCODE);
13980          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13981    END insert_ui_node_props;
13982 
13983 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13984    PROCEDURE synch_master_template
13985    AS
13986       remote_mt ref_cursor;
13987       rec_count NUMBER;
13988       l_mt_gen_id t_ref;
13989       l_mt_old_id t_ref;
13990       l_mt_name t_mt_name;
13991       l_mt_id NUMBER;
13992       mt_idx NUMBER;
13993       plsql_table_list cz_pb_mgr.col_plsql_table_list;
13994       l_rec_count NUMBER;
13995    BEGIN
13996       cz_pb_mgr.v_mt_name.DELETE;
13997       cz_pb_mgr.v_mt_name_ref.DELETE;
13998       cz_pb_mgr.v_mt_gen_id.DELETE;
13999       cz_pb_mgr.v_mt_old_id_tbl.DELETE;
14000       cz_pb_mgr.v_mt_old_only.DELETE;
14001       cz_pb_mgr.v_new_mt_id_ref.DELETE;
14002       cz_pb_mgr.v_new_mt_id_tbl.DELETE;
14003       cz_pb_mgr.g_mt_obj_type.DELETE;
14004 
14005       -- 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
14006       IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14007       FOR ui IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14008       LOOP
14009          -- Andrew is going to provide with a query to fetch master template for given ui def id.
14010          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)
14011                ,ui_def_id, NAME
14012          BULK COLLECT INTO l_mt_gen_id
14013                ,l_mt_old_id, l_mt_name
14014            FROM cz_ui_defs mstr
14015           WHERE mstr.deleted_flag = '0'
14016             AND mstr.master_template_flag = '1'
14017             AND mstr.seeded_flag = '0'
14018             AND EXISTS(SELECT 1
14019                          FROM cz_ui_defs udf
14020                         WHERE udf.from_master_template_id = mstr.ui_def_id AND ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(ui));
14021 
14022          -- keep a running array for l_mt_names
14023          rec_count := v_mt_name.COUNT;
14024 
14025          IF (l_mt_old_id.COUNT > 0)
14026          THEN
14027             FOR m IN l_mt_old_id.FIRST .. l_mt_old_id.LAST
14028             LOOP
14029                IF (cz_pb_mgr.v_mt_name_ref.COUNT = 0 OR NOT cz_pb_mgr.v_mt_name_ref.EXISTS(l_mt_name(m)))
14030                THEN
14031                   rec_count := rec_count + 1;
14032                   cz_pb_mgr.v_mt_name(rec_count) := l_mt_name(m);
14033                   cz_pb_mgr.v_mt_name_ref(l_mt_name(m)) := m;
14034                   cz_pb_mgr.v_mt_old_id_tbl(rec_count) := l_mt_old_id(m);
14035                   cz_pb_mgr.v_mt_gen_id(rec_count) := l_mt_gen_id(m);
14036                END IF;
14037             END LOOP;
14038          END IF;
14039       END LOOP;
14040       END IF;
14041 
14042       -- loop through the array list to check name on the remote server
14043       IF (cz_pb_mgr.v_mt_name.COUNT > 0)
14044       THEN
14045          rec_count := 0;
14046          cz_pb_mgr.v_mt_old_id_ref.DELETE;
14047 
14048          FOR n IN cz_pb_mgr.v_mt_name.FIRST .. cz_pb_mgr.v_mt_name.LAST
14049          LOOP
14050             --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
14051             l_mt_id := NULL;
14052             rec_count := rec_count + 1;
14053 
14054             OPEN remote_mt FOR    'Select ui_def_id'
14055                                || ' '
14056                                || 'from cz_ui_defs'
14057                                || cz_pb_mgr.v_db_link
14058                                || 't'
14059                                || ' '
14060                                || 'where t.deleted_flag = ''0'' and t.master_template_flag = ''1'' and t.name = :1' USING cz_pb_mgr.v_mt_name(n);
14061 
14062             FETCH remote_mt
14063              INTO l_mt_id;
14064 
14065             IF (l_mt_id IS NOT NULL)
14066             THEN
14067                cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := l_mt_id;
14068                cz_pb_mgr.v_mt_id_ref(rec_count) := l_mt_id;
14069             ELSE
14070                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);
14071                cz_pb_mgr.v_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
14075          --END IF;
14072                cz_pb_mgr.v_new_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
14073                cz_pb_mgr.v_mt_old_id_ref(rec_count) := cz_pb_mgr.v_mt_old_id_tbl(n);
14074             END IF;
14076          END LOOP;
14077 
14078          rec_count := 0;
14079          cz_pb_mgr.g_mt_obj_type.DELETE;
14080          cz_pb_mgr.g_mt_enclosing_fld_rp_entry.DELETE;
14081          mt_idx := cz_pb_mgr.v_new_mt_id_ref.FIRST;
14082 
14083          WHILE(mt_idx IS NOT NULL)
14084          LOOP
14085             rec_count := rec_count + 1;
14086             cz_pb_mgr.v_new_mt_id_tbl(rec_count) := cz_pb_mgr.v_new_mt_id_ref(mt_idx);
14087             cz_pb_mgr.g_mt_obj_type(rec_count) := 'UMT';
14088             cz_pb_mgr.g_mt_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
14089             mt_idx := cz_pb_mgr.v_new_mt_id_ref.NEXT(mt_idx);
14090          END LOOP;
14091 
14092          IF (cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
14093          THEN
14094               --------populate plsql_table_list for ui_defs
14095             --null values in arrays will cause insert problems
14096             --so pack v_mt_old_id_ref into a non empty array
14097             --it can get into this situation where there are some m
14098             --master templates that need to migrated, but there are some that
14099             --don't need to be migrated.
14100             l_rec_count := 0;
14101 
14102 	    IF (cz_pb_mgr.v_mt_old_id_ref.COUNT > 0) THEN
14103             FOR m IN cz_pb_mgr.v_mt_old_id_ref.FIRST .. cz_pb_mgr.v_mt_old_id_ref.LAST
14104             LOOP
14105                IF (cz_pb_mgr.v_mt_old_id_ref(m) IS NOT NULL)
14106                THEN
14107                   l_rec_count := l_rec_count + 1;
14108                   cz_pb_mgr.v_mt_old_only(l_rec_count) := cz_pb_mgr.v_mt_old_id_ref(m);
14109                END IF;
14110             END LOOP;
14111 	    END IF;
14112 
14113             plsql_table_list.DELETE;
14114             rec_count := 1;
14115             plsql_table_list(rec_count).col_name := 'ui_def_id';
14116             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
14117             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);
14118             ----------begin insert into cz_rp_entries----------------
14119             plsql_table_list.DELETE;
14120             rec_count := 1;
14121             plsql_table_list(rec_count).col_name := 'object_id';
14122             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
14123             rec_count := rec_count + 1;
14124             plsql_table_list(rec_count).col_name := 'object_type';
14125             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_obj_type';
14126             rec_count := rec_count + 1;
14127             plsql_table_list(rec_count).col_name := 'enclosing_folder';
14128             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_enclosing_fld_rp_entry';
14129             insert_into_rp_entries('cz_rp_entries'
14130                                   ,'object_id'
14131                                   ,'object_type'
14132                                   ,cz_pb_mgr.v_db_link
14133                                   ,plsql_table_list
14134                                   ,'cz_pb_mgr.v_mt_old_only'
14135                                   ,'cz_pb_mgr.g_mt_obj_type'
14136                                   ,cz_pb_mgr.v_mt_old_only
14137                                   ,cz_pb_mgr.g_mt_obj_type
14138                                   );
14139          ----------end insert into cz_rp_entries----------------
14140          END IF;
14141       END IF;
14142    END synch_master_template;
14143 
14144 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14145 --------procedure that uploads UI schema
14146    PROCEDURE upload_ui_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2,
14147                               p_copy_nonjradui IN BOOLEAN DEFAULT TRUE)
14148    AS
14149       plsql_table_list cz_pb_mgr.col_plsql_table_list;
14150       rec_count PLS_INTEGER := 0;
14151       v_ui_node_count PLS_INTEGER := 0;
14152       v_cz_ui_defs_old_tbl cz_pb_mgr.t_ref;
14153       v_ui_devl_id_tbl cz_pb_mgr.t_ref;
14154       v_ui_comp_id_tbl cz_pb_mgr.t_ref;
14155       v_ui_rf_id_tbl cz_pb_mgr.t_ref;
14156       v_cz_ui_nodes_new_tbl cz_pb_mgr.t_ref;
14157       v_cz_ui_nodes_old_tbl cz_pb_mgr.t_ref;
14158       v_cz_ui_nodes_ui_def_id_tbl cz_pb_mgr.t_ref;
14159       v_cz_ui_nodes_parent_id_tbl cz_pb_mgr.t_ref;
14160       v_cz_ui_nodes_ui_ref_id_tbl cz_pb_mgr.t_ref;
14161       v_cz_ui_nodes_ps_node_id_tbl cz_pb_mgr.t_ref;
14162       v_cz_ui_nodes_component_id_tbl cz_pb_mgr.t_ref;
14163       v_cz_ui_nodes_ui_dref_id_tbl cz_pb_mgr.t_ref;
14164       v_cz_ui_nodes_expl_id_tbl cz_pb_mgr.t_ref;
14165       v_cz_ui_nodes_fcomp_id_tbl cz_pb_mgr.t_ref;
14166       v_cz_ui_nodes_capt_id_tbl cz_pb_mgr.t_ref;
14167       v_cz_ui_nodes_tool_id_tbl cz_pb_mgr.t_ref;
14168       v_menu_capt_rule_tbl cz_pb_mgr.t_ref;
14169       v_page_capt_rule_tbl cz_pb_mgr.t_ref;
14170       l_from_mt_id_tbl cz_pb_mgr.t_ref;
14171    BEGIN
14172       pbdebug := 22038;
14173 
14174       IF ((cz_pb_mgr.copy_uis <> 'YES') AND(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy))
14175       THEN
14176          cz_pb_mgr.v_root_ui_def_id := -999;
14177       END IF;
14178 
14179       IF (cz_pb_mgr.g_log_timing = publication_timing)
14180       THEN
14181          log_timing_message('start bulk collect of ui defs');
14182       END IF;
14183 
14187 
14184       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;
14185 
14186          clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
14188          IF (p_models_for_export.COUNT > 0) THEN
14189             -- not copy non-jrad ui in any conversion session or in a copy session flagged by p_copy_nonjradui
14190             IF NOT (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 OR
14191                     cz_pb_mgr.v_session_parameter=model_copy AND NOT p_copy_nonjradui) THEN
14192               get_source_uis(cz_pb_mgr.v_root_model_id, p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref);
14193             END IF;
14194             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);
14195 
14196             --get_oa_tmpls is also called from has_to_be_published.
14197             --However, for model migration, has_to_be_published
14198             --is not called.  So make the call  to get_oa_tmpls here.
14199             IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0 THEN
14200                get_oa_tmpls;
14201             END IF;
14202 
14203             IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
14204             THEN
14205                rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
14206 
14207                FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14208                LOOP
14209                   rec_count := rec_count + 1;
14210                   cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
14211                      cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq
14212                                                 , 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link
14213                                                 ,cz_pb_mgr.v_oraclesequenceincr
14214                                                 );
14215                END LOOP;
14216             END IF;                                                                           /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
14217          END IF;
14218 
14219          IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
14220          THEN
14221             FOR m IN cz_pb_mgr.v_cz_ui_defs_new_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_new_ref.LAST
14222             LOOP
14223                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);
14224             END LOOP;
14225          END IF;
14226 
14227          get_uis_of_mdls_not_exported(cz_pb_mgr.v_models_not_to_be_exported,
14228                                       cz_pb_mgr.v_cz_ui_defs_idx_ref,
14229                                       cz_pb_mgr.v_server_id,
14230 					                            cz_pb_mgr.v_status_code);
14231 
14232          IF (cz_pb_mgr.g_log_timing = publication_timing)
14233          THEN
14234             log_timing_message('end bulk collect of ui defs');
14235             log_timing_message('start bulk collect of devl_project_ids and component_ids for ui_defs');
14236          END IF;
14237 
14238          ---------get devl_project_ids and component_ids for ui_defs
14239          /* We should really re-architect this portion of the code
14240             we have already queried cz_ui_defs before for oa_style UIs in
14241             get_oa_uis and have the menu_caption_rule_id,page_caption_rule_id,
14242             from_master_template_id.  We need to query it again here because
14243             we don't have these values for DHTML UIs and insert_into_table for
14244             cz_ui_defs will fail.  We should consolidate the querying into one place.
14245          */
14246 
14247          IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
14248          THEN
14249 	   IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14250             FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14251             LOOP
14252                BEGIN
14253                   v_ui_devl_id_tbl.DELETE;
14254                   v_ui_comp_id_tbl.DELETE;
14255                   v_ui_rf_id_tbl.DELETE;
14256 
14257                   SELECT devl_project_id, component_id, menu_caption_rule_id, page_caption_rule_id, cz_ui_defs.from_master_template_id
14258                   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
14259                     FROM cz_ui_defs
14260                    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;
14261 
14262                   rec_count := cz_pb_mgr.v_ui_devl_id_ref.COUNT;
14263 
14264                   IF (v_ui_devl_id_tbl.COUNT > 0)
14265                   THEN
14266                      FOR k IN v_ui_devl_id_tbl.FIRST .. v_ui_devl_id_tbl.LAST
14267                      LOOP
14268                         rec_count := rec_count + 1;
14269                         cz_pb_mgr.v_ui_devl_id_ref(rec_count) := v_ui_devl_id_tbl(k);
14270                         cz_pb_mgr.v_ui_comp_id_ref(rec_count) := v_ui_comp_id_tbl(k);
14271                         cz_pb_mgr.v_ui_defs_mcpt_rule_ref(rec_count) := v_menu_capt_rule_tbl(k);
14272                         cz_pb_mgr.v_ui_defs_pcpt_rule_ref(rec_count) := v_page_capt_rule_tbl(k);
14273                         v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(k);
14274                      END LOOP;
14275                   END IF;
14276                EXCEPTION
14277                   WHEN OTHERS
14278                   THEN
14282                      RAISE;
14279                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_defs', 'SQLERRM', SQLERRM);
14280                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14281                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14283                END;
14284             END LOOP;                                                                        /* end loop of FOR I IN cz_pb_mgr.v_cz_ui_defs_old_ref */
14285 	   END IF;
14286          END IF;                                                                              /* end if of cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0 */
14287 
14288          IF (cz_pb_mgr.g_log_timing = publication_timing)
14289          THEN
14290             log_timing_message('end bulk collect of devl_project_ids and component_ids for ui_defs');
14291             log_timing_message('start resolve_ids devl project id of cz_ui_defs');
14292          END IF;
14293 
14294          ----------resolve devl_project_ids
14295          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');
14296 
14297          IF (cz_pb_mgr.g_log_timing = publication_timing)
14298          THEN
14299             log_timing_message('end resolve_ids devl project id of cz_ui_defs');
14300          END IF;
14301 
14302          ----------resolve component_ids
14303          IF (cz_pb_mgr.g_log_timing = publication_timing)
14304          THEN
14305             log_timing_message('start resolve_ids component id of cz_ui_defs');
14306          END IF;
14307 
14308          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');
14309 
14310          IF (cz_pb_mgr.g_log_timing = publication_timing)
14311          THEN
14312             log_timing_message('end resolve_ids component id of cz_ui_defs');
14313          END IF;
14314 
14315          ----------resolve component_ids of models not to be exported
14316          IF (cz_pb_mgr.g_log_timing = publication_timing)
14317          THEN
14318             log_timing_message('start component_ids of models not to be exported');
14319          END IF;
14320 
14321          IF (cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0)
14322          THEN
14323             FOR k IN cz_pb_mgr.v_ui_comp_id_ref.FIRST .. cz_pb_mgr.v_ui_comp_id_ref.LAST
14324             LOOP
14325                remote_component_id(cz_pb_mgr.v_ui_comp_id_ref(k)
14326                                   ,cz_pb_mgr.v_models_not_to_be_exported
14327                                   ,cz_pb_mgr.v_server_id
14328                                   ,cz_pb_mgr.v_status_code
14329                                   );
14330             END LOOP;
14331          END IF;            /* end if of cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0 */
14332 
14333          IF (cz_pb_mgr.g_log_timing = publication_timing)
14334          THEN
14335             log_timing_message('end component_ids of models not to be exported');
14336          END IF;
14337 
14338          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');
14339          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');
14340 
14341          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
14342          THEN
14343             synch_master_template;
14344             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);
14345          END IF;
14346 
14347          --------populate plsql_table_list for ui_defs
14348          plsql_table_list.DELETE;
14349          rec_count := 1;
14350          plsql_table_list(rec_count).col_name := 'ui_def_id';
14351          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
14352          rec_count := rec_count + 1;
14353          plsql_table_list(rec_count).col_name := 'devl_project_id';
14354          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_devl_id_ref';
14355          rec_count := rec_count + 1;
14356          plsql_table_list(rec_count).col_name := 'component_id';
14357          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_comp_id_ref';
14358          rec_count := rec_count + 1;
14359          plsql_table_list(rec_count).col_name := 'menu_caption_rule_id';
14360          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_mcpt_rule_ref';
14361          rec_count := rec_count + 1;
14362          plsql_table_list(rec_count).col_name := 'page_caption_rule_id';
14363          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_pcpt_rule_ref';
14364 
14365          ---------insert into cz_ui_defs of target server
14366          IF (cz_pb_mgr.g_log_timing = publication_timing)
14367          THEN
14368             log_timing_message('start insert_into_table cz_ui_defs');
14369          END IF;
14370 
14371          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
14372          THEN
14373             rec_count := rec_count + 1;
14374             plsql_table_list(rec_count).col_name := 'from_master_template_id';
14375             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_master_template_id_ref';
14376          END IF;
14377 
14378          insert_into_table('cz_ui_defs'
14379                           ,'ui_def_id'
14380                           ,cz_pb_mgr.v_db_link
14381                           ,plsql_table_list
14382                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
14383                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
14387          THEN
14384                           );
14385 
14386          IF (cz_pb_mgr.g_log_timing = publication_timing)
14388             log_timing_message('end insert_into_table cz_ui_defs');
14389          END IF;
14390 
14391          ------export oa uis
14392          IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0) THEN
14393             export_oa_uis;
14394          END IF;
14395 
14396          --------populate plsql_table_list for ui_properties
14397          plsql_table_list.DELETE;
14398          rec_count := 1;
14399          plsql_table_list(rec_count).col_name := 'ui_def_id';
14400          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
14401 
14402          ------------insert into cz_ui_properties  of target server
14403          IF (cz_pb_mgr.g_log_timing = publication_timing)
14404          THEN
14405             log_timing_message('start insert_into_table cz_ui_properties');
14406          END IF;
14407 
14408          insert_into_table('cz_ui_properties'
14409                           ,'ui_def_id'
14410                           ,cz_pb_mgr.v_db_link
14411                           ,plsql_table_list
14412                           ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
14413                           ,cz_pb_mgr.v_cz_ui_defs_old_ref
14414                           );
14415 
14416          IF (cz_pb_mgr.g_log_timing = publication_timing)
14417          THEN
14418             log_timing_message('end insert_into_table cz_ui_properties');
14419          END IF;
14420 
14421          ----------insert ids of cz_ui_nodes
14422          clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
14423 
14424          IF (cz_pb_mgr.g_log_timing = publication_timing)
14425          THEN
14426             log_timing_message('start bulk collect of cz_ui_nodes');
14427          END IF;
14428 
14429          IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
14430          THEN
14431             FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14432             LOOP
14433                v_cz_ui_nodes_new_tbl.DELETE;
14434                v_cz_ui_nodes_old_tbl.DELETE;
14435                v_cz_ui_nodes_ui_def_id_tbl.DELETE;
14436                v_cz_ui_nodes_parent_id_tbl.DELETE;
14437                v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
14438                v_cz_ui_nodes_ps_node_id_tbl.DELETE;
14439                v_cz_ui_nodes_component_id_tbl.DELETE;
14440                v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
14441                v_cz_ui_nodes_expl_id_tbl.DELETE;
14442                v_cz_ui_nodes_fcomp_id_tbl.DELETE;
14443                v_cz_ui_nodes_capt_id_tbl.DELETE;
14444                v_cz_ui_nodes_tool_id_tbl.DELETE;
14445 
14446                BEGIN
14447                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_nodes_seq
14448                                                     , 'cz_ui_nodes_s.nextval' || cz_pb_mgr.v_db_link
14449                                                     ,cz_pb_mgr.v_oraclesequenceincr
14450                                                     )
14451                         ,ui_node_id, ui_def_id, parent_id, ui_node_ref_id
14452                         ,ui_def_ref_id, ps_node_id, component_id, model_ref_expl_id
14453                         ,func_comp_id, caption_id, tool_tip_id
14454                   BULK COLLECT INTO v_cz_ui_nodes_new_tbl
14455                         ,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
14456                         ,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
14457                         ,v_cz_ui_nodes_fcomp_id_tbl, v_cz_ui_nodes_capt_id_tbl, v_cz_ui_nodes_tool_id_tbl
14458                     FROM cz_ui_nodes
14459                    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;
14460                EXCEPTION
14461                   WHEN NO_DATA_FOUND
14462                   THEN
14463                      cz_pb_mgr.v_err_message := 'No ui nodes found for : ' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_old_ref(i));
14464                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODES', SQLCODE);
14465                   WHEN OTHERS
14466                   THEN
14467                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_nodes', 'SQLERRM', SQLERRM);
14468                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14469                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14470                      RAISE;
14471                END;
14472 
14473                IF (v_cz_ui_nodes_new_tbl.COUNT > 0)
14474                THEN
14475                   FOR k IN v_cz_ui_nodes_new_tbl.FIRST .. v_cz_ui_nodes_new_tbl.LAST
14476                   LOOP
14477                      v_ui_node_count := cz_pb_mgr.v_cz_ui_nodes_new_ref.COUNT + 1;
14478                      cz_pb_mgr.v_cz_ui_nodes_new_ref(v_ui_node_count) := v_cz_ui_nodes_new_tbl(k);
14479                      cz_pb_mgr.v_cz_ui_nodes_old_ref(v_ui_node_count) := v_cz_ui_nodes_old_tbl(k);
14480                      cz_pb_mgr.v_cz_ui_nodes_idx_ref(v_cz_ui_nodes_old_tbl(k)):=v_cz_ui_nodes_new_tbl(k);
14481                      cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_def_id_tbl(k);
14482                      cz_pb_mgr.v_cz_ui_nodes_parent_id_ref(v_ui_node_count) := v_cz_ui_nodes_parent_id_tbl(k);
14483                      cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_ref_id_tbl(k);
14484                      cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref(v_ui_node_count) := v_cz_ui_nodes_ps_node_id_tbl(k);
14488                      cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref(v_ui_node_count) := v_cz_ui_nodes_fcomp_id_tbl(k);
14485                      cz_pb_mgr.v_cz_ui_nodes_component_id_ref(v_ui_node_count) := v_cz_ui_nodes_component_id_tbl(k);
14486                      cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_dref_id_tbl(k);
14487                      cz_pb_mgr.v_cz_ui_nodes_expl_id_ref(v_ui_node_count) := v_cz_ui_nodes_expl_id_tbl(k);
14489                      cz_pb_mgr.v_cz_ui_nodes_capt_id_ref(v_ui_node_count) := v_cz_ui_nodes_capt_id_tbl(k);
14490                      cz_pb_mgr.v_cz_ui_nodes_tool_id_ref(v_ui_node_count) := v_cz_ui_nodes_tool_id_tbl(k);
14491                   END LOOP;
14492                END IF;                                                                                 /* end if of v_cz_ui_nodes_new_tbl.COUNT > 0 */
14493             END LOOP;
14494          END IF;                                                                              /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
14495 
14496          IF (cz_pb_mgr.g_log_timing = publication_timing)
14497          THEN
14498             log_timing_message('end bulk collect of cz_ui_nodes');
14499          END IF;
14500 
14501          ----intl texts of ui nodes
14502          IF (cz_pb_mgr.g_log_timing = publication_timing)
14503          THEN
14504             log_timing_message('start insert_intl_texts caption ids of ui nodes');
14505          END IF;
14506 
14507          insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, 'Caption ids of ui nodes');
14508 
14509          IF (cz_pb_mgr.g_log_timing = publication_timing)
14510          THEN
14511             log_timing_message('end insert_intl_texts caption ids of ui nodes');
14512          END IF;
14513 
14514          -----resolve caption ids
14515          IF (cz_pb_mgr.g_log_timing = publication_timing)
14516          THEN
14517             log_timing_message('start resolve_intl_texts caption ids of ui nodes');
14518          END IF;
14519 
14520          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');
14521 
14522          IF (cz_pb_mgr.g_log_timing = publication_timing)
14523          THEN
14524             log_timing_message('end resolve_intl_texts caption ids of ui nodes');
14525          END IF;
14526 
14527          -----insert tool tip ids
14528          IF (cz_pb_mgr.g_log_timing = publication_timing)
14529          THEN
14530             log_timing_message('start insert_intl_texts Tool tip ids of ui nodes');
14531          END IF;
14532 
14533          insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, 'Tool tip ids of ui nodes');
14534 
14535          IF (cz_pb_mgr.g_log_timing = publication_timing)
14536          THEN
14537             log_timing_message('end insert_intl_texts Tool tip ids of ui nodes');
14538          END IF;
14539 
14540          ---------resolve tool tip ids
14541          IF (cz_pb_mgr.g_log_timing = publication_timing)
14542          THEN
14543             log_timing_message('start resolve_intl_texts tool tip ids of ui nodes');
14544          END IF;
14545 
14546          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');
14547 
14548          IF (cz_pb_mgr.g_log_timing = publication_timing)
14549          THEN
14550             log_timing_message('end resolve_intl_texts tool tip ids of ui nodes');
14551          END IF;
14552 
14553          ---------resolve ui def ids of ui nodes
14554          IF (cz_pb_mgr.g_log_timing = publication_timing)
14555          THEN
14556             log_timing_message('start resolve_ids ui def ids of ui nodes');
14557          END IF;
14558 
14559          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');
14560 
14561          IF (cz_pb_mgr.g_log_timing = publication_timing)
14562          THEN
14563             log_timing_message('end resolve_ids ui def ids of ui nodes');
14564          END IF;
14565 
14566          ---------resolve parent ids of ui nodes
14567          IF (cz_pb_mgr.g_log_timing = publication_timing)
14568          THEN
14569             log_timing_message('start resolve_ids parent ids of ui nodes');
14570          END IF;
14571 
14572          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');
14573 
14574          IF (cz_pb_mgr.g_log_timing = publication_timing)
14575          THEN
14576             log_timing_message('end resolve_ids parent ids of ui nodes');
14577          END IF;
14578 
14579          ---------resolve ui node ref ids of ui nodes
14580          IF (cz_pb_mgr.g_log_timing = publication_timing)
14581          THEN
14582             log_timing_message('start resolve_ids ui node ref ids of ui nodes');
14583          END IF;
14584 
14585          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);
14586 
14587          IF (cz_pb_mgr.g_log_timing = publication_timing)
14588          THEN
14589             log_timing_message('end resolve_ids ui node ref ids of ui nodes');
14590          END IF;
14591 
14592          ---------resolve ps node ref ids of ui nodes
14593          IF (cz_pb_mgr.g_log_timing = publication_timing)
14594          THEN
14595             log_timing_message('start resolve_ids ps node ids of ui nodes');
14596          END IF;
14597 
14598          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');
14599 
14600          IF (cz_pb_mgr.g_log_timing = publication_timing)
14601          THEN
14605          ---------resolve component ids of ui nodes
14602             log_timing_message('end resolve_ids ps node ids of ui nodes');
14603          END IF;
14604 
14606          IF (cz_pb_mgr.g_log_timing = publication_timing)
14607          THEN
14608             log_timing_message('start resolve_ids component ids of ui nodes');
14609          END IF;
14610 
14611          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');
14612 
14613          IF (cz_pb_mgr.g_log_timing = publication_timing)
14614          THEN
14615             log_timing_message('end resolve_ids component ids of ui nodes');
14616             log_timing_message('start resolve_ids model ref expl id of cz_ui nodes');
14617          END IF;
14618 
14619          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');
14620 
14621          IF (cz_pb_mgr.g_log_timing = publication_timing)
14622          THEN
14623             log_timing_message('end resolve_ids model ref expl id of cz_ui nodes');
14624             log_timing_message('start resolve_ids func comp ids of ui nodes');
14625          END IF;
14626 
14627          ---------resolve func comp ids of ui nodes
14628          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');
14629 
14630          IF (cz_pb_mgr.g_log_timing = publication_timing)
14631          THEN
14632             log_timing_message('end resolve_ids func comp ids of ui nodes');
14633             log_timing_message('start resolve_ref_ids_not_found');
14634          END IF;
14635 
14636          ---------resolve ui_def_ref_id
14637          -- should call resolve_ids instead
14638          resolve_ref_ids_not_found(cz_pb_mgr.v_cz_ui_nodes_new_ref
14639                                   ,cz_pb_mgr.v_cz_ui_defs_old_ref
14640                                   ,cz_pb_mgr.v_cz_ui_defs_idx_ref
14641                                   ,cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref
14642                                   ,'cz_ui_nodes.ui_def_ref_id'
14643                                   ,cz_pb_mgr.v_status_code
14644                                   );
14645 
14646          IF (cz_pb_mgr.g_log_timing = publication_timing)
14647          THEN
14648             log_timing_message('end resolve_ref_ids_not_found');
14649             log_timing_message('start resolve_remote_ui_nodes');
14650          END IF;
14651 
14652          ----------resolve remote ui_node_ids
14653          resolve_remote_ui_nodes(cz_pb_mgr.v_cz_ui_nodes_new_ref
14654                                 ,cz_pb_mgr.v_models_not_to_be_exported
14655                                 ,cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref
14656                                 ,cz_pb_mgr.v_server_id
14657                                 ,cz_pb_mgr.v_status_code
14658                                 );
14659 
14660          IF (cz_pb_mgr.g_log_timing = publication_timing)
14661          THEN
14662             log_timing_message('end resolve_remote_ui_nodes');
14663          END IF;
14664 
14665          --------populate plsql_table_list for ui_nodes
14666          plsql_table_list.DELETE;
14667          rec_count := 1;
14668          plsql_table_list(rec_count).col_name := 'ui_node_id';
14669          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_new_ref';
14670          rec_count := rec_count + 1;
14671          plsql_table_list(rec_count).col_name := 'ui_def_id';
14672          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref';
14673          rec_count := rec_count + 1;
14674          plsql_table_list(rec_count).col_name := 'parent_id';
14675          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_parent_id_ref';
14676          rec_count := rec_count + 1;
14677          plsql_table_list(rec_count).col_name := 'component_id';
14678          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_component_id_ref';
14679          rec_count := rec_count + 1;
14680          plsql_table_list(rec_count).col_name := 'ps_node_id';
14681          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref';
14682          rec_count := rec_count + 1;
14683          plsql_table_list(rec_count).col_name := 'ui_node_ref_id';
14684          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref';
14685          rec_count := rec_count + 1;
14686          plsql_table_list(rec_count).col_name := 'ui_def_ref_id';
14687          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref';
14688          rec_count := rec_count + 1;
14689          plsql_table_list(rec_count).col_name := 'func_comp_id';
14690          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref';
14691          rec_count := rec_count + 1;
14692          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
14693          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_expl_id_ref';
14694          rec_count := rec_count + 1;
14695          plsql_table_list(rec_count).col_name := 'caption_id';
14696          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_capt_id_ref';
14697          rec_count := rec_count + 1;
14698          plsql_table_list(rec_count).col_name := 'tool_tip_id';
14699          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_tool_id_ref';
14700 
14701          IF (cz_pb_mgr.g_log_timing = publication_timing)
14702          THEN
14703             log_timing_message('start insert_into_table cz_ui_nodes');
14704          END IF;
14705 
14706          -----------insert into cz_ui_nodes of target server
14710                           ,plsql_table_list
14707          insert_into_table('cz_ui_nodes'
14708                           ,'ui_node_id'
14709                           ,cz_pb_mgr.v_db_link
14711                           ,'cz_pb_mgr.v_cz_ui_nodes_old_ref'
14712                           ,cz_pb_mgr.v_cz_ui_nodes_old_ref
14713                           );
14714 
14715          IF (cz_pb_mgr.g_log_timing = publication_timing)
14716          THEN
14717             log_timing_message('end insert_into_table cz_ui_nodes');
14718          END IF;
14719 
14720          --------populate plsql_table_list for ui_node_props
14721          IF (cz_pb_mgr.g_log_timing = publication_timing)
14722          THEN
14723             log_timing_message('start insert_into_table cz_ui_node_props');
14724          END IF;
14725 
14726          insert_ui_node_props(cz_pb_mgr.v_cz_ui_defs_old_ref);
14727 
14728          IF (cz_pb_mgr.g_log_timing = publication_timing)
14729          THEN
14730             log_timing_message('end insert_into_table cz_ui_node_props');
14731          END IF;
14732 
14733          -------------release local pl/sql tables
14734          v_cz_ui_nodes_new_tbl.DELETE;
14735          v_cz_ui_nodes_old_tbl.DELETE;
14736          v_cz_ui_nodes_ui_def_id_tbl.DELETE;
14737          v_cz_ui_nodes_parent_id_tbl.DELETE;
14738          v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
14739          v_cz_ui_nodes_ps_node_id_tbl.DELETE;
14740          v_cz_ui_nodes_component_id_tbl.DELETE;
14741          v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
14742          v_cz_ui_nodes_expl_id_tbl.DELETE;
14743          v_cz_ui_nodes_fcomp_id_tbl.DELETE;
14744 
14745    EXCEPTION
14746       WHEN OTHERS
14747       THEN
14748          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14749          x_status := PUBLICATION_ERROR;
14750          RAISE pb_upload_ui_schema;
14751    END upload_ui_schema;  /* end of upload of UI schema */
14752 
14753 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14754 --------procedure to upload item sub-schema
14755    PROCEDURE upload_item_schema(p_ps_nodes_array IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2)
14756    AS
14757       v_property_count PLS_INTEGER := 0;
14758       rec_count PLS_INTEGER := 0;
14759       v_remote_prop_tbl cz_pb_mgr.t_ref;
14760       l_data_type_tbl cz_pb_mgr.t_ref;
14761       l_def_num_value_tbl cz_pb_mgr.t_ref;
14762       l_old_psnode_id NUMBER;
14763    BEGIN
14764 
14765       ------------------insert data into cz_ps_prop_vals
14766       clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14767       get_all_properties;
14768 
14769       IF (cz_pb_mgr.g_log_timing = publication_timing)
14770       THEN
14771          log_timing_message('end bulk collect from cz_psnode_propval_v');
14772       END IF;
14773 
14774       IF (cz_pb_mgr.g_log_timing = publication_timing)
14775       THEN
14776          log_timing_message('start resolve psnodes of prop vals');
14777       END IF;
14778 
14779       -----resolve psnodes of prop vals
14780       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');
14781 
14782       IF (cz_pb_mgr.g_log_timing = publication_timing)
14783       THEN
14784          log_timing_message('end resolve psnodes of prop vals');
14785       END IF;
14786 
14787       ----resolve prop num value for translatable text props
14788       IF (cz_pb_mgr.g_log_timing = publication_timing)
14789       THEN
14790          log_timing_message('start resolve prop num value');
14791       END IF;
14792 
14793       IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0 AND
14794          (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0)) THEN
14795          FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
14796          LOOP
14797             IF  cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
14798                (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
14799                 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
14800                rec_count := rec_count + 1;
14801                cz_pb_mgr.v_prop_vals_intl_text_ref(rec_count) := cz_pb_mgr.v_prop_vals_data_num_ref(intltext);
14802             END IF;
14803          END LOOP;
14804       END IF;
14805 
14806       IF (cz_pb_mgr.g_log_timing = publication_timing)
14807       THEN
14808          log_timing_message('end resolve prop num value');
14809       END IF;
14810 
14811 /*insert tranlateable property related intls for publication or local migration. Remote Migration will be dealt separately*/
14812       -- v_prop_vals_intl_text_ref not used by remote migration
14813       IF cz_pb_mgr.v_prop_vals_intl_text_ref.COUNT > 0 THEN
14814 
14815         IF (cz_pb_mgr.g_log_timing = publication_timing)
14816         THEN
14817            log_timing_message('start insert texts for prop num value');
14818         END IF;
14819 
14820         insert_intl_texts(cz_pb_mgr.v_prop_vals_intl_text_ref, 'prop num value of cz prop vals');
14821 
14822         IF (cz_pb_mgr.g_log_timing = publication_timing)
14823         THEN
14824            log_timing_message('end insert texts for prop num value');
14825         END IF;
14826 
14827         IF (cz_pb_mgr.g_log_timing = publication_timing)
14828         THEN
14829            log_timing_message('start resolve cz_pb_mgr.v_prop_vals_data_num_ref');
14830         END IF;
14831 
14832         IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0)
14833         THEN
14837                   cz_pb_mgr.v_prop_vals_data_num_ref(intltext) IS NOT NULL AND
14834            FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
14835            LOOP
14836               IF  cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
14838                  (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
14839                   cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
14840                  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));
14841               END IF;
14842            END LOOP;
14843         END IF;
14844       END IF;
14845 
14846       IF (cz_pb_mgr.g_log_timing = publication_timing)
14847       THEN
14848          log_timing_message('end resolve cz_pb_mgr.v_prop_vals_data_num_ref');
14849       END IF;
14850 
14851       IF (cz_pb_mgr.g_log_timing = publication_timing)
14852       THEN
14853          log_timing_message('start insert_into_ps_prop_vals');
14854       END IF;
14855 
14856       -- If this is remote model migration, we need to synchronize the properties before
14857       -- we insert into the target machine
14858       -- that will be done as part of insert item schema
14859       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0) THEN
14860          ------insert into cz_ps_prop_vals
14861          IF cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model THEN
14862            insert_into_ps_prop_vals;
14863          ELSE
14864            mc_insert_pspropvals;
14865          END IF;
14866 
14867          IF (cz_pb_mgr.g_log_timing = publication_timing)
14868          THEN
14869             log_timing_message('end insert_into_ps_prop_vals');
14870          END IF;
14871 
14872          ---------release pl/sql tables
14873          clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14874          clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
14875       END IF;
14876 
14877       ------------ populate item sub schema
14878       IF (cz_pb_mgr.v_server_id <> 0)
14879       THEN
14880          insert_item_schema;
14881 
14882          -- if model migration, the tables were not cleared before,
14883          -- they are being taken care of at this stage
14884          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
14885          THEN
14886             ---------release pl/sql tables
14887             clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14888             clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
14889          END IF;
14890 
14891          ----------refresh model usages
14892          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
14893          THEN
14894             load_usages;
14895          END IF;
14896 
14897          ---------delete pl/sql tables
14898          clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
14899          clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
14900       END IF;                       /* end if of cz_pb_mgr.v_server_id <> 0 */
14901    EXCEPTION
14902       WHEN OTHERS
14903       THEN
14904          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14905          x_status := PUBLICATION_ERROR;
14906          RAISE pb_upload_item_schema;
14907    END upload_item_schema;          /* end of upload of ITEM schema */
14908 
14909 --------------------------------------------------------------------------------
14910 PROCEDURE copy_fce_files IS
14911   l_oldid_tbl  t_ref;
14912   l_newid_tbl  t_ref;
14913   l_comid_tbl  t_ref;
14914   l_count      PLS_INTEGER := 0;
14915   l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
14916 BEGIN
14917   FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
14918     l_newid_tbl.DELETE;
14919     l_oldid_tbl.DELETE;
14920     l_comid_tbl.DELETE;
14921 
14922     SELECT cz_pb_mgr.sequence_generate(CZ_FCE_FILES_SEQ
14923                                       ,'CZ_FCE_FILES_S.NEXTVAL' || cz_pb_mgr.v_db_link
14924                                       ,cz_pb_mgr.v_oraclesequenceincr
14925                                       ),
14926            fce_file_id, component_id
14927     BULK COLLECT INTO l_newid_tbl, l_oldid_tbl, l_comid_tbl
14928     FROM cz_fce_files
14929     WHERE deleted_flag = '0' AND component_id = cz_pb_mgr.v_models_to_be_exported(i);
14930 
14931     IF l_newid_tbl.COUNT > 0 THEN
14932       FOR j IN l_newid_tbl.FIRST .. l_newid_tbl.LAST LOOP
14933         l_count := l_count + 1;
14934         cz_pb_mgr.g_fcefile_new_id_tbl(l_count) := l_newid_tbl(j);
14935         cz_pb_mgr.g_fcefile_old_id_tbl(l_count) := l_oldid_tbl(j);
14936         cz_pb_mgr.g_fcefile_compid_tbl(l_count) := l_comid_tbl(j);
14937       END LOOP;
14938     END IF;
14939   END LOOP;
14940 
14941   resolve_ids(cz_pb_mgr.g_fcefile_compid_tbl,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'component id of fce files');
14942 
14943   l_plsql_table_list(1).col_name   := 'FCE_FILE_ID';
14944   l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_fcefile_new_id_tbl';
14945   l_plsql_table_list(2).col_name   := 'COMPONENT_ID';
14946   l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_fcefile_compid_tbl';
14947 
14948   insert_into_table('CZ_FCE_FILES'
14949                    ,'FCE_FILE_ID'
14950                    , cz_pb_mgr.v_db_link
14951                    , l_plsql_table_list
14952                    ,'cz_pb_mgr.g_fcefile_old_id_tbl'
14953                    , cz_pb_mgr.g_fcefile_old_id_tbl
14954                    );
14958 -----procedure to insert rules
14955 END copy_fce_files;
14956 
14957 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14959    PROCEDURE insert_rules(p_copy_rules_flag IN VARCHAR2, p_model_root_folder_map IN cz_pb_mgr.t_ref_idx_vc2)
14960    IS
14961       plsql_table_list cz_pb_mgr.col_plsql_table_list;
14962       rec_count NUMBER := 0;
14963    BEGIN
14964       ---------------reason id of cz rules
14965       insert_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, 'Reason ids of cz rules');
14966       --------resolve reason ids
14967       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');
14968 
14969       ---------------unsatisfied message of cz rules
14970       insert_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, 'Unsatisfied message ids of cz rules');
14971       ---------resolve unsatisfied message ids
14972       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');
14973 
14974       ------------populate effectivity set ids for cz rules
14975       insert_eff_sets(cz_pb_mgr.v_cz_rules_eff_id_ref
14976                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
14977                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
14978                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
14979                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
14980                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
14981                      ,'Eff sets of cz rules'
14982                      );
14983 
14984       export_signatures(cz_pb_mgr.v_cz_rules_sig_ref);
14985       -------------Resolve sig id of cz_rules
14986       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);
14987       ----------resolve_eff_sets;
14988       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');
14989 
14990       -------------Resolve rule_folder_id of cz_rules
14991       -- if copy rule db setting is not yes, publishing still copies CXs and FCs but only copies
14992       -- the root rule folder of a model, so we will put such rules under root folder in tgt model
14993       -- note we do not want to leave rule folders unresolved because it may cause problem in developer
14994       IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
14995         FOR i IN cz_pb_mgr.v_cz_rules_rf_id_ref.FIRST .. cz_pb_mgr.v_cz_rules_rf_id_ref.LAST LOOP
14996           IF cz_pb_mgr.v_cz_rules_rf_id_ref(i)<>0 THEN
14997             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));
14998           END IF;
14999         END LOOP;
15000       END IF;
15001       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');
15002 
15003       -------------Resolve devl_project_id of cz_rules
15004       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');
15005       -------------Resolve component_id of cz_rules
15006       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);
15007 
15008       -------------Resolve expl id of cz_rules
15009       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');
15010       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');
15011       -------------populate plsql_table_list for cz rules
15012       plsql_table_list.DELETE;
15013       rec_count := 1;
15014       plsql_table_list(rec_count).col_name := 'rule_id';
15015       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
15016       rec_count := rec_count + 1;
15017       plsql_table_list(rec_count).col_name := 'rule_folder_id';
15018       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
15019       rec_count := rec_count + 1;
15020       plsql_table_list(rec_count).col_name := 'devl_project_id';
15021       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
15022       rec_count := rec_count + 1;
15023       plsql_table_list(rec_count).col_name := 'component_id';
15024       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_comp_id_ref';
15025       rec_count := rec_count + 1;
15026       plsql_table_list(rec_count).col_name := 'reason_id';
15027       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rea_id_ref';
15028       rec_count := rec_count + 1;
15029       plsql_table_list(rec_count).col_name := 'unsatisfied_msg_id';
15030       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_unmsg_id_ref';
15031       rec_count := rec_count + 1;
15032       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15033       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
15034       rec_count := rec_count + 1;
15035       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15036       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_expl_ref';
15037       rec_count := rec_count + 1;
15038       plsql_table_list(rec_count).col_name := 'signature_id';
15039       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_sig_ref';
15040       rec_count := rec_count + 1;
15041       plsql_table_list(rec_count).col_name := 'ui_def_id';
15042       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_ui_ref';
15043       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
15044         rec_count := rec_count + 1;
15045         plsql_table_list(rec_count).col_name := 'effective_usage_mask';
15046         plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_rul_usg_msk_tbl';
15047         rec_count := rec_count + 1;
15051 
15048         plsql_table_list(rec_count).col_name := 'persistent_rule_id';
15049         plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_persistent_id_ref';
15050       END IF;
15052       ------populate cz_rules
15053       insert_into_table('cz_rules'
15054 			   ,'rule_id'
15055 			   ,cz_pb_mgr.v_db_link
15056 			   ,plsql_table_list
15057 			   ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
15058 			   ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
15059 			   );
15060 
15061       -----insert new records into cz_rule_folders
15062       plsql_table_list.DELETE;
15063       rec_count := 1;
15064       plsql_table_list(rec_count).col_name := 'rule_folder_id';
15065       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
15066       rec_count := rec_count + 1;
15067       plsql_table_list(rec_count).col_name := 'object_type';
15068       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_obj_ref';
15069       rec_count := rec_count + 1;
15070       plsql_table_list(rec_count).col_name := 'devl_project_id';
15071       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
15072       rec_count := rec_count + 1;
15073       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15074       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
15075       rec_count := rec_count + 1;
15076       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15077       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
15078       ----------insert into cz_func_comp_specs
15079       insert_into_table('cz_rule_folders'
15080                        ,'rule_folder_id'
15081                        ,'object_type'
15082                        ,cz_pb_mgr.v_db_link
15083                        ,plsql_table_list
15084                        ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
15085                        ,'cz_pb_mgr.v_cz_rules_obj_ref'
15086                        ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
15087                        ,cz_pb_mgr.v_cz_rules_obj_ref
15088                        );
15089    END insert_rules;
15090 
15091 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15092    PROCEDURE bulk_collect_archives
15093    IS
15094       l_archive_refs_tbl cz_pb_mgr.t_ref;
15095       l_archive_id_tbl cz_pb_mgr.t_ref;
15096       l_devl_proj_tbl cz_pb_mgr.t_ref;
15097       rec_count NUMBER := 0;
15098       l_archive_count NUMBER := 0;
15099    BEGIN
15100       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15101       THEN
15102          cz_pb_mgr.g_archive_id_old_ref.DELETE;
15103          cz_pb_mgr.g_devl_proj_ref.DELETE;
15104          cz_pb_mgr.g_devl_proj_old_ref.DELETE;
15105          cz_pb_mgr.g_archive_id_ref.DELETE;
15106          cz_pb_mgr.g_archives_idx_ref.DELETE;
15107 
15108          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15109          LOOP
15110             l_archive_refs_tbl.DELETE;
15111             l_devl_proj_tbl.DELETE;
15112 
15113             BEGIN
15114                SELECT archive_id, devl_project_id
15115                BULK COLLECT INTO l_archive_refs_tbl, l_devl_proj_tbl
15116                  FROM cz_archive_refs
15117                 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;
15118             EXCEPTION
15119                WHEN NO_DATA_FOUND
15120                THEN
15121                   NULL;
15122             END;
15123 
15124             IF (l_archive_refs_tbl.COUNT > 0)
15125             THEN
15126                rec_count := cz_pb_mgr.g_archive_id_old_ref.COUNT;
15127 
15128                FOR j IN l_archive_refs_tbl.FIRST .. l_archive_refs_tbl.LAST
15129                LOOP
15130                   rec_count := rec_count + 1;
15131                   --cz_pb_mgr.g_archive_id_ref(rec_count) := l_archive_refs_tbl(j);
15132                   cz_pb_mgr.g_archive_id_old_ref(rec_count) := l_archive_refs_tbl(j);
15133                   cz_pb_mgr.g_devl_proj_ref(rec_count) := l_devl_proj_tbl(j);
15134                   cz_pb_mgr.g_devl_proj_old_ref(rec_count) := l_devl_proj_tbl(j);
15135                END LOOP;
15136             END IF;
15137          END LOOP;
15138       END IF;
15139    EXCEPTION
15140       WHEN OTHERS
15141       THEN
15142          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_archive_refs', 'SQLERRM', SQLERRM);
15143          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ARCHIVES', SQLCODE);
15144          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15145          RAISE;
15146    END bulk_collect_archives;
15147 
15148 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15149    PROCEDURE export_archives
15150    IS
15151       l_archives_tbl t_ref;
15152       l_old_archives_tbl t_ref;
15153       plsql_table_list cz_pb_mgr.col_plsql_table_list;
15154       rec_count NUMBER := 0;
15155    BEGIN
15156       bulk_collect_archives;
15157       cz_pb_mgr.g_archives_old_ref.DELETE;
15158       cz_pb_mgr.g_archives_new_ref.DELETE;
15159       cz_pb_mgr.g_archives_idx_ref.DELETE;
15160 
15161       IF (cz_pb_mgr.g_archive_id_old_ref.COUNT > 0)
15162       THEN
15163          FOR i IN cz_pb_mgr.g_archive_id_old_ref.FIRST .. cz_pb_mgr.g_archive_id_old_ref.LAST
15164          LOOP
15165             l_old_archives_tbl.DELETE;
15166             l_archives_tbl.DELETE;
15167 
15168             SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_archives_seq
15169                                               , 'cz_archives_s.nextval' || cz_pb_mgr.v_db_link
15173             BULK COLLECT INTO l_archives_tbl
15170                                               ,cz_pb_mgr.v_oraclesequenceincr
15171                                               )
15172                   ,archive_id
15174                   ,l_old_archives_tbl
15175               FROM cz_archives
15176              WHERE cz_archives.archive_id = cz_pb_mgr.g_archive_id_old_ref(i) AND cz_archives.deleted_flag = record_not_deleted;
15177 
15178             IF (l_archives_tbl.COUNT > 0)
15179             THEN
15180                FOR j IN l_archives_tbl.FIRST .. l_archives_tbl.LAST
15181                LOOP
15182                   rec_count := cz_pb_mgr.g_archives_new_ref.COUNT + 1;
15183                   cz_pb_mgr.g_archives_new_ref(rec_count) := l_archives_tbl(j);
15184                   cz_pb_mgr.g_archives_idx_ref(cz_pb_mgr.g_archive_id_old_ref(i)) := l_archives_tbl(j);
15185                   cz_pb_mgr.g_archives_old_ref(rec_count) := l_old_archives_tbl(j);
15186                END LOOP;
15187             END IF;
15188          END LOOP;
15189 
15190          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
15191          THEN
15192             mm_sync_archives;
15193          -- resolve the array to only those that need to be inserted
15194          END IF;
15195 
15196          IF (cz_pb_mgr.v_session_parameter <> model_copy AND cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
15197          THEN
15198             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');
15199 
15200 	 ELSE
15201     	   rec_count:=0;
15202     	    FOR I IN cz_pb_mgr.g_archive_id_old_ref.FIRST..cz_pb_mgr.g_archive_id_old_ref.LAST
15203     	     LOOP
15204     	      rec_count:=rec_count+1;
15205               cz_pb_mgr.g_archive_id_ref(rec_count):=cz_pb_mgr.g_archive_id_old_ref(i);
15206     	     END LOOP;
15207          END IF;
15208 
15209          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
15210          THEN
15211             mm_insert_archives;
15212          ELSE
15213             mm_insert_archives_for_pb;
15214          END IF;
15215 
15216          IF (cz_pb_mgr.g_log_timing = publication_timing)
15217          THEN
15218             log_timing_message('end insert_into_table cz_archives');
15219          END IF;
15220       END IF;
15221    EXCEPTION
15222       WHEN OTHERS
15223       THEN
15224          RAISE;
15225    END export_archives;
15226 
15227 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15228    PROCEDURE export_populators
15229    IS
15230       l_filter_sets_id_tbl cz_pb_mgr.t_ref;
15231       l_filter_sets_devl_tbl cz_pb_mgr.t_ref;
15232       l_filter_sets_rule_tbl cz_pb_mgr.t_ref;
15233       l_filter_sets_new_id_tbl cz_pb_mgr.t_ref;
15234       l_populators_new_id_tbl cz_pb_mgr.t_ref;
15235       l_populators_id_tbl cz_pb_mgr.t_ref;
15236       l_populators_node_tbl cz_pb_mgr.t_ref;
15237       l_populators_set_id_tbl cz_pb_mgr.t_ref;
15238       rec_flt_count NUMBER := 0;
15239       rec_pop_count NUMBER := 0;
15240       rec_count PLS_INTEGER := 0;
15241       plsql_table_list cz_pb_mgr.col_plsql_table_list;
15242    BEGIN
15243       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))
15244       THEN
15245          cz_pb_mgr.v_filter_sets_new_id_ref.DELETE;
15246          cz_pb_mgr.v_filter_sets_id_ref.DELETE;
15247          cz_pb_mgr.v_filter_sets_devl_ref.DELETE;
15248          cz_pb_mgr.v_filter_sets_rule_ref.DELETE;
15249          cz_pb_mgr.v_filter_sets_idx_ref.DELETE;
15250 
15251          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15252          LOOP
15253             l_filter_sets_new_id_tbl.DELETE;
15254             l_filter_sets_id_tbl.DELETE;
15255             l_filter_sets_devl_tbl.DELETE;
15256             l_filter_sets_rule_tbl.DELETE;
15257 
15258             BEGIN
15259                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_filter_sets_seq
15260                                                  , 'cz_filter_sets_s.nextval' || cz_pb_mgr.v_db_link
15261                                                  ,cz_pb_mgr.v_oraclesequenceincr
15262                                                  )
15263                      ,filter_set_id, devl_project_id, rule_id
15264                BULK COLLECT INTO l_filter_sets_new_id_tbl
15265                      ,l_filter_sets_id_tbl, l_filter_sets_devl_tbl, l_filter_sets_rule_tbl
15266                  FROM cz_filter_sets
15267                 WHERE cz_filter_sets.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_filter_sets.deleted_flag = '0'
15268                 AND EXISTS (SELECT NULL FROM cz_populators pop, cz_ps_nodes psn
15269                             WHERE pop.deleted_flag = '0' AND pop.filter_set_id = cz_filter_sets.filter_set_id
15270                             AND pop.owned_by_node_id = psn.ps_node_id AND psn.deleted_flag = '0');
15271 
15272             EXCEPTION
15273                WHEN NO_DATA_FOUND
15274                THEN
15275                   NULL;
15276                WHEN OTHERS
15277                THEN
15278                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_filter_sets', 'SQLERRM', SQLERRM);
15279                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FILTERSETS', SQLCODE);
15280                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15281                   RAISE;
15282             END;
15283 
15284             IF (l_filter_sets_id_tbl.COUNT > 0)
15285             THEN
15289                LOOP
15286                rec_flt_count := cz_pb_mgr.v_filter_sets_id_ref.COUNT;
15287 
15288                FOR j IN l_filter_sets_id_tbl.FIRST .. l_filter_sets_id_tbl.LAST
15290                   rec_flt_count := rec_flt_count + 1;
15291                   cz_pb_mgr.v_filter_sets_new_id_ref(rec_flt_count) := l_filter_sets_new_id_tbl(j);
15292                   cz_pb_mgr.v_filter_sets_id_ref(rec_flt_count) := l_filter_sets_id_tbl(j);
15293                   cz_pb_mgr.v_filter_sets_idx_ref(l_filter_sets_id_tbl(j)) := l_filter_sets_new_id_tbl(j);
15294                   cz_pb_mgr.v_filter_sets_devl_ref(rec_flt_count) := l_filter_sets_devl_tbl(j);
15295                   cz_pb_mgr.v_filter_sets_rule_ref(rec_flt_count) := l_filter_sets_rule_tbl(j);
15296                END LOOP;
15297             END IF;
15298          END LOOP;
15299 
15300          IF (cz_pb_mgr.v_filter_sets_id_ref.COUNT > 0)
15301          THEN
15302             cz_pb_mgr.v_populators_new_id_ref.DELETE;
15303             cz_pb_mgr.v_populators_id_ref.DELETE;
15304             cz_pb_mgr.v_populators_node_ref.DELETE;
15305             cz_pb_mgr.v_populators_set_id_ref.DELETE;
15306 
15307             FOR i IN cz_pb_mgr.v_filter_sets_id_ref.FIRST .. cz_pb_mgr.v_filter_sets_id_ref.LAST
15308             LOOP
15309                l_populators_id_tbl.DELETE;
15310                l_populators_node_tbl.DELETE;
15311                l_populators_set_id_tbl.DELETE;
15312                l_populators_new_id_tbl.DELETE;
15313 
15314                BEGIN
15315                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_populators_seq
15316                                                     , 'cz_populators_s.nextval' || cz_pb_mgr.v_db_link
15317                                                     ,cz_pb_mgr.v_oraclesequenceincr
15318                                                     )
15319                         ,populator_id, owned_by_node_id, filter_set_id
15320                   BULK COLLECT INTO l_populators_new_id_tbl
15321                         ,l_populators_id_tbl, l_populators_node_tbl, l_populators_set_id_tbl
15322                     FROM cz_populators
15323                    WHERE cz_populators.filter_set_id = cz_pb_mgr.v_filter_sets_id_ref(i) AND cz_populators.deleted_flag = '0';
15324                EXCEPTION
15325                   WHEN NO_DATA_FOUND
15326                   THEN
15327                      NULL;
15328                   WHEN OTHERS
15329                   THEN
15330                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
15331                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
15332                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15333                      RAISE;
15334                END;
15335 
15336                IF (l_populators_id_tbl.COUNT > 0)
15337                THEN
15338                   rec_pop_count := cz_pb_mgr.v_populators_id_ref.COUNT;
15339 
15340                   FOR j IN l_populators_id_tbl.FIRST .. l_populators_id_tbl.LAST
15341                   LOOP
15342                      rec_pop_count := rec_pop_count + 1;
15343                      cz_pb_mgr.v_populators_new_id_ref(rec_pop_count) := l_populators_new_id_tbl(j);
15344                      cz_pb_mgr.v_populators_id_ref(rec_pop_count) := l_populators_id_tbl(j);
15345                      cz_pb_mgr.v_populators_node_ref(rec_pop_count) := l_populators_node_tbl(j);
15346                      cz_pb_mgr.v_populators_set_id_ref(rec_pop_count) := l_populators_set_id_tbl(j);
15347                   END LOOP;
15348                END IF;
15349             END LOOP;
15350 
15351             ------resolve devl id and rule id
15352             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');
15353             ------resolve devl id
15354             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');
15355             -----resolve ps node id
15356             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');
15357             -----resolve filter set id
15358             resolve_ids(cz_pb_mgr.v_populators_set_id_ref, cz_pb_mgr.v_filter_sets_idx_ref, 'filter set id of cz populators');
15359             plsql_table_list.DELETE;
15360             rec_count := 1;
15361             plsql_table_list(rec_count).col_name := 'filter_set_id';
15362             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_new_id_ref';
15363             rec_count := rec_count + 1;
15364             plsql_table_list(rec_count).col_name := 'devl_project_id';
15365             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_devl_ref';
15366             rec_count := rec_count + 1;
15367             plsql_table_list(rec_count).col_name := 'rule_id';
15368             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_rule_ref';
15369             insert_into_table('cz_filter_sets'
15370                              ,'filter_set_id'
15371                              ,cz_pb_mgr.v_db_link
15372                              ,plsql_table_list
15373                              ,'cz_pb_mgr.v_filter_sets_id_ref'
15374                              ,cz_pb_mgr.v_filter_sets_id_ref
15375                              );
15376             plsql_table_list.DELETE;
15377             rec_count := 1;
15378             plsql_table_list(rec_count).col_name := 'populator_id';
15379             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_new_id_ref';
15380             rec_count := rec_count + 1;
15384             plsql_table_list(rec_count).col_name := 'filter_set_id';
15381             plsql_table_list(rec_count).col_name := 'owned_by_node_id';
15382             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_node_ref';
15383             rec_count := rec_count + 1;
15385             plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_set_id_ref';
15386             insert_into_table('cz_populators'
15387                              ,'populator_id'
15388                              ,cz_pb_mgr.v_db_link
15389                              ,plsql_table_list
15390                              ,'cz_pb_mgr.v_populators_id_ref'
15391                              ,cz_pb_mgr.v_populators_id_ref
15392                              );
15393 
15394             IF (cz_pb_mgr.v_populators_node_ref.COUNT > 0)
15395             THEN
15396                EXECUTE IMMEDIATE
15397                 'BEGIN' || ' ' ||
15398                    'FOR i IN cz_pb_mgr.v_populators_node_ref.FIRST..cz_pb_mgr.v_populators_node_ref.LAST' || ' ' ||
15399                      'LOOP' || ' ' ||
15400                        'UPDATE cz_ps_nodes' ||  cz_pb_mgr.v_db_link  || ' ' || 't' || ' ' ||
15401                           'SET   t.from_populator_id = cz_pb_mgr.v_populators_new_id_ref(i) ' || ' ' ||
15402                           'WHERE  t.devl_project_id = cz_pb_mgr.v_filter_sets_devl_ref(i) AND' || ' ' ||
15403                            't.from_populator_id=cz_pb_mgr.v_populators_id_ref(i) AND' ||  ' ' ||
15404                            't.deleted_flag=''0''; ' || ' ' ||
15405                     'END LOOP;' || ' ' ||
15406                 'END;';
15407 
15408                COMMIT;
15409             END IF;
15410          END IF;
15411       END IF;
15412    EXCEPTION
15413       WHEN OTHERS
15414       THEN
15415          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
15416          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
15417          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15418          RAISE;
15419    END export_populators;
15420 
15421 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15422 ------procedure that uploads rule schema
15423    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)
15424    AS
15425       rec_count PLS_INTEGER := 0;
15426       plsql_table_list cz_pb_mgr.col_plsql_table_list;
15427       v_cz_folders_pf_id_tbl cz_pb_mgr.t_ref;
15428       v_cz_folders_pj_id_tbl cz_pb_mgr.t_ref;
15429       v_cz_express_proj_id_tbl cz_pb_mgr.t_ref;
15430       v_cz_enodes_expr_id_tbl cz_pb_mgr.t_ref;
15431       v_cz_des_feature_id_old_tbl cz_pb_mgr.t_ref;
15432       v_cz_des_feature_rule_id_tbl cz_pb_mgr.t_ref;
15433       v_cz_des_feature_mrefl_id_tbl cz_pb_mgr.t_ref;
15434       v_cz_des_feature_ft_typ_tbl cz_pb_mgr.t_ref;
15435       v_cz_des_cells_rule_id_tbl cz_pb_mgr.t_ref;
15436       v_cz_des_cells_sf_id_tbl cz_pb_mgr.t_ref;
15437       v_cz_des_cells_sopt_id_tbl cz_pb_mgr.t_ref;
15438       v_cz_des_cells_popt_id_tbl cz_pb_mgr.t_ref;
15439       v_cz_des_cells_sexpl_id_tbl cz_pb_mgr.t_ref;
15440       v_cz_des_cells_mark_char_tbl cz_pb_mgr.exprflgtype;
15441       v_cz_rule_folders_orig_tbl cz_pb_mgr.orig_sys_ref_type;
15442       v_cz_rule_folders_eff_tbl cz_pb_mgr.t_ref;
15443       v_sig_count NUMBER := 0;
15444       v_object_type_tbl cz_pb_mgr.objtype;
15445       rec_count_rsq NUMBER := 0;
15446       v_rule_type_tbl cz_pb_mgr.t_ref;
15447       v_model_root_folder_map  cz_pb_mgr.t_ref_idx_vc2;
15448 
15449 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)
15450 IS
15451 BEGIN
15452   IF px_fk_tbl.COUNT=0 THEN RETURN; END IF;
15453 
15454   FOR i IN px_fk_tbl.FIRST .. px_fk_tbl.LAST LOOP
15455     IF px_fk_tbl(i) IS NOT NULL THEN
15456       BEGIN
15457         px_fk_tbl(i) := p_id_map(px_fk_tbl(i));
15458       EXCEPTION
15459         WHEN NO_DATA_FOUND THEN
15460           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15461           FOR j IN (SELECT rule.name rulename, prj.name prjname
15462                     FROM cz_rules rule, cz_devl_projects prj
15463                     WHERE rule.rule_id=p_ruleid_tbl(i) AND rule.devl_project_id=prj.devl_project_id) LOOP
15464             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);
15465             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'upload_rule_schema.mm_resolve_rule_fks', SQLCODE);
15466           END LOOP;
15467           RAISE;
15468       END;
15469     END IF;
15470   END LOOP;
15471 END mm_resolve_rule_fks;
15472 
15473    BEGIN
15474       --------------populate ps nodes pl/sql table with ps node ids from remote server
15475       get_rem_nodes_of_models(cz_pb_mgr.v_models_not_to_be_exported
15476                              ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
15477                              ,cz_pb_mgr.v_status_code
15478                              );
15479       -------insert into cz_rule_folders
15480       clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
15481       mm_v_tbl_rule_seq.DELETE;
15482 
15483       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15484       THEN
15485          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15486          LOOP
15487             clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
15488             v_cz_folders_pf_id_tbl.DELETE;
15489             v_cz_folders_pj_id_tbl.DELETE;
15493 
15490             v_cz_rule_folders_orig_tbl.DELETE;
15491             v_cz_rule_folders_eff_tbl.DELETE;
15492             v_object_type_tbl.DELETE;
15494             BEGIN
15495                IF (cz_pb_mgr.v_session_parameter = model_copy)
15496                THEN
15497 		 IF (p_copy_rules_flag = 'YES') THEN
15498                   SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
15499                                                     , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
15500                                                     ,cz_pb_mgr.v_oraclesequenceincr
15501                                                     )
15502                         ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
15503                         ,orig_sys_ref, object_type
15504                   BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
15505                         ,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
15506                         ,v_cz_rule_folders_eff_tbl, v_object_type_tbl
15507                     FROM cz_rule_folders t
15508                    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');
15509                   ELSE -- Just create the Model Rule Folder if not copying rules
15510                     SELECT cz_pb_mgr.sequence_generate(
15511                              cz_pb_mgr.cz_rule_folders_seq,
15512                              'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
15513                              cz_pb_mgr.v_oraclesequenceincr
15514                            ),
15515                            rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id,orig_sys_ref, object_type
15516                     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,
15517                            v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl, v_cz_rule_folders_eff_tbl, v_object_type_tbl
15518                     FROM   cz_rule_folders t
15519                     WHERE  t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15520                     AND    t.deleted_flag = '0'
15521                     AND    t.parent_rule_folder_id IS NULL
15522                     AND    t.object_type = 'RFL';
15523 		  END IF;
15524                ELSE
15525                   IF (p_copy_rules_flag = 'YES')
15526                   THEN
15527                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
15528                                                        , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
15529                                                        ,cz_pb_mgr.v_oraclesequenceincr
15530                                                        )
15531                            ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
15532                            ,orig_sys_ref, object_type
15533                      BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
15534                            ,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
15535                            ,v_cz_rule_folders_orig_tbl, v_object_type_tbl
15536                        FROM cz_rule_folders t
15537                       WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15538                         AND t.deleted_flag = '0'
15539                         AND t.object_type IN('RFL', 'RSQ');
15540                   ELSE -- Just create the Model Rule Folder if not copying rules
15541                     SELECT cz_pb_mgr.sequence_generate(
15542                              cz_pb_mgr.cz_rule_folders_seq,
15543                              'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
15544                              cz_pb_mgr.v_oraclesequenceincr
15545                            ), rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id, orig_sys_ref, object_type
15546                     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,
15547                            v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl, v_cz_rule_folders_orig_tbl, v_object_type_tbl
15548                     FROM   cz_rule_folders t
15549                     WHERE  t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15550                     AND    t.deleted_flag = '0'
15551                     AND    t.parent_rule_folder_id IS NULL
15552                     AND    t.object_type = 'RFL';
15553                   END IF;
15554                END IF;
15555             EXCEPTION
15556                WHEN NO_DATA_FOUND
15557                THEN
15558                   cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15559                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
15560                WHEN OTHERS
15561                THEN
15562                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rule_folders', 'SQLERRM', SQLERRM);
15563                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
15564                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15565                   RAISE;
15566             END;
15567 
15568             rec_count := cz_pb_mgr.v_cz_folders_id_new_ref.COUNT;
15569             rec_count_rsq := mm_v_tbl_rule_seq.COUNT;
15570 
15571             IF (cz_pb_mgr.v_cz_folders_id_new_tbl.COUNT > 0)
15572             THEN
15573                FOR k IN cz_pb_mgr.v_cz_folders_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_folders_id_new_tbl.LAST
15574                LOOP
15575                   rec_count := rec_count + 1;
15576                   cz_pb_mgr.v_cz_folders_id_new_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_new_tbl(k);
15580                   cz_pb_mgr.v_cz_folders_pj_id_ref(rec_count) := v_cz_folders_pj_id_tbl(k);
15577                   cz_pb_mgr.v_cz_folders_id_old_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_old_tbl(k);
15578                   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);
15579                   cz_pb_mgr.v_cz_folders_pf_id_ref(rec_count) := v_cz_folders_pf_id_tbl(k);
15581                   cz_pb_mgr.v_cz_folders_eff_ref(rec_count) := v_cz_rule_folders_eff_tbl(k);
15582                   cz_pb_mgr.v_cz_folders_orig_ref(rec_count) := v_cz_rule_folders_orig_tbl(k);
15583                   cz_pb_mgr.v_cz_folders_obj_ref(rec_count) := v_object_type_tbl(k);
15584 
15585                   IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
15586                     v_model_root_folder_map(cz_pb_mgr.v_models_to_be_exported(i)):=v_cz_folders_id_old_tbl(k);
15587                   END IF;
15588 
15589                   IF (v_object_type_tbl(k) = 'RSQ')
15590                   THEN
15591                      rec_count_rsq := rec_count_rsq + 1;
15592                      mm_v_tbl_rule_seq(rec_count_rsq) := v_cz_folders_id_old_tbl(k);
15593                   END IF;
15594                END LOOP;
15595             END IF;
15596          END LOOP;      /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
15597       END IF;           /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
15598 
15599       -----resolve parent rule folder id and devl proj id
15600       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');
15601       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');
15602       insert_eff_sets(cz_pb_mgr.v_cz_folders_eff_ref
15603                      ,cz_pb_mgr.v_cz_eff_sets_old_tbl
15604                      ,cz_pb_mgr.v_cz_eff_sets_new_tbl
15605                      ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
15606                      ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
15607                      ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
15608                      ,'Eff sets of rule folders'
15609                      );
15610       resolve_ids(cz_pb_mgr.v_cz_folders_eff_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff id of rule folders');
15611       -----insert new records into cz_rule_folders
15612       plsql_table_list.DELETE;
15613       rec_count := 1;
15614       plsql_table_list(rec_count).col_name := 'rule_folder_id';
15615       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_id_new_ref';
15616       rec_count := rec_count + 1;
15617       plsql_table_list(rec_count).col_name := 'object_type';
15618       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_obj_ref';
15619       rec_count := rec_count + 1;
15620       plsql_table_list(rec_count).col_name := 'devl_project_id';
15621       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pj_id_ref';
15622       rec_count := rec_count + 1;
15623       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15624       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pf_id_ref';
15625       rec_count := rec_count + 1;
15626       plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15627       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_eff_ref';
15628       rec_count := rec_count + 1;
15629       plsql_table_list(rec_count).col_name := 'orig_sys_ref';
15630       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_orig_ref';
15631       insert_into_table('cz_rule_folders'
15632                        ,'rule_folder_id'
15633                        ,'object_type'
15634                        ,cz_pb_mgr.v_db_link
15635                        ,plsql_table_list
15636                        ,'cz_pb_mgr.v_cz_folders_id_old_ref'
15637                        ,'cz_pb_mgr.v_cz_folders_obj_ref'
15638                        ,cz_pb_mgr.v_cz_folders_id_old_ref
15639                        ,cz_pb_mgr.v_cz_folders_obj_ref
15640                        );
15641 
15642       --------release local pl/sql tables of rule folders
15643       v_cz_folders_pf_id_tbl.DELETE;
15644       v_cz_folders_pj_id_tbl.DELETE;
15645       v_cz_rule_folders_eff_tbl.DELETE;
15646       v_cz_rule_folders_orig_tbl.DELETE;
15647       clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
15648 
15649       -------------insert into func comp specs
15650      IF cz_pb_mgr.v_cz_func_comp_old_ref.COUNT > 0 THEN
15651       IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
15652         FOR i IN cz_pb_mgr.v_cz_func_fld_old_ref.FIRST .. cz_pb_mgr.v_cz_func_fld_old_ref.LAST LOOP
15653           IF cz_pb_mgr.v_cz_func_fld_old_ref(i) IS NOT NULL THEN
15654             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));
15655           END IF;
15656         END LOOP;
15657       END IF;
15658       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');
15659 
15660       IF (cz_pb_mgr.g_log_timing = publication_timing)
15661       THEN
15662          log_timing_message('start resolve_ids devl project id of cz_func_comp_specs');
15663       END IF;
15664 
15665       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');
15666 
15667       IF (cz_pb_mgr.g_log_timing = publication_timing)
15668       THEN
15669          log_timing_message('end resolve_ids devl project id of cz_func_comp_specs');
15670          log_timing_message('start resolve_ids component id of cz_func_comp_specs');
15671       END IF;
15672 
15676       THEN
15673       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);
15674 
15675       IF (cz_pb_mgr.g_log_timing = publication_timing)
15677          log_timing_message('end resolve_ids component id of cz_func_comp_specs');
15678          log_timing_message('start resolve_ids model ref expl id of cz_funce_comp_specs');
15679       END IF;
15680 
15681       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');
15682 
15683       IF (cz_pb_mgr.g_log_timing = publication_timing)
15684       THEN
15685          log_timing_message('end resolve_ids model ref expl id of cz_funce_comp_specs');
15686       END IF;
15687 
15688       --------populate plsql_table_list for cz func comp specs
15689       plsql_table_list.DELETE;
15690       rec_count := 1;
15691       plsql_table_list(rec_count).col_name := 'func_comp_id';
15692       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
15693       rec_count := rec_count + 1;
15694       plsql_table_list(rec_count).col_name := 'devl_project_id';
15695       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
15696       rec_count := rec_count + 1;
15697       plsql_table_list(rec_count).col_name := 'component_id';
15698       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_cid_old_ref';
15699       rec_count := rec_count + 1;
15700       plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15701       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_expl_old_ref';
15702       rec_count := rec_count + 1;
15703       plsql_table_list(rec_count).col_name := 'rule_folder_id';
15704       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
15705 
15706       ----------insert into cz_func_comp_specs
15707       IF (cz_pb_mgr.g_log_timing = publication_timing)
15708       THEN
15709          log_timing_message('start insert_into_table cz_func_comp_specs');
15710       END IF;
15711 
15712       insert_into_table('cz_func_comp_specs'
15713                        ,'func_comp_id'
15714                        ,cz_pb_mgr.v_db_link
15715                        ,plsql_table_list
15716                        ,'cz_pb_mgr.v_cz_func_comp_old_ref'
15717                        ,cz_pb_mgr.v_cz_func_comp_old_ref
15718                        );
15719 
15720       IF (cz_pb_mgr.g_log_timing = publication_timing)
15721       THEN
15722          log_timing_message('end insert_into_table cz_func_comp_specs');
15723       END IF;
15724 
15725       -----insert new records into cz_rule_folders
15726       plsql_table_list.DELETE;
15727       rec_count := 1;
15728       plsql_table_list(rec_count).col_name := 'rule_folder_id';
15729       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
15730       rec_count := rec_count + 1;
15731       plsql_table_list(rec_count).col_name := 'object_type';
15732       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_obj_ref';
15733       rec_count := rec_count + 1;
15734       plsql_table_list(rec_count).col_name := 'devl_project_id';
15735       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
15736       rec_count := rec_count + 1;
15737       plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15738       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
15739       ----------insert into cz_func_comp_specs
15740       insert_into_table('cz_rule_folders'
15741                        ,'rule_folder_id'
15742                        ,'object_type'
15743                        ,cz_pb_mgr.v_db_link
15744                        ,plsql_table_list
15745                        ,'cz_pb_mgr.v_cz_func_comp_old_ref'
15746                        ,'cz_pb_mgr.v_cz_func_obj_ref'
15747                        ,cz_pb_mgr.v_cz_func_comp_old_ref
15748                        ,cz_pb_mgr.v_cz_func_obj_ref
15749                        );
15750      END IF;
15751 
15752       -----export archives
15753       export_archives;
15754       export_populators;
15755 
15756       IF cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 THEN
15757         insert_rules(p_copy_rules_flag, v_model_root_folder_map);
15758       END IF;
15759 
15760       IF cz_pb_mgr.v_session_parameter = pub_model THEN
15761         IF g_engine_type = ENGINE_TYPE_FCE THEN
15762           copy_fce_files;
15763         ELSE
15764           copy_lce_headers;
15765           copy_lce_texts(p_copy_rules_flag);
15766         END IF;
15767       END IF;
15768 
15769          ---------------local pl/sql tables of cz rules released after populating rule sub schema
15770          -------------insert expressions
15771          IF (cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0)
15772          THEN
15773             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
15774             LOOP
15775                clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
15776 
15777                BEGIN
15778                   IF (cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model))
15779                   THEN
15780                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
15781                                                        , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
15782                                                        ,cz_pb_mgr.v_oraclesequenceincr
15783                                                        )
15787                      BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
15784                            ,expr_node_id, ps_node_id, expr_parent_id
15785                            ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
15786                            ,param_signature_id,property_id
15788                            ,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
15789                            ,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
15790                            ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
15791                            ,cz_pb_mgr.v_cz_enodes_prop_id_tbl
15792                        FROM cz_expression_nodes t
15793                       WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0';
15794                   ELSE
15795                      SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
15796                                                        , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
15797                                                        ,cz_pb_mgr.v_oraclesequenceincr
15798                                                        )
15799                            ,expr_node_id, ps_node_id, expr_parent_id
15800                            ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
15801                            ,param_signature_id
15802                      BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
15803                            ,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
15804                            ,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
15805                            ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
15806                        FROM cz_expression_nodes t
15807                       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;
15808                   END IF;
15809                EXCEPTION
15810                   WHEN NO_DATA_FOUND
15811                   THEN
15812                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15813                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
15814                   WHEN OTHERS
15815                   THEN
15816                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_expression_nodes', 'SQLERRM', SQLERRM);
15817                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
15818                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15819                      RAISE;
15820                END;
15821 
15822                rec_count := cz_pb_mgr.v_cz_enodes_enode_id_new_ref.COUNT;
15823 
15824                IF (cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.COUNT > 0)
15825                THEN
15826                   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
15827                   LOOP
15828                      rec_count := rec_count + 1;
15829                      cz_pb_mgr.v_cz_enodes_enode_id_new_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
15830                      cz_pb_mgr.v_cz_enodes_enode_id_old_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i);
15831                      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);
15832                      cz_pb_mgr.v_cz_enodes_psnode_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_psnode_id_tbl(i);
15833                      cz_pb_mgr.v_cz_enodes_pexpr_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_pexpr_id_tbl(i);
15834                      cz_pb_mgr.v_cz_enodes_mrefl_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_mrefl_id_tbl(i);
15835                      cz_pb_mgr.v_cz_enodes_rule_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_rule_id_tbl(i);
15836                      cz_pb_mgr.v_cz_enodes_arg_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
15837                      cz_pb_mgr.v_cz_enodes_par_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
15838 
15839                      IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
15840                      THEN
15841                       cz_pb_mgr.v_cz_enodes_prop_id_ref(rec_count):=cz_pb_mgr.v_cz_enodes_prop_id_tbl(i);
15842                      END IF;
15843 
15844                      IF (cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i) IS NOT NULL)
15845                      THEN
15846                         IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)))
15847                         THEN
15848                            v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
15849                            cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
15850                            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);
15851                         END IF;
15852                      END IF;
15853 
15854                      IF (cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i) IS NOT NULL)
15855                      THEN
15856                         IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)))
15857                         THEN
15858                            v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
15859                            cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
15863                   END LOOP;
15860                            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);
15861                         END IF;
15862                      END IF;
15864                END IF;
15865             END LOOP;                                                           /* end loop of */
15866          END IF;  -- end cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0                                                                                                                     /* (COUNT > 0) */
15867 
15868          --------export_signatures
15869          export_signatures(cz_pb_mgr.v_cz_expr_sig_ref);
15870          -----------resolve parent expr node id
15871          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);
15872          -------resolve sig ids
15873          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);
15874          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);
15875 
15876          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
15877            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');
15878            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');
15879            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);
15880          ELSE
15881            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);
15882            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);
15883          END IF;
15884 
15885          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');
15886 
15887          --------populate plsql_table_list for cz_expression_nodes
15888          plsql_table_list.DELETE;
15889          rec_count := 1;
15890          plsql_table_list(rec_count).col_name := 'expr_node_id';
15891          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_enode_id_new_ref';
15892          rec_count := rec_count + 1;
15893          plsql_table_list(rec_count).col_name := 'rule_id';
15894          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_rule_id_ref';
15895          rec_count := rec_count + 1;
15896          plsql_table_list(rec_count).col_name := 'ps_node_id';
15897          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_psnode_id_ref';
15898          rec_count := rec_count + 1;
15899          plsql_table_list(rec_count).col_name := 'expr_parent_id';
15900          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_pexpr_id_ref';
15901          rec_count := rec_count + 1;
15902          plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15903          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_mrefl_id_ref';
15904          rec_count := rec_count + 1;
15905          plsql_table_list(rec_count).col_name := 'argument_signature_id';
15906          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_arg_sig_id_ref';
15907          rec_count := rec_count + 1;
15908          plsql_table_list(rec_count).col_name := 'param_signature_id';
15909          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_par_sig_id_ref';
15910 
15911          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
15912          THEN
15913           rec_count := rec_count + 1;
15914           plsql_table_list(rec_count).col_name := 'property_id';
15915           plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_prop_id_ref';
15916 	 END IF;
15917 
15918          ------insert new records into cz_expression_nodes
15919          insert_into_table('cz_expression_nodes'
15920                           ,'expr_node_id'
15921                           ,cz_pb_mgr.v_db_link
15922                           ,plsql_table_list
15923                           ,'cz_pb_mgr.v_cz_enodes_enode_id_old_ref'
15924                           ,cz_pb_mgr.v_cz_enodes_enode_id_old_ref
15925                           );
15926          --------release tbl pl/sql tables of cz expression nodes
15927          clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
15928 
15929       IF (p_copy_rules_flag = 'YES') THEN
15930 
15931          -------------insert into cz_des_chart_features
15932          clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
15933 
15934          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15935          THEN
15936             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15937             LOOP
15938                v_cz_des_feature_id_old_tbl.DELETE;
15939                v_cz_des_feature_rule_id_tbl.DELETE;
15940                v_cz_des_feature_mrefl_id_tbl.DELETE;
15941                v_cz_des_feature_ft_typ_tbl.DELETE;
15942 
15943                BEGIN
15944                  SELECT feature_id, rule_id, model_ref_expl_id, feature_type
15945                  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
15946                  FROM cz_des_chart_features t
15947                  WHERE t.rule_id IN(
15951                                   AND cz_rules.deleted_flag = '0')
15948                                SELECT rule_id
15949                                  FROM cz_rules
15950                                 WHERE cz_rules.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15952                         AND t.deleted_flag = '0';
15953                EXCEPTION
15954                   WHEN NO_DATA_FOUND
15955                   THEN
15956                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15957                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
15958                   WHEN OTHERS
15959                   THEN
15960                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
15961                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
15962                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15963                      RAISE;
15964                END;
15965 
15966                rec_count := cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT;
15967 
15968                IF (v_cz_des_feature_id_old_tbl.COUNT > 0)
15969                THEN
15970                   FOR k IN v_cz_des_feature_id_old_tbl.FIRST .. v_cz_des_feature_id_old_tbl.LAST
15971                   LOOP
15972                      rec_count := rec_count + 1;
15973                      cz_pb_mgr.v_cz_des_feature_id_old_ref(rec_count) := v_cz_des_feature_id_old_tbl(k);
15974                      cz_pb_mgr.v_cz_des_feature_rule_id_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
15975                      cz_pb_mgr.v_cz_des_feature_rid_new_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
15976                      cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(rec_count) := v_cz_des_feature_mrefl_id_tbl(k);
15977                      cz_pb_mgr.v_cz_des_feature_ft_typ_ref(rec_count) := v_cz_des_feature_ft_typ_tbl(k);
15978                   END LOOP;
15979                END IF;
15980             END LOOP;                                     /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
15981          END IF;                                          /* cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
15982 
15983          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
15984            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');
15985            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');
15986          ELSE
15987            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);
15988            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);
15989          END IF;
15990 
15991          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');
15992 
15993          ------insert new records into cz_des_chart_features
15994          insert_des_chart_features(cz_pb_mgr.v_status_code);
15995          -------------release local pl/sql tables of des chart features
15996          v_cz_des_feature_id_old_tbl.DELETE;
15997          v_cz_des_feature_rule_id_tbl.DELETE;
15998          v_cz_des_feature_mrefl_id_tbl.DELETE;
15999          v_cz_des_feature_ft_typ_tbl.DELETE;
16000          ------------insert into cz_des_chart_cells
16001          clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
16002 
16003          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16004          THEN
16005             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16006             LOOP
16007                v_cz_des_cells_rule_id_tbl.DELETE;
16008                v_cz_des_cells_sf_id_tbl.DELETE;
16009                v_cz_des_cells_sopt_id_tbl.DELETE;
16010                v_cz_des_cells_popt_id_tbl.DELETE;
16011                v_cz_des_cells_sexpl_id_tbl.DELETE;
16012                v_rule_type_tbl.DELETE;
16013 
16014                BEGIN
16015                  SELECT rul.rule_id, secondary_feature_id, primary_opt_id, secondary_opt_id
16016                       , secondary_feat_expl_id, mark_char, rule_type
16017                  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
16018                                   ,v_cz_des_cells_sexpl_id_tbl, v_cz_des_cells_mark_char_tbl, v_rule_type_tbl
16019                  FROM cz_rules rul, cz_des_chart_cells dcc
16020                  WHERE rul.deleted_flag = '0' AND rul.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16021                  AND rul.rule_id = dcc.rule_id AND dcc.deleted_flag = '0';
16022                EXCEPTION
16023                   WHEN NO_DATA_FOUND
16024                   THEN
16025                      cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16026                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
16027                   WHEN OTHERS
16028                   THEN
16029                      cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
16030                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
16031                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16032                      RAISE;
16033                END;
16034 
16035                rec_count := cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.COUNT;
16036 
16040                   LOOP
16037                IF (v_cz_des_cells_rule_id_tbl.COUNT > 0)
16038                THEN
16039                   FOR k IN v_cz_des_cells_rule_id_tbl.FIRST .. v_cz_des_cells_rule_id_tbl.LAST
16041                      rec_count := rec_count + 1;
16042                      cz_pb_mgr.v_cz_des_cells_rule_id_old_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
16043                      cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
16044                      cz_pb_mgr.v_cz_des_cells_sf_id_ref(rec_count) := v_cz_des_cells_sf_id_tbl(k);
16045                      cz_pb_mgr.v_cz_des_cells_sopt_id_ref(rec_count) := v_cz_des_cells_sopt_id_tbl(k);
16046                      cz_pb_mgr.v_cz_des_cells_popt_id_ref(rec_count) := v_cz_des_cells_popt_id_tbl(k);
16047                      cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(rec_count) := v_cz_des_cells_sexpl_id_tbl(k);
16048                      cz_pb_mgr.v_cz_des_cells_mark_char_ref(rec_count) := v_cz_des_cells_mark_char_tbl(k);
16049                   END LOOP;
16050                END IF;
16051             END LOOP;                       /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
16052          END IF;                            /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
16053 
16054          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');
16055          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);
16056 
16057          IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
16058            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');
16059            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');
16060            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');
16061          ELSE
16062            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);
16063            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);
16064            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);
16065          END IF;
16066 
16067          ------insert new records into cz_des_chart_cells
16068          insert_des_chart_cells(cz_pb_mgr.v_status_code);
16069 
16070          --during model migration, if a rule_seq has a rule whose effectivity_set_id already
16071          --exists on the target, then set the rule effectivity to be
16072          --never effective for all the rules in that rule sequence
16073          --do this only if there is something to resolve(mm_v_ht_eff_set_tbl_t.COUNT >0)
16074          IF (    (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16075              AND (mm_v_tbl_rule_seq.COUNT > 0)
16076              AND (mm_v_ht_eff_set_tbl_t.COUNT > 0)
16077             )
16078          THEN
16079             mm_resolve_rule_seq_effsetid;
16080          END IF;
16081 
16082          -------------release local pl/sql tables of cz des chart cells
16083          v_cz_des_cells_rule_id_tbl.DELETE;
16084          v_cz_des_cells_sf_id_tbl.DELETE;
16085          v_cz_des_cells_sopt_id_tbl.DELETE;
16086          v_cz_des_cells_popt_id_tbl.DELETE;
16087          v_cz_des_cells_sexpl_id_tbl.DELETE;
16088 
16089       ELSE
16090          clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
16091       END IF;
16092    EXCEPTION
16093       WHEN OTHERS
16094       THEN
16095          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
16096          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_sql_err_msg, 'cz_pb_mgr.RULESCHEMA', SQLCODE);
16097          x_status := PUBLICATION_ERROR;
16098          RAISE pb_upload_rule_schema;
16099    END upload_rule_schema;
16100 -----------------------------------------------------------------------------------------------------
16101    PROCEDURE mm_raiseallpossiblesyncerrors
16102    AS
16103       v_prop_id cz_properties.property_id%TYPE;
16104       v_error_flag PLS_INTEGER := 0;
16105       v_null PLS_INTEGER;
16106       j PLS_INTEGER;
16107       v_target_item_type_name cz_item_types.name%TYPE;
16108 
16109       v_null_table  number_type_tbl;
16110 
16111    BEGIN
16112 -- PROPERTY: check if there is atleast one property where the names match, but datatype does not
16113 -- ITEM_TYPES: check if there are more source item properties than target item properties
16114 -- ITEM TYPES: heck if there is atleast one item where the item_type is different
16115 -- UI CONTENT TEMPLATES: UI Content template failure - exact match on TEMPLATE_TYPE, MESSAGE_TYPE, but mismatch
16116 --         on either of ROOT_ELEMENT_TYPE, MAIN_MESSAGE_ID, PARENT_CONTAINER_TYPE,
16117 --         ROOT ELEMENT SIGNATURE_ID or ROOT_REGION_CODE
16118 -- USAGE: Name does not match, but there are already 64 Usages
16119       FOR i IN 1 .. v_remote_prop_ref.COUNT
16120       LOOP
16121          BEGIN
16122             EXECUTE IMMEDIATE    'SELECT data_type FROM cz_properties'
16123                               || cz_pb_mgr.v_db_link
16124                               || ' WHERE deleted_flag = ''0'' AND name = :1 AND NVL(src_application_id, 0) = :2'
16125                          INTO v_null
16129             THEN
16126                         USING v_property_record_ref(v_remote_prop_ref(i)).NAME, v_property_record_ref(v_remote_prop_ref(i)).src_application_id;
16127 
16128             IF (v_null <> v_property_record_ref(v_remote_prop_ref(i)).data_type)
16130 --~> 'Property ''%PROPERTYNAME'' has a different data type on the target instance.'
16131                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);
16132                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16133                v_error_flag := 1;
16134             END IF;
16135          EXCEPTION
16136             WHEN NO_DATA_FOUND
16137             THEN
16138                NULL;
16139          END;
16140       END LOOP;
16141 
16142       FOR i IN 1 .. v_item_types_new_ref.COUNT
16143       LOOP
16144          BEGIN
16145             EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_types'
16146                               || cz_pb_mgr.v_db_link
16147                               || 'it '
16148                               || ' WHERE it.deleted_flag = ''0'''
16149                               || '   AND it.name = :1'
16150                               || '   AND NVL(it.src_application_id, 0) = :2'
16151                          INTO v_null
16152                         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;
16153 
16154             j := v_type_property_record_ref(v_item_types_new_ref(i)).FIRST;
16155 
16156             WHILE(j IS NOT NULL)
16157             LOOP
16158                BEGIN
16159                   EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_types'
16160                                     || cz_pb_mgr.v_db_link
16161                                     || 'it, '
16162                                     || '                 cz_item_type_properties'
16163                                     || cz_pb_mgr.v_db_link
16164                                     || 'tp, '
16165                                     || '                 cz_properties'
16166                                     || cz_pb_mgr.v_db_link
16167                                     || ' pr '
16168                                     || ' WHERE it.deleted_flag = ''0'''
16169                                     || '   AND pr.deleted_flag = ''0'''
16170                                     || '   AND tp.deleted_flag = ''0'''
16171                                     || '   AND it.item_type_id = tp.item_type_id'
16172                                     || '   AND pr.property_id = tp.property_id'
16173                                     || '   AND it.name = :1'
16174                                     || '   AND NVL(it.src_application_id, 0) = :2'
16175                                     || '   AND pr.name = :3'
16176                                     || '   AND NVL(pr.src_application_id, 0) = :4'
16177                                INTO v_null
16178                               USING v_type_record_ref(v_item_types_new_ref(i)).NAME
16179                                    ,v_type_record_ref(v_item_types_new_ref(i)).src_application_id
16180                                    ,v_type_property_record_ref(v_item_types_new_ref(i))(j).NAME
16181                                    ,v_type_property_record_ref(v_item_types_new_ref(i))(j).src_application_id;
16182                EXCEPTION
16183                   WHEN NO_DATA_FOUND
16184                   THEN
16185                      v_error_flag := 1;
16186                      --~> 'Item type ''%ITEMTYPENAME'' has a different combination of properties on the target instance.'
16187                      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);
16188                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16189                END;
16190 
16191                j := v_type_property_record_ref(v_item_types_new_ref(i)).NEXT(j);
16192             END LOOP;
16193          EXCEPTION
16194             WHEN NO_DATA_FOUND
16195             THEN
16196                NULL;
16197          END;
16198       END LOOP;
16199 
16200       FOR i IN 1 .. v_item_masters_tbl.COUNT
16201       LOOP
16202 
16203          --Bug #6972667. This query can return several items with the same ref_part_nbr in different item types.
16204          --Judging from the SELECT NULL and empty exception block for no_data_found, the only purpose of this
16205          --query is to skip the second verification for items that don't exist on the target, so we can just
16206          --use BULK COLLECT.
16207 
16208          EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_masters'
16209                            || cz_pb_mgr.v_db_link
16210                            || ' it '
16211                            || ' WHERE it.deleted_flag = ''0'''
16212                            || '   AND it.ref_part_nbr = :1'
16213                            || '   AND NVL(it.src_application_id, 0) = :2'
16214                            || '   AND NVL(it.orig_sys_ref, ''0'') = :3'
16215                       BULK COLLECT INTO v_null_table
16216                      USING mm_v_itmst_ref_part_nbr_ref(i)
16217                          , mm_v_itmst_src_app_id_ref(i)
16218                          --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16219                          --source item_id
16220                          , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16221 
16222          IF ( v_null_table.COUNT > 0 ) THEN
16223 
16224             BEGIN
16228                                  || '                 cz_item_types'
16225                EXECUTE IMMEDIATE    'SELECT NULL FROM cz_item_masters'
16226                                  || cz_pb_mgr.v_db_link
16227                                  || ' it, '
16229                                  || cz_pb_mgr.v_db_link
16230                                  || ' ip '
16231                                  || ' WHERE it.deleted_flag = ''0'''
16232                                  || '   AND ip.deleted_flag = ''0'''
16233                                  || '   AND it.ref_part_nbr = :1'
16234                                  || '   AND NVL(it.src_application_id, 0) = :2'
16235                                  || '   AND ip.name = :3'
16236                                  || '   AND NVL(ip.src_application_id, 0) = :4'
16237                                  || '   AND NVL(it.orig_sys_ref, ''0'') = :5'
16238 
16239                                   --Bug #6972667. Missing join condition.
16240 
16241                                  || '   AND ip.item_type_id = it.item_type_id'
16242                             INTO v_null
16243                            USING mm_v_itmst_ref_part_nbr_ref(i)
16244                                , mm_v_itmst_src_app_id_ref(i)
16245                                , v_type_record_ref(v_item_types_tbl(i)).NAME
16246                                , v_type_record_ref(v_item_types_tbl(i)).src_application_id
16247                                --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16248                                --source item_id
16249                                , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16250             EXCEPTION
16251                WHEN NO_DATA_FOUND
16252                THEN
16253                   v_error_flag := 1;
16254                   --~> 'Item ''%ITEMNAME'' has a different item type on the target instance.'
16255 		  -- Bug 5219852; 06-Sep-2006; kdande; Modified the message to show the source and target item type names
16256                   EXECUTE IMMEDIATE    'SELECT ip.name FROM cz_item_masters'
16257                                    || cz_pb_mgr.v_db_link
16258                                    || ' it, cz_item_types'
16259                                    || cz_pb_mgr.v_db_link
16260                                    || ' ip '
16261                                    || ' WHERE it.deleted_flag = ''0'''
16262                                    || '   AND ip.deleted_flag = ''0'''
16263                                    || '   AND it.ref_part_nbr = :1'
16264                                    || '   AND ip.item_type_id = it.item_type_id'
16265                                    || '   AND NVL(it.src_application_id, 0) = :2'
16266                                    || '   AND NVL(it.orig_sys_ref, ''0'') = :3'
16267                               INTO v_target_item_type_name
16268                              USING mm_v_itmst_ref_part_nbr_ref(i)
16269                                  , mm_v_itmst_src_app_id_ref(i)
16270                                  --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16271                                  --source item_id
16272                                  , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16273                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEM', 'ITEMNAME', mm_v_itmst_ref_part_nbr_ref(i),
16274                                              'SRCNAME', v_type_record_ref(v_item_types_tbl(i)).NAME,
16275 					     'TGTNAME', v_target_item_type_name);
16276                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16277             END;
16278          END IF; --v_null_table.COUNT > 0
16279       END LOOP;
16280 
16281       IF (v_error_flag = 1)
16282       THEN
16283          RAISE cz_pb_global_synch;
16284       END IF;
16285    EXCEPTION
16286       WHEN cz_pb_global_synch
16287       THEN
16288          RAISE;
16289       WHEN OTHERS
16290       THEN
16291 --~>'Unexpected error during upfront validation: %ERRORTEXT'
16292          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_UNEXPECTED', 'ERRORTEXT', SQLERRM);
16293          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16294          RAISE;
16295    END mm_raiseallpossiblesyncerrors;
16296 ------------------------------------------------------------------------------------------------
16297 --Bug #5186307. The bug is deferred.
16298 /*
16299 PROCEDURE split_item_origsysref( p_origsysref IN VARCHAR2
16300                                , x_item_id OUT NOCOPY NUMBER
16301                                , x_org_id  OUT NOCOPY NUMBER) IS
16302 BEGIN
16303 
16304   --The values can only be not null valid numbers, otherwise TO_NUMBER will fail.
16305 
16306   x_item_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, 1, INSTR(p_origsysref, ':') - 1), 'NULL'));
16307   x_org_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, INSTR(p_origsysref, ':') + 1), 'NULL'));
16308 END;
16309 */
16310 ------------------------------------------------------------------------------------------------
16311 --Bug #5186307. The bug is deferred, the function just returns the parameter.
16312 /*
16313 FUNCTION synch_item_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
16314 
16315   l_item_id   NUMBER;
16316   l_org_id    NUMBER;
16317 BEGIN
16318 
16319   IF(p_origsysref IS NULL)THEN
16320 
16321     --This is an item with source application INV and null orig_sys_ref. Don't do anything for now,
16322     --but this may be a problem. Not sure if this can happen here, may be caught earlier.
16323 
16327   IF(v_item_synched_osr.EXISTS(p_origsysref))THEN RETURN v_item_synched_osr(p_origsysref); END IF;
16324     RETURN NULL;
16325   END IF;
16326 
16328 
16329   --Just return the parameter.
16330 
16331   --split_item_origsysref(p_origsysref, l_item_id, l_org_id);
16332 
16333   v_item_synched_osr(p_origsysref) := p_origsysref;
16334   RETURN v_item_synched_osr(p_origsysref);
16335 END;
16336 */
16337 ------------------------------------------------------------------------------------------------
16338 --Bug #5186307. The bug is deferred, the function just returns the parameter.
16339 /*
16340 FUNCTION synch_itemtype_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
16341 
16342   l_catalog_id   NUMBER;
16343 BEGIN
16344 
16345   IF(p_origsysref IS NULL)THEN
16346 
16347     --This is an item type with source application INV and null orig_sys_ref. Don't do anything for
16348     --now, but this may be a problem. Not sure if this can happen here, may be caught earlier.
16349 
16350     RETURN NULL;
16351   END IF;
16352 
16353   IF(v_itemtype_synched_osr.EXISTS(p_origsysref))THEN RETURN v_itemtype_synched_osr(p_origsysref); END IF;
16354 
16355   --The value can only be a valid not null number.
16356 
16357   l_catalog_id := TO_NUMBER(p_origsysref);
16358 
16359   --Just return the parameter.
16360 
16361   v_itemtype_synched_osr(p_origsysref) := p_origsysref;
16362   RETURN v_itemtype_synched_osr(p_origsysref);
16363 END;
16364 */
16365 ------------------------------------------------------------------------------------------------
16366 --This procedure reads the item/property data into the arrays, previously done by insert_item_schema,
16367 --and performs the upfron validations for model migration.
16368    PROCEDURE read_item_schema
16369    IS
16370       v_cz_items_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
16371       v_cz_types_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
16372       v_item_types_orig_tbl cz_pb_mgr.orig_sys_ref_type;
16373       v_remote_prop_tbl cz_pb_mgr.t_ref;
16374       v_prop_type_tbl cz_pb_mgr.t_ref;
16375       v_prop_src_app_tbl cz_pb_mgr.t_ref;
16376       v_prop_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
16377       v_type_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
16378       v_type_src_app_tbl cz_pb_mgr.t_ref;
16379       v_bom_flg_tbl cz_pb_mgr.t_ref;
16380       v_bom_flg_ref cz_pb_mgr.t_ref;
16381       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16382       rec_count NUMBER;
16383       mm_v_itmst_ref_part_nbr_tbl varchar_type_4000_tbl;
16384       mm_v_itmst_src_app_id_tbl t_ref;
16385    BEGIN
16386 ---COLLECT ALL THE SOURCE ITEM MASTER RECORDS
16387       IF (cz_pb_mgr.v_ps_item_id_tbl.COUNT > 0)
16388       THEN
16389          cz_pb_mgr.v_item_masters_tbl.DELETE;
16390          cz_pb_mgr.v_item_types_tbl.DELETE;
16391          cz_pb_mgr.v_items_orig_ref.DELETE;
16392 
16393          FOR i IN cz_pb_mgr.v_ps_item_id_tbl.FIRST .. cz_pb_mgr.v_ps_item_id_tbl.LAST
16394          LOOP
16395             cz_pb_mgr.v_item_masters_ref.DELETE;
16396             cz_pb_mgr.v_item_types_ref.DELETE;
16397             v_bom_flg_tbl.DELETE;
16398             v_item_types_orig_tbl.DELETE;
16399 
16400             BEGIN
16401                IF ((cz_pb_mgr.v_ps_type_old_tbl(i) = 436) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = 437) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = 438))
16402                THEN
16403                   SELECT item_id, item_type_id
16404                         ,DECODE(cz_pb_mgr.bomsynch_flag
16405                                ,'Y', NVL(cz_bom_synch.itemmaster_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
16406                                ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
16407                                )
16408                         ,bom_item, ref_part_nbr, NVL(src_application_id, 0)
16409                   BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref
16410                         ,v_item_types_orig_tbl
16411                         ,v_bom_flg_tbl, mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
16412                     FROM cz_item_masters
16413                    WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
16414                      AND cz_item_masters.item_id IS NOT NULL
16415                      AND cz_item_masters.deleted_flag = '0';
16416                ELSE
16417                   SELECT item_id, item_type_id, orig_sys_ref, nonbom_item
16418                         ,ref_part_nbr, NVL(src_application_id, 0)
16419                   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
16420                         ,mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
16421                     FROM cz_item_masters
16422                    WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
16423                      AND cz_item_masters.item_id IS NOT NULL
16424                      AND cz_item_masters.deleted_flag = '0';
16425                END IF;
16426             EXCEPTION
16427                WHEN NO_DATA_FOUND
16428                THEN
16429                   -----if no items exist, logging a message is not required
16430                   NULL;
16431                WHEN OTHERS
16432                THEN
16433                   RAISE;
16434             END;
16435 
16436             rec_count := cz_pb_mgr.v_item_masters_tbl.COUNT;
16437 
16438             IF (cz_pb_mgr.v_item_masters_ref.COUNT > 0)
16442                   IF (cz_pb_mgr.v_item_masters_ref(k) IS NOT NULL)
16439             THEN
16440                FOR k IN cz_pb_mgr.v_item_masters_ref.FIRST .. cz_pb_mgr.v_item_masters_ref.LAST
16441                LOOP
16443                   THEN
16444                      IF (NOT v_cz_items_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_masters_ref(k)))
16445                      THEN
16446                         rec_count := rec_count + 1;
16447                         cz_pb_mgr.v_item_masters_tbl(rec_count) := cz_pb_mgr.v_item_masters_ref(k);
16448                         cz_pb_mgr.mm_v_itmst_ref_part_nbr_ref(rec_count) := mm_v_itmst_ref_part_nbr_tbl(k);
16449                         cz_pb_mgr.mm_v_itmst_src_app_id_ref(rec_count) := mm_v_itmst_src_app_id_tbl(k);
16450                         cz_pb_mgr.v_item_types_tbl(rec_count) := cz_pb_mgr.v_item_types_ref(k);
16451                         cz_pb_mgr.v_items_orig_ref(rec_count) := v_item_types_orig_tbl(k);
16452                         --for model migration, maintain a sync table to get the
16453                         --orig_sys_ref from a given item
16454                         mm_v_ht_items_orig_ref(cz_pb_mgr.v_item_masters_ref(k)) := v_item_types_orig_tbl(k);
16455                         v_cz_items_old_ref_idx_ref(cz_pb_mgr.v_item_masters_ref(k)) := cz_pb_mgr.v_item_masters_ref(k);
16456                         v_bom_flg_ref(rec_count) := v_bom_flg_tbl(k);
16457                      END IF;
16458                   END IF;
16459                END LOOP;
16460             END IF;                                                                             /* end if of cz_pb_mgr.v_item_masters_ref.COUNT > 0 */
16461          END LOOP;                                                                          /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
16462       END IF;                                                                                /* end if of cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
16463 
16464       IF (cz_pb_mgr.v_item_types_tbl.COUNT > 0)
16465       THEN
16466          cz_pb_mgr.v_item_types_new_ref.DELETE;
16467          cz_pb_mgr.v_item_types_orig_ref.DELETE;
16468          v_cz_types_old_ref_idx_ref.DELETE;
16469 
16470          FOR i IN cz_pb_mgr.v_item_types_tbl.FIRST .. cz_pb_mgr.v_item_types_tbl.LAST
16471          LOOP
16472             v_item_types_orig_tbl.DELETE;
16473             cz_pb_mgr.v_item_types_ref.DELETE;
16474 
16475             BEGIN
16476                IF ((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = bom_item))
16477                THEN
16478                   SELECT item_type_id, NAME, NVL(src_application_id, 0)
16479                         ,DECODE(cz_pb_mgr.bomsynch_flag
16480                                ,'Y', NVL(cz_bom_synch.itemtype_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
16481                                ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
16482                                )
16483                   BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl
16484                         ,v_item_types_orig_tbl
16485                     FROM cz_item_types
16486                    WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
16487                ELSIF((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = nonbom_item))
16488                THEN
16489                   SELECT item_type_id, NAME, NVL(src_application_id, 0), orig_sys_ref
16490                   BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl, v_item_types_orig_tbl
16491                     FROM cz_item_types
16492                    WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
16493                END IF;
16494             EXCEPTION
16495                WHEN NO_DATA_FOUND
16496                THEN
16497                   NULL;
16498                WHEN OTHERS
16499                THEN
16500                   RAISE;
16501             END;
16502 
16503             IF (cz_pb_mgr.v_item_types_ref.COUNT > 0)
16504             THEN
16505                FOR k IN cz_pb_mgr.v_item_types_ref.FIRST .. cz_pb_mgr.v_item_types_ref.LAST
16506                LOOP
16507                   IF (cz_pb_mgr.v_item_types_ref(k) IS NOT NULL)
16508                   THEN
16509                      IF (NOT v_cz_types_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_types_ref(k)))
16510                      THEN
16511                         rec_count := cz_pb_mgr.v_item_types_new_ref.COUNT + 1;
16512                         cz_pb_mgr.v_item_types_new_ref(rec_count) := cz_pb_mgr.v_item_types_ref(k);
16513                         cz_pb_mgr.v_item_types_orig_ref(rec_count) := v_item_types_orig_tbl(k);
16514                         --for model migration, maintain a sync table to get the
16515                         --orig_sys_ref from a given item type
16516                         mm_v_ht_item_types_orig_ref(cz_pb_mgr.v_item_types_ref(k)) := v_item_types_orig_tbl(k);
16517                         v_cz_types_old_ref_idx_ref(cz_pb_mgr.v_item_types_ref(k)) := cz_pb_mgr.v_item_types_ref(k);
16518                         v_type_record_ref(v_item_types_ref(k)).NAME := v_type_name_tbl(k);
16519                         v_type_record_ref(v_item_types_ref(k)).src_application_id := v_type_src_app_tbl(k);
16520                      END IF;
16521                   END IF;
16522                END LOOP;
16523             END IF;
16524          END LOOP;
16525       END IF;
16526 
16527 --~> Properties
16528       cz_pb_mgr.v_remote_prop_ref.DELETE;
16529       v_property_record_ref.DELETE;
16530 
16531       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16535             v_remote_prop_tbl.DELETE;
16532       THEN
16533          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16534          LOOP
16536             BEGIN
16537               SELECT property_id, data_type, name, src_application_id
16538                 BULK COLLECT INTO v_remote_prop_tbl, v_prop_type_tbl, v_prop_name_tbl, v_prop_src_app_tbl
16539                 FROM (SELECT itp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16540                       from cz_item_masters im, cz_item_type_properties itp, cz_ps_nodes psn, cz_properties p
16541                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.deleted_flag = '0'
16542                       and psn.item_id = im.item_id AND im.deleted_flag = '0' and im.item_type_id = itp.item_type_id
16543                       AND itp.deleted_flag = '0' and itp.property_id = p.property_id and p.deleted_flag = '0'
16544                       UNION
16545                       SELECT psp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16546                       from cz_ps_prop_vals psp, cz_ps_nodes psn, cz_properties p
16547                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.ps_node_id = psp.ps_node_id
16548                       and psn.deleted_flag = '0' AND psp.deleted_Flag = '0' and psp.property_id = p.property_id
16549                       and p.deleted_flag = '0'
16550                       UNION
16551                       SELECT ipv.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16552                       from cz_ps_nodes psn, cz_item_property_values ipv, cz_properties p
16553                       where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.item_id = ipv.item_id
16554                       and psn.deleted_flag = '0' and ipv.deleted_flag = '0' and ipv.property_id = p.property_id
16555                       and p.deleted_flag = '0');
16556 
16557             EXCEPTION
16558                WHEN no_data_found THEN
16559                   NULL;
16560                WHEN OTHERS THEN
16561                   log_pb_errors(SQLERRM,1,'cz_pb_mgr PROP SELECT',SQLCODE);
16562                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16563                   RAISE;
16564             END;
16565 
16566             IF (v_remote_prop_tbl.COUNT > 0)
16567             THEN
16568                FOR j IN v_remote_prop_tbl.FIRST .. v_remote_prop_tbl.LAST
16569                LOOP
16570                   IF (v_remote_prop_tbl(j) IS NOT NULL)
16571                   THEN
16572                      rec_count := cz_pb_mgr.v_remote_prop_ref.COUNT + 1;
16573                      cz_pb_mgr.v_remote_prop_ref(rec_count) := v_remote_prop_tbl(j);
16574 
16575                      IF (NOT v_property_record_ref.EXISTS(v_remote_prop_tbl(j)))
16576                      THEN
16577                         v_property_record_ref(v_remote_prop_tbl(j)).NAME := v_prop_name_tbl(j);
16578                         v_property_record_ref(v_remote_prop_tbl(j)).data_type := v_prop_type_tbl(j);
16579                         v_property_record_ref(v_remote_prop_tbl(j)).src_application_id := v_prop_src_app_tbl(j);
16580                      END IF;
16581                   END IF;
16582                END LOOP;
16583             END IF;
16584          END LOOP;
16585       END IF;
16586 
16587     -- The copy of item type props and item prop values is uncessary for publication (4861805)
16588     IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
16589 --~> Item type properties
16590       IF (cz_pb_mgr.v_item_types_new_ref.COUNT > 0)
16591       THEN
16592          cz_pb_mgr.v_item_prop_id_tbl.DELETE;
16593          cz_pb_mgr.v_item_prop_type_tbl.DELETE;
16594          cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
16595          cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
16596 
16597          FOR i IN cz_pb_mgr.v_item_types_new_ref.FIRST .. cz_pb_mgr.v_item_types_new_ref.LAST
16598          LOOP
16599             cz_pb_mgr.v_item_prop_id_ref.DELETE;
16600             cz_pb_mgr.v_item_prop_type_ref.DELETE;
16601             cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
16602             cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
16603 
16604             BEGIN
16605                SELECT cz_item_type_properties.property_id, cz_item_type_properties.item_type_id,cz_properties.def_num_value
16606                       ,cz_properties.data_type
16607                BULK COLLECT INTO cz_pb_mgr.v_item_prop_id_ref, cz_pb_mgr.v_item_prop_type_ref,cz_pb_mgr.v_item_prop_num_val_ref
16608                      ,cz_pb_mgr.v_item_prop_data_typ_ref
16609                  FROM cz_item_type_properties, cz_properties
16610                 WHERE cz_item_type_properties.item_type_id = cz_pb_mgr.v_item_types_new_ref(i)
16611                       AND cz_properties.deleted_flag = '0'
16612                       AND cz_item_type_properties.property_id =cz_properties.property_id
16613                       AND cz_item_type_properties.deleted_flag = '0';
16614             EXCEPTION
16615                WHEN NO_DATA_FOUND
16616                THEN
16617                   NULL;
16618                WHEN OTHERS
16619                THEN
16620                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_item_type_properties', 'SQLERRM', SQLERRM);
16621                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPE', SQLCODE);
16622                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16623             END;
16624 
16625             rec_count := cz_pb_mgr.v_item_prop_id_tbl.COUNT;
16626 
16627             IF (cz_pb_mgr.v_item_prop_id_ref.COUNT > 0)
16628             THEN
16632                   cz_pb_mgr.v_item_prop_id_tbl(rec_count) := cz_pb_mgr.v_item_prop_id_ref(k);
16629                FOR k IN cz_pb_mgr.v_item_prop_id_ref.FIRST .. cz_pb_mgr.v_item_prop_id_ref.LAST
16630                LOOP
16631                   rec_count := rec_count + 1;
16633                   cz_pb_mgr.v_item_prop_type_tbl(rec_count) := cz_pb_mgr.v_item_prop_type_ref(k);
16634                   cz_pb_mgr.v_item_prop_num_val_tbl(rec_count):=cz_pb_mgr.v_item_prop_num_val_ref(k);
16635                   cz_pb_mgr.v_item_prop_data_typ_tbl(rec_count):=cz_pb_mgr.v_item_prop_data_typ_ref(k);
16636                   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));
16637                END LOOP;
16638             END IF;
16639          END LOOP;  --  end loop of FOR I IN cz_pb_mgr.v_item_types_tbl
16640       END IF;       --  cz_pb_mgr.v_item_types_new_ref.COUNT > 0
16641 
16642       IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
16643       THEN
16644          cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
16645          cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
16646 
16647          FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
16648          LOOP
16649             cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
16650             cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
16651             cz_pb_mgr.v_it_prop_value_ref.DELETE;
16652 
16653             BEGIN
16654                SELECT property_id, item_id
16655                BULK COLLECT INTO cz_pb_mgr.v_it_prop_vals_id_ref, cz_pb_mgr.v_it_prop_vals_item_ref
16656                  FROM cz_item_property_values
16657                 WHERE cz_item_property_values.item_id = cz_pb_mgr.v_item_masters_tbl(i) AND deleted_flag = '0';
16658             EXCEPTION
16659                WHEN NO_DATA_FOUND
16660                THEN
16661                   cz_pb_mgr.v_err_message := 'No item property value found for item id: ' || TO_CHAR(cz_pb_mgr.v_item_masters_tbl(i));
16662                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPES', SQLCODE);
16663                WHEN OTHERS
16664                THEN
16665                   RAISE;
16666             END;
16667 
16668             rec_count := cz_pb_mgr.v_it_prop_vals_id_tbl.COUNT;
16669 
16670             IF (cz_pb_mgr.v_it_prop_vals_id_ref.COUNT > 0)
16671             THEN
16672                FOR k IN cz_pb_mgr.v_it_prop_vals_id_ref.FIRST .. cz_pb_mgr.v_it_prop_vals_id_ref.LAST
16673                LOOP
16674                   rec_count := rec_count + 1;
16675                   cz_pb_mgr.v_it_prop_vals_id_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_id_ref(k);
16676                   cz_pb_mgr.v_it_prop_vals_item_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_item_ref(k);
16677                END LOOP;
16678             END IF;
16679          END LOOP;  --  end loop of FOR I IN cz_pb_mgr.v_item_masters_tbl
16680       END IF;       --  end if of cz_pb_mgr.v_item_masters_tbl.COUNT > 0
16681     END IF;
16682 
16683     --Bug #5186307. Some of the item and item types can be bom, although corresponding ps nodes and the whole
16684     --model can be non-bom (item-based ps nodes and populators). For a non-bom model bom synchronization will
16685     --not be called, and it is just impossible to call it. However, the orig_sys_refs of the bom items and
16686     --item types still need to be synchronized. The following code implements this synchronization for a non-
16687     --bom model.
16688 
16689     --The bug is deferred.
16690 /*
16691     IF(cz_pb_mgr.bomsynch_flag = 'N' AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)THEN
16692 
16693       FOR i IN 1..v_item_masters_tbl.COUNT LOOP
16694 
16695         IF(mm_v_itmst_src_app_id_ref(i) = 401)THEN
16696 
16697            v_items_orig_ref(i) := synch_item_origsysref(v_items_orig_ref(i));
16698         END IF;
16699       END LOOP;
16700 
16701       FOR i IN 1..v_item_types_new_ref.COUNT LOOP
16702 
16703         IF(v_type_record_ref(v_item_types_new_ref(i)).src_application_id = 702)THEN
16704 
16705            v_item_types_orig_ref(i) := synch_itemtype_origsysref(v_item_types_orig_ref(i));
16706         END IF;
16707       END LOOP;
16708     END IF;
16709 */
16710     --Now run the upfront validations for model migration.
16711     IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16712     THEN
16713        mm_raiseallpossiblesyncerrors;
16714     END IF;
16715    END;
16716 -----------------------------------------------------------------------------------------------------
16717 -------------- Load data : procedure used to export data
16718    PROCEDURE load_data(
16719       v_publication_id IN cz_model_publications.publication_id%TYPE
16720      ,v_root_model_id IN cz_model_publications.model_id%TYPE
16721      ,v_server_id IN cz_model_publications.server_id%TYPE
16722      ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
16723      ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
16724    )
16725    AS
16726       v_db_link VARCHAR2(128);
16727       seq_cv ref_cursor;
16728       rec_count PLS_INTEGER := 0;
16729       resolution_status VARCHAR2(200);
16730       v_copy_rules_flag VARCHAR2(3) := '';
16731       plsql_table_list cz_pb_mgr.col_plsql_table_list;
16732    BEGIN
16733       -------select value of setting id CopyRules from cz_db_settings
16734       IF (cz_pb_mgr.g_log_timing = publication_timing)
16735       THEN
16736          log_timing_message('start get_copy_rules_flg');
16737       END IF;
16738 
16739       get_copy_rules_flg(v_copy_rules_flag);
16740 
16741       IF (cz_pb_mgr.g_log_timing = publication_timing)
16745 
16742       THEN
16743          log_timing_message('end get_copy_rules_flg: copy_rules_flag='||v_copy_rules_flag);
16744       END IF;
16746       IF (copy_rules = 'NO')
16747       THEN
16748          v_copy_rules_flag := 'NO';
16749       END IF;
16750 
16751       ---------check languages on source and target instances
16752       IF (cz_pb_mgr.g_log_timing = publication_timing)
16753       THEN
16754          log_timing_message('start pb_language_check');
16755       END IF;
16756 
16757       pb_language_check;
16758 
16759       IF (cz_pb_mgr.g_log_timing = publication_timing)
16760       THEN
16761          log_timing_message('end pb_language_check');
16762       END IF;
16763 
16764       -- load the ps nodes needed for ps_prop_vals and items
16765       -- this process of getting all the ps node information used to happen in upload_ps_structure, but
16766       -- model migration needed this to happen much before that
16767       mm_v_ht_item_types_orig_ref.DELETE;
16768       mm_v_ht_items_orig_ref.DELETE;
16769       mm_loadoldpsnodesforitems;
16770       IF (cz_pb_mgr.v_server_id <> 0 ) THEN
16771         read_item_schema;
16772       END IF;
16773 
16774       --------upload item sub-schema
16775       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16776       THEN
16777          IF (cz_pb_mgr.g_log_timing = publication_timing)
16778          THEN
16779             log_timing_message('start upload_item_schema');
16780          END IF;
16781 
16782          --upload_item_schema used to to happen after upload_ps_structure, upload_ui_schema
16783          --but model migration required this to happen earlier.  Moving this did not seem to affect
16784          --publication.
16785          upload_item_schema(cz_pb_mgr.v_cz_ps_nodes_old_tbl, cz_pb_mgr.v_status_code);
16786 
16787          IF (cz_pb_mgr.g_log_timing = publication_timing)
16788          THEN
16789             log_timing_message('end upload_item_schema');
16790          END IF;
16791       END IF;
16792 
16793       ------export product structure
16794       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16795       THEN
16796          IF (cz_pb_mgr.g_log_timing = publication_timing)
16797          THEN
16798             log_timing_message('start upload_ps_structure');
16799          END IF;
16800 
16801          upload_ps_structure(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
16802 
16803          IF (cz_pb_mgr.g_log_timing = publication_timing)
16804          THEN
16805             log_timing_message('end upload_ps_structure');
16806          END IF;
16807       END IF;
16808 
16809       --------------upload UI Schema
16810       IF (cz_pb_mgr.g_log_timing = publication_timing)
16811       THEN
16812          log_timing_message('start upload_ui_schema');
16813       END IF;
16814 
16815       upload_ui_schema(cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code, p_copy_nonjradui);
16816 
16817       IF (cz_pb_mgr.g_log_timing = publication_timing)
16818       THEN
16819          log_timing_message('end upload_ui_schema');
16820       END IF;
16821 
16822       ------upload rule schema
16823       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16824       THEN
16825          IF (cz_pb_mgr.g_log_timing = publication_timing)
16826          THEN
16827             log_timing_message('start upload_rule_schema');
16828          END IF;
16829 
16830          upload_rule_schema(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
16831 
16832          IF (cz_pb_mgr.g_log_timing = publication_timing)
16833          THEN
16834             log_timing_message('end upload_rule_schema');
16835          END IF;
16836       END IF;
16837 
16838       x_status_code := cz_pb_mgr.v_status_code;
16839    EXCEPTION
16840       WHEN cz_pb_global_synch
16841       THEN
16842 --~>  'Errors in upfront validation, unable to continue.'
16843          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPVAL_ERRORS');
16844          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16845          x_status_code := PUBLICATION_ERROR;
16846       WHEN pb_upload_ps_schema
16847       THEN
16848          cz_pb_mgr.v_err_message := 'Error in export of product structure for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
16849          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PRODSTRUCTURE', SQLCODE);
16850          x_status_code := PUBLICATION_ERROR;
16851       WHEN pb_upload_ui_schema
16852       THEN
16853          cz_pb_mgr.v_err_message := 'Error in upload of UI schema for publication id : ' || cz_pb_mgr.v_publication_id;
16854          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
16855          x_status_code := PUBLICATION_ERROR;
16856       WHEN pb_upload_rule_schema
16857       THEN
16858          cz_pb_mgr.v_err_message := 'Error in upload of RULE schema for publication id : ' || cz_pb_mgr.v_publication_id || ':' || SQLERRM;
16859          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADRULESCHEMA', SQLCODE);
16860          x_status_code := PUBLICATION_ERROR;
16861       WHEN pb_upload_item_schema
16862       THEN
16863          cz_pb_mgr.v_err_message := 'Error in upload of ITEM schema for publication id : ' || cz_pb_mgr.v_publication_id;
16864          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADITEMSCHEMA', SQLCODE);
16868          x_status_code := PUBLICATION_ERROR;
16865          x_status_code := PUBLICATION_ERROR;
16866       WHEN OTHERS
16867       THEN
16869          cz_pb_mgr.v_err_message := 'Fatal error occured during data upload ';
16870          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ENDLOADDATA', SQLCODE);
16871    END load_data;
16872 
16873 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16874    PROCEDURE insert_tmp_pub(p_temp_id IN NUMBER)
16875    IS
16876       l_old_publication_id NUMBER;
16877       l_remote_publication_id NUMBER;
16878       l_new_publication_id NUMBER;
16879       v_inst_str VARCHAR2(2000);
16880    BEGIN
16881       v_inst_str :=
16882             'UPDATE cz_model_publications set deleted_flag = ''1'' WHERE object_id := :1 '
16883          || ' '
16884          || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
16885 
16886       EXECUTE IMMEDIATE v_inst_str
16887                   USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
16888 
16889       COMMIT;
16890       v_inst_str :=
16891             'UPDATE cz_model_publications'
16892          || cz_pb_mgr.v_db_link
16893          || ' set deleted_flag = ''1'' WHERE object_id := :1'
16894          || ' '
16895          || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
16896 
16897       EXECUTE IMMEDIATE v_inst_str
16898                   USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
16899 
16900       COMMIT;
16901 
16902       SELECT cz_model_publications_s.NEXTVAL
16903         INTO l_old_publication_id
16904         FROM DUAL;
16905 
16906       l_remote_publication_id :=
16907          cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
16908                                     , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
16909                                     ,cz_pb_mgr.v_oraclesequenceincr
16910                                     );
16911       v_inst_str :=
16912             'INSERT INTO cz_model_publications'
16913          || ' '
16914          || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
16915          || ' '
16916          || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
16917          || ' '
16918          || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
16919          || ' '
16920          || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
16921          || ' '
16922          || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
16923          || ' '
16924          || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
16925          || ' '
16926          || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
16927          || g_source_flag
16928          || ''',:4,SOURCE_UI_DEF_ID,'
16929          || ' '
16930          || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag  FROM  DUAL ';
16931 
16932       EXECUTE IMMEDIATE v_inst_str
16933                   USING l_old_publication_id, p_temp_id, p_temp_id, l_remote_publication_id;
16934 
16935       v_inst_str :=
16936             'INSERT INTO cz_model_publications'
16937          || cz_pb_mgr.v_db_link
16938          || ''
16939          || ' '
16940          || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
16941          || ' '
16942          || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
16943          || ' '
16944          || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
16945          || ' '
16946          || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
16947          || ' '
16948          || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
16949          || ' '
16950          || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
16951          || ' '
16952          || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
16953          || g_target_flag
16954          || ''',:4,SOURCE_UI_DEF_ID,'
16955          || ' '
16956          || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag  FROM  DUAL ';
16957 
16958       EXECUTE IMMEDIATE v_inst_str
16959                   USING l_remote_publication_id, p_temp_id, p_temp_id, l_old_publication_id;
16960 
16961       COMMIT;
16962    EXCEPTION
16963       WHEN OTHERS
16964       THEN
16965          NULL;
16966    END;
16967 
16968 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16969 ----will global template have a button_bar_template
16970 ----may be not
16971 
16972    PROCEDURE export_global_template(p_template_id IN NUMBER, p_publication_id IN NUMBER)
16973    IS
16974       rec_count NUMBER := 0;
16975       l_new_document VARCHAR2(255);
16976       l_document_id NUMBER;
16977       l_str VARCHAR2(2000);
16978    BEGIN
16979       -----bulk collect from templates
16980       cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
16981       cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
16982       cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
16983       cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
16984       cz_pb_mgr.g_ui_templates_title_ref.DELETE;
16988       cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
16985       cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
16986       cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
16987       cz_pb_mgr.v_intl_text_model_tbl.DELETE;
16989 
16990       IF (cz_pb_mgr.v_server_id = 0)
16991       THEN
16992          SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates
16993                                            , 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link
16994                                            ,cz_pb_mgr.v_oraclesequenceincr
16995                                            )
16996                ,template_id, main_message_id, title_id
16997                ,jrad_doc, -1, 0
16998                ,0
16999          BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref
17000                ,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
17001                ,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
17002                ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
17003            FROM cz_ui_templates
17004           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;
17005       ELSE
17006          SELECT template_id, template_id, main_message_id
17007                ,title_id, jrad_doc, -1
17008                ,0, 0
17009          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
17010                ,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
17011                ,cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.g_ui_templates_ui_def_old_ref
17012            FROM cz_ui_templates
17013           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;
17014       END IF;
17015 
17016       ------main msg
17017       insert_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, 'main message ids of cz ui templates', TRUE);
17018       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');
17019       ----title id
17020       insert_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, 'main message ids of cz ui templates', TRUE);
17021       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');
17022 
17023       IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0)
17024       THEN
17025          FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
17026          LOOP
17027             IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
17028             THEN
17029                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);
17030             END IF;
17031          END LOOP;
17032       END IF;
17033 
17034       insert_ui_templates;
17035 
17036       COMMIT;
17037    EXCEPTION
17038       WHEN OTHERS
17039       THEN
17040          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17041          cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || p_template_id || ' : ' || SQLERRM;
17042          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
17043          RAISE;
17044    END export_global_template;
17045 
17046 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17047    PROCEDURE export_global_template
17048    IS
17049       rec_count NUMBER := 0;
17050       l_new_document VARCHAR2(255);
17051       l_document_id NUMBER;
17052       l_str VARCHAR2(2000);
17053       l_global_temp_tbl cz_pb_mgr.t_ref;
17054    BEGIN
17055       -----bulk collect from templates
17056       cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
17057       cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
17058       cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
17059       cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
17060       cz_pb_mgr.g_ui_templates_title_ref.DELETE;
17061       cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
17062       cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
17063       cz_pb_mgr.v_intl_text_model_tbl.DELETE;
17064       cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
17065 
17066       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17067       THEN
17068          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17069          LOOP
17070             l_global_temp_tbl.DELETE;
17071 
17072             SELECT template_id
17073             BULK COLLECT INTO l_global_temp_tbl
17074               FROM cz_ui_collect_tmpls_v
17075              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;
17076 
17077             IF (l_global_temp_tbl.COUNT > 0)
17078             THEN
17079                rec_count := cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT;
17080 
17081                FOR j IN l_global_temp_tbl.FIRST .. l_global_temp_tbl.LAST
17082                LOOP
17083                   rec_count := rec_count + 1;
17084                   cz_pb_mgr.g_ui_templates_old_temp_id_ref(rec_count) := l_global_temp_tbl(j);
17085                END LOOP;
17086             END IF;
17087          END LOOP;
17088       END IF;
17089 
17090       IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
17091       THEN
17092          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
17096          END LOOP;
17093          LOOP
17094             export_global_template(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i), cz_pb_mgr.v_publication_id);
17095             insert_tmp_pub(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i));
17097       END IF;
17098 
17099       COMMIT;
17100    EXCEPTION
17101       WHEN OTHERS
17102       THEN
17103          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17104          cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || SQLERRM;
17105          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
17106          RAISE;
17107    END export_global_template;
17108 
17109 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17110 -------- procedure to export the configuration models
17111 ---------from the development to the production server
17112    PROCEDURE proc_export(
17113       publicationid IN NUMBER
17114      ,modelid IN NUMBER
17115      ,serverid IN NUMBER
17116      ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
17117      ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
17118    )
17119    IS
17120       CURSOR model_cur(rootmodelid NUMBER, serverid NUMBER, pubid NUMBER)
17121       IS
17122          SELECT   model_id
17123              FROM cz_pb_model_exports
17124             WHERE root_model_id = rootmodelid AND server_id = serverid AND publication_id = pubid AND superseded_flag = 'N'
17125          ORDER BY export_reverse_seq DESC;
17126 
17127       v_cursor NUMBER;
17128       v_model_id_table_exported model_id_table;
17129       v_model_id_table_not_exported model_id_table;
17130       v_model_count NUMBER := 1;
17131       v_validate_count NUMBER;
17132       mm_models_to_be_migrated cz_pb_mgr.t_ref;
17133 
17134       l_expl_check_flag   cz_db_settings.value%TYPE;
17135       l_run_id            NUMBER := cz_pb_mgr.v_pb_run_id;
17136       l_msg_count         NUMBER;
17137       l_msg_data          VARCHAR2(32000);
17138       l_return_status     VARCHAR2(16);
17139 
17140    BEGIN
17141       v_next_sequence_gen.DELETE;
17142       v_sequence_count.DELETE;
17143 
17144       ------retrieve seq incrementor from cz_db_settings
17145       IF (cz_pb_mgr.g_log_timing = publication_timing)
17146       THEN
17147          log_timing_message('start get_seq_incrementor');
17148       END IF;
17149 
17150       get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
17151 
17152       IF (cz_pb_mgr.g_log_timing = publication_timing)
17153       THEN
17154          log_timing_message('end get_seq_incrementor');
17155       END IF;
17156 
17157       IF (cz_pb_mgr.g_log_timing = publication_timing)
17158       THEN
17159          log_timing_message('start get_models_tobe_exported');
17160       END IF;
17161 
17162       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17163       THEN
17164          mm_models_to_be_migrated := get_rootmodel_and_mig_tgt_fldr(publicationid);
17165          mm_get_models_tobe_exported(mm_models_to_be_migrated);
17166       ELSIF(g_object_type = MODEL_PUBLICATION)
17167       THEN
17168          get_models_tobe_exported(modelid);
17169       ELSIF(g_object_type = template_publication)
17170       THEN
17171          cz_pb_mgr.v_models_to_be_exported.DELETE;
17172          cz_pb_mgr.v_models_to_be_exported(1) := modelid;
17173       END IF;
17174 
17175       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
17176       FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17177       LOOP
17178          mm_v_rootmodels_tobe_exported(i) := modelid;
17179       END LOOP;
17180       END IF;
17181 
17182       IF (cz_pb_mgr.g_log_timing = publication_timing)
17183       THEN
17184          log_timing_message('end get_models_tobe_exported');
17185          log_timing_message('start create_export_request');
17186       END IF;
17187 
17188       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17189       THEN
17190          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17191          LOOP
17192             create_export_request(cz_pb_mgr.mm_v_rootmodels_tobe_exported(i), cz_pb_mgr.v_models_to_be_exported(i), publicationid, serverid);
17193          END LOOP;
17194       ELSE
17195          cz_pb_mgr.v_err_message := 'No model / template data exported ';
17196          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:EXPREQ', SQLCODE);
17197       END IF;
17198 
17199       -----create_copy_requests;
17200       IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17201       THEN
17202          cz_pb_mgr.v_models_to_be_exported.DELETE;
17203 
17204          IF (cz_pb_mgr.g_log_timing = publication_timing)
17205          THEN
17206             log_timing_message('end create_export_request');
17207             log_timing_message('start model_cur ');
17208          END IF;
17209 
17210          OPEN model_cur(modelid, serverid, publicationid);
17211 
17212          LOOP
17213             FETCH model_cur
17214              INTO v_cursor;
17215 
17216             EXIT WHEN model_cur%NOTFOUND;
17217             cz_pb_mgr.v_models_to_be_exported(v_model_count) := v_cursor;
17218             v_model_count := v_model_count + 1;
17219          END LOOP;
17220 
17221          CLOSE model_cur;
17222 
17223          IF (cz_pb_mgr.g_log_timing = publication_timing)
17224          THEN
17225             log_timing_message('end model_cur ');
17226             log_timing_message('start validate_schema');
17227          END IF;
17228 
17229          v_validate_count := validate_schema(serverid);
17230 
17234          END IF;
17231          IF (cz_pb_mgr.g_log_timing = publication_timing)
17232          THEN
17233             log_timing_message('end validate_schema');
17235 
17236          IF ((v_validate_count = 1) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
17237          THEN
17238             IF (cz_pb_mgr.g_log_timing = publication_timing)
17239             THEN
17240                log_timing_message('start load_data');
17241             END IF;
17242 
17243             load_data(publicationid, modelid, serverid, x_status_code, p_copy_nonjradui);
17244 
17245             IF (cz_pb_mgr.g_log_timing = publication_timing)
17246             THEN
17247                log_timing_message('end load_data');
17248             END IF;
17249          ELSE
17250             IF (v_validate_count <> 1)
17251             THEN
17252                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_COMPAT_ERR');
17253                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:VALSCH', SQLCODE);
17254                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17255             ELSE
17256                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17257                cz_pb_mgr.v_err_message := 'Process terminated for publication_id: ' || TO_CHAR(cz_pb_mgr.v_publication_id);
17258                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:PROCEXP', SQLCODE);
17259             END IF;
17260          END IF;
17261       ELSIF(g_object_type = template_publication)
17262       THEN
17263          export_global_template(modelid, publicationid);
17264       END IF;
17265 
17266       -----upload publication data
17267       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
17268       THEN
17269          upload_publication_data(cz_pb_mgr.v_publication_id);
17270       END IF;
17271 
17272       --Verify if the exported product structure and explosion data are in synch.
17273 
17274       IF(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)THEN
17275 
17276         BEGIN
17277           SELECT DECODE(UPPER(value), 'Y', 'Y', 'YES', 'Y', '1', 'Y', 'ON', 'Y', 'N')
17278             INTO l_expl_check_flag FROM cz_db_settings
17279            WHERE UPPER(section_name) = 'PUBLICATION'
17280              AND UPPER(setting_id) = 'CheckExplosionStructure';
17281         EXCEPTION
17282           WHEN OTHERS THEN
17283             l_expl_check_flag := 'N';
17284         END;
17285 
17286         IF(l_expl_check_flag = 'Y')THEN
17287 
17288           EXECUTE IMMEDIATE 'BEGIN cz_diagnostics_pvt.verify_structure' || cz_pb_mgr.v_db_link || '(1.0, :1, ''0'', :2, :3, :4, :5); END;'
17289             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;
17290         END IF;
17291 
17292         IF(l_return_status = FND_API.G_RET_STS_ERROR)THEN
17293 
17294           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17295           cz_pb_mgr.v_err_message :=  l_msg_data;
17296           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_diagnostics_pvt', -1);
17297         END IF;
17298       END IF;
17299 
17300       -----set status for concurrent manager
17301       IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
17302       THEN
17303          cz_pb_mgr.global_export_retcode := 2;
17304          rollback_data(cz_pb_mgr.v_db_link);
17305       END IF;
17306 
17307       -----clear tables
17308       clear_all_tables(cz_pb_mgr.v_status_code);
17309    EXCEPTION
17310       WHEN OTHERS
17311       THEN
17312          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
17313          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORT_FAILURE', SQLCODE);
17314          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17315          RAISE;
17316    END proc_export;
17317 
17318 --------------------------------------------------------------------------------
17319 -- private: ret status: 0 yes, 2 no (msg_data - ui or err info, model_name - model info)
17320 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER
17321                          ,p_report_model_info IN NUMBER
17322                          ,x_return_status OUT NOCOPY NUMBER
17323                          ,x_msg_data OUT NOCOPY VARCHAR2
17324                          ,x_model_name OUT NOCOPY VARCHAR2
17325                          ,p_check_root_ui_only IN BOOLEAN DEFAULT FALSE
17326                          )
17327 IS
17328   l_ui_style cz_ui_defs.ui_style%TYPE;
17329   l_ui_status cz_ui_defs.ui_status%TYPE;
17330   l_ui_tbl t_ref;
17331   l_ui_name cz_ui_defs.NAME%TYPE;
17332   l_root_model_id NUMBER;
17333   l_root_ui_last_update_date DATE;
17334   l_model_id NUMBER;
17335   l_model_name cz_devl_projects.NAME%TYPE;
17336   l_last_update_date DATE;
17337   l_last_struct_update DATE;
17338   l_suppress_refresh_flag cz_ui_defs.suppress_refresh_flag%TYPE;
17339 BEGIN
17340   x_return_status := 0;
17341   x_msg_data := '';
17342 
17343   SELECT ui_style, ui_status, NAME, NVL(suppress_refresh_flag, '0'), devl_project_id, NVL(ui_timestamp_refresh, last_update_date)
17344     INTO l_ui_style, l_ui_status, l_ui_name, l_suppress_refresh_flag, l_root_model_id, l_root_ui_last_update_date
17345   FROM cz_ui_defs
17346   WHERE ui_def_id = p_ui_def_id;
17347 
17348   IF l_ui_status = 'NEED_REFRESH' THEN
17349     x_return_status := 2;
17350     x_msg_data := l_ui_name;
17351 
17352     IF p_report_model_info = 1 THEN
17353       SELECT NAME INTO x_model_name
17354       FROM cz_devl_projects
17358     RETURN;
17355       WHERE devl_project_id = l_root_model_id;
17356     END IF;
17357 
17359   END IF;
17360 
17361   IF p_check_root_ui_only THEN
17362     IF l_suppress_refresh_flag='0' THEN
17363       l_ui_tbl(1) := p_ui_def_id;
17364     END IF;
17365   ELSE
17366     IF (l_ui_style IN(g_ui_style_dhtml, g_ui_style_applet)) THEN
17367       SELECT DISTINCT ui_def_id BULK COLLECT INTO l_ui_tbl
17368       FROM cz_ui_nodes
17369       WHERE deleted_flag = '0'
17370       START WITH ui_def_id = p_ui_def_id
17371       CONNECT BY PRIOR ui_def_ref_id = ui_def_id AND PRIOR deleted_flag = '0';
17372     ELSIF (l_ui_style = g_ui_style_jrad) THEN
17373       SELECT ref_ui_def_id BULK COLLECT INTO l_ui_tbl
17374       FROM (SELECT DISTINCT ref_ui_def_id
17375             FROM cz_ui_refs
17376             START WITH ui_def_id = p_ui_def_id AND deleted_flag = '0'
17377             CONNECT BY PRIOR ref_ui_def_id = ui_def_id AND deleted_flag = '0' AND PRIOR deleted_flag = '0') uis
17378       WHERE EXISTS (SELECT NULL
17379                     FROM cz_ui_defs
17380                     WHERE ui_def_id = uis.ref_ui_def_id AND deleted_flag = '0' AND NVL(suppress_refresh_flag, '0') = '0');
17381 
17382       IF l_suppress_refresh_flag = '0' THEN
17383         l_ui_tbl(l_ui_tbl.COUNT + 1) := p_ui_def_id;
17384       END IF;
17385     ELSIF l_ui_style = g_ui_style_custom THEN
17386       RETURN;
17387     ELSE
17388       x_return_status := 2;
17389       x_msg_data := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'UISTYLE', l_ui_style);
17390       RETURN;
17391     END IF;
17392   END IF;
17393 
17394   IF (l_ui_tbl.COUNT > 0) THEN
17395     FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST
17396     LOOP
17397       IF l_ui_tbl(i) = p_ui_def_id THEN
17398         l_model_id := l_root_model_id;
17399         l_last_update_date := l_root_ui_last_update_date;
17400       ELSE
17401         BEGIN
17402           SELECT NVL(ui_timestamp_refresh, last_update_date), devl_project_id, NAME, ui_status
17403             INTO l_last_update_date, l_model_id, l_ui_name, l_ui_status
17404           FROM cz_ui_defs
17405           WHERE cz_ui_defs.ui_def_id = l_ui_tbl(i);
17406         EXCEPTION
17407           WHEN OTHERS THEN
17408             l_last_update_date := NULL;
17409         END;
17410 
17411         IF l_last_update_date IS NULL OR l_ui_status = 'NEED_REFRESH' THEN
17412           x_return_status := 2;
17413           x_msg_data := l_ui_name;
17414 
17415           IF p_report_model_info = 1 THEN
17416             SELECT NAME INTO x_model_name
17417             FROM cz_devl_projects
17418             WHERE devl_project_id = l_model_id;
17419           END IF;
17420 
17421           EXIT;
17422         END IF;
17423       END IF;
17424 
17425       BEGIN
17426         SELECT DECODE(l_ui_style, g_ui_style_jrad, NVL(ui_timestamp_struct_update, last_struct_update), last_struct_update), NAME
17427           INTO l_last_struct_update, l_model_name
17428         FROM cz_devl_projects
17429         WHERE cz_devl_projects.devl_project_id = l_model_id;
17430       EXCEPTION
17431         WHEN OTHERS THEN
17432           l_last_struct_update := NULL;
17433           l_model_name := NULL;
17434       END;
17435 
17436       IF l_last_struct_update IS NULL OR l_last_update_date < l_last_struct_update THEN
17437         x_return_status := 2;
17438         x_msg_data := l_ui_name;
17439         x_model_name := l_model_name;
17440         EXIT;
17441       END IF;
17442     END LOOP;
17443   END IF;
17444 EXCEPTION
17445   WHEN OTHERS THEN
17446     x_return_status := 2;
17447     x_msg_data := SQLERRM;
17448 END is_ui_upto_date;
17449 
17450 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17451 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17452 -----------deep model copy
17453 -----------p_model_id : devl_project_id of the model for which a copy is to be made.
17454 -----------p_server_id: server_id from cz_servers that contains db info
17455 -----------p_folder: folder to which the copy is made
17456 -----------p_copy_rules: flag 1 implies copy rules else 0
17457 -----------p_copy_uis: flag 1 implies copy uis
17458 -----------p_copy_root: flag 1 implies that only root model would be copied
17459 -----------x_model_id : devl_project_id of the copied model
17460    PROCEDURE deep_model_copy(
17461       p_model_id IN NUMBER
17462      ,p_server_id IN NUMBER
17463      ,p_folder IN NUMBER
17464      ,p_copy_rules IN NUMBER
17465      ,p_copy_uis IN NUMBER
17466      ,p_copy_root IN NUMBER
17467      ,x_model_id OUT NOCOPY NUMBER
17468      ,x_run_id OUT NOCOPY NUMBER
17469      ,x_status OUT NOCOPY VARCHAR2
17470    )
17471    AS
17472       v_count PLS_INTEGER := 0;
17473       v_model_chk_count PLS_INTEGER := 0;
17474       v_ui_chk_count PLS_INTEGER := 0;
17475       v_folder_chk PLS_INTEGER := 0;
17476       v_rp_entries_name cz_rp_entries.NAME%TYPE;
17477       v_rp_entries_desc cz_rp_entries.description%TYPE;
17478       v_object_id cz_rp_entries.object_id%TYPE;
17479       v_copy_number NUMBER := 0.0;
17480       v_rp_orig_sys_ref VARCHAR2(255);
17481       v_imp_ps_node_count PLS_INTEGER := 0;
17482       v_pub_id cz_model_publications.publication_id%TYPE;
17483       l_msg_index NUMBER;
17484       failed_to_lock_model EXCEPTION;
17485       l_msg_data VARCHAR2(2000);
17486       l_msg_count NUMBER := 0;
17487       l_return_status VARCHAR2(1);
17488       l_lock_status VARCHAR2(1);
17489       l_locked_models cz_security_pvt.number_type_tbl;
17493       l_model_upto_date_msg VARCHAR2(2000);
17490       l_checkout_user cz_security_pvt.varchar_type_tbl;
17491       l_model_upto_date_status NUMBER;
17492       l_ui_upto_date_status NUMBER;
17494       logic_gen_required CONSTANT NUMBER := 1;
17495       ui_refresh_required CONSTANT NUMBER := 2;
17496       l_ui_tbl     t_ref;
17497       l_ui_name    VARCHAR2(1000);
17498       l_model_name VARCHAR2(1000);
17499       l_copy_nonjradui BOOLEAN;
17500       ui_not_uptodate EXCEPTION;
17501 
17502       TYPE ui_style_tbl_type IS TABLE OF cz_ui_defs.ui_style%TYPE INDEX BY PLS_INTEGER;
17503       l_ui_style_tbl  ui_style_tbl_type;
17504    BEGIN
17505       ----------delete session specific parameters
17506       BEGIN
17507          delete_session_parameters;
17508       EXCEPTION
17509          WHEN OTHERS
17510          THEN
17511             cz_pb_mgr.v_err_message := 'ERROR :deletion of session parameters ' || SQLERRM;
17512             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17513       END;
17514 
17515       cz_pb_mgr.v_status_code := publication_ok;
17516 
17517       ---------select run_id and user from dual
17518       ---------
17519       BEGIN
17520          SELECT USER, cz_xfr_run_infos_s.NEXTVAL
17521            INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
17522            FROM DUAL;
17523       EXCEPTION
17524          WHEN OTHERS
17525          THEN
17526             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
17527             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
17528       END;
17529 
17530       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);
17531 
17532       IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
17533       THEN
17534          l_msg_index := 1;
17535 
17536          WHILE l_msg_count > 0
17537          LOOP
17538             l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
17539             cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
17540             l_msg_index := l_msg_index + 1;
17541             l_msg_count := l_msg_count - 1;
17542          END LOOP;
17543 
17544          RAISE failed_to_lock_model;
17545       END IF;
17546 
17547       --------initialize session parameters
17548       cz_pb_mgr.sequence_const := 0;
17549       cz_pb_mgr.v_status_code := 'OK';
17550       cz_pb_mgr.global_export_retcode := 0;
17551       cz_pb_mgr.g_object_type := 'PRJ';
17552 
17553       IF (p_copy_rules = 1)
17554       THEN
17555          cz_pb_mgr.copy_rules := 'YES';
17556       ELSE
17557          cz_pb_mgr.copy_rules := 'NO';
17558       END IF;
17559 
17560       IF (p_copy_uis = 1)
17561       THEN
17562          cz_pb_mgr.copy_uis := 'YES';
17563       ELSE
17564          cz_pb_mgr.copy_uis := 'NO';
17565       END IF;
17566 
17567       IF (p_copy_root = 0)
17568       THEN
17569          cz_pb_mgr.copy_root_only := 'NO';
17570       ELSE
17571          cz_pb_mgr.copy_root_only := 'YES';
17572       END IF;
17573 
17574       --------initialize model, ui and server values
17575       cz_pb_mgr.v_root_model_id := p_model_id;
17576 
17577       --------get the ui_def_id for the above model
17578       IF (cz_pb_mgr.copy_uis = 'YES')
17579       THEN
17580          BEGIN
17581             SELECT MAX(ui_def_id)
17582               INTO cz_pb_mgr.v_root_ui_def_id
17583               FROM cz_ui_defs
17584              WHERE cz_ui_defs.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_ui_defs.deleted_flag = '0';
17585          EXCEPTION
17586             WHEN NO_DATA_FOUND
17587             THEN
17588                cz_pb_mgr.v_root_ui_def_id := -999;
17589             WHEN OTHERS
17590             THEN
17591                cz_pb_mgr.v_root_ui_def_id := -999;
17592          END;
17593       ELSE
17594          cz_pb_mgr.v_root_ui_def_id := -999;
17595       END IF;
17596 
17597       cz_pb_mgr.v_server_id := p_server_id;
17598       -------set session level parameter that differentiates from publishing
17599       cz_pb_mgr.v_session_parameter := model_copy;
17600       cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
17601       cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
17602       ---------check if model exists
17603       v_model_chk_count := 0;
17604 
17605       BEGIN
17606          SELECT 1, NVL(config_engine_type, 'L')
17607            INTO v_model_chk_count, g_engine_type
17608            FROM cz_devl_projects
17609           WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_devl_projects.deleted_flag = '0';
17610       EXCEPTION
17611          WHEN OTHERS
17612          THEN
17613             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
17614             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
17615             cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17616       END;
17617 
17618       ---------verify that ui exists
17619       v_ui_chk_count := -1;
17620 
17621       IF (cz_pb_mgr.v_root_ui_def_id > 0)
17622       THEN
17623          BEGIN
17624             SELECT 1
17625               INTO v_ui_chk_count
17626               FROM cz_ui_defs
17627              WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_root_ui_def_id AND cz_ui_defs.deleted_flag = '0';
17628          EXCEPTION
17629             WHEN OTHERS
17633                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17630             THEN
17631                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
17632                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17634          END;
17635       END IF;
17636 
17637       -------check if UI is upto date
17638       IF cz_pb_mgr.copy_uis = 'YES' THEN
17639         l_copy_nonjradui := TRUE;
17640         IF cz_pb_mgr.copy_root_only = 'YES' THEN
17641           SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
17642           FROM cz_ui_defs
17643           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id=p_model_id;
17644         ELSE
17645           SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
17646           FROM cz_ui_defs
17647           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
17648           (SELECT component_id FROM cz_model_ref_expls
17649            WHERE deleted_flag='0' AND model_id=p_model_id);
17650         END IF;
17651 
17652         IF l_ui_tbl.COUNT>0 THEN
17653           FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST LOOP
17654             -- all jrad uis have to be up to date
17655             -- all nonjrad uis will be not copied if any such ui is not up to date
17656             IF l_ui_style_tbl(i) = oa_ui_style OR l_copy_nonjradui THEN
17657               is_ui_upto_date(p_ui_def_id         => l_ui_tbl(i)
17658                              ,p_report_model_info => 1
17659                              ,x_return_status     => l_ui_upto_date_status
17660                              ,x_msg_data          => l_ui_name
17661                              ,x_model_name        => l_model_name
17662                              ,p_check_root_ui_only=> TRUE
17663                              );
17664               IF l_ui_upto_date_status IS NOT NULL AND l_ui_upto_date_status <> 0 THEN
17665                 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' ||
17666                                         ' ''' || l_ui_name || '''', 'MODELID', '''' || l_model_name || '''');
17667                 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', -20001);
17668                 IF l_ui_style_tbl(i) = oa_ui_style THEN
17669                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17670                   RAISE ui_not_uptodate;
17671                 ELSE
17672                   l_copy_nonjradui := FALSE;
17673                 END IF;
17674               END IF;
17675             END IF;
17676           END LOOP;
17677         END IF;
17678       END IF;
17679 
17680       -- if no ui to copy or not to copy ui
17681       IF l_ui_upto_date_status IS NULL THEN
17682         l_ui_upto_date_status := 0;
17683       END IF;
17684 
17685       --------check if folder exists
17686       IF (p_folder IS NOT NULL)
17687       THEN
17688          BEGIN
17689             SELECT 1
17690               INTO v_folder_chk
17691               FROM cz_rp_entries
17692              WHERE object_type = 'FLD' AND object_id = p_folder AND deleted_flag = '0';
17693          EXCEPTION
17694             WHEN OTHERS
17695             THEN
17696                cz_pb_mgr.v_err_message := 'Error in retrieving folder id : ' || p_folder || ' : ' || SQLERRM;
17697                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17698                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17699          END;
17700       END IF;
17701 
17702       IF (v_model_chk_count = 0)
17703       THEN
17704          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
17705          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17706          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17707       ELSIF(v_ui_chk_count = 0)
17708       THEN
17709          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
17710          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17711          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17712       ELSE
17713          -----------create a dummy publication
17714          BEGIN
17715             SELECT cz_model_publications_s.NEXTVAL
17716               INTO cz_pb_mgr.v_publication_id
17717               FROM DUAL;
17718 
17719             v_pub_id := cz_pb_mgr.v_publication_id;
17720          EXCEPTION
17721             WHEN OTHERS
17722             THEN
17723                cz_pb_mgr.v_err_message := 'Error in generation of dummy publication id';
17724                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17725                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17726          END;
17727 
17728          BEGIN
17729             INSERT INTO cz_model_publications
17730                         (publication_id, model_id, server_id, product_key, publication_mode
17731                         ,ui_def_id, ui_style, applicable_from, applicable_until, deleted_flag, model_last_struct_update, model_last_logic_update
17732                         ,model_last_updated, source_target_flag, object_id, object_type, disabled_flag
17733                         )
17734                  VALUES (cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, 'copy model', 'T'
17735                         ,cz_pb_mgr.v_root_ui_def_id, '0', SYSDATE, SYSDATE, '0', SYSDATE, SYSDATE
17736                         ,SYSDATE, g_target_flag, cz_pb_mgr.v_root_model_id, 'PRJ', '0'
17737                         );
17738 
17739             COMMIT;
17740          EXCEPTION
17744                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17741             WHEN OTHERS
17742             THEN
17743                cz_pb_mgr.v_err_message := 'Error in creation of dummy publication record: ' || SQLERRM;
17745                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17746          END;
17747 
17748          BEGIN
17749             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,
17750                         (cz_pb_mgr.copy_uis='YES' AND l_copy_nonjradui));
17751 
17752             IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
17753             THEN
17754                cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || '  successfully copied';
17755                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17756             ELSE
17757                cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || '  copy failed';
17758                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17759             END IF;
17760 
17761             COMMIT;
17762          EXCEPTION
17763             WHEN OTHERS
17764             THEN
17765                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
17766                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17767                cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17768          END;
17769 
17770          ----------insert into cz_rp_entries
17771          IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17772          THEN
17773             v_imp_ps_node_count := 0;
17774 
17775             FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17776             LOOP
17777                v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
17778                cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
17779                cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
17780 
17781                BEGIN
17782                   SELECT remote_model_id
17783                     INTO v_object_id
17784                     FROM cz_pb_model_exports
17785                    WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
17786                      AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
17787                EXCEPTION
17788                   WHEN OTHERS
17789                   THEN
17790                      cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
17791                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17792                END;
17793 
17794                BEGIN
17795                   SELECT desc_text, orig_sys_ref
17796                     INTO v_rp_entries_desc, v_rp_orig_sys_ref
17797                     FROM cz_devl_projects
17798                    WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
17799                EXCEPTION
17800                   WHEN NO_DATA_FOUND
17801                   THEN
17802                      v_rp_orig_sys_ref := NULL;
17803                      cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
17804                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17805                   WHEN OTHERS
17806                   THEN
17807                      v_rp_orig_sys_ref := NULL;
17808                      cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
17809                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17810                      cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17811                END;
17812 
17813                v_rp_entries_name := copy_name(cz_pb_mgr.v_models_to_be_exported(i));
17814 
17815                IF (v_rp_entries_name = 'ERROR')
17816                THEN
17817                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17818                END IF;
17819 
17820                IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
17821                THEN
17822                   cz_pb_mgr.v_new_object_id := v_object_id;
17823 
17824                   BEGIN
17825                      cz_pb_mgr.v_rp_folder_id := p_folder;
17826                      cz_pb_mgr.v_rp_name := v_rp_entries_name;
17827                      cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
17828 
17829                      EXECUTE IMMEDIATE    'BEGIN'
17830                                        || ' '
17831                                        || 'insert into cz_rp_entries'
17832                                        || cz_pb_mgr.v_db_link
17833                                        || ' ( OBJECT_TYPE'
17834                                        || ' '
17835                                        || ',OBJECT_ID'
17836                                        || ' '
17837                                        || ',ENCLOSING_FOLDER'
17838                                        || ' '
17839                                        || ',NAME'
17840                                        || ' '
17841                                        || ',DESCRIPTION'
17842                                        || ' '
17843                                        || ',DELETED_FLAG'
17844                                        || ' '
17848                                        || ' '
17845                                        || ',SEEDED_FLAG'
17846                                        || ' '
17847                                        || ')'
17849                                        || 'VALUES ( ''PRJ'''
17850                                        || ' '
17851                                        || ',cz_pb_mgr.v_new_object_id'
17852                                        || ' '
17853                                        || ',cz_pb_mgr.v_rp_folder_id'
17854                                        || ' '
17855                                        || ',cz_pb_mgr.v_rp_name'
17856                                        || ' '
17857                                        || ',cz_pb_mgr.v_rp_desc'
17858                                        || ' '
17859                                        || ',''0'''
17860                                        || ' '
17861                                        || ',''0'');'
17862                                        || ' '
17863                                        || 'commit;'
17864                                        || ' '
17865                                        || 'END;';
17866                   EXCEPTION
17867                      WHEN OTHERS
17868                      THEN
17869                         cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
17870                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17871                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17872                   END;
17873 
17874                   --------update proj name in devl projects with the new name
17875                   ----------check if source model is upto date
17876                   l_model_upto_date_msg := NULL;
17877                   l_model_upto_date_status := 0;
17878                   is_model_upto_date(cz_pb_mgr.v_models_to_be_exported(i), l_model_upto_date_status, l_model_upto_date_msg);
17879 
17880                   BEGIN
17881                      IF (cz_pb_mgr.v_rp_name IS NOT NULL)
17882                      THEN
17883                         IF ((l_model_upto_date_status = 0) AND(l_ui_upto_date_status = 0))
17884                         THEN
17885                            EXECUTE IMMEDIATE    'BEGIN'
17886                                              || ' '
17887                                              || 'UPDATE cz_devl_projects'
17888                                              || cz_pb_mgr.v_db_link
17889                                              || '  t'
17890                                              || ' '
17891                                              || 'SET  t.name = cz_pb_mgr.v_rp_name'
17892                                              || ' '
17893                                              || 'WHERE  t.devl_project_id = '
17894                                              || cz_pb_mgr.v_new_object_id
17895                                              || ';'
17896                                              || ' '
17897                                              || 'END;';
17898                         ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = ui_refresh_required))
17899                         THEN
17900                            EXECUTE IMMEDIATE    'BEGIN'
17901                                              || ' '
17902                                              || 'UPDATE cz_devl_projects'
17903                                              || cz_pb_mgr.v_db_link
17904                                              || '  t'
17905                                              || ' '
17906                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
17907                                              || ' '
17908                                              || 't.last_logic_update = sysdate,'
17909                                              || ' '
17910                                              || 't.last_struct_update =  sysdate'
17911                                              || ' '
17912                                              || 'WHERE  t.devl_project_id = '
17913                                              || cz_pb_mgr.v_new_object_id
17914                                              || ';'
17915                                              || ' '
17916                                              || 'END;';
17917                         ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = 0))
17918                         THEN
17919                            EXECUTE IMMEDIATE    'BEGIN'
17920                                              || ' '
17921                                              || 'UPDATE cz_devl_projects'
17922                                              || cz_pb_mgr.v_db_link
17923                                              || '  t'
17924                                              || ' '
17925                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
17926                                              || ' '
17927                                              || 't.last_logic_update = sysdate'
17928                                              || ' '
17929                                              || 'WHERE  t.devl_project_id = '
17930                                              || cz_pb_mgr.v_new_object_id
17931                                              || ';'
17932                                              || ' '
17933                                              || 'END;';
17934                         ELSE
17935                            EXECUTE IMMEDIATE    'BEGIN'
17936                                              || ' '
17937                                              || 'UPDATE cz_devl_projects'
17941                                              || 'SET  t.name = cz_pb_mgr.v_rp_name,'
17938                                              || cz_pb_mgr.v_db_link
17939                                              || '  t'
17940                                              || ' '
17942                                              || ' '
17943                                              || 't.last_struct_update = sysdate'
17944                                              || ' '
17945                                              || 'WHERE  t.devl_project_id = '
17946                                              || cz_pb_mgr.v_new_object_id
17947                                              || ';'
17948                                              || ' '
17949                                              || 'END;';
17950                         END IF;
17951                      END IF;
17952 
17953                      COMMIT;
17954                   EXCEPTION
17955                      WHEN OTHERS
17956                      THEN
17957                         cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
17958                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17959                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17960                   END;
17961 
17962                  BEGIN
17963 
17964 	             EXECUTE IMMEDIATE ' INSERT INTO CZ_PERSISTENT_REC_IDS'
17965 	                               ||' (devl_project_id,MAX_PERSISTENT_REC_ID,'
17966                                        ||' deleted_flag) '
17967 		                       ||'  SELECT :1,m.max_persistent_rec_id,0 from '
17968                                        ||'  cz_devl_projects p,'
17969 		                       ||'  CZ_PERSISTENT_REC_IDS m '
17970                                        ||'  where p.devl_project_id=:2'
17971 	                               ||'  and m.devl_project_id=p.devl_project_id  '
17972 		                       ||'  and p.deleted_flag=0 '
17973                                        ||'  and p.POST_MIGR_CHANGE_FLAG is not null and p.POST_MIGR_CHANGE_FLAG<>''L'''
17974 		     USING  cz_pb_mgr.v_new_object_id, cz_pb_mgr.v_models_to_be_exported(i);
17975 
17976                  EXCEPTION
17977                      WHEN OTHERS
17978                      THEN
17979                         cz_pb_mgr.v_err_message := 'Error in inserting records into CZ_PERSISTENT_REC_IDS: ' || SQLERRM;
17980                         cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17981                         cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17982                   END;
17983 
17984                   ------insert into cz_xfr_project_bills
17985                   IF (v_rp_orig_sys_ref IS NOT NULL)
17986                   THEN
17987                      BEGIN
17988                         EXECUTE IMMEDIATE    'BEGIN'
17989                                           || ' '
17990                                           || 'insert into cz_xfr_project_bills'
17991                                           || cz_pb_mgr.v_db_link
17992                                           || ' ('
17993                                           || ' '
17994                                           || 'MODEL_PS_NODE_ID'
17995                                           || ' '
17996                                           || ',ORGANIZATION_ID'
17997                                           || ' '
17998                                           || ',COMPONENT_ITEM_ID'
17999                                           || ' '
18000                                           || ',DESCRIPTION'
18001                                           || ' '
18002                                           || ',LAST_IMPORT_RUN_ID'
18003                                           || ' '
18004                                           || ',LAST_IMPORT_DATE'
18005                                           || ' '
18006                                           || ',SOURCE_BILL_DELETED'
18007                                           || ' '
18008                                           || ',TOP_ITEM_ID'
18009                                           || ' '
18010                                           || ',DELETED_FLAG'
18011                                           || ' '
18012                                           || ',EXPLOSION_TYPE'
18013                                           || ' '
18014                                           || ',BILL_REVISION_DATE'
18015                                           || ' '
18016                                           || ',EFF_FROM'
18017                                           || ' '
18018                                           || ',EFF_TO'
18019                                           || ' '
18020                                           || ',SOURCE_SERVER'
18021                                           || ' '
18022                                           || ',COPY_ADDL_CHILD_MODELS'
18023                                           || ' '
18024                                           || ')'
18025                                           || ' '
18026                                           || 'SELECT  cz_pb_mgr.v_new_object_id'
18027                                           || ' '
18028                                           || ',ORGANIZATION_ID'
18029                                           || ' '
18030                                           || ',COMPONENT_ITEM_ID'
18031                                           || ' '
18032                                           || ',DESCRIPTION'
18033                                           || ' '
18034                                           || ',LAST_IMPORT_RUN_ID'
18035                                           || ' '
18036                                           || ',LAST_IMPORT_DATE'
18040                                           || ',TOP_ITEM_ID'
18037                                           || ' '
18038                                           || ',SOURCE_BILL_DELETED'
18039                                           || ' '
18041                                           || ' '
18042                                           || ',DELETED_FLAG'
18043                                           || ' '
18044                                           || ',EXPLOSION_TYPE'
18045                                           || ' '
18046                                           || ',BILL_REVISION_DATE'
18047                                           || ' '
18048                                           || ',EFF_FROM'
18049                                           || ' '
18050                                           || ',EFF_TO'
18051                                           || ' '
18052                                           || ',SOURCE_SERVER'
18053                                           || ' '
18054                                           || ',COPY_ADDL_CHILD_MODELS'
18055                                           || ' '
18056                                           || 'FROM   cz_xfr_project_bills'
18057                                           || ' '
18058                                           || 'WHERE  cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
18059                                           || ' '
18060                                           || 'AND   cz_xfr_project_bills.deleted_flag = ''0'';'
18061                                           || ' '
18062                                           || 'commit;'
18063                                           || ' '
18064                                           || 'END;';
18065                      EXCEPTION
18066                         WHEN NO_DATA_FOUND
18067                         THEN
18068                            cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
18069                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18070                         WHEN OTHERS
18071                         THEN
18072                            cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
18073                            cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18074                            cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18075                      END;
18076                   END IF;
18077                END IF;
18078             END LOOP;
18079          END IF;
18080 
18081          x_run_id := cz_pb_mgr.v_pb_run_id;
18082          x_status := cz_pb_mgr.v_status_code;
18083          log_pb_trace;
18084          delete_session_parameters;
18085 
18086          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
18087          THEN
18088             rollback_data(cz_pb_mgr.v_db_link);
18089             x_model_id := -999;
18090 
18091             IF (cz_pb_mgr.v_imported_ps_ref.COUNT > 0)
18092             THEN
18093                EXECUTE IMMEDIATE    'BEGIN'
18094                                  || ' '
18095                                  || 'FOR I IN cz_pb_mgr.v_imported_ps_ref.FISRT..cz_pb_mgr.v_imported_ps_ref.LAST'
18096                                  || ' '
18097                                  || 'LOOP'
18098                                  || ' '
18099                                  || 'DELETE FROM cz_rp_entries'
18100                                  || cz_pb_mgr.v_db_link
18101                                  || ' t'
18102                                  || ' '
18103                                  || 'WHERE  t.object_id = cz_pb_mgr.v_imported_ps_ref(i)'
18104                                  || ' '
18105                                  || 'AND    t.object_type = ''PRJ'';'
18106                                  || ' '
18107                                  || 'END;';
18108             END IF;
18109          ELSE
18110             x_model_id := v_object_id;
18111          END IF;
18112 
18113          ----------delete dummy publication record
18114          DELETE FROM cz_model_publications
18115                WHERE publication_id = v_pub_id;
18116 
18117          DELETE FROM cz_model_publications
18118                WHERE remote_publication_id = v_pub_id;
18119 
18120          DELETE FROM cz_pb_model_exports
18121                WHERE publication_id = v_pub_id;
18122       END IF;
18123 
18124       cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18125 
18126       IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
18127       THEN
18128          l_msg_index := 1;
18129 
18130          WHILE l_msg_count > 0
18131          LOOP
18132             cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
18133             l_msg_index := l_msg_index + 1;
18134             l_msg_count := l_msg_count - 1;
18135          END LOOP;
18136       END IF;
18137 
18138       COMMIT;
18139    EXCEPTION
18140       WHEN failed_to_lock_model
18141       THEN
18142          x_run_id := cz_pb_mgr.v_pb_run_id;
18143          x_status := PUBLICATION_ERROR;
18144          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18145          log_pb_trace;
18146       WHEN ui_not_uptodate THEN
18147          x_run_id := cz_pb_mgr.v_pb_run_id;
18148          x_status := PUBLICATION_ERROR;
18149          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18150          log_pb_trace;
18154          cz_pb_mgr.v_err_message := 'Fatal error during deep model copy of model: ' || cz_pb_mgr.v_root_model_id;
18151       WHEN OTHERS
18152       THEN
18153          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18155          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18156    END;
18157 
18158 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18159 -----signature of deep model copy that developer would call
18160 ----
18161    PROCEDURE deep_model_copy(
18162       p_model_id IN NUMBER
18163      ,p_server_id IN NUMBER
18164      ,p_folder IN NUMBER
18165      ,p_copy_rules IN NUMBER
18166      ,p_copy_uis IN NUMBER
18167      ,p_copy_root IN NUMBER
18168      ,x_return_status OUT NOCOPY VARCHAR2
18169      ,x_msg_count OUT NOCOPY NUMBER
18170      ,x_msg_data OUT NOCOPY VARCHAR2
18171      ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_TRUE
18172    )
18173    IS
18174       TYPE message_tbl_type IS TABLE OF VARCHAR2(2000)
18175          INDEX BY BINARY_INTEGER;
18176 
18177       l_model_id cz_devl_projects.devl_project_id%TYPE;
18178       l_run_id NUMBER;
18179       l_status VARCHAR2(2000);
18180       l_message_tbl message_tbl_type;
18181       l_instr NUMBER := 0;
18182    BEGIN
18183 
18184       --initialize the message stack depending on the input parameter
18185       IF (p_init_msg_list = FND_API.G_TRUE) THEN
18186          fnd_msg_pub.initialize;
18187       END IF;
18188 
18189       x_return_status := FND_API.G_RET_STS_SUCCESS;
18190       x_msg_count := 0;
18191       x_msg_data := '';
18192       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);
18193 
18194       IF (l_status = PUBLICATION_ERROR)
18195       THEN
18196          x_return_status := FND_API.G_RET_STS_ERROR;
18197          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
18198       END IF;
18199    END deep_model_copy;
18200 
18201 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18202 ------------procedure to publish all models
18203    PROCEDURE publish_all_models
18204    AS
18205 
18206       CURSOR tobepublished_cur
18207       IS
18208          SELECT   publication_id
18209              FROM cz_model_publications
18210             WHERE cz_model_publications.deleted_flag = record_not_deleted
18211               AND cz_model_publications.export_status = publication_pending
18212               AND UPPER(object_type) = model_publication
18213          ORDER BY publication_id;
18214 
18215       v_tobepublished cz_model_publications.publication_id%TYPE;
18216       v_run_id cz_db_logs.run_id%TYPE;
18217       v_pb_status cz_model_publications.export_status%TYPE;
18218    BEGIN
18219 
18220       OPEN tobepublished_cur;
18221 
18222       LOOP
18223          FETCH tobepublished_cur
18224           INTO v_tobepublished;
18225 
18226          EXIT WHEN tobepublished_cur%NOTFOUND;
18227          publish_model(v_tobepublished, v_run_id, v_pb_status);
18228       END LOOP;
18229 
18230       CLOSE tobepublished_cur;
18231    EXCEPTION
18232       WHEN OTHERS
18233       THEN
18234          CLOSE tobepublished_cur;
18235 
18236          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GEN_ERROR', 'TOBEPUBLISHED', v_tobepublished, 'SQLERRM', SQLERRM);
18237          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_ALL_MODELS', SQLCODE);
18238    END publish_all_models;
18239 
18240 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18241 -----initialize pb parameters
18242    PROCEDURE initialize_pb_parameters(p_publication_id IN cz_model_publications.publication_id%TYPE)
18243    AS
18244       l_log_pb_time cz_db_settings.VALUE%TYPE;
18245       l_pub_mode cz_model_publications.publication_mode%TYPE;
18246    BEGIN
18247       fnd_msg_pub.initialize;
18248       cz_pb_mgr.v_publication_id := p_publication_id;
18249       cz_pb_mgr.sequence_const := 0;
18250       cz_pb_mgr.v_ui_str := 'x';
18251       cz_pb_mgr.global_export_retcode := 0;
18252       cz_pb_mgr.v_pb_run_id := 0.0;
18253       cz_pb_mgr.bomsynch_flag := 'N';
18254       cz_pb_mgr.v_status_code := publication_ok;
18255       cz_pb_mgr.v_session_parameter := pub_model;
18256       cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
18257       cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
18258       cz_pb_mgr.v_cz_model_pub_old_id := p_publication_id;
18259       cz_pb_mgr.v_cz_model_pub_new_id := NULL;
18260       cz_pb_mgr.v_ui_name := NULL;
18261       cz_pb_mgr.v_sql_err_msg := 'Fatal error reported';
18262       v_refresh_rules := 'NO';
18263 
18264       SELECT publication_mode
18265         INTO l_pub_mode
18266         FROM cz_model_publications
18267        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted;
18268 
18269       IF (UPPER(l_pub_mode) = cz_model_migration_pvt.mode_migration)
18270       THEN
18271          cz_pb_mgr.v_session_parameter := cz_model_migration_pvt.migrate_model;
18272          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
18273          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
18274       END IF;
18275 
18276       ---------select run_id and user from dual
18277       BEGIN
18278          SELECT USER, cz_xfr_run_infos_s.NEXTVAL
18279            INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
18280            FROM DUAL;
18281       EXCEPTION
18282          WHEN OTHERS
18283          THEN
18287       -------select setting for logging
18284             RAISE run_id_error;
18285       END;
18286 
18288       BEGIN
18289          SELECT VALUE
18290            INTO cz_pb_mgr.v_pb_log_flag
18291            FROM cz_db_settings
18292           WHERE cz_db_settings.setting_id = publication_log;
18293       EXCEPTION
18294          WHEN OTHERS
18295          THEN
18296             cz_pb_mgr.v_pb_log_flag := 'NO';
18297       END;
18298 
18299       -------select setting for logging publication times
18300       BEGIN
18301          SELECT VALUE
18302            INTO l_log_pb_time
18303            FROM cz_db_settings
18304           WHERE cz_db_settings.setting_id = pb_timing_log;
18305 
18306          IF (l_log_pb_time = 'YES')
18307          THEN
18308             cz_pb_mgr.g_log_timing := publication_timing;
18309          END IF;
18310       EXCEPTION
18311          WHEN OTHERS
18312          THEN
18313             cz_pb_mgr.g_log_timing := 1;
18314       END;
18315    EXCEPTION
18316       WHEN run_id_error
18317       THEN
18318          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
18319          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
18320       WHEN OTHERS
18321       THEN
18322          RAISE;
18323    END initialize_pb_parameters;
18324 
18325 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18326    PROCEDURE check_ui_template_exist(p_template_id IN NUMBER, x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE)
18327    IS
18328       l_count NUMBER := 0;
18329    BEGIN
18330       SELECT 1
18331         INTO l_count
18332         FROM cz_ui_templates
18333        WHERE cz_ui_templates.template_id = p_template_id
18334          AND cz_ui_templates.ui_def_id = 0
18335          AND cz_ui_templates.deleted_flag = record_not_deleted
18336          AND ROWNUM < 2;
18337    EXCEPTION
18338       WHEN NO_DATA_FOUND
18339       THEN
18340          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_GLOBAL_TMPL', 'PUBID', cz_pb_mgr.v_publication_id);
18341          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18342          x_status := PUBLICATION_ERROR;
18343    END check_ui_template_exist;
18344 
18345 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18346 --------procedure that checks if model and ui specified in the request exist
18347 --------@p_publication_id : publication id of the request
18348 --------@p_model_id : model id of the pb request
18349 --------@p_ui_def_id : ui_def_id of the request
18350 --------@x_status : publication status parameter
18351    PROCEDURE check_model_ui_exist(
18352       p_publication_id IN cz_model_publications.publication_id%TYPE
18353      ,p_model_id IN cz_model_publications.model_id%TYPE
18354      ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
18355      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18356    )
18357    AS
18358       v_model_chk_count NUMBER := 0.0;
18359       v_ui_chk_count NUMBER := 0.0;
18360    BEGIN
18361       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18362       THEN
18363          SELECT COUNT(*)
18364            INTO v_model_chk_count
18365            FROM cz_devl_projects
18366           WHERE cz_devl_projects.devl_project_id = p_model_id AND cz_devl_projects.deleted_flag = record_not_deleted;
18367 
18368          IF (v_model_chk_count = 0)
18369          THEN
18370             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL', 'PUBID', p_publication_id);
18371             cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18372             x_status := PUBLICATION_ERROR;
18373          END IF;
18374 
18375          v_ui_chk_count := -1;
18376 
18377          IF ((p_ui_def_id IS NOT NULL) AND(p_ui_def_id > 0))
18378          THEN
18379             SELECT COUNT(*)
18380               INTO v_ui_chk_count
18381               FROM cz_ui_defs
18382              WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
18383 
18384             IF (v_ui_chk_count = 0)
18385             THEN
18386                cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI', 'PUBID', p_publication_id);
18387                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18388                x_status := PUBLICATION_ERROR;
18389             END IF;
18390          END IF;
18391 
18392          IF ((v_model_chk_count = 0) OR(v_ui_chk_count = 0))
18393          THEN
18394             update_publication_status(p_publication_id, PUBLICATION_ERROR, empty_string);
18395          END IF;
18396       END IF;
18397    EXCEPTION
18398       WHEN OTHERS
18399       THEN
18400          x_status := PUBLICATION_ERROR;
18401          RAISE;
18402    END check_model_ui_exist;
18403 
18404 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18405 -------procedure that gets the target ui def id in case no new copy is made
18406    PROCEDURE get_tgt_ui_def(
18407       p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
18408      ,p_prev_rem_publication_id IN cz_model_publications.publication_id%TYPE
18409      ,x_rem_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
18410      ,x_rem_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
18411      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18412    )
18413    AS
18414       v_ui_name cz_ui_defs.NAME%TYPE;
18415       v_old_remote_model cz_model_publications.model_id%TYPE;
18416       ui_cv ref_cursor;
18417    BEGIN
18421            FROM cz_ui_defs
18418       BEGIN
18419          SELECT NAME
18420            INTO v_ui_name
18422           WHERE ui_def_id = p_ui_def_id;
18423       EXCEPTION
18424          WHEN OTHERS
18425          THEN
18426             v_ui_name := NULL;
18427       END;
18428 
18429       BEGIN
18430         get_remote_model_id(cz_pb_mgr.v_server_id,cz_pb_mgr.v_root_model_id,x_status,v_old_remote_model);
18431       EXCEPTION
18432          WHEN OTHERS
18433          THEN
18434             RAISE;
18435       END;
18436 
18437       x_rem_model_id := v_old_remote_model;
18438 
18439       IF (v_ui_name IS NOT NULL)
18440       THEN
18441          OPEN ui_cv FOR    'SELECT ui_def_id FROM cz_ui_defs'
18442                         || cz_pb_mgr.v_db_link
18443                         || ' '
18444                         || 'WHERE name = :1'
18445                         || ' '
18446                         || 'AND deleted_flag = ''0'' AND devl_project_id = :2' USING v_ui_name, v_old_remote_model;
18447 
18448          LOOP
18449             FETCH ui_cv
18450              INTO x_rem_ui_def_id;
18451 
18452             EXIT WHEN ui_cv%NOTFOUND;
18453          END LOOP;
18454 
18455          CLOSE ui_cv;
18456       END IF;
18457    EXCEPTION
18458       WHEN OTHERS
18459       THEN
18460          CLOSE ui_cv;
18461 
18462          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;
18463          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETTGTUIDEF', SQLCODE);
18464          x_status := PUBLICATION_ERROR;
18465          RAISE;
18466    END get_tgt_ui_def;
18467 
18468 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18469 -----procedure that checks the export status of the existing request
18470 -----Only requests with a status of PEN can be published
18471    PROCEDURE check_export_status(
18472       p_export_status IN cz_model_publications.export_status%TYPE
18473      ,p_pb_flag IN VARCHAR2
18474      ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18475    )
18476    AS
18477    BEGIN
18478       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18479       THEN
18480          IF (p_pb_flag = cz_publish)
18481          THEN
18482             IF ((p_export_status = 'PUP') OR(p_export_status = 'ERR') OR(p_export_status = 'PRC') OR(p_export_status = 'OK'))
18483             THEN
18484                cz_pb_mgr.v_err_message :=
18485                                    cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
18486                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18487                cz_pb_mgr.v_err_message := 'Publication with a status PRC/PUP/ERR may not be published';
18488                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18489                x_status := PUBLICATION_ERROR;
18490             END IF;
18491          ELSIF(p_pb_flag = cz_republish)
18492          THEN
18493             IF (p_export_status <> 'OK')
18494             THEN
18495                x_status := PUBLICATION_ERROR;
18496                cz_pb_mgr.v_err_message :=
18497                                cz_utils.get_text('CZ_REPUB_STATUS_CHK', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
18498                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISHMODEL', SQLCODE);
18499             END IF;
18500          END IF;
18501       END IF;
18502    EXCEPTION
18503       WHEN OTHERS
18504       THEN
18505          cz_pb_mgr.v_err_message := 'Error in check pb status: ' || SQLERRM;
18506          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18507          x_status := PUBLICATION_ERROR;
18508    END check_export_status;
18509 
18510 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18511    PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER, x_return_status OUT NOCOPY NUMBER, x_msg_data OUT NOCOPY VARCHAR2)
18512    IS
18513       l_model_name cz_devl_projects.NAME%TYPE;
18514    BEGIN
18515       IF p_ui_def_id IS NOT NULL
18516       THEN
18517          is_ui_upto_date(p_ui_def_id, 0, x_return_status, x_msg_data, l_model_name);
18518       END IF;
18519    END is_ui_upto_date;
18520 
18521    FUNCTION is_ui_upto_date(p_ui_def_id IN NUMBER)
18522       RETURN VARCHAR2
18523    IS
18524       l_return_status VARCHAR2(255);
18525       l_msg_data VARCHAR2(32000);
18526    BEGIN
18527       is_ui_upto_date(p_ui_def_id, l_return_status, l_msg_data);
18528 
18529       IF l_return_status = 2
18530       THEN
18531          RETURN '1';
18532       ELSE
18533          RETURN '0';
18534       END IF;
18535    END is_ui_upto_date;
18536 
18537 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18538 -- return status: 0 yes, 1 no
18539 -- directly called by developer
18540 PROCEDURE is_model_upto_date(p_model_id IN NUMBER, x_return_status IN OUT NOCOPY NUMBER, x_msg_data IN OUT NOCOPY VARCHAR2)
18541 IS
18542   l_component_id                cz_model_ref_expls.component_id%TYPE;
18543   l_model_name                  cz_devl_projects.NAME%TYPE;
18544   l_root_model_name             cz_devl_projects.NAME%TYPE;
18545   l_prj_last_logic_update       cz_devl_projects.last_logic_update%TYPE;
18546   l_prj_last_struct_update      cz_devl_projects.last_struct_update%TYPE;
18550   l_is_solver_model             BOOLEAN;
18547   l_logic_last_update_date      cz_lce_headers.last_update_date%TYPE;
18548   l_root_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
18549   l_engine_type                 cz_devl_projects.config_engine_type%TYPE;
18551 
18552   CURSOR model_cur(in_root_model NUMBER) IS
18553          SELECT DISTINCT component_id
18554          FROM cz_model_ref_expls
18555          WHERE deleted_flag = '0' AND model_id = in_root_model AND ps_node_type = 263;
18556 BEGIN
18557   fnd_msg_pub.initialize;
18558 
18559   IF p_model_id IS NOT NULL THEN
18560     x_return_status := 0;
18561     x_msg_data := '';
18562 
18563     BEGIN
18564       SELECT last_logic_update, config_engine_type, NAME
18565         INTO l_prj_last_logic_update, l_engine_type, l_root_model_name
18566       FROM cz_devl_projects
18567       WHERE devl_project_id = p_model_id AND deleted_flag = '0';
18568     EXCEPTION
18569       WHEN NO_DATA_FOUND THEN
18570         RAISE;
18571     END;
18572 
18573     l_is_solver_model := (l_engine_type IS NOT NULL AND l_engine_type = ENGINE_TYPE_FCE);
18574 
18575     IF l_is_solver_model THEN
18576       SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
18577       FROM cz_fce_files
18578       WHERE component_id = p_model_id AND deleted_flag = '0';
18579     ELSE
18580       SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
18581       FROM cz_lce_headers
18582       WHERE cz_lce_headers.component_id = p_model_id AND cz_lce_headers.deleted_flag = '0';
18583     END IF;
18584 
18585     IF l_root_logic_last_update_date IS NULL OR l_root_logic_last_update_date < l_prj_last_logic_update THEN
18586       x_return_status := 1;
18587       x_msg_data := l_root_model_name;
18588       RETURN;
18589     END IF;
18590 
18591     OPEN model_cur(p_model_id);
18592     LOOP
18593       FETCH model_cur INTO l_component_id;
18594       EXIT WHEN model_cur%NOTFOUND;
18595       --vsingava 30th Sep '08
18596       --bug6348111
18597       BEGIN
18598         SELECT last_logic_update, NAME, last_struct_update
18599 	INTO l_prj_last_logic_update, l_model_name, l_prj_last_struct_update
18600         FROM cz_devl_projects
18601         WHERE cz_devl_projects.devl_project_id = l_component_id AND deleted_flag = '0';
18602       EXCEPTION
18603         WHEN OTHERS THEN
18604           l_prj_last_logic_update := NULL;
18605       END;
18606 
18607       IF l_prj_last_logic_update IS NOT NULL THEN
18608         IF l_is_solver_model THEN
18609           SELECT MAX(last_update_date) INTO l_logic_last_update_date
18610           FROM cz_fce_files
18611           WHERE component_id = l_component_id AND deleted_flag = '0';
18612         ELSE
18613           SELECT MAX(last_update_date) INTO l_logic_last_update_date
18614           FROM cz_lce_headers
18615           WHERE cz_lce_headers.component_id = l_component_id AND cz_lce_headers.deleted_flag = '0';
18616         END IF;
18617       END IF;
18618 
18619       IF l_prj_last_logic_update IS NULL OR l_logic_last_update_date IS NULL OR
18620          l_logic_last_update_date < l_prj_last_logic_update THEN
18621         x_return_status := 1;
18622         x_msg_data := l_model_name;
18623         EXIT;
18624       ELSIF l_root_logic_last_update_date < l_prj_last_struct_update THEN
18625         x_return_status := 1;
18626         x_msg_data := l_root_model_name;
18627         EXIT;
18628       END IF;
18629     END LOOP;
18630 
18631     CLOSE model_cur;
18632   END IF;
18633 EXCEPTION
18634   WHEN OTHERS THEN
18635     x_return_status := 1;
18636     x_msg_data := SQLERRM;
18637 END is_model_upto_date;
18638 --------------------------------------------------------------------------------
18639 -- private, check all uis if input uidefid null, check the given ui tree otherwise
18640    PROCEDURE model_upto_date(modelid IN NUMBER, status IN OUT NOCOPY VARCHAR2, uidefid IN NUMBER DEFAULT NULL)
18641    AS
18642       l_model_name VARCHAR2(4000);
18643       l_ui_name cz_ui_defs.NAME%TYPE;
18644       l_ui_model_name VARCHAR2(4000);
18645       l_model_status NUMBER;
18646       l_ui_status NUMBER;
18647       l_folder_id NUMBER;
18648       l_folder_path VARCHAR2(4000);
18649       l_model_upto_date BOOLEAN;
18650       l_ui_upto_date BOOLEAN;
18651       l_uidef_tbl  t_ref;
18652    BEGIN
18653       l_model_upto_date := TRUE;
18654       is_model_upto_date(modelid, l_model_status, l_model_name);
18655 
18656       IF l_model_status IS NOT NULL AND l_model_status <> 0 THEN
18657          l_model_upto_date := FALSE;
18658       END IF;
18659 
18660       l_ui_upto_date := TRUE;
18661 
18662       IF uidefid IS NULL THEN
18663         IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18664           SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
18665 	  FROM cz_ui_defs
18666 	  WHERE deleted_flag='0' AND ui_style=g_ui_style_jrad AND devl_project_id IN
18667 	  (SELECT component_id FROM cz_model_ref_expls
18668            WHERE deleted_flag='0' AND model_id=modelid);
18669         ELSE
18670           SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
18671           FROM cz_ui_defs
18672           WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
18673           (SELECT component_id FROM cz_model_ref_expls
18674            WHERE deleted_flag='0' AND model_id=modelid);
18675         END IF;
18676 
18677         IF l_uidef_tbl.COUNT > 0 THEN
18678           FOR i IN l_uidef_tbl.FIRST .. l_uidef_tbl.LAST LOOP
18679             is_ui_upto_date(p_ui_def_id         => l_uidef_tbl(i)
18683                            ,x_model_name        => l_ui_model_name
18680                            ,p_report_model_info => 1
18681                            ,x_return_status     => l_ui_status
18682                            ,x_msg_data          => l_ui_name
18684                            ,p_check_root_ui_only=> TRUE
18685                            );
18686             IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
18687               l_ui_upto_date := FALSE;
18688               EXIT;
18689             END IF;
18690           END LOOP;
18691         END IF;
18692       ELSE
18693         is_ui_upto_date(uidefid, 1, l_ui_status, l_ui_name, l_ui_model_name);
18694         IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
18695           l_ui_upto_date := FALSE;
18696         END IF;
18697       END IF;
18698 
18699       -- l_status := NVL(l_model_status,0) + NVL(l_ui_status,0);
18700       -- 0 ok, 1 model not up to date, 2 ui node up to date, 3 both model and ui not up to date
18701       IF NOT l_ui_upto_date OR NOT l_model_upto_date THEN
18702          BEGIN
18703             SELECT enclosing_folder
18704               INTO l_folder_id
18705               FROM cz_rp_entries
18706              WHERE object_id = modelid AND enclosing_folder <> 0 AND object_type = 'PRJ' AND deleted_flag = '0';
18707 
18708             FOR rp_rec IN (SELECT NAME
18709                            FROM cz_rp_entries
18710                            START WITH object_type = 'FLD' AND object_id = l_folder_id
18711                            CONNECT BY PRIOR enclosing_folder = object_id AND object_type = 'FLD' AND object_id <> 0 AND deleted_flag = '0')
18712             LOOP
18713                l_folder_path := rp_rec.NAME || '/' || l_folder_path;
18714             END LOOP;
18715          EXCEPTION
18716             WHEN OTHERS THEN
18717                l_folder_path := NULL;
18718          END;
18719       END IF;
18720 
18721       IF l_folder_path IS NOT NULL AND NOT l_model_upto_date THEN
18722          l_model_name := l_folder_path || l_model_name;
18723       END IF;
18724 
18725       IF l_folder_path IS NOT NULL AND NOT l_ui_upto_date THEN
18726          l_ui_model_name := l_folder_path || l_ui_model_name;
18727       END IF;
18728 
18729       IF NOT l_ui_upto_date AND l_model_upto_date THEN                                                     -- l_status = 2
18730          status :=
18731             cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' || ' ''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
18732       ELSIF l_ui_upto_date AND NOT l_model_upto_date THEN                                                  -- l_status = 1
18733          status := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'LOGIC', 'MODELID', '''' || l_model_name || '''');
18734       ELSIF NOT l_ui_upto_date AND NOT l_model_upto_date THEN                                              -- l_status = 3
18735          status :=
18736                   cz_utils.get_text('CZ_PB_UI_LOGIC_NOT_UP_TO_DATE', 'STRING', '''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
18737       ELSE
18738          status := '0';
18739       END IF;
18740    EXCEPTION
18741       WHEN OTHERS THEN
18742          log_pb_errors(SQLERRM, 1, 'cz_pb_mgr.MODEL_UPTO_DATE', SQLCODE);
18743          raise_application_error(-20010, SQLERRM);
18744    END model_upto_date;
18745 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18746 -- public
18747 PROCEDURE model_upto_date(modelid IN NUMBER, uidefid IN NUMBER, status IN OUT NOCOPY VARCHAR2)
18748 AS
18749 BEGIN
18750   model_upto_date(modelid, status, uidefid);
18751 END model_upto_date;
18752 ----------------------------------------------------------------------------------
18753    FUNCTION migrate_name(p_devl_project_id IN NUMBER)
18754       RETURN VARCHAR2
18755    IS
18756       original_name cz_devl_projects.NAME%TYPE;
18757       v_name cz_devl_projects.NAME%TYPE;
18758       v_instance_name cz_servers.instance_name%TYPE;
18759       v_null PLS_INTEGER;
18760       l_endBr varchar2(3):=NULL;
18761    BEGIN
18762       BEGIN
18763          SELECT instance_name
18764            INTO v_instance_name
18765            FROM cz_servers
18766           WHERE server_local_id = 0;
18767 
18768          SELECT NAME
18769            INTO original_name
18770            FROM cz_rp_entries
18771           WHERE object_id = p_devl_project_id AND object_type = 'PRJ' AND deleted_flag = '0';
18772       EXCEPTION
18773          WHEN NO_DATA_FOUND
18774          THEN
18775             original_name := NULL;
18776             RAISE;
18777          WHEN OTHERS
18778          THEN
18779             original_name := NULL;
18780             RAISE;
18781       END;
18782 
18783       IF (original_name IS NOT NULL)
18784       THEN
18785          IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18786          v_name := SUBSTR (original_name|| '-[FCE]', 1, 235);
18787 
18788 	 ELSE
18789          v_name :=
18790                SUBSTR (original_name
18791             || ' (Migrated from '
18792             || v_instance_name
18793             || ':'
18794             || REPLACE(cz_developer_utils_pvt.get_repository_path(p_devl_project_id, 'PRJ'), '/', '.'), 1, 235);
18795             -- Bug 5514199; 12-Sep-2006; kdande; Taking 235 chars only as other characters would be appended at runtime like copy x, rules etc
18796          END IF;
18797 
18798 	 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18799 	         l_endBr:='';
18800 	 ELSE
18801 		 l_endBr:=')';
18802 	 END IF;
18806                               || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
18803          BEGIN
18804             EXECUTE IMMEDIATE    'SELECT NULL FROM cz_rp_entries'
18805                               || cz_pb_mgr.v_db_link
18807                               || '       name = :1'
18808                          INTO v_null
18809                         USING v_name || l_endBr;
18810          EXCEPTION
18811             WHEN NO_DATA_FOUND
18812             THEN
18813                RETURN v_name || l_endBr;
18814          END;
18815 
18816          BEGIN
18817             EXECUTE IMMEDIATE    'SELECT COUNT(*) FROM cz_rp_entries'
18818                               || cz_pb_mgr.v_db_link
18819                               || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
18820                               || '       name LIKE :1'
18821                          INTO v_null
18822                         USING v_name || ' copy _%'||l_endBr;
18823 
18824             --This is copy v_null + 1.
18825             RETURN v_name || ' copy ' || TO_CHAR(v_null + 1) || l_endBr;
18826          EXCEPTION
18827             WHEN NO_DATA_FOUND
18828             THEN
18829                RETURN v_name || ' copy 1'||l_endBr;
18830          END;
18831       END IF;
18832    EXCEPTION
18833       WHEN OTHERS
18834       THEN
18835          log_report('cz_utils', 'migrate_name', 1, SQLERRM, fnd_log.level_unexpected);
18836          v_name := 'ERROR';
18837          RETURN v_name;
18838    END;
18839 
18840 ----------------------------------------------------------------------------------
18841 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18842 ---------procedure to publish a single model
18843 PROCEDURE publish_model(publicationid IN NUMBER, x_run_id IN OUT NOCOPY NUMBER, x_pb_status IN OUT NOCOPY VARCHAR2)
18844 AS
18845   l_publication_proc  CONSTANT  VARCHAR2(10) := 'CZ_PB_MGR';
18846   l_migration_proc    CONSTANT  VARCHAR2(20) := 'CZ_MODEL_MIGRATION';
18847   l_proc_name  v$session.module%TYPE;
18848   v_check_publication BOOLEAN;
18849   v_new_copy_pb_id cz_model_publications.publication_id%TYPE;
18850   v_new_model_id cz_model_publications.model_id%TYPE;
18851   v_prev_publication_id cz_model_publications.publication_id%TYPE;
18852   v_prev_export_status cz_model_publications.export_status%TYPE;
18853   v_cur_export_status cz_model_publications.export_status%TYPE;
18854   v_pb_mode cz_model_publications.publication_mode%TYPE;
18855   l_tgt_status VARCHAR2(1);
18856   l_tgt_msg VARCHAR2(2000);
18857   l_msg_data VARCHAR2(2000);
18858   l_msg_count NUMBER;
18859   l_lock_status VARCHAR2(1);
18860   v_rp_entries_name cz_rp_entries.NAME%TYPE;
18861   v_rp_entries_desc cz_rp_entries.description%TYPE;
18862   v_object_id cz_rp_entries.object_id%TYPE;
18863   v_rp_orig_sys_ref VARCHAR2(255);
18864   v_imp_ps_node_count PLS_INTEGER;
18865   l_locked_models cz_security_pvt.number_type_tbl;
18866   l_upto_date_status VARCHAR2(2000);
18867   l_msg_index NUMBER;
18868   v_max_rec_id NUMBER;
18869   l_message VARCHAR2(32000);
18870   l_srcroot VARCHAR2(32000);
18871   l_targrootpath VARCHAR2(32000);
18872   l_srcmodel VARCHAR2(32000);
18873   l_tgt_fld_path VARCHAR2(32000);
18874 
18875   v_import_server_on_remote cz_servers.server_local_id%TYPE;
18876   l_target_imp_server_on_local  cz_servers.server_local_id%TYPE;
18877 
18878   has_no_priv_to_publish EXCEPTION;
18879   failed_to_lock_model EXCEPTION;
18880   priv_check_err EXCEPTION;
18881   not_global_template EXCEPTION;
18882   model_not_upto_date EXCEPTION;
18883   invalid_object_type EXCEPTION;
18884   user_not_initialized EXCEPTION;
18885   cz_pb_link_problem EXCEPTION;
18886 
18887 BEGIN
18888   pbdebug := 22001;
18889   delete_session_parameters;
18890   clear_all_tables(cz_pb_mgr.v_status_code);
18891   initialize_pb_parameters(publicationid);
18892 
18893   IF (fnd_global.user_name IS NULL) THEN
18894     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', 'User is not initialized on session');
18895     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CHECKUSER', 21002);
18896     RAISE user_not_initialized;
18897   END IF;
18898 
18899   get_source_pb_info(publicationid
18900                     ,cz_pb_mgr.v_root_model_id
18901                     ,cz_pb_mgr.v_root_ui_def_id
18902                     ,cz_pb_mgr.v_server_id
18903                     ,v_cur_export_status
18904                     ,cz_pb_mgr.remote_publication_id
18905                     ,g_object_type
18906                     ,v_pb_mode
18907                     ,cz_pb_mgr.v_status_code
18908                     );
18909 
18910   -- check if there is another publishing or a pub sync or a migration process running
18911   IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
18912     l_proc_name := cz_pb_sync_util.check_process;
18913   ELSE -- must be migration because no stand alone UIT publication
18914     BEGIN
18915       SELECT module INTO l_proc_name FROM V$SESSION WHERE module = l_migration_proc;
18916     EXCEPTION
18917       WHEN NO_DATA_FOUND THEN
18918         NULL;
18919     END;
18920   END IF;
18921 
18922   IF l_proc_name IS NOT NULL THEN
18923     IF l_proc_name = l_publication_proc THEN
18924       cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'publication');
18925     ELSIF l_proc_name = l_migration_proc THEN
18926       cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'model migration');
18927     ELSE
18928       cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_SYNC_PROCESS_EXISTS');
18929     END IF;
18933     cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
18930     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,'cz_pb_mgr.CHKPROCESS',21001);
18931     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18932     x_pb_status := PUBLICATION_ERROR;
18934     log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
18935     RETURN;
18936   END IF;
18937 
18938   -- register application
18939   IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
18940     dbms_application_info.set_module(l_publication_proc, '');
18941   ELSE
18942     dbms_application_info.set_module(l_migration_proc, '');
18943   END IF;
18944 
18945   BEGIN
18946     IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
18947       log_timing_message('start publish model');
18948     END IF;
18949 
18950       ----check if model is up to date
18951     --  IF (g_object_type = MODEL_PUBLICATION) THEN
18952          model_upto_date(cz_pb_mgr.v_root_model_id, l_upto_date_status);
18953 
18954          IF (l_upto_date_status <> '0') THEN
18955             cz_pb_mgr.v_err_message := l_upto_date_status;
18956             RAISE model_not_upto_date;
18957          END IF;
18958     --  END IF;
18959 
18960       IF (g_object_type = template_publication) THEN
18961          check_ui_template_exist(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_status_code);
18962 
18963          IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
18964             RAISE not_global_template;
18965          END IF;
18966       ELSIF(g_object_type = MODEL_PUBLICATION) THEN
18967          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);
18968       ELSIF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
18969          RAISE invalid_object_type;
18970       END IF;
18971 
18972       check_export_status(v_cur_export_status, cz_publish, cz_pb_mgr.v_status_code);
18973 
18974       IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
18975          RAISE invalid_object_type;
18976       END IF;
18977 
18978       ------ retrieve_db_link
18979       cz_pb_mgr.v_db_link := retrieve_db_link(cz_pb_mgr.v_server_id);
18980 
18981       -----check for source server flag on the target instance
18982       IF (cz_pb_mgr.v_server_id <> 0) THEN
18983          IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
18984             cz_pb_sync_util.verify_mig_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
18985          ELSE
18986             cz_pb_sync_util.verify_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
18987          END IF;
18988 
18989          IF (l_tgt_status <> '0') THEN
18990 
18991             cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', l_tgt_msg);
18992             RAISE cz_pb_link_problem;
18993          END IF;
18994       END IF;
18995 
18996       l_target_imp_server_on_local := cz_pb_mgr.v_server_id;
18997 
18998       IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
18999 
19000          ----check for remote publication id on the target instance
19001 
19002          remote_pb_check(cz_pb_mgr.remote_publication_id);
19003 
19004       ELSE
19005 
19006          /*
19007           * Bug 5516478
19008           * On migrating a model to a remote server, if there are BOM models involved,
19009           * CZ_XFR_PROJECT_BILLS are also migrated.  However, the column SOURCE_SERVER
19010           * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
19011           * migration target.  Currently it was being copied from the source to the
19012           * target.  In order to do this we need to query CZ_SERVERS in the migration
19013           * target to get the SERVER_LOCAL_ID.
19014           */
19015 
19016           v_import_server_on_remote := getRemoteImportServer(l_target_imp_server_on_local);
19017 
19018       END IF;
19019 
19020       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19021          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19022             log_timing_message('start has_tobe_published');
19023          END IF;
19024 
19025          ----check if the publication has to be published
19026          IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
19027             v_check_publication := has_tobe_published(publicationid);
19028          ELSE
19029             v_check_publication := TRUE;
19030             ---for publishing, rules related tables are cleared in get_oa_tmpls
19031             ---which is called from has_to_be_published.
19032             ---for model migration, get_oa_tmpls is called from upload_ui_schema
19033             ---at which point, tables cannot be cleared because rules of the model have
19034             ---already been collected in these tables from bulk_collect_rules.
19035             ---so, if model migration, the rules related tables will NOT be cleared
19036             ---get_oa_tmpls.
19037             clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
19038          END IF;
19039 
19040          IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19041             log_timing_message('end has_tobe_published');
19042          END IF;
19043 
19044          cz_security_pvt.lock_model(1.0
19045                                    ,cz_pb_mgr.v_root_model_id
19046                                    ,fnd_api.g_true
19047                                    ,fnd_api.g_true
19048                                    ,l_locked_models
19049                                    ,l_lock_status
19050                                    ,l_msg_count
19054          IF (l_lock_status <> 'S') THEN
19051                                    ,l_msg_data
19052                                    );
19053 
19055             l_msg_index := 1;
19056 
19057             WHILE l_msg_count > 0
19058             LOOP
19059                cz_pb_mgr.v_err_message :=
19060                                cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', fnd_msg_pub.get(l_msg_index, fnd_api.g_false));
19061                cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19062                l_msg_index := l_msg_index + 1;
19063                l_msg_count := l_msg_count - 1;
19064             END LOOP;
19065 
19066             RAISE failed_to_lock_model;
19067          END IF;
19068 
19069          UPDATE cz_model_publications
19070             SET export_status = publication_processing
19071           WHERE publication_id = cz_pb_mgr.v_publication_id;
19072 
19073          IF (v_check_publication) THEN
19074             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19075                log_timing_message('start verify_model_for_sync');
19076             END IF;
19077 
19078             IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
19079                verify_model_for_sync(l_target_imp_server_on_local, cz_pb_mgr.v_root_model_id);
19080             END IF;
19081 
19082             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19083                log_timing_message('end verify_model_for_sync');
19084                log_timing_message('start proc_export');
19085             END IF;
19086 
19087             BEGIN
19088                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);
19089 
19090                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
19091                   cz_pb_mgr.v_err_message := 'model data up to date, no fresh data export required';
19092                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.publish_model', SQLCODE);
19093                END IF;
19094 
19095                insert_template_elements;
19096 
19097 --------------------------------------------------------------------------------------------
19098 --If this is Model Migration, insert into cz_rp_entries, calculate max_persistent_rec_id and
19099 --and insert into CZ_PERSISTENT_REC_IDS with its value, report the migrated and not migrated models.
19100 --------------------------------------------------------------------------------------------
19101 
19102              IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19103                IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
19104                   EXECUTE IMMEDIATE    'SELECT REPLACE(cz_developer_utils_pvt.get_repository_path'
19105                                     || cz_pb_mgr.v_db_link
19106                                     || '(:1, ''FLD''), ''/'', ''.'') FROM DUAL'
19107                                INTO l_tgt_fld_path
19108                               USING cz_pb_mgr.g_migration_tgt_folder_id;
19109 
19110                   IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
19111                      v_imp_ps_node_count := 0;
19112 
19113                      FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
19114                      LOOP
19115                         v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
19116                         cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
19117                         cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
19118 
19119                         BEGIN
19120                            SELECT remote_model_id
19121                              INTO v_object_id
19122                              FROM cz_pb_model_exports
19123                             WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
19124                               AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
19125                         EXCEPTION
19126                            WHEN OTHERS THEN
19127                               cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
19128                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19129                         END;
19130 
19131                         BEGIN
19132                            SELECT desc_text, orig_sys_ref
19133                              INTO v_rp_entries_desc, v_rp_orig_sys_ref
19134                              FROM cz_devl_projects
19135                             WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
19136                         EXCEPTION
19137                            WHEN NO_DATA_FOUND THEN
19138                               v_rp_orig_sys_ref := NULL;
19139                               cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
19140                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19141                            WHEN OTHERS THEN
19142                               v_rp_orig_sys_ref := NULL;
19143                               cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
19144                               cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19148                         v_rp_entries_name := migrate_name(cz_pb_mgr.v_models_to_be_exported(i));
19145                               cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19146                         END;
19147 
19149 
19150                         IF (v_rp_entries_name = 'ERROR') THEN
19151                            cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19152                         END IF;
19153 
19154                         IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19155                            cz_pb_mgr.v_new_object_id := v_object_id;
19156 
19157                            BEGIN
19158                               cz_pb_mgr.v_rp_folder_id := cz_pb_mgr.g_migration_tgt_folder_id;
19159                               cz_pb_mgr.v_rp_name := v_rp_entries_name;
19160                               cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
19161 
19162                               EXECUTE IMMEDIATE    'BEGIN'
19163                                                 || ' '
19164                                                 || 'insert into cz_rp_entries'
19165                                                 || cz_pb_mgr.v_db_link
19166                                                 || ' ( OBJECT_TYPE'
19167                                                 || ' '
19168                                                 || ',OBJECT_ID'
19169                                                 || ' '
19170                                                 || ',ENCLOSING_FOLDER'
19171                                                 || ' '
19172                                                 || ',NAME'
19173                                                 || ' '
19174                                                 || ',DESCRIPTION'
19175                                                 || ' '
19176                                                 || ',DELETED_FLAG'
19177                                                 || ' '
19178                                                 || ',SEEDED_FLAG'
19179                                                 || ' '
19180                                                 || ')'
19181                                                 || ' '
19182                                                 || 'VALUES ( ''PRJ'''
19183                                                 || ' '
19184                                                 || ',cz_pb_mgr.v_new_object_id'
19185                                                 || ' '
19186                                                 || ',cz_pb_mgr.v_rp_folder_id'
19187                                                 || ' '
19188                                                 || ',cz_pb_mgr.v_rp_name'
19189                                                 || ' '
19190                                                 || ',cz_pb_mgr.v_rp_desc'
19191                                                 || ' '
19192                                                 || ',''0'''
19193                                                 || ' '
19194                                                 || ',''0'');'
19195                                                 || ' '
19196                                                 || 'commit;'
19197                                                 || ' '
19198                                                 || 'END;';
19199                            EXCEPTION
19200                               WHEN OTHERS THEN
19201                                  cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
19202                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19203                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19204                            END;
19205 
19206                            BEGIN
19207                               IF (cz_pb_mgr.v_rp_name IS NOT NULL) THEN
19208 
19209 				 EXECUTE IMMEDIATE    'BEGIN'
19210                                                    || ' '
19211                                                    || 'UPDATE cz_devl_projects'
19212                                                    || cz_pb_mgr.v_db_link
19213                                                    || '  t'
19214                                                    || ' '
19215                                                    || 'SET t.name = cz_pb_mgr.v_rp_name'
19216                                                    || ', post_migr_change_flag = '''
19217                                                    || cz_model_migration_pvt.change_flag_unchanged
19218                                                    || ''' '
19219                                                    || 'WHERE  t.devl_project_id = '
19220                                                    || cz_pb_mgr.v_new_object_id
19221                                                    || ';'
19222                                                    || ' '
19223                                                    || 'END;';
19224 
19225                               END IF;
19226 
19227                               COMMIT;
19228                            EXCEPTION
19229                               WHEN OTHERS THEN
19230                                  cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
19231                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19232                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19233                            END;
19234 
19235                            --Calculate the max_persistent_rec_id for the model and insert into CZ_PERSISTENT_REC_IDS.
19239                                              || '                NVL((SELECT MAX(persistent_rule_id) FROM cz_rules'
19236                            EXECUTE IMMEDIATE    'SELECT GREATEST(NVL((SELECT MAX(persistent_node_id) FROM cz_ps_nodes'
19237                                              || cz_pb_mgr.v_db_link
19238                                              || '                      WHERE deleted_flag = ''0'' AND devl_project_id = :1), 0),'
19240                                              || cz_pb_mgr.v_db_link
19241                                              || '                      WHERE deleted_flag = ''0'' AND devl_project_id = :2), 0),'
19242                                              || '                NVL((SELECT MAX(persistent_intl_text_id) FROM cz_localized_texts'
19243                                              || cz_pb_mgr.v_db_link
19244                                              || '                      WHERE deleted_flag = ''0'' AND model_id = :3), 0)) FROM DUAL'
19245                                         INTO v_max_rec_id
19246                                        USING v_object_id, v_object_id, v_object_id;
19247 
19248 
19249                            BEGIN
19250 
19251 			      EXECUTE IMMEDIATE    'BEGIN'
19252                                                    || ' '
19253                                                    || 'INSERT INTO CZ_PERSISTENT_REC_IDS'
19254                                                    || cz_pb_mgr.v_db_link
19255                                                    || '(devl_project_id,max_persistent_rec_id,deleted_flag)'
19256                                                    || ' '
19257                                                    || 'values(:1,:2,0) '
19258                                                    || ';'
19259                                                    || ' '
19260                                                    || 'END;' USING cz_pb_mgr.v_new_object_id,v_max_rec_id;
19261 
19262 
19263                               COMMIT;
19264                            EXCEPTION
19265                               WHEN OTHERS THEN
19266                                  cz_pb_mgr.v_err_message := 'Error in inserting into CZ_PERSISTENT_REC_IDS' || SQLERRM;
19267                                  cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19268                                  cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19269                            END;
19270 
19271                            ------insert into cz_xfr_project_bills
19272                            IF (v_rp_orig_sys_ref IS NOT NULL) THEN
19273                               BEGIN
19274                                  EXECUTE IMMEDIATE    'BEGIN'
19275                                                    || ' '
19276                                                    || 'insert into cz_xfr_project_bills'
19277                                                    || cz_pb_mgr.v_db_link
19278                                                    || ' ('
19279                                                    || ' '
19280                                                    || 'MODEL_PS_NODE_ID'
19281                                                    || ' '
19282                                                    || ',ORGANIZATION_ID'
19283                                                    || ' '
19284                                                    || ',COMPONENT_ITEM_ID'
19285                                                    || ' '
19286                                                    || ',DESCRIPTION'
19287                                                    || ' '
19288                                                    || ',LAST_IMPORT_RUN_ID'
19289                                                    || ' '
19290                                                    || ',LAST_IMPORT_DATE'
19291                                                    || ' '
19292                                                    || ',SOURCE_BILL_DELETED'
19293                                                    || ' '
19294                                                    || ',TOP_ITEM_ID'
19295                                                    || ' '
19296                                                    || ',DELETED_FLAG'
19297                                                    || ' '
19298                                                    || ',EXPLOSION_TYPE'
19299                                                    || ' '
19300                                                    || ',BILL_REVISION_DATE'
19301                                                    || ' '
19302                                                    || ',EFF_FROM'
19303                                                    || ' '
19304                                                    || ',EFF_TO'
19305                                                    || ' '
19306                                                    || ',SOURCE_SERVER'
19307                                                    || ' '
19308                                                    || ',COPY_ADDL_CHILD_MODELS'
19309                                                    || ' '
19310                                                    || ')'
19311                                                    || ' '
19312                                                    || 'SELECT  cz_pb_mgr.v_new_object_id'
19313                                                    || ' '
19314                                                    || ',ORGANIZATION_ID'
19315                                                    || ' '
19316                                                    || ',COMPONENT_ITEM_ID'
19317                                                    || ' '
19318                                                    || ',DESCRIPTION'
19319                                                    || ' '
19320                                                    || ',LAST_IMPORT_RUN_ID'
19324                                                    || ',SOURCE_BILL_DELETED'
19321                                                    || ' '
19322                                                    || ',LAST_IMPORT_DATE'
19323                                                    || ' '
19325                                                    || ' '
19326                                                    || ',TOP_ITEM_ID'
19327                                                    || ' '
19328                                                    || ',DELETED_FLAG'
19329                                                    || ' '
19330                                                    || ',EXPLOSION_TYPE'
19331                                                    || ' '
19332                                                    || ',BILL_REVISION_DATE'
19333                                                    || ' '
19334                                                    || ',EFF_FROM'
19335                                                    || ' '
19336                                                    || ',EFF_TO'
19337                                                    || ' '
19338                                                    || ',:1'
19339                                                    || ' '
19340                                                    || ',COPY_ADDL_CHILD_MODELS'
19341                                                    || ' '
19342                                                    || 'FROM   cz_xfr_project_bills'
19343                                                    || ' '
19344                                                    || 'WHERE  cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
19345                                                    || ' '
19346                                                    || 'AND   cz_xfr_project_bills.deleted_flag = ''0'';'
19347                                                    || ' '
19348                                                    || 'commit;'
19349                                                    || ' '
19350                                                    || 'END;'
19351                                                    USING v_import_server_on_remote;
19352                               EXCEPTION
19353                                  WHEN NO_DATA_FOUND THEN
19354                                     cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19355                                     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19356                                  WHEN OTHERS THEN
19357                                     cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19358                                     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19359                                     cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19360                               END;
19361                            END IF;
19362                         END IF;
19363 
19364                         IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
19365                            l_srcroot := REPLACE(cz_developer_utils_pvt.get_repository_path(cz_pb_mgr.v_root_model_id, 'PRJ'), '/', '.');
19366                            l_targrootpath := l_tgt_fld_path || '.' || v_rp_entries_name;
19367                         END IF;
19368 
19369                         v_remote_names_exported(i) := v_rp_entries_name;
19370                      END LOOP;
19371 
19372                      IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19373                         FOR i IN 1 .. v_models_to_be_exported.COUNT
19374                         LOOP
19375                            IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
19376 --Root Model %SRCROOT was migrated to instance %TARGET as %TARGROOTPATH.
19377                               l_message :=
19378                                  cz_utils.get_text('CZ_MM_ROOT_EXPORTED'
19379                                                   ,'SRCROOT'
19380                                                   ,l_srcroot
19381                                                   ,'TARGET'
19382                                                   ,cz_pb_mgr.v_server_local_name
19383                                                   ,'TARGROOTPATH'
19384                                                   ,l_targrootpath
19385                                                   );
19386                               log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19387                            ELSE
19388 --Referenced Model %SRCMODEL was migrated to instance %TARGET as %TARGREPOSPATH when migrating %SRCROOT to %TARGROOTPATH.
19389                               l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_to_be_exported(i), 'PRJ'), '/', '.');
19390                               l_message :=
19391                                  cz_utils.get_text('CZ_MM_MODEL_EXPORTED'
19392                                                   ,'SRCMODEL'
19393                                                   ,l_srcmodel
19394                                                   ,'TARGET'
19395                                                   ,cz_pb_mgr.v_server_local_name
19396                                                   ,'TARGREPOSPATH'
19397                                                   , l_tgt_fld_path || '.' || v_remote_names_exported(i)
19398                                                   ,'SRCROOT'
19399                                                   ,l_srcroot
19400                                                   ,'TARGROOTPATH'
19401                                                   ,l_targrootpath
19402                                                   );
19406                      END IF;
19403                               log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19404                            END IF;
19405                         END LOOP;
19407                   END IF;
19408 
19409                   IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19410                      FOR i IN 1 .. v_models_not_to_be_exported.COUNT
19411                      LOOP
19412 --Referenced Model %SRCMODEL is unchanged locally and on instance %TARGET since its prior migration as %TARGREPOSPATH.
19413 --It has been reused in migrating root Model %SRCROOT to %TARGROOTPATH.
19414                         l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_not_to_be_exported(i), 'PRJ'), '/', '.');
19415                         l_message :=
19416                            cz_utils.get_text('CZ_MM_MODEL_NOT_EXPORTED'
19417                                             ,'SRCMODEL'
19418                                             ,l_srcmodel
19419                                             ,'TARGET'
19420                                             ,cz_pb_mgr.v_server_local_name
19421                                             ,'TARGREPOSPATH'
19422                                             ,v_remote_names_not_exported(v_models_not_to_be_exported(i))
19423                                             ,'SRCROOT'
19424                                             ,l_srcroot
19425                                             ,'TARGROOTPATH'
19426                                             ,l_targrootpath
19427                                             );
19428                         log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19429                      END LOOP;
19430                   END IF;
19431                END IF;
19432             END IF;
19433 
19434 --------------------------------------------------------------------------------------------
19435 --End of Model Migration section.
19436 --------------------------------------------------------------------------------------------
19437 
19438                -------update source pb record
19439                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);
19440 
19441                IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19442                   cz_pb_mgr.v_err_message :=
19443                                           cz_utils.get_text('CZ_PB_SUCCESS', 'MODELID', cz_pb_mgr.v_root_model_id, 'SERVERID', cz_pb_mgr.v_server_id);
19444                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_MODEL', SQLCODE);
19445                ELSE
19446                   cz_pb_mgr.global_export_retcode := 2;
19447                   rollback_data(cz_pb_mgr.v_db_link);
19448                END IF;
19449 
19450                COMMIT;
19451             EXCEPTION
19452                WHEN OTHERS THEN
19453                   -----message already logged
19454                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19455                   update_publication_status(cz_pb_mgr.v_publication_id, PUBLICATION_ERROR, empty_string);
19456             END;
19457 
19458             IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19459                log_timing_message('end proc_export');
19460             END IF;
19461          ELSE                                                                                              /* else of IF (v_check_publication) THEN */
19462             BEGIN
19463                IF (cz_pb_mgr.remote_publication_id IS NOT NULL) THEN
19464                   get_republish_pb_info(cz_pb_mgr.remote_publication_id
19465                                        ,'PUP'
19466                                        ,v_prev_publication_id
19467                                        ,v_prev_export_status
19468                                        ,cz_pb_mgr.v_prev_remote_publication_id
19469                                        ,cz_pb_mgr.v_status_code
19470                                        );
19471 
19472                   IF (v_prev_publication_id > 0) THEN
19473                      cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(publicationid);
19474                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZREPUB', SQLCODE);
19475                   END IF;
19476                ELSIF(cz_pb_mgr.remote_publication_id IS NULL) THEN
19477                   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);
19478                   get_new_copy_pb_info(v_new_copy_pb_id
19479                                       ,v_prev_publication_id
19480                                       ,v_prev_export_status
19481                                       ,cz_pb_mgr.v_prev_remote_publication_id
19482                                       ,cz_pb_mgr.v_status_code
19483                                       );
19484 
19485                   IF (v_prev_publication_id > 0) THEN
19486                      cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(NVL(publicationid, 0));
19487                      cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZNCOPY', SQLCODE);
19488                   END IF;
19489                END IF;                                                                /* end if of IF (cz_pb_mgr.remote_publication_id IS NOT NULL) */
19490 
19491                -------------get new sequence_no for the target publication_id
19492                get_new_publication_id(cz_pb_mgr.v_publication_id
19493                                      ,cz_pb_mgr.v_cz_model_pub_old_id
19494                                      ,cz_pb_mgr.v_cz_model_pub_new_id
19495                                      ,cz_pb_mgr.remote_publication_id
19496                                      ,cz_pb_mgr.v_status_code
19500                              ,cz_pb_mgr.v_prev_remote_publication_id
19497                                      );
19498                ------get new ui def id and model id
19499                get_tgt_ui_def(cz_pb_mgr.v_root_ui_def_id
19501                              ,v_new_model_id
19502                              ,cz_pb_mgr.new_ui_def_id
19503                              ,cz_pb_mgr.v_status_code
19504                              );
19505                ------insert new target publication record
19506                insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
19507                                      ,cz_pb_mgr.v_cz_model_pub_old_id
19508                                      ,v_new_model_id
19509                                      ,cz_pb_mgr.new_ui_def_id
19510                                      ,cz_pb_mgr.v_db_link
19511                                      ,'REPUBLISH'
19512                                      ,cz_pb_mgr.v_status_code
19513                                      );
19514                ---------------insert applicability parameters for tgt publication
19515                insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
19516                                    ,cz_pb_mgr.v_cz_model_pub_old_id
19517                                    ,cz_pb_mgr.v_session_parameter
19518                                    ,cz_pb_mgr.v_db_link
19519                                    ,cz_pb_mgr.v_status_code
19520                                    );
19521             EXCEPTION
19522                WHEN OTHERS THEN
19523                   -----message already logged
19524                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19525             END;
19526 
19527             ------reset status to the original if a re-publish fails
19528             IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP') THEN
19529                IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
19530                   UPDATE cz_model_publications
19531                      SET export_status = 'OK'
19532                    WHERE publication_id = v_prev_publication_id;
19533                ELSE
19534                   UPDATE cz_model_publications
19535                      SET deleted_flag = '1'
19536                    WHERE publication_id = v_prev_publication_id;
19537 
19538                   EXECUTE IMMEDIATE    'BEGIN'
19539                                     || ' '
19540                                     || 'UPDATE cz_model_publications'
19541                                     || cz_pb_mgr.v_db_link
19542                                     || ''
19543                                     || ' '
19544                                     || 'SET deleted_flag = ''1'''
19545                                     || ' '
19546                                     || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
19547                                     || ' '
19548                                     || 'END;';
19549                END IF;
19550             END IF;
19551 
19552             -------update source pb record
19553             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);
19554 
19555             IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
19556                -----set status for concurrent manager
19557                cz_pb_mgr.global_export_retcode := 2;
19558                rollback_data(cz_pb_mgr.v_db_link);
19559             END IF;
19560          END IF;                                                                                         /* end if of IF (v_check_publication) THEN */
19561       END IF;                                                                           /* end if of (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) */
19562 
19563       l_msg_count := 0;
19564       l_msg_index := 0;
19565       cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19566 
19567       IF (l_lock_status <> 'S') THEN
19568          l_msg_index := 1;
19569 
19570          WHILE l_msg_count > 0
19571          LOOP
19572             cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19573             l_msg_index := l_msg_index + 1;
19574             l_msg_count := l_msg_count - 1;
19575          END LOOP;
19576       END IF;
19577 
19578       -----insert_template_elements;
19579       -----------log trace
19580       IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR(cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
19581          log_pb_trace;
19582       END IF;
19583 
19584       x_run_id := cz_pb_mgr.v_pb_run_id;
19585       x_pb_status := cz_pb_mgr.v_status_code;
19586       /* cz_security_pvt.unlock_entity  (cz_pb_mgr.v_root_model_id,
19587               cz_security_pvt.PUBLISH_MODEL_FUNCTION,
19588               l_locked_models,
19589               l_lock_status,
19590               l_msg_count,
19591               l_msg_data); */
19592       delete_session_parameters;
19593       -----unregister application
19594       cz_pb_sync_util.reset_dbms_info;
19595       COMMIT;
19596 
19597       IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19598          log_timing_message('end publish model');
19599       END IF;
19600 
19601       COMMIT;
19602    EXCEPTION
19603       WHEN user_not_initialized THEN
19604          x_pb_status := PUBLICATION_ERROR;
19605          x_run_id := cz_pb_mgr.v_pb_run_id;
19606          cz_pb_mgr.global_export_retcode := 2;
19607          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19608          update_pup_status(publicationid);
19609          log_pb_trace;
19610          delete_session_parameters;
19614          x_run_id := cz_pb_mgr.v_pb_run_id;
19611       WHEN priv_check_err THEN
19612          cz_pb_mgr.v_err_message := l_msg_data;
19613          x_pb_status := PUBLICATION_ERROR;
19615          cz_pb_mgr.global_export_retcode := 2;
19616          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19617          delete_session_parameters;
19618       WHEN has_no_priv_to_publish THEN
19619          cz_pb_mgr.v_err_message := l_msg_data;
19620          x_pb_status := PUBLICATION_ERROR;
19621          x_run_id := cz_pb_mgr.v_pb_run_id;
19622          cz_pb_mgr.global_export_retcode := 2;
19623          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19624          delete_session_parameters;
19625       WHEN failed_to_lock_model THEN
19626          x_pb_status := PUBLICATION_ERROR;
19627          x_run_id := cz_pb_mgr.v_pb_run_id;
19628          cz_pb_mgr.global_export_retcode := 2;
19629          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19630          update_pup_status(publicationid);
19631          cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19632          log_pb_trace;
19633          delete_session_parameters;
19634       WHEN not_global_template THEN
19635          x_pb_status := PUBLICATION_ERROR;
19636          x_run_id := cz_pb_mgr.v_pb_run_id;
19637          cz_pb_mgr.global_export_retcode := 2;
19638          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19639          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19640          delete_session_parameters;
19641       WHEN model_not_upto_date THEN
19642          x_pb_status := PUBLICATION_ERROR;
19643          x_run_id := cz_pb_mgr.v_pb_run_id;
19644          cz_pb_mgr.global_export_retcode := 2;
19645          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19646          update_pup_status(publicationid);
19647          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRUPTODATE', -1);
19648          delete_session_parameters;
19649       WHEN invalid_object_type THEN
19650          x_pb_status := PUBLICATION_ERROR;
19651          x_run_id := cz_pb_mgr.v_pb_run_id;
19652          cz_pb_mgr.global_export_retcode := 2;
19653          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGROBJTYP', -1);
19654          delete_session_parameters;
19655       WHEN cz_pb_link_problem THEN
19656          x_pb_status := PUBLICATION_ERROR;
19657          x_run_id := cz_pb_mgr.v_pb_run_id;
19658          cz_pb_mgr.global_export_retcode := 2;
19659          update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19660          update_pup_status(publicationid);
19661          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRLNKPRBLM', -1);
19662          delete_session_parameters;
19663   END;
19664 
19665   -- unregister application
19666   dbms_application_info.set_module('', '');
19667 
19668 EXCEPTION
19669   WHEN OTHERS THEN
19670     x_run_id := cz_pb_mgr.v_pb_run_id ;
19671     x_pb_status := PUBLICATION_ERROR;
19672     cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
19673     log_pb_errors(SQLERRM,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
19674     dbms_application_info.set_module('', '');
19675     RAISE;
19676 END publish_model;
19677 
19678 ----------------------------------------------
19679 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19680 ------------wrappers used by concurrent manager to publish models
19681    PROCEDURE publish_models_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER)
19682    AS
19683    BEGIN
19684       retcode := 0;
19685       publish_all_models;
19686       errbuf := NULL;
19687 
19688       IF (cz_pb_mgr.global_export_retcode = 1)
19689       THEN
19690          errbuf := cz_utils.get_text('CZ_PB_WARNING');
19691       END IF;
19692 
19693       IF (cz_pb_mgr.global_export_retcode = 2)
19694       THEN
19695          errbuf := cz_utils.get_text('CZ_PB_FAILURE');
19696       END IF;
19697 
19698       retcode := cz_pb_mgr.global_export_retcode;
19699    EXCEPTION
19700       WHEN OTHERS
19701       THEN
19702          retcode := 2;
19703          errbuf := cz_utils.get_text('CZ_PB_OTHERS');
19704    END;
19705 
19706    PROCEDURE publish_single_model_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_publication_id NUMBER)
19707    AS
19708       v_run_id NUMBER := 0.0;
19709       v_pb_status VARCHAR2(3);
19710    BEGIN
19711       retcode := 0;
19712       cz_pb_mgr.global_export_retcode := 0;
19713       publish_model(p_publication_id, v_run_id, v_pb_status);
19714       errbuf := NULL;
19715 
19716       IF (cz_pb_mgr.global_export_retcode = 1)
19717       THEN
19718          errbuf := cz_utils.get_text('CZ_PB_WARNING');
19719       END IF;
19720 
19721       IF (cz_pb_mgr.global_export_retcode = 2)
19722       THEN
19723          errbuf := cz_utils.get_text('CZ_PB_FAILURE');
19724       END IF;
19725 
19726       retcode := cz_pb_mgr.global_export_retcode;
19727    EXCEPTION
19728       WHEN OTHERS
19729       THEN
19730          retcode := 2;
19731          errbuf := cz_utils.get_text('CZ_PB_OTHERS');
19732    END;
19733 
19734 --------------------------------------
19735    PROCEDURE seed_fnd_application_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_application_name VARCHAR2)
19736    AS
19737       v_run_id NUMBER := 0.0;
19738       v_pb_status VARCHAR2(3);
19739       l_application_id NUMBER;
19740    BEGIN
19741       retcode := 0;
19742 
19743       SELECT application_id
19747 
19744         INTO l_application_id
19745         FROM fnd_application_tl
19746        WHERE fnd_application_tl.application_name = p_application_name AND fnd_application_tl.language = USERENV('LANG');
19748       INSERT INTO cz_ext_applications
19749                   (application_id, preferred_ui_style, seeded_flag, deleted_flag
19750                   )
19751            VALUES (l_application_id, 3, '1', '0'
19752                   );
19753 
19754       errbuf := NULL;
19755       COMMIT;
19756    EXCEPTION
19757       WHEN OTHERS
19758       THEN
19759          retcode := 2;
19760          errbuf := cz_utils.get_text('CZ_APP_OTHERS', 'SQLERRM', SQLERRM);
19761    END;
19762 
19763 ----------------------------------------
19764 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19765 ----------proc to delete a publication
19766 ----------
19767     PROCEDURE delete_publication(
19768       publicationid IN NUMBER
19769      ,x_return_status OUT NOCOPY VARCHAR2
19770      ,x_msg_count OUT NOCOPY NUMBER
19771      ,x_msg_data OUT NOCOPY VARCHAR2
19772    )
19773    AS
19774       v_server_id cz_model_publications.server_id%TYPE;
19775       v_cz_link_name cz_servers.cz_link_name%TYPE;
19776       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
19777       v_export_status cz_model_publications.export_status%TYPE;
19778       l_tmp_publication NUMBER;
19779       l_object_type cz_model_publications.object_type%TYPE;
19780       l_reset_publication cz_model_publications.remote_publication_id%TYPE := 0;
19781       no_link_name EXCEPTION;
19782       invalid_object_type EXCEPTION;
19783       template_in_use EXCEPTION;
19784       cannot_del_pup EXCEPTION;
19785       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
19786    BEGIN
19787       fnd_msg_pub.initialize;
19788       x_return_status := FND_API.G_RET_STS_SUCCESS;
19789       x_msg_count := 0;
19790       x_msg_data := '';
19791       fnd_msg_pub.initialize;
19792 
19793       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
19794       THEN
19795          l_pub_mode := cz_model_migration_pvt.mode_migration;
19796       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
19797       THEN
19798          l_pub_mode := cz_model_migration_pvt.mode_copy;
19799       END IF;
19800 
19801       SELECT server_id, export_status, remote_publication_id, object_type
19802         INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
19803         FROM cz_model_publications
19804        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
19805 
19806 
19807       --execute the procedure that obsoletes the records
19808       --if the target has been converted into a development instance
19809 
19810       IF (v_export_status <> model_publication_obselete) THEN
19811 
19812          cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
19813          --it is possible that the obsoleting process changed value of the publication record.
19814          --so requery
19815          SELECT server_id, export_status, remote_publication_id, object_type
19816            INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
19817            FROM cz_model_publications
19818          WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
19819       END IF;
19820 
19821       IF (v_export_status = 'PUP')
19822       THEN
19823          RAISE cannot_del_pup;
19824       END IF;
19825 
19826       ----check for reset cases
19827       BEGIN
19828          SELECT publication_id
19829            INTO l_reset_publication
19830            FROM cz_model_publications
19831           WHERE cz_model_publications.remote_publication_id = v_remote_publication_id
19832             AND cz_model_publications.server_id = v_server_id
19833             AND cz_model_publications.deleted_flag = record_not_deleted
19834             AND cz_model_publications.export_status = 'PUP'
19835             AND cz_model_publications.publication_mode = l_pub_mode;
19836       EXCEPTION
19837          WHEN OTHERS
19838          THEN
19839             l_reset_publication := 0;
19840       END;
19841 
19842       -- if publications are obsolete, their target should not be deleted
19843       IF ((v_server_id = 0) OR(v_export_status = model_publication_obselete))
19844       THEN
19845          v_cz_link_name := ' ';
19846       ELSE
19847          BEGIN
19848             SELECT fndnam_link_name
19849               INTO v_cz_link_name
19850               FROM cz_servers
19851              WHERE cz_servers.server_local_id = v_server_id;
19852          EXCEPTION
19853             WHEN OTHERS
19854             THEN
19855                v_cz_link_name := NULL;
19856          END;
19857 
19858          IF (v_cz_link_name IS NULL)
19859          THEN
19860             RAISE no_link_name;
19861          END IF;
19862 
19863          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
19864       END IF;
19865 
19866       IF (l_object_type = template_publication)
19867       THEN
19868          ----query to check if template is used
19869          l_tmp_publication := 1;
19870 
19871          IF (l_tmp_publication = 1)
19872          THEN
19873             RAISE template_in_use;
19874          END IF;
19875       END IF;
19876 
19877       UPDATE cz_model_publications
19878          SET deleted_flag = '1'
19879        WHERE publication_id = publicationid;
19880 
19884       DELETE FROM cz_publication_usages
19881       DELETE FROM cz_pb_client_apps
19882             WHERE publication_id = publicationid;
19883 
19885             WHERE publication_id = publicationid;
19886 
19887       IF (l_reset_publication > 0)
19888       THEN
19889          UPDATE cz_model_publications
19890             SET export_status = 'OK'
19891           WHERE publication_id = l_reset_publication;
19892       END IF;
19893 
19894       IF ((v_export_status <> 'PEN') AND(v_remote_publication_id IS NOT NULL))
19895       THEN
19896          EXECUTE IMMEDIATE    'BEGIN'
19897                            || ' '
19898                            || 'UPDATE cz_model_publications'
19899                            || v_cz_link_name
19900                            || ''
19901                            || ' '
19902                            || 'SET deleted_flag = ''1'''
19903                            || ' '
19904                            || 'WHERE publication_id = '
19905                            || v_remote_publication_id
19906                            || ';'
19907                            || ' '
19908                            || 'END;';
19909 
19910          EXECUTE IMMEDIATE    'BEGIN'
19911                            || ' '
19912                            || 'DELETE FROM cz_pb_client_apps'
19913                            || v_cz_link_name
19914                            || ''
19915                            || ' '
19916                            || 'WHERE publication_id = '
19917                            || v_remote_publication_id
19918                            || ';'
19919                            || ' '
19920                            || 'END;';
19921 
19922          EXECUTE IMMEDIATE    'BEGIN'
19923                            || ' '
19924                            || 'DELETE FROM cz_publication_usages'
19925                            || v_cz_link_name
19926                            || ''
19927                            || ' '
19928                            || 'WHERE  publication_id = '
19929                            || v_remote_publication_id
19930                            || ';'
19931                            || ' '
19932                            || 'END;';
19933       END IF;
19934    EXCEPTION
19935       WHEN no_link_name
19936       THEN
19937          x_return_status := FND_API.G_RET_STS_ERROR;
19938          fnd_message.set_name('CZ', 'CZ_NO_LINK_NAME');
19939          fnd_msg_pub.ADD;
19940          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19941       WHEN cannot_del_pup
19942       THEN
19943          x_return_status := FND_API.G_RET_STS_ERROR;
19944          fnd_message.set_name('CZ', 'CZ_PB_CANNOT_DELETE_PUP');
19945          fnd_message.set_token('PUBID', publicationid);
19946          fnd_msg_pub.ADD;
19947          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19948       WHEN invalid_object_type
19949       THEN
19950          x_return_status := FND_API.G_RET_STS_ERROR;
19951          fnd_message.set_name('CZ', 'CZ_INVALID_PUB_TYPE');
19952          fnd_msg_pub.ADD;
19953          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19954       WHEN template_in_use
19955       THEN
19956          x_msg_data := cz_utils.get_text('CZ_TEMPLATE_IN_USE');
19957          x_return_status := FND_API.G_RET_STS_ERROR;
19958          fnd_message.set_name('CZ', 'CZ_TEMPLATE_IN_USE');
19959          fnd_msg_pub.ADD;
19960          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19961       WHEN OTHERS
19962       THEN
19963          x_return_status := FND_API.G_RET_STS_ERROR;
19964          x_msg_data := SQLERRM;
19965    END delete_publication;
19966 
19967 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19968 ----------disable publication
19969    PROCEDURE disable_publication(
19970       publicationid IN NUMBER
19971      ,x_return_status OUT NOCOPY VARCHAR2
19972      ,x_msg_count OUT NOCOPY NUMBER
19973      ,x_msg_data OUT NOCOPY VARCHAR2
19974    )
19975    AS
19976       v_server_id cz_model_publications.server_id%TYPE;
19977       v_cz_link_name cz_servers.cz_link_name%TYPE;
19978       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
19979       v_object_type cz_model_publications.object_type%TYPE;
19980       v_export_status cz_model_publications.export_status%TYPE;
19981       cannot_disable_template EXCEPTION;
19982       cannot_disable_publication EXCEPTION;
19983    BEGIN
19984       x_return_status := FND_API.G_RET_STS_SUCCESS;
19985       fnd_msg_pub.initialize;
19986       --execute the procedure that obsoletes the records
19987       --if the target has been converted into a development
19988       --instance
19989       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
19990 
19991       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
19992       THEN
19993          RAISE pub_maybe_obsoleted;
19994       END IF;
19995 
19996       SELECT object_type, server_id, remote_publication_id, export_status
19997         INTO v_object_type, v_server_id, v_remote_publication_id, v_export_status
19998         FROM cz_model_publications
19999        WHERE cz_model_publications.publication_id = publicationid;
20000 
20001       BEGIN
20002          SELECT fndnam_link_name
20003            INTO v_cz_link_name
20004            FROM cz_servers
20005           WHERE cz_servers.server_local_id = v_server_id;
20006       EXCEPTION
20007          WHEN OTHERS
20008          THEN
20012       IF (v_export_status NOT IN('OK', 'PEN'))
20009             v_cz_link_name := NULL;
20010       END;
20011 
20013       THEN
20014          RAISE cannot_disable_publication;
20015       END IF;
20016 
20017       IF (v_object_type = template_publication)
20018       THEN
20019          RAISE cannot_disable_template;
20020       END IF;
20021 
20022       IF (v_server_id = 0)
20023       THEN
20024          v_cz_link_name := '';
20025       ELSE
20026          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
20027       END IF;
20028 
20029       cz_pb_mgr.remote_publication_id := v_remote_publication_id;
20030 
20031       UPDATE cz_model_publications
20032          SET disabled_flag = '1'
20033        WHERE publication_id = publicationid;
20034 
20035       EXECUTE IMMEDIATE    'BEGIN'
20036                         || ' '
20037                         || 'UPDATE cz_model_publications'
20038                         || v_cz_link_name
20039                         || ''
20040                         || ' '
20041                         || 'SET   disabled_flag   = ''1'''
20042                         || ' '
20043                         || 'WHERE  publication_id =  cz_pb_mgr.remote_publication_id ;'
20044                         || ' '
20045                         || 'END;';
20046 
20047       COMMIT;
20048    EXCEPTION
20049       WHEN cannot_disable_publication
20050       THEN
20051          ----x_msg_data := CZ_UTILS.GET_TEXT('CZ_CANT_DISABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationId);
20052          x_return_status := FND_API.G_RET_STS_ERROR;
20053          fnd_message.set_name('CZ', 'CZ_CANT_DISABLE_PUB');
20054          fnd_message.set_token('STATUS', v_export_status);
20055          fnd_message.set_token('PUBID', publicationid);
20056          fnd_msg_pub.ADD;
20057          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20058       WHEN pub_maybe_obsoleted
20059       THEN
20060          x_return_status := FND_API.G_RET_STS_ERROR;
20061       WHEN cannot_disable_template
20062       THEN
20063          x_msg_data := cz_utils.get_text('CZ_CANT_DISABLE_TEMPL', 'PUBID', publicationid);
20064          x_return_status := FND_API.G_RET_STS_ERROR;
20065       WHEN OTHERS
20066       THEN
20067          x_return_status := FND_API.G_RET_STS_ERROR;
20068          x_msg_data := SQLERRM;
20069    END disable_publication;
20070 
20071 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20072    PROCEDURE get_edit_info(
20073       publicationid IN cz_model_publications.publication_id%TYPE
20074      ,x_product_key IN OUT NOCOPY cz_model_publications.product_key%TYPE
20075      ,x_publication_mode IN OUT NOCOPY VARCHAR2
20076      ,x_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
20077      ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
20078      ,x_source_target_flag IN OUT NOCOPY cz_model_publications.source_target_flag%TYPE
20079      ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.remote_publication_id%TYPE
20080    )
20081    AS
20082    BEGIN
20083       SELECT product_key, publication_mode, server_id, export_status, source_target_flag, remote_publication_id
20084         INTO x_product_key, x_publication_mode, x_server_id, x_export_status, x_source_target_flag, x_remote_publication_id
20085         FROM cz_model_publications
20086        WHERE cz_model_publications.publication_id = publicationid;
20087    EXCEPTION
20088       WHEN OTHERS
20089       THEN
20090          NULL;
20091    END;
20092 
20093 -------->>>>>>>>>>>>>>
20094    PROCEDURE populate_app_tbl(p_application_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
20095    AS
20096       x NUMBER := 1;
20097       i NUMBER := 0;
20098       y NUMBER := 0;
20099       v_str VARCHAR2(200);
20100    BEGIN
20101       WHILE(x > 0)
20102       LOOP
20103          x := INSTR(p_application_id, ';');
20104 
20105          IF (x = 0)
20106          THEN
20107             i := i + 1;
20108             x_app_tbl(i) := p_application_id;
20109          ELSE
20110             x := x - 1;
20111             v_str := SUBSTR(p_application_id, 1, x);
20112             i := i + 1;
20113             x_app_tbl(i) := v_str;
20114             y := LENGTH(p_application_id) -(x + 1);
20115             x := x + 2;
20116             p_application_id := SUBSTR(p_application_id, x, y);
20117          END IF;
20118       END LOOP;
20119    EXCEPTION
20120       WHEN OTHERS
20121       THEN
20122          RAISE;
20123    END;
20124 
20125 ------->>>>>>>>>>>>>>>>>>>>>>>>
20126    PROCEDURE populate_lang_tbl(p_lang_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code)
20127    AS
20128       x NUMBER := 1;
20129       i NUMBER := 0;
20130       y NUMBER := 0;
20131       v_str VARCHAR2(200);
20132    BEGIN
20133       WHILE(x > 0)
20134       LOOP
20135          x := INSTR(p_lang_id, ';');
20136 
20137          IF (x = 0)
20138          THEN
20139             i := i + 1;
20140             x_app_tbl(i) := p_lang_id;
20141          ELSE
20142             x := x - 1;
20143             v_str := SUBSTR(p_lang_id, 1, x);
20144             i := i + 1;
20145             x_app_tbl(i) := v_str;
20146             y := LENGTH(p_lang_id) -(x + 1);
20147             x := x + 2;
20148             p_lang_id := SUBSTR(p_lang_id, x, y);
20149          END IF;
20150       END LOOP;
20151    EXCEPTION
20155    END;
20152       WHEN OTHERS
20153       THEN
20154          RAISE;
20156 
20157 -------->>>>>>>>>>>>>>>>>>
20158    PROCEDURE delete_src_pb_data(publicationid IN cz_model_publications.publication_id%TYPE)
20159    AS
20160    BEGIN
20161       DELETE FROM cz_publication_usages
20162             WHERE cz_publication_usages.publication_id = publicationid;
20163 
20164       DELETE FROM cz_pb_client_apps
20165             WHERE cz_pb_client_apps.publication_id = publicationid;
20166 
20167       DELETE FROM cz_pb_languages
20168             WHERE cz_pb_languages.publication_id = publicationid;
20169    EXCEPTION
20170       WHEN OTHERS
20171       THEN
20172          RAISE;
20173    END;
20174 
20175 ------->>>>>>>>>>>>>>>>>>>>>>
20176    PROCEDURE insert_src_pb_data(
20177       publicationid IN cz_model_publications.publication_id%TYPE
20178      ,p_application_id_tbl IN cz_pb_mgr.t_ref
20179      ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
20180      ,p_usage_id_tbl IN cz_pb_mgr.t_ref
20181      ,x_status IN OUT NOCOPY VARCHAR2
20182    )
20183    AS
20184       v_application_short_name VARCHAR2(50);
20185    BEGIN
20186       FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
20187       LOOP
20188          SELECT application_short_name
20189            INTO v_application_short_name
20190            FROM fnd_application
20191           WHERE application_id = p_application_id_tbl(i);
20192 
20193          INSERT INTO cz_pb_client_apps
20194                      (publication_id, fnd_application_id, application_short_name, notes
20195                      )
20196               VALUES (publicationid, p_application_id_tbl(i), v_application_short_name, NULL
20197                      );
20198       END LOOP;
20199 
20200       FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
20201       LOOP
20202          INSERT INTO cz_pb_languages
20203                      (publication_id, LANGUAGE
20204                      )
20205               VALUES (publicationid, p_language_id_tbl(i)
20206                      );
20207       END LOOP;
20208 
20209       FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
20210       LOOP
20211          INSERT INTO cz_publication_usages
20212                      (publication_id, usage_id
20213                      )
20214               VALUES (publicationid, p_usage_id_tbl(i)
20215                      );
20216       END LOOP;
20217    EXCEPTION
20218       WHEN OTHERS
20219       THEN
20220          x_status := '-1';
20221          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EDIT_SRC_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20222          log_pb_errors(v_err_message, 1, 'cz_pb_mgr.EDITPB', SQLCODE);
20223          RAISE;
20224    END;
20225 
20226 -------->>>>>>>>>>>>>>>>>>>>>
20227    PROCEDURE insert_tgt_pb_data(
20228       p_status_str IN OUT NOCOPY VARCHAR2
20229      ,p_export_status IN cz_model_publications.export_status%TYPE
20230      ,p_tgt_link IN cz_servers.fndnam_link_name%TYPE
20231      ,p_publication_mode IN VARCHAR2
20232      ,p_start_date IN DATE
20233      ,p_disable_date IN DATE
20234      ,p_remote_publication_id IN cz_model_publications.remote_publication_id%TYPE
20235      ,p_application_id_tbl IN cz_pb_mgr.t_ref
20236      ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
20237      ,p_usage_id_tbl IN cz_pb_mgr.t_ref
20238    )
20239    AS
20240       v_application_short_name VARCHAR2(50);
20241       v_edit_str VARCHAR2(2000);
20242       tgt_appl_id number;
20243    BEGIN
20244       IF ((p_status_str <> '-1') AND(p_export_status <> 'PEN'))
20245       THEN
20246          v_edit_str :=
20247                'UPDATE  cz_model_publications'
20248             || p_tgt_link
20249             || ' '
20250             || 'SET   publication_mode = :1,'
20251             || ' '
20252             || 'applicable_from  = :2,'
20253             || ' '
20254             || 'applicable_until = :3'
20255             || ' '
20256             || 'WHERE publication_id  = '
20257             || p_remote_publication_id;
20258 
20259          EXECUTE IMMEDIATE v_edit_str
20260                      USING p_publication_mode, p_start_date, p_disable_date;
20261 
20262          v_edit_str :='DELETE FROM cz_publication_usages'||p_tgt_link||' ' ||
20263 				   'WHERE cz_publication_usages.publication_id = :1';
20264 
20265 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20266 
20267 
20268          v_edit_str := 'DELETE FROM cz_pb_client_apps'||p_tgt_link||' ' ||
20269 				   'WHERE  cz_pb_client_apps.publication_id = :1';
20270 
20271 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20272 
20273          v_edit_str := 'DELETE FROM cz_pb_languages'||p_tgt_link||' ' ||
20274 				   'WHERE  cz_pb_languages.publication_id = :1';
20275 
20276 	 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20277 
20278 	 IF (p_application_id_tbl.COUNT > 0) THEN
20279          FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
20280          LOOP
20281 
20282             EXECUTE IMMEDIATE 'SELECT t.application_short_name,t.application_id'
20283 		||' FROM fnd_application s,fnd_application'||p_tgt_link
20284 		||' t WHERE  s.application_id =:1 and '
20285 		||' s.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME'
20286 		into v_application_short_name,tgt_appl_id using p_application_id_tbl(i);
20287 
20291 	    EXECUTE IMMEDIATE v_edit_str USING p_remote_publication_id,tgt_appl_id,v_application_short_name;
20288             v_edit_str :='INSERT INTO cz_pb_client_apps'||p_tgt_link||' (publication_id,fnd_application_id,application_short_name)'
20289 	       || ' ' || ' values (:1,:2,:3)';
20290 
20292 
20293          END LOOP;
20294 	 END IF;
20295 
20296 	 IF (p_language_id_tbl.COUNT > 0) THEN
20297          FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
20298          LOOP
20299             v_edit_str :='INSERT INTO cz_pb_languages'||p_tgt_link||' (publication_id,language)' || ' ' ||
20300 								'values(:1,:2)';
20301 	    EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_language_id_tbl(i);
20302 
20303          END LOOP;
20304 	 END IF;
20305 
20306 	 IF (p_usage_id_tbl.COUNT > 0) THEN
20307          FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
20308          LOOP
20309             v_edit_str :='INSERT INTO cz_publication_usages'||p_tgt_link||' (publication_id,usage_id)' || ' ' ||
20310 							'VALUES(:1,:2)';
20311 
20312 	    EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_usage_id_tbl(i);
20313          END LOOP;
20314 	 END IF;
20315       END IF;
20316    EXCEPTION
20317       WHEN OTHERS
20318       THEN
20319          p_status_str := '-1';
20320    END;
20321 
20322 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20323 ---------edit publication
20324    PROCEDURE edit_publication(
20325       publicationid IN NUMBER
20326      ,applicationid IN OUT NOCOPY VARCHAR2
20327      ,languageid IN OUT NOCOPY VARCHAR2
20328      ,usageid IN OUT NOCOPY VARCHAR2
20329      ,startdate IN DATE
20330      ,disabledate IN DATE
20331      ,publicationmode IN VARCHAR2
20332      ,x_return_status OUT NOCOPY VARCHAR2
20333      ,x_msg_count OUT NOCOPY NUMBER
20334      ,x_msg_data OUT NOCOPY VARCHAR2
20335    )
20336    AS
20337       v_product_key cz_model_publications.product_key%TYPE;
20338       v_publication_mode cz_model_publications.publication_mode%TYPE;
20339       v_server_id cz_model_publications.server_id%TYPE;
20340       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20341       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20342       v_export_status cz_model_publications.export_status%TYPE;
20343       v_count NUMBER;
20344       v_application_id VARCHAR2(2000);
20345       v_language_id VARCHAR2(2000);
20346       v_usage_id VARCHAR2(2000);
20347       v_tgt_link VARCHAR2(128);
20348       x NUMBER := 1;
20349       i NUMBER := 0;
20350       y NUMBER := 0;
20351       v_msg VARCHAR2(2000);
20352       status_str VARCHAR2(200) := '0';
20353       no_pub_found EXCEPTION;
20354       l_publication_id NUMBER;
20355    BEGIN
20356       x_return_status := FND_API.G_RET_STS_SUCCESS;
20357       fnd_msg_pub.initialize;
20358       v_application_id_tbl.DELETE;
20359       v_usage_id_tbl.DELETE;
20360       v_language_id_tbl.DELETE;
20361       --execute the procedure that obsoletes the records
20362       --if the target has been converted into a development
20363       --instance
20364       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20365 
20366       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20367       THEN
20368          RAISE pub_maybe_obsoleted;
20369       END IF;
20370 
20371       BEGIN
20372          SELECT publication_id
20373            INTO l_publication_id
20374            FROM cz_model_publications
20375           WHERE cz_model_publications.publication_id = publicationid;
20376       EXCEPTION
20377          WHEN NO_DATA_FOUND
20378          THEN
20379             RAISE no_pub_found;
20380       END;
20381 
20382       SELECT COUNT(*)
20383         INTO v_count
20384         FROM cz_model_publications
20385        WHERE cz_model_publications.publication_id = publicationid
20386          AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR', model_publication_obselete);
20387 
20388       IF (v_count = 0)
20389       THEN
20390          x_return_status := FND_API.G_RET_STS_ERROR;
20391          x_msg_count := 1;
20392          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP/' || model_publication_obselete;
20393       ELSE
20394          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20395 
20396          IF (v_server_id = 0)
20397          THEN
20398             v_tgt_link := '';
20399          ELSE
20400             v_tgt_link := retrieve_db_link(v_server_id);
20401          END IF;
20402 
20403          UPDATE cz_model_publications
20404             SET publication_mode = publicationmode
20405                ,applicable_from = startdate
20406                ,applicable_until = disabledate
20407           WHERE publication_id = publicationid;
20408 
20409          populate_app_tbl(applicationid, v_application_id_tbl);
20410          populate_app_tbl(usageid, v_usage_id_tbl);
20411          populate_lang_tbl(languageid, v_language_id_tbl);
20412          delete_src_pb_data(publicationid);
20413          insert_src_pb_data(publicationid, v_application_id_tbl, v_language_id_tbl, v_usage_id_tbl, status_str);
20414          insert_tgt_pb_data(status_str
20415                            ,v_export_status
20416                            ,v_tgt_link
20417                            ,publicationmode
20421                            ,v_application_id_tbl
20418                            ,startdate
20419                            ,disabledate
20420                            ,v_remote_publication_id
20422                            ,v_language_id_tbl
20423                            ,v_usage_id_tbl
20424                            );
20425 
20426          IF (status_str = '-1')
20427          THEN
20428             x_return_status := FND_API.G_RET_STS_ERROR;
20429             x_msg_count := 1;
20430             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20431          ELSE
20432             COMMIT;
20433          END IF;
20434       END IF;
20435    EXCEPTION
20436       WHEN pub_maybe_obsoleted
20437       THEN
20438          x_return_status := FND_API.G_RET_STS_SUCCESS;
20439       WHEN no_pub_found
20440       THEN
20441          x_return_status := FND_API.G_RET_STS_SUCCESS;
20442          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20443       WHEN OTHERS
20444       THEN
20445          x_return_status := FND_API.G_RET_STS_ERROR;
20446          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20447    END edit_publication;
20448 
20449 --------------------------------------------------------
20450    PROCEDURE edit_publication(
20451       publicationid IN NUMBER
20452      ,applicationid IN OUT NOCOPY cz_pb_mgr.t_ref
20453      ,languageid IN OUT NOCOPY cz_pb_mgr.t_lang_code
20454      ,usageid IN OUT NOCOPY cz_pb_mgr.t_ref
20455      ,startdate IN DATE
20456      ,disabledate IN DATE
20457      ,publicationmode IN VARCHAR2
20458      ,x_return_status OUT NOCOPY VARCHAR2
20459      ,x_msg_count OUT NOCOPY NUMBER
20460      ,x_msg_data OUT NOCOPY VARCHAR2
20461    )
20462    AS
20463       v_product_key cz_model_publications.product_key%TYPE;
20464       v_publication_mode cz_model_publications.publication_mode%TYPE;
20465       v_server_id cz_model_publications.server_id%TYPE;
20466       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20467       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20468       v_export_status cz_model_publications.export_status%TYPE;
20469       v_count NUMBER;
20470       v_application_id VARCHAR2(2000);
20471       v_language_id VARCHAR2(2000);
20472       v_usage_id VARCHAR2(2000);
20473       v_tgt_link VARCHAR2(128);
20474       x NUMBER := 1;
20475       i NUMBER := 0;
20476       y NUMBER := 0;
20477       v_msg VARCHAR2(2000);
20478       status_str VARCHAR2(200) := '0';
20479       no_pub_found EXCEPTION;
20480       l_publication_id NUMBER;
20481    BEGIN
20482       x_return_status := FND_API.G_RET_STS_SUCCESS;
20483       fnd_msg_pub.initialize;
20484       --execute the procedure that obsoletes the records
20485       --if the target has been converted into a development
20486       --instance
20487       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20488 
20489       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20490       THEN
20491          RAISE pub_maybe_obsoleted;
20492       END IF;
20493 
20494       BEGIN
20495          SELECT publication_id
20496            INTO l_publication_id
20497            FROM cz_model_publications
20498           WHERE cz_model_publications.publication_id = publicationid;
20499       EXCEPTION
20500          WHEN NO_DATA_FOUND
20501          THEN
20502             RAISE no_pub_found;
20503       END;
20504 
20505       SELECT COUNT(*)
20506         INTO v_count
20507         FROM cz_model_publications
20508        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
20509 
20510       IF (v_count = 0)
20511       THEN
20512          x_return_status := FND_API.G_RET_STS_ERROR;
20513          x_msg_count := 1;
20514          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
20515       ELSE
20516          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20517 
20518          IF (v_server_id = 0)
20519          THEN
20520             v_tgt_link := '';
20521          ELSE
20522             v_tgt_link := retrieve_db_link(v_server_id);
20523          END IF;
20524 
20525          UPDATE cz_model_publications
20526             SET publication_mode = publicationmode
20527                ,applicable_from = startdate
20528                ,applicable_until = disabledate
20529           WHERE publication_id = publicationid;
20530 
20531          delete_src_pb_data(publicationid);
20532          insert_src_pb_data(publicationid, applicationid, languageid, usageid, status_str);
20533          insert_tgt_pb_data(status_str
20534                            ,v_export_status
20535                            ,v_tgt_link
20536                            ,publicationmode
20537                            ,startdate
20538                            ,disabledate
20539                            ,v_remote_publication_id
20540                            ,applicationid
20541                            ,languageid
20542                            ,usageid
20543                            );
20544 
20545          IF (status_str = '-1')
20546          THEN
20547             x_return_status := FND_API.G_RET_STS_ERROR;
20548             x_msg_count := 1;
20552    EXCEPTION
20549             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20550          END IF;
20551       END IF;
20553       WHEN pub_maybe_obsoleted
20554       THEN
20555          x_return_status := FND_API.G_RET_STS_SUCCESS;
20556       WHEN no_pub_found
20557       THEN
20558          x_return_status := FND_API.G_RET_STS_SUCCESS;
20559          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20560       WHEN OTHERS
20561       THEN
20562          x_return_status := FND_API.G_RET_STS_ERROR;
20563          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20564    END edit_publication;
20565 
20566 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20567 ---------edit publication
20568    PROCEDURE edit_tgt_pub(
20569       publicationid IN NUMBER
20570      ,applicationid IN OUT NOCOPY VARCHAR2
20571      ,languageid IN OUT NOCOPY VARCHAR2
20572      ,usageid IN OUT NOCOPY VARCHAR2
20573      ,startdate IN DATE
20574      ,disabledate IN DATE
20575      ,publicationmode IN VARCHAR2
20576      ,x_return_status OUT NOCOPY VARCHAR2
20577      ,x_msg_count OUT NOCOPY NUMBER
20578      ,x_msg_data OUT NOCOPY VARCHAR2
20579    )
20580    AS
20581       v_product_key cz_model_publications.product_key%TYPE;
20582       v_publication_mode cz_model_publications.publication_mode%TYPE;
20583       v_server_id cz_model_publications.server_id%TYPE;
20584       v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20585       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20586       v_export_status cz_model_publications.export_status%TYPE;
20587       v_count NUMBER;
20588       v_application_id VARCHAR2(2000);
20589       v_language_id VARCHAR2(2000);
20590       v_usage_id VARCHAR2(2000);
20591       v_tgt_link VARCHAR2(128);
20592       x NUMBER := 1;
20593       i NUMBER := 0;
20594       y NUMBER := 0;
20595       v_msg VARCHAR2(2000);
20596       status_str VARCHAR2(200) := '0';
20597       no_pub_found EXCEPTION;
20598       l_publication_id NUMBER;
20599    BEGIN
20600       x_return_status := FND_API.G_RET_STS_SUCCESS;
20601       fnd_msg_pub.initialize;
20602       v_application_id_tbl.DELETE;
20603       v_usage_id_tbl.DELETE;
20604       v_language_id_tbl.DELETE;
20605       --execute the procedure that obsoletes the records
20606       --if the target has been converted into a development
20607       --instance
20608       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20609 
20610       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20611       THEN
20612          RAISE pub_maybe_obsoleted;
20613       END IF;
20614 
20615       BEGIN
20616          SELECT publication_id
20617            INTO l_publication_id
20618            FROM cz_model_publications
20619           WHERE cz_model_publications.publication_id = publicationid;
20620       EXCEPTION
20621          WHEN NO_DATA_FOUND
20622          THEN
20623             RAISE no_pub_found;
20624       END;
20625 
20626       SELECT COUNT(*)
20627         INTO v_count
20628         FROM cz_model_publications
20629        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
20630 
20631       IF (v_count = 0)
20632       THEN
20633          x_return_status := FND_API.G_RET_STS_ERROR;
20634          x_msg_count := 1;
20635          x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
20636       ELSE
20637          get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20638 
20639          IF (v_server_id = 0)
20640          THEN
20641             v_tgt_link := '';
20642          ELSE
20643             v_tgt_link := retrieve_db_link(v_server_id);
20644          END IF;
20645 
20646             -----UPDATE  cz_model_publications
20647                -----SET  publication_mode        = publicationMode,
20648             -----applicable_from      = startDate,
20649          -----applicable_until     = disableDate
20650                -----WHERE   publication_id           = publicationId;
20651          populate_app_tbl(applicationid, v_application_id_tbl);
20652          populate_app_tbl(usageid, v_usage_id_tbl);
20653          populate_lang_tbl(languageid, v_language_id_tbl);
20654          -----delete_src_pb_data(publicationId);
20655          -----insert_src_pb_data(publicationId,
20656                     ----v_application_id_tbl,
20657                     ----v_language_id_tbl,
20658                     ----v_usage_id_tbl,
20659                     ----status_str);
20660          insert_tgt_pb_data(status_str
20661                            ,v_export_status
20662                            ,v_tgt_link
20663                            ,publicationmode
20664                            ,startdate
20665                            ,disabledate
20666                            ,v_remote_publication_id
20667                            ,v_application_id_tbl
20668                            ,v_language_id_tbl
20669                            ,v_usage_id_tbl
20670                            );
20671 
20672          IF (status_str = '-1')
20673          THEN
20674             x_return_status := FND_API.G_RET_STS_ERROR;
20675             x_msg_count := 1;
20679    EXCEPTION
20676             x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20677          END IF;
20678       END IF;
20680       WHEN pub_maybe_obsoleted
20681       THEN
20682          x_return_status := FND_API.G_RET_STS_SUCCESS;
20683       WHEN no_pub_found
20684       THEN
20685          x_return_status := FND_API.G_RET_STS_SUCCESS;
20686       WHEN OTHERS
20687       THEN
20688          x_return_status := FND_API.G_RET_STS_ERROR;
20689          x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20690    END edit_tgt_pub;
20691 
20692 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20693    PROCEDURE chk_pub_overlap_internal(
20694       productkey IN VARCHAR2
20695      ,publicationmode IN VARCHAR2
20696      ,applicationid_tbl IN cz_pb_mgr.t_ref
20697      ,languageid_tbl IN cz_pb_mgr.t_lang_code
20698      ,usageid_tbl IN cz_pb_mgr.t_ref
20699      ,serverid IN NUMBER
20700      ,startdate IN DATE
20701      ,disabledate IN DATE
20702      ,sourcetargetflag IN VARCHAR2   ---DEFAULT 'S'
20703      ,pubrecid IN NUMBER
20704      ,publicationidstring IN OUT NOCOPY VARCHAR2
20705    )
20706    AS
20707       x NUMBER := 1;
20708       i NUMBER := 0;
20709       y NUMBER := 0;
20710       k NUMBER := 0;
20711       v_pb_count NUMBER := 1;
20712       publicationid NUMBER;
20713       v_appl_id NUMBER;
20714       v_lang_id VARCHAR2(4);
20715       v_usg_id NUMBER;
20716       v_pub_tbl cz_pb_mgr.t_ref;
20717       v_ret_pb cz_pb_mgr.t_ref;
20718       l_str VARCHAR2(2000);
20719 
20720       -- jonatara:bug6375826
20721       -- these temporary tables are introduced to handle the request from CZ_MODELOPERATIONS_PUB.create_publication_request
20722       t_languageId_tbl		CZ_PB_MGR.t_lang_code;
20723       t_usageId_tbl     	CZ_PB_MGR.t_ref;
20724 
20725    BEGIN
20726 	-- jonatara:bug6375826
20727 	-- setting default value to usage_id table and language table if they are NULL
20728 
20729 	-- setting default usage value as 'Any Usage'
20730 	IF usageId_tbl.COUNT = 0 THEN
20731 	  t_usageId_tbl(0) := -1;
20732 	ELSE
20733 	  t_usageId_tbl := usageId_tbl;
20734 	END IF;
20735 
20736 	-- setting default language value as'US'
20737 	IF languageId_tbl.COUNT = 0 THEN
20738 	  t_languageId_tbl(0) := 'US';
20739 	ELSE
20740 	  t_languageId_tbl := languageId_tbl;
20741 	END IF;
20742 
20743       publicationid := -1;
20744 
20745       IF (applicationid_tbl.COUNT > 0) THEN
20746       FOR i IN applicationid_tbl.FIRST .. applicationid_tbl.LAST
20747       LOOP
20748          v_appl_id := applicationid_tbl(i);
20749          -- jonatara:bug6375826
20750          IF (t_usageid_tbl.COUNT > 0) THEN
20751          FOR j IN t_usageid_tbl.FIRST .. t_usageid_tbl.LAST
20752          LOOP
20753             v_usg_id := t_usageid_tbl(j);
20754             IF (t_languageid_tbl.COUNT > 0) THEN
20755             FOR k IN t_languageid_tbl.FIRST .. t_languageid_tbl.LAST
20756             LOOP
20757                v_lang_id := t_languageid_tbl(k);
20758 
20759                IF ((v_appl_id IS NOT NULL) AND(v_usg_id IS NOT NULL) AND(v_lang_id IS NOT NULL))
20760                THEN
20761                   BEGIN
20762                      l_str :=
20763                            'productKey : '
20764                         || productkey
20765                         || 'mode : '
20766                         || publicationmode
20767                         || 'serverId: '
20768                         || serverid
20769                         || '
20770 							   appl_id: '
20771                         || v_appl_id
20772                         || ' usage '
20773                         || v_usg_id
20774                         || 'langid: '
20775                         || v_lang_id
20776                         || '
20777 							   startdate : '
20778                         || TO_CHAR(startdate, 'mm-dd-yyyy')
20779                         || ' disableDate : '
20780                         || TO_CHAR(disabledate, 'mm-dd-yyyy');
20781 
20782                      SELECT DISTINCT publication_id
20783                                 INTO publicationid
20784                                 FROM cz_model_applicabilities_v
20785                                WHERE product_key = LTRIM(RTRIM(productkey))
20786                                  AND UPPER(publication_mode) = LTRIM(RTRIM(UPPER(publicationmode)))
20787                                  AND server_id = serverid
20788                                  AND fnd_application_id = v_appl_id
20789                                  AND usage_id = v_usg_id
20790                                  AND LANGUAGE = v_lang_id
20791                                  AND deleted_flag = '0'
20792                                  AND UPPER(source_target_flag) = LTRIM(RTRIM(UPPER(sourcetargetflag)))
20793                                  AND publication_id <> pubrecid
20794                                  AND (   (    (start_date >= startdate)
20795                                           AND (startdate IS NOT NULL)
20796                                           AND (disabledate IS NOT NULL)
20797                                           AND (start_date < disabledate)
20798                                          )
20799                                       OR (    (disable_date > startdate)
20800                                           AND (startdate IS NOT NULL)
20801                                           AND (disabledate IS NOT NULL)
20805                                           AND (startdate IS NOT NULL)
20802                                           AND (disable_date <= disabledate)
20803                                          )
20804                                       OR (    (start_date <= startdate)
20806                                           AND (disabledate IS NOT NULL)
20807                                           AND (disable_date >= disabledate)
20808                                          )
20809                                       OR ((start_date <= startdate) AND(startdate < disable_date) AND(disabledate IS NULL))
20810                                       OR ((disable_date >= disabledate) AND(disabledate > start_date) AND(startdate IS NULL))
20811                                      );
20812                   EXCEPTION
20813                      WHEN NO_DATA_FOUND
20814                      THEN
20815                         publicationid := -1;
20816                      WHEN OTHERS
20817                      THEN
20818                         publicationid := -666;
20819                   END;
20820 
20821                   IF publicationid > 0
20822                   THEN
20823                      v_pub_tbl(v_pb_count) := publicationid;
20824                      v_pb_count := v_pb_count + 1;
20825                   END IF;
20826                END IF;
20827             END LOOP;
20828 	   END IF;
20829          END LOOP;
20830 	END IF;
20831       END LOOP;
20832      END IF;
20833 
20834       v_ret_pb.DELETE;
20835 
20836       IF v_pub_tbl.COUNT > 0
20837       THEN
20838          FOR i IN v_pub_tbl.FIRST .. v_pub_tbl.LAST
20839          LOOP
20840             publicationid := v_pub_tbl(i);
20841 
20842             IF (v_ret_pb.COUNT = 0)
20843             THEN
20844                x := 1;
20845                v_ret_pb(x) := publicationid;
20846             ELSE
20847                k := 0;
20848 
20849                FOR j IN v_ret_pb.FIRST .. v_ret_pb.LAST
20850                LOOP
20851                   IF (v_ret_pb(j) = publicationid)
20852                   THEN
20853                      k := k + 1;
20854                   END IF;
20855                END LOOP;
20856 
20857                IF k = 0
20858                THEN
20859                   y := v_ret_pb.COUNT + 1;
20860                   v_ret_pb(y) := publicationid;
20861                END IF;
20862             END IF;
20863          END LOOP;
20864 
20865          IF v_ret_pb.COUNT > 0
20866          THEN
20867             FOR m IN v_ret_pb.FIRST .. v_ret_pb.LAST
20868             LOOP
20869                IF publicationidstring IS NULL
20870                THEN
20871                   publicationidstring := TO_CHAR(v_ret_pb(m));
20872                ELSE
20873                   publicationidstring := publicationidstring || ';' || TO_CHAR(v_ret_pb(m));
20874                END IF;
20875             END LOOP;
20876          END IF;
20877       ELSIF(publicationid = -666)
20878       THEN
20879          publicationidstring := 'Fatal Error: More than one overlapping publications found';
20880       ELSE
20881          publicationidstring := TO_CHAR(-1);
20882       END IF;
20883    EXCEPTION
20884       WHEN OTHERS
20885       THEN
20886          RAISE;
20887    END chk_pub_overlap_internal;
20888 
20889 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20890 ------wrapper for check overlap publication - procedure (to be call from the VB)
20891    PROCEDURE check_publication_overlap(
20892       productkey IN VARCHAR2
20893      ,publicationmode IN VARCHAR2
20894      ,applicationid IN VARCHAR2
20895      ,languageid IN VARCHAR2
20896      ,usageid IN VARCHAR2
20897      ,serverid IN NUMBER
20898      ,startdate IN DATE
20899      ,disabledate IN DATE
20900      ,sourcetargetflag IN VARCHAR2
20901      ,pubrecid IN NUMBER
20902      ,publicationidstring OUT NOCOPY VARCHAR2
20903    )
20904    AS
20905       v_app_id_tbl cz_pb_mgr.t_ref;
20906       v_usg_id_tbl cz_pb_mgr.t_ref;
20907       v_lang_id_tbl cz_pb_mgr.t_lang_code;
20908       v_in_appl_id VARCHAR2(2000);
20909       v_in_lang_id VARCHAR2(2000);
20910       v_in_usg_id VARCHAR2(2000);
20911       l_publicationidstring VARCHAR2(2000);
20912    BEGIN
20913       fnd_msg_pub.initialize;
20914       v_in_appl_id := applicationid;
20915       v_in_lang_id := languageid;
20916       v_in_usg_id := usageid;
20917       populate_app_tbl(v_in_appl_id, v_app_id_tbl);
20918       populate_app_tbl(v_in_usg_id, v_usg_id_tbl);
20919       populate_lang_tbl(v_in_lang_id, v_lang_id_tbl);
20920       chk_pub_overlap_internal(productkey
20921                               ,publicationmode
20922                               ,v_app_id_tbl
20923                               ,v_lang_id_tbl
20924                               ,v_usg_id_tbl
20925                               ,serverid
20926                               ,startdate
20927                               ,disabledate
20928                               ,sourcetargetflag
20929                               ,pubrecid
20930                               ,l_publicationidstring
20931                               );
20932       publicationidstring := l_publicationidstring;
20933    EXCEPTION
20934       WHEN OTHERS
20935       THEN
20936          RAISE;
20937    END check_publication_overlap;
20938 
20939 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
20940    PROCEDURE reset_processing_pubs
20941    IS
20942       v_link_name cz_servers.fndnam_link_name%TYPE;
20946       fnd_msg_pub.initialize;
20943       v_db_link VARCHAR2(255);
20944       l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
20945    BEGIN
20947 
20948       IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
20949       THEN
20950          l_pub_mode := cz_model_migration_pvt.mode_migration;
20951       ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
20952       THEN
20953          l_pub_mode := cz_model_migration_pvt.mode_copy;
20954       END IF;
20955 
20956       FOR i IN (SELECT publication_id, remote_publication_id, server_id
20957                   FROM cz_model_publications
20958                  WHERE UPPER(export_status) = publication_processing AND deleted_flag = '0')
20959       LOOP
20960          BEGIN
20961             SELECT fndnam_link_name
20962               INTO v_link_name
20963               FROM cz_servers
20964              WHERE server_local_id = i.server_id;
20965 
20966             v_db_link := '';
20967 
20968             IF v_link_name IS NOT NULL
20969             THEN
20970                v_db_link := '@' || v_link_name;
20971             END IF;
20972 
20973             --
20974             -- mark remote publication as deleted
20975             --
20976             EXECUTE IMMEDIATE 'UPDATE CZ_MODEL_PUBLICATIONS' || v_db_link || ' SET deleted_flag=:1' || ' WHERE publication_id = :2'
20977                         USING '1', i.remote_publication_id;
20978          EXCEPTION
20979             WHEN NO_DATA_FOUND
20980             THEN
20981                NULL;
20982             WHEN OTHERS
20983             THEN
20984                NULL;
20985          END;
20986       END LOOP;
20987 
20988       DELETE FROM cz_pb_model_exports
20989             WHERE publication_id IN(SELECT publication_id
20990                                       FROM cz_model_publications
20991                                      WHERE UPPER(export_status) = publication_processing);
20992 
20993       UPDATE cz_model_publications
20994          SET export_status = publication_pending
20995        WHERE UPPER(export_status) = publication_processing;
20996 
20997       COMMIT;
20998    END;
20999 
21000 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21001 -----procedure that validates input dates for republish
21002    PROCEDURE validate_pb_dates(p_start_date IN OUT NOCOPY DATE, p_end_date IN OUT NOCOPY DATE, x_status IN OUT NOCOPY VARCHAR2)
21003    AS
21004    BEGIN
21005       IF (p_start_date > p_end_date)
21006       THEN
21007          x_status := PUBLICATION_ERROR;
21008          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));
21009          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21010       END IF;
21011    EXCEPTION
21012       WHEN OTHERS
21013       THEN
21014          x_status := PUBLICATION_ERROR;
21015          cz_pb_mgr.v_err_message := 'Error during input start and end dates comparison: ' || SQLERRM;
21016          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21017    END validate_pb_dates;
21018 
21019 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21020 ------procedure that gets applicability parameters for the
21021 ------publication to be republished
21022    PROCEDURE get_pb_parameters(
21023       p_publication_id IN cz_model_publications.publication_id%TYPE
21024      ,x_applicationid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
21025      ,x_usageid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
21026      ,x_languageid_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code
21027      ,x_status IN OUT NOCOPY VARCHAR2
21028    )
21029    AS
21030    BEGIN
21031       SELECT fnd_application_id
21032       BULK COLLECT INTO x_applicationid_tbl
21033         FROM cz_pb_client_apps
21034        WHERE publication_id = p_publication_id;
21035 
21036       SELECT usage_id
21037       BULK COLLECT INTO x_usageid_tbl
21038         FROM cz_publication_usages
21039        WHERE publication_id = p_publication_id;
21040 
21041       SELECT LANGUAGE
21042       BULK COLLECT INTO x_languageid_tbl
21043         FROM cz_pb_languages
21044        WHERE publication_id = p_publication_id;
21045 
21046       IF ((x_applicationid_tbl.COUNT = 0) OR(x_usageid_tbl.COUNT = 0) OR(x_languageid_tbl.COUNT = 0))
21047       THEN
21048          x_status := PUBLICATION_ERROR;
21049          cz_pb_mgr.v_err_message := 'Republish terminated: all applicability parameters are not found for publication: ' || TO_CHAR(p_publication_id);
21050          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21051       END IF;
21052    EXCEPTION
21053       WHEN OTHERS
21054       THEN
21055          x_status := PUBLICATION_ERROR;
21056          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_PARAM_ERROR', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21057          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21058    END get_pb_parameters;
21059 
21060 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21061 ------procedure that creates a new publication request
21062 ------for republish
21063    PROCEDURE create_republish_request(
21064       p_publication_id IN cz_model_publications.publication_id%TYPE
21065      ,p_start_date IN DATE
21066      ,p_end_date IN DATE
21067      ,x_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
21068      ,p_repub_str IN VARCHAR2
21072       v_new_publication_id cz_model_publications.publication_id%TYPE;
21069      ,x_status IN OUT NOCOPY VARCHAR2
21070    )
21071    AS
21073       v_old_publication_id cz_model_publications.publication_id%TYPE;
21074    BEGIN
21075       x_status := 'OK';
21076 
21077       SELECT cz_model_publications_s.NEXTVAL, p_publication_id
21078         INTO v_new_publication_id, v_old_publication_id
21079         FROM DUAL;
21080 
21081       INSERT INTO cz_model_publications
21082                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21083                   ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
21084                   ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
21085                   ,model_persistent_id, source_target_flag, remote_publication_id, disabled_flag, object_id, object_type)
21086          SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21087                ,p_start_date, p_end_date, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01, user_str02
21088                ,user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
21089                ,remote_publication_id, disabled_flag, object_id, object_type
21090            FROM cz_model_publications
21091           WHERE publication_id = p_publication_id;
21092 
21093       v_repub_parameter := pub_model;
21094       insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_status);
21095 
21096       IF (p_repub_str = new_copy_str)
21097       THEN
21098          UPDATE cz_model_publications
21099             SET remote_publication_id = NULL
21100           WHERE publication_id = v_new_publication_id;
21101       ELSIF(p_repub_str = repub_str)
21102       THEN
21103          UPDATE cz_model_publications
21104             SET export_status = 'PUP'
21105           WHERE publication_id = p_publication_id;
21106       END IF;
21107 
21108       x_new_publication_id := v_new_publication_id;
21109       COMMIT;
21110    EXCEPTION
21111       WHEN OTHERS
21112       THEN
21113          x_status := PUBLICATION_ERROR;
21114          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_CREATE_REQUEST_ERROR', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21115          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21116    END create_republish_request;
21117 
21118 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21119    PROCEDURE create_republish_publication(
21120       p_publication_id IN NUMBER
21121      ,x_new_publication_id OUT NOCOPY NUMBER
21122      ,x_return_status OUT NOCOPY VARCHAR2
21123      ,x_msg_count OUT NOCOPY NUMBER
21124      ,x_msg_data OUT NOCOPY VARCHAR2
21125    )
21126    AS
21127       v_new_publication_id cz_model_publications.publication_id%TYPE;
21128       v_old_publication_id cz_model_publications.publication_id%TYPE;
21129       v_source_pb_record cz_model_publications%ROWTYPE;
21130       l_application_id_tbl cz_pb_mgr.t_ref;
21131       l_language_id_tbl cz_pb_mgr.t_lang_code;
21132       l_usage_id_tbl cz_pb_mgr.t_ref;
21133       l_param_status VARCHAR2(2000);
21134       v_upto_date_status VARCHAR2(2000);
21135       v_publicationidstring VARCHAR2(2000);
21136       l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
21137       l_deleted_flag VARCHAR2(1);
21138       l_ui_name cz_ui_defs.NAME%TYPE;
21139       expstatus_exception EXCEPTION;
21140       get_params_exception EXCEPTION;
21141       model_not_upto_date EXCEPTION;
21142       pub_overlap EXCEPTION;
21143       ui_def_id_is_deleted EXCEPTION;
21144    BEGIN
21145       x_return_status := FND_API.G_RET_STS_SUCCESS;
21146       fnd_msg_pub.initialize;
21147       --execute the procedure that obsoletes the records
21148       --if the target has been converted into a development
21149       --instance
21150       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21151 
21152       ----check status
21153       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21154       THEN
21155          RAISE pub_maybe_obsoleted;
21156       END IF;
21157 
21158       ----get source pb info
21159       SELECT *
21160         INTO v_source_pb_record
21161         FROM cz_model_publications
21162        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = cz_model_migration_pvt.pub_source_flag;
21163 
21164       ----check status
21165       IF (v_source_pb_record.export_status <> 'OK')
21166       THEN
21167          RAISE expstatus_exception;
21168       END IF;
21169 
21170       ----get applicability parameters
21171       get_pb_parameters(p_publication_id, l_application_id_tbl, l_usage_id_tbl, l_language_id_tbl, l_param_status);
21172 
21173       IF (l_param_status = PUBLICATION_ERROR)
21174       THEN
21175          RAISE get_params_exception;
21176       END IF;
21177 
21178       ----check if UI exists
21179       IF (v_source_pb_record.ui_def_id IS NOT NULL)
21180       THEN
21181          BEGIN
21182             SELECT ui_def_id, deleted_flag, NAME
21183               INTO l_ui_def_id, l_deleted_flag, l_ui_name
21184               FROM cz_ui_defs
21185              WHERE cz_ui_defs.ui_def_id = v_source_pb_record.ui_def_id;
21186          EXCEPTION
21187             WHEN NO_DATA_FOUND
21191 
21188             THEN
21189                RAISE ui_def_id_is_deleted;
21190          END;
21192          IF (l_deleted_flag = '1')
21193          THEN
21194             RAISE ui_def_id_is_deleted;
21195          END IF;
21196       END IF;
21197 
21198       ----check model upto date
21199       model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
21200 
21201       IF (v_upto_date_status <> '0')
21202       THEN
21203          RAISE model_not_upto_date;
21204       END IF;
21205 
21206       ----check publication overlap
21207       chk_pub_overlap_internal(v_source_pb_record.product_key
21208                               ,v_source_pb_record.publication_mode
21209                               ,l_application_id_tbl
21210                               ,l_language_id_tbl
21211                               ,l_usage_id_tbl
21212                               ,v_source_pb_record.server_id
21213                               ,v_source_pb_record.applicable_from
21214                               ,v_source_pb_record.applicable_until
21215                               ,v_source_pb_record.source_target_flag
21216                               ,v_source_pb_record.publication_id
21217                               ,v_publicationidstring
21218                               );
21219 
21220       IF (v_publicationidstring <> '-1')
21221       THEN
21222          RAISE pub_overlap;
21223       END IF;
21224 
21225       SELECT cz_model_publications_s.NEXTVAL, p_publication_id
21226         INTO v_new_publication_id, v_old_publication_id
21227         FROM DUAL;
21228 
21229       INSERT INTO cz_model_publications
21230                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21231                   ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
21232                   ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
21233                   ,model_persistent_id, source_target_flag, remote_publication_id, object_id, object_type, disabled_flag)
21234          SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21235                ,applicable_from, applicable_until, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01
21236                ,user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
21237                ,remote_publication_id, object_id, object_type, disabled_flag
21238            FROM cz_model_publications
21239           WHERE publication_id = p_publication_id;
21240 
21241       v_repub_parameter := pub_model;
21242       insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_return_status);
21243 
21244       UPDATE cz_model_publications
21245          SET export_status = 'PUP'
21246        WHERE publication_id = p_publication_id;
21247 
21248       x_new_publication_id := v_new_publication_id;
21249       COMMIT;
21250    EXCEPTION
21251       WHEN pub_overlap
21252       THEN
21253          ROLLBACK;
21254          x_return_status := FND_API.G_RET_STS_ERROR;
21255          fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
21256          fnd_message.set_token('PubId', p_publication_id);
21257          fnd_message.set_token('PUBSTR', v_publicationidstring);
21258          fnd_msg_pub.ADD;
21259          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21260       WHEN ui_def_id_is_deleted
21261       THEN
21262          x_return_status := FND_API.G_RET_STS_ERROR;
21263 
21264          IF (l_ui_name IS NOT NULL)
21265          THEN
21266             fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
21267             fnd_message.set_token('UIDEFID', l_ui_name);
21268             fnd_msg_pub.ADD;
21269          ELSE
21270             fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
21271             fnd_message.set_token('UIDEFID', v_source_pb_record.ui_def_id);
21272             fnd_msg_pub.ADD;
21273          END IF;
21274 
21275          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21276       WHEN model_not_upto_date
21277       THEN
21278          ROLLBACK;
21279          x_return_status := FND_API.G_RET_STS_ERROR;
21280          fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
21281          fnd_message.set_token('PubId', p_publication_id);
21282          fnd_message.set_token('MODELUPTODATE', v_upto_date_status);
21283          fnd_msg_pub.ADD;
21284          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21285       WHEN get_params_exception
21286       THEN
21287          ROLLBACK;
21288          x_return_status := FND_API.G_RET_STS_ERROR;
21289          fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
21290          fnd_message.set_token('PubId', p_publication_id);
21291          fnd_msg_pub.ADD;
21292          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21293       WHEN expstatus_exception
21294       THEN
21295          ROLLBACK;
21296          x_return_status := FND_API.G_RET_STS_ERROR;
21297          fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERR');
21298          fnd_message.set_token('PubId', p_publication_id);
21299          fnd_message.set_token('EXPORT STATUS', v_source_pb_record.export_status);
21300          fnd_msg_pub.ADD;
21301          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21302          cz_pb_mgr.v_republish_model := no_mode;
21306       WHEN OTHERS
21303       WHEN pub_maybe_obsoleted
21304       THEN
21305          x_return_status := fnd_api.g_ret_sts_unexp_error;
21307       THEN
21308          ROLLBACK;
21309          x_return_status := fnd_api.g_ret_sts_unexp_error;
21310          fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERROR');
21311          fnd_message.set_token('PubId', p_publication_id);
21312          fnd_message.set_token('SQLERRM', SQLERRM);
21313          fnd_msg_pub.ADD;
21314          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21315    END create_republish_publication;
21316 
21317 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21318 ------procedure that resets the start and end dates
21319 ------of the original publication
21320    PROCEDURE reset_pb_dates(
21321       p_publicationid IN cz_model_publications.publication_id%TYPE
21322      ,x_applicable_from IN OUT NOCOPY DATE
21323      ,x_applicable_until IN OUT NOCOPY DATE
21324      ,x_orig_start_date IN OUT NOCOPY DATE
21325      ,x_orig_end_date IN OUT NOCOPY DATE
21326      ,x_start_date IN OUT NOCOPY DATE
21327      ,x_end_date IN OUT NOCOPY DATE
21328      ,x_reset_str IN OUT NOCOPY VARCHAR2
21329      ,x_status IN OUT NOCOPY VARCHAR2
21330    )
21331    AS
21332       v_db_link cz_servers.fndnam_link_name%TYPE;
21333       v_server_id cz_model_publications.server_id%TYPE;
21334       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21335       reset_date_error EXCEPTION;
21336    BEGIN
21337       SELECT applicable_from, applicable_until, server_id, remote_publication_id
21338         INTO v_repub_appl_from, v_repub_appl_until, v_server_id, v_remote_publication_id
21339         FROM cz_model_publications
21340        WHERE publication_id = p_publicationid;
21341 
21342       x_orig_start_date := v_repub_appl_from;
21343       x_orig_end_date := v_repub_appl_until;
21344 
21345       IF ((x_start_date = v_repub_appl_from) AND(x_end_date = v_repub_appl_until))
21346       THEN
21347          x_reset_str := repub_str;
21348       ELSIF(   ((x_start_date > v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
21349             OR ((x_start_date < v_repub_appl_from) AND(x_end_date < v_repub_appl_from))
21350            )
21351       THEN
21352          x_reset_str := new_copy_str;
21353       ELSIF((x_start_date > v_repub_appl_from) AND(x_start_date < v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
21354       THEN
21355          v_repub_appl_until := x_start_date;
21356          v_repub_appl_until := x_start_date;
21357          x_reset_str := new_copy_str;
21358          cz_pb_mgr.v_republish_model := new_copy_mode;
21359       ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date > v_repub_appl_until))
21360       THEN
21361          x_reset_str := repub_str;
21362       ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date < v_repub_appl_until))
21363       THEN
21364          v_repub_appl_from := x_end_date;
21365          x_reset_str := new_copy_str;
21366          cz_pb_mgr.v_republish_model := new_copy_mode;
21367       ELSIF(    (x_start_date < v_repub_appl_from)
21368             AND (x_start_date < v_repub_appl_until)
21369             AND (x_end_date > v_repub_appl_from)
21370             AND (x_end_date < v_repub_appl_until)
21371            )
21372       THEN
21373          v_repub_appl_from := x_end_date;
21374          x_reset_str := new_copy_str;
21375          cz_pb_mgr.v_republish_model := new_copy_mode;
21376       ELSIF(    (x_start_date < v_repub_appl_from)
21377             AND (x_start_date < v_repub_appl_until)
21378             AND (x_end_date > v_repub_appl_from)
21379             AND (x_end_date > v_repub_appl_until)
21380            )
21381       THEN
21382          x_reset_str := repub_str;
21383          v_repub_appl_from := x_start_date;
21384          v_repub_appl_until := x_end_date;
21385       ELSIF(    (x_start_date > v_repub_appl_from)
21386             AND (x_start_date < v_repub_appl_until)
21387             AND (x_end_date > v_repub_appl_from)
21388             AND (x_end_date < v_repub_appl_until)
21389            )
21390       THEN
21391          v_repub_appl_from := x_start_date;
21392          v_repub_appl_until := x_end_date;
21393          x_reset_str := repub_str;
21394       ELSE
21395          RAISE reset_date_error;
21396       END IF;
21397 
21398       UPDATE cz_model_publications
21399          SET applicable_from = v_repub_appl_from
21400             ,applicable_until = v_repub_appl_until
21401        WHERE publication_id = p_publicationid;
21402 
21403       x_applicable_from := v_repub_appl_from;
21404       x_applicable_until := v_repub_appl_until;
21405       COMMIT;
21406    EXCEPTION
21407       WHEN reset_date_error
21408       THEN
21409          x_status := PUBLICATION_ERROR;
21410          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PubId', p_publicationid, 'SQLERRM', SQLERRM);
21411          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21412       WHEN OTHERS
21413       THEN
21414          x_status := PUBLICATION_ERROR;
21415          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PubId', p_publicationid, 'SQLERRM', SQLERRM);
21416          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21417    END reset_pb_dates;
21418 
21419 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21420    PROCEDURE reset_repub_changes(
21421       p_publication_id IN cz_model_publications.publication_id%TYPE
21422      ,p_orig_start_date IN DATE
21423      ,p_orig_end_date IN DATE
21424      ,x_reset_status IN OUT NOCOPY VARCHAR2
21428       UPDATE cz_model_publications
21425    )
21426    AS
21427    BEGIN
21429          SET cz_model_publications.applicable_from = p_orig_start_date
21430             ,cz_model_publications.applicable_until = p_orig_end_date
21431             ,cz_model_publications.deleted_flag = '0'
21432             ,cz_model_publications.export_status = 'OK'
21433        WHERE cz_model_publications.publication_id = p_publication_id;
21434 
21435       COMMIT;
21436    EXCEPTION
21437       WHEN OTHERS
21438       THEN
21439          x_reset_status := PUBLICATION_ERROR;
21440          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_PB_CHANGES', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21441          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21442    END reset_repub_changes;
21443 
21444 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21445 ------procedure that republishes a model
21446    PROCEDURE republish_model(
21447       p_publication_id IN OUT NOCOPY NUMBER
21448      ,p_start_date IN OUT NOCOPY DATE
21449      ,p_end_date IN OUT NOCOPY DATE
21450      ,x_run_id OUT NOCOPY NUMBER
21451      ,x_status OUT NOCOPY cz_model_publications.export_status%TYPE
21452    )
21453    AS
21454       v_upto_date_status VARCHAR2(2000);
21455       v_source_pb_record cz_model_publications%ROWTYPE;
21456       v_new_publication_id cz_model_publications.publication_id%TYPE;
21457       v_publicationidstring VARCHAR2(2000);
21458       v_reset_str VARCHAR2(100);
21459       v_reset_status VARCHAR2(2000);
21460       v_repub_status VARCHAR2(2000);
21461       v_param_status VARCHAR2(2000);
21462       v_publication_status VARCHAR2(3);
21463       v_create_status VARCHAR2(3);
21464       common_exception EXCEPTION;
21465    BEGIN
21466       initialize_pb_parameters(p_publication_id);
21467       ----initialize global republish parameter to be used in publish model
21468       cz_pb_mgr.v_republish_model := no_mode;
21469       x_status := 'OK';
21470       v_repub_appl_from := NULL;
21471       v_repub_appl_until := NULL;
21472       v_repub_remote_pb_id := 0;
21473 
21474       ---get run id
21475       SELECT cz_xfr_run_infos_s.NEXTVAL
21476         INTO cz_pb_mgr.v_pb_run_id
21477         FROM DUAL;
21478 
21479       x_run_id := cz_pb_mgr.v_pb_run_id;
21480 
21481       ----get source pb info
21482       SELECT *
21483         INTO v_source_pb_record
21484         FROM cz_model_publications
21485        WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = g_source_flag;
21486 
21487       ----capture original values
21488       v_repub_remote_pb_id := v_source_pb_record.remote_publication_id;
21489       v_orig_start_date := v_source_pb_record.applicable_from;
21490       v_orig_end_date := v_source_pb_record.applicable_until;
21491       ----check status
21492       check_export_status(v_source_pb_record.export_status, cz_republish, x_status);
21493 
21494       IF (x_status = PUBLICATION_ERROR)
21495       THEN
21496          RAISE common_exception;
21497       END IF;
21498 
21499       ----get applicability parameters
21500       get_pb_parameters(p_publication_id, v_application_id_tbl, v_usage_id_tbl, v_language_id_tbl, v_param_status);
21501 
21502       IF (v_param_status = PUBLICATION_ERROR)
21503       THEN
21504          RAISE common_exception;
21505       END IF;
21506 
21507       ----validate input start and end dates
21508       IF (p_start_date IS NULL)
21509       THEN
21510          p_start_date := v_source_pb_record.applicable_from;
21511       END IF;
21512 
21513       IF (p_end_date IS NULL)
21514       THEN
21515          p_end_date := v_source_pb_record.applicable_until;
21516       END IF;
21517 
21518       validate_pb_dates(p_start_date, p_end_date, x_status);
21519 
21520       IF (x_status = PUBLICATION_ERROR)
21521       THEN
21522          RAISE common_exception;
21523       END IF;
21524 
21525       ----check model upto date
21526       model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
21527 
21528       IF (v_upto_date_status <> '0')
21529       THEN
21530          cz_pb_mgr.v_err_message := v_upto_date_status;
21531          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21532          RAISE common_exception;
21533       END IF;
21534 
21535       ---reset pb dates
21536       reset_pb_dates(p_publication_id
21537                     ,v_repub_appl_from
21538                     ,v_repub_appl_until
21539                     ,v_orig_start_date
21540                     ,v_orig_end_date
21541                     ,p_start_date
21542                     ,p_end_date
21543                     ,v_reset_str
21544                     ,v_reset_status
21545                     );
21546 
21547       IF (v_reset_status = PUBLICATION_ERROR)
21548       THEN
21549          RAISE common_exception;
21550       END IF;
21551 
21552       ----check publication overlap
21553       chk_pub_overlap_internal(v_source_pb_record.product_key
21554                               ,v_source_pb_record.publication_mode
21555                               ,v_application_id_tbl
21556                               ,v_language_id_tbl
21557                               ,v_usage_id_tbl
21558                               ,v_source_pb_record.server_id
21559                               ,p_start_date
21560                               ,p_end_date
21564                               );
21561                               ,v_source_pb_record.source_target_flag
21562                               ,v_source_pb_record.publication_id
21563                               ,v_publicationidstring
21565 
21566       IF (v_publicationidstring <> '-1')
21567       THEN
21568          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_OVERLAP', 'PubId', p_publication_id, 'PUBSTR', v_publicationidstring);
21569          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21570          RAISE common_exception;
21571       ELSE
21572          ----create new publication request
21573          create_republish_request(p_publication_id, p_start_date, p_end_date, v_new_publication_id, v_reset_str, v_create_status);
21574 
21575          IF (v_create_status = PUBLICATION_ERROR)
21576          THEN
21577             RAISE common_exception;
21578          END IF;
21579 
21580          -----publish model
21581          publish_model(v_new_publication_id, x_run_id, v_publication_status);
21582       END IF;
21583 
21584       IF (v_publication_status = PUBLICATION_ERROR)
21585       THEN
21586          reset_repub_changes(p_publication_id, v_orig_start_date, v_orig_end_date, v_repub_status);
21587          RAISE common_exception;
21588       ELSE
21589          cz_pb_mgr.v_msg_tbl.DELETE;
21590          cz_pb_mgr.v_pb_run_id := x_run_id;
21591          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_SUCCESS', 'PubId', p_publication_id);
21592          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUB_MODEL', SQLCODE);
21593          log_pb_trace;
21594       END IF;
21595 
21596       x_status := v_publication_status;
21597       cz_pb_mgr.v_republish_model := no_mode;
21598    EXCEPTION
21599       WHEN common_exception
21600       THEN
21601          ROLLBACK;
21602          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PubId', p_publication_id);
21603          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21604          x_status := PUBLICATION_ERROR;
21605          log_pb_trace;
21606          cz_pb_mgr.v_republish_model := no_mode;
21607       WHEN OTHERS
21608       THEN
21609          x_status := PUBLICATION_ERROR;
21610          cz_pb_mgr.v_republish_model := no_mode;
21611          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21612          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21613          log_pb_trace;
21614    END republish_model;
21615 
21616 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21617 ----------enable publication
21618    PROCEDURE enable_publication(
21619       publicationid IN NUMBER
21620      ,x_return_status OUT NOCOPY VARCHAR2
21621      ,x_msg_count OUT NOCOPY NUMBER
21622      ,x_msg_data OUT NOCOPY VARCHAR2
21623    )
21624    AS
21625       v_server_id cz_model_publications.server_id%TYPE;
21626       v_cz_link_name cz_servers.cz_link_name%TYPE;
21627       v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21628       v_app_id_tbl cz_pb_mgr.t_ref;
21629       v_usg_id_tbl cz_pb_mgr.t_ref;
21630       v_lang_id_tbl cz_pb_mgr.t_lang_code;
21631       v_object_type cz_model_publications.object_type%TYPE;
21632       l_status VARCHAR2(3);
21633       l_product_key cz_model_publications.product_key%TYPE;
21634       l_applicable_from cz_model_publications.applicable_from%TYPE;
21635       l_applicable_until cz_model_publications.applicable_until%TYPE;
21636       l_source_target_flag cz_model_publications.source_target_flag%TYPE;
21637       l_publication_mode cz_model_publications.publication_mode%TYPE;
21638       v_export_status cz_model_publications.export_status%TYPE;
21639       l_publicationidstring VARCHAR2(2000);
21640       cannot_enable_template EXCEPTION;
21641       get_params_exception EXCEPTION;
21642       pub_overlap EXCEPTION;
21643       cannot_enable_publication EXCEPTION;
21644    BEGIN
21645       x_return_status := FND_API.G_RET_STS_SUCCESS;
21646       fnd_msg_pub.initialize;
21647       --execute the procedure that obsoletes the records
21648       --if the target has been converted into a development
21649       --instance
21650       cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21651 
21652       IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21653       THEN
21654          RAISE pub_maybe_obsoleted;
21655       END IF;
21656 
21657       BEGIN
21658          SELECT export_status
21659            INTO v_export_status
21660            FROM cz_model_publications
21661           WHERE cz_model_publications.publication_id = publicationid;
21662       EXCEPTION
21663          WHEN OTHERS
21664          THEN
21665             v_export_status := NULL;
21666       END;
21667 
21668       IF (v_export_status = model_publication_obselete)
21669       THEN
21670          RAISE cannot_enable_template;
21671       END IF;
21672 
21673       SELECT object_type, server_id, remote_publication_id, product_key, applicable_from, applicable_until, source_target_flag
21674             ,publication_mode, v_export_status
21675         INTO v_object_type, v_server_id, v_remote_publication_id, l_product_key, l_applicable_from, l_applicable_until, l_source_target_flag
21676             ,l_publication_mode, v_export_status
21677         FROM cz_model_publications
21678        WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.disabled_flag = '1';
21679 
21680       BEGIN
21681          SELECT fndnam_link_name
21685       EXCEPTION
21682            INTO v_cz_link_name
21683            FROM cz_servers
21684           WHERE cz_servers.server_local_id = v_server_id;
21686          WHEN OTHERS
21687          THEN
21688             v_cz_link_name := NULL;
21689       END;
21690 
21691       IF (v_object_type = template_publication)
21692       THEN
21693          RAISE cannot_enable_template;
21694       END IF;
21695 
21696       IF (v_export_status NOT IN('OK', 'PEN'))
21697       THEN
21698          RAISE cannot_enable_publication;
21699       END IF;
21700 
21701       get_pb_parameters(publicationid, v_app_id_tbl, v_usg_id_tbl, v_lang_id_tbl, l_status);
21702 
21703       IF (l_status = PUBLICATION_ERROR)
21704       THEN
21705          RAISE get_params_exception;
21706       END IF;
21707 
21708       chk_pub_overlap_internal(l_product_key
21709                               ,l_publication_mode
21710                               ,v_app_id_tbl
21711                               ,v_lang_id_tbl
21712                               ,v_usg_id_tbl
21713                               ,v_server_id
21714                               ,l_applicable_from
21715                               ,l_applicable_until
21716                               ,l_source_target_flag
21717                               ,publicationid
21718                               ,l_publicationidstring
21719                               );
21720 
21721       IF (l_publicationidstring <> '-1')
21722       THEN
21723          RAISE pub_overlap;
21724       END IF;
21725 
21726       IF (v_server_id = 0)
21727       THEN
21728          v_cz_link_name := '';
21729       ELSE
21730          v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21731       END IF;
21732 
21733       UPDATE cz_model_publications
21734          SET disabled_flag = '0'
21735        WHERE publication_id = publicationid;
21736 
21737       cz_pb_mgr.remote_publication_id := v_remote_publication_id;
21738 
21739       EXECUTE IMMEDIATE    'BEGIN'
21740                         || ' '
21741                         || 'UPDATE cz_model_publications'
21742                         || v_cz_link_name
21743                         || ' '
21744                         || 'SET   disabled_flag   = ''0'''
21745                         || ' '
21746                         || 'WHERE  publication_id =  cz_pb_mgr.remote_publication_id ;'
21747                         || ' '
21748                         || 'END;';
21749 
21750       COMMIT;
21751    EXCEPTION
21752       WHEN NO_DATA_FOUND
21753       THEN
21754          NULL;
21755       WHEN cannot_enable_publication
21756       THEN
21757          x_return_status := FND_API.G_RET_STS_ERROR;
21758          x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationid);
21759          fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_PUB');
21760          fnd_message.set_token('STATUS', v_export_status);
21761          fnd_message.set_token('PUBID', publicationid);
21762          fnd_msg_pub.ADD;
21763          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21764       WHEN cannot_enable_template
21765       THEN
21766          x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_TEMPL', 'PUBID', publicationid);
21767          x_return_status := FND_API.G_RET_STS_ERROR;
21768          fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_TEMPL');
21769          fnd_message.set_token('PUBID', publicationid);
21770          fnd_msg_pub.ADD;
21771          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21772       WHEN get_params_exception
21773       THEN
21774          ROLLBACK;
21775          x_return_status := FND_API.G_RET_STS_ERROR;
21776          fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
21777          fnd_message.set_token('PUBID', publicationid);
21778          fnd_msg_pub.ADD;
21779          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21780       WHEN pub_overlap
21781       THEN
21782          ROLLBACK;
21783          x_return_status := FND_API.G_RET_STS_ERROR;
21784          fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
21785          fnd_message.set_token('PUBID', publicationid);
21786          fnd_message.set_token('PUBSTR', l_publicationidstring);
21787          fnd_msg_pub.ADD;
21788          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21789       WHEN pub_maybe_obsoleted
21790       THEN
21791          x_return_status := FND_API.G_RET_STS_ERROR;
21792       WHEN OTHERS
21793       THEN
21794          x_return_status := FND_API.G_RET_STS_ERROR;
21795          x_msg_data := SQLERRM;
21796    END enable_publication;
21797 
21798 ---------------------------------
21799 --------function that returns the name of a project that is passed in as
21800 --------a parameter.  IF the name already exists, then the string "Copy of ()"
21801 --------is appended before the original name
21802 --------this function is used in deep_model_copy
21803 --------
21804 FUNCTION copy_name(p_devl_project_id IN	NUMBER)
21805 RETURN VARCHAR2
21806 
21807 AS
21808 
21809 original_name	cz_devl_projects.name%TYPE;
21810 copy_name		cz_devl_projects.name%TYPE;
21811 L 			PLS_INTEGER := 0;
21812 x_error		BOOLEAN := FALSE;
21813 
21814 BEGIN
21815 	BEGIN
21816 		SELECT	name
21817 		INTO		original_name
21818 		FROM		cz_rp_entries
21819 		WHERE		object_id  = p_devl_project_id
21820 		 AND        object_type = 'PRJ'
21821 		 AND		deleted_flag = '0';
21825 	WHEN OTHERS THEN
21822 	EXCEPTION
21823 	WHEN NO_DATA_FOUND THEN
21824 		original_name := NULL;
21826 		original_name := NULL;
21827 	END;
21828 
21829 	IF (original_name IS NOT NULL) THEN
21830 
21831 		BEGIN
21832 
21833 			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)
21834 			INTO		L
21835 						FROM		cz_rp_entries
21836 						WHERE	 name LIKE 'Copy (%) of '||original_name
21837 						and  instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),'Copy (',7)=0
21838 		                                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'
21839 						AND     deleted_flag = '0' and object_type='PRJ';
21840 
21841 		--	L	 :=	to_number(substr(copy_name,7,instr(copy_name,')',7)-7));
21842 
21843 		EXCEPTION
21844 		WHEN	NO_DATA_FOUND THEN
21845 			L := 0;
21846 		END;
21847 	END IF;
21848 
21849 	L := L + 1;
21850 	copy_name := 'Copy ('||to_char(L)||') of '||original_name;
21851 	RETURN	copy_name ;
21852 EXCEPTION
21853   WHEN OTHERS THEN
21854     -- x_error:= CZ_UTILS.REPORT(SQLERRM,1,'CZ_UTILS.COPY_NAME',-222);
21855     log_report('cz_utils', 'copy_name', 1, SQLERRM, fnd_log.LEVEL_UNEXPECTED);
21856     copy_name := 'ERROR';
21857     RETURN copy_name ;
21858 END copy_name;
21859 
21860 ----------------------------------------------------------------------------------
21861    PROCEDURE create_publication_request(
21862       p_model_id IN NUMBER
21863      ,p_ui_def_id IN NUMBER
21864      ,p_publication_mode IN VARCHAR2
21865      ,p_server_id IN NUMBER
21866      ,p_appl_id_tbl IN cz_pb_mgr.t_ref
21867      ,p_usg_id_tbl IN cz_pb_mgr.t_ref
21868      ,p_lang_tbl IN cz_pb_mgr.t_lang_code
21869      ,p_start_date IN DATE
21870      ,p_end_date IN DATE
21871      ,x_publication_id OUT NOCOPY NUMBER
21872      ,x_return_status OUT NOCOPY VARCHAR2
21873      ,x_msg_count OUT NOCOPY NUMBER
21874      ,x_msg_data OUT NOCOPY VARCHAR2
21875    )
21876    IS
21877       l_model_id cz_rp_entries.object_id%TYPE;
21878       l_publication_mode cz_model_publications.publication_mode%TYPE;
21879       l_usg_id cz_publication_usages.usage_id%TYPE;
21880       l_lang_code cz_pb_languages.LANGUAGE%TYPE;
21881       l_start_date DATE;
21882       l_end_date DATE;
21883       l_last_struct_update DATE;
21884       l_last_logic_update DATE;
21885       l_last_updated DATE;
21886       l_persistent_project_id cz_devl_projects.persistent_project_id%TYPE;
21887       v_publicationidstring VARCHAR2(2000);
21888       v_upto_date_status VARCHAR2(2000);
21889       l_ui_style cz_ui_defs.ui_style%TYPE;
21890       v_new_publication_id cz_model_publications.publication_id%TYPE;
21891       l_inventory_item_id cz_devl_projects.inventory_item_id%TYPE;
21892       l_organization_id cz_devl_projects.organization_id%TYPE;
21893       l_product_key cz_devl_projects.product_key%TYPE;
21894       l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
21895       l_short_name cz_pb_client_apps.application_short_name%TYPE;
21896       pub_overlap EXCEPTION;
21897       no_model_id EXCEPTION;
21898       no_model_exists EXCEPTION;
21899       no_ui_exists EXCEPTION;
21900       invalid_pb_mode EXCEPTION;
21901       no_appl_id EXCEPTION;
21902       model_not_upto_date EXCEPTION;
21903       no_ui_id EXCEPTION;
21904       product_key_is_null EXCEPTION;
21905       PUB_SOURCE_FLAG CONSTANT VARCHAR2(1)  := 'S';
21906    BEGIN
21907       x_return_status := FND_API.G_RET_STS_SUCCESS;
21908       fnd_msg_pub.initialize;
21909 
21910       -----check if model id passed in is not null
21911       -----if not null then check if the model exists and is
21912       -----a source model
21913       IF (p_model_id IS NULL)
21914       THEN
21915          RAISE no_model_id;
21916       ELSE
21917          BEGIN
21918             SELECT devl_project_id, product_key, inventory_item_id, organization_id, last_struct_update, last_logic_update, last_update_date
21919                   ,persistent_project_id
21920               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
21921                   ,l_persistent_project_id
21922               FROM cz_devl_projects
21923              WHERE cz_devl_projects.devl_project_id = p_model_id
21924                AND cz_devl_projects.deleted_flag = '0'
21925                AND cz_devl_projects.devl_project_id IN(SELECT object_id
21926                                                          FROM cz_rp_entries
21927                                                         WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0');
21928          EXCEPTION
21929             WHEN NO_DATA_FOUND
21930             THEN
21931                RAISE no_model_exists;
21932          END;
21933       END IF;
21934 
21935       IF (l_product_key IS NULL)
21936       THEN
21937          RAISE product_key_is_null;
21938       END IF;
21939 
21940       -----verify that the ui_def_id passed in is valid
21941       -----If a ui_def is passed in verify that it belongs to the
21942       ----- model that is being published.
21943       IF (p_ui_def_id < 0)
21944       THEN
21945          RAISE no_ui_id;
21946       ELSIF(p_ui_def_id IS NULL)
21947       THEN
21948          l_ui_def_id := NULL;
21949          l_ui_style := NULL;
21950       ELSE
21951          BEGIN
21952             SELECT ui_def_id, ui_style
21956          EXCEPTION
21953               INTO l_ui_def_id, l_ui_style
21954               FROM cz_ui_defs
21955              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';
21957             WHEN NO_DATA_FOUND
21958             THEN
21959                RAISE no_ui_exists;
21960          END;
21961       END IF;
21962 
21963       ----verify that the publication mode that is passed in
21964       ---- is a valid one.  If NULL is passed then
21965       ----- default the mode to 'P'
21966       l_publication_mode := p_publication_mode;
21967 
21968       IF (l_publication_mode IS NULL)
21969       THEN
21970          l_publication_mode := 'P';
21971       ELSIF(UPPER(l_publication_mode) NOT IN('P', 'T', cz_model_migration_pvt.mode_migration))
21972       THEN
21973          RAISE invalid_pb_mode;
21974       END IF;
21975 
21976       IF (UPPER(l_publication_mode) = cz_model_migration_pvt.mode_migration)
21977       THEN
21978          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
21979          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
21980       ELSE
21981          cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
21982          cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
21983       END IF;
21984 
21985       ----check that atleast one application id
21986       ----- is passed
21987       IF (p_appl_id_tbl.COUNT = 0)
21988       THEN
21989          RAISE no_appl_id;
21990       END IF;
21991 
21992       ----if no usage is passed the default to
21993       ---- any usage
21994       IF (p_usg_id_tbl.COUNT = 0)
21995       THEN
21996          l_usg_id := -1;
21997       END IF;
21998 
21999       ----- if no language is passed then default to
22000       ------AMERICAN ENGLISH
22001       IF (p_lang_tbl.COUNT = 0)
22002       THEN
22003          l_lang_code := 'US';
22004       END IF;
22005 
22006       -----if no start or end dates
22007       ---- are passed, then default to epoch begin and epoch end respectively
22008       IF (p_start_date IS NULL)
22009       THEN
22010          l_start_date := cz_utils.epoch_begin;
22011       ELSE
22012          l_start_date := p_start_date;
22013       END IF;
22014 
22015       IF (p_end_date IS NULL)
22016       THEN
22017          l_end_date := cz_utils.epoch_end;
22018       ELSE
22019          l_end_date := p_end_date;
22020       END IF;
22021 
22022       ----check model upto date
22023       cz_pb_mgr.model_upto_date(p_model_id, p_ui_def_id, v_upto_date_status);
22024 
22025       IF (v_upto_date_status <> '0')
22026       THEN
22027          RAISE model_not_upto_date;
22028       END IF;
22029 
22030       ----check for publication overlap
22031       chk_pub_overlap_internal(l_product_key
22032                               ,l_publication_mode
22033                               ,p_appl_id_tbl
22034                               ,p_lang_tbl
22035                               ,p_usg_id_tbl
22036                               ,p_server_id
22037                               ,l_start_date
22038                               ,l_end_date
22039                               ,PUB_SOURCE_FLAG
22040                               ,1
22041                               ,v_publicationidstring
22042                               );
22043 
22044       IF (v_publicationidstring <> '-1')
22045       THEN
22046          RAISE pub_overlap;
22047       END IF;
22048 
22049       SELECT cz_model_publications_s.NEXTVAL
22050         INTO v_new_publication_id
22051         FROM DUAL;
22052 
22053       INSERT INTO cz_model_publications
22054                   (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode
22055                   ,ui_def_id, ui_style, applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update
22056                   ,model_last_logic_update, model_last_updated, model_persistent_id, source_target_flag, remote_publication_id, object_id
22057                   ,object_type, disabled_flag
22058                   )
22059            VALUES (v_new_publication_id, p_model_id, p_server_id, l_organization_id, l_inventory_item_id, l_product_key, l_publication_mode
22060                   ,p_ui_def_id, l_ui_style, l_start_date, l_end_date, 'PEN', '0', l_last_struct_update
22061                   ,l_last_logic_update, l_last_updated, l_persistent_project_id, PUB_SOURCE_FLAG, NULL, p_model_id
22062                   ,'PRJ', '0'
22063                   );
22064 
22065       IF (p_appl_id_tbl.COUNT > 0)
22066       THEN
22067          FOR i IN p_appl_id_tbl.FIRST .. p_appl_id_tbl.LAST
22068          LOOP
22069             l_short_name := ' ';
22070 
22071             SELECT application_short_name
22072               INTO l_short_name
22073               FROM fnd_application
22074              WHERE application_id = p_appl_id_tbl(i);
22075 
22076             INSERT INTO cz_pb_client_apps
22077                         (publication_id, fnd_application_id, application_short_name
22078                         )
22079                  VALUES (v_new_publication_id, p_appl_id_tbl(i), l_short_name
22080                         );
22081          ---- short name must be retrieved from fnd_applications_tl
22082          END LOOP;
22083       END IF;
22084 
22085       IF (p_usg_id_tbl.COUNT > 0)
22086       THEN
22087          FOR i IN p_usg_id_tbl.FIRST .. p_usg_id_tbl.LAST
22088          LOOP
22092                  VALUES (v_new_publication_id, p_usg_id_tbl(i)
22089             INSERT INTO cz_publication_usages
22090                         (publication_id, usage_id
22091                         )
22093                         );
22094          END LOOP;
22095       ELSE
22096          INSERT INTO cz_publication_usages
22097                      (publication_id, usage_id
22098                      )
22099               VALUES (v_new_publication_id, l_usg_id
22100                      );
22101       END IF;
22102 
22103       IF (p_lang_tbl.COUNT > 0)
22104       THEN
22105          FOR i IN p_lang_tbl.FIRST .. p_lang_tbl.LAST
22106          LOOP
22107             INSERT INTO cz_pb_languages
22108                         (publication_id, LANGUAGE
22109                         )
22110                  VALUES (v_new_publication_id, p_lang_tbl(i)
22111                         );
22112          END LOOP;
22113       ELSE
22114          INSERT INTO cz_pb_languages
22115                      (publication_id, LANGUAGE
22116                      )
22117               VALUES (v_new_publication_id, l_lang_code
22118                      );
22119       END IF;
22120 
22121       x_publication_id := v_new_publication_id;
22122    EXCEPTION
22123       WHEN product_key_is_null
22124       THEN
22125          x_return_status := FND_API.G_RET_STS_ERROR;
22126          fnd_message.set_name('CZ', 'CZ_PRODUCT_KEY_IS_NULL');
22127          fnd_msg_pub.ADD;
22128          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22129       WHEN no_model_id
22130       THEN
22131          x_return_status := FND_API.G_RET_STS_ERROR;
22132          fnd_message.set_name('CZ', 'cz_pb_mgr_MODEL_ID_NULL');
22133          fnd_msg_pub.ADD;
22134          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22135       WHEN no_model_exists
22136       THEN
22137          x_return_status := FND_API.G_RET_STS_ERROR;
22138          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_MODEL_EXISTS');
22139          fnd_message.set_token('MODELID', p_model_id);
22140          fnd_msg_pub.ADD;
22141          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22142       WHEN no_ui_exists
22143       THEN
22144          x_return_status := FND_API.G_RET_STS_ERROR;
22145          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_UI_EXISTS');
22146          fnd_message.set_token('MODELID', p_model_id);
22147          fnd_msg_pub.ADD;
22148          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22149       WHEN invalid_pb_mode
22150       THEN
22151          x_return_status := FND_API.G_RET_STS_ERROR;
22152          fnd_message.set_name('CZ', 'cz_pb_mgr_IVALID_PB_MODE');
22153          fnd_message.set_token('PBMODE', l_publication_mode);
22154          fnd_msg_pub.ADD;
22155          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22156       WHEN no_appl_id
22157       THEN
22158          x_return_status := FND_API.G_RET_STS_ERROR;
22159          fnd_message.set_name('CZ', 'cz_pb_mgr_NO_APPL_ID');
22160          fnd_msg_pub.ADD;
22161          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22162       WHEN pub_overlap
22163       THEN
22164          x_return_status := FND_API.G_RET_STS_ERROR;
22165          fnd_message.set_name('CZ', 'PUB_OVERLAP');
22166          fnd_message.set_token('PUB_OVERLAP', v_publicationidstring);
22167          fnd_msg_pub.ADD;
22168          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22169       WHEN model_not_upto_date
22170       THEN
22171          x_return_status := FND_API.G_RET_STS_ERROR;
22172          fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
22173          fnd_message.set_token('UPTODATESTR', v_upto_date_status);
22174          fnd_msg_pub.ADD;
22175          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22176       WHEN OTHERS
22177       THEN
22178          x_return_status := FND_API.G_RET_STS_ERROR;
22179          fnd_message.set_name('CZ', 'CZ_PB_CREATE_PB_REQUEST_ERR');
22180          fnd_message.set_token('ERROR', SQLERRM);
22181          fnd_msg_pub.ADD;
22182          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22183    END create_publication_request;
22184 
22185 ------------------------------------------------------------------------------------------------
22186 --Need to go through get_models_tobe_exported because it makes the decisions on shallow
22187 --migration.
22188    PROCEDURE mm_get_models_tobe_exported(rootmodelid_tbl IN cz_pb_mgr.t_ref)
22189    AS
22190    BEGIN
22191      IF (rootmodelid_tbl.COUNT > 0) THEN
22192       FOR i IN rootmodelid_tbl.FIRST .. rootmodelid_tbl.LAST
22193       LOOP
22194          get_models_tobe_exported(rootmodelid_tbl(i));
22195       END LOOP;
22196       END IF;
22197    END;
22198 
22199 ------------------------------------------------------------------------------------------------
22200    FUNCTION mm_chkifmodelselectedforexport(input_model NUMBER)
22201       RETURN NUMBER
22202    AS
22203       return_value NUMBER := 0;
22204    BEGIN
22205      IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
22206       FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
22207       LOOP
22208          IF (cz_pb_mgr.v_models_to_be_exported(i) = input_model)
22209          THEN
22210             return_value := 1;
22211             EXIT;
22212          END IF;
22213       END LOOP;
22214      END IF;
22215 
22219 ------------------------------------------------------------------------------------------------
22216       RETURN return_value;
22217    END mm_chkifmodelselectedforexport;
22218 
22220 --The current design for model migration will run
22221 --the publication process for every model that has been selected
22222 --to be migrated.  The process of collecting the models is in
22223 --CZ_MODEL_MIGRATION_PVT.  Once the models are collected there, for every
22224 --CZ_MODEL_PUBLICATIONS record, publish model is called.  Given that,
22225 --this procedure gets the model for the current migration cz_model_publication
22226 --record.
22227 
22228    FUNCTION get_rootmodel_and_mig_tgt_fldr(p_publication_id NUMBER)
22229       RETURN t_ref
22230    AS
22231       mm_root_model t_ref;
22232    BEGIN
22233 
22234       --we load the global variable
22235       --holding the value of migration target folder
22236       SELECT migration_group_id, migration_tgt_folder
22237         INTO cz_pb_mgr.g_migration_group_id, cz_pb_mgr.g_migration_tgt_folder_id
22238         FROM cz_model_publications
22239        WHERE publication_id = p_publication_id;
22240 
22241       --get the model corresponding to this publication
22242       SELECT object_id
22243       BULK COLLECT INTO mm_root_model
22244         FROM cz_model_publications
22245        WHERE publication_id = p_publication_id;
22246 
22247       RETURN mm_root_model;
22248    END get_rootmodel_and_mig_tgt_fldr;
22249 
22250 ------------------------------------------------------------------------------------------------
22251    PROCEDURE mm_loadoldpsnodesforitems
22252    AS
22253       v_project_count PLS_INTEGER;
22254       rec_count PLS_INTEGER;
22255       l_ps_uits_add_tbl date_tbl_type;      -- cz_ps_nodes.UI_TIMESTAMP_ADD
22256       l_reverse_connector_tbl  t_ref;
22257    BEGIN
22258       clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
22259       cz_pb_mgr.sequence_const := 0;
22260 
22261       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
22262       THEN
22263          FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
22264          LOOP
22265             BEGIN
22266                clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
22267                l_ps_uits_add_tbl.DELETE;
22268                l_reverse_connector_tbl.DELETE;
22269 
22270                SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ps_nodes_seq
22271                                                  , 'cz_ps_nodes_s.NEXTVAL' || cz_pb_mgr.v_db_link
22272                                                  ,cz_pb_mgr.v_oraclesequenceincr
22273                                                  )
22274                      ,ps_node_id, parent_id, reference_id, effectivity_set_id
22275                      ,intl_text_id, violation_text_id, displayname_capt_rule_id, component_id
22276                      ,effective_usage_mask, item_id, ps_node_type
22277                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_origsysref(orig_sys_ref), 'N', orig_sys_ref)
22278                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqpath(component_sequence_path), 'N', component_sequence_path)
22279                      ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqid(component_sequence_id), 'N', component_sequence_id)
22280                      ,NVL(ui_timestamp_add, creation_date), reverse_connector_id
22281                BULK COLLECT INTO cz_pb_mgr.v_cz_ps_nodes_new_ref
22282                      ,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
22283                      ,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
22284                      ,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
22285                      ,cz_pb_mgr.v_ps_orig_sys_ref
22286                      ,cz_pb_mgr.v_ps_comp_seq_path_ref
22287                      ,cz_pb_mgr.v_ps_comp_seq_id_ref
22288                      ,l_ps_uits_add_tbl, l_reverse_connector_tbl
22289                  FROM cz_ps_nodes
22290                 WHERE cz_ps_nodes.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND deleted_flag = record_not_deleted;
22291             EXCEPTION
22292                WHEN OTHERS
22293                THEN
22294                   cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
22295                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
22296                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
22297                   RAISE;
22298             END;
22299 
22300             v_project_count := cz_pb_mgr.v_devl_project_tbl.COUNT;
22301             rec_count := cz_pb_mgr.v_cz_ps_nodes_new_tbl.COUNT;
22302 
22303             IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0)
22304             THEN
22305                FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
22306                LOOP
22307                   rec_count := rec_count + 1;
22308                   cz_pb_mgr.v_cz_ps_nodes_new_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
22309                   cz_pb_mgr.v_cz_ps_nodes_old_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_old_ref(k);
22310                   cz_pb_mgr.v_cz_effective_usage_mask_tbl(rec_count) := cz_pb_mgr.v_cz_effective_usage_mask_ref(k);
22311                   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);
22312                   cz_pb_mgr.v_ps_refid_old_tbl(rec_count) := cz_pb_mgr.v_ps_ref_id_ref(k);
22313 
22317                   END IF;
22314                   IF (cz_pb_mgr.v_cz_ps_nodes_old_ref(k) = cz_pb_mgr.v_models_to_be_exported(i))
22315                   THEN
22316                      cz_pb_mgr.v_new_devl_id := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
22318 
22319                   ------------resolve parent ids
22320                   IF (cz_pb_mgr.v_ps_parent_id_ref(k) IS NOT NULL)
22321                   THEN
22322 		    IF (cz_pb_mgr.v_cz_ps_nodes_old_ref.COUNT > 0) THEN
22323                      FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_ref.LAST
22324                      LOOP
22325                         IF (cz_pb_mgr.v_ps_parent_id_ref(k) = cz_pb_mgr.v_cz_ps_nodes_old_ref(i))
22326                         THEN
22327                            cz_pb_mgr.v_ps_parent_id_ref(k) := cz_pb_mgr.v_cz_ps_nodes_new_ref(i);
22328                            EXIT;
22329                         END IF;
22330                      END LOOP;
22331 		   END IF;
22332                   END IF;
22333 
22334                   cz_pb_mgr.v_ps_parent_id_tbl(rec_count) := cz_pb_mgr.v_ps_parent_id_ref(k);
22335                   cz_pb_mgr.v_ps_eff_set_id_tbl(rec_count) := cz_pb_mgr.v_ps_eff_set_id_ref(k);
22336                   cz_pb_mgr.v_ps_intl_old_tbl(rec_count) := cz_pb_mgr.v_ps_intl_old_ref(k);
22337                   cz_pb_mgr.v_ps_viol_old_tbl(rec_count) := cz_pb_mgr.v_ps_viol_old_ref(k);
22338                   cz_pb_mgr.v_ps_capt_rule_tbl(rec_count) := cz_pb_mgr.v_ps_capt_rule_ref(k);
22339                   cz_pb_mgr.v_cz_ps_nodes_comp_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_comp_ref(k);
22340                   cz_pb_mgr.v_ps_orig_sys_tbl(rec_count) := cz_pb_mgr.v_ps_orig_sys_ref(k);
22341                   cz_pb_mgr.v_ps_comp_seq_path_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_path_ref(k);
22342                   cz_pb_mgr.v_ps_comp_seq_id_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_id_ref(k);
22343                   cz_pb_mgr.v_ps_item_id_tbl(rec_count) := cz_pb_mgr.v_ps_item_id_ref(k);
22344                   cz_pb_mgr.v_ps_type_old_tbl(rec_count) := cz_pb_mgr.v_ps_type_old_ref(k);
22345                   cz_pb_mgr.g_ps_uits_add_tbl(rec_count) := l_ps_uits_add_tbl(k);
22346                   cz_pb_mgr.g_ps_reverse_connector_tbl(rec_count) := l_reverse_connector_tbl(k);
22347                END LOOP;
22348             END IF;
22349 
22350             cz_pb_mgr.v_models_to_be_exported_new(i) := cz_pb_mgr.v_new_devl_id;
22351 
22352 	    IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0) THEN
22353             FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
22354             LOOP
22355                v_project_count := v_project_count + 1;
22356                cz_pb_mgr.v_devl_project_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
22357 --               cz_pb_mgr.v_intl_text_model_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
22358 --               cz_pb_mgr.v_intl_text_ui_tbl(v_project_count) := -1;
22359             END LOOP;
22360 	    END IF;
22361 
22362             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
22363                                 ,cz_pb_mgr.v_status_code);
22364 
22365             ---------- update remote_model id in the source cz_pb_model_exports
22366             UPDATE cz_pb_model_exports t
22367                SET t.remote_model_id = cz_pb_mgr.v_models_to_be_exported_new(i)
22368              WHERE t.publication_id = cz_pb_mgr.v_publication_id
22369                AND t.server_id = cz_pb_mgr.v_server_id
22370                AND t.model_id = cz_pb_mgr.v_models_to_be_exported(i);
22371 
22372             COMMIT;
22373          END LOOP;                            /* end loop of FOR I IN p_models_for_export */
22374       END IF;                                 /* end if of p_models_for_export > 0 */
22375    END mm_loadoldpsnodesforitems;
22376 
22377 ------------------------------------------------------------------------------------------------
22378    PROCEDURE get_all_properties
22379    AS
22380       v_property_count PLS_INTEGER := 0;
22381       rec_count PLS_INTEGER := 0;
22382       v_remote_prop_tbl cz_pb_mgr.t_ref;
22383       l_data_type_tbl cz_pb_mgr.t_ref;
22384       l_def_num_value_tbl cz_pb_mgr.t_ref;
22385       l_prop_num_value_tbl cz_pb_mgr.t_ref;
22386       l_old_psnode_id NUMBER;
22387 
22388       l_devl_project_id_tbl cz_pb_mgr.t_ref;
22389       l_devl_project_id     NUMBER;
22390 
22391 -- model migration
22392       l_item_type_id_tbl cz_pb_mgr.t_ref;
22393       l_item_id_tbl cz_pb_mgr.t_ref;
22394       l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
22395       l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
22396    BEGIN
22397       IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
22398       THEN
22399          IF (cz_pb_mgr.g_log_timing = publication_timing)
22400          THEN
22401             log_timing_message('start bulk collect from cz_psnode_propval_v');
22402          END IF;
22403 
22404 	 IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
22405          FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
22406          LOOP
22407             clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
22408             l_data_type_tbl.DELETE;
22409             l_prop_num_value_tbl.DELETE;
22410             l_def_num_value_tbl.DELETE;
22411 
22412             BEGIN
22413                l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
22414                l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
22415 
22416                IF (cz_pb_mgr.v_session_parameter <> model_copy)
22417                THEN
22418 
22419                   -- Bug 5570651: The view cz_psnode_propval_v returns records for
22423                   -- of type 263 referring to it. This causes publishing to create a record in
22420                   -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
22421                   -- containing references, properties defined on the root of the referred model
22422                   -- are retrieved more than once: once for the root node, and once for every node
22424                   -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
22425                   -- getting properties for a reference node, CIO always goes to actual root of the
22426                   -- referred model. In the case of this bug, the multiple records for the same property,
22427                   -- each with a different devl_project_id were causing a problem when publishing
22428                   -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
22429                   -- was populated with wrong devl_project_ids just causing the intl_text to be
22430                   -- written with a wrong model_id. We solve this problem by excluding records with
22431                   -- ps_node_type = 263 in the query below
22432 
22433                   SELECT ps_node_id, property_id, data_type, property_num_value
22434                        , property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id
22435                        , def_num_value
22436                   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
22437                        , cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl
22438                        , l_devl_project_id_tbl, l_def_num_value_tbl
22439                     FROM cz_psnode_propval_v t
22440                    WHERE t.ps_node_id = l_old_psnode_id
22441                      AND t.ps_node_type <> PS_NODE_REF_TYPE;
22442                -----ORDER BY ps_node_id;
22443                ELSE
22444                   SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
22445                        , a.data_value, l_devl_project_id
22446                   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
22447                        , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
22448                     FROM cz_ps_prop_vals a, cz_properties b
22449                    WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id AND a.deleted_flag = '0';
22450                -----ORDER BY a.ps_node_id;
22451                END IF;
22452             EXCEPTION
22453                WHEN NO_DATA_FOUND
22454                THEN
22455                   cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
22456                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
22457                WHEN OTHERS
22458                THEN
22459                   cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
22460                   cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
22461                   cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
22462                   RAISE;
22463             END;
22464 
22465             IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
22466             THEN
22467                v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
22468 
22469                FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
22470                LOOP
22471                   v_property_count := v_property_count + 1;
22472 
22473                   cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
22474                   cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
22475                   cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
22476                   cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
22477                   cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
22478 
22479                   IF(l_data_type_tbl(j) = 8)THEN
22480 
22481                       --Bug #5441580. This is the case of translatable properties, data_num_value contains
22482                       --intl_text_id of the property value. Hash the node's devl_project_id for later use
22483                       --inserting into cz_localized_texts.
22484 
22485                       cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
22486                   END IF;
22487 
22488                   --model migration, maintain other columns
22489                   IF (cz_pb_mgr.v_session_parameter <> model_copy)
22490                   THEN
22491                      cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
22492                      cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
22493                      cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
22494                      cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
22495 
22496                      --There is no need to make this array public and define it in the spec as it is not used in
22497                      --any dynamic sql blocks.
22498 
22499                      v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
22500 
22501                   END IF;
22502                END LOOP;
22503             END IF;                                                                           /* end if of cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0 */
22507    END get_all_properties;
22504          END LOOP;                                                                          /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
22505 	END IF;
22506       END IF;                                                                                          /* cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
22508 ------------------------------------------------------------------------------------------------
22509    PROCEDURE mm_sync_properties
22510    AS
22511       s_prop_id NUMBER;
22512       t_prop_id NUMBER;
22513       s_item_type_id NUMBER;
22514       t_item_type_id NUMBER;
22515       s_item_id NUMBER;
22516       t_item_id NUMBER;
22517       t_prop_val_num number;
22518       new_def_num_val number;
22519       l_exists_on_target_hash cz_pb_mgr.t_ref;
22520    BEGIN
22521 /*
22522  *  For all the properties collected in v_prop_vals_prop_ref
22523  */
22524       IF(cz_pb_mgr.v_prop_vals_prop_ref.COUNT > 0) THEN
22525          FOR j IN cz_pb_mgr.v_prop_vals_prop_ref.FIRST .. cz_pb_mgr.v_prop_vals_prop_ref.LAST LOOP
22526 
22527                /*
22528                  Get the property_id
22529                  handle properties  check if the property with the same name, src_application_id exists
22530                  Add either the existing prop or the new prop id to table mm_v_tbl_sync_prop(old);
22531                */
22532 
22533                s_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(j);
22534 
22535                --The table l_exists_on_target_hash records the fact that we called mm_get_ifexists_on_target on this s_prop_id
22536                --and therefore don't have to do it again. If the property does not exist on the target, the value stored will
22537                --be null.
22538 
22539                IF(NOT l_exists_on_target_hash.EXISTS(s_prop_id))THEN
22540 
22541                   mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
22542                   l_exists_on_target_hash(s_prop_id) := t_prop_id;
22543 
22544                ELSE
22545                   t_prop_id := l_exists_on_target_hash(s_prop_id);
22546                END IF;
22547 
22548                IF(t_prop_id IS NULL)THEN
22549 
22550                   t_prop_id := mm_get_newid('PROP');
22551                   mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22552 
22553                   --Because the property does not exist on the target, we will be creating a new property and so we need both
22554                   --numeric value and numeric default value. These two values are special because of their use for translatable
22555                   --properties. All other property attributes are handled in a standard way and don't need any special tables.
22556 
22557                   IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
22558 
22559 --First for the numeric value of the translatable property.
22560 
22561                     t_prop_val_num := mm_get_newid('INTL_TEXT');
22562 
22563 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
22564 --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
22565 
22566                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
22567                     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);
22568 
22569                     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));
22570 
22571 --Same for the default value of the translatable property.
22572 
22573                     new_def_num_val := mm_get_newid('INTL_TEXT');
22574 
22575                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
22576                     mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := v_prop_vals_def_num_value_ref(j);
22577 
22578                     mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
22579                   ELSE
22580 
22581                     t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j); /*Other properties dont need new intl_text_id*/
22582                     new_def_num_val := v_prop_vals_def_num_value_ref(j);
22583                   END IF;
22584 
22585 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
22586 
22587                   --Making mm_v_tbl_sync_prop_vals_num a hash table. Now it cannot be used directly in the only place where
22588                   --it is currently used - insert_item_schema. Will need to construct an array with the values from this
22589                   --hash table.
22590 
22591                   mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22592                   mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
22593 
22594                   --The following two arrays are not used.
22595 
22596                   --mm_v_tbl_sync_prop_type(s_prop_id) := 'PRP';
22597                   --mm_v_tbl_sync_prop_folder(s_prop_id) := cz_pb_mgr.g_migration_tgt_folder_id;
22598 
22599                ELSE /*get the def num values of properties on target*/
22600 
22601                  --The property exists on the target, so t_prop_id is not null. We should not assign a value here to
22602                  --mm_v_tbl_sync_prop(s_prop_id) because later this table will be used to resolve id(s) and build an
22603                  --array of all properties that need to be migrated to the target - in a call to
22607                  --mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22604                  --mm_resolve_ids_w_rp_entries in insert_item_schema procedure. So, here the mm_v_tbl_sync_prop is
22605                  --supposed to have defined keys only for the properties that need to be created on the target.
22606 
22608 
22609                  --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).
22610                  --The ps_node_id value has been already resolved to the new id in upload_item_schema after get_all_properties.
22611                  --So we need to query for this value, or, if there's no such value, than the ps_node_id will be created and
22612                  --should inherit the property value.
22613 
22614                  --We do not need the default value, because here we prepare data to be inserted into cz_ps_prop_vals, and
22615                  --this table does not store default values. What we need is a value in mm_v_ht_sync_all_prop_val_num(j) for
22616                  --every pair of t_prop_id, v_prop_vals_node_ref(j).
22617 
22618                      IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
22619 
22620                        t_prop_val_num := mm_get_newid('INTL_TEXT');
22621 
22622                        mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
22623                        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);
22624 
22625                        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));
22626 
22627                      ELSE
22628 
22629                        t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j);
22630                      END IF;
22631 
22632                      mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
22633                END IF;
22634 
22635             s_item_id := v_prop_vals_item_id_ref(j);
22636 
22637             --If s_item_id is not null, than the value is defined on the item, not on the ps node.
22638             --If the value exists on the source in cz_item_property_values, than the value is defined
22639             --on the item directly, not through item type.
22640 
22641             IF((s_item_id IS NOT NULL) AND (mm_get_ifexists_on_source(s_prop_id, 'ITPROPVAL') = '1'))THEN
22642 
22643                mm_v_ht_sync_it_propval(s_prop_id) := t_prop_id;
22644 
22645                IF(NOT mm_v_ht_sync_items.EXISTS(s_item_id))THEN
22646 
22647                  mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
22648 
22649                  IF(t_item_id IS NULL)THEN
22650 
22651                      t_item_id := mm_get_newid('ITEM');
22652                      mm_v_ht_sync_items(s_item_id) := t_item_id;
22653                  ELSE
22654 
22655                      mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
22656                  END IF;
22657                ELSE
22658 
22659                  t_item_id := mm_v_ht_sync_items(s_item_id);
22660                END IF;
22661 
22662                mm_v_ht_sync_it_propval_itm(s_item_id) := t_item_id;
22663             END IF;
22664 
22665             --This block selects from all the properties only those that come from cz_ps_prop_vals, as
22666             --mm_v_ht_sync_ps_propval is used in mm_migrate_into_ps_prop_vals as one of the criteria
22667             --whether to insert the value into cz_ps_prop_vals.
22668 
22669             IF(mm_get_ifexists_on_source(s_prop_id, 'PSPROPVAL') = '1')THEN
22670 
22671                mm_v_ht_sync_ps_propval(s_prop_id) := t_prop_id;
22672 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
22673                mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
22674             END IF;
22675          END LOOP;
22676       END IF;
22677 
22678 --Now we deal with properties associated with Item Types.
22679 
22680 --This is the same algorithm as above, but the sources of property_id and property_num_value are different arrays and
22681 --a different query must be used (against cz_item_property_values) when the property and the item exist on the target.
22682 --For item_id, the second part of the above block must be useful.
22683 
22684       IF(cz_pb_mgr.v_item_prop_type_tbl.COUNT > 0)THEN
22685 
22686 --This array contains all property_id(s) of properties that are involved in the migration because of their association
22687 --with item types. If a property is defined directly on a node, it has already been processes and stored in the hash
22688 --table mm_v_tbl_sync_prop, so it won't be processed here.
22689 
22690          FOR j IN cz_pb_mgr.v_item_prop_type_tbl.FIRST .. cz_pb_mgr.v_item_prop_type_tbl.LAST LOOP
22691 
22692             s_prop_id := cz_pb_mgr.v_item_prop_id_tbl(j);
22693 
22694             IF(NOT mm_v_tbl_sync_prop.EXISTS(s_prop_id))THEN
22695 
22696                mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
22697 
22698                IF(t_prop_id IS NULL)THEN
22699 
22700                   t_prop_id := mm_get_newid('PROP');
22701                   mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22702 
22703                   --Because the property does not exist on the target, we will be creating a new property and so we need the
22704                   --default numeric value. Note that we should not populate array mm_v_ht_sync_all_prop_val_num in this block
22705                   --because it is used for insert into cz_ps_prop_vals. We do need to populate the table
22706                   --mm_v_tbl_sync_prop_vals_num with default numeric values of all properties that will be inserted on the
22707                   --target, just like in the previous block.
22711                     new_def_num_val := mm_get_newid('INTL_TEXT');
22708 
22709                   IF(cz_pb_mgr.v_item_prop_data_typ_tbl(j) = 8)THEN /*Tranlatable properties*/
22710 
22712 
22713 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
22714 --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
22715 
22716                     mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
22717                     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);
22718 
22719                     --These properties are associated with item types, not ps nodes, therefore we can set 0 for model_id.
22720 
22721                     mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
22722                   ELSE /*Other properties dont need new def num ids*/
22723 
22724                     new_def_num_val := cz_pb_mgr.v_item_prop_num_val_tbl(j);
22725                   END IF;
22726 
22727 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
22728 
22729                   mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22730                ELSE  /*get the def num values of properties on target*/
22731 
22732                  --The property exists on the target, so t_prop_id is not null. Again, these are properties associated with item types,
22733                  --so we need only the default numeric value. This query cannot fail with NO_DATA_FOUND.
22734 
22735                  EXECUTE IMMEDIATE 'SELECT def_num_value FROM cz_properties' || cz_pb_mgr.v_db_link ||
22736                                    ' WHERE property_id = :1 AND deleted_flag = 0'
22737                     INTO new_def_num_val
22738                    USING t_prop_id;
22739 
22740                  mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22741                END IF;
22742             ELSE
22743 
22744               t_prop_id := mm_v_tbl_sync_prop(s_prop_id);
22745             END IF;
22746 
22747             s_item_type_id := v_item_prop_type_tbl(j);
22748 
22749             IF(NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))THEN
22750 
22751                mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
22752 
22753                IF(t_item_type_id IS NULL)THEN
22754 
22755                   t_item_type_id := mm_get_newid('ITEM_TYPE');
22756                   mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
22757                END IF;
22758             ELSE
22759                t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
22760             END IF;
22761 
22762             mm_v_ht_sync_itmtype_for_prop(s_item_type_id) := t_item_type_id;
22763             mm_v_ht_sync_item_type_prop(s_prop_id) := t_prop_id;
22764 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
22765             mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
22766          END LOOP;
22767       END IF;
22768    END mm_sync_properties;
22769 ------------------------------------------------------------------------------------------------
22770    PROCEDURE mm_sync_itemschema
22771    AS
22772       s_prop_id NUMBER;
22773       t_prop_id NUMBER;
22774       s_item_type_id NUMBER;
22775       t_item_type_id NUMBER;
22776       s_item_id NUMBER;
22777       t_item_id NUMBER;
22778 
22779    BEGIN
22780       IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
22781       THEN
22782          FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
22783          LOOP
22784             s_item_id := cz_pb_mgr.v_item_masters_tbl(i);
22785 
22786             IF (NOT mm_v_ht_sync_items.EXISTS(s_item_id))
22787             THEN
22788                 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
22789                 IF (t_item_id IS NULL)
22790                 THEN
22791                   t_item_id := mm_get_newid('ITEM');
22792                   mm_v_ht_sync_items(s_item_id) := t_item_id;
22793                 ELSE
22794                   mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
22795                 END IF;
22796             ELSE
22797                 t_item_id := mm_v_ht_sync_items(s_item_id);
22798             END IF;
22799 
22800             s_item_type_id := v_item_types_tbl(i);
22801             IF (NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))
22802             THEN
22803                mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
22804                IF (t_item_type_id IS NULL)
22805                THEN
22806                   t_item_type_id := mm_get_newid('ITEM_TYPE');
22807                   mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
22808                END IF;
22809             ELSE
22810                t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
22811             END IF;
22812 
22813             IF (NOT mm_v_ht_sync_exist_items.EXISTS(s_item_id))
22814             THEN
22815                mm_v_ht_sync_item_type_items(s_item_id) := t_item_type_id;
22816             END IF;
22817 
22818          END LOOP;
22819       END IF;
22820    END mm_sync_itemschema;
22821 
22822    FUNCTION mm_get_ifexists_on_source(source_id IN NUMBER, what_exists VARCHAR2)
22823       RETURN VARCHAR2
22824    AS
22825       record_exists VARCHAR2(1) := '0';
22826    BEGIN
22827       IF (what_exists = 'PSPROPVAL')
22828       THEN
22829          SELECT '1'
22830            INTO record_exists
22831            FROM DUAL
22835       ELSIF(what_exists = 'ITPROPVAL')
22832           WHERE EXISTS(SELECT property_id
22833                          FROM cz_ps_prop_vals
22834                         WHERE property_id = source_id);
22836       THEN
22837          SELECT '1'
22838            INTO record_exists
22839            FROM DUAL
22840           WHERE EXISTS(SELECT property_id
22841                          FROM cz_item_property_values
22842                         WHERE property_id = source_id);
22843       END IF;
22844 
22845       RETURN record_exists;
22846    EXCEPTION
22847       WHEN NO_DATA_FOUND
22848       THEN
22849          RETURN record_exists;
22850    END mm_get_ifexists_on_source;
22851 
22852    PROCEDURE mm_get_ifexists_on_target(source_id IN NUMBER, target_id IN OUT NOCOPY NUMBER, what_exists IN VARCHAR2)
22853    AS
22854       l_sql_str VARCHAR2(2000);
22855       l_sync_msg_object_type_tkn VARCHAR2(50);
22856       l_sync_msg_object_name_tkn VARCHAR2(50);
22857       cz_property_caption VARCHAR2(50) := 'Property';
22858       cz_item_caption VARCHAR2(50) := 'Item';
22859       cz_item_type_caption VARCHAR2(50) := 'Item Type';
22860       cz_archive_caption VARCHAR2(50) := 'Archive';
22861       cz_effset_caption VARCHAR2(50) := 'Effectivity Set';
22862    BEGIN
22863       IF (what_exists = 'PROP')
22864       THEN
22865          l_sql_str :=
22866             'SELECT t.property_id, t.NAME FROM cz_properties' || cz_pb_mgr.v_db_link || ' t' ||  ',' ||
22867                                            'cz_rp_entries' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
22868                                            'cz_properties s' || ' ' ||
22869             'WHERE t1.object_id = t.property_id AND t1.object_type = ''PRP'' ' || ' ' ||
22870              'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
22871              'AND t.NAME = s.NAME AND t1.NAME = s.NAME' || ' ' ||
22872              'AND t.data_type = s.data_type' || ' ' ||
22873              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)'  || ' ' ||
22874              'AND s.property_id = :1';
22875          l_sync_msg_object_type_tkn := cz_property_caption;
22876       ELSIF(what_exists = 'ITEM')
22877       THEN
22878          l_sql_str :=
22879             'SELECT t.item_id, t.ref_part_nbr FROM cz_item_masters' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22880                                                   'cz_item_masters s' || ' ' ||
22881             'WHERE t.ref_part_nbr = s.ref_part_nbr' || ' ' ||
22882              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
22883              'AND NVL(t.orig_sys_ref, 0) = :1' || ' ' ||
22884              'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22885              'AND s.item_id = :2';
22886          l_sync_msg_object_type_tkn := cz_item_caption;
22887       ELSIF(what_exists = 'ITEM_TYPE')
22888       THEN
22889          l_sql_str :=
22890             'SELECT t.item_type_id, t.NAME FROM cz_item_types' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22891                                                'cz_item_types s' || ' ' ||
22892             'WHERE t.NAME = s.NAME' || ' ' ||
22893              'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22894              'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
22895              'AND s.item_type_id = :1';
22896          l_sync_msg_object_type_tkn := cz_item_type_caption;
22897       ELSIF(what_exists = 'ARCHIVE')
22898       THEN
22899          l_sql_str :=
22900              'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22901                                              'cz_archives s' || ' ' ||
22902               'WHERE t.object_type = ''ARC'' AND t.NAME = s.NAME' || ' ' ||
22903                'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22904                'AND s.archive_id = :1';
22905          l_sync_msg_object_type_tkn := cz_archive_caption;
22906       ELSIF(what_exists = 'EFF_SETS')
22907       THEN
22908          l_sql_str :=
22909              'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || 't' || ',' ||
22910                                              'cz_effectivity_sets s' || ' ' ||
22911               'WHERE t.object_type = ''EFF'' AND t.NAME = s.NAME' || ' ' ||
22912                'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22913                'AND s.effectivity_set_id = :1';
22914          l_sync_msg_object_type_tkn := cz_effset_caption;
22915       END IF;
22916 
22917       IF(what_exists = 'ITEM')THEN
22918 
22919         EXECUTE IMMEDIATE l_sql_str
22920                      INTO target_id, l_sync_msg_object_name_tkn
22921                     USING NVL(mm_v_ht_items_orig_ref(source_id), 0)
22922                         , source_id;
22923 
22924       ELSE
22925 
22926         EXECUTE IMMEDIATE l_sql_str
22927                      INTO target_id, l_sync_msg_object_name_tkn
22928                     USING source_id;
22929       END IF;
22930 
22931       IF (target_id IS NOT NULL)
22932       THEN
22933          cz_pb_mgr.v_err_message :=
22934               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);
22935          log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_get_ifexists_on_target', -1);
22936       END IF;
22937    EXCEPTION
22938       WHEN NO_DATA_FOUND
22939       THEN
22940          target_id := NULL;
22941       WHEN TOO_MANY_ROWS
22942       THEN
22943            --this is an error condition where there are too many rows with the same
22944            --name, which is not likely to happen
22945             target_id := -1;
22946 
22950 ------------------------------------------------------------------------------------------------
22947          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.mm_get_ifexists_on_target', SQLCODE);
22948    END mm_get_ifexists_on_target;
22949 
22951    FUNCTION mm_get_newid(what_id IN VARCHAR2)
22952       RETURN NUMBER
22953    AS
22954       returnid NUMBER;
22955       l_sql_str VARCHAR2(2000);
22956       l_seq VARCHAR2(32);
22957 
22958    BEGIN
22959       IF (what_id = 'PROP')
22960       THEN
22961          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_PROPERTIES_SEQ
22962                                              , 'CZ_PROPERTIES_S.nextval' || cz_pb_mgr.v_db_link
22963                                              ,cz_pb_mgr.v_oraclesequenceincr
22964                                              );
22965 
22966       ELSIF(what_id = 'ITEM')
22967       THEN
22968          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_MASTERS_SEQ
22969                                              , 'CZ_ITEM_MASTERS_S.nextval' || cz_pb_mgr.v_db_link
22970                                              ,cz_pb_mgr.v_oraclesequenceincr
22971                                              );
22972       ELSIF(what_id = 'ITEM_TYPE')
22973       THEN
22974          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_TYPES_SEQ
22975                                              , 'CZ_ITEM_TYPES_S.nextval' || cz_pb_mgr.v_db_link
22976                                              ,cz_pb_mgr.v_oraclesequenceincr
22977                                              );
22978 
22979       ELSIF(what_id = 'ARCHIVE')
22980       THEN
22981          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ARCHIVES_SEQ
22982                                              , 'CZ_ARCHIVES_S.nextval' || cz_pb_mgr.v_db_link
22983                                              ,cz_pb_mgr.v_oraclesequenceincr
22984                                              );
22985       ELSIF(what_id = 'INTL_TEXT')
22986       THEN
22987          RETURN  cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
22988                                              , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
22989                                              ,cz_pb_mgr.v_oraclesequenceincr
22990                                              );
22991 
22992       END IF;
22993 
22994    END mm_get_newid;
22995 
22996 ------------------------------------------------------------------------------------------------
22997 -----procedure inserts data into cz_ps_prop_vals
22998    PROCEDURE mm_migrate_into_ps_prop_vals
22999    AS
23000       v_migrate_error NUMBER := 0;
23001       l_sql_str VARCHAR2(32000);
23002    BEGIN
23003       IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
23004       THEN
23005          l_sql_str :=
23006                'BEGIN'
23007             || ' '
23008             || 'cz_pb_mgr.v_expr_count := 0;'
23009             || ' '
23010             || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
23011             || ' '
23012             || 'LOOP'
23013             || ' '
23014             ||
23015                ---only if a ps_prop_val needs to be inserted
23016                'IF ( '
23017             || 'cz_pb_mgr.mm_v_ht_sync_ps_propval.EXISTS(cz_pb_mgr.v_prop_vals_prop_ref(i))'
23018             || ' '
23019             || 'AND ( '
23020             || ' '
23021             || 'cz_pb_mgr.v_prop_vals_inherited_flag_ref(i) <> ''1'' '
23022             || ' '
23023             || 'OR'
23024             || ' '
23025             || 'cz_pb_mgr.v_prop_vals_valuesource_ref(i) = '
23026             || ''''
23027             || cz_pb_mgr.prop_valuesource_psvalue
23028             || ''''
23029             || ' '
23030             || ')'
23031             || ' '
23032             || ') THEN'
23033             || ' '
23034             ||
23035                -- we always recreate ps nodes, so there is no issue there
23036                'cz_pb_mgr.v_propval_node_id    := cz_pb_mgr.v_prop_vals_node_ref(i);'
23037             || ' '
23038             ||
23039                -- the key thing here is to ensure that the target property id gets in, they have already been synchronized earlier
23040                -- in mm_sync_properties
23041                '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));'
23042             || ' '
23043             || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
23044             || ' '
23045             || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.mm_v_ht_sync_all_prop_val_num(i);'
23046             || ' '
23047             || 'INSERT INTO cz_ps_prop_vals'
23048             || cz_pb_mgr.v_db_link
23049             || '('
23050             || ' '
23051             || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
23052             || ' '
23053             || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
23054             || ' '
23055             || ' ''0'',cz_pb_mgr.v_propval_data_num_value);'
23056             || ' '
23057             || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
23058             || ' '
23059             || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
23060             || ' '
23061             || 'END IF;'
23062             || ' '
23063             || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
23064             || ' '
23065             || 'END IF;'
23069             || 'END;';
23066             || ' '
23067             || 'END LOOP;'
23068             || ' '
23070 
23071          EXECUTE IMMEDIATE l_sql_str;
23072       END IF;
23073 
23074       COMMIT;
23075    EXCEPTION
23076       WHEN OTHERS
23077       THEN
23078          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
23079          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
23080          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23081          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23082          RAISE;
23083    END mm_migrate_into_ps_prop_vals;
23084 
23085 ------------------------------------------------------------------------------------------------
23086    FUNCTION mm_sync_eff_sets(old_eff_set_id NUMBER, new_eff_set_id NUMBER)
23087       RETURN NUMBER
23088    AS
23089       rec_count PLS_INTEGER := 0;
23090       s_effset_id NUMBER := NULL;
23091       t_effset_id NUMBER := NULL;
23092    BEGIN
23093 
23094       /* don't go to through the link everytime.  if you can get the
23095          effectivity set through memory, use it.  Only go to the link
23096          if it is not collected already */
23097 
23098       IF (NOT mm_v_ht_eff_set_tbl_s.EXISTS(old_eff_set_id)) THEN
23099         mm_get_ifexists_on_target(old_eff_set_id, t_effset_id, 'EFF_SETS');
23100         IF (t_effset_id IS NOT NULL) THEN
23101           mm_v_ht_eff_set_tbl_s(old_eff_set_id) := t_effset_id;
23102         END IF;
23103       ELSE
23104          t_effset_id := mm_v_ht_eff_set_tbl_s(old_eff_set_id);
23105       END IF;
23106 
23107 
23108       --we will maintain an array of old versus new effectivity set id
23109       --when we migrate the rule sequences, if a particular rule in a rule sequence has
23110       --an effectivity set id that already exists on the target, we will disable the
23111       --the rule sequence.
23112       IF (t_effset_id IS NOT NULL)
23113       THEN
23114          mm_v_ht_eff_set_tbl_t(t_effset_id) := t_effset_id;
23115          RETURN t_effset_id;
23116       END IF;
23117 
23118       RETURN NULL;
23119    END mm_sync_eff_sets;
23120 
23121 ------------------------------------------------------------------------------------------------
23122    PROCEDURE mm_sync_archives
23123    AS
23124       rec_count PLS_INTEGER := 0;
23125       s_archive_id NUMBER;
23126       t_archive_id NUMBER;
23127       t_new_archive_id NUMBER;
23128    BEGIN
23129 /*check if an Archive already exists with the same name,
23130 * if it does, add to the table mm_v_ht_archive_tbl(old)
23131 * else, create a new sequence number and add to mm_v_ht_archive_tbl(old)
23132 */
23133       cz_pb_mgr.g_archives_mig_idx_ref.DELETE;
23134       cz_pb_mgr.mm_v_ht_sync_archives.DELETE;
23135       cz_pb_mgr.g_archives_obj_type.DELETE;
23136       cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
23137       cz_pb_mgr.g_archives_old_tbl.DELETE;
23138 
23139     IF (cz_pb_mgr.g_archives_new_ref.COUNT > 0) THEN
23140      FOR i IN cz_pb_mgr.g_archives_new_ref.FIRST .. cz_pb_mgr.g_archives_new_ref.LAST
23141       LOOP
23142          s_archive_id := cz_pb_mgr.g_archives_old_ref(i);
23143          t_new_archive_id := cz_pb_mgr.g_archives_new_ref(i);
23144 
23145          IF (NOT g_archives_mig_idx_ref.EXISTS(s_archive_id)) THEN
23146            mm_get_ifexists_on_target(s_archive_id, t_archive_id, 'ARCHIVE');
23147            IF (t_archive_id IS NULL) THEN
23148               rec_count := rec_count + 1;
23149               cz_pb_mgr.mm_v_ht_sync_archives(rec_count) := t_new_archive_id;
23150               cz_pb_mgr.g_archives_obj_type(rec_count) := 'ARC';
23151               cz_pb_mgr.g_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
23152               cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_new_archive_id;
23153               cz_pb_mgr.g_archives_old_tbl(rec_count) := s_archive_id;
23154            ELSE
23155               cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_archive_id;
23156            END IF;
23157         END IF;
23158       END LOOP;
23159      END IF;
23160    END mm_sync_archives;
23161 
23162 ------------------------------------------------------------------------------------------------
23163 
23164 ------------------------------------------------------------------------------------------------
23165    PROCEDURE mm_insert_archives_for_pb
23166    IS
23167       rec_count PLS_INTEGER := 0;
23168       plsql_table_list cz_pb_mgr.col_plsql_table_list;
23169    BEGIN
23170       plsql_table_list.DELETE;
23171       rec_count := 1;
23172       plsql_table_list(rec_count).col_name := 'archive_id';
23173       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_new_ref';
23174 
23175       IF (cz_pb_mgr.g_log_timing = publication_timing)
23176       THEN
23177          log_timing_message('start insert_into_table cz_archives');
23178       END IF;
23179 
23180       insert_into_table('cz_archives'
23181                        ,'archive_id'
23182                        ,cz_pb_mgr.v_db_link
23183                        ,plsql_table_list
23184                        ,'cz_pb_mgr.g_archives_old_ref'
23185                        ,cz_pb_mgr.g_archives_old_ref
23186                        );
23187       resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
23188       plsql_table_list.DELETE;
23189       rec_count := 1;
23190       plsql_table_list(rec_count).col_name := 'archive_id';
23194       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
23191       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
23192       rec_count := rec_count + 1;
23193       plsql_table_list(rec_count).col_name := 'devl_project_id';
23195       insert_into_table('cz_archive_refs'
23196                        ,'archive_id'
23197                        ,'devl_project_id'
23198                        ,cz_pb_mgr.v_db_link
23199                        ,plsql_table_list
23200                        ,'cz_pb_mgr.g_archive_id_old_ref'
23201                        ,'cz_pb_mgr.g_devl_proj_old_ref'
23202                        ,cz_pb_mgr.g_archive_id_old_ref
23203                        ,cz_pb_mgr.g_devl_proj_old_ref
23204                        );
23205    END mm_insert_archives_for_pb;
23206 
23207 ------------------------------------------------------------------------------------------------
23208    PROCEDURE mm_insert_archives
23209    IS
23210       rec_count PLS_INTEGER := 0;
23211       plsql_table_list cz_pb_mgr.col_plsql_table_list;
23212       mm_source_table_list cz_pb_mgr.col_plsql_table_list;
23213       mm_rec_count NUMBER := 0;
23214    BEGIN
23215       IF (cz_pb_mgr.mm_v_ht_sync_archives.COUNT > 0)
23216       THEN
23217          plsql_table_list.DELETE;
23218          rec_count := 1;
23219          plsql_table_list(rec_count).col_name := 'archive_id';
23220          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
23221 
23222          IF (cz_pb_mgr.g_log_timing = publication_timing)
23223          THEN
23224             log_timing_message('start insert_into_table cz_archives');
23225          END IF;
23226 
23227          insert_into_table('cz_archives'
23228                           ,'archive_id'
23229                           ,cz_pb_mgr.v_db_link
23230                           ,plsql_table_list
23231                           ,'cz_pb_mgr.g_archives_old_tbl'
23232                           ,cz_pb_mgr.g_archives_old_tbl
23233                           );
23234          ----------begin insert into cz_rp_entries----------------
23235          plsql_table_list.DELETE;
23236          rec_count := 1;
23237          plsql_table_list(rec_count).col_name := 'object_id';
23238          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
23239          rec_count := rec_count + 1;
23240          plsql_table_list(rec_count).col_name := 'object_type';
23241          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_obj_type';
23242          rec_count := rec_count + 1;
23243          plsql_table_list(rec_count).col_name := 'enclosing_folder';
23244          plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
23245          insert_into_rp_entries('cz_rp_entries'
23246                                ,'object_id'
23247                                ,'object_type'
23248                                ,cz_pb_mgr.v_db_link
23249                                ,plsql_table_list
23250                                ,'cz_pb_mgr.g_archives_old_tbl'
23251                                ,'cz_pb_mgr.g_archives_obj_type'
23252                                ,cz_pb_mgr.g_archives_old_tbl
23253                                ,cz_pb_mgr.g_archives_obj_type
23254                                );
23255       ----------end insert into cz_rp_entries----------------
23256       END IF;
23257 
23258       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');
23259       -- Need to use the right array to resolve the devl project ids.
23260       resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
23261       plsql_table_list.DELETE;
23262       rec_count := 1;
23263       plsql_table_list(rec_count).col_name := 'archive_id';
23264       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
23265       rec_count := rec_count + 1;
23266       plsql_table_list(rec_count).col_name := 'devl_project_id';
23267       plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
23268       insert_into_table('cz_archive_refs'
23269                        ,'archive_id'
23270                        ,'devl_project_id'
23271                        ,cz_pb_mgr.v_db_link
23272                        ,plsql_table_list
23273                        ,'cz_pb_mgr.g_archive_id_old_ref'
23274                        ,'cz_pb_mgr.g_devl_proj_old_ref'
23275                        ,cz_pb_mgr.g_archive_id_old_ref
23276                        ,cz_pb_mgr.g_devl_proj_old_ref
23277                        );
23278    END mm_insert_archives;
23279 
23280 ------------------------------------------------------------------------------------------------
23281 ------------------------------------------------------------------------------------------------
23282 --procedure to debug long strings
23283 --does nothing outside of break the long str into
23284 --smaller strings so it is visible in the debugger
23285    PROCEDURE mm_break_long_str(v_inp_str IN VARCHAR2)
23286    AS
23287       v_temp_str VARCHAR2(255);
23288    BEGIN
23289       v_temp_str := SUBSTR(v_inp_str, 1, 250);
23290       v_temp_str := SUBSTR(v_inp_str, 251, 250);
23291       v_temp_str := SUBSTR(v_inp_str, 501, 250);
23292       v_temp_str := SUBSTR(v_inp_str, 751, 250);
23293       v_temp_str := SUBSTR(v_inp_str, 1001, 250);
23294       v_temp_str := SUBSTR(v_inp_str, 1251, 250);
23295       v_temp_str := SUBSTR(v_inp_str, 1501, 250);
23296       v_temp_str := SUBSTR(v_inp_str, 1751, 250);
23297       v_temp_str := SUBSTR(v_inp_str, 2001, 250);
23301       v_temp_str := SUBSTR(v_inp_str, 3001, 250);
23298       v_temp_str := SUBSTR(v_inp_str, 2251, 250);
23299       v_temp_str := SUBSTR(v_inp_str, 2501, 250);
23300       v_temp_str := SUBSTR(v_inp_str, 2751, 250);
23302       v_temp_str := SUBSTR(v_inp_str, 3251, 250);
23303       v_temp_str := SUBSTR(v_inp_str, 3501, 250);
23304       v_temp_str := SUBSTR(v_inp_str, 3751, 250);
23305       v_temp_str := SUBSTR(v_inp_str, 4001, 250);
23306    END mm_break_long_str;
23307 ------------------------------------------------------------------------------------------------
23308    PROCEDURE mm_resync_ps_items
23309    AS
23310    BEGIN
23311       FOR i IN 1 .. v_ps_item_id_tbl.COUNT
23312       LOOP
23313          IF (mm_v_ht_sync_items.EXISTS(v_ps_item_id_tbl(i)))
23314          THEN
23315             mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_items(v_ps_item_id_tbl(i));
23316          ELSIF(mm_v_ht_sync_exist_items.EXISTS(v_ps_item_id_tbl(i)))
23317          THEN
23318             mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_exist_items(v_ps_item_id_tbl(i));
23319          ELSE
23320             mm_v_ps_item_id_tbl(i) := v_ps_item_id_tbl(i);
23321          END IF;
23322       END LOOP;
23323    END;
23324 ------------------------------------------------------------------------------------------------
23325    PROCEDURE mm_resolve_ids(
23326       array_to_resolve IN cz_pb_mgr.t_ref
23327      ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
23328      ,resolving_id IN VARCHAR2
23329      ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
23330      ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
23331    )
23332    IS
23333       resolved_count NUMBER := 0;
23334    BEGIN
23335       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23336       THEN
23337          IF (array_to_resolve.COUNT > 0)
23338          THEN
23339             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23340             LOOP
23341                BEGIN
23342                   IF (array_to_resolve(j) IS NOT NULL)
23343                   THEN
23344                      resolved_count := resolved_count + 1;
23345                      resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23346                      source_array(resolved_count) := array_to_resolve(j);
23347                   END IF;
23348                EXCEPTION
23349                   WHEN NO_DATA_FOUND
23350                   THEN
23351                      resolved_count := resolved_count - 1;
23352                END;
23353             END LOOP;
23354          END IF;
23355       END IF;
23356    EXCEPTION
23357       WHEN OTHERS
23358       THEN
23359          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23360          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23361          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23362          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23363    END mm_resolve_ids;
23364 ------------------------------------------------------------------------------------------------
23365    PROCEDURE mm_resolve_orig_refs(
23366       array_to_resolve IN cz_pb_mgr.t_ref
23367      ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type
23368      ,resolving_id IN VARCHAR2
23369      ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
23370      ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
23371    )
23372    IS
23373       resolved_count NUMBER := 0;
23374    BEGIN
23375       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23376       THEN
23377          IF (array_to_resolve.COUNT > 0)
23378          THEN
23379             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23380             LOOP
23381                BEGIN
23382                   IF (array_to_resolve(j) IS NOT NULL)
23383                   THEN
23384                      resolved_count := resolved_count + 1;
23385                      resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23386                      source_array(resolved_count) := array_to_resolve(j);
23387                   END IF;
23388                EXCEPTION
23389                   WHEN NO_DATA_FOUND
23390                   THEN
23391                      resolved_count := resolved_count - 1;
23392                END;
23393             END LOOP;
23394          END IF;
23395       END IF;
23396    EXCEPTION
23397       WHEN OTHERS
23398       THEN
23399          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23400          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23401          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23402          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23403    END mm_resolve_orig_refs;
23404 ------------------------------------------------------------------------------------------------
23405    PROCEDURE mm_resolve_ids_w_rp_entries(
23406       array_to_resolve IN cz_pb_mgr.t_ref
23407      ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
23408      ,object_type IN VARCHAR2
23409      ,target_folder IN NUMBER
23410      ,resolving_id IN VARCHAR2
23411      ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
23412      ,object_type_array IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
23413      ,tgt_folder_array IN OUT NOCOPY cz_pb_mgr.t_ref
23414      ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
23415    )
23416    IS
23417       resolved_count NUMBER := 0;
23418       resolved_array_idx cz_pb_mgr.t_ref_idx_vc2;
23419 
23420    BEGIN
23421       resolved_array_idx.DELETE;
23425          THEN
23422       IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23423       THEN
23424          IF (array_to_resolve.COUNT > 0)
23426             FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23427             LOOP
23428                BEGIN
23429                   IF (array_to_resolve(j) IS NOT NULL)
23430                   THEN
23431                      IF NOT (resolved_array_idx.EXISTS(array_to_resolve(j))) THEN
23432                          resolved_count := resolved_count + 1;
23433                          resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23434                          resolved_array_idx(array_to_resolve(j)) := array_of_new_keys(array_to_resolve(j));
23435                          object_type_array(resolved_count) := object_type;
23436                          tgt_folder_array(resolved_count) := target_folder;
23437                          source_array(resolved_count) := array_to_resolve(j);
23438                      END IF;
23439                   END IF;
23440                EXCEPTION
23441                   WHEN NO_DATA_FOUND
23442                   THEN
23443                      resolved_count := resolved_count - 1;
23444                END;
23445             END LOOP;
23446          END IF;
23447       END IF;
23448    EXCEPTION
23449       WHEN OTHERS
23450       THEN
23451          cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23452          cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23453          cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23454          cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23455    END mm_resolve_ids_w_rp_entries;
23456 ------------------------------------------------------------------------------------------------
23457 --if a rule_seq has a rule whose effectivity_set_id already
23458 --exists on the target, then set the rule effectivity to be
23459 --never effective for all the rules in that rule sequence
23460    PROCEDURE mm_resolve_rule_seq_effsetid
23461    AS
23462       b_update_rules BOOLEAN := FALSE;
23463       new_folder_id NUMBER;
23464       l_sql_string VARCHAR2(2000);
23465       remote_effs_cv ref_cursor;
23466       remote_rule_seq_name_cv ref_cursor;
23467       l_effecivity_set_id NUMBER;
23468       l_rule_folder_name cz_rule_folders.NAME%TYPE;
23469       l_rule_name cz_rules.NAME%TYPE;
23470    BEGIN
23471 --all the rule sequences have been accumulated here
23472      IF (mm_v_tbl_rule_seq.COUNT > 0) THEN
23473       FOR rule_seq IN mm_v_tbl_rule_seq.FIRST .. mm_v_tbl_rule_seq.LAST
23474       LOOP
23475          --get the new folder id from the hash table
23476          new_folder_id := v_cz_folders_id_idx_ref(mm_v_tbl_rule_seq(rule_seq));
23477          --get all the effectivity_set_ids for the rules in that rule sequence
23478          l_sql_string :=
23479                'SELECT effectivity_set_id, name'
23480             || ' '
23481             || 'FROM cz_rules'
23482             || cz_pb_mgr.v_db_link
23483             || ' '
23484             || 'WHERE rule_folder_id = :1'
23485             || ' '
23486             || '  AND effectivity_set_id is not null'
23487             || ' '
23488             || '  AND deleted_flag = ''0'' ';
23489          b_update_rules := FALSE;
23490 
23491          OPEN remote_effs_cv FOR l_sql_string USING new_folder_id;
23492 
23493          LOOP
23494             FETCH remote_effs_cv
23495              INTO l_effecivity_set_id, l_rule_name;
23496 
23497             EXIT WHEN remote_effs_cv%NOTFOUND;
23498 
23499             IF (mm_v_ht_eff_set_tbl_t.EXISTS(l_effecivity_set_id))
23500             THEN
23501                b_update_rules := TRUE;
23502                EXIT;
23503             END IF;
23504          END LOOP;
23505 
23506          CLOSE remote_effs_cv;
23507 
23508          --update the rules to be never effective
23509          IF b_update_rules
23510          THEN
23511             --log the event
23512             l_sql_string :=
23513                   'SELECT name'
23514                || ' '
23515                || 'FROM cz_rule_folders'
23516                || cz_pb_mgr.v_db_link
23517                || ' '
23518                || 'WHERE rule_folder_id = :1'
23519                || ' '
23520                || 'AND deleted_flag = ''0'' ';
23521 
23522             OPEN remote_rule_seq_name_cv FOR l_sql_string USING new_folder_id;
23523 
23524             FETCH remote_rule_seq_name_cv
23525              INTO l_rule_folder_name;
23526 
23527             CLOSE remote_rule_seq_name_cv;
23528 
23529             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);
23530             log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_resolve_rule_seq_effsetid', -1);
23531             l_sql_string :=
23532                   'UPDATE cz_rules'
23533                || cz_pb_mgr.v_db_link
23534                || ' '
23535                || 'SET effective_from =  :1'
23536                || ', '
23537                || '    effective_until = :2'
23538                || ','
23539                || '    effectivity_set_id = NULL'
23540                || ' '
23541                || 'WHERE rule_folder_id ='
23542                || new_folder_id
23543                || ' '
23544                || '  AND deleted_flag = ''0'' ';
23545 
23546             EXECUTE IMMEDIATE l_sql_string
23547                         USING cz_utils.epoch_end, cz_utils.epoch_begin;
23548          END IF;
23552 ------------------------------------------------------------------------------------------------
23549       END LOOP;
23550      END IF;
23551    END mm_resolve_rule_seq_effsetid;
23553 /*
23554 * Bug 5516478
23555 * On migrating a model to a remote server, if there are BOM models involved,
23556 * CZ_XFR_PROJECT_BILLS are also migrated.  However, the column SOURCE_SERVER
23557 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
23558 * migration target.  Currently it was being copied from the source to the
23559 * target.  In order to do this we need to query CZ_SERVERS in the migration
23560 * target to get the SERVER_LOCAL_ID.
23561 */
23562 FUNCTION getRemoteImportServer(x_import_server_on_local IN OUT NOCOPY cz_servers.server_local_id%TYPE) RETURN NUMBER
23563    AS
23564 
23565      l_sql_string        VARCHAR2(2000);
23566      l_remote_server_id  cz_servers.server_local_id%TYPE;
23567      l_hostname          cz_servers.hostname%TYPE;
23568      l_db_listener_port  cz_servers.db_listener_port%TYPE;
23569      l_instance_name     cz_servers.instance_name%TYPE;
23570 
23571 BEGIN
23572 
23573      l_sql_string :=  'SELECT server_local_id, hostname, db_listener_port, instance_name' ||
23574                       '  FROM cz_servers' || cz_pb_mgr.v_db_link ||
23575                       ' WHERE import_enabled = 1';
23576 
23577      BEGIN
23578 
23579        EXECUTE IMMEDIATE l_sql_string INTO l_remote_server_id, l_hostname, l_db_listener_port, l_instance_name;
23580 
23581      EXCEPTION
23582        WHEN OTHERS THEN
23583          --'Unable to resolve the import source server ID for the migration target.'
23584           cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_IMPORT_SERVER ');
23585           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23586           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23587           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23588          RAISE;
23589      END;
23590 
23591      --Now we need to identify a record in the local cz_servers that points to the target's import
23592      --source server. Per migration design, such record should exist.
23593      --We are not trying to detect the case when the target's import server is the migration source
23594      --itself - to do this we need to match the target's server record to the LOCAL record, but we
23595      --don't consistently populate instance parameters for the LOCAL record.
23596 
23597      l_db_listener_port := UPPER(LTRIM(RTRIM(l_db_listener_port)));
23598      l_hostname := UPPER(LTRIM(RTRIM(l_hostname)));
23599      l_instance_name := UPPER(LTRIM(RTRIM(l_instance_name)));
23600 
23601      x_import_server_on_local := NULL;
23602 
23603      IF(l_remote_server_id = 0)THEN
23604 
23605         --If the migration target import source is local, then it is the same as the target server.
23606 
23607         x_import_server_on_local := cz_pb_mgr.v_server_id;
23608      ELSE
23609 
23610        FOR c_server IN (SELECT server_local_id FROM cz_servers
23611                          WHERE UPPER(LTRIM(RTRIM(db_listener_port))) = l_db_listener_port
23612                            AND UPPER(LTRIM(RTRIM(hostname))) = l_hostname
23613                            AND UPPER(LTRIM(RTRIM(instance_name))) = l_instance_name)LOOP
23614 
23615          --The first matched instance will be used.
23616 
23617          x_import_server_on_local := c_server.server_local_id;
23618        END LOOP;
23619      END IF;
23620 
23621      IF(x_import_server_on_local IS NULL)THEN
23622 
23623           --The import source of the migration target instance is not defined as a remote server on the migration source instance.
23624           --Please create a link to hostname '%HOSTNAME', listener port %LISTENER, instance name '%INSTANCE' by running the
23625           --Define Remote Server and Enable Remote Server concurrent programs on the migration source instance.
23626 
23627           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);
23628           cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23629           cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23630           cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23631           RETURN -1;
23632      END IF;
23633 
23634      RETURN l_remote_server_id;
23635 END;
23636 ------------------------------------------------------------------------------------------------
23637 /*
23638 * Bug 5523268
23639 * THis function will check if there are any child models that
23640 * have changed.  At this point, we have considered only
23641 * UI Changes, but there may be a requirement to check
23642 * everything that happens in has_tobe_published.  We
23643 * need to revisit this at a later date.  We call
23644 * this for model migration in get_models_tobe_exported;
23645 */
23646 FUNCTION has_ui_inany_chld_mdl_changed(rootmodelid IN NUMBER) RETURN boolean IS
23647 
23648 v_models_tbl cz_pb_mgr.t_ref;
23649 v_last_update_date cz_ui_defs.last_update_date%TYPE;
23650 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
23651 curr_model_tbl cz_pb_mgr.t_ref;
23652 
23653 BEGIN
23654   get_source_models(rootmodelid,   v_models_tbl);
23655 
23656   /* do this only for child models
23657     * We iterate through the children and check if the UI has changed
23658     * for anything.  For model migration, the root will
23659     * ALWAYS be migrated.
23660     */
23661   FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
23662   LOOP
23666 
23663     curr_model_tbl(0) := v_models_tbl(i);
23664 
23665     IF(v_models_tbl(i) <> rootmodelid) THEN
23667       v_last_xfr_activity := get_mdl_last_xfr_activity(v_models_tbl(i),   cz_pb_mgr.v_server_id);
23668       IF cz_pb_mgr.v_server_id<>0 THEN
23669         get_source_uis(rootmodelid, curr_model_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
23670       END IF;
23671       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);
23672 
23673       IF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
23674         FOR j IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
23675         LOOP
23676           get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(j),   v_last_update_date);
23677 
23678           IF(v_last_xfr_activity IS NULL) THEN
23679             RETURN TRUE;
23680             ELSIF((v_last_xfr_activity IS NOT NULL)
23681              AND(v_last_update_date > v_last_xfr_activity)) THEN
23682               RETURN TRUE;
23683             END IF;
23684 
23685           END LOOP;
23686         END IF;
23687 
23688       END IF;
23689 
23690     END LOOP;
23691 
23692     RETURN FALSE;
23693 
23694   EXCEPTION
23695   WHEN others THEN
23696     cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR',   'SQLERRM',   sqlerrm);
23697     cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,   'cz_pb_mgr.HAS_TOBE_PUBLISHED',   SQLCODE);
23698     cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message,   1,   2000)));
23699     RAISE;
23700   END has_ui_inany_chld_mdl_changed;
23701 ------------------------------------------------------------------------------------------------
23702 /* Bug 5523268
23703 * this routine will check for the last transfer activity.
23704 * There is already a routine 'get_last_xfr_activity', but
23705 * it does check the transfer activity of the ROOT MODEL and
23706 * NOT the current child model.  So we need to check if the
23707 * CHILD was transfered before during migration.
23708 */
23709   FUNCTION get_mdl_last_xfr_activity(
23710       p_model_id IN cz_model_publications.model_id%TYPE
23711      ,p_server_id IN cz_model_publications.server_id%TYPE
23712 
23713    ) RETURN DATE
23714    AS
23715    x_last_xfr_activity DATE := NULL;
23716    BEGIN
23717 
23718          SELECT last_xfr_activity
23719            INTO x_last_xfr_activity
23720            FROM cz_pb_model_exports
23721           WHERE cz_pb_model_exports.export_id =
23722                    (SELECT MAX(export_id)
23723                       FROM cz_pb_model_exports z
23724                      WHERE z.model_id = p_model_id
23725                        AND z.server_id = p_server_id
23726                        AND z.status = 'OK'
23727                        AND z.publication_id IN(
23728                               SELECT publication_id
23729                                 FROM cz_model_publications
23730                                WHERE export_status IN('OK', 'PUP')
23731                                  AND server_id = p_server_id
23732                                  AND publication_mode = cz_model_migration_pvt.mode_migration));
23733 
23734          RETURN x_last_xfr_activity;
23735 
23736 
23737  EXCEPTION
23738       WHEN OTHERS
23739       THEN
23740 
23741          RETURN x_last_xfr_activity;
23742  END get_mdl_last_xfr_activity;
23743 ------------------------------------------------------------------------------------------------
23744 BEGIN
23745    get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
23746 END cz_pb_mgr;