How do I connect a Client controller to a different Operations Center?

Article ID:216089607
3 minute readKnowledge base

Issue

  • We had a Client controller connected to an Operations Center and we wish to connect it to another Operations Center

Resolution

Pre-Requisite

  • Make sure that the destination Operations Center is running the same or a more recent version of CloudBees CI.

  • If the Client controller is using Operations Center SSO, the disconnection will cause the Client controller to switch to the fallback Security Realm that should allow users to still be able to login. Please review Single sign-on fallback behavior to ensure that this s set up properly. Otherwise, the controller will not be accessible when disconnected and in that case security would need to be disabled temporarily (see How do I login to Jenkins when I locked myself out?) to reconnect the controller.

  • If the destination Operations Center is using https, make sure it is trusted by the Client controller. Otherwise, add the required certificate(s) to the Client controller’s truststore, see How to install a new SSL certificate on Traditional Platforms?

From the UI

This is the recommended approach:

  1. [controller] Go to Manage Jenkins  Configure System  Operations Center Connector

  2. [controller] Uncheck the Operations Center Connector  Enable checkbox and Save

  3. [CJOC source] Backup the config.xml of the Client controller item (available at $CJOC_URL/jobs/<pathToClientcontrollerItem>/config.xml)

  4. [CJOC source] Go to the Client controller  Manage page and hit Release

  5. [CJOC destination] Create a new Client controller item

  6. [CJOC destination] Connect the Client controller (by either pushing connection details OR copy / pasting the connection details as documented in Setting up your new Client controller)

  7. [CJOC destination] If there was an RBAC configuration for the controller item, restore the RBAC configuration from the backed up config.xml as explained in step 10. of How to save RBAC configuration when a Client controller needs to be renamed?

If Client controller is not accessible from the UI

In case you do not have access to the UI or if you cannot log in to the Client controller after disconnecting it, follow this approach:

  1. [CJOC source] Backup the config.xml of the Client controller item (available at $CJOC_URL/jobs/<pathToClientcontrollerItem>/config.xml)

  2. [CJOC source] Go to the Client controller  Manage page and Disconnect and Release the Client controller

  3. [controller] Stop the Client controller

  4. [controller] In the Client controller file system, delete:

    • $JENKINS_HOME/license.xml

    • $JENKINS_HOME/operations-center-cloud*

    • $JENKINS_HOME/operations-center-client*

    • $JENKINS_HOME/com.cloudbees.opscenter.client.plugin.OperationsCenterRootAction.xml

  5. [controller] Disable security in the Client controller by editing $JENKINS_HOME/config.xml. Locate this line: <useSecurity>true</useSecurity> and changing it to <useSecurity>false</useSecurity>

    If using CasC for Controllers, CasC will need to be disabled temporarily. Remove the -Dcore.casc.config.bundle=…​ argument.
  6. [controller] Start the Client controller

  7. [CJOC destination] Create a new Client controller item

  8. [CJOC destination] Connect the Client controller (by either pushing connection details OR copy / pasting the connection details as documented in Setting up your new Client controller)

  9. [CJOC destination] If there was an RBAC configuration for the controller item, restore the RBAC configuration from the backed up config.xml as explained in step 10. of How to save RBAC configuration when a Client controller needs to be renamed?