Introduction

Starting from CloudBlue Commerce 21.0, all domain registrar plug-ins that used older technology developed in C++ are discontinued:

  • AusRegistry
  • Bottle
  • DistributeIT
  • DKHostmaster
  • DNSbe
  • DomiNIC
  • Enom
  • Epnic
  • EPP Registrar
  • EURid
  • GoDaddy
  • InterNetX
  • Irelanddr
  • Joker
  • KazNic
  • MelbourneIT
  • Nominet
  • OpenSRS
  • RuCenter
  • SIDN
  • UniForum
  • WebNIC
  • Whois

The exception is "Dummy Registrar", "PEM Registrar" and "Test Registrar" plug-ins.

To ensure the smooth operation of domain registration services, we strongly recommend that you migrate all domains and TLD zones from the older plug-ins to the newer PHP plug-ins.

A billing pre-check called "21-00-eol-domain-plugins-pre-check.py" was added to prevent upgrading to CloudBlue 21.0 if any  C++ domain plug-ins are active.



Steps to Complete


The main steps are as follows:

Phase 1: Create a backup of the Billing database.

Phase 2: Collect information about the objects that must be migrated.

Phase 3: Switch the management of new domains from the discontinued C++ domain plug-ins to PHP domain plug-ins.

Phase 4: Migrate all existing active domains from the discontinued C++ domain plug-ins to PHP domain plug-ins.

Phase 5: Clean up your installation of CloudBlue Commerce from the discontinued C++ domain plug-ins.


Note: In phase 5, all orders related to the discontinued C++ domain plug-ins will be automatically archived by the cleanup tool. To learn more about the archiving of orders, please refer to the Billing Provider Guide.


Phase 1 (can take 1+ day)


1.1. Create a full backup of the Billing database.

1.2. Create a separate backup of the following Billing database tables that will be affected:


Generic:

  • 'ADomain'
  • 'Registrar'
  • 'Plugin'
  • 'DBContainers'

Plug-in specific:

  • 'OpenSRSAutoRenewTLD', 'OpenSRSConf', 'OpenSRSConfArc',
  • 'AusRegistryConf', 'AusRegistryContact', 'AusRegTransferConfirm',
  • 'BottleConf', 'BottleConfArc', 'BottleMember', 'BottleMemberArc',
  • 'DistributeITConf', 'DistributeITConfArc',
  • 'DKHostmasterConf', 'DKHostmasterConfArc', 'DKHostmasterNS', 'DKHostmasterNSArc',
  • 'DNSbeConf', 'DNSbeConfArc',
  • 'DomiNICConf', 'DomiNICCountry', 'DomiNICDomain',
  • 'EnomConf', 'EnomStateJP',
  • 'EpnicConf', 'EpnicConfArc', 'AnEpnicContact', 'AnEpnicContactArc', 'AnEpnicDomain', 'AnEpnicDomainArc',
  • 'AnEpnicDomainTaskQueue', 'AnEpnicDomainTaskQueueArc', 'AnEpnicDomainTransferRequest',
  • 'AnEpnicDomainTransferRequestArc', 'AnEpnicDomainZoneProperty',
  • 'EPPRegistrarConf', 'EPPRegistrarConfArc', 'EPPRegistrarContact',
  • 'EURidConf', 'EURidConfArc',
  • 'GoDaddyConf', 'GoDaddyCountry',
  • 'InterNetXConf', 'InterNetXContact', 'InterNetXTransaction',
  • 'IrelandDRConf', 'IrelandDRConfArc', 'IrelandDRCountry', 'IrelandDRCountryArc',
  • 'JokerConf', 'JokerConfArc', 'JokerUser', 'JokerUserArc', 'AnJokerDomain', 'AnJokerDomainArc',
  • 'KAZNICConf',
  • 'MelbourneITConf', 'MelbourneITConfArc', 'MITIsTransferInternal',
  • 'NominetAccount', 'NominetConf',
  • 'RuCenterConf', 'RuCenterContract', 'RuCenterExpDate', 'RuCenterExpDateArc',
  • 'SIDNConf', 'SIDNConfArc', 'SIDNContact',
  • 'UniForumConf', 'UniForumConfArc',
  • 'WebNICConf', 'WebNICStateBook',
  • 'WhoisConf'

Phase 2 (can take 1+ day)


To collect information about the domains and TLDs that must be migrated and about the obsolete domain plug-ins that must be replaced and removed, do the following:

2.1. Download the clean-up tool to the CloudBlue management node (MN) and extract its contents. Make sure you have the latest version of the tool. Find a version in archive's name or in the file VERSION inside of a tool archive.

2.2. Run the tool:

Note: It is recommended to run the tool inside the "screen" application and redirect the output to a file because an execution can take some time and the output can have many lines.
# cd /root/clean-up-hosting-module && python clean-up-cpp-domain-registrars.py show-problems

The example of output:

[2021-05-25 06:57:03,759] [INFO]: The cleanup tool for C++ Domain Registrars was started: clean-up-cpp-domain-registrars.py 'show-problems'.
[2021-05-25 06:57:03,768] [INFO]: Info about zones:
[2021-05-25 06:57:03,769] [INFO]: The vendor #1 ("The Provider") has the following zones using registrars based on deprecated C++ domain plugins: net, com, org
[2021-05-25 06:57:03,769] [INFO]: The vendor #1000001 ("The Reseller L1") has the following zones using registrars based on deprecated C++ domain plugins: com
[2021-05-25 06:57:04,576] [INFO]: Info about registered domains:
[2021-05-25 06:57:04,576] [INFO]: The vendor #1 (The Provider) has the following domains registered by registrars based on deprecated C++ domain plugins:
[2021-05-25 06:57:04,577] [INFO]: On registrar "InterNetX Registrar For .COM, .ORG, .NET Zones" (ID=1):
[2021-05-25 06:57:04,577] [INFO]: Billing Domain ID: 1, Name: example-1.org
[2021-05-25 06:57:04,577] [INFO]: Billing Domain ID: 100005, Name: example-2.com
[2021-05-25 06:57:04,577] [INFO]: On registrar "OpenSRS Registrar" (ID=6):
[2021-05-25 06:57:04,577] [INFO]: Billing Domain ID: 2, Name: example-3.net
[2021-05-25 06:57:04,577] [INFO]: Billing Domain ID: 6, Name: example-4.net
[2021-05-25 06:57:12,626] [INFO]: Billing Domain ID: 99991, Name: example-5.net
[2021-05-25 06:57:12,627] [INFO]: To migrate from deprecated C++ domain registrar plugins please refer to KB: https://cloudblue.freshdesk.com/a/solutions/articles/44002194907

Phase 3 (can take 30+ days)


3.1. Set up PHP domain plug-ins to replace all discontinued C++ domain plug-ins.

See the following links to find more information how to set up PHP domain plug-ins:

Integrate each PHP plug-in with the API of the same vendor as you had configured for C++ domain plug-ins.


Examples of supported migration paths:

  • C++ domain plug-in "ENOM (USA)" -> PHP domain plug-in "Enom"
  • C++ domain plug-in "InterNetX (Germany)" -> PHP domain plug-in "InterNetX"

Examples of non-supported migration paths:

  • C++ domain plug-in "ENOM (USA)" -> PHP domain plug-in "InterNetX"
  • C++ domain plug-in "InterNetX (Germany)" -> PHP domain plug-in "Enom"


Note: See Phase 4 for more information about already supported registrars in PHP plug-ins.
If your registrar is not in the supported list, you should implement a PHP plug-in for your registrar. See the following link for details on how to implement a PHP plug-in: https://docs.cloudblue.com/cbc/20.5/premium/content/Domain-Plug-in-SDK-Guide-(PHP)/Overview.htm


3.2. Reassign all TLDs associated with discontinued C++ domain plug-ins to new PHP domain plug-ins for all resellers and the provider.

Contact our technical support if you need assistance with creating a large number of PHP plug-in instances and if you have to do numerous TLD reassignments.


Phase 4 (can take 30+ days)


4.1. To migrate all active domains associated with the discontinued C++ domain plug-ins, see the article https://docs.cloudblue.com/cbc/20.5/premium/content/Operations-Provider-Guide/Switching-Domain-Management-from-C++-to-PHP-Domain-Plugins.htm.

Note that not all PHP plug-ins support migration from C++ plug-ins.

If your PHP plug-in does not support the migration, you should implement it for your plug-in.

4.2. Some domains can have a transitional status in Billing which does not equal to "Registered" (status code=20) and "Canceled" (status code=380).

For example, one of the following transitional statuses:

  • "Prepared" (status code=10)
  • "Selected for Registration" (status code=25)
  • "Registering Domain in External System" (status code=26)
  • "Acquiring Name Servers" (status code=28)
  • "Submitting for Registration" (status code=30)
  • "Submitting for Contact Creation" (status code=31)
  • "Submitted for Contact Creation" (status code=32)
  • "Checking for Contact Creation" (status code=33)
  • "Waiting callback for Registration" (status code=51)
  • "Waiting callback for Transfer" (status code=52)
  • "Waiting callback for Renewal" (status code=53)
  • "Waiting callback for Cancelation" (status code=54)
  • "Waiting callback for Name Servers" (status code=55)
  • "Waiting callback for Contacts" (status code=56)
  • "Submitting for NS Creation" (status code=41)
  • "Submitted for NS Creation" (status code=42)
  • "Checking for NS Creation" (status code=43)
  • "Submitted for Registration" (status code=40)
  • "Submitted for Manual Registration" (status code=45)
  • "Checking Registration Status" (status code=50)
  • "Submitting for Transfer" (status code=60)
  • "Submitted for Transfer" (status code=70)
  • "Submitted for Manual Transfer" (status code=80)
  • "Checking Transfer Status" (status code=100)
  • "Checking Manual Transfer Status" (status code=110)
  • "Submitting for Renewal" (status code=120)
  • "Submitted for Renew" (status code=130)
  • "Submitted for Manual Renewal" (status code=135)
  • "Checking Renewal Status" (status code=140)
  • "Registered, Notifying" (status code=150)
  • "Submitting for Cancelation" (status code=310)
  • "Submitted for Cancelation" (status code=330)
  • "Submitted for Manual Cancelation" (status code=340)
  • "Checking Cancelation Status" (status code=350)
  • "Canceled, Notifying" (status code=360)

All unfinished operations must be completed for the domains with transitional statuses.

All domains associated with discontinued C++ domain plug-ins must reach a final status of their provisioning flow, namely, one of the following:

  • "Registered" (status code=20). All these domains must be migrated to PHP domain plug-ins as described in the step 4.1
  • "Canceled" (status code=380). All these domain will be deleted in the steps 5.1.x of Phase 5.

Contact support if you have the domains with statuses which incompatible with migration to PHP plug-ins (step 4.1) and deletion (steps 5.1.x).


Phase 5 (can take 2+ days)


Use the clean-up tool to remove all domains with the "Canceled" status that are associated with the discontinued C++ domain plug-ins. Make sure you have the latest version of the tool. Find a version in archive's name or in the file VERSION inside of a tool archive.


Note: You can modify the tool to support the cleanup of your custom C++ domain plug-ins, if you have them.
Modify the variables 'deprecated_plugins' and 'deprecated_bss_db_tables' in the script 'cpp_domain_registrars.py' before running the tool.
Add container IDs of your custom deprecated C++ domain plug-ins in the variable 'deprecated_plugins'. You can find examples of these IDs in the Billing database tables 'DBContainers', 'Plugin', or 'Registrar'.
Add the Billing database tables that belong to your custom deprecated C++ domain plug-ins to the variable 'deprecated_bss_db_tables'.


You can delete the domains by registrar IDs (see example 5.1.1) or by account IDs (see examples 5.1.2 and 5.1.3)

5.1.1.

# python clean-up-cpp-domain-registrars.py registrar-domains --registrar-ids 5,6

Registrar IDs can be found in the Billing Panel > System > Settings > Domains > Registrars tab. Click Select Columns and enable the RegistrarID column for the table. Example:

5.1.2.

# python clean-up-cpp-domain-registrars.py account-domains --account-ids 20,21,100501 --recursive false

The example 5.1.3 will delete all "canceled" domains for all CloudBlue accounts because the "recursive" option is active and account #1 is the Provider and all other accounts belong to it directly or indirectly via resellers:

5.1.3.

# python clean-up-cpp-domain-registrars.py account-domains --account-ids 1 --recursive true

5.2.1. Delete all instances of discontinued domain plug-ins by using the Billing Panel > System > Settings > Domains > Registrars tab. Select the plug-ins and click Delete.

If you get an error related to TLDs associated with discontinued domain plug-in see the step 3.2. Example:

If you get an error related to domains registered using discontinued domain plug-in see the steps 4.1 and 4.2. Example:

5.2.2. If the WHOIS C++ plug-in is installed (package 'bm-domreg-plugin-whois') you will have to delete all its WHOIS Checkers.

You can ignore the step 5.2.2 if the menu Billing Panel > System > Settings > Domains > WHOIS Checkers tab does not exist.


To delete WHOIS Checkers go to Billing Panel > System > Settings > Domains > WHOIS Checkers tab, select all WHOIS Checkers and click "Delete" button. Example:

You should unassign all WHOIS checkers from respective domain zones before deletion. Otherwise, an attempt to delete them will fail. Example:

To unassign WHOIS Checkers go to Billing Panel > System > Settings > Domains > Domain Zones > {Respective Zone}, click the "Edit" button and unassing all checkers connected with deprecated WHOIS plug-in. Example:

5.3. Delete all installed packages of discontinued domain plug-ins from the Billing Application node using the CloudBlue Commerce Provider Panel > Infrastructure > Service Nodes > click {PBAAPPL node name} > Packages tab. Type the phrase 'bm-domreg-plugin' into the Name field in the Search toolbar and click Search. For each discontinued package in the search results, click the Deinstall icon (red cross) in the Actions column. The official list of discontinued packages is as follows:

  • bm-domreg-plugin-ausregistry
  • bm-domreg-plugin-bottle
  • bm-domreg-plugin-distributeit
  • bm-domreg-plugin-dkhostmaster
  • bm-domreg-plugin-dnsbe
  • bm-domreg-plugin-dominic
  • bm-domreg-plugin-enom
  • bm-domreg-plugin-epnic
  • bm-domreg-plugin-eppregistrar
  • bm-domreg-plugin-eurid
  • bm-domreg-plugin-godaddy
  • bm-domreg-plugin-internetx
  • bm-domreg-plugin-irelanddr
  • bm-domreg-plugin-joker
  • bm-domreg-plugin-kaznic
  • bm-domreg-plugin-mit
  • bm-domreg-plugin-nominet
  • bm-domreg-plugin-opensrs
  • bm-domreg-plugin-rucenter
  • bm-domreg-plugin-sidn
  • bm-domreg-plugin-uniforum
  • bm-domreg-plugin-webnic
  • bm-domreg-plugin-whois

5.4. Delete all packages of discontinued domain plug-ins from the Package Repository by using the CloudBlue Commerce Provider Panel > Infrastructure > Package Repository. Type the phrase 'bm-domreg-plugin' into the Name field in the Search toolbar and click Search. Mark all discontinued packages in the search result and click Delete. The official list of discontinued packages is as follows:

  • bm-domreg-plugin-ausregistry
  • bm-domreg-plugin-bottle
  • bm-domreg-plugin-distributeit
  • bm-domreg-plugin-dkhostmaster
  • bm-domreg-plugin-dnsbe
  • bm-domreg-plugin-dominic
  • bm-domreg-plugin-enom
  • bm-domreg-plugin-epnic
  • bm-domreg-plugin-eppregistrar
  • bm-domreg-plugin-eurid
  • bm-domreg-plugin-godaddy
  • bm-domreg-plugin-internetx
  • bm-domreg-plugin-irelanddr
  • bm-domreg-plugin-joker
  • bm-domreg-plugin-kaznic
  • bm-domreg-plugin-mit
  • bm-domreg-plugin-nominet
  • bm-domreg-plugin-opensrs
  • bm-domreg-plugin-rucenter
  • bm-domreg-plugin-sidn
  • bm-domreg-plugin-uniforum
  • bm-domreg-plugin-webnic
  • bm-domreg-plugin-whois

5.5. Delete all containers and Billing database tables of the discontinued domain plug-ins by using this tool:

# python clean-up-cpp-domain-registrars.py plugins


Internal

Link to the internal Jira article: https://jira.int.zone/browse/OA-525 "Clean up C++ Domain SDK and plugins".


Additional information: You can set the "debug_mode" variable to True in the "oacleanup/cleanup/cpp_domain_registrars.py" script to make the script run in safe mode. In this case, all actions intended by the script will be printed out without actually executing them. This might be useful if you need to double-check before starting the actual cleanup.