Compiere provides seamless version migration
To be successful, there are just some rules to consider. Let's use an example for clarification: You create a new column in an existing table. Automatically, Compiere sets the Entity Type to User Maintained. With this, the column will also be there after the migration. You then add your new Field to an existing Tab of a Window. Again by default the Entity Type is User Maintained and your changes are independent from any changes of the core product.
The worst thing which could happen is that the exact position is not maintained. One option is to put the field at the end of the tab - another is that you manually enter the sequence number. By default, the field sequence is 10, 20, 30, ... - so of you manually enter a sequence, e.g. 25 - your position is very likely to be preserved. This works very well if you want to add a few columns to an existing table and window. Another scenario is that you want to restructure the default window - quite often to display only the used fields in that particular situation. The best option here is to create your own window - just copy the existing window and then remove the columns/tabs not needed.
Make sure that you select the "default" flag on Window level - this makes sure that if you zoom to this entity that your window is opened rather than the unchanged core solution window. Often you just want to change very minor items in the window - without the overhead if creating and maintaining your own window. Compiere allows you to mark the changes as customization and preserve your change. During the migration all entities owned by Dictionary or Compiere are set to the current setting.
If you flag the changes as customization, these changes are re-applied. Compiere automatically maintains a change log of all dictionary items. After you did the change - go to the Change Log (or Session Log) window, find your change and select Customization. In summary, Compiere provides quite a few options to fine-tune how to maintain your customizations efficiently. The main tool is the Entity Type, for exceptions use the change log Customization flag.
Looking forward, in the next entry here, we will discuss customizing terminology.