<?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=Naming_guidelines_for_modules</id>
	<title>Naming guidelines for modules - 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=Naming_guidelines_for_modules"/>
	<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=Naming_guidelines_for_modules&amp;action=history"/>
	<updated>2026-04-06T18:37:03Z</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=Naming_guidelines_for_modules&amp;diff=2483&amp;oldid=prev</id>
		<title>Wikiadmin: Created page with &quot;=Naming guidelines for modules=  It is important to select an appropriate name for your module in order to make it easier for users to recognize it both in the Forge and in th...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.infinite-erp.co.id/index.php?title=Naming_guidelines_for_modules&amp;diff=2483&amp;oldid=prev"/>
		<updated>2021-11-20T15:05:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;=Naming guidelines for modules=  It is important to select an appropriate name for your module in order to make it easier for users to recognize it both in the Forge and in th...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Naming guidelines for modules=&lt;br /&gt;
&lt;br /&gt;
It is important to select an appropriate name for your module in order to make it easier for users to recognize it both in the Forge and in the Module Management window. &lt;br /&gt;
 &lt;br /&gt;
In future, Openbravo may also use these naming convention to automatically categorize modules based on tags, therefore it is important that these naming conventions are followed. &lt;br /&gt;
&lt;br /&gt;
Here is a set of naming guidelines that we ask module author to honor:&lt;br /&gt;
&lt;br /&gt;
==Branding rules:==&lt;br /&gt;
&lt;br /&gt;
* The module name should match the project name in the Forge (optional)&lt;br /&gt;
* Module names should not be longer than 5 or 6 words and less than 60 character long (optional)&lt;br /&gt;
* Module names cannot contain the word &amp;quot;Openbravo&amp;quot;&lt;br /&gt;
**JSON REST Web Services:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Openbravo JSON REST Web Services:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Exception to the previous rule: modules that Openbravo S.L. decides to market as products rather than modules:&lt;br /&gt;
**Openbravo QuickStart Template:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* You do not need to specify the Openbravo version in the module name:&lt;br /&gt;
**Translation: Arabic Saudi Arabia (ar_SA):   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Translation: Arabic Saudi Arabia (ar_SA) for Openbravo 2.50:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Module names should not contain the word &amp;quot;Module&amp;quot;&lt;br /&gt;
**Copy Role:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Copy Role Module:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Language and grammar conventions:==&lt;br /&gt;
&lt;br /&gt;
* All module names must be in English. The module description and help can be in any other language.&lt;br /&gt;
* Non English proper nouns are accepted as part of a module name specified in English&lt;br /&gt;
**Tax Report: Modelo 349 (Spain):   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Tax Report: Form 349 (Spain):   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt; (rationale: Modelo  349 is a proper noun and should not be translated)&lt;br /&gt;
**Informe Fiscal: Modelo 349 (Spain):   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* The module help must differ from the module description&lt;br /&gt;
* Grammatically, module names should be treated as proper nouns and you should capitalize the first letter of every word in the module name (with the exception of short words and acronyms)&lt;br /&gt;
**Initial Data Load:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Initial data load:    &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Direct Debit Form of Payment:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Direct Debit Form Of Payment:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Three Digits ISO Country Codes:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Three Digits Iso Country Codes:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* You should avoid using numeric characters to express quantities (they are OK in codes and dates)&lt;br /&gt;
**Three Digit ISO Country Codes:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**3 Digit ISO Country Codes:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Chart of Accounts - PGC 2007 General: Spain:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Tax Report: Modelo 349 - Spain&lt;br /&gt;
* Module names should not end with a full stop:&lt;br /&gt;
**Initial Data Load:   &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Initial Data Load.:   &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Module description should end with a full stop&lt;br /&gt;
**Generador de declaraciones de impuestos. Traducción al  español (español España) del módulo Tax Report Launcher.:    &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Generador de declaraciones de impuestos. Traducción al  español (español España) del módulo Tax Report Launcher:    &amp;lt;span style=&amp;quot;background: #FF0000; color: white;&amp;quot;&amp;gt;INCORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Specific types of modules:==&lt;br /&gt;
&lt;br /&gt;
* Core translations (translation of Openbravo Core) should follow the convention:&lt;br /&gt;
**&amp;quot;Translation: $LANG $COUNTRY ($CODE)&amp;quot;&lt;br /&gt;
**Translation: Arabic Saudi Arabia (ar_SA) &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Module translations (translations of modules other than Openbravo Core) should follow the convention:&lt;br /&gt;
**&amp;quot;$MODULE NAME Translation: $LANG $COUNTRY ($CODE)&amp;quot;&lt;br /&gt;
**Tax Report Launcher Translation: Spanish Spain  (es_ES) &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* The description for module translations should include an appropriate translation of the module name in the target language as well as both the name of the language and the name of the country in the target language:&lt;br /&gt;
**+ Name: Tax Report Launcher Translation: Spanish Spain (es_ES) + Description: Generador de declaraciones de impuestos. Traducción al español (español España) del módulo Tax Report Launcher. &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Chart of accounts modules should follow the convention:&lt;br /&gt;
**&amp;quot;Chart of Accounts: $COUNTRY&amp;quot;&lt;br /&gt;
**Chart of Accounts: France &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* For countries with multiple charts of accounts, use the conventions&lt;br /&gt;
**&amp;quot;Chart of Accounts: $TYPE - $COUNTRY&amp;quot;&lt;br /&gt;
**Chart of Accounts: PGC 2007 General - Spain &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**Chart of Accounts: PGC 2007 PYMEs - Spain &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Tax configuration modules should follow the convention:&lt;br /&gt;
**&amp;quot;Tax Configuration: $COUNTRY&amp;quot;&lt;br /&gt;
**Tax Configuration: France &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Tax report modules should follow the convention:&lt;br /&gt;
**&amp;quot;Tax Report: $FORM_NAME - $COUNTRY&amp;quot;&lt;br /&gt;
**Tax Report: Modelo 347 - Spain &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Region modules should follow the convention:&lt;br /&gt;
**&amp;quot;Regions: $COUNTRY&amp;quot;&lt;br /&gt;
**&amp;quot;Regions: Brazil&amp;quot; &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
**NOTE: whenever the regions of a country are called  something other than regions, you can use the correct term  in the module description. Example: + Name: Regions: United States of America + Description: US states.&lt;br /&gt;
* Report modules (other than tax reports) should follow the convention:&lt;br /&gt;
**&amp;quot;Report: $REPORT_NAME&amp;quot;&lt;br /&gt;
**Report: Shipments Awaiting Invoice &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Skin modules should follow the convention:&lt;br /&gt;
**&amp;quot;Skin: $SKIN_NAME&amp;quot;&lt;br /&gt;
**Skin: Blue Sea &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
* Tutorial modules (provided as examples to illustrate how to develop modules) should follow the convention:&lt;br /&gt;
**&amp;quot;Tutorial: $TUTORIAL NAME&amp;quot;&lt;br /&gt;
**Tutorial: Solitaire &amp;lt;span style=&amp;quot;background: #51990F; color: white;&amp;quot;&amp;gt;CORRECT&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Packaging=&lt;br /&gt;
&lt;br /&gt;
*Do not use &amp;quot;module&amp;quot; in the packaging, everything is a module (including core) so this would be redundant&lt;br /&gt;
&lt;br /&gt;
*In general modules should not use subpackages of other modules since it might create a conflict. In particular do not use subpackages for modules included in a pack (eg. several modules in the spanish localization pack use as a package that is a subpackage of the spanish localization pack package). That inclusion is declared in the pack itself and using subpackaging would create a kind of redundancy (the module could be taken out from the pack later) or modules originally not designed for the pack could be included later.&lt;br /&gt;
&lt;br /&gt;
*The only case where a subpackage makes sense are translations since that relationship can not be changed. &lt;br /&gt;
*For translations do not use the word &amp;quot;translation&amp;quot; but directly the language code: translatedmodulepackage.languageCode (eg. org.openbravo.document.massinvoicing.es_ES). &lt;br /&gt;
*For translations of core it does not work (org.openbravo.es_ES) because core package is not clear enough. In that case use org.openbravo.coretranslation.es_ES or just org.openbravo.core.es_ES)&lt;br /&gt;
&lt;br /&gt;
* Do not use the &amp;quot;type of artifacts&amp;quot; included in the module for packaging (eg. org.openbravo.report.xxx or org.openbravo.callout.xxx are wrong). The content of a module should not be defined by the &amp;quot;technical components&amp;quot; used to implement them but by the functional objective of the module. It might happen that the functional objective can be reached in a different manner and it should not force repackaging. &lt;br /&gt;
*In some cases functional and technical categories are the same (eg. report) - in this case put the word &amp;quot;report&amp;quot; in the name of the module but not as a package (eg. org.openbravo.financial.taxreportXX instead of org.openbravo.financial.report.taxXX)&lt;br /&gt;
&lt;br /&gt;
*A package for a module developed by Openbravo S.L.U. and staff should be:&lt;br /&gt;
  org.openbravo.functionalcategory.modulename&lt;br /&gt;
&lt;br /&gt;
**In some cases it makes sense to use an additional level:&lt;br /&gt;
  org.openbravo.functionalcategory.functionalsubcategory.modulename&lt;br /&gt;
&lt;br /&gt;
**Use a common set of functional categories and subcategories (when needed). Each scrum team defines their own list of categories and subcategories. This is a starting point (split by teams):&lt;br /&gt;
 -applicationdictionary (platform)&lt;br /&gt;
 -kernel (platform) -&amp;gt;  although seam module uses base, so we can change to base (Martin?)&lt;br /&gt;
 -utility (platform)&lt;br /&gt;
 -setup (erp engineering)&lt;br /&gt;
 -common (erp engineering)&lt;br /&gt;
 -document (erp engineering) -&amp;gt;  this one has never been clear, it consolidates sales and purchase (use them as optional subcategories?)&lt;br /&gt;
 -warehouse (erp engineering)&lt;br /&gt;
 -project (erp engineering)&lt;br /&gt;
 -production (erp engineering)&lt;br /&gt;
 -mrp (erp engineering)&lt;br /&gt;
 -financial (erp engineering)&lt;br /&gt;
 -erputil (erp engineering)&lt;br /&gt;
 -localization (localization) -&amp;gt;  subcategories for each country (eg. localizatation.spain)&lt;br /&gt;
 -localizationutil (localization) -&amp;gt;  not sure if needed&lt;br /&gt;
 -quickstart (industry templates / verticals are a category by itself)&lt;br /&gt;
 -quickstartspain (industry templates / verticals are a category by itself)&lt;br /&gt;
&lt;br /&gt;
=Choosing a db_prefix=&lt;br /&gt;
&lt;br /&gt;
==Modules created by the community==&lt;br /&gt;
* Use a db_prefix that do '''not''' begin with the letters '''OB'''&lt;br /&gt;
* '''EM''' is a reserved word '''not allowed as a db_prefix'''&lt;br /&gt;
&lt;br /&gt;
==Modules created by Openbravo, S.L.U. and staff==&lt;br /&gt;
* Use a db_prefix OBXYZ where X, Y and Z are:&lt;br /&gt;
** X: for each category (eg. K for Kernel, F for Financial, more to be defined)&lt;br /&gt;
** Y: one character for each subcategory (only if it exists)&lt;br /&gt;
** Z: from one to 4 characters for the module itself&lt;br /&gt;
&lt;br /&gt;
==Customization modules==&lt;br /&gt;
&lt;br /&gt;
* Use a db_prefix beginning with CUST&lt;br /&gt;
&lt;br /&gt;
Usually customization modules are not intended to be published in Central Repository. In this case, DBPrefix should start with '''CUST'''. Modules with these kind of DBPrefixes '''cannot be registered''' in Central Repository but are collision safe because no other module in Central Repository can use this DBPrefix. This is an important decision to be taken before starting the module development: in case there is any chance of publishing the module at some moment, it should follow the standard rule, if it is absolutely sure that it will not be published you can use ''CUST'' and do not register it.&lt;br /&gt;
&lt;br /&gt;
[[Category:Openbravo ERP 2.50]]&lt;/div&gt;</summary>
		<author><name>Wikiadmin</name></author>
		
	</entry>
</feed>