Record Difference Extension

Record Difference Extension

Hi All!

We had some problems upgrading to 5.0 and using the AutoEntityDiff, so we made a new Extension called RecordDiff.
We're still doing some tests, but decided to post here, since there are some others with the same problem.

The extension uses the XML extension to work with the Record Lists.

Hi Patrícia!

Thanks for sharing. When you finish testing it, why not share it as a component? That way it'd be always on hand for everyone :)

Keep up the great work.

Paulo Tavares
Hi Patrícia,

AutoEntityDiff is upgradable to 5.0. Take a look into this post

Hi André

We tried that Extension already. Didn't work out.
So we decided to make one of our own.


Hi Patricia,

Ok, so what didn't work out?
Other people use it in 5.0 so they can benefit from your experience. Can you elaborate on what went wrong.

Thank you upfront for your information sharing.

Hi André

It simply didn't find any differences between the two records, although they were different. I think the problem is in the differences OS made in the record/recordlist definitions in version 5.0.

We also found some problems in RecordListToCSV Extension - it returned not the value in the recordField but the type.



Hi Patricia,

If you can try out this extension. See if it solves your problems.

This might be a bad location to ask this, but is there any way to check the columns (during the difference check) to see if the value is going to or from the default value?  That way the message can be changed to say (empty) instead of the default value.  I had modified the original AutoEntityDiff to perform a similar function, but I had to hard code all of the default value checks by hand.  I have had to switch over to the RecordDiff extension instead since the AutoEntityDiff extension was no longer recognizing differences.

The system I'm using heavily relies upon tracking the changes, and since we are trying to hide the default values from the users (since we need to track null values) we really need some way of pulling the default value information from the column so that there is no confusion.

Is there any way with this extension to ignore some fields?
The extension that I currently has in the server was in the version 4.2 and has some values customizable just like Attributes to Ignore.
Is there any other way to ignore attributes with the TranslationRL for example? Our will I have to customize my extension to keep working with the parameter Attributes to Ignore?


Best Reggards,
Nuno Mendes
Hi guys,

I have managed to upgrade the extension to what I have, using for a start the AutoEntityDiff posted here by André Vieira.

In this version I had more 3 parameters:
- AtributesToIgnore: a comma separated list of attributes that would be ignored (useful for LastUpdatedBy, CreatedOn..., parameters that we want to discard)
- IgnoreEmpty: a flag that indicates if the empty values should or not be considered
- AddPathToReturn: a flag that indicates if the path should be in the return or not (in André extension the return was for example USER_MASTER > Name changed from A to B, if this flag is set to true them the result will be the same, if set to false the result will be Name changed from A to B)

I hope this new version of the extension could be useful for someone.

Integration Studio version:


Best Reggards,
Nuno Mendes
Do you have a 5.0 working version for java? Thanks
Maybe this is a newbie question but....

Do you guys know why somethings the return message says "defined as [Empty]" ?

This happens when the attribute it's a forigner key. And I check and it's not null.

Thank in advance!

I found the reason for my problem: the advanced query GetReferencedRecord_Original_OSUSR (in Translation_GetValuesFromReferencedEntity) was using the wrong Physical_Table_Name.
That happen because the action Translation_GetValuesFromReferencedEntity is not taking in consideration the Espace and also because I have more than one Entity with the same name and SS_Key (maybe this is something that shouldn't happen but it does).

To fix this you can:
  • Add an extra input parameter to Translation_GetValuesFromReferencedEntity to receive the ESpace SSKey.
  • Add an extra query parameter to GetReferencedEntityBySSKey to pass the ESpace SSKey.
  • Outer join the Entity and Espace entities
  • Apply the condition "Espace.SS_Key = Espace_SSKey" to the query 
  • In Translation_BuildChangedString_Record pass the following expression as ESpace SSKey:


Oml in attachment.