Conversion Errors and Messages in GeneXus X and X Evolution 1 and Evolution 2

Unofficial Content

This page states errors and messages encountered while converting a Knowledge Base to GeneXus X or GeneXus X Evolution 1 & 2 from GeneXus 9.0.

GeneXus X/X Evolution 1/X Evolution 2 performs many controls when converting a Knowledge Base or importing an .xpz file from a previous version.

The list below shows the messages and errors that can appear during the conversion process and advises how to solve the problems.

Errors

When an error appears during a KB conversion, the whole process is canceled.

Most likely, you are trying to convert a Knowledge Base from a version prior to GeneXus 9.0. First convert the KB to GeneXus 9.0 and then to GeneXus X.
If your KB has already been opened to GeneXus 9.0, then repair your GXpublic installation (You'll find the setup under the GeneXus installation folder\GXpublicSetup ) and try again.

The error appears when an Object references a property that applies only to Win environments without the section delimiters.

Solution: Wrap the code within a Win section using the Environment Attribute (Win, Web, BC, Text) and convert again. Now, when converting a warning it appears instead of the error. 

The error warns you that the DBMS referenced in the Data View Platform is no longer supported in the current version.  In order to convert the KB that DBMS must be deleted.

Perform a forced rebuild (rbld -y) in GeneXus 9.0 and then convert it again.

  • Failed processing object properties. ''value1', 'value2'' invalid value for property 'AttValueRange'.

The error appears when the value range property has comma separated values. The expected behavior is space/blank separated value (see Help). Change the property in GeneXus 9.0 and convet it again.

WebServices defined using GX 9.0 are converted to External Object in GeneXus X and higher. In this case the error is the External Object is referring the "X" Data Type and this Data Type does not exist. More details: SAC 25788

<fck:meta content="text&#47;html&#59; charset&#61;utf&#45;8" http&#45;equiv="Content&#45;Type"><fck:meta content="Word&#46;Document" name="ProgId"><fck:meta content="Microsoft Word 12" name="Generator"><fck:meta content="Microsoft Word 12" name="Originator">The conversion process add as a prefix for each GX object </fck:meta></fck:meta></fck:meta></fck:meta>their object type. The new name (prefix + obj name) could already be used as SDT name. In this case the conversion process will fail. More details: SAC 25976

LongVarChar attributes cannot be part of Primary Keys. In previous versions was allowed to save a Transaction with this kind of primary keys, but had several restrictions.

             ERROR: Expecting assignment operator, e.g. 'defined = byAttName'. (Source, Line: NN, Char: MM)
             ERROR: Invalid attribute 'defined' (Source, Line: NN, Char: MM)
             ERROR: Invalid attribute 'byAttName' (Source, Line: NN, Char: MM)

            Solution: insert a space between clause and attribute list (e.g. defined by CustomerCode)

If you are using a Query Viewer control in your KB and you set a color for a Query Element with the following code:

&Axis.Format.Color = rgb(0,0,255)

You will see the error above. To solve the problem you must set the following code instead:

&Axis.Format.Style = 'color:#0000FF'

Warnings

The message appears when an object code references a function that is not longer supported in GeneXus X as "standard function". See the deprecated function list to know more about the warning and how to avoid it.

This message warns you when part of an object's code will not be executed.
In this example, code containing under [bc] will not be triggered as it is under the [web] section.

[web]
{
       Noaccept(customerid);
       [bc]
       Customerid = udp(‘numerar’) if customerid.isnull();
}
  • <expression> is a non-standard expression.
    <control> is assumed to be a control name as support for non-standard expressions is enabled.

The "Function" property is temporarily changed to "allow non standard function" during then conversion process or when importing a previous version xpz file, aimed at minimizing the amount of conflict in the code.

  • <Win expression> is a non-standard expression. 
    <Control> is assumed to be a control name as support for non-standard expressions is enabled.
    <Property> is a non-standard expression and support for non-standard expressions is enabled.

The message appears when converting something like this:

[Win] 
{
Form.WindowState = 2
}

Here we have a control (Form) that was previously referenced in a Transaction Win Form and a property (WindowState) that only applies to Win environments.

Because GeneXus X does not import Win Forms, this expression is now considered “non-standard” as the control does no longer exist in the form (it makes no sense in the imported object). The same could happen if the control exists in Web Forms but the property applies only to Win environments.

In the event that the code was included in a [Win] environment section, the object would be consolidated anyway and the previous warning would appear, indicating that this section is being validated as “non-standard” to get the object converted to GeneXus X.

  • Converting StructuredDataType <SDT Object name>...
    Redefined as domain. All references to the SDT were changed accordingly.

GeneXus X does not support the definition of SDTs which have only one element as a collection. The way to do that is defining a Domain with the Collection property set to True.

Let's see some examples of SDTs defined in GeneXus 9.0.

GX90 SDT examples

During the conversion process 'ArrayOfNumeric' and 'ArrayOfProducts' will be automatically converted as Domains.

This message indicates that the ObjectName1 has a call to an object that is not valid in GeneXus X (Win Objects). Having such calls (like work panels) is not a problem: a “To be defined” object must be defined with the name of the called work panel after the caller is converted.

The message could also appear when importing an xpz file from a previous version, when the called object has not been included in the export file.

The "SQL Server CE" DBMS is not supported; all Data store references will be changed to SQL-Server.

  • Web Form validations

    GeneXus X includes a new parser to analyze the Web Object's html code to check whether it is well formed. If it detects some errors, it will be automatically fixed and this message is shown in the output windows (conversion.txt):

WARNING:  Webform modified to be XHTML well-formed

In previous GeneXus versions were possible to have defined variables with a "." (dot) in their names (this nomenclature was mainly used in old versions to identify that a variable refers to a Data View’s field), or prefixed by an "_" (undercore) or a number. In GeneXus 9.0 is not possible to define it, however, it can be imported for compatibility propose.

GeneXus X does not support this kind of variables anymore and the conversion process will rename them (and its references) in that way:

  • If a variable starts with an "_" (underscore) or a number, that character will be replaced by a "V" character. If a variable with that name already exists, it will try with "V_x1", "V_x2", and so on.
  • If a variable includes a "." (dot) in their name, will be replaced by an “_“ (underscore).

This is warned by this message.

  • <Subroutine Name> is an undefined subroutine in environment [ 'Win' | 'Text' | 'BC' | 'Web']

The error indicates that the Subroutine was defined under specific environment (e.g. [web]), but it is actually invoked from another one (e.g. [Win] ) or outside the desired environment (i.e. without the section delimiters).

Solution: Wrap the subroutine invocation within the corresponding environment and convert again.

GeneXus X perfoms a new validation when importing objects from previous versions: there is no allowed to have duplicate control names. When this happend, the process rename one of the object control name.  For instance: Table with duplicate control name 'Table1' renamed to 'Table3'.

For more information, see SAC # 25824

The process found that two or more variables were found in the same object with the same name. Duplicates has been been deleted.

A combo box has duplicated Values for the same Text. In this case, the elements are (Text/Value) : (Yes, Yes) (No, No) (No, N). The third value is ignored.

The conversion process check that no duplicate control names appears on the form. See SAC # 25824 for more details.

The message warns you that the table has two index with the same structure and just one is going to be considered.

The message appears during the KB conversion process. You can just accept de message in order to continue with the conversion. If you want to avoid the message on futher conversions, run a rebuild (rbld -y) on previous KB before convert it.

The object has a reference to an attribute in their Win/Web form, but it does not exist in the Transaction structure.

The object has an event referencing a non-existing Menubar item.

The conversion process verifies the Font type during the conversion; when a non TrueType font is detected it automatically changes its definition to a TrueType one. See SAC # 26660 for more details.

This message appears If the method 'xxx' has an enumerated domain paramater and you are using the enumerated value. It is recommended to change the code in order to be sure that the application will continue working properly. For this you must use the Convert method or the enumerated name. For example:

&WorkflowRestrictionDefinition = &WorkflowOrganizationalModel.AddRestrictionDefinition(&name,&description,WorkflowRestrictionDefinitionType.Convert(1))
&WorkflowRestrictionDefinition = &WorkflowOrganizationalModel.AddRestrictionDefinition(&name,&description,WorkflowRestrictionDefinitionType.INHERITABLE)