Our reason to start analysing and testing Oracle BRM pin_del_closed_accts tool was GPRS Article 17: “Right to erasure (‘right to be forgotten’)“.
To meet all the GDPR requirements, all closed accounts must be deleted from Oracle BRM after a 24 months retention period. Till now we anonymized all customer information directly in the Oracle BRM database because there was no tool in Oracle BRM billing to properly delete closed accounts and all related data. With Oracle BRM 7.5 Patch Set 22, a tool for deleting closed accounts was added.
Picture 1. Oracle BRM 7.5 PS22 Customer Center anonymized customer data
Tool pin_del_closed_accts deletes all accounts and all referenced data for accounts that are older than a specified retention time. But keep in mind that the utility deletes only OOTB data objects; all custom data objects must be deleted by implementing custom logic and triggering it with the /event/notification/account/pre_delete or /event/notification/account/delete events, which are generated by PCM_OP_CUST_DELETE_ACCT opcode.
The retention period can be set by configuring ClosedAcctsRetentionMonths entry in bus_params_customer.xml and loading it into the Oracle BRM DB.
The utility should be run from BRM_home/apps/pin_billd folder. In pin.conf Set the number of threads to properly adjust the load on your Oracle BRM server. At the beginning, there were some very bad performances and lots of locked threads in the DB. Therefore, we created indexes on audit tables because searching for and deleting records in those tables takes a lot of time. If you need detailed information regarding creating indexes, please feel free to contact us.
The utility accepts several input parameters, so accounts can be deleted in specific order:
1. Deleting all the closed non-paying child accounts in hierarchy at different levels:
pin_del_closed_accts -subord -leaf
pin_del_closed_accts -subord
2. Deleting member accounts of the sharing groups:
pin_del_closed_accts -members_sharing
3. Deleting paying child accounts at different levels in a hierarchy:
pin_del_closed_accts -members_billing
4. Deleting all remaining closed accounts:
pin_del_closed_accts
It is also possible to use an input list with accounts POID to delete specified accounts:
pin_del_closed_accts -file file_name
Example of input file:
0 PIN_FLD_RESULTS ARRAY [0] allocated 20, used 1
1 PIN_FLD_POID POID [0] 0.0.0.1 /account 1111 0
0 PIN_FLD_RESULTS ARRAY [1] allocated 20, used 1
1 PIN_FLD_POID POID [0] 0.0.0.1 /account 2222 0
0 PIN_FLD_RESULTS ARRAY [1] allocated 20, used 1
1 PIN_FLD_POID POID [0] 0.0.0.1 /account 3333 0
0 PIN_FLD_RESULTS ARRAY [1] allocated 20, used 1
1 PIN_FLD_POID POID [0] 0.0.0.1 /account 4444 0
If there are references between accounts, referenced accounts won’t be deleted.
We are deleting accounts older than 24 months once per month to meet GDPR requirements. Deleting causes quite a heavy load on the DB, so it is done during the night, when the load on our real time Oracle BRM billing system is low.
Complying to GDPR requirements with the pin_del_closed_accts tool was a step in the right direction because everything is done automatically; therefore, we do not have to worry about this anymore.