Centralized ID Management
See also: Generating_Migration_Scripts
Configuration
You need to configure the parameters in the System Configurator Window:
Specially the parameters:
DICTIONARY_ID_USER = Your committer github ID
and
DICTIONARY_ID_PASSWORD = Your committer assigned password
For password assignment procedure please ask in idempiere forums.
Development
When you're ready to develop a trunk enhancement, bug or feature request that requires official dictionary ID's, you need to open a System or GardenWorld session and check the flag "Dictionary Maintenance" in Preferences window.
When you check the "Log Migration Script" the field "Migration Script Comment" is displayed, you can fill it with some information (like ticket number) related to the enhancement, bug or feature request you're solving, example:
You must push the Save button for these changes to be saved, but please note these parameters are not saved between sessions - so you need to check it any time you are going to develop something new for the trunk.
After this you just continue creating the needed dictionary objects and iDempiere will assign the ID's from the centralized website developer.idempiere.com
The Log
If you want to review the log of used ID's for a table, you can navigate to the site:
http://developer.idempiere.com/cgi-bin/showlog?AD_Reference
Please replace the AD_Reference name with the table you want to see.
IMPORTANT NOTE: When in "Dictionary Maintenance" mode all records for clients System and GardenWorld will get centralized IDs
For Projects with Distributed Developers
If you conduct project with distributed developers - with distributed development databases, then you have the same problem as iDempiere Committers to synchronize the dictionary ID's
This implementation can help also for these projects.
You just need to install the cgi scripts provided in:
https://github.com/globalqss/idempiere-stuff/tree/stuff/POC_Central_System_IDs/linux
Set up a data directory ../data relative to cgi-bin directory for your project:
https://github.com/globalqss/idempiere-stuff/tree/stuff/POC_Central_System_IDs/linux/data/Adempiere
Register your developers in the file data/PROJECT_NAME/RegisteredDevelopers.pwd
And set the system configurator parameters for project usage:
PROJECT_ID_USE_CENTRALIZED_ID = Y (default is N) PROJECT_ID_WEBSITE = with the website provided for the centralized ID management PROJECT_ID_PROJECT = name of the project set up PROJECT_ID_USER = your user name for the project PROJECT_ID_PASSWORD = your password committer for the project
This will assign centralized ID's for all tables that have EntityType column, in the seed those are:
AD_Chart AD_ChartDatasource AD_Column AD_Element AD_EntityType AD_Field AD_FieldGroup AD_Form AD_Image AD_IndexColumn AD_InfoColumn AD_InfoProcess AD_InfoRelated AD_InfoWindow AD_Menu AD_Message AD_ModelValidator AD_Modification AD_Process AD_Process_Para AD_Reference AD_Ref_List AD_Ref_Table AD_RelationType AD_ReplicationStrategy AD_ReplicationTable AD_ReportView AD_Rule AD_SearchDefinition AD_StatusLine AD_StatusLineUsedIn AD_Style AD_StyleLine AD_SysConfig AD_Tab AD_Table AD_TableIndex AD_Task AD_ToolBarButton AD_Val_Rule AD_ViewColumn AD_ViewComponent AD_WF_NextCondition AD_WF_Node AD_WF_NodeNext AD_WF_Node_Para AD_WF_Responsible AD_Window AD_Workflow AD_ZoomCondition PA_ColorSchema PA_DocumentStatus PA_MeasureCalc PP_Order_Node PP_Order_NodeNext PP_Order_Workflow PP_WF_Node_Product
Step to deploy server on CentOS Stream 9
#install httpd and git to clone idempiere-stuff of Carlos sudo yum -y install httpd git # install to have SEMANAGE to setting selinux sudo yum install -y policycoreutils-python-utils # add to firewall port sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload # run and setting httpd sudo systemctl start httpd sudo systemctl enable httpd.service # clone idempiere-stuff git clone https://github.com/globalqss/idempiere-stuff.git # copy cgi script to web diretory sudo cp -r ~/idempiere-stuff/POC_Central_System_IDs/linux/cgi-bin/* /var/www/cgi-bin # create data for his project sudo mkdir -p /var/www/data/his # create user file sudo touch /var/www/data/his/RegisteredDevelopers.pwd ######################################################### use nano to add use by format "youruser|yourpassword" #### set right to write content to data folder # let apache have write right sudo chown -R apache:apache /var/www/data # let httpd process have selinux write sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/data(/.*)?" # store sewrite to stable, so don't loss when reboot sudo restorecon -F -R -v /var/www/data/ # reboot server to take it on account # check it work by browse to http://yourserver/cgi-bin/get_ID?PROJECT=his&USER=youruser&PASSWORD=yourpassword&TABLE=AD_Column&ALTKEY=&COMMENT=Comment # if you get value with increase each time you refresh page, it's done
FAQ
1. I will need to migrate some internal modifications to trunk, more exactly some columns that have internal allocated IDs (> 1000000). What is the best way to get IDs from IDs server without creating the columns (because i already have them, i just need to change the IDs) ?
- http://developer.idempiere.com/cgi-bin/get_ID?PROJECT=Adempiere&USER=your_user&PASSWORD=your_password&TABLE=AD_Column&ALTKEY=&COMMENT=Comment
- Dissected :-) NOTE: The table names are case sensitive
-
- http://developer.idempiere.com/
- the website providing the ID's where cgi shells are installed
- cgi-bin/get_ID
- the shell that reserves ID's get_ID
- ?PROJECT=Adempiere
- the project Adempiere (centralized ID can be used to manage IDs for other projects but it needs some setup)
- &USER=your_user
- your assigned user (normally the same as github)
- &PASSWORD=your_password
- your assigned password
- &TABLE=AD_Column
- the table you want to reserve ID (in this example AD_Column - case sensitive!)
- &ALTKEY=
- unused at this moment, to save alternate key for tables like Value
- &COMMENT=Comment -- the comments on the reservation
- The result of the call is a page with the assigned ID.
- To review the log you can call:
- http://developer.idempiere.com/cgi-bin/showtaillog?AD_Column (NOTE: Or use showlog for full log, recommended is to use showtaillog)
- That's it, call the showlog.cgi with the table as parameter.