Code Generation Validations                                  
Functionality/Change Affects Error Message How to Fix Regex Generatable RegEx                        
In an entity, if you add an enumeration attribute that belongs to the dynamic component, you must define the DynamicComponentReference property in the attribute. 25R1-EA <enumeration_name>belongs to <enum_componet> component and has a dynamic dependency with <entity_component> component. <attribute_name> attribute should define DynamicComponentReference. Define DynamicComponentReference property in the attribute. No
For code generated using structures and nested with crud, json output for datatype Integer will not have quotes anymore. This is an alignment to how the datatype Number acts. 25R1-EA No, error message, but consumers of integration api's using Integers might need to be addressed. Consumers of integration api's using Integers might need to be addressed. No User can locate datatype Integer in fragments and projections, and see if they are used in any structure, either directly by the struct containing Integer, or indirectly by the structure referring to an entity with Integer attributes.
Length of database tables and columns, and also indexes and constraints, will be enforced to be less than 30 characters. If this is not the case the tool will not allow codegeneration to run. This is enforced only from the Developer Studio tool. For entity/enumeration/utility models, code generation will not be allowed to run if there are validation errors. 25R1-EA Error message is given when trying to generate code from the tool, if validation errors are present. Correct the validation errors. No
When use @Overtake / @Override annotations in column definition, that will reflect in  respective view columns comments associated with both core layer and the cust layer. The changes will not be applied to base view. 24R2 EA No error messages are generated, this is a fucntionality improvement for column definitions. This may change the generated code to how it was generated in prevoius tracks, if customer has overriden/overtaken columns. Override/Overtake on the column can be omitted if the intention is to not impact previous declared views. User can use @Override /  @Overtake to Override or overtake the existing column definition in the view file. No User can search their files using regex @Override\r\nCOLUMN    and   @Overtake Base/Core\r\nCOLUMN
When @DynamicComponentDependency annotation is used for public, private and protected method. 24R2 EA Illegal usage of @DynamicComponentDependency annotation. Remove the @DynamicComponentDependency annotation from the method declaration and use alternative option such as conditional compilation.                                                                                     Ex:   $IF Component_<component_name>_SYS.INSTALLED $THEN  No
When defining method names or API names, number of characters should be equal or lesser that 30. 24R2 EA For API Names: Package name '<API name>' is longer than 30 characters.                   For method names: API method names should not be longer than 30 character                                                                                                                                           Reduce the character count which aligned to 30 characters. No
When defining functions in a projection or fragment file, it is advised not to use the LongText data type as parameters. In the context of the OData Provider, it is not possible to utilize the LongText data type for defining function parameters. 23R2 EA The OData Provider does not support the LongText data type for function parameters. To ensure compatibility and proper functioning, alternative data types should be chosen when specifying function parameters in these files. Otherwise use action instead of functions No
Change of view generated for entity with not derived attributes of types enumeration/lookup that has codegeneration property DbSqlImplementation set. 23R2 EA No error messages are generated, this is an alignment to how enumeration/lookups behaves in general. Earlier the views db and client values for enumerations and lookups did not consider the value in DbSqlImplementation. Now the db value will fetch the value from DbSqlImplementation and the client value will fetch the decoded value of DbSqlImplementation.
Yes <DB_SQL_IMPLEMENTATION>.*</DB_SQL_IMPLEMENTATION>
This regex gives a list of usages of DbSqlImplementations, search for this in .entity files. Check each entry, if the attribute is of type ENUMERATION or LOOKUP, base view is changed as described, and any usages might need adjustment.
Change of view generated for entity with derived attributes of types enumeration/lookup that has codegeneration property DbSqlImplementation set. 23R2 EA No error messages are generated, this is an alignment to how enumeration/lookups behaves in general. Earlier only one column was listed in the view. Now the db value (DbSqlImplementation value) is fetched with the suffix db, and the client value without the suffix db, eg:
My_Type_API.Get_Value_Db(Company) order_id_pick_inv_type
Would now be:
Pick_Inventory_Type_API.Decode(My_Type_API.Get_Value_Db(Company)) order_id_pick_inv_type,
My_Type_API.Get_Value_Db(Company) order_id_pick_inv_type_db,
Yes <IS_DERIVED>1</IS_DERIVED>\r\n.*<DATATYPE>ENUMERATION</DATATYPE>
This regex gives a list of enumerations that are derived. Check each entry, if the attribute has the codegeneration property DbSqlImplementation set, base view is changed as described, and any usages might need adjustment. Repeat for datatype LOOKUP:
<IS_DERIVED>1</IS_DERIVED>\r\n.*<DATATYPE>LOOKUP</DATATYPE>
Change of db and client get method, and public get method, in entity for public attributes of types enumeration/lookup that is derived via an association. 23R2 EA No error messages are generated, this is an alignment to how enumeration/lookups behaves in general. Earlier the client get method for the attribute used the client function as return value, now the database function is used and the value is decoded. The result should be the same. The db get function earlier returned the client value, now the db value should be returned. The public get method earlier fetched the client value, now it fetches the db value.
Yes <IS_DERIVED>1</IS_DERIVED>\r\n.*<DATATYPE>ENUMERATION</DATATYPE>
This regex gives a list of enumerations that are derived. Check each entry, if the derived column is referenced via an association, the client and db get function, and the public get method is changed as described, and any usages might need adjustment. Repeat for datatype LOOKUP:
<IS_DERIVED>1</IS_DERIVED>\r\n.*<DATATYPE>LOOKUP</DATATYPE>
Change of db and client get method in entity for public attributes of types enumeration/lookup that has codegeneration property DbSqlImplementation set. 23R2 EA No error messages are generated, this is an alignment to how enumeration/lookups behaves in general. Earlier the client get method for the attribute got the value stated in DbSqlImplementation undecoded if the attribute was derived (otherwise decoded as should be). The db function did not use the value stated in DbSqlImplementation. Now client get method fetches the value in DbSqlImplementation and decodes it to client value, and the Db get function uses the DbSqlImplementation as it is.
Yes <DB_SQL_IMPLEMENTATION>.*</DB_SQL_IMPLEMENTATION>
This regex gives a list of usages of DbSqlImplementations, search for this in .entity files. Check each entry, if the attribute is of type ENUMERATION or LOOKUP, and the attribute is public, the client and db get functions are changed as described, and any usages might need adjustment.
Projection name can't have 'Entity' as a suffix. Because it might overlap with a Data Entity Services projection 23R1 EA Projection name * has 'Entity' as a suffix. Can't create projections with suffix 'Entity' Change the projection name to something which does not have "Entity" as a suffix Yes
When an entity CRUD operations are exposed thruogh an API, make sure the defined references have corresponding enumeration files 22R2 EA ERROR : Cannot find model file "*.enumeration" referenced by /codebase/model/wrksch/*.entity Mentioned enumeration file is not in the code base. Apply a relevant fix (Ex: Create that enumeration/Change the datatype from enumeration to something relevant) No
Structures can be deployed in the entity/utility plsql, if a fragment with the same name as the entity/utility exists, and have a structure with implementation = "Entity/Utility". A restiction has been added so that structures coming from fragments included from that fragment will not be allowed to be deployed in the entity/utility package because: It should not be possible to create large utility packages, by mistake, if one includes a fragment chain containing structures to be deployed in entity/utility package. Also, dynamic component dependency annotations on the fragment in this case is not propagated down to a structure in a subfragment, which could lead to issues with different setups of solutionsets. 22R2 EA "Fragment connected to entity or utility can not have structures to be deployed in entity or utility package among the fragments included." Do not deploy structures in entity/utility by adding the structure in a subfragment to the fragment connected to the Entity/Utility. Add the structure in the fragment with the same name as the Entity/Utility. No
In .views files, always place line comments on a new line; avoid placing them along a line of code 22R2 EA Deployment of generated code fails due to compilation errors in the generated code. Avoid placing line comments at the end of a line of code, especially after a semicolon. Yes
Set the entity to crud=Read if an entity in the metadata is only referred to from entitysets with the prefix Reference 22R2 EA A lot of Odata endpoints where created for create/update/delete functionality on pure references of a projection. Since they have been exposed by Odata, they could have been used, but these endpoints has never been part of the documented endpoints in Projection Explorer, but still this could be considered a breaking change. No
DynamicComponentDependency annotation is deprecated on VIEW definitions 22R1 EA <ViewName> view is annotated with DynamicComponentDependency. This annotation is not allowed on views effective 22R1-EA. Use dummy view with conditional statements instead. Replace DynamicComponentDependency with conditional statements. Define dummy view in ELSE part. Yes
Columns selected from a reference (use) should either define as a derived attribute or pass to another association within the entity. (Can't have unused columns selected from a reference) 22R1 EA If column [ColumnName] in [ReferenceName] is not passed to another association, then there must be a derived attribute defined in the attribute list with the same name Define a derived attribute in the attribute section with the same column name or pass this column to another association as a parameter. (This depends on the requirement) If this attribute is not really used within the entity, then remove the use statement. No
Enumerations may not contain Identifiers using characters not supported by the oData specification. 22R1 EA Enumeration [EnumerationName]: Enumeration literals '[Text]' containing characters not valid for Identifier name. The enumeration Value can be used for defining its Identifier but only if it starts with a literal, followed by several literals and/or numbers. If other characters are used (like space, asterisk, percent etc.), define a unique Identifier using mentioned rules. Yes
Enumerations may not contain Identifiers using characters not supported by the oData specification. UPD14 Enumeration [EnumerationName]: Enumeration literals '[Text]' containing characters not valid for Identifier name. The enumeration Value can be used for defining its Identifier but only if it starts with a literal, followed by several literals and/or numbers. If other characters are used (like space, asterisk, percent etc.), define a unique Identifier using mentioned rules. Yes
The relationships defined in analysismodel files should use the new syntax. 21R2 EA The syntax used to define a relationship is deprecated from 21R2-EA onwards. Use the new syntax to define a relationship. Use the new relationship syntax to define the relationship. Use String vales instead of identifiers.
Parent navigator entry being referenced must exist in the source Client model. UPD11 Parent Navigator Entry [NavigatorName] is not found Avoid referencing parent navigator entries that do not exist in the source Client model No
Bound actions and functions cannot have _ (underscore) in the name anymore, since it does not follow odata specification. 21R1 GA Bound actions/functions cannot have underscore (_) in the name. Use an action/function name without underscore in the name. no
Removed the property 'regexp' from client fields and projection attributes as this propery was  just residing without any functionaly. 21R1 GA extraneous input 'regexp'…… shown in the tool editor , and Codegen syntax error when genrating code. Remove the property 'regexp' from model files. yes 
Function collisions are no longer allowed. If a projection includes two different fragments that define the a function with the same name and signature, an error is thrown. 21R1 GA The function [Function] is defined twice, causing a collision Rename one of the functions, so that there is no name collision. Keep one function name intact , to avoid build failures to keep the code compatible in overrides and overtake in Cust/Ext layers.

No signreport\s=\s.+;
Removed the property 'signreport' from clinet and fragment files as this propery was  just residing without any functionaly. 21R1 GA signreport' property is removed. Use 'signdocument' syntax intead Remove the property 'signreport' from model files. yes
Remove to_ret___ methods that are unnesasary. 21R1 EA If you have use any of these methods you will get "identifier 'TO_RET___' must be declared error" similar error. Stop using those methods and use rec_'s directly. No
move To_Boolean, To_Boolean_Arr, To_Ret (for Boolean) method out of the projection to a new package 21R1 EA If you have use any of these methods you will get "identifier 'TO_BOOLEAN' must be declared error" similar error. Use methods from "Fndcg_Projection_Svc_Util" package No
move some of the _art and _arr to a new package from the projection 21R1 EA If you have use any of these types in plsvc you will get                                        "identifier 'INTEGER_ARR' must be declared error"  similar error when try to deploy. Use type from "Fndcg_Projection_Svc_Types" package No
The Get_Rec function for arrays in complex structures when using nestedwithcrud has been removed, since it was not guaranteed to have all the keys as inparameters, the result of the function was misleading with regards to the naming Get_Rec. The function was also not needed internally. 21R1 EA If used these generated functions no longer exists. Use the get function from the referenced package instead. No
Double override/overtake in the same file is not allowed anymore, override/overtake of item declared in the same file not allowed. 21R1 EA A codegeneration error that says cannot redeclare is raised. Merge the declarations into one declaration. No
The state enumeration from an entity which is not used elsewhere in a projection, cannot be used, it will give a code generation error. Before it did not give an error in code generation, but it gave a runtime error. 21R1 EA A codegeneration error saying the enumeration is not found is raised. If the state enumeration really is needed, do an empty override of the entity that contains it, in order to add the state enumeration to the meta data. No search .entity files for "search_domain"
.Searchdomain has been removed 21R1 EA    Exception while generating code for [filename].entity
   SearchDomain Depricated, not supported in IFS21R1 or above.
Remove the "searchDomains" block from .entity files. yes \sTo_Base64___\(
Remove To_Base64___  methods from projection svc 21R1 EA There will be a deployment error saying that To_Base64___  could not be found. Use Fndcg_Projection_Svc_Util_API.To_Base64  instead yes
Bound actions and functions cannot have _ (underscore) in the name anymore, since it does not follow odata specification. UPD12 Bound actions/functions cannot have underscore (_) in the name. Use an action/function name without underscore in the name. yes \s{3}(action|function)\s(.+_.+)
Parent navigator entry being referenced must exist in the source Client model. This code generation error is triggered in Developer Studio tool only for UPD11, but will get triggered in build as well from UPD12. UPD11 Parent Navigator Entry [NavigatorName] is not found Avoid referencing parent navigator entries that do not exist in the source Client model No
Function collisions are no longer allowed. If a projection includes two different fragments that define the a function with the same name and signature, an error is thrown. UPD11 The function [Function] is defined twice, causing a collision Rename one of the functions, so that there is no name collision. Keep one function name intact , to avoid build failures to keep the code compatible in overrides and overtake in Cust/Ext layers.
No regexp\s=\s.+;
Removed the property 'regexp' from clinet fields and projection attributes as this propery was  just residing without any functionaly. UPD11 extraneous input 'regexp'…... Remove the property 'regexp' from model files. yes 
The Get_Rec function for arrays in complex structures when using nestedwithcrud has been removed, since it was not guaranteed to have all the keys as inparameters, the result of the function was misleading with regards to the naming Get_Rec. The function was also not needed internally. UPD10 If used these generated functions no longer exists. Use the get function from the referenced package instead. No
Double override/overtake in the same file is not allowed anymore, override/overtake of item declared in the same file not allowed. UPD10 A codegeneration error that says cannot redeclare is raised. Merge the declarations into one declaration. No
The state enumeration from an entity which is not used elsewhere in a projection, cannot be used, it will give a code generation error. Before it did not give an error in code generation, but it gave a runtime error. UPD10 A codegeneration error saying the enumeration is not found is raised. If the state enumeration really is needed, do an empty override of the entity that contains it, in order to add the state enumeration to the meta data. No tooltip\s=\s.+;
tooltip = $string syntax deprecated since UPD9 UPD9 "tooltip" has been deprecated Use tooltip {} syntax instead of this syntax Yes
Validation error for defualts in serachcontext UPD9 Too few parameters passed to method <method name> Too many parameters passed to method <method name> Projection method <method name> with matching parameters not found Check whether there is a mismatch in the parameter count passed to the function referred in defaults and the parameter conut in the function definition. Check whether the function is already defined in the projection No
Code Generation error for incorrectly written $SEARCH statements. UPD8 Exception while generating code for <<entity_name>>, $SEARCH statement is missing either $APPEND, $PREPEND or $REPLACE tag or incorrectly written in method <<method_name>> This error occurs due to an obvious mistake done by the developer. You must rewrite the $SEARCH statement correctly with either missing $APPEND, $PREPEND or $REPLACE tag. Earlier incorrecly written $SEARCH statements were ignored without raising an error. No
When you add a new attribute to the entity file and if that entity has been used in projections and fragments. UPD8 You will get a You will get an "invalid identifier" error in  "Get_Record_By_Objid___" function. Newly added attribute should be added to all the view of that entity or Newly added attribute in the customization can be excluded from the projections and fragments that the entity has been used.Using "exclude attributes" Syntax. No
Code generation error for entityset reference after "for" UPD8 Expected Entity or Virtual argument, but found unexpected "ConfigModelData". Not allowed in Developer Studio update 8+ - May cause undefinied behaviour. Replace Entityset reference with Entity reference after "for" keyword No chartsettings\s\w+\s{\s+(\w+\s+using\s\w+(\(""\))?\s{\s+enabled\s=\s\[\w+\];\s+}\s+)*}?|chartsettings\s\w+;
chartsettings definition and reference which was available for UPD7 has been deprecated for UPD8 UPD8 "chartsettings" has been deprecated Remove or replace the chartsettings definition and any chartsettings references Yes
Can not use entity itself on a projection entity UPD7 Codegen Error: Eg: 'entity DistAllocationLine using DistAllocationLine'. To fix remove 'using DistAllocationLine' No
Code generation error for startwith/connectby UPD7 Exception while generating code for <projection name>.projection. Cannot have startwith without a connectby. If the startwith syntax exists, then the connectby syntax needs to be there as well.  No
Code generation validation error for dialog input/putput parameter count mismatch UPD6 Dialog input/output parameter count of dialog definition:Dialog1 in Sample.client does not match with dialog reference used in sample.fragment  Equalize input/output parameter count in dialog definition and references dialog has been used. No
Code generation validation error for truelabel and falselabel values of attributes other than Enumeration and Boolean types UPD6 Cannot set 'truelabel' or 'falselabel' for attributes which are not of type Boolean or Enumeration from APPS 10 UPDATE6 Remove truelabel and falselabel syntax for other types except Boolean. Can use for Enumeration types from Update 6 No
Code generation validation error for binding UPD5 ProcessViewers can be bound only to lists,groups and commands. Refrain from binding processviewres to other components except lists, groups and commands No
Code generation error for validating bind attributes UPD5 DummyList may have been misspelled or is a non existing reference Refrain from binding undefined components (dummies) to visual components No
Code generation error for validationg post actions UPD5 Multiple statements not allowed for SUCCESS and FAIL actions in post action. Avoid multiple execute actions in SUCCESS and FAIL of post action No ^()action\s+(\w+)\s+\w+\s+({\n\s+(initialcheck)\s+[\w\W]+?)^\1}
Code validation for initialcheck on unbound actions UPD5 Unbound actions/functions should specify an initialcheck for security reasons.  Specify an initial check to run before executing and action or function Yes
Override/Overtake Fragment Plsvc implementations UPD5 <Method> in layer <Layer> has the same method signature as that of <Method> Avoid implementing the same method twice (either in the same layer or in different layers) No
<Method> in layer <Layer>  overrides/overtakes, but no matching method signature was found in sub-layer(s). The method in question need not have the override/overtake annotation, as it is not implemented anywhere in the lower layers. No
<Method> in layer <Layer3> overtakes <Layer1>, but layer <Layer2> is in between. The method in <Layer1> should be overtaken in <Layer2> before it can be overtaken in <Layer3> No