How manage datamodel change

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

How manage datamodel change

Nicolas Malin-2
Many times when I try to refactor some code, I discovered some entities that need to be refactored in order to homogenise or improve them with the new framework functionnalities.

We have a page to describe how to do this migration for each modification https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz

I think that this is not easy for an end user nor useful with the OFBiz release workflow.
Maybe we can improve it with this :
* Organize this page by OFBiz release branch since we don't change the data model on stable (all the release) branch. When we announce the availability of a new release branch, we can fix the data model changes between this branch and the previous one
* Create a state table to indicate some information between the OFBiz and the database, I think about the OFBiz release that exploit this database
* Store each datamodel migration script into a specific directory for each component. Those scripts describe the migration through SQL scripts, dedicated services or any automated operations needed to achieve the migration. (and maybe we should use plugins for that)
* Create a new build target to apply the upgraded datamodel
** check the database OFBiz release
** apply migration scripts for each component
** increase the database OFBiz release

If we have a more efficient datamodel modification workflow, we can improve and homogenise our historical datamodel with serenity.

WDYT ?


--

Nicolas Malin
The apache way : Openness Technical decisions are made publicly
[hidden email]

8 rue des Déportés 37000 TOURS, 02 47 50 30 54
Apache OFBiz |  The Apache Way |  ofbiz-fr |  réseau LE
Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

taher
Hi Nicolas,

Very nice ideas. You made me think of a simple and beautiful solution based
on your mentioning of plugins:

For example, you create a plugin called UpgradeToOfbiz16 and
UpgradeToOfbiz17 etc ... and this plugin when installed using ./gradlew
installPlugin -PpluginName=UpgradeToOfbiz16 would take care of everything
:) so this would be things like:
- changes to the database. maybe we can even use something like liquibase
- copying / adding / deleting
- installing or uninstalling other plugins

So someone takes care of all the complexity and users just install another
plugin :) I don't know if this is sort of what you have in mind?

Taher Alkhateeb

On Friday, 29 July 2016, Nicolas Malin <[hidden email]> wrote:

> Many times when I try to refactor some code, I discovered some entities
> that need to be refactored in order to homogenise or improve them with
> the new framework functionnalities.
>
> We have a page to describe how to do this migration for each modification
> https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
>
> I think that this is not easy for an end user nor useful with the OFBiz
> release workflow.
> Maybe we can improve it with this :
> * Organize this page by OFBiz release branch since we don't change the
> data model on stable (all the release) branch. When we announce the
> availability of a new release branch, we can fix the data model changes
> between this branch and the previous one
> * Create a state table to indicate some information between the OFBiz and
> the database, I think about the OFBiz release that exploit this database
> * Store each datamodel migration script into a specific directory for
> each component. Those scripts describe the migration through SQL scripts,
> dedicated services or any automated operations needed to achieve the
> migration. (and maybe we should use plugins for that)
> * Create a new build target to apply the upgraded datamodel
> ** check the database OFBiz release
> ** apply migration scripts for each component
> ** increase the database OFBiz release
>
> If we have a more efficient datamodel modification workflow, we can
> improve and homogenise our historical datamodel with serenity.
>
> WDYT ?
>
>
> --
> [image: logoNrd] <http://nereide.fr/>
> Nicolas Malin
> The apache way <http://theapacheway.com/> : *Openness* Technical
> decisions are made publicly
> [hidden email]
> <javascript:_e(%7B%7D,'cvml','[hidden email]');>
> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
> Apache OFBiz <http://ofbiz.apache.org/> |  The Apache Way
> <http://theapacheway.com/> |  ofbiz-fr <http://www.ofbiz-fr.org/> |  réseau
> LE <http://www.libre-entreprise.org/>
>
Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

Nicolas Malin-2
Yes Taher your solution would be nice, just when i see it, I have the
addon syndrom in my mind :)

 From my vision, I see a solution who each component can expose what he
change :

* application/datamodel/upgrade/release17/update.groovy
* framework/service/upgrade/release17/update.groovy
* hot-deploy/myowncomponent/upgrade/release17/update.groovy

When I install a new ofbiz from release16 to release17 I can run :
* ./gradlew upgrade
-> OFBiz start
-> OFBiz check the database version if it's under release17
-> For each component call upgrade/release17/update.groovy on the same
transaction

But sure if we cross own ideas we can find THE solution :)

Nicolas

Le 29/07/2016 à 18:36, Taher Alkhateeb a écrit :

> Hi Nicolas,
>
> Very nice ideas. You made me think of a simple and beautiful solution based
> on your mentioning of plugins:
>
> For example, you create a plugin called UpgradeToOfbiz16 and
> UpgradeToOfbiz17 etc ... and this plugin when installed using ./gradlew
> installPlugin -PpluginName=UpgradeToOfbiz16 would take care of everything
> :) so this would be things like:
> - changes to the database. maybe we can even use something like liquibase
> - copying / adding / deleting
> - installing or uninstalling other plugins
>
> So someone takes care of all the complexity and users just install another
> plugin :) I don't know if this is sort of what you have in mind?
>
> Taher Alkhateeb
>
> On Friday, 29 July 2016, Nicolas Malin <[hidden email]> wrote:
>
>> Many times when I try to refactor some code, I discovered some entities
>> that need to be refactored in order to homogenise or improve them with
>> the new framework functionnalities.
>>
>> We have a page to describe how to do this migration for each modification
>> https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
>>
>> I think that this is not easy for an end user nor useful with the OFBiz
>> release workflow.
>> Maybe we can improve it with this :
>> * Organize this page by OFBiz release branch since we don't change the
>> data model on stable (all the release) branch. When we announce the
>> availability of a new release branch, we can fix the data model changes
>> between this branch and the previous one
>> * Create a state table to indicate some information between the OFBiz and
>> the database, I think about the OFBiz release that exploit this database
>> * Store each datamodel migration script into a specific directory for
>> each component. Those scripts describe the migration through SQL scripts,
>> dedicated services or any automated operations needed to achieve the
>> migration. (and maybe we should use plugins for that)
>> * Create a new build target to apply the upgraded datamodel
>> ** check the database OFBiz release
>> ** apply migration scripts for each component
>> ** increase the database OFBiz release
>>
>> If we have a more efficient datamodel modification workflow, we can
>> improve and homogenise our historical datamodel with serenity.
>>
>> WDYT ?
>>
>>
>> --
>> [image: logoNrd] <http://nereide.fr/>
>> Nicolas Malin
>> The apache way <http://theapacheway.com/> : *Openness* Technical
>> decisions are made publicly
>> [hidden email]
>> <javascript:_e(%7B%7D,'cvml','[hidden email]');>
>> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
>> Apache OFBiz <http://ofbiz.apache.org/> |  The Apache Way
>> <http://theapacheway.com/> |  ofbiz-fr <http://www.ofbiz-fr.org/> |  réseau
>> LE <http://www.libre-entreprise.org/>
>>

Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

taher
Hmm I see,

So would these files ship with each release? Or you just keep adding more
directories for each release in each component in trunk?

Taher Alkhateeb

On Jul 29, 2016 8:48 PM, "Nicolas Malin" <[hidden email]> wrote:

> Yes Taher your solution would be nice, just when i see it, I have the
> addon syndrom in my mind :)
>
> From my vision, I see a solution who each component can expose what he
> change :
>
> * application/datamodel/upgrade/release17/update.groovy
> * framework/service/upgrade/release17/update.groovy
> * hot-deploy/myowncomponent/upgrade/release17/update.groovy
>
> When I install a new ofbiz from release16 to release17 I can run :
> * ./gradlew upgrade
> -> OFBiz start
> -> OFBiz check the database version if it's under release17
> -> For each component call upgrade/release17/update.groovy on the same
> transaction
>
> But sure if we cross own ideas we can find THE solution :)
>
> Nicolas
>
> Le 29/07/2016 à 18:36, Taher Alkhateeb a écrit :
>
>> Hi Nicolas,
>>
>> Very nice ideas. You made me think of a simple and beautiful solution
>> based
>> on your mentioning of plugins:
>>
>> For example, you create a plugin called UpgradeToOfbiz16 and
>> UpgradeToOfbiz17 etc ... and this plugin when installed using ./gradlew
>> installPlugin -PpluginName=UpgradeToOfbiz16 would take care of everything
>> :) so this would be things like:
>> - changes to the database. maybe we can even use something like liquibase
>> - copying / adding / deleting
>> - installing or uninstalling other plugins
>>
>> So someone takes care of all the complexity and users just install another
>> plugin :) I don't know if this is sort of what you have in mind?
>>
>> Taher Alkhateeb
>>
>> On Friday, 29 July 2016, Nicolas Malin <[hidden email]> wrote:
>>
>> Many times when I try to refactor some code, I discovered some entities
>>> that need to be refactored in order to homogenise or improve them with
>>> the new framework functionnalities.
>>>
>>> We have a page to describe how to do this migration for each modification
>>>
>>> https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
>>>
>>> I think that this is not easy for an end user nor useful with the OFBiz
>>> release workflow.
>>> Maybe we can improve it with this :
>>> * Organize this page by OFBiz release branch since we don't change the
>>> data model on stable (all the release) branch. When we announce the
>>> availability of a new release branch, we can fix the data model changes
>>> between this branch and the previous one
>>> * Create a state table to indicate some information between the OFBiz and
>>> the database, I think about the OFBiz release that exploit this database
>>> * Store each datamodel migration script into a specific directory for
>>> each component. Those scripts describe the migration through SQL scripts,
>>> dedicated services or any automated operations needed to achieve the
>>> migration. (and maybe we should use plugins for that)
>>> * Create a new build target to apply the upgraded datamodel
>>> ** check the database OFBiz release
>>> ** apply migration scripts for each component
>>> ** increase the database OFBiz release
>>>
>>> If we have a more efficient datamodel modification workflow, we can
>>> improve and homogenise our historical datamodel with serenity.
>>>
>>> WDYT ?
>>>
>>>
>>> --
>>> [image: logoNrd] <http://nereide.fr/>
>>> Nicolas Malin
>>> The apache way <http://theapacheway.com/> : *Openness* Technical
>>> decisions are made publicly
>>> [hidden email]
>>> <javascript:_e(%7B%7D,'cvml','[hidden email]');>
>>> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
>>> Apache OFBiz <http://ofbiz.apache.org/> |  The Apache Way
>>> <http://theapacheway.com/> |  ofbiz-fr <http://www.ofbiz-fr.org/> |
>>> réseau
>>> LE <http://www.libre-entreprise.org/>
>>>
>>>
>
Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

Jacques Le Roux
Administrator
In reply to this post by Nicolas Malin-2
Hi Nicolas,

Inline


Le 29/07/2016 à 18:08, Nicolas Malin a écrit :

> Many timeswhen I tryto refactor some code, I discoveredsome entitiesthat need to be refactoredin order to homogenise or improve themwith the new
> framework functionnalities.
>
> We have a page to describe how to do thismigration for each modification
> https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
>
> I think that this is not easy for an end user noruseful with the OFBiz release workflow.
> Maybe we can improve it withthis :
> * Organizethis page by OFBiz releasebranchsincewe don't change the data model on stable(all the release)branch.When we announce the availability ofa
> new release branch, we can fix the data model changesbetween this branch and the previous one

+1

> * Create a state table to indicate some information between the OFBizand the database, I think about the OFBiz release that exploit this database

+0, sorry not sure what it means, else do we really need that? What for?

> * Store each datamodel migrationscript intoaspecific directory for each component. Those scriptsdescribe the migration throughSQLscripts,
> dedicatedservicesor anyautomatedoperationsneeded to achieve the migration.(and maybe we should use plugins for that)

Sounds like a good idea +1

> * Create a new build target to apply the upgradeddatamodel
> ** check the database OFBiz release
> ** apply migration scriptsfor each component
> ** increase the database OFBiz release

Would be wonderful +1

Jacques

>
> If we have a more efficient datamodel modificationworkflow, we can improve and homogenise our historical datamodel with serenity.
>
> WDYT?
>
>
> --
> logoNrd <http://nereide.fr/>
> Nicolas Malin
> The apache way <http://theapacheway.com/> : *Openness* Technical decisions are made publicly
> [hidden email]
> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
>
> Apache OFBiz <http://ofbiz.apache.org/> | The Apache Way <http://theapacheway.com/> | ofbiz-fr <http://www.ofbiz-fr.org/> | réseau LE
> <http://www.libre-entreprise.org/>

Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

Jacques Le Roux
Administrator
In reply to this post by taher
Le 29/07/2016 à 20:23, Taher Alkhateeb a écrit :
> Hmm I see,
>
> So would these files ship with each release? Or you just keep adding more
> directories for each release in each component in trunk?

Good question :)

Jacques

>
> Taher Alkhateeb
>
> On Jul 29, 2016 8:48 PM, "Nicolas Malin" <[hidden email]> wrote:
>
>> Yes Taher your solution would be nice, just when i see it, I have the
>> addon syndrom in my mind :)
>>
>>  From my vision, I see a solution who each component can expose what he
>> change :
>>
>> * application/datamodel/upgrade/release17/update.groovy
>> * framework/service/upgrade/release17/update.groovy
>> * hot-deploy/myowncomponent/upgrade/release17/update.groovy
>>
>> When I install a new ofbiz from release16 to release17 I can run :
>> * ./gradlew upgrade
>> -> OFBiz start
>> -> OFBiz check the database version if it's under release17
>> -> For each component call upgrade/release17/update.groovy on the same
>> transaction
>>
>> But sure if we cross own ideas we can find THE solution :)
>>
>> Nicolas
>>
>> Le 29/07/2016 à 18:36, Taher Alkhateeb a écrit :
>>
>>> Hi Nicolas,
>>>
>>> Very nice ideas. You made me think of a simple and beautiful solution
>>> based
>>> on your mentioning of plugins:
>>>
>>> For example, you create a plugin called UpgradeToOfbiz16 and
>>> UpgradeToOfbiz17 etc ... and this plugin when installed using ./gradlew
>>> installPlugin -PpluginName=UpgradeToOfbiz16 would take care of everything
>>> :) so this would be things like:
>>> - changes to the database. maybe we can even use something like liquibase
>>> - copying / adding / deleting
>>> - installing or uninstalling other plugins
>>>
>>> So someone takes care of all the complexity and users just install another
>>> plugin :) I don't know if this is sort of what you have in mind?
>>>
>>> Taher Alkhateeb
>>>
>>> On Friday, 29 July 2016, Nicolas Malin <[hidden email]> wrote:
>>>
>>> Many times when I try to refactor some code, I discovered some entities
>>>> that need to be refactored in order to homogenise or improve them with
>>>> the new framework functionnalities.
>>>>
>>>> We have a page to describe how to do this migration for each modification
>>>>
>>>> https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
>>>>
>>>> I think that this is not easy for an end user nor useful with the OFBiz
>>>> release workflow.
>>>> Maybe we can improve it with this :
>>>> * Organize this page by OFBiz release branch since we don't change the
>>>> data model on stable (all the release) branch. When we announce the
>>>> availability of a new release branch, we can fix the data model changes
>>>> between this branch and the previous one
>>>> * Create a state table to indicate some information between the OFBiz and
>>>> the database, I think about the OFBiz release that exploit this database
>>>> * Store each datamodel migration script into a specific directory for
>>>> each component. Those scripts describe the migration through SQL scripts,
>>>> dedicated services or any automated operations needed to achieve the
>>>> migration. (and maybe we should use plugins for that)
>>>> * Create a new build target to apply the upgraded datamodel
>>>> ** check the database OFBiz release
>>>> ** apply migration scripts for each component
>>>> ** increase the database OFBiz release
>>>>
>>>> If we have a more efficient datamodel modification workflow, we can
>>>> improve and homogenise our historical datamodel with serenity.
>>>>
>>>> WDYT ?
>>>>
>>>>
>>>> --
>>>> [image: logoNrd] <http://nereide.fr/>
>>>> Nicolas Malin
>>>> The apache way <http://theapacheway.com/> : *Openness* Technical
>>>> decisions are made publicly
>>>> [hidden email]
>>>> <javascript:_e(%7B%7D,'cvml','[hidden email]');>
>>>> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
>>>> Apache OFBiz <http://ofbiz.apache.org/> |  The Apache Way
>>>> <http://theapacheway.com/> |  ofbiz-fr <http://www.ofbiz-fr.org/> |
>>>> réseau
>>>> LE <http://www.libre-entreprise.org/>
>>>>
>>>>

Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

Gil Portenseigne

Hi,

I'd rather imagine something like :

$ gradlew searchPlugin migrate*

migrate12.04-13.07

migrate13.07-14.12

...

$ gradlew installPlugin migrate13.07-14.12

So not delivered with the release, but available from plugin system.

My 2 cts

Gil


Le 30/07/2016 à 11:17, Jacques Le Roux a écrit :
Le 29/07/2016 à 20:23, Taher Alkhateeb a écrit :
Hmm I see,

So would these files ship with each release? Or you just keep adding more
directories for each release in each component in trunk?

Good question :)

Jacques


Taher Alkhateeb

On Jul 29, 2016 8:48 PM, "Nicolas Malin" [hidden email] wrote:

Yes Taher your solution would be nice, just when i see it, I have the
addon syndrom in my mind :)

 From my vision, I see a solution who each component can expose what he
change :

* application/datamodel/upgrade/release17/update.groovy
* framework/service/upgrade/release17/update.groovy
* hot-deploy/myowncomponent/upgrade/release17/update.groovy

When I install a new ofbiz from release16 to release17 I can run :
* ./gradlew upgrade
-> OFBiz start
-> OFBiz check the database version if it's under release17
-> For each component call upgrade/release17/update.groovy on the same
transaction

But sure if we cross own ideas we can find THE solution :)

Nicolas

Le 29/07/2016 à 18:36, Taher Alkhateeb a écrit :

Hi Nicolas,

Very nice ideas. You made me think of a simple and beautiful solution
based
on your mentioning of plugins:

For example, you create a plugin called UpgradeToOfbiz16 and
UpgradeToOfbiz17 etc ... and this plugin when installed using ./gradlew
installPlugin -PpluginName=UpgradeToOfbiz16 would take care of everything
:) so this would be things like:
- changes to the database. maybe we can even use something like liquibase
- copying / adding / deleting
- installing or uninstalling other plugins

So someone takes care of all the complexity and users just install another
plugin :) I don't know if this is sort of what you have in mind?

Taher Alkhateeb

On Friday, 29 July 2016, Nicolas Malin [hidden email] wrote:

Many times when I try to refactor some code, I discovered some entities
that need to be refactored in order to homogenise or improve them with
the new framework functionnalities.

We have a page to describe how to do this migration for each modification

https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz

I think that this is not easy for an end user nor useful with the OFBiz
release workflow.
Maybe we can improve it with this :
* Organize this page by OFBiz release branch since we don't change the
data model on stable (all the release) branch. When we announce the
availability of a new release branch, we can fix the data model changes
between this branch and the previous one
* Create a state table to indicate some information between the OFBiz and
the database, I think about the OFBiz release that exploit this database
* Store each datamodel migration script into a specific directory for
each component. Those scripts describe the migration through SQL scripts,
dedicated services or any automated operations needed to achieve the
migration. (and maybe we should use plugins for that)
* Create a new build target to apply the upgraded datamodel
** check the database OFBiz release
** apply migration scripts for each component
** increase the database OFBiz release

If we have a more efficient datamodel modification workflow, we can
improve and homogenise our historical datamodel with serenity.

WDYT ?


--
[image: logoNrd] <http://nereide.fr/>
Nicolas Malin
The apache way <http://theapacheway.com/> : *Openness* Technical
decisions are made publicly
[hidden email]
<a class="moz-txt-link-rfc2396E" href="javascript:_e(%7B%7D,'cvml','information@nereide.fr');"><javascript:_e(%7B%7D,'cvml','information@...');>
8 rue des Déportés 37000 TOURS, 02 47 50 30 54
Apache OFBiz <http://ofbiz.apache.org/> |  The Apache Way
<http://theapacheway.com/> |  ofbiz-fr <http://www.ofbiz-fr.org/> |
réseau
LE <http://www.libre-entreprise.org/>




Reply | Threaded
Open this post in threaded view
|

Re: How manage datamodel change

taher
Hi Gil, All

Yeah I like that idea. Even the words you used are clearer. It is really a
migration more than an update. So the migration happens after the update.

This leaves us with custom components that Nicolas mentioned which we can
also consider as plugins (if we decide te replace hot-deploy with plugins).
So perhaps one solution is to call:

./gradlew migratePlugin -PpluginName=mycustomplugin
-PpluginVersion=desiredversion

However plugin migrations are independent of OFBiz migrations so we can
just consider it part of the plugin update process. So maybe the below
command both updates the plugin to the new version and applies migration:

./gradlew updatePlugin -PpluginName=mycustomplugin
-PpluginVersion=desiredversion -PmigratePlugin=true

All ideas at the moment,  but I think they sound cool.

Taher Alkhateeb

On Saturday, 30 July 2016, gil portenseigne <[hidden email]>
wrote:

>

> Hi,
>
> I'd rather imagine something like :
>
> $ gradlew searchPlugin migrate*
>
> migrate12.04-13.07
>
> migrate13.07-14.12
>
> ...
>
> $ gradlew installPlugin migrate13.07-14.12
>
> So not delivered with the release, but available from plugin system.
>
> My 2 cts
>
> Gil
>
>
> Le 30/07/2016 à 11:17, Jacques Le Roux a écrit :

>>

>> Le 29/07/2016 à 20:23, Taher Alkhateeb a écrit :

>>>

>>> Hmm I see,
>>>
>>> So would these files ship with each release? Or you just keep adding
more
>>> directories for each release in each component in trunk?
>>
>>
>> Good question :)
>>
>> Jacques
>>

>>>

>>> Taher Alkhateeb
>>>
>>> On Jul 29, 2016 8:48 PM, "Nicolas Malin" <[hidden email]>
wrote:
>>>

>>>> Yes Taher your solution would be nice, just when i see it, I have the

>>>> addon syndrom in my mind :)
>>>>
>>>>  From my vision, I see a solution who each component can expose what
he

>>>> change :
>>>>
>>>> * application/datamodel/upgrade/release17/update.groovy
>>>> * framework/service/upgrade/release17/update.groovy
>>>> * hot-deploy/myowncomponent/upgrade/release17/update.groovy
>>>>
>>>> When I install a new ofbiz from release16 to release17 I can run :
>>>> * ./gradlew upgrade
>>>> -> OFBiz start
>>>> -> OFBiz check the database version if it's under release17
>>>> -> For each component call upgrade/release17/update.groovy on the same
>>>> transaction
>>>>
>>>> But sure if we cross own ideas we can find THE solution :)
>>>>
>>>> Nicolas
>>>>
>>>> Le 29/07/2016 à 18:36, Taher Alkhateeb a écrit :
>>>>

>>>>> Hi Nicolas,

>>>>>
>>>>> Very nice ideas. You made me think of a simple and beautiful solution
>>>>> based
>>>>> on your mentioning of plugins:
>>>>>
>>>>> For example, you create a plugin called UpgradeToOfbiz16 and
>>>>> UpgradeToOfbiz17 etc ... and this plugin when installed using
./gradlew
>>>>> installPlugin -PpluginName=UpgradeToOfbiz16 would take care of
everything
>>>>> :) so this would be things like:
>>>>> - changes to the database. maybe we can even use something like
liquibase
>>>>> - copying / adding / deleting
>>>>> - installing or uninstalling other plugins
>>>>>
>>>>> So someone takes care of all the complexity and users just install
another
>>>>> plugin :) I don't know if this is sort of what you have in mind?
>>>>>
>>>>> Taher Alkhateeb
>>>>>
>>>>> On Friday, 29 July 2016, Nicolas Malin <[hidden email]>
wrote:
>>>>>
>>>>> Many times when I try to refactor some code, I discovered some
entities

>>>>>>

>>>>>> that need to be refactored in order to homogenise or improve them
with
>>>>>> the new framework functionnalities.
>>>>>>
>>>>>> We have a page to describe how to do this migration for each
modification
>>>>>>
>>>>>>
https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz
<https://cwiki.apache.org/confluence/display/OFBIZ/Revisions+Requiring+Data+Migration+-+upgrade+ofbiz>
>>>>>>
>>>>>> I think that this is not easy for an end user nor useful with the
OFBiz
>>>>>> release workflow.
>>>>>> Maybe we can improve it with this :
>>>>>> * Organize this page by OFBiz release branch since we don't change
the
>>>>>> data model on stable (all the release) branch. When we announce the
>>>>>> availability of a new release branch, we can fix the data model
changes
>>>>>> between this branch and the previous one
>>>>>> * Create a state table to indicate some information between the
OFBiz and
>>>>>> the database, I think about the OFBiz release that exploit this
database
>>>>>> * Store each datamodel migration script into a specific directory
for
>>>>>> each component. Those scripts describe the migration through SQL
scripts,

>>>>>> dedicated services or any automated operations needed to achieve the
>>>>>> migration. (and maybe we should use plugins for that)
>>>>>> * Create a new build target to apply the upgraded datamodel
>>>>>> ** check the database OFBiz release
>>>>>> ** apply migration scripts for each component
>>>>>> ** increase the database OFBiz release
>>>>>>
>>>>>> If we have a more efficient datamodel modification workflow, we can
>>>>>> improve and homogenise our historical datamodel with serenity.
>>>>>>
>>>>>> WDYT ?
>>>>>>
>>>>>>
>>>>>> --
>>>>>> [image: logoNrd] <http://nereide.fr/> <http://nereide.fr/>
>>>>>> Nicolas Malin
>>>>>> The apache way <http://theapacheway.com/> <http://theapacheway.com/>
: *Openness* Technical
>>>>>> decisions are made publicly
>>>>>> [hidden email]
>>>>>> <javascript:_e(%7B%7D,'cvml','[hidden email]');>
>>>>>> 8 rue des Déportés 37000 TOURS, 02 47 50 30 54
>>>>>> Apache OFBiz <http://ofbiz.apache.org/> <http://ofbiz.apache.org/>
|  The Apache Way
>>>>>> <http://theapacheway.com/> <http://theapacheway.com/> |  ofbiz-fr
<http://www.ofbiz-fr.org/> <http://www.ofbiz-fr.org/> |
>>>>>> réseau
>>>>>> LE <http://www.libre-entreprise.org/>
<http://www.libre-entreprise.org/>
>>>>>>
>>>>>>
>>
>