Skip to content

Upgrade of a Completely New Server File

In order to upgrade completely new server files to IFS Cloud 9, you need to to go through a split process, with re factoring and converting the api/apy file into plsql and views file. A prerequisite is that you have already carried out the reverse engineering and created the models for entity, enumeration and search domains in the IFS Applications 8 code. You need to have all of the api and apy files stored on disk. For any utility you will need to create a model file; please be aware that this is new for IFSAPP9 and any additional steps are explained within this section.

The split process is an iterative process, so you may need to run through some of the steps described below several times, until you are satisfied.

After a file has been split, it is deployed in the same environment as non-split files. All old api/apy files needs to undergo the split process.


In IFS Developer Studio

  • Create a project with Target Version = 9.0-PREP and the Build Home you need.
  • Choose Workflow Control in tab Window/Other and move the Workflow Control to the place you want.

Note: When all files have been split, change the target version to 9.0-CORE and continue with the new development and/or the uplift of changed core server files.

Working Procedure

For each model file:

  • T ake RMB "Add to Favorites" (now the model file + api and apy file turns up in the favorite folder. It is easier to work from there).
  • Open the model file so you see it in the working area.
  • Go over to the tab Workflow Control.
  • Follow the steps, listed below, for the type of model that you wish to split
  • When ready, continue with Removal of global variables.  This step can be done when you have uplifted all files or for each file.

When splitting a  file you will see that several methods are now obsolete. The main one is that Basic_Data_Translation_API has replaced Module_Translate_Attr_Util_API. It is almost a 'one to one' match. Another important change is that the component PCM has been split into the components WO, PM, PCMSTD and PERISO. All other changes can be found on page Installation Roadmap.

Split Entity

To split an entity the following steps needs to be done:

Verify Model

In the verify model step you verify that model is consistent with the database. Please note that you can have several different errors in any model file and the solutions are not the same for every error.

Type of correction What it is What to do Remark
Only a correction in the model file The error is due to the fact that the database column is not the same as the model but the database is correct. - Change the entity model and save it
- Verify the model again to see that the error has disappeared
Sometimes you need to do changes to the 'view comments' in the server code and deploy the file before the error disappears, when following this step
Only a correction in the database The error is due to the fact that the database column is not the same as the model  but the indication is that the model is correct. - Update the column in the database with the correct information, by adding the changes in cdb, upg and cre file.
- The cdb file needs to be deployed in your development environment before verifying the model again.
- Verify the model again to see that the error has disappeared.
OBSERVE: That you need to check both the upg and cre files and sometimes they are already correct in the cre file.
Correction in both the model file and database The error is both in the model file and in the database column - Carry out the same process as is described above.
- Verify the model again to see that the error has disappeared.

For examples of different model file errors and proposed solutions check Example of Model File Errors.

Prepare PL/SQL code

In the prepare PL/SQL code step you compare the old template apy file against the new template apy file and move code around until you do not get any differences.

When you carry out this step you will see the result in the Output window and you will get links to two generated files, one for api and one for apy. If you don't get this, then go to the api and the apy files in Favorites and select RMB "Diff Against Generated File" for each of the file types.

When you open up a window for the first time, set the following settings :

Some general hints:

Description What to do Remark
Make a method to override instead of overtake - Move the code before or after the generated template part of the method, so it becomes pre or post activities when splitting the file.
W hen moving code after the while loop in e.g Unpack_Check_Insert___, the variable value_ needs to be changed to newrec_.<variable_name>
Observe that the methods Unpack_Check_Insert and UnpackCheck_Update_ do not exist after you have split the code, that means that you also need to check your own written methods so they do not have a call against those methods.
Minimize differences between original files and generated files - If an extra row exists in the original file, then remove the extra row in the original file.
- If an extra space exists in the original file, then remove the extra space in the original file.
- If an extra row exists in the generated file, then add an extra row in the original file.
- If  an extra space exists in the generated file, then add an extra space in the original file.
- If lowercase is used in the original file and not in the generated file, then change to use the equivalent, as in the generated file.
Not mandatory to do.
Re factoring from an old template - If you have a very old template it will go towards the view instead of the table and then you need to check the table so it contains what you have in the view before you do the re factoring.
- Change to the suggestion from the new template
- Several internal methods have changed the name and the easiest way is to cut them from the old file and replace them with the suggestion from the new template.
-  Any 'own written' methods needs to be looked at with special care as they often go towards the view and should now go towards the table instead. Furthermore they might use the old internal methods and should now use the new internal methods.

Examples of different refactoring issues, check Examples of Refactoring PL/SQL Code.

Split PL/SQL code

In the Split PL/SQL code step, you finally convert the api and apy file to plsql and views file,

  • Check that you do not have any overtake of methods. If you have, please go to step Prepare PL/SQL code again and re factor again,.
    • Not all files can be finalized before splitting.. On certain occasions you will need to move pieces of logic after you have done the split.
  • Generate and deploy the plsql files into the database.


In the Done step, the following will happen

  • The api and apy files for the entity will be deleted from it's current location  Component>\Database\<Component> and moved to a backup folder.
  • The plsql file will be moved to the correct new location  <Component>\Source\<Component>\Database.

Split Enumeration

To split an enumeration the following steps should be taken:

Find custom enumeration

In order to know which enumerations that needs to be undergone for the prepare PL/SQL step,  then search in the enumeration model for <DB_IMPLEMENTATION>custom</DB_IMPLEMENTATION>. If you don't find any examples you can skip the Prepare PL/SQL code step.

Prepare PL/SQL code

Same as for entity, but only for the enumerations that have "custom" in the model file.

Split PL/SQL code

Same as for entity.


Same as for entity.

Split Utility

To split a utility the following steps need to be carried out:

Find Utility

As utilities do not have any associated models yet, you need to find out which apy files are classified as utilities. One way of doing this is to do a file comparison, between the models for entity, enumeration and searchdomain against apy files. Any apy file that doesn't have any associated model files is most likely to be a utility file.

Create utility model

In Developer Studio

  • Create a new model with RMB "New" and choose "Utility Model..."
  • Name the Utility model with the same name as it is called in the file.
  • Please note thatyou might need to set a codegen property if the file name and LU name are not the same.

Prepare PL/SQL code

Same as for entity, but usually there is very little to re factor.

Split PL/SQL code

Same as for entity. All code will be moved to the views and plsql file.


Same as for entity.

Split Search Domain

To split a search domain the following steps needs to be done:

Compare generated searchdomain against existing files

In this step you carry out the following

  • Generate the search domain from the model.
  • Compare the generated SD.api, SD.apy, SD.ins against the already existing SD.api, SD.apy, SD.ins file.
  • No differences should exist, however please check and remove any differences.

Remove search domain files

If there is no difference or the difference is not required then delete the searchdomain LU SD.api; SD.apy, *SD.ins from your version control system.