Use of shell script in oracle

A.Steps to Register Shell Script as a concurrent program.

B.Sample Shell Script to copy the file from source to destination.

C.Basic Shell Script Commands.

A. Steps to Register Shell Script as a concurrent program : 

Step 1:
=======
Place the .prog script under the bin directory for your applications top directory.

For example, call the script ONEPLACE_DEMO.prog and place it under $CUSTOM_TOP/bin
(*Note: $CUSTOM_TOP = name of you custom top)

Go to $CUSTOM_TOP/bin where you have places shell script file and run below command to give full permission to file.

chmod 777 .prog

step 2:
=======
Make a symbolic link from your script to $FND_TOP/bin/fndcpesr in $CUSTOM_TOP/bin directory.

For example, if the script is called ONEPLACE_DEMO.prog use this:

ln -s $FND_TOP/bin/fndcpesr ONEPLACE_DEMO

This link will be having same name as your script without the .prog extension.
step 3:
=======
Register the concurrent program, using an execution method as 'Host'. Use the name of your script without the .prog extension as the name of the executable.
For the example above:
Use ONEPLACE_DEMO as name of the executable file.
step 4:
=======
Your script will be passed at least 4 parameters, from $1 to $4.

$1 = orauser/pwd
$2 = userid(apps)
$3 = username,
$4 = request_id

Any other parameters you define will be passed in as $5 and higher.
Make sure your script returns an exit status.

B.Sample Shell Script to copy the file from source to destination

Shell Script to copy the file from source to destination

#Note: If you see # in front of any line it means that it’s a comment line not the actual code
#** ********************************************************************
# Created By : Oneplace World Blogspot
# Creation Date : 18-OCT-2016
# Script Name : ONEPLACE_DEMO.prog
# Description : This Script accepts three parameters
# 1)Data File Name 2)Source Directory Path 3)Target Directory Path
# Then copy the file from source location to target location.
# If copy fails send the error status/message to concurrent program so that user can see status.
#
#
# ========
# History
# ========
# Version 1 Oneplace World Blogspot 18-OCT-2016 Created for http://oneplaceworld.blogspot.in/ users
#
#** ********************************************************************
#Parameters from 1 to 4 i.e $1 $2 $3 $4 are standard parameters
# $1 : username/password of the database
# $2 : userid
# $3 : USERNAME
# $4 : Concurrent Request ID
DataFileName=$5
SourceDirectory=$6
TargetDirectory=$7
echo "————————————————–"
echo "Parameters received from concurrent program .."
echo " Time : "'date'
echo "————————————————–"
echo "Arguments : "
echo " Data File Name : "${DataFileName}
echo " SourceDirectory : "${SourceDirectory}
echo " TargetDirectory : "${TargetDirectory}
echo "————————————————–"
echo " Copying the file from source directory to target directory…"
cp ${SourceDirectory}/${DataFileName} ${TargetDirectory}
if [ $? -ne 0 ]
# the $? will contain the result of previously executed statement.
#It will be 0 if success and 1 if fail in many cases
# -ne represents not “equal to”
then
echo "Entered Exception"
exit 1
# exit 1 represents concurrent program status. 1 for error, 2 for warning 0 for success
else
echo "File Successfully copied from source to destination"
exit 0
fi
echo "****************************************************************"
#End of Shell Script File

C.Basic Shell Script Commands :

# Create Directory
mkdir
# Remove Directory
rmdir
#remove folder with files
rm -r -f
# Change Directory
cd
# Create new file
vi
#insert data into file
vi
esc i
#Save file
esc :wq enter
# exit without saving changes
esc :q! enter
# open existing file
vi
#remove file
rm
# Move file with same name
mv /
# move file with data appended to filename in the front
mv / /'date+%H%M%d%m%y'
# copy file with same name
cp /
# copy file with new name
cp / /
#print line
echo "your text here to print"
#print date
echo 'date'
#grep – This is one of the most powerful and useful commands available to you in Linux. It stands for Global/Regular Expression Print. It looks through a file and prints any line that matches a particular pattern. Because this pattern is based on "regular expression," a concise line can yield a multitude of patterns to be matched. For not, though, you can enter a tern for searching.(grep is case sensitive)
grep pattern_file
#You can use the “-i” flag to make it ignore case.
ls / | grep -i pattern_file
#Piping, or Chaining Piping is so named because it uses the pipe, (| ; shared with the \ key on most keyboards). Essentially, it takes the output of one command and directly feeds it to another. You can create long chains of commands to get a very specific desired output this way, and it’s very convenient for commands like grep.

ls / | grep pattern_file

Oracle FNDLOAD Scripts - Download and update LDT's

1. Lookups
-- ------------- 

Download Command :

FNDLOAD apps/password O Y DOWNLOAD $FND_TOP/patch/115/import/aflvmlu.lct XX_CUSTOM_LKP.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME="XXSHORT_NAME" LOOKUP_TYPE="XX_LOOKUP_TYPE"

 Upload Command :

FNDLOAD apps/password O Y UPLOAD $FND_TOP/patch/115/import/aflvmlu.lct XX_CUSTOM_LKP.ldt UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

2. Concurrent Program
-- ----------------------------- 

Download Command :

FNDLOAD apps/password O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt PROGRAM APPLICATION_SHORT_NAME="XXSHORT_NAME" CONCURRENT_PROGRAM_NAME="XX_CONCURRENT_PROGRAM"


 Upload Command :
FNDLOAD apps/password 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt - WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

API for Closing/Finally Closing PO Using po_actions.close_po


API for closing or finally closing the POs. In this API, there is a parameter "p_action" which we need to set as either CLOSE (if we want to close the PO) or FINALLY CLOSE (If we want to Finally Close) the PO. Another Parameter which needs to set properly is "p_auto_close". This parameter should be set to 'N'.

/*oracle R12 : PO - Script to Close / Finally Close PO using PO_ACTIONS CLOSE_PO API.sql*/

DECLARE

x_action constant varchar2(20) := 'CLOSE'; -- Change this parameter as per requirement
x_calling_mode constant varchar2(2) := 'PO';
x_conc_flag constant varchar2(1) := 'N';
x_return_code_h varchar2(100);
x_auto_close constant varchar2(1) := 'N';
x_origin_doc_id number;
x_returned boolean;

CURSOR c_po_details IS

SELECT
pha.po_header_id,
pha.org_id,
pha.segment1,
pha.agent_id,
pdt.document_subtype,
pdt.document_type_code,
pha.closed_code,
pha.closed_date
FROM apps.po_headers_all pha, apps. pdt
WHERE pha.type_lookup_code = pdt.document_subtype
AND pha.org_id = pdt.org_id
AND pdt.document_type_code = 'PO'
AND authorization_status = 'APPROVED'
AND pha.closed_code <> 'CLOSED'
AND segment1 = 'P_PO_Number'; -- Enter the PO Number if only one PO needs to be finally closed/Closed

begin

fnd_global.apps_initialize (user_id => P_user_id,
resp_id => P_resp_id,
resp_appl_id => P_resp_appl_id);

/*For more details on how to Initialize the session oracle Apps R-12 visit Initializing The Session Oracle Apps R-12
*/
for po_head in c_po_details

LOOP

mo_global.init (po_head.document_type_code);
mo_global.set_policy_context ('S', po_head.org_id);

DBMS_OUTPUT.PUT_LINE ('Calling PO_Actions.close_po for Closing/Finally Closing PO =>' po_head.segment1);

x_returned :=
po_actions.close_po(
p_docid => po_head.po_header_id,
p_doctyp => po_head.document_type_code,
p_docsubtyp => po_head.document_subtype,
p_lineid => NULL,
p_shipid => NULL,
p_action => x_action,
p_reason => NULL,
p_calling_mode => x_calling_mode,
p_conc_flag => x_conc_flag,
p_return_code => x_return_code_h,
p_auto_close => x_auto_close,
p_action_date => SYSDATE,
p_origin_doc_id => NULL);

IF x_returned = TRUE THEN

DBMS_OUTPUT.PUT_LINE ('Purchase Order which just got Closed/Finally Closed is ' po_head.segment1);

COMMIT;

ELSE

DBMS_OUTPUT.PUT_LINE ('API Failed to Close/Finally Close the Purchase Order');

END IF;

END LOOP;

END;



/**Note : You can change document_type_code to close others type also for eg. PA,RFQ,REQUISITION etc. */

Initializing the session oracle Apps R-12

FND_GLOBAL.APPS_INITIALIZE is used for initializing the session before calling any public or private API’s in Oracle EBusiness suite. Its not required for all the API’s but its recommended that you set this profile before making any calls to either private or public API. 


Listed below is a sample call to FND_GLOBAL.APPS_INITIALIZE function


fnd_global.APPS_INITIALIZE(user_id=>l_user_id, 
                           resp_id=>l_resp_id, 
                           resp_appl_id=>l_resp_appl_id);


l_user_id : fnd user ID which will be utilized during the call. 
l_resp_id : responsibility ID 
l_resp_appl_id : responsibility application ID. 

You can use either sysadmin or use some user who has all the above listed responsibilities or you can use your username.


You can get user id,responsibility_id and application_id from below query:

select fnd.user_id , 
          fresp.responsibility_id, 
          fresp.application_id 
from   fnd_user fnd,
       fnd_responsibility_tl fresp 
where  fnd.user_name = 'P_user_name' 
and    fresp.responsibility_name = 'P_Responsibility_name';


Another option to get the values from oracle front-end, login and open java forms and then go to below path :
Help > Diagnostics > Examine 

and get the values from $profile session values.

 Query to find concurrent request,requester,parameter and completion time


Sharing query to find all the information while running concurrent program like its parameter, who have run the program,actual start and completion time,current status and responsibility etc.

SELECT   REQUEST_ID,
                 PHASE_CODE,
                STATUS_CODE,
               RESPONSIBILITY_ID,
               ACTUAL_START_DATE,
              ACTUAL_COMPLETION_DATE,
              COMPLETION_TEXT,
              ARGUMENT_TEXT,
              PROGRAM_SHORT_NAME,
            REQUESTOR
  FROM APPS.FND_CONC_REQ_SUMMARY_V
 WHERE PROGRAM_SHORT_NAME LIKE 'P_CONCURRENT_PROGRAM_SHORT_NAME'
 ORDER BY REQUEST_ID DESC;

              Query to find Employee details,location and user

Sharing query to find employee details based on its location.You can get user name,employee id etc.


SELECT DISTINCT PER.FULL_NAME,
                PER.EMAIL_ADDRESS,
                FU.USER_NAME,
                PER.NATIONAL_IDENTIFIER,
                HL.DESCRIPTION,
                PT.SYSTEM_NAME,
                HO.NAME BU_NAME,
                PS.ORGANIZATION_ID OU
  FROM APPS.FND_USER                FU,
       APPS.PER_ALL_PEOPLE_F        PER,
       APPS.HR_LOCATIONS_ALL        HL,
       APPS.PER_PERSON_TYPES_V      PT,
       APPS.PER_ALL_ASSIGNMENTS_F   PS,
       HR.HR_ALL_ORGANIZATION_UNITS HO
 WHERE PS.LOCATION_ID = HL.LOCATION_ID
 AND PER.PERSON_TYPE_ID = PT.PERSON_TYPE_ID
 AND FU.EMPLOYEE_ID = PER.PERSON_ID
 AND PS.PERSON_ID = PER.PERSON_ID
 AND PS.ORGANIZATION_ID = HO.ORGANIZATION_ID
 AND TRUNC(SYSDATE) BETWEEN TRUNC(PER.EFFECTIVE_START_DATE) AND
 (PER.EFFECTIVE_END_DATE)
 AND TRUNC(SYSDATE) BETWEEN TRUNC(PS.EFFECTIVE_START_DATE) AND
 (PS.EFFECTIVE_END_DATE)
 AND (FU.END_DATE >= SYSDATE OR FU.END_DATE IS NULL)
 AND HL.location_id = P_location_id
 ORDER BY PER.FULL_NAME;

Bill Of Material - Routing query in oracle -R12


A routing defines the step-by-step operations you perform to manufacture a product. Each routing can have any number of operations. For each operation you specify a department that determines the resources you may use for that operation.

Here sharing query to get routing,item and its uom(unit of measure) information :

SELECT distinct bor.line_code,
                mtlp.organization_code,
                msi.segment1 parent_item_code,
                bor.alternate_routing_designator Alternate_routing,
                msi.description item_desc,
                msi.primary_uom_code uom,
                bos.operation_seq_num,
                operation_code,
                bos.operation_description,
                dep.department_code,
                borv.RESOURCE_SEQ_NUM,
                borv.resource_code,
                br.DESCRIPTION,
                crc.resource_rate,
                borv.usage_rate_or_amount,
                borv.usage_rate_or_amount_inverse,
                borv.ASSIGNED_UNITS
  FROM apps.bom_operational_routings_v bor,
       apps.bom_operation_sequences    bos,
       apps.mtl_system_items_b         msi,
       apps.mtl_parameters             mtlp,
       apps.bom_departments            dep,
       apps.bom_standard_operations    bso,
       apps.bom_operation_resources_v  borv,
       apps.bom_resources              br,
       apps.cst_resource_costs         crc
 WHERE bor.routing_sequence_id = bos.routing_sequence_id
   AND msi.organization_id(+) = bor.organization_id
   AND msi.inventory_item_id(+) = bor.assembly_item_id
   AND msi.organization_id = mtlp.organization_id
   AND bos.department_id = dep.department_id
   AND bso.standard_operation_id(+) = bos.standard_operation_id
   AND borv.operation_sequence_id(+) = bos.operation_sequence_id
   AND crc.resource_id = borv.resource_id
   AND br.resource_id = borv.resource_id
   AND br.organization_id = crc.organization_id
   and crc.COST_TYPE_ID = 1
   AND bos.disable_date is null
   AND bor.cfm_routing_flag != 1
   and msi.organization_id=P_organization_id

List of tables based on module and schema in oracle Apps R-12


Tables related to order management module
1.Blanket tables
BLANKET
ONT.OE_BLANKET_HEADERS_ALL
BLANKET
ONT.OE_BLANKET_HEADERS_EXT
BLANKET
ONT.OE_BLANKET_LINES_ALL
BLANKET
ONT.OE_BLANKET_LINES_ALL
BLANKET
ONT.OE_BLANKET_LINES_EXT
2.BOM(Bill of Materials) tables
BOM
BOM.BOM_COMPONENTS_B
BOM
BOM.BOM_DEPARTMENTS
BOM
BOM.BOM_OPERATIONAL_ROUTINGS
BOM
BOM.BOM_OPERATION_RESOURCES
BOM
BOM.BOM_OPERATION_SEQUENCES
BOM
BOM.BOM_RESOURCES
BOM
BOM.BOM_STANDARD_OPERATIONS
BOM
BOM.BOM_STRUCTURES_B
CUSTROUT
BOM.BOM_CALENDARS
CUSTROUT
BOM.BOM_CALENDAR_DATES
CUSTROUT
BOM.BOM_CALENDAR_EXCEPTIONS
CUSTROUT
BOM.BOM_CALENDAR_SHIFTS
CUSTROUT
BOM.BOM_CAL_WEEK_START_DATES
CUSTROUT
BOM.BOM_CAL_YEAR_START_DATES
CUSTROUT
BOM.BOM_EXCEPTION_SETS
CUSTROUT
BOM.BOM_EXCEPTION_SET_DATES
CUSTROUT
BOM.BOM_PERIOD_START_DATES
CUSTROUT
BOM.BOM_SHIFT_DATES
CUSTROUT
BOM.BOM_SHIFT_EXCEPTIONS
CUSTROUT
BOM.BOM_SHIFT_TIMES
CUSTROUT
BOM.BOM_WORKDAY_PATTERNS
CUSTROUT
WSH.WSH_CALENDAR_ASSIGNMENTS
Sales order base tables
ORDER
ONT.OE_ORDER_HEADERS_ALL
ORDER
ONT.OE_ORDER_LINES_ALL
ORDER
ONT.OE_ORDER_LINES_ALL
Tables related Delivery
ORDER
WSH.WSH_DELIVERY_ASSIGNMENTS
ORDER
WSH.WSH_DELIVERY_DETAILS
ORDER
WSH.WSH_DELIVERY_LEGS
ORDER
WSH.WSH_NEW_DELIVERIES
ORDER
last_sale_info
Tables related to contract module
CONTRACT
OKC.OKC_K_GROUPS_B
CONTRACT
OKC.OKC_K_GROUPS_TL
CONTRACT
OKC.OKC_K_GRPINGS
CONTRACT
OKC.OKC_K_HEADERS_ALL_B
CONTRACT
OKC.OKC_K_ITEMS
CONTRACT
OKC.OKC_LINE_STYLES
CONTRACT
OKC.OKC_LINE_STYLES_TL
CONTRACT
OKS.OKS_BILL_CONT_LINES
CONTRACT
OKS.OKS_BILL_TRANSACTIONS
CONTRACT
OKS.OKS_BILL_TXN_LINES
CONTRACT
OKS.OKS_K_HEADERS_B
CONTRACT
OKS.OKS_K_LINES_B
CONTRACT
OKS.OKS_K_LINES_TL
CONTRACT
OKS.OKS_SUBSCR_HEADER_B
CONTRACT
OKS.OKS_SUBSCR_HEADER_TL
Tables related to AR module (TCA acrctitucture)
CUSTOMER
APPLSYS.FND_DOCUMENTS_SHORT_TEXT
CUSTOMER
APPS.FND_DOCUMENTS_VL
CUSTOMER
AR.AR_CONS_BILL_CYCLES_B
CUSTOMER
AR.AR_CONS_BILL_CYCLES_TL
CUSTOMER
AR.AR_STATEMENT_CYCLES
CUSTOMER
AR.HZ_CONTACT_POINTS
CUSTOMER
AR.HZ_CUSTOMER_PROFILES
CUSTOMER
AR.HZ_CUST_ACCOUNTS
CUSTOMER
AR.HZ_CUST_ACCOUNT_ROLES
CUSTOMER
AR.HZ_CUST_ACCT_SITES_ALL
CUSTOMER
AR.HZ_CUST_PROFILE_AMTS
CUSTOMER
AR.HZ_CUST_SITE_USES_ALL
CUSTOMER
AR.HZ_LOCATIONS
CUSTOMER
AR.HZ_ORG_CONTACTS
CUSTOMER
AR.HZ_PARTIES
CUSTOMER
AR.HZ_PARTY_SITES
CUSTOMER
AR.HZ_RELATIONSHIPS
CUSTOMER
AR.HZ_RELATIONSHIP_TYPES
CUSTOMER
AR.HZ_ROLE_RESPONSIBILITY
CUSTOMER
AR.RA_RULES
CUSTOMER
AR.RA_TERMS_B
CUSTOMER
AR.RA_TERMS_TL
CUSTOMER
AR.RA_TERRITORIES
CUSTOMER
GL.GL_LEDGERS
Tables related to organizations :
CUSTOMER
HR.HR_ALL_ORGANIZATION_UNITS
CUSTOMER
HR.HR_ALL_ORGANIZATION_UNITS_TL
CUSTOMER
HR.HR_ORGANIZATION_INFORMATION
Tables related to  CRM:
CUSTOMER
JTF.JTF_RS_RESOURCE_EXTNS
CUSTOMER
JTF.JTF_RS_RESOURCE_EXTNS_TL
CUSTOMER
JTF.JTF_RS_SALESREPS
Tables related to  iSTORE:
CUSTOMER
istore_Accounts
CUSTOMER
istore_Enrollments
CUSTOMER
istore_Roles
FND Tables:
FND
APPLSYS.FND_APPLICATION
FND
APPLSYS.FND_APPLICATION_TL
FND
APPLSYS.FND_LOOKUP_VALUES
FND
APPLSYS.FND_TERRITORIES
FND
APPLSYS.FND_TERRITORIES_TL
FND
APPLSYS.FND_TIMEZONES_B
FND
APPLSYS.FND_TIMEZONES_TL
ITEM
APPLSYS.FND_DOCUMENTS_SHORT_TEXT
ITEM
APPS.FND_DOCUMENTS_VL
Tables related to Item :
ITEM
BOM.CST_ITEM_COSTS
ITEM
GL.GL_CODE_COMBINATIONS
ITEM
HR.HR_LOCATIONS_ALL
ITEM
HR.HR_LOCATIONS_ALL_TL
ITEM
HR.PER_ALL_PEOPLE_F
ITEM
INV.MTL_ATP_RULES
ITEM
INV.MTL_CATEGORIES_B
ITEM
INV.MTL_CATEGORIES_TL
ITEM
INV.MTL_CATEGORY_SETS_B
ITEM
INV.MTL_CATEGORY_SETS_TL
ITEM
INV.MTL_COMMODITY_CODES
ITEM
INV.MTL_CUSTOMER_ITEMS
ITEM
INV.MTL_CUSTOMER_ITEM_XREFS
ITEM
INV.MTL_ITEM_CATEGORIES
ITEM
INV.MTL_ITEM_LOCATIONS
ITEM
INV.MTL_ONHAND_QUANTITIES_DETAIL
ITEM
INV.MTL_PARAMETERS
ITEM
INV.MTL_SYSTEM_ITEMS_B
ITEM
INV.MTL_SYSTEM_ITEMS_B
ITEM
INV.MTL_SYSTEM_ITEMS_TL
ITEM
INV.MTL_UNITS_OF_MEASURE_TL
ITEM
APPLSYS.FND_DOCUMENTS_SHORT_TEXT
ITEM
APPS.FND_DOCUMENTS_VL
ITEM
MRP.MRP_ASSIGNMENT_SETS
ITEM
MRP.MRP_SOURCING_RULES
ITEM
MRP.MRP_SR_ASSIGNMENTS
ITEM
MRP.MRP_SR_RECEIPT_ORG
ITEM
MRP.MRP_SR_SOURCE_ORG
ITEM
PO.PO_HAZARD_CLASSES_B
ITEM
PO.PO_HAZARD_CLASSES_TL
ITEM
PO.PO_UN_NUMBERS_B
ITEM
PO.PO_UN_NUMBERS_TL
Oracle Installed Base Tables:
OAT
CSI.CSI_IEA_VALUES
OAT
CSI.CSI_II_RELATIONSHIPS
OAT
CSI.CSI_INSTANCE_STATUSES
OAT
CSI.CSI_IPA_RELATION_TYPES
OAT
CSI.CSI_IP_ACCOUNTS
OAT
CSI.CSI_ITEM_INSTANCES
OAT
CSI.CSI_ITEM_INSTANCES_H
OAT
CSI.CSI_I_ASSETS
OAT
CSI.CSI_I_ORG_ASSIGNMENTS
OAT
CSI.CSI_I_PARTIES
OAT
CSI.CSI_I_VERSION_LABELS
OAT
CSI.CSI_I_VERSION_LABELS_H
OAT
CSI.CSI_T_PARTY_ACCOUNTS
OAT
CSI.CSI_T_PARTY_DETAILS
OAT
CSI.CSI_T_TXN_LINE_DETAILS
Tables related to PO(Purchase order):
PO
HR.PER_ALL_PEOPLE_F
PO
PO.PO_AGENTS
PO
PO.PO_DISTRIBUTIONS_ALL
PO
PO.PO_HEADERS_ALL
PO
PO.PO_LINES_ALL
PO
PO.PO_LINE_LOCATIONS_ALL
PO
PO.PO_LINE_TYPES_B
PO
PO.PO_REQUISITION_HEADERS_ALL
PO
PO.PO_REQUISITION_LINES_ALL
PO
PO.PO_REQ_DISTRIBUTIONS_ALL
PO
PO.RCV_SHIPMENT_HEADERS
PO
PO.RCV_SHIPMENT_LINES
PO
PO.RCV_TRANSACTIONS
Tables related to Price list:
PRICE
QP.QP_LIST_HEADERS_B
PRICE
QP.QP_LIST_HEADERS_TL
PRICE
QP.QP_LIST_LINES
PRICE
QP.QP_PRICING_ATTRIBUTES
PRICE
QP.QP_QUALIFIERS
Tables related to AP:
VENDOR
AP.AP_SUPPLIERS
VENDOR
AP.AP_SUPPLIER_SITES_ALL
VENDOR
AR.HZ_PARTY_USG_ASSIGNMENTS
VENDOR
GL.GL_CODE_COMBINATIONS
VENDOR
IBY.IBY_ACCOUNT_OWNERS
VENDOR
IBY.IBY_EXTERNAL_PAYEES_ALL
VENDOR
IBY.IBY_EXT_BANK_ACCOUNTS