DBA Data[Home] [Help]

APPS.HR_DM_UTILITY dependencies on HR_DM_UTILITY

Line 1: PACKAGE BODY hr_dm_utility AS

1: PACKAGE BODY hr_dm_utility AS
2: /* $Header: perdmutl.pkb 120.0 2005/05/31 17:15:29 appldev noship $ */
3:
4: /*--------------------------- GLOBAL VARIABLES ----------------------------*/
5:

Line 62: message('ROUT','entry:hr_dm_utility.number_of_threads', 5);

58: --
59: BEGIN
60: --
61:
62: message('ROUT','entry:hr_dm_utility.number_of_threads', 5);
63: message('PARA','(p_business_group_id - ' || p_business_group_id || ')', 10);
64:
65:
66: OPEN csr_threads;

Line 90: message('ROUT','exit:hr_dm_utility.number_of_threads', 25);

86:
87:
88: message('INFO','Found number of threads', 15);
89: message('SUMM','Found number of threads', 20);
90: message('ROUT','exit:hr_dm_utility.number_of_threads', 25);
91: message('PARA','(l_threads - ' || l_threads || ')', 30);
92:
93: RETURN(l_threads);
94:

Line 98: error(SQLCODE,'hr_dm_utility.number_of_threads','(none)','R');

94:
95: -- error handling
96: EXCEPTION
97: WHEN OTHERS THEN
98: error(SQLCODE,'hr_dm_utility.number_of_threads','(none)','R');
99: RAISE;
100:
101: --
102: END number_of_threads;

Line 145: message('ROUT','entry:hr_dm_utility.chunk_size', 5);

141: --
142: BEGIN
143: --
144:
145: message('ROUT','entry:hr_dm_utility.chunk_size', 5);
146: message('PARA','(p_business_group_id - ' || p_business_group_id || ')', 10);
147:
148:
149: OPEN csr_chunk_size;

Line 165: message('ROUT','exit:hr_dm_utility.chunk_size', 25);

161: END IF;
162:
163: message('INFO','Found chunk size', 15);
164: message('SUMM','Found chunk size', 20);
165: message('ROUT','exit:hr_dm_utility.chunk_size', 25);
166: message('PARA','(l_chunk_size - ' || l_chunk_size || ')', 30);
167:
168: RETURN(l_chunk_size);
169:

Line 173: error(SQLCODE,'hr_dm_utility.chunk_size','(none)','R');

169:
170: -- error handling
171: EXCEPTION
172: WHEN OTHERS THEN
173: error(SQLCODE,'hr_dm_utility.chunk_size','(none)','R');
174: RAISE;
175:
176: --
177: END chunk_size;

Line 220: message('ROUT','entry:hr_dm_utility.get_phase_status', 5);

216: --
217: BEGIN
218: --
219:
220: message('ROUT','entry:hr_dm_utility.get_phase_status', 5);
221: message('PARA','(p_phase - ' || p_phase ||
222: ')(p_migration_id - ' || p_migration_id || ')', 10);
223:
224: OPEN csr_status;

Line 237: message('ROUT','exit:hr_dm_utility.get_phase_status', 25);

233:
234:
235: message('INFO','Find Phase Status', 15);
236: message('SUMM','Find Phase Status', 20);
237: message('ROUT','exit:hr_dm_utility.get_phase_status', 25);
238: message('PARA','(l_phase_status - ' || l_phase_status || ')', 30);
239:
240: RETURN(l_phase_status);
241:

Line 245: error(SQLCODE,'hr_dm_utility.get_phase_status','(none)','R');

241:
242: -- error handling
243: EXCEPTION
244: WHEN OTHERS THEN
245: error(SQLCODE,'hr_dm_utility.get_phase_status','(none)','R');
246: RAISE;
247:
248: --
249: END get_phase_status;

Line 291: message('ROUT','entry:hr_dm_utility.get_phase_id', 5);

287: --
288: BEGIN
289: --
290:
291: message('ROUT','entry:hr_dm_utility.get_phase_id', 5);
292: message('PARA','(p_phase - ' || p_phase ||
293: ')(p_migration_id - ' || p_migration_id || ')', 10);
294:
295:

Line 306: message('ROUT','exit:hr_dm_utility.get_phase_id', 25);

302:
303:
304: message('INFO','Find Phase ID', 15);
305: message('SUMM','Find Phase ID', 20);
306: message('ROUT','exit:hr_dm_utility.get_phase_id', 25);
307: message('PARA','(l_phase_id - ' || l_phase_id || ')', 30);
308:
309: RETURN(l_phase_id);
310:

Line 314: error(SQLCODE,'hr_dm_utility.get_phase_id','(none)','R');

310:
311: -- error handling
312: EXCEPTION
313: WHEN OTHERS THEN
314: error(SQLCODE,'hr_dm_utility.get_phase_id','(none)','R');
315: RAISE;
316:
317: --
318: END get_phase_id;

Line 351: message('ROUT','entry:hr_dm_utility.set_process', 5);

347: --
348: BEGIN
349: --
350:
351: message('ROUT','entry:hr_dm_utility.set_process', 5);
352: message('PARA','(p_process_text - ' || p_process_text ||
353: ')(p_phase - ' || p_phase ||
354: ')(p_migration_id - ' || p_migration_id || ')', 10);
355:

Line 368: message('ROUT','exit:hr_dm_utility.set_process', 25);

364: COMMIT;
365:
366: message('INFO','Set process in hr_dm_migrations', 15);
367: message('SUMM','Set process in hr_dm_migrations', 20);
368: message('ROUT','exit:hr_dm_utility.set_process', 25);
369: message('PARA','(none)', 30);
370:
371:
372: -- error handling

Line 375: error(SQLCODE,'hr_dm_utility.set_process','(none)','R');

371:
372: -- error handling
373: EXCEPTION
374: WHEN OTHERS THEN
375: error(SQLCODE,'hr_dm_utility.set_process','(none)','R');
376: RAISE;
377:
378: --
379: END set_process;

Line 431: message('ROUT','entry:hr_dm_utility.error', 5);

427: --
428: BEGIN
429: --
430:
431: message('ROUT','entry:hr_dm_utility.error', 5);
432: message('PARA','(p_sqlcode - ' || p_sqlcode ||
433: ')(p_procedure - ' || p_procedure || ')', 10);
434:
435: message('FAIL',p_sqlcode || ':' || SQLERRM(p_sqlcode) || ':'

Line 447: message('ROUT','exit:hr_dm_utility.error', 30);

443: END IF;
444:
445: message('INFO','Error Handler - ' || p_procedure, 20);
446: message('SUMM','Error Handler - ' || p_procedure, 25);
447: message('ROUT','exit:hr_dm_utility.error', 30);
448: message('PARA','(none)', 35);
449:
450: -- error handling
451: EXCEPTION

Line 453: error(SQLCODE,'hr_dm_utility.error','(none)','R');

449:
450: -- error handling
451: EXCEPTION
452: WHEN OTHERS THEN
453: error(SQLCODE,'hr_dm_utility.error','(none)','R');
454: RAISE;
455:
456:
457: --

Line 540: error(SQLCODE,'hr_dm_utility.message_init','(none)','R');

536:
537: -- error handling
538: EXCEPTION
539: WHEN OTHERS THEN
540: error(SQLCODE,'hr_dm_utility.message_init','(none)','R');
541: RAISE;
542:
543: --
544: END message_init;

Line 628: error(SQLCODE,'hr_dm_utility.message','(none)','R');

624:
625: -- error handling
626: EXCEPTION
627: WHEN OTHERS THEN
628: error(SQLCODE,'hr_dm_utility.message','(none)','R');
629: RAISE;
630:
631: --
632: END message;

Line 679: message('ROUT','entry:hr_dm_utility.rollback', 5);

675: --
676: BEGIN
677: --
678:
679: message('ROUT','entry:hr_dm_utility.rollback', 5);
680: message('PARA','(p_phase - ' || p_phase ||
681: ')(p_masterslave - ' || p_masterslave || ')', 10);
682:
683: -- what type of rollback?

Line 745: message('ROUT','exit:hr_dm_utility.rollback', 25);

741: END IF;
742:
743: message('INFO','Rollback', 15);
744: message('SUMM','Rollback', 20);
745: message('ROUT','exit:hr_dm_utility.rollback', 25);
746: message('PARA','(none)', 30);
747:
748: -- error handling
749: EXCEPTION

Line 751: error(SQLCODE,'hr_dm_utility.rollback','(none)','R');

747:
748: -- error handling
749: EXCEPTION
750: WHEN OTHERS THEN
751: error(SQLCODE,'hr_dm_utility.rollback','(none)','R');
752: RAISE;
753: --
754: END rollback;
755: --

Line 795: message('ROUT','entry:hr_dm_utility.rollback_range_master', 5);

791: --
792: BEGIN
793: --
794:
795: message('ROUT','entry:hr_dm_utility.rollback_range_master', 5);
796: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
797:
798: -- find all range phases for this migration that are started or in error
799: OPEN csr_c1;

Line 813: message('ROUT','exit:hr_dm_utility.rollback_range_master', 25);

809: CLOSE csr_c1;
810:
811: message('INFO','Rollback - range_master', 15);
812: message('SUMM','Rollback - range_master', 20);
813: message('ROUT','exit:hr_dm_utility.rollback_range_master', 25);
814: message('PARA','(none)', 30);
815:
816: -- error handling
817: EXCEPTION

Line 819: error(SQLCODE,'hr_dm_utility.rollback_range_master','(none)','R');

815:
816: -- error handling
817: EXCEPTION
818: WHEN OTHERS THEN
819: error(SQLCODE,'hr_dm_utility.rollback_range_master','(none)','R');
820: RAISE;
821: --
822: END rollback_range_master;
823: --

Line 860: message('ROUT','entry:hr_dm_utility.rollback_down_aol_master', 5);

856: --
857: BEGIN
858: --
859:
860: message('ROUT','entry:hr_dm_utility.rollback_down_aol_master', 5);
861: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
862:
863: -- find all DA phases for this migration that are started or in error
864: OPEN csr_c1;

Line 875: message('ROUT','exit:hr_dm_utility.rollback_down_aol_master', 25);

871: CLOSE csr_c1;
872:
873: message('INFO','Rollback - download_aol_master', 15);
874: message('SUMM','Rollback - download_aol_master', 20);
875: message('ROUT','exit:hr_dm_utility.rollback_down_aol_master', 25);
876: message('PARA','(none)', 30);
877:
878: -- error handling
879: EXCEPTION

Line 881: error(SQLCODE,'hr_dm_utility.rollback_down_aol_master','(none)','R');

877:
878: -- error handling
879: EXCEPTION
880: WHEN OTHERS THEN
881: error(SQLCODE,'hr_dm_utility.rollback_down_aol_master','(none)','R');
882: RAISE;
883: --
884: END rollback_down_aol_master;
885: --

Line 920: message('ROUT','entry:hr_dm_utility.rollback_up_aol_master', 5);

916: --
917: BEGIN
918: --
919:
920: message('ROUT','entry:hr_dm_utility.rollback_up_aol_master', 5);
921: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
922:
923: -- find all UA phases for this migration
924: OPEN csr_c1;

Line 935: message('ROUT','exit:hr_dm_utility.rollback_up_aol_master', 25);

931: CLOSE csr_c1;
932:
933: message('INFO','Rollback - upload_aol_master', 15);
934: message('SUMM','Rollback - upload_aol_master', 20);
935: message('ROUT','exit:hr_dm_utility.rollback_up_aol_master', 25);
936: message('PARA','(none)', 30);
937:
938: -- error handling
939: EXCEPTION

Line 941: error(SQLCODE,'hr_dm_utility.rollback_up_aol_master','(none)','R');

937:
938: -- error handling
939: EXCEPTION
940: WHEN OTHERS THEN
941: error(SQLCODE,'hr_dm_utility.rollback_up_aol_master','(none)','R');
942: RAISE;
943: --
944: END rollback_up_aol_master;
945: --

Line 1016: message('ROUT','entry:hr_dm_utility.rollback_download_master', 5);

1012: --
1013: BEGIN
1014: --
1015:
1016: message('ROUT','entry:hr_dm_utility.rollback_download_master', 5);
1017: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1018:
1019: -- find the range phase id
1020: l_range_phase_id := get_phase_id('R', p_migration_id);

Line 1069: message('ROUT','exit:hr_dm_utility.rollback_download_master', 25);

1065:
1066:
1067: message('INFO','Rollback', 15);
1068: message('SUMM','Rollback', 20);
1069: message('ROUT','exit:hr_dm_utility.rollback_download_master', 25);
1070: message('PARA','(none)', 30);
1071:
1072: -- error handling
1073: EXCEPTION

Line 1075: error(SQLCODE,'hr_dm_utility.rollback_download_master','(none)','R');

1071:
1072: -- error handling
1073: EXCEPTION
1074: WHEN OTHERS THEN
1075: error(SQLCODE,'hr_dm_utility.rollback_download_master','(none)','R');
1076: RAISE;
1077: --
1078: END rollback_download_master;
1079: --

Line 1114: message('ROUT','entry:hr_dm_utility.rollback_init', 5);

1110: --
1111: BEGIN
1112: --
1113:
1114: message('ROUT','entry:hr_dm_utility.rollback_init', 5);
1115: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1116:
1117: -- find all init phases for this migration that are started or in error
1118: OPEN csr_c1;

Line 1139: message('ROUT','exit:hr_dm_utility.rollback_init', 25);

1135:
1136:
1137: message('INFO','Rollback - init', 15);
1138: message('SUMM','Rollback - init', 20);
1139: message('ROUT','exit:hr_dm_utility.rollback_init', 25);
1140: message('PARA','(none)', 30);
1141:
1142: -- error handling
1143: EXCEPTION

Line 1145: error(SQLCODE,'hr_dm_utility.rollback_init','(none)','R');

1141:
1142: -- error handling
1143: EXCEPTION
1144: WHEN OTHERS THEN
1145: error(SQLCODE,'hr_dm_utility.rollback_init','(none)','R');
1146: RAISE;
1147: --
1148: END rollback_init;
1149: --

Line 1185: message('ROUT','entry:hr_dm_utility.rollback_generator', 5);

1181: --
1182: BEGIN
1183: --
1184:
1185: message('ROUT','entry:hr_dm_utility.rollback_generator', 5);
1186: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1187:
1188: -- find all generator phases for this migration that are started or in error
1189: OPEN csr_c1;

Line 1200: message('ROUT','exit:hr_dm_utility.rollback_generator', 25);

1196: CLOSE csr_c1;
1197:
1198: message('INFO','Rollback - generator', 15);
1199: message('SUMM','Rollback - generator', 20);
1200: message('ROUT','exit:hr_dm_utility.rollback_generator', 25);
1201: message('PARA','(none)', 30);
1202:
1203: -- error handling
1204: EXCEPTION

Line 1206: error(SQLCODE,'hr_dm_utility.rollback_generator','(none)','R');

1202:
1203: -- error handling
1204: EXCEPTION
1205: WHEN OTHERS THEN
1206: error(SQLCODE,'hr_dm_utility.rollback_generator','(none)','R');
1207: RAISE;
1208: --
1209: END rollback_generator;
1210: --

Line 1246: message('ROUT','entry:hr_dm_utility.rollback_cleanup', 5);

1242: --
1243: BEGIN
1244: --
1245:
1246: message('ROUT','entry:hr_dm_utility.rollback_cleanup', 5);
1247: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1248:
1249: -- find all cleanup phases for this migration that are started or in error
1250: OPEN csr_c1;

Line 1261: message('ROUT','exit:hr_dm_utility.rollback_cleanup', 25);

1257: CLOSE csr_c1;
1258:
1259: message('INFO','Rollback - cleanup', 15);
1260: message('SUMM','Rollback - cleanup', 20);
1261: message('ROUT','exit:hr_dm_utility.rollback_cleanup', 25);
1262: message('PARA','(none)', 30);
1263:
1264: -- error handling
1265: EXCEPTION

Line 1267: error(SQLCODE,'hr_dm_utility.rollback_cleanup','(none)','R');

1263:
1264: -- error handling
1265: EXCEPTION
1266: WHEN OTHERS THEN
1267: error(SQLCODE,'hr_dm_utility.rollback_cleanup','(none)','R');
1268: RAISE;
1269: --
1270: END rollback_cleanup;
1271: --

Line 1317: message('ROUT','entry:hr_dm_utility.rollback_delete', 5);

1313: --
1314: BEGIN
1315: --
1316:
1317: message('ROUT','entry:hr_dm_utility.rollback_delete', 5);
1318: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1319:
1320: -- find the range phase id
1321: l_range_phase_id := get_phase_id('R', p_migration_id);

Line 1347: message('ROUT','exit:hr_dm_utility.rollback_delete', 25);

1343: CLOSE csr_c2;
1344:
1345: message('INFO','Rollback - delete', 15);
1346: message('SUMM','Rollback - delete', 20);
1347: message('ROUT','exit:hr_dm_utility.rollback_delete', 25);
1348: message('PARA','(none)', 30);
1349:
1350: -- error handling
1351: EXCEPTION

Line 1353: error(SQLCODE,'hr_dm_utility.rollback_delete','(none)','R');

1349:
1350: -- error handling
1351: EXCEPTION
1352: WHEN OTHERS THEN
1353: error(SQLCODE,'hr_dm_utility.rollback_delete','(none)','R');
1354: RAISE;
1355: --
1356: END rollback_delete;
1357: --

Line 1393: message('ROUT','entry:hr_dm_utility.rollback_upload', 5);

1389: --
1390: BEGIN
1391: --
1392:
1393: message('ROUT','entry:hr_dm_utility.rollback_upload', 5);
1394: message('PARA','(p_migration_id - ' || p_migration_id || ')', 10);
1395:
1396: -- find all upload phases for this migration that are started or in error
1397: OPEN csr_c1;

Line 1408: message('ROUT','exit:hr_dm_utility.rollback_upload', 25);

1404: CLOSE csr_c1;
1405:
1406: message('INFO','Rollback - upload', 15);
1407: message('SUMM','Rollback - upload', 20);
1408: message('ROUT','exit:hr_dm_utility.rollback_upload', 25);
1409: message('PARA','(none)', 30);
1410:
1411: -- error handling
1412: EXCEPTION

Line 1414: error(SQLCODE,'hr_dm_utility.rollback_upload','(none)','R');

1410:
1411: -- error handling
1412: EXCEPTION
1413: WHEN OTHERS THEN
1414: error(SQLCODE,'hr_dm_utility.rollback_upload','(none)','R');
1415: RAISE;
1416: --
1417: END rollback_upload;
1418: --

Line 1470: message('ROUT','entry:hr_dm_utility.update_migrations', 5);

1466: --
1467: BEGIN
1468: --
1469:
1470: message('ROUT','entry:hr_dm_utility.update_migrations', 5);
1471: message('PARA','(p_new_status - ' || p_new_status ||
1472: ')(p_id - ' || p_id || ')', 10);
1473:
1474: -- set start date for 'S'

Line 1513: message('ROUT','exit:hr_dm_utility.update_migrations', 25);

1509: END IF;
1510:
1511: message('INFO','Update status - update_migrations', 15);
1512: message('SUMM','Update status - update_migrations', 20);
1513: message('ROUT','exit:hr_dm_utility.update_migrations', 25);
1514: message('PARA','(none)', 30);
1515:
1516: -- error handling
1517: EXCEPTION

Line 1519: error(SQLCODE,'hr_dm_utility.update_migrations','(none)','R');

1515:
1516: -- error handling
1517: EXCEPTION
1518: WHEN OTHERS THEN
1519: error(SQLCODE,'hr_dm_utility.update_migrations','(none)','R');
1520: RAISE;
1521:
1522: --
1523: END update_migrations;

Line 1612: message('ROUT','entry:hr_dm_utility.update_migration_ranges', 5);

1608:
1609: --
1610: BEGIN
1611: --
1612: message('ROUT','entry:hr_dm_utility.update_migration_ranges', 5);
1613: message('PARA','(p_new_status - ' || p_new_status ||
1614: ')(p_id - ' || p_id || ')', 10);
1615:
1616: -- get the parent phase_id

Line 1622: l_phase_id := hr_dm_utility.get_phase_id('D', l_migration_id);

1618: FETCH csr_mig_id INTO l_migration_id;
1619: CLOSE csr_mig_id;
1620:
1621: -- first see if it is a delete migration
1622: l_phase_id := hr_dm_utility.get_phase_id('D', l_migration_id);
1623: -- if null returned then it must be a DP phase we are looking for
1624: IF (l_phase_id IS NULL) THEN
1625: l_phase_id := hr_dm_utility.get_phase_id('DP', l_migration_id);
1626: END IF;

Line 1625: l_phase_id := hr_dm_utility.get_phase_id('DP', l_migration_id);

1621: -- first see if it is a delete migration
1622: l_phase_id := hr_dm_utility.get_phase_id('D', l_migration_id);
1623: -- if null returned then it must be a DP phase we are looking for
1624: IF (l_phase_id IS NULL) THEN
1625: l_phase_id := hr_dm_utility.get_phase_id('DP', l_migration_id);
1626: END IF;
1627:
1628: -- set start time for 'S'
1629: IF (p_new_status = 'S') THEN

Line 1693: message('ROUT','exit:hr_dm_utility.update_migration_ranges', 25);

1689:
1690:
1691: message('INFO','Update status - update_migration_ranges', 15);
1692: message('SUMM','Update status - update_migration_ranges', 20);
1693: message('ROUT','exit:hr_dm_utility.update_migration_ranges', 25);
1694: message('PARA','(none)', 30);
1695:
1696: -- error handling
1697: EXCEPTION

Line 1699: error(SQLCODE,'hr_dm_utility.update_migration_ranges','(none)','R');

1695:
1696: -- error handling
1697: EXCEPTION
1698: WHEN OTHERS THEN
1699: error(SQLCODE,'hr_dm_utility.update_migration_ranges','(none)','R');
1700: RAISE;
1701:
1702: --
1703: END update_migration_ranges;

Line 1747: message('ROUT','entry:hr_dm_utility.update_phase_items', 5);

1743: --
1744: BEGIN
1745: --
1746:
1747: message('ROUT','entry:hr_dm_utility.update_phase_items', 5);
1748: message('PARA','(p_new_status - ' || p_new_status ||
1749: ')(p_id - ' || p_id || ')', 10);
1750:
1751: -- set start time for 'S'

Line 1779: message('ROUT','exit:hr_dm_utility.update_phase_items', 25);

1775: END IF;
1776:
1777: message('INFO','Update status - update_phase_items', 15);
1778: message('SUMM','Update status - update_phase_items', 20);
1779: message('ROUT','exit:hr_dm_utility.update_phase_items', 25);
1780: message('PARA','(none)', 30);
1781:
1782: -- error handling
1783: EXCEPTION

Line 1785: error(SQLCODE,'hr_dm_utility.update_phase_items','(none)','R');

1781:
1782: -- error handling
1783: EXCEPTION
1784: WHEN OTHERS THEN
1785: error(SQLCODE,'hr_dm_utility.update_phase_items','(none)','R');
1786: RAISE;
1787:
1788: --
1789: END update_phase_items;

Line 1842: message('ROUT','entry:hr_dm_utility.update_phases', 5);

1838: --
1839: BEGIN
1840: --
1841:
1842: message('ROUT','entry:hr_dm_utility.update_phases', 5);
1843: message('PARA','(p_new_status - ' || p_new_status ||
1844: ')(p_id - ' || p_id || ')', 10);
1845:
1846: l_new_status := p_new_status;

Line 1896: message('ROUT','exit:hr_dm_utility.update_phases', 25);

1892:
1893:
1894: message('INFO','Update status - update_phases', 15);
1895: message('SUMM','Update status - update_phases', 20);
1896: message('ROUT','exit:hr_dm_utility.update_phases', 25);
1897: message('PARA','(none)', 30);
1898:
1899: -- error handling
1900: EXCEPTION

Line 1902: error(SQLCODE,'hr_dm_utility.update_phases','(none)','R');

1898:
1899: -- error handling
1900: EXCEPTION
1901: WHEN OTHERS THEN
1902: error(SQLCODE,'hr_dm_utility.update_phases','(none)','R');
1903: RAISE;
1904:
1905: --
1906: END update_phases;

Line 1915: end hr_dm_utility;

1911: -- end
1912:
1913:
1914:
1915: end hr_dm_utility;