{"id":907,"date":"2026-02-26T08:07:02","date_gmt":"2026-02-26T08:07:02","guid":{"rendered":"https:\/\/forgefuse.wasmer.app\/?p=907"},"modified":"2026-02-26T08:08:33","modified_gmt":"2026-02-26T08:08:33","slug":"migrating-e-business-suite-cemlis","status":"publish","type":"post","link":"https:\/\/www.forgefuse.net\/index.php\/migrating-e-business-suite-cemlis\/","title":{"rendered":"Migrating E-Business Suite CEMLIs"},"content":{"rendered":"\n<p>In Oracle E-Business Suite (EBS), custom extensions (CEMLIs) such as custom lookups, messages, concurrent programs, forms, menus, workflows or reports can be migrated from a development instance to production with <strong>FNDLOAD<\/strong> and <strong>WFLOAD<\/strong> utilities. FNDLOAD is a generic loader that \u201ccan move Oracle E-Business Suite data between database and text file representations\u201d.<\/p>\n\n\n\n<p>CEMLI : Configurations, Extensions, Modifications, Localizations, and Integrations and represents all custom and semi-custom components developed within Oracle E-Business Suite to meet specific business needs.<\/p>\n\n\n\n<p>This post serves as a practical reference for moving CEMLI components from Development to Production using tools like FNDLOAD and WFLOAD, with real command examples you can reuse whenever needed.<br><br>WFLOAD is the analogous workflow loader. Both are run on the application tier as the APPS user. For example, FNDLOAD is located under <code>$FND_TOP\/bin<\/code> on the app server (so you can simply run <code>FNDLOAD<\/code> if <code>$FND_TOP<\/code> is set). The basic syntax is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FNDLOAD apps\/&lt;password&gt; 0 Y &#91;UPLOAD|DOWNLOAD] &lt;configfile.lct&gt; &lt;outputfile.ldt&gt; &lt;ENTITY&gt; &#91;parameters]<\/code><\/pre>\n\n\n\n<p>where <code>&lt;configfile.lct&gt;<\/code> is the loader control file (provided by Oracle) and <code>&lt;outputfile.ldt&gt;<\/code> is the data file. (A synopsis of the syntax is provided in the Oracle Setup Guide.) In <em>download<\/em> mode, FNDLOAD exports definitions from the database into the LDT file; in <em>upload<\/em> mode, it reads an LDT file and creates or updates objects in the database. The examples below show typical FNDLOAD commands for various object types. In each case, replace the example names (such as <code>XXHR_CUSTOM_MESSAGE<\/code>) with your actual custom object names, and use <code>UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code> on upload to overwrite any existing customization.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">FNDLOAD Examples<\/h4>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Lookup Types<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li> To migrate a custom lookup type (e.g. in Application Short Name <code>XXHR<\/code>), use the <code>aflvmlu.lct<\/code> loader. For example, to download and then upload a custom lookup, you could run:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download custom lookup XXHR_CUSTOM_LOOKUP from the DB\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/aflvmlu.lct lookup.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME=\"XXHR\" LOOKUP_TYPE=\"XXHR_CUSTOM_LOOKUP\"\n\n# Upload that lookup into another instance\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/aflvmlu.lct lookup.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Messages<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To move custom seeded or custom messages, use <code>afmdmsg.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a custom message XXHR_CUSTOM_MESSAGE\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afmdmsg.lct XX_CUSTOM_MESSAGE.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME=\"XX\" MESSAGE_NAME=\"XXHR_CUSTOM_MESSAGE\"\n\n# Upload the message LDT to production\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afmdmsg.lct XX_CUSTOM_MESSAGE.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<p>In the example above, replace <code>XX_CUSTOM_MESSAGE<\/code> with the actual message name. Note that if your instance is multi-language, you should download\/upload all language variants of the message.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Value Sets<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To move custom value sets, use <code>afffload.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download \n$FND_TOP\/bin\/FNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afffload.lct XX_CUST_VS.ldt VALUE_SET FLEX_VALUE_SET_NAME=\"XX_Cust_VS\"; \n\n# Upload the message LDT to production\n$FND_TOP\/bin\/FNDLOAD apps\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afffload.lct XX_CUST_VS.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE; <\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Value Sets with values<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Again, use <code><code>afffload<\/code>.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\n$FND_TOP\/bin\/FNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afffload.lct XX_CUST_VS.ldt VALUE_SET_VALUE FLEX_VALUE_SET_NAME=\"XX_Cust_VS\"; \n\n# Upload\n$FND_TOP\/bin\/FNDLOAD apps\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afffload.lct XX_CUST_VS.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE; <\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Concurrent Programs<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For custom concurrent programs, use <code>afcpprog.lct<\/code>. Example<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a custom concurrent program XXHR_CONC_PROGRAM\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afcpprog.lct prog.ldt PROGRAM APPLICATION_SHORT_NAME=\"XXHR\" CONCURRENT_PROGRAM_NAME=\"XXHR_CONC_PROGRAM\"\n\n# Upload the concurrent program definition\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afcpprog.lct prog.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Form Functions<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To migrate custom form functions (FND_FORM_FUNCTIONS), use <code>afsload.lct<\/code>. For instance:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a custom form function XXHR_CUSTOM_FUNC\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afsload.lct func.ldt FUNCTION FUNC_APP_SHORT_NAME=\"XXHR\" FUNCTION_NAME=\"XXHR_CUSTOM_FUNC\"\n\n# Upload the function\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afsload.lct func.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong><strong><strong>WebADI &#8211; Web Desktop Integrator<\/strong><\/strong><\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To migrate custom integrator, use <code>bneintegrator.lct<\/code>. For instance:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\nFNDLOAD apps\/appspwd 0 Y DOWNLOAD $BNE_TOP\/patch\/115\/import\/bneintegrator.lct XX_INTEGRATOR.ldt BNE_INTEGRATORS INTEGRATOR_ASN=\"XX\" INTEGRATOR_CODE=\"XX_INTEGRATOR\";\n\n# Upload\nFNDLOAD apps\/appspwd 0 Y UPLOAD $BNE_TOP\/patch\/115\/import\/bneintegrator.lct XX_INTEGRATOR.ldt CUSTOM_MODE=FORCE UPLOAD_MODE=REPLACE; <\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Menus<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Custom menus use the same <code>afsload.lct<\/code> file. Example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a menu XXHR_CUSTOM_MENU\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afsload.lct menu.ldt MENU MENU_NAME=\"XXHR_CUSTOM_MENU\"\n\n# Upload the menu\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afsload.lct menu.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<p>Note that downloading a menu will also download its contained form functions. The upload will recreate the menu (and by extension all its functions) in the target instance<\/p>\n\n\n\n<p>To download only one function (to be later added to existing menu) use following download FNDLOAD functionality:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Download only one function in a menu\nFNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afsload.lct CUST_MENU_FUNC.ldt MENU PARENT_MENU_NAME=\"XX_SOME_CUST_MENU\" FUNCTION_NAME=\"XX_CUST_FUNC\"<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Responsibilities<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To migrate a custom responsibility, use <code>afscursp.lct<\/code>. Example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a responsibility with RESP_KEY='XXHR_RESP_KEY'\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afscursp.lct resp.ldt FND_RESPONSIBILITY RESP_KEY=\"XXHR_RESP_KEY\"\n\n# Upload the responsibility\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afscursp.lct resp.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<p>Make sure the responsibility key matches the custom one.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Request Set<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To migrate a custom request set, use <code>afcprset.lct<\/code>. Example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\nFNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afcprset.lct XX_REQ_SET.ldt REQ_SET REQUEST_SET_NAME='XX - Cust Req Set';\n\n# Upload\nFNDLOAD apps\/apps_pwd O Y UPLOAD $FND_TOP\/patch\/115\/import\/afcprset.lct XX_REQ_SET.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE;<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Request Group<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To migrate a custom request group, use <code>afcpreqg.lct<\/code>. Example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\nFNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afcpreqg.lct XX_REQ_GRP.ldt REQUEST_GROUP REQUEST_GROUP_NAME=\"XX - Cust Request Group\" APPLICATION_SHORT_NAME=\"XX\"; \n \n# Upload\nFNDLOAD apps\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afcpreqg.lct XX_REQ_GRP.ldt CUSTOM_MODE=FORCE UPLOAD_MODE=REPLACE; <\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Profile Options<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Custom profile values (if needed) can be migrated with <code>afscprof.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a custom profile option (replace NAME and APP)\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afscprof.lct profile.ldt PROFILE PROFILE_NAME=\"XX:Custom Profile\" APPLICATION_SHORT_NAME=\"XX\"\n\n# Upload that profile file\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afscprof.lct profile.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Form Personalizations<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Custom FND form personalizations use <code>affrmcus.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download personalizations for form $fnd_form_name\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/affrmcus.lct pers.ldt FND_FORM_CUSTOM_RULES FUNCTION_NAME=\"XX_CUST_FUNC\"\n\n# Upload them\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/affrmcus.lct pers.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Descriptive Flexfields<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If migrating DFF configurations, use <code>afffload.lct<\/code>. For example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a DFF named \"MY DFF\" in custom app XXHR\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $FND_TOP\/patch\/115\/import\/afffload.lct dff.ldt DESC_FLEX APPLICATION_SHORT_NAME=XX DESCRIPTIVE_FLEXFIELD_NAME=\"XXDFF\"\n\n# Upload it\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $FND_TOP\/patch\/115\/import\/afffload.lct dff.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Alerts<\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>For custom alerts (ALR_ALERTS), use <code>alr.lct<\/code>. Example:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download a custom alert named \"Custom Alert\"\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $ALR_TOP\/patch\/115\/import\/alr.lct alert.ldt ALR_ALERTS APPLICATION_SHORT_NAME=\"XXHR\" ALERT_NAME=\"Custom Alert\"\n\n# Upload the alert\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $ALR_TOP\/patch\/115\/import\/alr.lct alert.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\"><strong><strong>XMLP<\/strong><\/strong><\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Custom XML Publisher data definitions (the metadata, not the template file) use <code>xdotmpl.lct<\/code> under <code>$XDO_TOP<\/code>. For instance:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Download all data definitions for AR (Accounts Receivable)\nFNDLOAD APPS\/apps_pwd 0 Y DOWNLOAD $XDO_TOP\/patch\/115\/import\/xdotmpl.lct data_defs.ldt XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME=XX\n\n# Upload in production\nFNDLOAD APPS\/apps_pwd 0 Y UPLOAD $XDO_TOP\/patch\/115\/import\/xdotmpl.lct data_defs.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE<\/code><\/pre>\n\n\n\n<p>You can also specify <code>DATA_SOURCE_CODE=<\/code> or <code>TEMPLATE_CODE=<\/code> to narrow the download to specific definitions\/templates as needed.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Download \nFNDLOAD apps\/apps_pwd 0 Y DOWNLOAD $XDO_TOP\/patch\/115\/import\/xdotmpl.lct XX_CUST_DD.ldt XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME='XX' DATA_SOURCE_CODE='XX_CUST_DD_CODE' TMPL_APP_SHORT_NAME='XX' TEMPLATE_CODE='XX_CUST_DT_CODE';\n\n# Upload \nFNDLOAD apps\/apps_pwd 0 Y UPLOAD ${XDO_TOP}\/patch\/115\/import\/xdotmpl.lct XX_CUST_DD.ldt;<\/code><\/pre>\n\n\n\n<p>Downloading and uploading <strong><strong>DATA_TEMPLATE (Data Source .xml file)<\/strong><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\njava oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD \n-DB_USERNAME apps \n-DB_PASSWORD appspwd \n-JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='XX_HOST_NAME')(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERV_NAME)))' \n-LOB_TYPE DATA_TEMPLATE \n-LOB_CODE XX_TEMPLATE \n-APPS_SHORT_NAME XX \n-LANGUAGE en \n-lct_FILE $XDO_TOP\/patch\/115\/import\/xdotmpl.lct \n-LOG_FILE $LOG_FILE_NAME;\n\n# Upload\njava oracle.apps.xdo.oa.util.XDOLoader UPLOAD \n-DB_USERNAME apps \n-DB_PASSWORD appspwd \n-JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='XX_HOST_NAME')(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERV_NAME)))' \n-LOB_TYPE DATA_TEMPLATE \n-APPS_SHORT_NAME XX \n-LOB_CODE XX_TEMPLATE \n-NLS_LANG en\n-TERRITORY 00\n-XDO_FILE_TYPE XML-DATA-TEMPLATE\n-FILE_NAME DATA_TEMPLATE_XX_TEMPLATE.xml\n-CUSTOM_MODE FORCE \n-LOG_FILE $LOG_FILE_NAME;<\/code><\/pre>\n\n\n\n<p>Downloading and uploading <strong><strong><strong><strong>RTF TEMPLATE (.rtf file)<\/strong><\/strong><\/strong><\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Download\njava oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD \n-DB_USERNAME apps \n-DB_PASSWORD appspwd \n-JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='XX_HOST_NAME')(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERV_NAME)))' \n-LOB_TYPE TEMPLATE \n-LOB_CODE XX_TEMPLATE \n-APPS_SHORT_NAME XX \n-LANGUAGE en \n-TERRITORY 00 \n-lct_FILE $XDO_TOP\/patch\/115\/import\/xdotmpl.lct \n-LOG_FILE $LOG_FILE_NAME; \n\n# Upload\njava oracle.apps.xdo.oa.util.XDOLoader UPLOAD \n-DB_USERNAME apps \n-DB_PASSWORD appspwd \n-JDBC_CONNECTION '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST='XX_HOST_NAME')(PORT=XX_PORT_NUMBER))(CONNECT_DATA=(SERVICE_NAME=XX_SERV_NAME)))' \n-LOB_TYPE TEMPLATE \n-APPS_SHORT_NAME XX \n-LOB_CODE XX_TEMPLATE \n-LANGUAGE en \n-TERRITORY 00 \n-XDO_FILE_TYPE RTF \n-FILE_NAME TEMPLATE_SOURCE_XX_TEMPLATE.rtf \n-CUSTOM_MODE FORCE -LOG_FILE $LOG_FILE_NAME; <\/code><\/pre>\n\n\n\n<p>Of course, if you used some other type of template (for example Excel xls, you would specify that in your script)<\/p>\n\n\n\n<h6 class=\"wp-block-heading\"><strong>Consider<\/strong>ations<\/h6>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each of the above examples assumes the LCT files live under <code>patch\/115\/import<\/code> (they do in 12.2.10) and that you run FNDLOAD from the application tier as the APPS schema. Always test the download commands first to ensure the <code>.ldt<\/code> files contain the expected definitions (open them in some text editor), and then transfer those files to the target instance for uploading.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Workflow Migration with WFLOAD<\/h4>\n\n\n\n<p>For custom Oracle Workflow definitions (processes, notifications, etc.), use the <strong>Workflow Definitions Loader (WFLOAD)<\/strong>. Unlike FNDLOAD, WFLOAD handles workflows in bulk. WFLOAD is invoked similarly, for example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Download all workflow definitions \nWFLOAD APPS\/apps_pwd 0 Y DOWNLOAD cust_workflow.wft XX_CUST_WFT\n\n# Upload or force into target instance\nWFLOAD APPS\/apps_pwd 0 Y UPLOAD cust_workflow.wft<\/code><\/pre>\n\n\n\n<p>The generic WFLOAD command syntax is:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To <strong>download<\/strong> definitions:<br><code>WFLOAD apps\/&lt;pwd&gt; 0 Y DOWNLOAD &lt;file.wft&gt; &lt;ITEM_TYPE1&gt; [&lt;ITEM_TYPE2&gt; ...]<\/code><\/li>\n\n\n\n<li>To <strong>upload<\/strong> from a <code>.wft<\/code> file:<br><code>WFLOAD apps\/&lt;pwd&gt; 0 Y UPLOAD &lt;file.wft&gt;<\/code><\/li>\n\n\n\n<li>To <strong>upgrade\/force<\/strong> an upload (overwriting protected objects):<br><code>WFLOAD apps\/&lt;pwd&gt; 0 Y UPGRADE &lt;file.wft&gt;<\/code> or <code>WFLOAD apps\/&lt;pwd&gt; 0 Y FORCE &lt;file.wft&gt;<\/code>.<\/li>\n<\/ul>\n\n\n\n<p>For example, to download <strong>all<\/strong> workflow definitions into <code>workflows_all.wft<\/code>, you can use <code>WFLOAD APPS\/apps_pwd 0 Y DOWNLOAD workflows_all.wft '*'<\/code> (the asterisk in single quotes means all item types). To upload that file in production, use <code>WFLOAD APPS\/apps_pwd 0 Y UPLOAD workflows_all.wft<\/code>. These commands are documented in Oracle\u2019s online help.<\/p>\n\n\n\n<p><strong>Note:<\/strong> WFLOAD operates on workflow repository definitions (WF_ITEM_TYPES, WF_PROCESSES, WF_NOTIFICATIONS, etc.) and is separate from FNDLOAD. Typically you first download the workflows (to capture any custom workflow), then upload or upgrade in the target system to restore the processes there.<\/p>\n\n\n\n<p>That&#8217;s it for this blog, if you liked it, feel free to join the newsletter for other cool content.<\/p>\n\n\n\n<div class=\"wp-block-stackable-button-group stk-block-button-group stk-block stk-88daaaf\" data-block-id=\"88daaaf\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-button-group\">\n<div class=\"wp-block-stackable-button stk-block-button popmake-851 stk-block stk-0cfdac5 popmake-851\" data-block-id=\"0cfdac5\"><a class=\"stk-link stk-button stk--hover-effect-darken\" href=\"\"><span class=\"stk-button__inner-text\">Join ForgeFuse Newsletter<\/span><\/a><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In day-to-day EBS development, CEMLIs are what bridge the gap between standard functionality and real-world requirements. Whether it is a custom concurrent program, a modified workflow, a new lookup, or an integration with external systems, these objects need to be carefully managed and migrated across environments.<\/p>\n","protected":false},"author":1,"featured_media":908,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":126,"footnotes":""},"categories":[2,18],"tags":[19,20,15],"class_list":["post-907","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-article","category-orace-e-business-suite","tag-e-business-suite","tag-ebs","tag-oracle"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/posts\/907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/comments?post=907"}],"version-history":[{"count":0,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/posts\/907\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/media\/908"}],"wp:attachment":[{"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/media?parent=907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/categories?post=907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.forgefuse.net\/index.php\/wp-json\/wp\/v2\/tags?post=907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}