Understanding & Implementing ILM Part 1
Recently I was assigned to a prototype development which needs to consume ILM framework in ABAP on-Premise system. I have summarized the whole ILM topic into two separate blogs. The first one which we are going to discuss in this blog is to demonstrae the ability to automatically detect and destruct destroyable data (and its related component). Destroyable data could be defined as per customer or business scenario, its customizable. one such business scenario is data that are expired for more than one year could be defined as destroyable .
What?
ILM stands for “Information Lifecycle Management”. ILM framework helps to manage data life cycle through a very simple configurable steps and minimal amount of coding and highly flexible for customer. This is very useful as well for GDPR where the purpose could be to delete personal data/information after the user has left the organisation.
Why?
one simple answer would be to remove the unnecessary data and lessen the load on our application and DB.
It’s important to mention it could be achieved without ILM framework, however advantage of using ILM framework can’t be ignored more so where time and less complexity is directly related to Total cost of Development.
Advantages:
- Auto-enabled Application logging
- Least amount of coding
- Customizable business scenarios for deciding the destroyable data
How?
Pre-requisite
- ILM business function must be switched on : First thing first, you need to ensure ILM business function is switched on. For various reason is some organization it is not switched on. Check with system administrator first.
- Check ILM Business Function : To check if ILM is switched on or off. Go to transaction SFW5. Find ILM and you can see if its witched on or off.
Implementation Steps
Following are the main points that we will be covering in detail
- ILM Configuration
- Create a custom delete API that perform data and its component
- Embed the API into ILM based destruction program
Implementation Details
ILM Configuation is to be done at two ends as shown in above figure, one being IRM_CUST which a developer has to do in order to enable the ILM framework, and second being IRMPOL and ILMARA which is at customer end. For latter developer has to provide consulting note to their respective customer where they can customize the destroyable data definition, this will be explained in part 2 of this blog. we have here explained customization that is to be done by developer for ILM to be operational.
Customization at Developer end:
1 Create a destruction program in SE38 namely SAM_ILM_DES. no coding yet just we need to create a program. you can name anything starting with z or y or your namespace.
2. Configuration for Destruction Object:
DOBJ configuration: Enter transaction DOBJ in command box. Create a new entry. Give any destruction object name associate your destruction program name (created above) with this destruction object.
3. Configuration for ILM Object
Transaction: IRM_CUST Here we create one ILM object and link the above created destruction object to this ILM object.
Double click on ILM Objects
press “NEW ENTRIES” and here enter you ILM Object Name
Define Available Time Reference fields which can be mapped to any time reference fields of your application table to be used for calculation of retention logic.
- ILM Program: Coding Embedding delete API into ILM framework backed program as shown below
- Add INCLUDE destroy_prg_standard before INITIALIZATION
- Under INTIALIZATION add PERFORM standard_texts_init.
- In START OF SELECTION event, a subroutine PERFORM main.
- Inside main, we need to add four subroutines that are mentioned below.
- All above steps can be seen in above screenshot of the program
Inside routine “main”, we will have following sub routines.
- PREPROCESSING
- FILL_WORKLIST – Here we can retrieve the data from main table from which is to be scope of data destruction. Let’s say GT_WORK_LIST
- PROCESSING
- You can now run this program in foreground
- Or you can schedule this program in background and it will check the data everyday which all data has expired and will delete it
Possibly a stupid question but what is this "ILM framework"?
Not sure if the frequent visitors to the PLM tag are already in the loop on this but considering this was shared with wider ABAP audience it'd make sense to start with a brief introduction.
Thank you.
Hi Jelena,
Thanks for your question and suggestion.
<< Question>> – what is “ILM framework”? <<Answer>> – ILM stands for Information Lifecycle Management. ILM framework deals with managing the life cycle of given information(or we can say any data object). It gives a simplified way of processing a data to either archive and delete.
Regarding your Suggestion –
Thanks a lot, I will definitely incorporate your suggestion . My vision was to enable user who had basic information about ILM but had not implemented it before, it was meant to help them to navigate smoothly as otherwise the configuration steps are very complicated for first time developer. But you are right, it will help larger audience if ILM is explained at first. I will definitely do so. Thanks again
Thanks for a clarification!
Possibly another stupid question 🙂 but if it's ILM then why is the tag called PLM?
It's not stupid question, there is no primary tag for ILM and the closest i could find which relates to lifecyle of data is PLM. If you know a better primary please let me know.
Appreciate your help.
OK. Based on a short investigation, it seems the right tag for ILM is NW Information Lifecycle Management, which you have as a secondary: https://blogs.sap.com/tags/480041978550045079567539109400636/
Gotta love the SCN tags! 🙂
yes Jelena I absolutely agree with you, NW Information Lifecycle Management would mark it better. but there is no primary tag by this, this is only available in secondary. even standalone NW is also not there for taking 🙁
Hm, that's odd. I just tested new blog post and it's possible to select NW ILM tag as primary. I just started typing "Netweaver Info..." and it came up:
If it doesn't allow you to update primary tag then a moderator should be able to do that. I've just looked it up and it seems PLM is something completely different.
Thank you!
Yes i am able to, reason i wasn't getting the NW ILM tag in Primary tag was because it was already included in secondary tag. i deleted the secondary tag and then re-added.
Thanks !
Hi Avinash,
Thanks a lot for this nice explanation and beautiful blog, but I would also recommend like Jelena to provide little introduction to the novice users like me. I really appreciate the effort you put in blog...eager to see the part-2.
Thanks,
Hemendra
Hi Avinash,
Great job here! Can you tell us when you intend to share the second part?
Regards,
Manuel Gomes Ferreira
Hello Avinash,
Thank you for your blog regarding ILM. There are so little info about this topic…so any info is priceless.
We are trying also to configure ILM, but we are stuck in File System Connections.
The text from guide sound like this:
“You need custom connection types to define how ILM Store connects to the file system.Custom Connection Types
A database used for storing the Archive Development Kit (ADK) content can be connected to the ILM Store through a data base connection using the transaction DBCON. The database connection is always connected to the type of the database or the database type (DBSYS) value. You use the database type value to search in the class factory (TILMSTOR_CF) for a matching interface IF_ILM_STOR_DB_OPERATOR and IF_ILM_STOR_DB_INFO implementation that implements the physical access to the storage media. In the ILM Store the key pair of DBCON/DBSYS points to the required IF_ILM_STOR_DB_OPERATOR| IF_ILM_STOR_DB_INFO pair for accessing any storage media. The assignment for the ILM Store is as follows:●
DBCON is the connection ID●
DBSYS is the connection type●
Customizing for TILM_STOR_BLOB points to a Connection ID.●
The connection ID entry is used to determine the connection type value from the following:○
DBCON○
If it is not a DBCON entry, then from Customizing using the CONSYS.<connection.ID> value in namespace DB●
The connection type value, in turn, is used to determine the implementation in the class factory for interface implementations IF_ILM_STOR_DB_OPERATOR and IF_ILM_STOR_DB_INFO.”
Can you please give us a practical example on how it should look like IF_ILM_STOR_DB_INFO?
I understand that it should be maintained in TILMSTOR_CF, but how? API, parameter, implementing class?
Or it is a different way to do it?
Please help us define this connection in order that
Thank you in advance!
Best regards,
Peter
we are doing same but stuck at ILM store creation with error 598 (I/O error)
were you able to solve your problem ?
Hi Avinash,
I’m receiving error “No matching rule found for audit area PRODLIABIL of ILM object PM_ORDER ” while running write phase of archiving.
Help me out on how to fix this.
Thanks,
Sabaresh
Hi Sabareshan,
Seems like the object "PM_ORDER" is activated in audit area "PRODLIABIL" in transaction ILMARA but no rule/policy is maintained
Please check in transaction IRMPOL whether you have maintained a policy and rule in Audit Area "PRODLIABIL" for object "PM_ORDER" and its mandatory to maintain a live rule if its activated in Audit area.
Also if you would like to get answers/guidance from the community quicker, i recommend you raise this as a question instead of commenting on blog post.
Thanks and Regards,
Dharshan A
2. We want to archive the contact person, FI_ACCKNVK is a data destruction object? what do we mean by data destruction object. Is this the correct object for our purpose