<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=Projects%2FModule_Life_Cycle_Management%2FFunctional_Documentation</id>
	<title>Projects/Module Life Cycle Management/Functional Documentation - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.infinite-erp.co.id/index.php?action=history&amp;feed=atom&amp;title=Projects%2FModule_Life_Cycle_Management%2FFunctional_Documentation"/>
	<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=Projects/Module_Life_Cycle_Management/Functional_Documentation&amp;action=history"/>
	<updated>2026-04-06T18:35:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.infinite-erp.co.id/index.php?title=Projects/Module_Life_Cycle_Management/Functional_Documentation&amp;diff=2497&amp;oldid=prev</id>
		<title>Wikiadmin: Created page with &quot;{{(!)|User documentation can be found here}}  == Overview ==  In the life cycle of a module version it is usual to go...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=Projects/Module_Life_Cycle_Management/Functional_Documentation&amp;diff=2497&amp;oldid=prev"/>
		<updated>2021-11-20T15:16:12Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{(!)|User documentation can be found &lt;a href=&quot;/index.php?title=ERP/2.50/Developers_Guide/Concepts/Publishing_Modules&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ERP/2.50/Developers Guide/Concepts/Publishing Modules (page does not exist)&quot;&gt;here&lt;/a&gt;}}  == Overview ==  In the life cycle of a module version it is usual to go...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{(!)|User documentation can be found [[ERP/2.50/Developers_Guide/Concepts/Publishing_Modules|here]]}}&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
In the life cycle of a module version it is usual to go through different maturity statuses. For example the version can be published in a ''Testing'' status which is intended to be installed in QA instances, after some QA it can be promoted to ''Controlled Release'' to be installed in early adopters instances and after a period of time working on these instances the version would be set as ''Production'' status.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Purpose ===&lt;br /&gt;
&lt;br /&gt;
The purpose of this project is to define and implement maturity statuses for module versions.&lt;br /&gt;
&lt;br /&gt;
An initial maturity status is set by the module owner when he publishes the module version, and can be changed afterwards by him.&lt;br /&gt;
&lt;br /&gt;
Openbravo ERP instances define which is the minimum maturity status of the modules to be installed.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
&lt;br /&gt;
== Design Considerations ==&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
&lt;br /&gt;
=== Dependencies ===&lt;br /&gt;
&lt;br /&gt;
=== Constraints ===&lt;br /&gt;
&lt;br /&gt;
As the list of possible maturity statuses is maintained in Central Repository and requested by Openbravo ERP each time it is needed, the values of this list will not be translatable in Openbravo ERP.&lt;br /&gt;
&lt;br /&gt;
== Glossary ==&lt;br /&gt;
&lt;br /&gt;
== Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
=== User roles &amp;amp; profiles ===&lt;br /&gt;
&lt;br /&gt;
There are two roles affected by this project:&lt;br /&gt;
&lt;br /&gt;
*'''Module Owner''': Is the person in charge of publishing new versions of the module. He defines the maturity status of his module.&lt;br /&gt;
*'''Openbravo ERP System Administrator''': Is the person that installs and updates modules in an Openbravo ERP instance. He is able to decide which is the minimum maturity status of modules he wants to install in his instance.&lt;br /&gt;
&lt;br /&gt;
=== Business process definition ===&lt;br /&gt;
&lt;br /&gt;
=== User stories ===&lt;br /&gt;
&lt;br /&gt;
Peter is the owner of the ''Neverland Localization Pack'' module. After he finishes developing the first version of this module (version 0.1.0), he publishes it with ''Test'' maturity status.&lt;br /&gt;
&lt;br /&gt;
Wendy is very interested in this localization, so she wants to install it in a testing Openbravo ERP instance as soon as it is available (even it is not already ''Production'' ready) to check everything works as expected. She configures this instance to be able to install modules with ''Test'' status, she searches modules in the ''Module Management Console'' and finds that Peter has published version 0.1.0 as ''Test'', she installs it and after some tests she finds out a critical issue in the module, she reports it and Peter decides to cancel the version.&lt;br /&gt;
&lt;br /&gt;
Alice, as Wendy is also interested in this module so she sets her instance to allow ''Test'' modules, but now when she searches for new modules she doesn't find this one because the only version available is canceled. Meanwhile Peter fixes the issue and publishes a new 0.1.1 version as ''Test''.&lt;br /&gt;
&lt;br /&gt;
Now Alice and Wendy can install this new version.&lt;br /&gt;
&lt;br /&gt;
James is also interested in this localization, but he does not wish to do testing on it, he only wants to install production ready modules in his instance, so he doesn't configure it to accept non-production modules. When he searches for modules, he doesn't find this 0.1.1 version.&lt;br /&gt;
&lt;br /&gt;
After some testing, Alice finds some other issues in the module that are reported  and fixed by Peter. He publishes a new ''Test'' version 0.1.2 which solves the issues and Alice and Wendy update the module to this latest version.&lt;br /&gt;
&lt;br /&gt;
Finally Alice and Wendy do not find any further problem, so they communicates Peter they are happy with the module. Peter, then decides to set his module's maturity as ''Production''.&lt;br /&gt;
&lt;br /&gt;
Now when James searches for modules, he finds this localization pack and he can install it.&lt;br /&gt;
&lt;br /&gt;
=== Functional requirements based on business processes ===&lt;br /&gt;
&lt;br /&gt;
There are 2 sides which require to implement ''Life Cycle Management'': '''Central Repository''' and '''Openbravo ERP'''.&lt;br /&gt;
&lt;br /&gt;
==== Openbravo ERP ====&lt;br /&gt;
&lt;br /&gt;
*Define default instance minimum maturity status accepted both for installation and upgrade.&lt;br /&gt;
*Ask central repository for the available maturity statuses list.&lt;br /&gt;
*Allow to change this defaults settings for the whole instance from a new ''Settings'' tab in ''Module Management Console'' window.&lt;br /&gt;
*Allow to define the minimum maturity status accepted for concrete module upgrades from a new ''Settings'' tab in ''Module Management Console'' window.&lt;br /&gt;
*When searching for module installation or scanning for module updates send this settings to central repository.&lt;br /&gt;
&lt;br /&gt;
==== Central Repository ====&lt;br /&gt;
&lt;br /&gt;
*Maintain a list of maturity statuses.&lt;br /&gt;
*When publishing a module, allow the published to define the maturity status.&lt;br /&gt;
*Allow module administrator to change the maturity status of a published module from a new tab in Module Version window.&lt;br /&gt;
*Allow module administrator to cancel a version of a module from a new tab in Module Version window.&lt;br /&gt;
*Receive minimum accepted maturity status for search and scan for updates and take it into account to calculate the available modules.&lt;br /&gt;
*In the module information, return the maturity status for the version so it can be displayed in the Openbravo ERP UI.&lt;br /&gt;
&lt;br /&gt;
=== User Interface Mockups ===&lt;br /&gt;
&lt;br /&gt;
==== Openbravo ERP ====&lt;br /&gt;
&lt;br /&gt;
''Settings'' tab in ''Module Manager Console'' window, where it is possible to define the minimum global accepted status for search and updates as well as the per module specific status.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaturityLevel 0002 Settings.png]]&lt;br /&gt;
&lt;br /&gt;
''Search'' tab in ''Module Manager Console'' window. Here modules in a status different than ''Production'' are shown to the user.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaturityLevel 0001 Add.png]]&lt;br /&gt;
&lt;br /&gt;
''Install'' popup. When installing or updating a module with a status different than ''Production'' this is prompted to the user.&lt;br /&gt;
&lt;br /&gt;
[[Image:MaturityLevel 0003 Pop.png]]&lt;br /&gt;
&lt;br /&gt;
==== Central Repository ====&lt;br /&gt;
&lt;br /&gt;
Publishing a module version. The initial maturity status appears as a drop down list.&lt;br /&gt;
&lt;br /&gt;
[[Image:Module Tab 004.png]]&lt;br /&gt;
&lt;br /&gt;
Version Status. The maturity status can be promoted or the version can be canceled.&lt;br /&gt;
&lt;br /&gt;
[[Image:Module Tab - Mozilla Firefox 006.png]]&lt;br /&gt;
&lt;br /&gt;
== Technical Requirements ==&lt;br /&gt;
&lt;br /&gt;
A new field for maturity status is needed in the Modules Central Repository returns to scan and search modules. This will require to create a new version of the WebService in Central Repository.&lt;br /&gt;
&lt;br /&gt;
== Non-Functional Requirements ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Open Discussion Items ==&lt;br /&gt;
&lt;br /&gt;
== Closed Discussion Items ==&lt;br /&gt;
*ALO: In Settings tab module specific settings section, should we use ajax in order not to reload the whole content each time a module is added/removed or is it enough doing a request and re-generate everything. Ajax is better from user point of view, but it would complicate development.&lt;br /&gt;
**ALO/ICI: Ajax is not needed.&lt;br /&gt;
*ALO: When installing a new module with a maturity different than ''Production'' should this status be automatically saved as a specific setting for this module. In this way Wendy could find the new ''Test'' 0.1.1 version when scanning for updates having 0.1.0 installed, other way she would have to set it as specific for this module.&lt;br /&gt;
**ALO/ICI: Status is not automatically added as an exception, she would have to add this module as exception in case she wants to get new ''Test'' versions.&lt;br /&gt;
&lt;br /&gt;
== Testcases ==&lt;br /&gt;
&lt;br /&gt;
=== Executed tests ===&lt;br /&gt;
==== Code review ====&lt;br /&gt;
*Openbravo ERP&lt;br /&gt;
*Central Repository module&lt;br /&gt;
&lt;br /&gt;
==== Central Repository ====&lt;br /&gt;
&lt;br /&gt;
===== jUnit =====&lt;br /&gt;
'''jUnit''' test cases for Central Repository can be found at [ https://code.openbravo.com/erp/pmods/org.openbravo.test.centralrepository/ ]&lt;br /&gt;
*'''jUnit test cases for new WebService3''': 13 cases to test maturity levels (search and scan with different combinations of settings). &lt;br /&gt;
*'''Old WebService2 still works''': Test old WebService implementation still works by executing existent jUnit tests in pi before merging the project branch.&lt;br /&gt;
&lt;br /&gt;
===== UI =====&lt;br /&gt;
Check both in ie and ff.&lt;br /&gt;
&lt;br /&gt;
*Publishing a module allows to select its maturity. Check publishing modules in different maturity levels.&lt;br /&gt;
*Change status. Check it is possible to change status forward.&lt;br /&gt;
*Cancel version. Check it is possible to cancel versions.&lt;br /&gt;
&lt;br /&gt;
==== Openbravo ERP ====&lt;br /&gt;
&lt;br /&gt;
===== Project Branch =====&lt;br /&gt;
*Execute integration tests in project branch.&lt;br /&gt;
&lt;br /&gt;
===== New Settings Tab UI =====&lt;br /&gt;
Check both in ie and ff.&lt;br /&gt;
&lt;br /&gt;
*Check by default maturity level for update and search is ''Production''.&lt;br /&gt;
*Change level of update and search.&lt;br /&gt;
*Add specific module settings.&lt;br /&gt;
*Remove specific module settings.&lt;br /&gt;
&lt;br /&gt;
===== Search/install =====&lt;br /&gt;
'''Pre-test'''&lt;br /&gt;
*In CR Openbravo ERP instance&lt;br /&gt;
**Select ''Translation: Spanish-Spain (es_ES) español-España'' module, set maturity ''Test'' for last versions (1.0.11, 1.0.10 and 1.0.9).&lt;br /&gt;
**Select ''Bank Account Search'' module, set its only version to ''Test''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Test'''&lt;br /&gt;
*Install a production module.&lt;br /&gt;
**No warning message appears.&lt;br /&gt;
**It is possible to install&lt;br /&gt;
*Having ''Production'' in install global setting search for the ''Bank Account Search'': it does not appear.&lt;br /&gt;
*Having ''Production'' in install global setting search for the ''Translation: Spanish-Spain (es_ES) español-España''.&lt;br /&gt;
**It appears in the results without additional message&lt;br /&gt;
**When click on install version 1.0.8 is installed without message&lt;br /&gt;
*Having ''Test'' in update global setting search for ''Bank Account Search''&lt;br /&gt;
**It appears &lt;br /&gt;
**A message says its maturity level is test&lt;br /&gt;
**Link works&lt;br /&gt;
*Click on install for that module. &lt;br /&gt;
**Message saying maturity is test&lt;br /&gt;
**Link works&lt;br /&gt;
**Warning about installing a non production module&lt;br /&gt;
**It is possible to install&lt;br /&gt;
*Having ''Test'' in install global setting search for ''Spanish Localization Pack'' and click install&lt;br /&gt;
**Test version of ''Spanish Translation'' appears as additional module to be installed.&lt;br /&gt;
**A message says its maturity level is test&lt;br /&gt;
**Warning message about installing non production modules&lt;br /&gt;
**Link works&lt;br /&gt;
*Having ''Production'' in install global setting search for ''Spanish Localization Pack'' one and click install.&lt;br /&gt;
**The latest no-test (1.0.8) version of ''Spanish Translation'' module appears&lt;br /&gt;
**No message in that module&lt;br /&gt;
**No warning.&lt;br /&gt;
*Having ''Production'' in install global setting search for ''Bank Account Search Template'' and click install. It is not possible to install.&lt;br /&gt;
*Install obx. obx installation shouldn't have been affected by this project, check it is still possible to successfully install modules using obx files.&lt;br /&gt;
&lt;br /&gt;
===== Scan for updates =====&lt;br /&gt;
&lt;br /&gt;
'''Pre-test'''&lt;br /&gt;
*Install Spanish Localization Pack 1.4.2 (contains Translation 1.0.8)&lt;br /&gt;
&lt;br /&gt;
'''Test'''&lt;br /&gt;
*Having ''Production'' in update global setting scan for updates.&lt;br /&gt;
**No updates available for ''Spanish Localization Pack''&lt;br /&gt;
*Having ''Test'' setting for ''Translation'' scan for updates. &lt;br /&gt;
**Update available&lt;br /&gt;
**When clicking in install message appears next to ''Translation module''&lt;br /&gt;
**Warning message appears&lt;br /&gt;
**It is possible to install&lt;br /&gt;
*Repeat last test, having no setting for ''translation module'' and ''Test'' as global update setting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pending tests ===&lt;br /&gt;
&lt;br /&gt;
None&lt;br /&gt;
&lt;br /&gt;
== Project status ==&lt;br /&gt;
&lt;br /&gt;
Project has been merged back to pi and will be released within 2.50MP20.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Projects ERP]]&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
</feed>