Introduction...................................................................................... 3 Scope ................................................................................................ 3 Overview ...................................................................................... 3 Pre-requisites ................................................................................ 4 Features......................................................................................... 4 Setup ............................................................................................. 5 HRMS......................................................................................... 5 Sysadmin................................................................................... 7 Oracle Approvals Management (OAM)................................. 10 Attribute............................................................................... 11 Conditions ........................................................................... 12 Actions................................................................................. 13 Action Group ...................................................................... 15 Rules.................................................................................... 15 Test ...................................................................................... 19 Oracle Payables ...................................................................... 22 Simulation................................................................................... 23 Troubleshooting ......................................................................... 29 Technical Overview of Invoice Approval Flow.................... 29 Tables Related to Invoice Approval ...................................... 30 Workflow Tables ................................................................ 30 AME Tables ......................................................................... 31 Invoice Approval Program Flow........................................ 31 How to Track the Workflow Process ................................ 33 Conclusion...................................................................................... 35
Invoice Approval Workflow Page 3 Invoice Approval Workflow INTRODUCTION In todays world, business conglomerates and MNCs process huge number of invoices daily. Approving all the invoices by the appropriate authority is a painful process. Payables Invoice Approval Workflow process automate the approval process. SCOPE Scope of this white paper is as follows: Setup details involved in o Oracle Payables o Oracle Approval Management o Workflow A full Cycle explaining the usage of Invoice Approvals This paper will not cover general AME details and Worflow details Trouble shooting of Invoice Approval Workflow Overview What do you mean by Invoice Approval Workflow? It is a workflow process that enables you to automate the approval process. It helps in customizing and setting approval methodology based on: o Approver o Sequence of approval o Criteria for approval In what cases Invoice Approval workflow will not apply? o When the Expense Report is imported o In the case of Recurring invoices, if approval is not required as per the template o For those invoices before this feature is enabled Invoice Approval Workflow Page 4 o For invoices which are already processed
Pre-requisites What are the basic requirements to enable the Invoice Approval Workflow? o Oracle Payables Patchset 11i.AP.I (2266251) and above o Oracles Approval Management with following patches (2198768,2220334,2228792,2257526,2271164,2274701) Features The approval can be submitted through: o Invioces > Actions > Initiate Approval o Concurrent Program Invoice Approval Workflow The approval can be done through o E-mail o Workflow notification If the invoice is rejected, user has three options: o Force approve the invoice or o Cancel the invoice or o Re-submit the invoice Invoice can be re-submitted only if Approval Status is Required/Not Required/Rejected/Approved using Invoices > Action > Initiate approval only If Require Validation before approval is enabled in Payable Options, then Invoice must be validated before approval If you submit the approval using Invoice approval workflow, then invoice must meet following criteria for selection: o Should be validated if Require Validation before approval is enabled in Payable Options o Approval Status should be o Required o Other than Initiated or Manually approved o Invoice amount equals distributions total Invoice Approval Workflow Page 5 o Ready for approval is checked for invoice o Requestor field should not be null
Setup As far as setup is concerned with regard to Invoice Approval Workflow, it involves o HRMS o Sysadmin o Oracle Approvals Management (AME) o Workflow o Payables HRMS In HRMS, you need to create employees and assign supervisors. In our test case, we are going to create the following employees and their supervisors: Employee Name Supervisor Name The Clerk The Supervisor The Supervisor The Manager The Manager The CEO
Invoice Approval Workflow Page 6
Invoice Approval Workflow Page 7
Sysadmin In System Adminstrator Responsibility, you need to create the following users and assign them the following responsibilities: User Name Responsibilites (minimum responsibilities to be assigned) THE CLERK Payables, Approval Management (OAM), Workflow THE SUPERVISOR Payables, Approval Management (OAM), Workflow THE MANAGER Payables, Approval Management (OAM), Workflow THE CEO Payables, Approval Management (OAM), Workflow Invoice Approval Workflow Page 8
Following are the screenshots of the above:
Invoice Approval Workflow Page 9
Invoice Approval Workflow Page 10
Oracle Approvals Management (OAM) In Oracle Approvals Management, You need to create a Rule for the Transaction Type Payables Invoice Approval. In our test case, we will see how to create a Rule in AME for Payables Invoice Approval. We will not be going indepth about Oracle Approvals Management in this white paper. To create a rule in Approval Management, we need to create the following and then attach to the rule: 1. Attribute An attribute is a business variable that has exactly one value for a given transaction. Examples are Invoice Amount, Invoice Lookup Type, Payment terms etc., 2. Condition The IF part of an approval rule is the condition. It may consistis of one or more conditions each of which is either true or false. For a rule to apply to a transaction, all the condition must be true for the transaction. We can create conditions based on the attributes. Ordinary header condtions are based on columns of the Invoice Header i.e, AP_INVOICES_ALL table Example are if the INVOICE_AMOUNT <= 5000 US Dollars Ordinary line item conditions are based on columns found in the invoice distributions i.e, AP_INVOICE_DISTRIBUTIONS_ALL table Examples are DISTRIBUTION_LINE_TYPE_LOOKUP_CODE, DISTRIBUTION_AMOUNT etc., 3. Actions An Action is an instruction to AME to modify a transaction's approval process in some fashion. An approval rule's "then" part (its "consequent") consists of one or more actions. Actions that modify a transaction's approver list are approval actions or simply approvals. Actions that generate a production (a variable-name/value pair) are production actions.
Invoice Approval Workflow Page 11 Once we create the above for the transaction type Payables Invoice Approval, we need to create a rule and attach the above for the rule. Following are the screenshots of how to create an attribute, condition and approval and then attach all these to a rule. Attribute Responsibility: AME Application Administrator N > Approvals > Attributes 1. Change the transaction type to Payables Invoice Approval from the list of values and select the continue button. 2. Scroll to the end of the attributes page and select the Add Attribute button. 3. Select the header attribute button. 4. Select Create New Name button from the Create an Attribute. 5. Enter SUPPLIER INVOICE AMOUNT in the name field and select the continue button. 6. Select an Attribute type of currency. 7. Enter Invoice amount in the description field. 8. Select static usage as no. Attribute usages define how the value is determined at the run time. If it is a static usage, then you can define a constant value for the transaction type. If it is a dynamic usage, then you need to define a SQL query for the transaction type that uses the attribute. In our case, it is a dynamic usage and the following SQL query is used select fnd_number.number_to_canonical(ai.INVOICE_AMOUNT), nvl(ai.Invoice_Currency_Code,asp.Invoice_Currency_Code), nvl(ai.Exchange_Rate_Type,asp.Default_Exchange_Rate_Type) from ap_invoices_all ai, ap_system_parameters_all asp where ai.invoice_id = :transactionId and ai.org_id = asp.org_id 9. Select the Create Attribute button. Note: AME will confirm the creation of the attribute for you. 10. Select the Quit button to return back to the main menu page.
1. Change the transaction type to Payables Invoice Approval from the list of values and select the continue button. 2. Scroll to the end of the conditions page and select Add a Condition button. 3. Select an ordinary header condition type. 4. Select the continue button. 5. In the attribute field select SUPPLIER INVOICE AMOUNT from the list of values. 6. Select the continue button. 7. Select the Currency code as USD 8. Enter 0 in the lower limit field. 9. Enter 5000 in the upper limit field. 10. Select yes for include lower limit. Invoice Approval Workflow Page 13 11. Select yes for include upper limit 12. Select the Create Condition button. 13. AME will confirm the condition being added successfully.
Actions Responsibility: AME Application Administrator N > Approvals > Approvals Note: that actions are common to all transaction types so you do not need to select the Payables Invoice Approval transaction type. In the actions types page view scroll down to view the absolute job level action type and note that it has 2 required attributes: INCLUDE_ALL_JOB_LEVEL_APPROVERS Invoice Approval Workflow Page 14 JOB_LEVEL_NON_DEFAULT_STARTING_POINT_PERSON_ID Verify that these attributes have been defined with the Payables Invoice Approval transaction type. N > Approvals > Attributes 1. Select the Payables Invoice Approval transaction type from the list of values. 2. Select the continue button. 3. Scroll down and check the non-mandatory attributes list to see if the following two attributes appear: INCLUDE_ALL_JOB_LEVEL_APPROVERS JOB_LEVEL_NON_DEFAULT_STARTING_POINT_PERSON_ID 4. Add these attributes if they are missing. 5. Select the Quit button to return back to the main menu page.
AME includes a set of seeded action types, many of which enable you to ascend commonly used organizational hierarchies. If none of the seeded action types meets your organization's requirements, you need a custom action type. An AME user with administrative privileges must use the actions tab to define a new action type. (this is not the scope of this paper and hence not Invoice Approval Workflow Page 15 disucussed here). For our test case, we will use the seeded action type absoulute job level).
Action Group
Action Group is out of the scope of this material. If you want to know more about Action Group, then please refer Implementing Oracle Approvals Management, Release 11i10.
Rules
Creating rules and rule usages is the main step in the AME implementation process. Rarely will an organizations business rules match any rules that are seeded with a transaction type. Instead, you must translate the business rules you documented into AME rules yourself.
Rule associate one or more conditions with an approval in an if- then statement. Before you can create rules, you must create conditions for the rules to use. You may need to create (or have a system administrator create) some custom attributes and/or approvals. You may also need to create some approval groups. Thus, while creating rules is your ultimate goal, it is also the last thing you do when you set up AME.
How to creat a Rule: N > Approvals > Approvals 1. Press on Rule tab 2. Click on the Add Rule and Usage tab 3. Give the name of the Rule in the Description. Rule Key will be automatically displayed. 4. Give appropriate Start and End date for the rule and then press continue button 5. Select the appropriate Action Types (in our case chains of authority based on absolute job level action type is selected) and press continue. The action type will change according to the Rule Type selected. 6. Select the appropriate absoulute job level actions and press continue 7. Select the appropriate Subordinate item class and press continue 8. Select the appropriate Header Attributes. In our case SUPPLIER_INVOICE_AMOUNT is selected and press continue 9. Select the appropriate condition and press continue. 10. This will create the rule
Invoice Approval Workflow Page 16
Creation of Rule Step 1
Creation of Rule Step 2 Invoice Approval Workflow Page 17
Creation of Rule Step 3 Creation of Rule Step4
Invoice Approval Workflow Page 18
Creation of Rule Step 5
Creation of Rule Step 6
Invoice Approval Workflow Page 19
Creation of Rule Step 7
Test Approval Management allows users to test the approval process independent of the Invoice Approval Workflow. This will help determine where the problem is occurring, either in OAM or the Invoice Approval Workflow. How to test a rule in OAM: N > Approvals > Approvals 1. Go to Test Tab 2. Select a Test Type a. to test a real transactions approval process, you need to give the item key which will be the invoice_id. In this case check the View a real transactions approval process check box b. to test the rule created in OAM in order to check the approval process, you can select create a test transaction 3. Select the transaction requestor type 4. Search for the person and select the person Invoice Approval Workflow Page 20 5. Enter the transaction attribute values 6. Press View approval process button to view the approval process 7. Press View approver list to view the list of approvers
Testing a Rule Step 1 Testing a Rule Step 2
Invoice Approval Workflow Page 21
Testing a Rule Step 3
Invoice Approval Workflow Page 22
Oracle Payables N > Payables > Setup > Options > Payables Options 1. Check the Use Invoice Approval Workflow check box. 2. Check the Allow Force Approval vheck box, if you want to force approve the invoice in which case the approval process will be bypassed. 3. Check the Require Validation before Approval check box if you want to validate the invoice before it is picked up by the approval process
Invoice Approval Workflow Page 23
Simulation 1. Go to Oracle Payables 2. Enter a Standard Invoice with Requestor name populated 3. Validate the invoice Invoice Approval Workflow Page 24 4. Intitiate the invoce by checking the Intitate Approval Checkbox in the Action window 5. Check the approval field and view the Invoice Approval History (Tools > View Invoice Approval Hisotry) Invoice Approval Workflow Page 25
6. Run the Workflow Listener for Agent name WF_DEFFERED in Sysadmin
Invoice Approval Workflow Page 26 7. Check on the status of the approval process in Payables in View Invoice Approval History form by querrying the invoice.
8. Login in to corresponding User Name in whose name the action is pending (Login as Supervisor) 9. Selection the Notification from the worklist 10. Check the Notification details and approve Invoice Approval Workflow Page 27
11. Check the invoice Approval Status after the Supervisors approval.
Invoice Approval Workflow Page 28 12. Similarly you need to login as next approver (manager) and repeat the process and following will be the invoice approval status after managers approval
13. Invoice Approval status after the final approver (CEO)
Invoice Approval Workflow Page 29
Troubleshooting Technical Overview of Invoice Approval Flow
On running the Wf Agent Listener: Event subscriptions are executed Event subscriptions Triggers: APINV workflow Process APINV_MPO Node check PO Match ap_wfapproval_pkg APINV_IA Node get approvers: using AME_APIs in ap_wfapproval_pkg.get _approvers APINV_SN Node: send notifications and gets the feedback APINV_UAH Node: Updates the history APINV_UAH1 Node: Updates the history Approval Process ends (No More Approvers) Approval Process ends (If Rejected) Approval Process ends (If matched) Invoice Approval Workflow Page 30 Tables Related to Invoice Approval Workflow Tables Table Name Usage WF_EVENTS, WE_EVENTS_SUBSCRIPTIONS Consists complete list of events and events subscriptions along with licensing details WF_DEFERRED Stores details of the events that requires to be submitted to workflow WF_ERROR If the Workflow Agent Listener errors, then a record is logged in this table
Query to access WF_DEFERRED and WF_ERROR table details Select w.user_data.event_name EVENT_NAME,w.user_data.event_key EVENT_key, w.* from WF_DEFERRED w where w.user_data.event_name like 'oracle.apps.ap.event.invoice.approval and w.user_data.event_key like '57936_1'; Note : 1. These tables consists data-type Object. 2. Above queries will work on 8.1.5+ Sql*Plus version. 3. Can replace WF_DEFERRED with WF_ERROR
WF_ITEM_TYPES_TL Consists complete list of workflow item types WF_ITEM_ATTRIBUTES_TL Consists attributes defined for a workflow item type WF_ACTIVITIES_TL, WF_PROCESS_ACTIVITIES Consists activities defined for a workflow item type WF_ITEMS Consists item type and item key. One record exists for every invoice submitted for approval WF_ITEM_ATTRIBUTE_VALUES Consists attribute values used during approval workflow WF_ITEM_ACTIVITY_STATUSES Consists item key activity status Invoice Approval Workflow Page 31 WF_NOTIFICATIONS Consists notification details
Query to get notification details select NOTIFICATION_ID, MESSAGE_TYPE, substr(subject,1,30), STATUS, substr(RECIPIENT_ROLE,1,20) from wf_notifications where message_name = 'APINV_MRA and RECIPIENT_ROLE = 'THECEO' Note: In where clause we can use notification_id from the WF_ITEM_ACTIVITY_STATUSES.Notification_id WF_USERS, WF_ROLES, WF_USER_ROLES Used to identify the notification users notification preferences AME Tables AME_TRANSACTION_TYPES_V Consists AME transaction types lists AME_ATTRIBUTES, AME_CONDITIONS, AME_ACTIONS, AME_ACTION_TYPES, AME_APPROVAL_GROUPS Consists details of AME attributes, condistions and approval lists AME_RULES, AME_CONDITION_USAGES, AME_ATTRIBUTE_USAGES, AME_RULE_USAGES, AME_ACTION_TYPE_USAGES Consists rules and usage of attributes, conditions and approval list in the rules AME_APPROVAL_HISTORY Stores transaction id of the approval process and the peron id who approved the transactions Query to retrieve details from approval history select * from AME_APPROVALS_HISTORY where TRANSACTION_ID = '57936 (transaction_id = invoice_id) Invoice Approval Program Flow On initiating the invoice approval process from APXINWKB (invoice work bench form) program unit inv_sum_actions_wfapprove.do_wfapproval is called. inv_sum_actions_wfapprove.do_wfapproval calls ap_wfapproval_pkg.iaw_raise_event Invoice Approval Workflow Page 32 ap_wfapproval_pkg.iaw_raise_event calls wf_event.raise. This enqueues the event in appropriate queue (e., WF_Deferred queue) after checking the license and enabled flag Web agent listener (FNDWFLST) with WF_deferred as parameter executes PL/SQL function wf_event.listen_concurrent. This executes the event subscriptions after checking the license and enabled flag Subscription execution can be (defined in action section) o Rule function execution (PL/SQL program) o Or Starting a Work flow process (APINV) . APINV (AP Invoice), workflow process start at event activity receive and control is passed to Node APINV_MPO (Check if Matched to PO) APINV_MPO (Check if Matched to PO) is function activity. Checks the invoice match to PO using PL/SQL function AP_WFAPPROVAL_PKG.iaw_po_check If the Match is No then the control is passed to Node APINV_IA (Identify Approver). APINV_IA (Identify Approver) is Function activity. PL/SQL function AP_WFAPPROVAL_PKG.get_approvers is executed. AP_WFAPPROVAL_PKG.get_approvers in turn calls AME_API and gets approver. It also assign value for Item attribute Role_Name If AP_WFAPPROVAL_PKG.get_approvers returns Yes then the control is passed to Node APINV_SN (Send Notifications) APINV_SN (Send Notifications) is Process Activity. So this process is triggered and starts at function activity Start and control is passed to Node APINV_AR (Approval request) APINV_AR (Approval request) is Notification Activity. This sends the notification to performer defined. (i.e role_name. Should exists in wf_users). Row is inserted in wf_notifications table. Once the performer approves the invoice PL/SQL function AP_WFAPPROVAL_PKG.notification_handler is executed After this the APINV_SN (Send Notifications) ends with Approved status. So, control is passed to parent Process onto the Node APINV_UAH (Update Approval History) . APINV_UAH (Update Approval History) is Function activity and PL/SQL function AP_WFAPPROVAL_PKG.update_history is Invoice Approval Workflow Page 33 executed and control is passed back to Node APINV_IA (Identify Approver) Cycle of APINV_IA (Identify Approver) ---> APINV_SN (Send Notifications) ---> APINV_AR (Approval request) ---> APINV_UAH (Update Approval History) ends once APINV_IA (Identify Approver) returns No. Important packages involved: AP : AP_WFAPPROVAL_PKG AME : AME_API, AME_API2, AME_UTLI WF : WF_EVENT, WF_ENGINE, WF_DIRECTORY etc., Other details: Event : oracle.apps.ap.event.invoice.approval Wf_item_type : APINV WFT file name : apfiawie.wft (APInvoice) AME Transaction type : APINV
How to Track the Workflow Process Event Queue Summary o WF_DEFERRED Queue (when approval is initiated a request with the invoice id is placed in this queue) After an invoice is initiated, it will be viewable via the Event Queue Summary window through the System Administrator Responsibility. N > Syadmin > Workflow > Event Queue Summary 1. Check the agent name WF_DEFERRED and press torch icon in View detail column 2. Find the Event in WF_DEFERRED Queue Find Process to attribute values and error details Once the Workflow Agent Listener has completed, you can view this status of this invoice_id. N > Sysadmin > Workflow > Find Processes 1. Enter criteria to Find Process 2. Check the Process Status (Item Key will be invoice_id followed by underscore 1. Ex: 22403_1). Flag indicates that Invoice Approval Workflow Page 34 the process is completed successfully. Red traffic light indicates that the process did not completed successfully Find Notifications page Once the notification process has completed, you can view the status of the notification if the invoice. N > Sysadmin > Workflow > Find Notifications If you know the notification_id, you can query the notification otherwise, you can query the notification of the particular owner or type or status. Test tab to check the Approval details in AME Once you know the invoice_id for which the approval process is initiated, you can check the approval status for the invoice_id in AME. N > Approvals > Test tab 1. Check View a real transaction approval process and press continue 2. Provide the invoice_id value in the field Transaction ID and press Fetch attribute values 3. Press View approval process button to view the approval process 4. Press View approver list to view the list of approvers Admin tab to check the Approval Exception Log in AME Exception logs of the approval process can be viewed in AME to know the details of the exception N > Approvals > Admin tab You need to choose the activity View a transactions type exception log and press continue to view the details of the exception Wfstatus.sql This script is used to get the details of the Item Key (invoice_id) and its attribute values. How to run this script 1. Go to $FND_TOP/sql 2. Connect to SQLPLUS as apps 3. Run the following command Invoice Approval Workflow Page 35 @wfstatus <Item Type> <Item Key> Ex: @wfstatus APINV 57936_1 APINV is the item type and 57936_1 is the item key (invoice_id)
CONCLUSION
In todays complex business sceanario, Invoice Approval Workflow will help in great extent in automating the Invoice Approval Process which will save time and cost to the company and will help in business growth.
White Paper Title January 2005 Author: Sundaram Sriram Contributing Authors: Tumu Krishna Ashok Srinivasan
Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A.
Copyright 2003, Oracle. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.