Sparx Systems Forum

Enterprise Architect => Bugs and Issues => Topic started by: vermeirl on October 14, 2025, 03:01:32 am

Title: fysical data modelling not backward compatible
Post by: vermeirl on October 14, 2025, 03:01:32 am
Recently upgraded to v17. We find that when creating an association from a newly created "table" to a "table" that was created in a previous version, the association cannot be defined as a "foreign key". The error says that source and target must both be tables (which they are). Even existing FK relations that were created years ago give the same error message.
Title: Re: fysical data modelling not backward compatible
Post by: Eve on October 14, 2025, 11:55:30 am
What stereotype does the old table have? I'm guessing it's coming from an incompatible profile. Some older versions of EA were less rigorous about which stereotype was defined. That paired with more permissive checks in other places were also causing issues.
Title: Re: fysical data modelling not backward compatible
Post by: vermeirl on October 14, 2025, 07:34:47 pm
All objects involved have stereotype "table" (as in t_object.Stereotype). We are guessing the source of the problem is the "Stereotypes" entry in table t_xref. They all have "Name=table", but new objects have property "FQName=EAUML::table" (which we're guessing stands for Fully Qualified Name) whereas older tables have "FQName=EAUI::table" or no FQName property at all. Something like a "namespace" issue? We have noticed that "DB2::table" also exists (we are using DB2), so we are now very confused what it should be.
Title: Re: fysical data modelling not backward compatible
Post by: Geert Bellekens on October 14, 2025, 07:46:05 pm
They all should have EAUML::table

Geert
Title: Re: fysical data modelling not backward compatible
Post by: Sunshine on October 15, 2025, 07:37:00 am
They all should have EAUML::table

Geert
Which indicates the fix would be to run a script and set all the stereotypes to EAUML::table.
Posted a script a while ago to convert stereotypes.
https://sparxsystems.com/forums/smf/index.php/topic,45674.msg267977.html#msg267977 (https://sparxsystems.com/forums/smf/index.php/topic,45674.msg267977.html#msg267977)

Just need to change the line
Conversions[0] = new TypeConversion("Class", "Standard", "Class", "Motivation::Standard");
To
Conversions[0] = new TypeConversion("Class", "table", "Class", "EAUML::table");
That should convert any stereotype with Table to the correct EAUML. Just select the parent package where all the tables are and run the script.
Suggest trying it out on a copy to test it first rather than the production DB.