cancel
Showing results for 
Search instead for 
Did you mean: 

How to delete a single message payload outside of standard Deletion / Archiving process

Former Member
0 Kudos

Hi All,

    I've done extensive reading regarding archiving / deleting in XI and am comfortable with the concept / implementation. We are currently archiving and deleting for interfaces at this point, but I have a unique client scenario that seems to fall outside the bounds of the ability of the standard processes that I'd like thoughts on.

   

Requirement:

    The client has defined a requirement to address a situation where a message coming into the production environment has extremely sensitive or classified data (let's say, the SSN of the President of the USA for grins) and all traces of that needs to be wiped from the system immediately - not just secured via transactions  for later deletion but immediately deleted from all data storage locations on the system (let's assume context of XI only for this discussion).

Questions Related to the Below:

1) Which of the below scenarios are the best one to look at implementing and why?

2) Has anyone done anything like this before and how did you approach it?

3) Instead of trying to delete the entire message, given the payload data is the biggest concern, perhaps focus on simply deleting the message specific entries from the SXMSCLUP, SXMSCLUR where the payloads and attachments are stored? Would this cause significant issues without touching the other tables like SXMSPMAST table?

4) Along those lines, I don't think I care about the history or performance data for this type of process, sound right?

Our XI Implementation:

- XI 7.0, Enhancement Pack 1, Service Pack 9

- Scenario would need to address Integration Asynch / Synch (we do log synch messages), Adapter Engine, and Process Engine

I've looked into the following options, and would like guidance on which may be the best route to pursue before investing more time at this point.

1) Standard XI Processes

- This would be preferred, as SAP handles the maintenance. However, after reading I can't see how to make this work, as it's all driven off of the 'Retention Periods' defined for all messages (or for an interface). I can't find anything in the standard process that allows doing this at a specific message ID level like I would need - am I missing something?

 

2) Custom development

- This is the other end of the spectrum and would allow doing exactly what is needed, but adds a significant risk for maintenance should SAP change anything in the persistence layer in regards to tables, etc. With this option I could use the RSXMB_DELETE_MESSAGES (for Integration Engine messages) as a guide and modify as needed, but would need to understand the relationship of the underlying tables very well to ensure referential integrity is maintained.

  

3) Hybrid Custom and Standard

- This combines the two options, providing a custom front end but attempting to leverage SAP supplied called functions / methods for easier maintenance. For example, class CL_XMS_PERSIST has a method MARK_MSG_FOR_DELETE that potentially allows me to set the SXMSPMAST status to 'DEL' and a subsequent execution of the standard deletion program to delete it from the system - most likely not that simple but a starting point. Like Star Trek, it's theoretically possible....  

4) Modify the Payload vs Deleting it

Instead of deleting the payload completely, either remove just the field data in question or replace it with all 'X's. Reference: http://wiki.sdn.sap.com/wiki/display/XI/Editing+message++Payload+in+XI. But is this Integration Engine Specific and would still require a solution for Process and Adapter Engine?

Thanks!

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

as of pi 7.31 PCI (standard to secure credit card information) is available. Data is stored encrypted down to the database...

Otherwise no feature is known...

Answers (1)

Answers (1)

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi ,

deleting message payload from SXMSCLUP, SXMSCLUR tables not recommender because message details were stored in other tables also hence it impacts on system and direct delete also not recommended because you need to execute delete statement at OS level.

1)The simpleway to handle your requirement is use encryption mechanism so that no one can understand the content in the message.

or

2)Try to achive using out of PI box or explore options to diable logging for this interface.

Regards,

Raj

Former Member
0 Kudos

"Try to achive using out of PI box or explore options to diable logging for this interface"

Unfortunately, this could be ANY interface in the system so we are unable to turn off logging (don't think this can be done for asynch anyway, best of my knowledge). In regards to standard archive processes, do you know of a way to do it at message GUID level vs a retention period that applies to a number of interfaces at the same time and we would not want to delete?

Encryption sounds interesting, but not available in any near term for our system. Thanks for the thoughts though.

If anyone has other ideas / inputs please let me know - thanks!