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 a .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.
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 convert 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 to the "X" Data Type and this Data Type does not exist. More details: SAC 25788
The conversion process adds as a prefix for each GX object and their object type. The new name (prefix + obj name) could already be used as an 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)
This error appears when importing/saving a Transaction that references an attribute in their Rules/Events and this attribute has not been defined in the Transaction's structure. More details: SAC 29372
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'
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.
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:
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 a 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.
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.
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 a 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 it again.
GeneXus X performs a new validation when importing objects from previous versions: there is no allowed to have duplicate control names. When this happens, the process renames 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 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 checks that no duplicate control names appear 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 the message in order to continue with the conversion. If you want to avoid the message on further conversions, run a rebuild (rbld -y) on previous KB before converting 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 parameter 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)