Navigation Comparison Between GeneXus 9.0, X, X Evolution 1 and 2

Unofficial Content

Each GeneXus version or upgrade incorporates a set of new features and several bugs are fixed in order to improve the product.

The Object Navigation List provides complete and early information about the object's behavior.

Therefore, when converting a KB to a newer version, comparing each object's navigation with the previous version will give you a preview of how the new version/upgrade will affect your application. Also, if it is necessary, it enables you to take action beforehand.

In order to perform a navigation comparison between GeneXus 9.0 and GeneXus X, please read Navigation Comparer

Below is a list of significant differences that may appear when comparing GeneXus 9.0 with GeneXus X navigations, as well as some tips to interpret them:


Change in Navigation List Information X Xev1 Xev2
GeneXus X Reports shows "Output Devices: File" instead of "Output Devices: ScreenPrinter" The Report Output property changes its default value from Ask User to Only to File. More information Yes -  
New warning "spc0141: Rule %1 is deprecated" in GeneXus X. Some Functions or Rules, like No Read, are no longer supported in GeneXus X. More information Yes Yes  
Formula navigation changes completely.

In GeneXus X almost all formulas can be resolved in the server and also several formulas (with similar execution plan) can be executed together (in the same SQL). Therefore, the navigation list changes completely in this case. More information

Fixed SACs referring to with formulas:

SAC 26866 : Implicit condition was incorrectly added.


Yes Yes  
New specification control: "spc0142: The value of %1 will be the same for all rows..." in GeneXus X

This message indicates that the value will be the same for all records.

Yes Yes  
Warning "spc0116: Group cannot be ordered by %1" does not appear in GeneXus X

Order clause supports more formula attributes, as most formulas are evaluated on the server side. This is the reason for the message to disappear in this version. In those cases, a new warning appears: "spc0136: Order ATT is a formula in group starting at line n". More information

Yes Yes  
New warning "spc0136: Order %1 is a formula %2." It is just a warning indicating that the order clause uses an attribute defined as a formula (%1). The formula might have to be evaluated for each record in order to sort the results and this could be costly to the server.

%2 indicates the context where the attribute formula is referenced, for instance, the For Each' Order Clause or the Item Description attribute of Suggest/Dynamic Combo Box control.

Note: Only "server side" formulas can be used in the order clause. If GeneXus determines that the formula cannot be evaluated on the server, the spc0139 also appears.
Yes Yes  
Order clause with a formula attribute shows its name instead of its composition.   Yes Yes  
Warning "spc0026: Formula %1 cannot be evaluated in this program" does not appear in GeneXus X This message is shown when vertical formulas are used in objects other than Transactions. The restriction does not apply any more in GeneXus X, and these formulas can be used everywhere. More information Yes Yes  
Warning "spc0133: Formula %1 cannot be evaluated in %2 does not appear in GeneXus X when the %1 is a Find formula.

This message was shown for Find formulas used as Item Descriptions in Dynamic Combo Box or Suggest controls. This restrictions does not apply any more in GeneXus X, as of GeneXus X Upgrade 4.

See : Formulas , SAC # 26243

Yes Yes  
New warning "Type mismatch in condition: &var = Boolean.False" An enumerated domain "Boolean" was defined in a previous version and now is a GeneXus Data Type. Rename the domain or use the new data type. Yes Yes  
Object's navigation shows new "FILL <DynCombo>" groups.

Now subtypes attributes inherit their control-info from the corresponding supertypes.

This is the default behavior in GeneXus X (as for Upgrade 4). So, during conversion process all subtype attributes with a default Control-Info will inherit the value from their supertype.

This also affects variables basad on Subtype attributes or based on Business Components with subtypes attributes.

So, if the variable/attribute is present on a web form, you will notice this new behavior looking at the object's navigation.

SAC # 24870

This compatibility issue has been fixed as of GX X Evolution 1 Upgrade 2. See SAC # 28095 for more details.

Yes Yes  

New specification controls for Methods and Link function:

"spc0023: Parameter %1 has wrong type <linking | for method> %2."
"spc0024: Not enough parameters <linking | for method> %1" 
"spc0025: Too many parameters <linking | for method> %1"

Previous GX versions didn't check the data type and the amount of parameters in Methods and Link Function. Therefore, some of these warning message can appears during specification time.

SAC #24456


New message warning when rules are not included:

"spc0158: Rules %1 not included."

As from X Evolution 1 when rules are not included, an spc0158 is shown during specification time (SAC # 26371).

In same cases, this warning could disappear because of a new validation in rules that depend on SDTs. (SAC # 26762)

Also new warnings could appears for those "call" rules containing a parameter that has not been initialized. Now the specifier validate that each input parameters in the called object is initialized in the caller. (SAC # 25706).  This apply also to GX X as from Upgrade 4.

"Find" formula navigation is show as "READ Table.."

Those Find formulas that is know will retrieve just one record are optimized.

SAC # 24780

Some messages have slightly changed to show more contextual information about the error / warning.


spc0023: Parameter FeriadoSACLocalID calling GX00Z0 has wrong type. (Rules | Source, Line: n)


This message does not appears as for GeneXus X ev1 Upgrade 1:

"spc0097: Rule 'confirmtrn()'does not apply to Business Component. Ignored."

The rule confirmation() does not apply to Business Components, therefore as of GeneXus Xev1 Upgrade 1 is not included to the BC code.   Yes  
Warning: 'UseAutomation' is a deprecated property. See Deprecated Functions and Properties for more details.   Yes  
The LoadContext invocation on Start Event does not appear any more as of GeneXus X Evolution 1 Upgrade 2. The &Context variable initialization is performed within the Initial Value property. See SAC 27780 for more details.   Yes  
Warning spc0001 changes to spc0168. This change applies as from X Evolution 1 Upgrade 3. See SAC 28253 for more details.   Yes  
A constraint appears in Break navigations This change applies as from X Evolution 1 Upgrade 3. See SAC 28175 for more details.   Yes  
Dynamic Combo and Suggest navigations of subtypes changes the attributes named (subtype or supertype).

The expected navigation for Dynamic ComboBox and Suggest in subtypes is as follows:

FILL SubtypeCode with <ItemValues>, <ItemDescription>
INTO SubtypeCode, SubtypeDesc
Order SubtypeDesc

Therefore, in some cases you will see that navigation changes the attributes in the "INTO" or "ORDER" clause:

FILL SubCityCode with CityCode, CityName in =GNTPAI(PaiCod)
INTO SubCityCode, SubCityName
Order SubCityName

And in other casues where the supertype attribute was mentioned in the Fill clause, now it shows the subtype, to be consistent.

This change applies as from X Evolution 1 Upgrade 4. See SAC 29670 for more details.


New message warning indicating that a redundant formula is not going to be automatically updated in some cases: 

 Attribute %1 which is redundant in table %2 will not be updated.

Lookup the spc0172 on Specification Codes from spc0150 onwards for more details.

The message could appears as from X Evolution 1 Upgrade 5.

The Order clause of For Eachs changes when exist condicions with Enum or SDT values.

See SAC 30329

The fix applies as from X Evolution 1 Upgrade 6.

  Yes Yes
New optimization: Server Paging See Server Paging     Yes
The Order clause of Grids and Data Providers now includes an 'Othewise' if it has not been explicity specified by the user.

This clause is needed in order to apply server paging optimization.

See SAC 30923

Rule ControlName.Enabled = 0 is automatically added when using the Readonly property in a Control.

See SAC 30362

The fix applies as from X Evolution 1 Upgrade 6.

  Yes Yes
The navigation of some horizontal formulas no longer appears in the navigation list.

See SAC 30725

This change applies as from X Evolution 1 Upgrade 7.

  Yes Yes
For horizontal formulas that are conditionals (if) but does not include a default value (otherwise clause), the specifier will add this clause automatically

See SAC 30922

This change applies as from X Evolution 1 Upgrade 7.

  Yes Yes
Joins involving inferred foreign keys stored as redundants, now are generated as outer join

See SAC 31068

This change applies as from X Evolution 1 Upgrade 7.

  Yes Yes
Navigation of Find formula adds an "Allowing null" on the READ statement, in order to get the "default value" when there are no records that satisfy the formula navigation.

See SAC 31213

This change applies as from X Evolution 1 Upgrade 8.

  Yes Yes
Detail Navigation of Aggregate formulas add a Where Clause Att = @Att, being Att  the implicit condition (is already appears as 'Given' attribute.

This is an optimization that applies only for Mysql DBMS. See SAC 31172

Let's see an example to know where the difference appears:

Suppose we have a two level Transaction with this formula on the first level:

AttFirstLevel = sum(AttSecondLevel) 


The navigation (detailed) will be as follows:
Navigation to evaluate: AttFirstLevel 

   Formula: SUM ( AttSecondLevel)

   Where: AttFirstLevelPK = @AttFirstLevelPK

   Given: AttFirstLevelPK  

   Group by: AttFirstLevelPK 
It was included  the "AttFirstLevelPK = @AttFirstLevelPK" condition.
This change applies as from X Evolution 1 Upgrade 8.


  Yes Yes
Selection promtps show registers that have nullable attributes.

See SAC 31229 for more information.

This change applies as from X Evolution 2.

Let's see an the differences between Evolution 1 and Evolution 2:


In Ev2 the conditions of the prompt were changed to (for example):
TestId LIKE &cTestId;
TestName LIKE &cTestName when not &cTestName.IsEmpty();
TestDate >= &cTestDate when not &cTestDate.IsEmpty();
TestNumber >= &cTestNumber when not &cTestNumber.IsEmpty();
TestComments LIKE &cTestComments when not &cTestComments.IsEmpty();
TestIdST LIKE &cTestIdST when not &cTestIdST.IsEmpty();
In Ev1 the conditions of the prompt were:
TestId LIKE &cTestId;
TestName LIKE &cTestName;
TestDate >= &cTestDate;
TestNumber >= &cTestNumber;
TestComments LIKE &cTestComments;
TestIdST LIKE &cTestIdST;
Conditions were added by attributes mentioned in a call rule inside the Start Event.  See SAC 22824

This change applies as from X Evolution 2.

This message does not longer appears as for GeneXus X ev2, when the rule's input variable is in the form as editable field:

"spc0158: Rule <rule> not included."

See SAC 31439

This change applies as from X Evolution 2.

When an object receives input attributes as a parameter (or input-output), filters conditions could be applied to some groups (For Each, Grids, etc) (See Parm rulefor more details).

The above rule is not being considered in some situations and therefor some changes were introduced in GeneXus X Evolution 2 to fix it.

See Group Navigations that receive attributes as parameters

This change applies as from X Evolution 2.

New specification control spc0187 when the result of applying a method is not assigned. 

See SAC 31770

This change applies as from X Evolution 1 Upgrade 8.

  Yes Yes
New specification control spc0188 when the result of applying a rule has no effect.

See SAC 32081
The case is displayed as a warning message, it applies since X Evolution 2 Upgrade 1.

See SAC 31638
The case is displayed as an error message, it applies since X Evolution 2 Upgrade 2.

Conditions with UDP functions are shown in Navigation Filters insteads as Constraints.

This is an optimization that applies to conditions that refere Udp functions without attributes as parameters.

See SAC 32024 for more details.

This optimization applies as from X Evolution 2 Upgrade 1.

A case where Join was performaned in the server when it must be performed in the client, so now the navigation changes its "Join Location".

See Join Type and Join Location Specification  and SAC 32212 for more details.

This change applies as from X Evolution 1 Upgrade 8.

  Yes Yes
spc0017 (Expression %1 does not return a value) specification control is shown as error,  when the caller object expects a result and the called objects does not include the parm rule or an output parameter.

For instance, the error will appears for these rules when ProcObject and WebPanelObject does not return a value:

&value = ProcObject()
WebComp.Object = WebPanelObject()
Att = ProcObject.Udp()

See SAC 33892 for more details.

This control applies as from X Evolution 2 Upgrade 3.

Improvements determining the order of call rules See SAC 35507 for more details     Yes

General Comments

In case of differences, we recommend accessing the detailed navigation of the GeneXus objects and comparing the corresponding ones to analyze the case.

With this navigation there is normally more information (mainly the INTO concept where you can clearly see what attributes are obtained in each reading), which may be useful to determine the expected behavior.