1104:
1105: begin
1106:
1107: -- set up data output
1108: hr_utility.set_trace_options('TRACE_DEST:DBMS_OUTPUT');
1109: hr_utility.trace_on;
1110:
1111: -- get schema for PER
1112: l_schema := get_schema('PER');
1105: begin
1106:
1107: -- set up data output
1108: hr_utility.set_trace_options('TRACE_DEST:DBMS_OUTPUT');
1109: hr_utility.trace_on;
1110:
1111: -- get schema for PER
1112: l_schema := get_schema('PER');
1113:
1136: close csr_database;
1137:
1138:
1139: -- display information about the migration
1140: hr_utility.trace(l_cr);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1137:
1138:
1139: -- display information about the migration
1140: hr_utility.trace(l_cr);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1138:
1139: -- display information about the migration
1140: hr_utility.trace(l_cr);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1139: -- display information about the migration
1140: hr_utility.trace(l_cr);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1140: hr_utility.trace(l_cr);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1141: hr_utility.trace('HR Data Migrator');
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1149: hr_utility.trace(l_cr);
1142: hr_utility.trace(l_cr);
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1149: hr_utility.trace(l_cr);
1150:
1143: hr_utility.trace('Migration details');
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1149: hr_utility.trace(l_cr);
1150:
1151:
1144: hr_utility.trace('Type : ' || l_migration_type_meaning);
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1149: hr_utility.trace(l_cr);
1150:
1151:
1152: -- do some validation
1145: hr_utility.trace('Source : ' || l_source);
1146: hr_utility.trace('Destination : ' || l_destination);
1147: hr_utility.trace('Business group : ' || l_business_group_name);
1148: hr_utility.trace('Start Date : ' || l_migration_start_date);
1149: hr_utility.trace(l_cr);
1150:
1151:
1152: -- do some validation
1153: hr_utility.trace('Validating migration...');
1149: hr_utility.trace(l_cr);
1150:
1151:
1152: -- do some validation
1153: hr_utility.trace('Validating migration...');
1154: hr_utility.trace(l_cr);
1155:
1156: -- make sure we are on the destination database
1157: if (upper(l_destination) <> l_database_location) then
1150:
1151:
1152: -- do some validation
1153: hr_utility.trace('Validating migration...');
1154: hr_utility.trace(l_cr);
1155:
1156: -- make sure we are on the destination database
1157: if (upper(l_destination) <> l_database_location) then
1158: hr_utility.trace('Invalid migration :');
1154: hr_utility.trace(l_cr);
1155:
1156: -- make sure we are on the destination database
1157: if (upper(l_destination) <> l_database_location) then
1158: hr_utility.trace('Invalid migration :');
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1155:
1156: -- make sure we are on the destination database
1157: if (upper(l_destination) <> l_database_location) then
1158: hr_utility.trace('Invalid migration :');
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1156: -- make sure we are on the destination database
1157: if (upper(l_destination) <> l_database_location) then
1158: hr_utility.trace('Invalid migration :');
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1164: hr_utility.trace(l_cr);
1157: if (upper(l_destination) <> l_database_location) then
1158: hr_utility.trace('Invalid migration :');
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1164: hr_utility.trace(l_cr);
1165: raise e_fatal_error;
1158: hr_utility.trace('Invalid migration :');
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1164: hr_utility.trace(l_cr);
1165: raise e_fatal_error;
1166: end if;
1159: hr_utility.trace(l_cr);
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1164: hr_utility.trace(l_cr);
1165: raise e_fatal_error;
1166: end if;
1167:
1160: hr_utility.trace('This is not the destination database.');
1161: hr_utility.trace('Current database : ' || l_database_location);
1162: hr_utility.trace('Destination database : ' || l_destination);
1163: hr_utility.trace('This migration can not proceed on this database.');
1164: hr_utility.trace(l_cr);
1165: raise e_fatal_error;
1166: end if;
1167:
1168:
1174:
1175: if (l_exist_bgroup_id is null) and
1176: (l_migration_type <> 'FW') then
1177: -- For a non-FW migration the business group must exist
1178: hr_utility.trace('Invalid migration :');
1179: hr_utility.trace(l_cr);
1180: hr_utility.trace('For a non-FW migration the business group must exist.');
1181: hr_utility.trace('This migration can not proceed.');
1182: hr_utility.trace(l_cr);
1175: if (l_exist_bgroup_id is null) and
1176: (l_migration_type <> 'FW') then
1177: -- For a non-FW migration the business group must exist
1178: hr_utility.trace('Invalid migration :');
1179: hr_utility.trace(l_cr);
1180: hr_utility.trace('For a non-FW migration the business group must exist.');
1181: hr_utility.trace('This migration can not proceed.');
1182: hr_utility.trace(l_cr);
1183: raise e_fatal_error;
1176: (l_migration_type <> 'FW') then
1177: -- For a non-FW migration the business group must exist
1178: hr_utility.trace('Invalid migration :');
1179: hr_utility.trace(l_cr);
1180: hr_utility.trace('For a non-FW migration the business group must exist.');
1181: hr_utility.trace('This migration can not proceed.');
1182: hr_utility.trace(l_cr);
1183: raise e_fatal_error;
1184: end if;
1177: -- For a non-FW migration the business group must exist
1178: hr_utility.trace('Invalid migration :');
1179: hr_utility.trace(l_cr);
1180: hr_utility.trace('For a non-FW migration the business group must exist.');
1181: hr_utility.trace('This migration can not proceed.');
1182: hr_utility.trace(l_cr);
1183: raise e_fatal_error;
1184: end if;
1185:
1178: hr_utility.trace('Invalid migration :');
1179: hr_utility.trace(l_cr);
1180: hr_utility.trace('For a non-FW migration the business group must exist.');
1181: hr_utility.trace('This migration can not proceed.');
1182: hr_utility.trace(l_cr);
1183: raise e_fatal_error;
1184: end if;
1185:
1186: if (l_exist_bgroup_id is not null) and
1185:
1186: if (l_exist_bgroup_id is not null) and
1187: (l_migration_type = 'FW') then
1188: -- For an FW migration the business group must not exist
1189: hr_utility.trace('Invalid migration :');
1190: hr_utility.trace(l_cr);
1191: hr_utility.trace('For an FW migration the business group must not exist.');
1192: hr_utility.trace('This migration can not proceed.');
1193: hr_utility.trace(l_cr);
1186: if (l_exist_bgroup_id is not null) and
1187: (l_migration_type = 'FW') then
1188: -- For an FW migration the business group must not exist
1189: hr_utility.trace('Invalid migration :');
1190: hr_utility.trace(l_cr);
1191: hr_utility.trace('For an FW migration the business group must not exist.');
1192: hr_utility.trace('This migration can not proceed.');
1193: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1187: (l_migration_type = 'FW') then
1188: -- For an FW migration the business group must not exist
1189: hr_utility.trace('Invalid migration :');
1190: hr_utility.trace(l_cr);
1191: hr_utility.trace('For an FW migration the business group must not exist.');
1192: hr_utility.trace('This migration can not proceed.');
1193: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1195: end if;
1188: -- For an FW migration the business group must not exist
1189: hr_utility.trace('Invalid migration :');
1190: hr_utility.trace(l_cr);
1191: hr_utility.trace('For an FW migration the business group must not exist.');
1192: hr_utility.trace('This migration can not proceed.');
1193: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1195: end if;
1196:
1189: hr_utility.trace('Invalid migration :');
1190: hr_utility.trace(l_cr);
1191: hr_utility.trace('For an FW migration the business group must not exist.');
1192: hr_utility.trace('This migration can not proceed.');
1193: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1195: end if;
1196:
1197: hr_utility.trace('Migration passed validation checks.');
1193: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1195: end if;
1196:
1197: hr_utility.trace('Migration passed validation checks.');
1198: hr_utility.trace(l_cr);
1199:
1200: hr_utility.trace('Importing migration details...');
1201: hr_utility.trace(l_cr);
1194: raise e_fatal_error;
1195: end if;
1196:
1197: hr_utility.trace('Migration passed validation checks.');
1198: hr_utility.trace(l_cr);
1199:
1200: hr_utility.trace('Importing migration details...');
1201: hr_utility.trace(l_cr);
1202: hr_utility.trace(' Truncating hr_dm_dt_deletes');
1196:
1197: hr_utility.trace('Migration passed validation checks.');
1198: hr_utility.trace(l_cr);
1199:
1200: hr_utility.trace('Importing migration details...');
1201: hr_utility.trace(l_cr);
1202: hr_utility.trace(' Truncating hr_dm_dt_deletes');
1203: hr_dm_library.run_sql('truncate table ' || l_schema ||
1204: '.hr_dm_dt_deletes');
1197: hr_utility.trace('Migration passed validation checks.');
1198: hr_utility.trace(l_cr);
1199:
1200: hr_utility.trace('Importing migration details...');
1201: hr_utility.trace(l_cr);
1202: hr_utility.trace(' Truncating hr_dm_dt_deletes');
1203: hr_dm_library.run_sql('truncate table ' || l_schema ||
1204: '.hr_dm_dt_deletes');
1205:
1198: hr_utility.trace(l_cr);
1199:
1200: hr_utility.trace('Importing migration details...');
1201: hr_utility.trace(l_cr);
1202: hr_utility.trace(' Truncating hr_dm_dt_deletes');
1203: hr_dm_library.run_sql('truncate table ' || l_schema ||
1204: '.hr_dm_dt_deletes');
1205:
1206: hr_utility.trace(' Setting g_data_migrator_mode to Y');
1202: hr_utility.trace(' Truncating hr_dm_dt_deletes');
1203: hr_dm_library.run_sql('truncate table ' || l_schema ||
1204: '.hr_dm_dt_deletes');
1205:
1206: hr_utility.trace(' Setting g_data_migrator_mode to Y');
1207: hr_general.g_data_migrator_mode:='Y';
1208:
1209:
1210: -- import API details only if we are using datapump
1214: close csr_phase_rule;
1215:
1216: if (l_up_phase_used = 'UP') then
1217:
1218: hr_utility.trace('Importing API details...');
1219: hr_utility.trace('(Errors may be seen if contraint does not exist).');
1220: hr_utility.trace(l_cr);
1221:
1222: -- disable constraint on HR_PUMP_BATCH_LINES
1215:
1216: if (l_up_phase_used = 'UP') then
1217:
1218: hr_utility.trace('Importing API details...');
1219: hr_utility.trace('(Errors may be seen if contraint does not exist).');
1220: hr_utility.trace(l_cr);
1221:
1222: -- disable constraint on HR_PUMP_BATCH_LINES
1223: -- so we can delete from HR_API_MODULES
1216: if (l_up_phase_used = 'UP') then
1217:
1218: hr_utility.trace('Importing API details...');
1219: hr_utility.trace('(Errors may be seen if contraint does not exist).');
1220: hr_utility.trace(l_cr);
1221:
1222: -- disable constraint on HR_PUMP_BATCH_LINES
1223: -- so we can delete from HR_API_MODULES
1224: hr_utility.trace(' Disabling constraint - HR_PUMP_BATCH_LINES_FK2');
1220: hr_utility.trace(l_cr);
1221:
1222: -- disable constraint on HR_PUMP_BATCH_LINES
1223: -- so we can delete from HR_API_MODULES
1224: hr_utility.trace(' Disabling constraint - HR_PUMP_BATCH_LINES_FK2');
1225: begin
1226: execute immediate 'alter table ' || l_schema ||
1227: '.HR_PUMP_BATCH_LINES ' ||
1228: ' disable constraint HR_PUMP_BATCH_LINES_FK2';
1227: '.HR_PUMP_BATCH_LINES ' ||
1228: ' disable constraint HR_PUMP_BATCH_LINES_FK2';
1229: exception
1230: when others then
1231: hr_utility.trace('Error whilst disabling constraint');
1232: hr_utility.trace(sqlerrm(sqlcode));
1233: end;
1234:
1235:
1228: ' disable constraint HR_PUMP_BATCH_LINES_FK2';
1229: exception
1230: when others then
1231: hr_utility.trace('Error whilst disabling constraint');
1232: hr_utility.trace(sqlerrm(sqlcode));
1233: end;
1234:
1235:
1236: hr_utility.trace(' Call delete hr_api_modules');
1232: hr_utility.trace(sqlerrm(sqlcode));
1233: end;
1234:
1235:
1236: hr_utility.trace(' Call delete hr_api_modules');
1237: -- delete data migrator packages rows from HR_API_MODULES.
1238: delete hr_api_modules
1239: where api_module_type = 'DM';
1240:
1238: delete hr_api_modules
1239: where api_module_type = 'DM';
1240:
1241:
1242: hr_utility.trace(' Updating hr_api_modules');
1243: -- Insert the rows into HR_API_MODULES tables from HR_DM_EXP_API_MODULES_V
1244: -- table.
1245:
1246: insert into hr_api_modules ( api_module_id
1268: from hr_dm_exp_api_modules_v;
1269:
1270:
1271: -- now re-enable constraint on HR_PUMP_BATCH_LINES
1272: hr_utility.trace('Enabling constraint - HR_PUMP_BATCH_LINES_FK2');
1273: begin
1274: execute immediate 'alter table ' || l_schema ||
1275: '.HR_PUMP_BATCH_LINES ' ||
1276: ' enable constraint HR_PUMP_BATCH_LINES_FK2';
1275: '.HR_PUMP_BATCH_LINES ' ||
1276: ' enable constraint HR_PUMP_BATCH_LINES_FK2';
1277: exception
1278: when others then
1279: hr_utility.trace('Error whilst enabling constraint');
1280: hr_utility.trace(sqlerrm(sqlcode));
1281: end;
1282:
1283: end if;
1276: ' enable constraint HR_PUMP_BATCH_LINES_FK2';
1277: exception
1278: when others then
1279: hr_utility.trace('Error whilst enabling constraint');
1280: hr_utility.trace(sqlerrm(sqlcode));
1281: end;
1282:
1283: end if;
1284:
1282:
1283: end if;
1284:
1285:
1286: hr_utility.trace('call insert into hr_dm_migrations');
1287: -- Insert the current migration row from HR_DM_MIGRATIONS tables
1288: -- into HR_DM_EXP_MIGRATIONS_V view based on HR_DM_EXP_IMPS table
1289:
1290: select hr_dm_migrations_s.nextval
1337: -- only perform for an FW migration
1338:
1339: if (l_migration_type = 'FW') then
1340:
1341: hr_utility.trace('Creating business group.');
1342:
1343: insert into HR_LOCATIONS_ALL (
1344: LOCATION_ID,
1345: LOCATION_CODE,
1772: -- copy the ben_batch_parameter info
1773: -- only perform for an FW or A migration
1774:
1775: if (l_migration_type in ('FW', 'A')) then
1776: hr_utility.trace('Importing BEN_BATCH_PARAMETER information.');
1777:
1778: open csr_batch_info;
1779: fetch csr_batch_info into
1780: l_batch_exe_cd,
1837: end if;
1838:
1839: commit;
1840:
1841: hr_utility.trace(l_cr);
1842: hr_utility.trace('Process completed sucessfully.');
1843: hr_utility.trace(l_cr);
1844:
1845:
1838:
1839: commit;
1840:
1841: hr_utility.trace(l_cr);
1842: hr_utility.trace('Process completed sucessfully.');
1843: hr_utility.trace(l_cr);
1844:
1845:
1846: -- stop user seeing the error when an invalid migration
1839: commit;
1840:
1841: hr_utility.trace(l_cr);
1842: hr_utility.trace('Process completed sucessfully.');
1843: hr_utility.trace(l_cr);
1844:
1845:
1846: -- stop user seeing the error when an invalid migration
1847: -- has been detected