Professional Documents
Culture Documents
Property Manager IFRS Data Model Document
Property Manager IFRS Data Model Document
The impacts from the standards can be classified under two categories:
Of the two above changes, the changes to Lessee/Tenant Accounting are significant and this document
deals with the primary requirements and their solution implemented in Oracle Property Manager. These
new standards significantly impact the accounting for lessees for real estate tenants, requiring them to
recognize most leases (example: rental contracts) on their balance sheets as lease liabilities with
corresponding right-of-use assets.
Subledger Accounting Method (SLA) so that create accounting can process the IFRS related Accounting
events and interface the same to General Ledger.
New Accounting events have been seeded to solution accounting for lifecycle of lease. They are:
Booking Event- When Lease is activated first time or Migrated, carrying balances for ROU/Lease Liability
are brought onto the books through this event
Revision Event - All changes to the lease in the form of amendments for Extending life of lease, addition
of new payment terms, reclassification of lease, change in discount rate etc impact ROU/Liability
balances and also the future streams for Interest and Amortizations. This event will capture amounts
from such recalculations
Termination Event - Lease/Payment Term Contraction leads to decrease in ROU/Liability balances and
can also lead to gain/loss from such changes. Future streams and balances need to be negated and
accruals till termination date will need to be calculated.
Accruals- Period end expenses for Lease Expense-FASB and Interest/Amortization for IFRS are generated
at the time of Lease Activation. Transactions for these expenses are however are generated during
accrual process.
AP Invoice - Lease liability is maintained by decreasing it with every Lease Payment(Lease Liability
checked) and adding interest expense to it.
Below slides capture suggested debits and credits over the life of the lease. This accounting is triggered
only after “Transition Process” is completed
For more details on the accounting setup refer metalink note: Whitepaper : Sub Ledger Accounting
Configuration for Property Manager IFRS Accounting (Doc ID 2396463.1)
2.3Transition Setup:
This generate both IFRS16 and ASC842 streams for a lease, identified by regime code. This setup is done
at OU level.
Payment Terms:
Options feature has been enhanced to include options, which are certain to be exercised from tenant’s
perspective, into the calculations. Payment term information like amounts, start date, escalation
amount, escalation percentage etc have been included to capture information needed for calculations.
Options are used to capture information on “Termination”, “Purchase”, “Renewal” options. This tab is
optional
Finalizing the lease and Schedules and items program get kicked off
Post this Run Generate Lease Details Report to get the ROU Asset Calculation, Lease Liability Calculation
and ROU Balance and Amortization Calculation. This report is divided into 3 parts:
Header: It provides basic lease details and parameters which affect the calculation
Report Body:
Interest and Expense calculation: This part of report shows periodic interest and amortization expense
calculation for the lease. Below is a sample output
Amortization Schedules for lease: This part of the report body shows detailed calculation based on
compliance select for ROU Asset, Lease Liability and Balance calculation for US GAAP and IFRS option.
Below is the sample screenshot:
As a part of this enhancement request, a new “Transaction page” has been introduced for the user to
view the different transaction events generated for a particular lease and also to drill down to the
accounting event of each of these transaction types
Further checking the transaction details. Click transaction Number value for the details
Similarly using View Journal Button Journal status and event can be checked
PN_LEASE_STREAM_TEMP PNTAB.odf
PN_STREAMS_ALL PNTAB.odf This is a base table which
stores various streams based
on lease change id
PN_STREAM_LINES_ALL PNTAB.odf This is a base table which
stores data based on each
stream id and lease id for
various stream date
5. Objects (Packages) added/modified for IFRS
Deletes existing data and is called by lease archive program for the given date range.
This package has various functions to get commencement date, interest rate, calculate PV, calculation
logic to full period or partial period, to check all eligible leases for calculation, generate amortization
schedule and calculation of ROU balance, Liability Balance and amortization amount for each period.
This is the create accounting package and has various functions and procedures to logic to Normalization
accounting ROU and Liability account, logic for accrual process
Function procedure for processing data: reverse_accural_trx – sets transaction to Reversed for
transaction type Accural when transaction status is in Processed or Unprocessed Status,
generate_transaction- inserts data into pn_acct_trx_headers_all, pn_acct_trx_lines_all and updates
pn_stream_lines_all based on transaction type , generate_accrual_trx- inserts data into
pn_acct_trx_headers_all, pn_acct_trx_lines_all for Accrual Transaction.
This script inserts updates PN Interest. Using pn_interest_index_headers_s sequence it inserts and
updates data into PN_INTEREST_INDEX_HEADERS
This script inserts updates PN Interest. It inserts and updates data into PN_INTEREST_INDEX_LINES
With respect to IFRS it contains logic for ROU Asset and Liability Calculation
create_payment_term_record - rou asset, liability flag logic added to pn_payment_terms_all and calls
pnt_payment_terms_pkg to insert data when schedule and item program is run.
PNINRPRS.pls and PNINRPRB.pls
This package basically contains procedures used to maintain index rent periods. For IFRS it has included
the logic for ROU and Liability flag columns are part of Aggregation, New payment terms inherit values
thru aggregation or from payment term template .Procedure recalc_ot_payment_terms calls
pn_index_amount_pkg to create payment term and has amended the logic for calculation based on flag
ROU asset and liability flag value
This is a newly created package and it inserts data into pn_lease_chg_details table for lease changes
This is a newly created package and has various functions and procedures to fetch details like
get_accounting_status, get_lease_status, get_transition_date, get_lease_liability, get_change_date,
get_transaction_ledger and get_duration
PNLSPUBB.pls
For IFRS enhancement logic is added for accounting method and Discount rate index to be included as
part of lease during lease addition before calling pn_lease_pvt API to create lease. Here for
remeasurement (relinking terms) create_remeasurement_term procedure has been introduced as part
of IFRS. If remeasurement has been done using relinking then at pn_payment_terms_all and for the
newly created term via relinking source_payment_term_id filed will be populated with the
payment_term_id of enddated payment_term_id
Code added to accommodate accounting method, discount interest rate and adder rate in lease create,
edit and amend code and similarly for payment term create and update call added ROU Asset , Liability
and Report Inception Flag
This is an existing utility package for lease creation and updation in PN. It has procedure
GET_DISCOUNT_RATE_INDEX_ID added to validate discount rate index and return discount rate Index
id as part of IFRS changes
Function/procedure to fetch data: get_last_run_date- checks last run date from pn_streams_all,
get_transition_date – checks transition date from pn_system_setup_options, get_end_bal – checks
pn_streams_all and pn_stream_lines_all for amount based on stream id and regime ,
get_period_amount checks pn_streams_all and pn_stream_lines_all for amount for a period,
get_change_commencement_date – checks pn_lease_changes_all toc ehck for any changes done via
Amend get_last_calc_balances- checks beginning balance for stream ROU and liability ,
get_cum_exp_amt checks cumulative expense for a given term and table used is
pn_stream_cash_last_ver, get_cash_items – finds the cash items generated for the eligible leases and
calculate present value for ROU , Liability amounts for each payment amount,
get_cash_items_recalc_lease- finds eligible leases for recalculation
This Package contains function and procedure to generates streams, transaction and events for
transition date balances. It has calls for pn_streams_calculation , pn_lease_trx_pkg and
pn_xla_accounting_events and it calculates and upload portfolio balance as on date.
This package contains the PL/SQL procedures that should be able to upgrade leases in Oracle Property
Manager to make eligible for ROU asset and liability balance calculations. This package has checks if the
lease is an expense lease, checks lease level attributes, validates accounting method , discount rate
index and updates pn_leases_all and PN_LEASES_HIST table accordingly .
This package contains function and procedure for creating Create Accounting Events for the transitions.
Create_Xla_Acc_Event creates SLA events for all transition which are in unprocessed status.
pnupgclc.sql
19.1 This is the upgrade script for PN IFRS ER. Calculations data will be deleted if any term/option with
payment currency different from functional currency. This script is expected to be executed only once
when the IFRS Patch is applied. It will executed as part of the patch application
5.2 Source Code to Capture Lease change events
1.PNTLEASE.pld
changes in the above call is as below to insert accounting method, adder rate and index discount rate
,x_change_rate_index_id =>
NAME_IN('amlease_blk.change_discount_rate_index_id')
Here code is checking for condition for lease termination and based on that it is calling
PN_LEASE_CHANGE_DETAILS_PKG.INSERT_ROW
l_change_event := 'RENEWAL';
l_change_type := 'REVISION';
ELSIF SYSDATE < trunc(l_leaseTerminationdate) AND trunc(l_old_termination_date) >
l_leaseTerminationdate THEN
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_AFTER';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_CURRENT';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_BEFORE';
END IF;
1.2 For Scenario rate index id change and accounting method change
pntlease_wblease_cpg.handle_lease_status(event);
END IF;
l_lease_option_context := pntlease_context_cpg.lease_option_context;
l_org_id := NAME_IN('WBLEASE_FDR_BLK.org_id');
pn_options_periods_items.options_items
);
END IF;
PNTLEASE_CPG.EVENT
On-commit trigger
Check if lease change detail only have rate index id change and accounting method change, if yes, start
the stream and transaction generation.
2.2 Modify procedure INSERT_ROW and Update_ROW to insert record into table
PN_LEASE_CHG_DETAILS
l_change_type := 'BOOKING';
l_change_event := 'BOOKING';
l_change_type := 'REVISION';
l_change_event := 'ADD_TERM';
END IF;
For updating the pn_lease_chg_details table system checks for below condition
l_change_event := 'RENEWAL';
l_change_type := 'REVISION';
l_change_event := 'TERMINATION_AFTER';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_CURRENT';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_BEFORE';
END IF;
END IF;
Here if change type is not null insert/update takes place in the table
Modified the code INSERT_ROW and Update_ROW to insert record into table PN_LEASE_CHG_DETAILS
l_change_type := 'REVISION';
l_change_event := 'ADD_OPTION';
ELSE
l_change_type := 'BOOKING';
l_change_event := 'BOOKING';
END IF;
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_AFTER';
l_change_event := 'RENEWAL';
l_change_type := 'REVISION';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_CURRENT';
l_change_type := 'TERMINATION';
l_change_event := 'TERMINATION_BEFORE';
END IF;
ELSE
l_change_event := 'BOOKING';
l_change_type := 'BOOKING';
END IF;
Here if change type is not null insert takes place in the table PN_LEASE_CHG_DETAILS
3.1. This package updates and Insert Records in table pn_lease_chg_details for each lease change id
6.Reports for IFRS and its technical details
Package used PNLSPFRB.pls. This package is used in XML publisher Data Definitions to generate
Portfolio Summary and Portfolio Detail report. Function INIT_REPORT_DATA is used to populate data in
global temporary table PN_LEASE_REPORTS_DATA_GTT to be used in Portfolio Summary and Portfolio
Detail reports. Global Temporary tables used are Pn_Leases_Gtt and Pn_Lease_Details_Gtt ,
Pn_Lease_Reports_Data_Gtt and Pn_Payment_Items_Gtt. Sample Output for the report.
This is a xml report where data template containing sqls is coded in xml. Here header level data is picked
from table pn_leases_all, hr_operating_units, pn_system_setup_options, gl_sets_of_books,
xle_entity_profiles , xle_registrations and pn_interest_index_lines
The body part of the report picks data from GTT tables pn_lease_reports_data_gtt which uses select
from view pn_pmt_item_amrtzn_stream_v , pn_pmt_item_amrtzn_stream_v and pn_leases_all and
pn_amendment_report_gtt which selects data from Pn_Lease_Changes_All , Pn_Leases_Gtt ,
Pn_Lease_Details_Gtt, Pn_Lease_Details_Hist, Pn_Payment_Terms_Gtt and Pn_Payment_Terms_All
where data is inserted by package pn_lease_portfolio_reports. Internally report calls
pn_lease_portfolio_reports.init_report_data for report data population
This is a xml report where data template containing sqls is coded in xml. Here header level data is picked
from table pn_leases_all, hr_operating_units, pn_system_setup_options, gl_sets_of_books,
xle_entity_profiles , xle_registrations and pn_interest_index_lines
The body part of the report picks data from GTT tables pn_lease_reports_data_gtt which uses select
from view pn_pmt_item_amrtzn_stream_v , pn_pmt_item_amrtzn_stream_v and pn_leases_all and
pn_amendment_report_gtt which selects data from Pn_Lease_Changes_All , Pn_Leases_Gtt ,
Pn_Lease_Details_Gtt, Pn_Lease_Details_Hist, Pn_Payment_Terms_Gtt and Pn_Payment_Terms_All
where data is inserted by package pn_lease_portfolio_reports. Internally report calls
pn_lease_portfolio_reports.init_report_data for report data population
6.2 Lease Analysis Report
This report shows the lease liability balances both undiscounted as well as discounted amount based
on the lease / Payment term duration..It calls package pn_transaction_util various functions like
get_lease_liability, get_liability_more to generate report data based on the parameters passed
This is a xml report where data template containing sqls is coded in xml. Here header level data is picked
from table pn_leases_all, hr_operating_units, pn_system_setup_options, gl_sets_of_books,
xle_entity_profiles , xle_registrations and pn_interest_index_lines
The body part of the report picks data from pn_leases_all, pn_lease_details_all, fnd_lookups,
pn_payment_terms_all and calls pkg code pn_transaction_util. get_lease_liability and
pn_transaction_util. get_liability_more to fetch data.
6.3 Generate Lease Details Report
This report provides the balances for a particular selected lease “As of” date. This report is
complimented with detailed amortization schedules which explain the basis of calculations of these
balances. It runs based on various sql to select period wise IFRS and US GAAP liability and ROU
calculations.
This is a xml report where data template containing sqls is coded in xml .Here header level data is picked
from pn_leases_all, hr_operating_units, pn_system_setup_options, gl_sets_of_books,
xle_entity_profiles and pn_interest_index_lines
The body part of the report picks data from various tables/views like pn_options_all,
pn_pmt_item_pv_all, pn_pmt_item_amrtzn_all , pn_pmt_item_amrtzn_stream_v ,
pn_payment_terms_all , fnd_lookups ,and internally calls package pn_accnting_bal_streams
Sample Output:
7.Technical Flow for code from lease creation
PN_LEASES_PKG
PN_LEASE_CHANGES_PKG
PN_OPTIONS_PERIODS_ITEMS
Calls PN_LEASE_TRX_PKG which create transactions and inserts data into pn_acct_trx_headers_all and
pn_acct_trx_lines_all
Creates normalize items and Calls PN_NORM_RENORM_PKG if normalization is used which insert an
updates pn_payment_items_all.
Exporting to AP
Calls PN_CREATE_ACC which internally calls function procedure like get_valid_gl_date, get_period_info,
get_pn_period_status and get_valid_gl_date.
Calls Pn_Xla_Accounting_Events to create xla accounting event and calls xla_events_pub_pkg which
updates Pn_Acct_Trx_Headers_All and calls xla_events_pub_pkg to create xla events for all transition
8. ER Diagram for the Data Flow